6 vant10

尚未进行身份认证

我要认证

还有很多事要做,怎能就此停滞不前。

等级
TA的排名 9w+

源码分析Jedis配置的TestOnBorrow实现原理及对应的lettuce配置

概述Jedis的设置项中有一个testOnBorrow的配置项,这个配置项其实来自于Apache CommonPools,意思是从连接池中取出是检查连接是否失活。最近需要把项目中的Redis客户端从Jedis切换成Lettuce,发现Lettuce中没有testOnBorrow的这个配置项,倒是有一个pingBeforeActivateConnection配置项(官方说法是在使用连接前,先进行PING检查连接),本着迁移时不对项目现有配置做改动的原则,研究下Jedis的testOnBorrow配置项的底

2020-06-18 19:36:14

一文搞懂Java8中表示当前的时间类Date、Instant、LocalDateTime、ZonedDateTime

1. 概述Java8中的时间类主要有:Date、Instant、LocalDateTime(LocalDate、LocalTime)、ZonedDateTime,除去Date,java.time包下的那些时间类都是不可变类,也就是说:其是线程安全的,对其设置只会产生一个新对象。在这里,我们要分清楚包含时区信息的类、以及不包含时区信息的类。不包含时区信息的类实际上就类似于一个yyyy-MM-dd HH:mm:ss字符串,需要额外的时区信息才能表达一个时刻,即LocalDateTime、LocalDate、

2020-05-20 23:47:10

解决JRebel进行代码热加载时FastJson的JsonField的缓存无法刷新问题

问题原因FastJson为了快速解析对象,会将已经解析过的对象的元信息缓存起来,所以关键就是清除其缓存,在没有缓存的情况下其会再次生成。相关Issue:jrebel修改后调用toString方法报错问题问题:修改属性的类型后无法解析。解决方案@RestController@RequestMapping("/api")public class SystemController {...

2020-04-18 22:09:00

记录下自己编译Spring5源码的过程(一)之处理依赖问题

缘起这段时间一直接触Spring,我这人就喜欢没事看看源码,捣鼓捣鼓写东西,于是就想着研究下Spring的源码,于是到Github下载了Spring5的源码,尝试着编译,不过总是碰到些问题。比如:Gradle同步是老师报PKIX异常(ssl证书问题),或是某些东西无法下载,花了好久、躺了许多坑,最终在我给老爸打电话时点击同步等了许久它突然就好了,神奇。踩坑一开始我下了源码直接就Gradle同...

2020-04-06 23:34:47

《Redis深度历险》读书笔记

文章目录1. Redis 的用途2. 字符串的实现3. 列表list3.1. quicklist4. 字典hash4.1. rehash5. 对象的过期时间6. 应用:分布式锁7. 应用:限流(zset,漏斗限流)8. 使用标准结构存储的阈值9. Redis分布式与CAP定理10. Sentinel11. 集群11.1. Codis11.2. Redis-Cluster的实现12. Info详解1...

2019-10-08 10:38:08

《Redis设计与实现》读书笔记

文章目录1. 基本对象2. 底层数据结构3. 对象3.1. 字符串对象3.1.1. int3.1.2. embstr3.1.3. raw3.2. 列表对象3.3. 哈希对象3.4. 集合对象3.5. 有序集合对象3.6. 对象共享4. SDS (simple dynamic string)5. linkedlist6. hashtable7. intset7.1. 升级8. 压缩列表(ziplis...

2019-10-07 12:44:25

https的连接过程及数字证书详解

文章目录1. 概述2. 数据证书3. 连接过程3.1. 过程概括3.2. 具体过程4. 参考资料4.1. 推荐资料1. 概述https是http+SSL(TLS)的结合体,SSL(现在升级为TLS了)是一种独立的协议,可以与其它协议结合在一起。https采用了非对称加密+对称加密结合的方式来工作,因为非对称加密速度慢,所以先利用非对称加密来传输对称加密的密钥,然后再使用对称加密的方式传输。在s...

2019-09-02 19:01:57

openjdk11源码从编译到clion调试

1. 概述先声明环境:Ubuntu18安装并配置好JDK11(openjdk version “11.0.1” 2018-10-16)Clion2019.2可以在docker里面编译,利用ubuntu的镜像,然后安装相关依赖也不会影响到宿主机。2. 下载OpenJDK11其实我们搜索openjdk进入到jdk11特性列表页面时,左边有个Mercurial链接,从那就可以进入源码列...

2019-08-30 14:56:59

全排列算法本质与实现

本质解决全排列问题本质是:二分法。将某个数组的全排列看成是由第0个元素与其后所有元素的全排列组成。做法是每次只需要挑选某个元素作为当前排列的第0个元素,然后剩下的变成子问题递归来解决。原理设一个数组的长度为n,则其全排列的个数为n!个。设f(n)代表对于一个n长度数组的全排列,array(n)代表数组中的第n个元素,+代表拼接。f(n) = array(1 to n) + f(n -...

2019-08-25 16:35:16

剑指offer-二维数组查找题解-本质与实现

概述从左下开始找。本质是利用:有序序列中最小的元素比target(目标元素)大,那么target必然不在此序列中。因此也可以从右上找。题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。原理从左下开始找。左下的那个元素m有如下性质:这一...

2019-08-24 15:35:25

剑指offer-重建二叉树-Java版题解

概述本题来自牛客网-剑指offer在线测评原理与实现思想:二分、递归关键是:利用前序序列根节点在前找到根节点,用根节点去中序序列划分成两部分,左部分是左子树,右部分是右子树。再利用子树长度去前序序列把前序序列中的左右子树找出来,同时可以找出根节点。递归进行此步骤,如果子树长度为0,则不需要生成子问题。class TreeNode { int val; TreeNode l...

2019-08-23 09:53:17

如何打乱一个数组--数组shuffle实现及常见错误

定义打乱:对于一个数,它随机跟其它位置或其本身位置交换定义一个数组的打乱:数组中每一个数都被打乱成为数组的打乱import java.util.Random;/** * 参考自Java Collection源码 * 定义打乱:对于一个数,它随机跟其它位置或其本身位置交换 * 定义一个数组的打乱:数组中每一个数都被打乱成为数组的打乱 */class Shuffle { pu...

2019-08-22 19:29:31

快速排序的原理及其实现(C++及Java版)浅析

快速排序原理基于二分的思想,先随机选定一个基准数(比如最左边的),然后从一个指针从最右边找比基准数小的数,一个指针从最左边找比基准数大的数,然后两数交换位置,重复找并交换的过程,最终在两个指正相碰时,该位置就是基准数在最终排好序时的结果,将基准数和该位置上的数交换位置,即可。然后根据基准数的位置二分,在两边依次使用快速排序。终止条件:划分到只有1或0个元素时即可终止。为什么该位置是基准数在最...

2019-08-20 14:46:45

Java通过注解实现一个接口--利用反射与代理

概述传统实现接口的方式需要implement才行,通过注解实现一个接口可以减轻每次都要implement的繁琐。本文实现一个Demo来展示如何通过注解实现一个接口。Codeimport java.lang.annotation.Annotation;import java.lang.annotation.ElementType;import java.lang.annotation.Re...

2019-07-21 16:43:32

wireshark过滤器语法全面解析

本文全面介绍了wireshark过滤器语法,wireshark包括捕获过滤器和显示过滤器,其中显示过滤器的语法十分丰富,其实显示过滤器的语法可以简单概括为:基本数据类型,协议对象,比较运算符,结合运算符,字符串函数与正则表达式,这就是其所有语法。其中高级的用法也许是切片、集合、正则表达式。本文重点在于全面的描述其基本语法,通过例子来学习,那些复杂的用法其实都来自这些基本的语法元素

2019-07-21 09:51:24

层序遍历时划分每层-Leetcode 429. N叉树的层序遍历-java版

如何在层序遍历n叉树时,将每层元素分开?本文通过广度优先搜索(BFS)的方式解决这个问题。其实DFS也是可以的。

2019-07-16 19:27:35

全面介绍Linux下tcpdump的使用

本文将全面地介绍tcpdump的选项及其表达式的具体用法,并给出常见用法及推荐资料。tcpdump是Linux上的网络抓包工具,可以监视所有经过网卡的流量包。tcpdump的命令格式为`tcpdump options expression`,通过表达式可以过滤流量。直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

2019-07-15 15:33:50

shell编程入门详解--从基础到调试

1. 变量1.1 变量定义a=1 : 直接赋值即可定义普通变量declare n : 定义普通变量declare -i n : 定义数值变量readonly n : 定义只读变量export n : 定义环境变量(环境变量为进程私有,可被子进程继承)local n : 定义局部变量(同名则在作用域覆盖全局变量)unset n : 取消定义变量1.2 变量使用使用变量内容: ...

2019-07-08 16:37:43

Linux Shell多线程编程之wait

一、& 介绍sleep 10 #等待10秒,再继续下一操作sleep 10 & #当前shell不等待,后台子shell等待使用&命令后,作业被提交到后台异步运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。二、wait命令介绍wait [作业指示或进程号]等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出...

2019-07-03 23:32:57

记Hadoop3.1.2安装排错之ERROR: Cannot set priority of datanode process

问题在安装Hadoop过程中,对hdfs格式化(# $HADOOP_HOME/bin/hdfs namenode -format)之后,开始启动hdfs(# $HADOOP_HOME/sbin/start-dfs.sh)时,总是报错如下:ERROR: Cannot set priority of datanode process 3340解决方案在$HADOOP_HOME/etc/had...

2019-07-03 16:16:25

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。