2020年3月12日

阅读《Effective Java》每条tips的理解和总结(6)

摘要: 76 保持失败原子性 类似于数据库事务,一个失败的操作不应该产生任何影响。Java程序也是如此,一个执行过程成功,变量和对象则应该从一个正确的状态到另一个正确的状态;一个过程执行失败,则其中间产生的影响不应该生效,所以在抛出异常要注意保持失败原子性。一般而言,失败的方法调用应该使对象保持在被调用之前 阅读全文

posted @ 2020-03-12 15:45 千山万水楼外楼 阅读(264) 评论(0) 推荐(0) 编辑

2020年3月4日

阅读《Effective Java》每条tips的理解和总结(5)

摘要: 61 基本数据类型优于包装类型 这里说基本数据类型优于包装类型,并不是说包装类型一无是处。某些场景,比如要表示值为null、使用包装类型的方法、与其他对象交互(添加到集合里、用作参数类型)都需要用包装类型。这里的意思是能用基本数据类型就尽量用基本数据类型,因为包装类型自动拆箱、装箱会带来性能损失尤其 阅读全文

posted @ 2020-03-04 18:18 千山万水楼外楼 阅读(302) 评论(0) 推荐(0) 编辑

2020年2月21日

阅读《Effective Java》每条tips的理解和总结(4)

摘要: 46 优先考虑流中无副作用的函数 我们知道Stream流是在源数据的基础上生成独立的元素流,操作流不会影响源集合。因此我们在传入函数对象操作流时也应该传入无副作用的函数,看一个反例,统计文件中单词次数: Map<String, Long> freq = new HashMap<>(); try (S 阅读全文

posted @ 2020-02-21 19:48 千山万水楼外楼 阅读(305) 评论(0) 推荐(0) 编辑

2020年2月7日

双重检测单例模式中使用volatile的原因

摘要: 以前一直没在意双重检测单例模式中volatile的作用,最近又注意到了它的细节处的作用,在这里记录下。虽然现在单例模式的最佳选择是使用枚举,但通过这个增长知识也是不错的。下面是一般的双重检测单例模式的代码: public class Single { private static volatile 阅读全文

posted @ 2020-02-07 18:26 千山万水楼外楼 阅读(996) 评论(1) 推荐(0) 编辑

2020年2月4日

关于spring aop的理解与总结

摘要: 1. 核心概念 aop是类似与oop的思想,oop通过继承实现代码复用,对于无逻辑上的父子关系的类就不能用了。因此有了面向切面编程(aop),做法就是将没有父子关系的类的相同代码抽取出来作为一个切面,实现代码复用(请注意:interceptor也是aop思想的一种实现,aspect也是aop思想的一 阅读全文

posted @ 2020-02-04 18:43 千山万水楼外楼 阅读(659) 评论(0) 推荐(0) 编辑

2020年2月3日

阅读《Effective Java》每条tips的理解和总结(3)

摘要: 34 使用枚举类型替代整型常量 有时会遇到这样一些场景:要表示一组固定的常量值。如春夏秋冬、八大行星等等。我们最容易想到的是用几个int类型的常量表示,但是这样有许多问题要考虑: (1)一个数字没有直观的信息,特别是调试时打印出来用处不大。 (2)数字没有类型区分,容易有类型安全问题。如一个函数本来 阅读全文

posted @ 2020-02-03 17:59 千山万水楼外楼 阅读(306) 评论(0) 推荐(0) 编辑

2020年1月17日

Feign调用时失败,feign.FeignException:status 500 readingXXX。LocalDate序列化引起的错误

摘要: 最近在项目中需要用feign做一个服务端调用,调用别的服务的接口将我的一些信息发给它,但是总是报错:feign.FeignException:status 500 readingXXX。我的调用代码如下: @PostMapping(value = "/xx/xxx") public ResultDa 阅读全文

posted @ 2020-01-17 15:39 千山万水楼外楼 阅读(28308) 评论(1) 推荐(0) 编辑

2020年1月11日

希尔排序的实现

摘要: 希尔排序是在直接插入排序的基础上来的,理解了直接插入排序,希尔排序则非常简单: public class ShellSort { public static void main(String[] args) { int a[] = {9,8,7,6,5,4,3,2,1,0}; sortByShell 阅读全文

posted @ 2020-01-11 17:03 千山万水楼外楼 阅读(271) 评论(0) 推荐(0) 编辑

2019年12月28日

直观明了的总结TCP滑动窗口机制原理及作用

摘要: 阅读需要对TCP报文头部字段以及它们的字段有一定了解。 一. 原理 TCP是全双工通信,因此每一方的滑动窗口都包括了接收窗口+发送窗口,接收窗口负责处理自己接收到的数据,发送窗口负责处理自己要发送出去的数据。滑动窗口的本质其实就是维护几个变量,通过这些变量将TCP处理的数据分为几类,同时在发送出一个 阅读全文

posted @ 2019-12-28 14:49 千山万水楼外楼 阅读(9583) 评论(1) 推荐(1) 编辑

2019年12月27日

ThreadLocal的原理、作用、使用弱引用原因、应用举例

摘要: 一. 原理 ThreadLocal就是一个类,他有get、set方法,可以起到一个保存、获取某个值的作用。但是这个类的get、set方法有点特殊,各个线程调用时是互不干扰的,就好像线程在操作ThreadLocal对象时是在操作线程自己的私有属性一样。具体原因在于他的方法实现: public T ge 阅读全文

posted @ 2019-12-27 17:41 千山万水楼外楼 阅读(9454) 评论(2) 推荐(4) 编辑

导航