04 2019 档案
摘要:1.equals默认比地址,但是会重写用于比较值 1.1 equals 默认比较对象的地址 1.2 一般会重写对象的equal,比较对象的字段内容是否相等(两个对象分别不为空, 两个对象的类型相同,自定义的多个属性是否相等) 2. == 比较地址 3. hashcode 单体对象无意义,集合对象有意
阅读全文
摘要:StringBuilder和StringBuffer的父类都是继承了 AbstractStringBuilder, 他们各自的append方法都是调用了 super.append(str), 但是一个加锁(线程安全),一个没加锁(线程不安全) StringBuilder 线程不安全 StringBu
阅读全文
摘要:@Autowired HttpServletRequest之所以线程安全是因为, httpsevletRequest 储存在 RequestContextHolder中。 每次http请求的doXXX 都会被FrameworkServlet拦截,通过 RequestContextHolder.set
阅读全文
摘要:在启动流程中,会出发许多ApplicationEvent。这时会调用对应的listener的onApplicationEvent方法。ApplicationEvent时观察者模式, (1) 实体继承ApplicationEvent (2) 注入的Listener 实现接口ApplicationLis
阅读全文
摘要:关键字 @Scope @Qualifier Singleton 单例 Spring是单例模式。结合Springboot的例子。 Controller Bean 从不同的客户端或者机器访问url /single 均返回累加值,证明是单例。因此Spring单例模式中谨慎使用类变量。 单例不阻塞 两个不同
阅读全文
摘要:1、每个节点要么红色,要么是黑色;2、根节点一定是黑色的;3、每个空叶子节点必须是黑色的;4、如果一个节点是红色的,那么它的子节点必须是黑色的;5、从一个节点到该节点的子孙节点的所有路径包含相同个数的黑色节点; 参考 https://www.jianshu.com/p/23b84ba9a498
阅读全文
摘要:ThreadPoolExecutor 核心参数 corePoolSize, QueueCapacity(ArrayBlockingQueue的参数), maxPoolSize 1 If the number of threads is less than the corePoolSize, crea
阅读全文
摘要:JDK1.8 Hashmap JDK1.8 ConcurrentHashMap 参考 http://www.importnew.com/28263.html 和 JDK1.8 HashMap, ConcurrentHashMap 源代码
阅读全文
摘要:CAS -> unsafe -> CAS底层思想 -> ABA --> 原子引用更新 --> 如何规避ABA CAS compareAndSwap 原理 CAS(V,E,N) V表示要更新的变量(内存值) E表示预期值 N表示新值 (当前值和底层值一样时候,才更新) 传入的值是工作内存,底层的值是主
阅读全文
摘要:一 cpu个数、核数、线程数的关系 cpu个数:是指物理上,也及硬件上的核心数; 核数:是逻辑上的,简单理解为逻辑上模拟出的核心数;一个CPU核心数模拟出2线程的CPU 线程数:是同一时刻设备能并行执行的程序个数,线程数=cpu个数 * 核数,及程数=cpu个数(2) * 核数(2)=4 Windo
阅读全文
摘要:JDK8 推荐 LongAdder替代 AtomicInteger, AtomicInteger内部是实现使用 (网友使用jad反编译源码 参考 http://ifeve.com/enhanced-cas-in-jdk8/),高并发场景compareAndSwapInt 会不断的试错,有性能问题。
阅读全文