buukle 我梦寐以求 是真理和自由

spring(6) - feign Illegal character ((CTRL-CHAR, code 31))

feign Illegal character ((CTRL-CHAR, code 31))

administrator administrator Published on 2022-01-24

jdk(8) - java 中集合的总结

1. Set 是使用Map实现的,只用了Key ,Value存储的是一个 ``new Object() `` 空对象,所以 Set的结果和Map的结构是很相似的. 2. HashTable , Vector 都是 使用的 synchronize 关键字在方法上加的锁,保证相同实例的api线程安全;

administrator administrator Published on 2021-06-23
administrator administrator Published on 2021-06-21

jdk(7) - JVM垃圾回收机制

1. 垃圾标记原理GC ROOT , 通过引用标记来识别哪些是垃圾GC ROOT 范围 : 被栈中声明引用的,被方法区内静态变量声明引用的 等2. 垃圾回收算法2.1 复制清除法两块内存,一块用于空闲,一块用于使用,当被使用的内存占满后,将未被标记的转移到空闲内存,互换两块内存的角色,达到循环复制,清理掉垃圾的目的;(有碎片,但是快)2.2 标记清除法标记需要被清理的,然后stw清理被标记为垃圾的内存(有内存碎片产生,造成浪费)2.3 标记整理法标记需要被清理的,然后进行整理将未被标记的内存整理到连续的内存区域,在进行清理(没有内存碎片)3. 垃圾回收器3.1 CMS (Concurrent Mark Sweep) 并发标记回收器CMS 针对老年代的回收器,主要流程为1、初始标记(CMS initial mark)。2、并发标记(CMS concurrent mark)。3、最终标记(CMS remark)。4、并发清除(CMS concurrent sweep)。其中 ,初始标记 , 最终标记 需要 STW;缺点 : 采用标记清理算法,会产生内存碎片补偿 : 可通过启动参数,指定每隔一段时间进行一次碎片整理问题 : 如何处理CMS 内存碎片问题3.2 G1 并发标记回收G1 针对老年代和年轻代的回收器,主要流程为1、初始标记只标记GC ROOT 直接引用的对象2、并发标记GC

administrator administrator Published on 2021-06-21

spring(4) - spring创建Bean并注册到容器

1. 背景知识先了解springboot启动过程,包括自动装配,初始化环境变量,springApplicationContext容器的初始化等,详情参读 spring(3) - springboot启动过程2. Bean的实例化和注册通过背景知识我们知道,spring在容器创建的过程中,通过 refresh()方法,进行了webServer 的启动,Bean的实例化和注册,下面从源码看看怎么做到的;2.1 AbstractApplicationContext的refresh()方法public void refresh() throws BeansException, IllegalStateException { synchronized(this.startupShutdownMonitor) { this.prepareRefresh(); ConfigurableListableBeanFactory beanFactory = this.obtainFreshBeanFactory(); this.prepareBeanFactory(beanFactory); try { this.postProcessBeanFactory(beanFa

administrator administrator Published on 2021-06-21
administrator administrator Published on 2021-06-21

spring(2) - springboot内置Tomcat 启动过程

这是从spring启动内嵌Tomcat切入,从源码跟踪了一下,其中也涉及到了spring的启动过程,当然涉及的不全;spring启动的整体流程是什么 ? spring的二方,三方组件 是怎么自动装配的,这些还需要进一步研究,下一篇再写吧

administrator administrator Published on 2021-06-19

spring(1) - 源码准备

1. gradle 环境搭建由于spring框架源码采用gradle进行依赖管理,固需要搭建.1.1 下载 gradle直接访问官网 gradle.org 选择较新的版本即可.1.2 gradle 环境变量设置<1> 添加 GRADLE_HOME 变量,值为刚才下载后gradle的解压路

administrator administrator Published on 2021-06-18

jdk(6) - hashMap

多线程哈希冲突造成写数据丢失 , 扩容导致数据OOM 等问题引起的线程问题

administrator administrator Published on 2021-06-18
Previous Next