- 博客(99)
- 收藏
- 关注
原创 mysql 分区表
分区表特点:在逻辑上为一个表,在物理上存储在多个文件中。1、确认mysql服务器是否支持分区表: mysql> show plugins;查询结果如有partition这一行,则支持分区。2、分区类型1)按hash分区CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varc...
2019-06-17 13:52:11
570
原创 github 搜索技巧
1、inspringcloud in:name,description,readme //搜索项目名字,描述,自述文件中含有springcloud的项目2、starsspringcloud stars:>=500 //搜索star数大于等于500的springcloud的项目springcloud stars:100..500 //搜索star数在100-50...
2019-05-28 16:02:20
513
转载 java 高频面试题 208 道
Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含...
2019-04-15 15:04:47
41994
11
原创 TCP 的三次握手和四次挥手
三次握手:1、c 向 s 发送 SYN 新建连接标志 1,seq 序列号为 x2、s 向 c 发送 SYN 新建连接标志 1,ACK 确认标志 1,seq 序列号 y,ack 确认号 x+13、c 向 s 发送 ACK 确认标志 1,seq 序列号 x+1,ack 确认号 y+1四次挥手:1、c 向 s 发送 FIN 关闭连接标志 1,seq 序列号为 x2、s 向 c 发送 AC...
2019-03-28 12:27:16
198
转载 JDK动态代理与CGLib动态代理
一、JDK 动态代理1.1 详细介绍:在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class),这一个类和接口是实现我们动态代理所必须用到的。1.1.1 InvocationHandler每一个动态代理类都必须要实现InvocationHandler这个接口,并且每个代理类的实例都关联了一个ha...
2019-03-27 13:20:47
201
转载 一致性 hash 算法
一、什么是一致性hash算法 ?一致性Hash算法是使用取模的方法,是对2^32取模,什么意思呢?简单来说,一致性Hash算法将整个哈希值空间组织成一个虚拟的圆环,如假设某哈希函数H的值空间为0-2^32-1(即哈希值是一个32位无符号整形),整个哈希环如下: 整个空间按顺时针方向组织,圆环的正上方的点代表0,0点右侧的第一个点代表1,以此类推,2、3、4、5、6……直到2^32-1,也就是...
2019-03-27 12:41:49
346
原创 Nginx 的基本使用
虚拟机安装centos7作为服务器,ip 为 192.168.0.8部署了两台tomcat(一台端口为8080,一台端口为9080),一台 nginx本地windows添加host,192.168.0.8 指向 www.ieaphy.com1、在/usr/local/nginx/conf/nginx.conf ,添加 include vhost/*.conf ;#user nobod...
2019-02-17 22:44:01
311
原创 基于 spring session 的单点登录
1、pom.xml 添加依赖 <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.2.0.R...
2019-02-17 20:50:03
773
原创 Springmvc 全局异常处理的两种方式
一、@ControllerAdvice + @ExceptionHandler二、实现 HandlerExceptionResolver
2019-02-17 17:52:27
2061
原创 基于 redis 的单点登录原理
原理:就是在一个网站的根地址里添加一个cookie,cookie的value就是用户登录的sessionid,将这个sessioid作为redis的key,用户的信息作为value,存储在redis里,这样该网站所有的子域名都可以获取到这个cookie,然后根据cookie里的sessionid去redis里读取用户的信息。 @RequestMapping(value = "login...
2019-02-16 19:48:54
1666
原创 ThreadLocal 的总结
ThreadLocal 为每一个使用该变量的线程都提供了独立的副本,可以做到线程间的数据隔离,每一个线程都访问各自内部的副本变量。常用方法:public void set(T t);public T get();protected T initalValue(); //默认值为null一、set 方法1)、获取当前线程2)、根据当前线程获取 ThreadLocalMap3)...
2019-01-23 14:28:28
187
原创 Future 模式
future 的主要作用就是异步调用,让一些耗时的任务在后台慢慢处理,于此同时先去执行其他的任务。countdownlatch 其实也可以实现,只不过future更为强大,countdownlatch 只能获知任务的完成情况,不能得到任务的执行结果,future 则可以在任务执行完毕之后得到任务执行结果。一般我们使用futuretask和callable的组合。futuretask 常用方法:...
2019-01-23 12:55:56
221
原创 java 批量重命名工具 (可执行jar文件)
有时候下载一些视频,不管是学习视频也好,电视剧也罢,很多网站都会在文件名上加上自己的网址,有的还很长,看的很不爽!闲来无事,用java写了个批量重命名的jar文件,没什么技术含量……不过省的我一个个去重命名了。比如,我们下载下来的文件是这样的:如果我想让所有文件名中去掉【www.eaphy.com】,那么运行jar文件,选择视频所在的文件夹,在“重复的文字:”填入 【www.eaphy.co...
2019-01-02 01:16:22
630
原创 java 中的深拷贝与浅拷贝
深拷贝与浅拷贝的区别在于:对于基本数据类型,浅拷贝和深拷贝都是直接拷贝的值。对于引用数据类型,浅拷贝拷贝的是引用(即内存地址,不开辟新的内存空间),深拷贝是开辟了新的内存空间,创建了相同值的对象。想要实现拷贝很简单,让被拷贝的对象实现Cloneable接口,然后重写Object的clone方法即可:@Getter@Setter@ToString@AllArgsConstructor...
2018-12-31 17:29:11
202
原创 正则表达式的运用
作为一个开发者,正则表达式是我们需要经常使用的,往常遇到总是直接百度网上的结果,最近由于python爬虫的学习,需要经常使用正则表达式,今天正好认真学一下。特殊字符字符描述^以什么开始$以什么结尾.代表任意单个字符+代表最少出现一次*代表前面字符可任意长度?代表非贪婪模式|代表或{2}代表前面字符出现的次数(即2次)...
2018-12-23 19:41:13
263
原创 python 字符串的方法总结
test = 'bbC!dEA'test1 = '{name}+{age}'test2 = '{0}+{1}'test3 = 'user\temail\tpass\nwang\t123@qq.com\t123\nwang\t123@qq.com\t123'# 首字母大写,其余小写v1 = test.capitalize()print(v1)# 结果: Bbc!dea# 所有字...
2018-12-16 20:57:17
237
原创 windows 下 Python 虚拟环境和scrapy项目的搭建
请先确定本机电脑已经安装 python ,并且配置好环境变量。如果在 cmd 中使用pip命令提示不是内部命令的话,此处也需要配置环境变量,pip.exe一般在你python安装路径下面的Scripts目录下, 在系统变量 path 中添加 D:\Program Files\python\Scripts(安装路径)即可。 安装 virtualenv ,( -i https:/...
2018-12-16 12:50:12
602
原创 Semaphore 的运用
在Java并发编程中,Semaphore (信号量)主要用来控制线程并发的数量。主要方法:Semaphore(int permits):构造方法,创建具有给定许可数的计数信号量并设置为非公平信号量。Semaphore(int permits,boolean fair):构造方法,当fair等于true时,创建具有给定许可数的计数信号量并设置为公平信号量。void acquire()...
2018-12-12 23:51:38
339
原创 java8 optional 类的运用
常用方法: public static <T> Optional<T> of(T value);// 为Optional设值,值为空抛异常 public static <T> Optional<T> ofNullable(T value) ;// 为Optional设值,值为空不抛异常 public T get();// 如果...
2018-12-11 22:46:39
324
原创 java8 lambda 表达式的运用
函数式接口:如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口如果我们在某个接口上申明了FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口如果某个接口只有一个抽象方法,但我们并没有给该接口申明FunctionalInterface 注解,那么编译器依旧会将该接口看作是函数式接口如果一个接口中抽象方法是重写了object的公有方法,那么此方...
2018-11-24 22:23:19
161
原创 JVM: 使用 jstack 命令找出 cpu 飙高的原因
首先新建一个springboot项目,新建一个controller@RestControllerpublic class DeadLockController { private Object lock1 = new Object(); private Object lock2 = new Object(); @GetMapping("/deadlock") ...
2018-11-24 17:56:30
2617
原创 JVM:使用 MAT 工具结合jmap命令分析内存泄漏
1、下载MAT工具2、演示内存溢出新建一个controller@RestControllerpublic class HeapControler { private ArrayList&amp;lt;User&amp;gt; arrayList = new ArrayList&amp;lt;User&amp;gt;(); @GetMapping(&quot;/heapmmo&q
2018-11-24 15:33:41
1762
原创 HashMap 容量为2次幂的原因
我们都知道 hashmap 的底层是一个数组加链表的结构,当向其中添加一个元素的时候,需要根据key的hash值,去确定其在数组中的具体位置。看源码,我们可以发现,确定数组位置的实现是 i=(n-1)& hash,其中 n 代表数组的长度,即map的容量。当n为2的幂次方时,(n-1)& hash 的值是均匀分布的,我们假设n=16,hash从0开始递增:hash...
2018-11-23 13:26:23
5450
1
原创 CentOS 7 安装 jdk8 的过程
1、查看自己已安装的jdk版本 rpm -qa | grep jdk2、卸载所有已安装的openjdk版本yum remove java-1.7.0-openjdk-headless.x86_64 3、前往官网,下载所需版本 jdk4、安装jdk,默认安装在 /usr/javarpm -ivh jdk-8u191-linux-x64.rpm 5、配置环境变量vim /etc...
2018-11-22 13:29:53
253
原创 Hashmap 的实现原理
put 操作:1.首先判断key是否为null,若为null,直接插入数组第一个位置,数组原来有的数据,下标依次后移加一2.若key不为null,计算key的hash值,取数组长度的模,得到其应该存储的数组位置3.若该位置无值,直接插入4.若该位置有值,判断链表中是否有key一样,有一样的话,覆盖原值,无一样的话,保存在链头get 操作:1.判断key是否为null,...
2018-11-21 13:00:29
169
原创 VMware 虚拟机ping不通win10主机的解决办法
打开安全中心,选择防火墙和网络保护,查看你使用的网络是域网络、专用网络、还是公用网络?然后点击高级设置,找到配置文件类型为你的网络类型(专用、公用、域)的"文件和打印共享(回显请求 – ICMPv4-In)"规则,设置为允许。ps:前提是你已经把虚拟机和本地主机网络ip配置在一个ip段...
2018-11-20 00:22:52
12091
1
原创 redis 的事务机制
Redis的事务实质上是命令的集合,在一个事务中要么所有命令都被执行,要么所有命令都不执行。 redis 事务的一个流程是,通过multi命令开始事务,multi之后的命令将逐个加入到一个队列,直到使用EXEC命令,这个命令使用后,就会逐个执行队列里的命令。 .Redis的事务没有关系数据库事务提供的回滚(rollback),所以开发者必须在事务执行失败后进行后续的处理; 如果在一个事...
2018-11-19 15:46:25
252
原创 MQ 消息队列的常用场景
MQ 的使用场景有很多,但是比较核心的有3个:解耦、异步、削峰 。1.解耦 A系统发送个数据到BCD三个系统,接口调用发送,那如果E系统也要这个数据呢?那如果C系统现在不需要了呢?现在A系统又要发送第二种数据了呢?A系统负责人濒临崩溃中。。。再来点更加崩溃的事儿,A系统要时时刻刻考虑BCDE四个系统如果挂了咋办?我要不要重发?我要不要把消息存起来?头发都白了啊。。。2.异步...
2018-11-13 23:20:08
417
原创 二分查找算法的 java 实现
递归实现: public static int binsearch(int[] arr, int num, int begin, int end) { int midnum = (begin + end) / 2; if (begin >= end) { return -1; } if (nu...
2018-11-09 22:41:07
175
原创 JVM 常用参数配置
-Xmx :堆的最大值-Xms :堆的最小值-Xmn :堆年轻代大小 (eden+ 2 survivor space)-XX:PermSize: 设置持久代(perm gen)初始值-XX:MaxPermSize: 设置持久代最大值-XXSurvivorRatio:Eden区和Survior区的占用比例.-XX:NewRatio:年轻代(包括Eden和两个Survivor区)与年老代的...
2018-11-09 16:40:06
373
原创 java 使用 NIO 读写文件
public static void Readnio() { RandomAccessFile randomAccessFile = null; FileChannel fileChannel = null; try { randomAccessFile = new RandomAccessFile(&quot;f:\\a.tx...
2018-11-09 13:59:05
1060
原创 java 中整数左移右移的运算技巧
“ << " : 左移运算符,num << n, 相当于 num 乘以2的 n 次方" >> " : 右移运算符,num >> n, 相当于 num 除以2的 n 次方ps:1<<4 , 即 1×2^4=16;2<<3 , 即 2×2^3=16;3<&
2018-10-19 13:57:42
5631
2
原创 屏蔽百度搜索结果页的推送广告
首先在浏览器中安装插件 广告终结者 或者 adblock plus这里以广告终结者示例,点击 设置选项,选择 自定义过滤,添加规则 pos.baidu.com*百度一下 java,对比结果:...
2018-09-26 14:47:12
4953
转载 Intellij IDEA 的激活方法
本人测试版本 2018.1.2补丁下载:https://pan.baidu.com/s/1ydh2qQCLON4m0Lzk95ludA将下载的文件放到安装IDEA路径的bin目录下编辑 idea.exe.vmoptions 和 idea64.exe.vmoptions ,在两个文件最后分别加上-javaagent:D:\IntelliJ IDEA\IntelliJ IDEA 2018.1...
2018-09-19 22:32:40
6955
原创 观察者模式
观察者模式:一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。// 抽象观察者public interface watcher { public void update(String str);}//抽象被观察者public interface watchered { public void addwatcher(...
2018-09-14 18:37:13
175
转载 spring 事务的隔离级别
spring有五大隔离级别:ISOLATION_DEFAULT:用底层数据库的默认隔离级别,数据库管理员设置什么就是什么ISOLATION_READ_UNCOMMITTED(未提交读):最低隔离级别、事务未提交前,就可被其他事务读取(会出现幻读、脏读、不可重复读)ISOLATION_READ_COMMITTED(提交读):一个事务提交后才能被其他事务读取到(该隔离级别禁止其他事务读取到...
2018-09-13 15:38:10
275
原创 Dubbo 面试题总结
1、测试和生产共用一套zookeeper,怎么保证消费不冲突 ?方案1、服务发布的group设置为不同;<dubbo:reference id="comm1" timeout="100000" interface="com.acq.facade.CommService" group="comm102" version="1.0.0" retries="0" check
2018-09-06 21:00:52
2508
原创 JVM:jvm运行时数据区
1、程序计数器程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。由...
2018-07-24 03:03:55
265
原创 分布式环境下 session 的跨域共享原理
一、什么是 session 共享 ?如上图,是一个简单的分布式环境,以登录来说,当用户发出请求,通过负载均衡,可能会走tomcat1服务器,也可能会走tomcat2服务器,此时就有可能,我们在tomcat1上实现了登录,保存了session,但是tomcat2并没有保存,当有请求到tomcat2时,我们就需要重新登录,这就是session没有共享的实例。保持tomcat1和tomcat2的...
2018-07-24 01:29:17
1481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人