对象循环引用引发的血案 发表于 2019-07-09 | 分类于 总结 | | 阅读次数: 什么是循环引用 循环引用就是循环依赖,就是两个或多个bean相互之前间的持有对方,比如对象CycleA,CycleB两个对象,如果CycleA引用了CycleB实例,CycleB引用了CycleA实例,它们最终反应为一个环 解决办法 使用@JsonIgnore标注在属性或对应的get ... 阅读全文 »
设计模式-建造者模式 发表于 2019-06-15 | | 阅读次数: 设计模式是一套被在实际使用中,总结出来的一些代码设计经验的总结,学习设计模式有助于理解框架的结构。成熟的框架通常使用了多种设计模式,如果你熟悉这些设计模式,毫无疑问,对于快速掌握框架的结构有很大的帮助。 主要功能 用来建造一个对象“产品”,主要是用来创建那些构造过程比较复杂并且内部构造顺过程是 ... 阅读全文 »
设计模式-装饰模式 发表于 2019-06-13 | | 阅读次数: 设计模式是一套被在实际使用中,总结出来的一些代码设计经验的总结,学习设计模式有助于理解框架的结构。成熟的框架通常使用了多种设计模式,如果你熟悉这些设计模式,毫无疑问,对于快速掌握框架的结构有很大的帮助。 主要功能 如其名,主要功能就是装饰,就是够在不改变原类文件、和不使用继承的情 ... 阅读全文 »
从另一个角度了解JAVA的可见性 发表于 2019-06-07 | | 阅读次数: 什么是可见性问题在多线程环境下,一个线程对某个共享变量更新之后,其它线程访问该变量的线程,是否可以立刻读取到这个变量的更新结果,或者说,线程A对共享变量的修改,是否对线程B可见。这就是线程安全问题的另一个表现形式,可见性。 为什么出现这样的问题 线程是运行在处理器上,现在的计算机大多数都是多核的,计 ... 阅读全文 »
JVM篇之栈的应用 发表于 2019-06-07 | 分类于 JVM | | 阅读次数: 在JVM的运行时数据区包括:方法区、虚拟机栈、本地方法栈、堆、程序计数器。而虚拟机栈描述的是JAVA方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 对于开头提到的信息相信每个对JVM有了解的人都明白, ... 阅读全文 »
JVM篇之类加载 发表于 2019-06-07 | 分类于 JVM | | 阅读次数: 上篇疑问 JVM篇 之 垃圾收集器中最后留一了一个问题为什么CSM不直接使用标记压缩算法?主要原因是,因为CMS垃圾回收是和用户线程一起运行的,如果使用标记压缩算法的话,就会导致大量在使用中的对象在堆中寻找不到,所以无法使用此算法。 class装载验证流程自底向上检查,自上向下尝试加载 加载 此阶 ... 阅读全文 »
JVM篇 之 垃圾收集器 发表于 2019-06-07 | 分类于 JVM | | 阅读次数: ##前言 本篇讲一下各种GC之间的细微差异讲的清楚的,希望通过本篇文章,读者可以对GC的种类有更深刻的了解。对于GC算法的可参数文章JVM篇之 GC算法 一、串行收集器-SerialSerial收集器最古老的,最稳定的,历经考验,内部的BUG比较少的一个收集器,单个GC线程进行垃圾回收。 会作 ... 阅读全文 »
JVM篇之 GC算法 发表于 2019-06-07 | 分类于 JVM | | 阅读次数: –引用计数法 是一个老牌垃圾回收算法,通过引用计算来标记,判断一个对象是不是垃圾,是不是要回收。 基本思想 : 为每一个对象都标记一个引用数量,引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0, ... 阅读全文 »
使用Logback脱敏-扩展篇 发表于 2019-06-07 | 分类于 logback | | 阅读次数: 介绍本文是一次数据泄漏之后的一点儿思考,系统日志对于后端系统而言是非常重要的,但是大多数开发人员在打印日志时,是非常随意的,不会去想太多,觉得日志打印的越多,排查总是越是方便。但是一些关键信息在打印日志时一定要注意,如果这些信息被人利用,可能会存在很大的风险。下面我举例几个场景,想想这样的场景中存在 ... 阅读全文 »