自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Twilight blog

博客

  • 博客(55)
  • 收藏
  • 关注

原创 Linux配置环境变量(给shell脚本设置快捷启动)

假如要给shell脚本设置快捷运行方式即不用进入到shell脚本当前目录,就可以在任何目录运行shell脚本。方法有很多种,我就介绍下常用的两种方法。 1、修改profile文件sudo vi /etc/profile在文件最底部添加(例如我想要配置idea的快捷启动方式,这样就不用进入到目录运行./idea.sh启动了)export PATH=/home/twilight/...

2020-09-15 18:58:19 5848

原创 Validator框架的使用

Validator一般用来验证前端页面传过来的数据 是否符合预期 下面是所需要的maven <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId&amp

2020-09-15 18:58:05 6606

原创 外部主机访问虚拟机redis的配置

先修改防火墙iptables配置 开放6379端口 vim /etc/sysconfig/iptables 添加如下 修改redis的redis.conf文件允许使用虚拟机ip访问redis 搜索bind默认只有bind 127.0.0.1 在它下面添加虚拟机的ip即可, 如图所示

2020-09-15 18:57:49 2242

原创 使用Anaconda安装scrapy和ImportError: DLL load failed: 操作系统无法运行 %1决解方案

使用anaconda安装scrapy框架, 在window平台下十分方便, 只需打开控制台输入 conda install scrapy即可但安装完后控制台输入scrapy 可能会出现如下图情况打开C:\Windows\System32查找ssleay32.dll和libeay32.dll文件, 如果两个都没有的话就把Anaconda3\Library\bin\下的ssleay32.dll和lib

2020-09-15 18:57:26 1110 4

原创 基于VMware虚拟机, Linux下的Nginx配置, 和外部主机访问配置

基于VMware虚拟机, Linux下的Nginx配置, 和外部主机访问配置nginx是C语言开发,建议在linux上运行,使用Centos7作为安装环境在进行nginx安装之前应该配置好Linux防火墙, 和VMware等配置, 外部主机才能访问先进行Linux防火墙设置 CentOS7默认使用的是firewall作为防火墙,这里改为iptables防火墙 1、关闭firewall: sys

2020-09-15 18:56:55 6189 3

原创 docker-compose配置固定IP各种问题

先附上配置version: '3.5'services: hadoop1: image: hadoop:1.3 container_name: hadoop1 command: bash -c "/usr/sbin/sshd && /bin/bash" tty: true networks: mynetwork: ipv4_address: 172.20.1.1networks: mynetwork:

2020-08-07 11:50:01 6758

原创 堆排序

基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复 杂度均为 O(nlogn),它也是不稳定排序。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆, 注意:没有要求结点的左孩子的值和右孩子的值的大小关系。每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆一般升序采用大顶堆,降序采用小顶堆基本思想1)将待排序序列构成一个大顶堆2)此时,整个序列的最大值就是堆顶的根结点3)将其与末尾元素进行交换,此

2020-07-28 14:19:37 231

原创 约瑟夫问题

JosephuJosephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由此 产生一个出队编号的序列。解决方案用一个不带头结点的单向循环链表来处理 Josephu 问题:先构成一个有 n 个结点的单循环链表,然后由 k 结点起从 1 开 始计数,计到 m 时,对应结点从链表中删除,然后再从被删除结点的下一个结点又从

2020-07-20 19:21:04 171

转载 关于Java的IO读写,缓冲区是如何提高读写效率的?

BufferedxxxStream为什么会比FilexxxStream效率高比较浅显的解释就是使用了缓冲区。更深层的解释如下。调用I\O操作的时候,实际上还是一个一个的读或者写,关键就在,CPU只有一个,不论是几个核心。CPU在系统调用时,会不会还要参与主要操作?参与多次就会花更多的时间。系统调用时,若不用缓冲,CPU会酌情考虑使用 中断。此时CPU是主动地,每个周期中都要花去一部分去询问I\O设备是否读完数据,这段时间CPU不能做任何其他的事情(至少负责执行这段模块的核不能)。所以,调用一次读了一

2020-07-18 16:53:16 842

转载 Java循环中标签作用

一直都不知道Java的for循环还有这么个奇妙的地方换句话说,不需要使用flag灯标记,使用标签可以方便的控制从一个多层嵌套循环中退出。以下内容转自https://www.iteye.com/blog/lihengzkj-1090034outer1: for(int i =0;i<4;i++){ System.out.println("begin to itrate. "+i); for(int j =0;j<2;j++){ if(i=

2020-07-15 16:19:10 201

原创 交换两个变量的值

方法一最常用方法int temp = num1;num1 = num2;num2 = temp;方法二利用两数和法num1 = num1 + num2;num2 = num1 - num2;num1 = num1 - num2;好处:不用定义临时变量弊端:相加操作结果可能会溢出、只适用于数值类型方法三使用位运算(异或)num1 = num1 ^ num2;num2 = num1 ^ num2;num1 = num1 ^ num2;...

2020-07-15 15:12:03 222

原创 vue脚手架 输入vue ui界面打开报错

events.js:288 throw er; // Unhandled 'error' event ^Error: listen EADDRNOTAVAIL: address not available 220.250.64.26:8000 at Server.setupListenHandle [as _listen2] (net.js:1292:21) ...

2020-02-26 21:41:15 3755 2

原创 二叉树的构建(非常简便)

自己研究的一种创建树比较简便且容易理解的方法,平时刷题如果需要创建树,该方法也是很快捷的。import java.util.*;class TreeNode { int val; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val =...

2020-02-19 00:38:07 492

原创 MySQL事务理论

1、事务的ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性。1)原子性事务是一个原子操作单元,其对数据的修改,要么全都执行,要么都不执行。2)一致性在事务开始和完成时,数据必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。一致性是最难理解的。这里引用网...

2020-02-18 14:27:15 200

原创 MySQL主从复制

1、主从复制介绍1)基本原理slave会从master读取bin-log来进行数据同步MySQL复制过程分成三步:1)master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events。2)slave将master的binary log events拷贝到它的中继日志(relay log)。3)slave重做中继日志中的事件,...

2020-02-17 14:08:34 254

原创 MySQL性能调优(二)show profiles

show profiles是MySQL提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优的测量。默认是关闭的,使用前需要开启show variables like 'profiling';set profiling = on;运行慢SQLselect * from emp group by id%10 limit 150000;...

2020-02-16 19:33:22 391

原创 MySQL性能调优(一)慢SQL日志

慢查询的开启并捕获MySQL的满查询是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阙值的语句,具体是指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。收集超过忍耐时间的SQL,结合之间的explain进行分析。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志或多或少会带来一定的性能影响。查看是否开启,同时可以查看...

2020-02-16 15:33:47 571

原创 MySQL批量数据脚本

1、建表创建dept表和emp表create table dept ( id int unsigned primary key auto_increment, deptno mediumint unsigned not null default 0, dname varchar(20) not null default '', loc varchar(13) n...

2020-02-15 22:44:51 223

原创 MySQL索引优化(三)排序索引

一、小表驱动大表简单理解就是外层循环的次数小于内存循环的次数。小表驱动大表,即小的数据集驱动大的数据集。MySQL中实现表嵌套的方式主要就是in和exists。下面的A表和B表中的id字段都创建了索引。1、当B表的数据集小于A表的数据集时,用in优于existsselect * from A where id in (select id from B)等价于for select ...

2020-02-15 01:32:34 544

原创 MySQL索引优化(二)索引失效

创建表create table if not exists staffs( id int primary key auto_increment, name varchar(24) not null default '' comment '姓名', age int not null default 0 comment '年龄', pos varchar(20) no...

2020-02-14 21:41:17 224

原创 MySQL索引优化(一)查询索引

创建表create table if not exists article( id int(10) unsigned not null primary key auto_increment, author_id int(10) unsigned not null, category_id int(10) unsigned not null, ...

2020-02-14 02:20:01 186

原创 平衡二叉树判断

import java.util.*;class TreeNode { int val; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Test { /** ...

2020-02-13 16:54:28 241

原创 快排及前k小或第k大数通用求解

思路超级简单的快速排序,手写快排专用。public int partition(int[] r, int i, int j) { int temp = r[i]; while(i < j) { while(i < j && r[j] > temp) { j--; } if(i < j) ...

2020-02-07 12:16:40 313

原创 ReentrantLock精确唤醒

import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;public class Test { // A:1、B:2、C:3 private int number = ...

2020-02-06 21:03:55 317

原创 Synchronized和Lock的区别

1、原始构成1)synchronized是关键字属于JVM层面,底层有两个关键方法monitorenter和monitorexit。底层是通过monitor对象来完成,其实wait/notify等方法也依赖于monitor对象只有在同步块或者方法中才能调wait/notify等方法。2)Lock是具体类(JUC里面的工具类)是api层面的锁。2、使用方法1)synchronized不需要...

2020-02-06 20:51:38 180

原创 CAS个人理解

以下主要以AtomicInteger类中的方法描述CAS。1、CAS是什么1)CAS即比较并交换,功能就是判断内存某个位置是否为预期值,如果是则更改为新值,这个过程是原子的。简单说CAS有3个操作数,内存值V,旧的预期值A,需要修改的更新值B,当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。2)AtomicInteger里面的compareAndSet,getAndIn...

2020-02-06 09:50:59 302

原创 MybatisPlus的乐观锁

主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新1、乐观锁实现方式:1)取出记录时,获取当前version:假设取出的version=1SELECT id,name,age,email,create_time,update_time,version FROM user WHERE id=12)更新时,带上这个versionUPDATE...

2020-02-05 00:00:09 294

原创 POI简单使用和大文件写优化

一、 POI简介(Apache POI)1、什么是POIApache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。HSSF - 提供读写Microsoft Excel格式档案的功能。(.xls)XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。(.xlsx)HWPF ...

2020-02-03 18:53:12 1082

转载 mac安装brew

安装这个东东太折腾人了,主要就是这个问题Failed to connect to raw.githubusercontent.com port 443: Operation timed out然后就是莫名其妙又可以下载了,下载速度特别特别的慢。。。下载过程中又挂了(绝望)查阅了大多数资料,终于找到了解决办法mac安装home-brew...

2020-02-02 18:21:36 141

原创 node.js搭建简易CRUD图书系统

一、项目初始化1、创建mybook文件夹2、创建入口文件index.js3、初始化项目生成package.jsonnpm init -y4、安装依赖npm install express art-template express-art-template body-parser --save5、编辑入口文件 index.js1)定义依赖/**图书管理系统入口文件*/co...

2020-02-02 12:10:02 565

原创 Eureka服务管理界面功能的一些完善

1.JDK和JRE有什么区别?JRE是java运行的环境,包含了java虚拟机,java基础类库。JDK是java开发工具包,JDK包含了JRE,还包含了编译java源码的编译器javac等。2.==和equals的区别是什么?双等号基本数据类型用进行比较的时候,比较的是值。引用数据类型进行比较的时候,比较的是内存中存放地址。equals默认情况下,比较的是地址值,重写该方法后比较...

2020-01-25 01:35:13 2131

原创 Springboot处理文件上传

Maven&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-boot-starter-web&amp;lt;/artifactId&amp;gt;&amp;lt;/dependenc

2019-02-09 23:46:53 1033

原创 判断二叉树是否是完全二叉树

判断二叉树是否是完全二叉树,主要判断有2点1、如果当前节点没有左孩子,则当前节点不应该有右孩子。2、如果当前节点没有左孩子或者右孩子,则当前节点的兄弟节点(这里一般是指该节点父节点的右孩子)不应该有子节点。package com.aekc.algorithm;import java.util.LinkedList;/** * @author Twilight */public ...

2019-01-29 20:36:47 679

原创 Sigar的使用

Sigar可以获得系统的如下方面信息:引用来自 https://www.jianshu.com/p/c3d88dd617bf1.操作系统的信息,包括:dataModel、cpuEndian、name、version、arch、machine、description、patchLevel、vendor、vendorVersion、vendorName、vendorCodeName2.CPU信...

2018-12-06 15:57:29 2518

原创 运用分支定界法(分支限界法)解决01背包问题

首先初始化总容量capacity = 10、物品总数量number = 4物品信息为【4,10】、【7、42】、【5、25】、【3、12】,分别为重量weight,价值value。解决该题目运用到的数据结构有:优先队列、二叉树、存放物品基本信息的数组这里主要就是构建二叉树,二叉树节点的属性有weight(当前总容量)value(当前总价值)layer(当前层级,用来判断是否为叶子节点)...

2018-12-05 20:38:42 31177 11

原创 Java序列化与反序列化

什么是序列化内容主要参考 https://blog.csdn.net/xlgen157387/article/details/79840134Java的序列化(Object serialization)机制,就是将对象编码成一个字节流(序列化serialization),以及从字节流编码中重新构建对象(反序列化deserialization)的过程。一旦将对象序列化后,一方面可以将其持久化到磁...

2018-12-01 15:27:30 322

原创 使用回溯法和排列树(降维和减枝)解决N皇后问题

上一篇博客使用回溯法和子集树(降维法)解决N皇后问题运用了降维,极大的提高了计算效率。不过能不能再精益求精呢?~能的,还能继续优化。前面运用了排列树,对于4x4来说,子集规模为nn = 44 = 256。这里我们采用减枝进一步优化。思路很简单,假如x[0] = 1,则x[1],x[2],x[3]就不可能在等于1。x[0] = 1就代表皇后摆放在第一行的第2个位置。则后面2,3,4行就不可能摆...

2018-11-28 22:20:23 2488

原创 使用回溯法和子集树(降维法)解决N皇后问题

之前写过一篇也是关于N皇后的博客,不过当初使用的是二维数组存储。不仅是空间开销还是这里大致说下二维数组的子集规模计算方法例如是4x4。如果按照二维数组存放,设二维数组为x[][]1 0 0 00 1 0 00 0 1 00 0 0 1因为x[0][0]有1(摆放)和0(不摆放)两种可能。所以可以用下面的树来表示计算开销的规模。...

2018-11-27 22:53:30 1792

原创 仙岛求药(经典的BFS和DFS运用题)

原题目来自OpenJudge下面的都是Java实现的先看看思路比较简单的BFSimport java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Scanner;public class Noi2727 { private static char[][...

2018-11-10 14:41:24 1109

原创 输出前k大的数

题目来源OpenJudge&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于这道题目,最简单的方法就是直接运用quick sort对数组进行排序。虽然这样也能得到结果,不过效率非常低(nlogn)。有没有更高效的方法呢?答案是有的,运用quick sort的分治思想,其实就是快排的变种。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb...

2018-11-04 22:44:26 788

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除