手写一个简单的spring框架 这一期是我自己手写一个简单spring的一个记录, 里面的内容不一定和源码逻辑相同, 只是为了自己能手动实现spring的部分功能, 其中包括: @Component, @ComponentScan, @Scope, @Autowired注解, BeanDefinition类, ApplicationContext类以及BeanPostProcessor类.
线程?线程池?一篇文章教会你线程池以及线程池的工作原理 大家好, 这里是Yve菌, 今天给大家带来一期线程池相关的内容.线程池(thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。例如,线程数一般取cpu数量+2比较合适,线程数过多会导致额外的线程切换开销。
AQS之ReentrantLock的使用 大家好, 这里是Yve菌, 今天给大家带来AQS中的独占锁–ReentrantLockAQS全称AbstractQueuedSynchronizer, 是一个抽象同步框架,可以用来实现一个依赖状态的同步器, java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于AQS实现, JDK中提供的大多数的同步器如Lock, Latch, Barrier等,也都是基于AQS框架来实现的.AQS 依赖CLH同步队列
详解并发编程之synchronized关键字, 学到就是赚到 大家好, 这里是Yve菌, 今天给大家带来一期synchronized关键字相关的知识, synchronized关键字也是并发专题当中比较复杂和重要的一部分, 那么废话不多说, 开始我们今天的内容吧!
什么是CAS以及在java中的具体应用 大家好, 这里是Yve菌, 今天给大家带来一期CAS的相关知识CAS(Compare and Swap)名为比较交换, 通常是指一种原子操作: 针对一个变量,首先比较它的内存值与某个期望值是否相同,如果相同,就给它赋一个新值。我们将原本的内存值举例为A, 期望值举例为B, 新值举例为C, CAS操作就是把A和B进行对比, 如果 A==B则将A的值替换为C;如果A和B不相等, 那就说明有其他业务对数据A进行过修改, 于是A的值则不会更新为C.
细数6种垃圾回收器的区别, 快进来看看有没有你要用的 大家好啊, 这里是Yve菌, 今天给大家详细介绍一下我们在进行GC垃圾回收时的主力军-垃圾回收器. 由于我们使用的jdk版本有不同, 使用的堆内存大小也不同, 这个时候我们可能就会用到不同的垃圾回收器. 垃圾回收器目前来说在市面上会有很多, 今天我们就来详细讲讲以下垃圾收集器:我们了解到了这么多垃圾收集器, 那么我们怎么去选择使用呢?优先调整堆的大小让服务器自己来选择如果内存小于100M,使用串行收集器如果是单核,并且没有停顿时间的要求,串行或JVM自己选择。