AtomicInteger源码分析——基于CAS的乐观锁实现 1. 悲观锁与乐观锁 我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换.切换涉及到清空寄存器,缓存数据.然后重新加载新的thread所需数据.当一个线程被挂起时,加入到阻塞队列,在一定的时间或条件下,在通过notify(),notifyAll()唤醒回来.在某个资源不可用的时候,就将cpu让出,把当前等待线程切换为阻…
AtomicInteger源码分析—基于CAS的乐观锁实现 参考: http://www.importnew.com/22078.html https://www.cnblogs.com/mantu/p/5796450.html http://hustpawpaw.blog.163.com/blog/static/184228324201210811243127/ 1. 悲观锁与乐观锁 我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间…
HashMap 源码分析  基于jdk1.8分析 1:数据结构: transient Node<K,V>[] table;  //这里维护了一个 Node的数组结构: 下面看看Node的数据结构,Node是它的一个内部类: static class Node<K,V> implements Map.Entry<K,V> { final int hash;  //hash值 final K key;    //key V value;      //value Node&…
内容概要 断点调试 认证/权限/频率-源码分析 基于APIView编写分页 异常处理 断点调试 # 程序以 debug模式运行,可以在任意位置停下,查看当前情况下变量数据的变化情况 # pycharm 来调试程序 -以debug形式运行 -在左侧空白处,点击加入断点 (红圈) -step over 单步调试 -step into 进入到函数内部运行 -快速调到下一个断点,绿色箭头 认证,权限,频率源码分析 权限类的执行流程 ​ 编写权限类(permission)局部使用,配置在视图类中的,就会执…
在上篇文章Spring IoC 源码分析 (基于注解) 一我们分析到,我们通过AnnotationConfigApplicationContext类传入一个包路径启动Spring之后,会首先初始化包扫描的过滤规则.那我们今天就来看下包扫描的具体过程. 还是先看下面的代码: AnnotationConfigApplicationContext类 //该构造函数会自动扫描以给定的包及其子包下的所有类,并自动识别所有的Spring Bean,将其注册到容器中 public AnnotationConf…
问题 (1)ConcurrentSkipListSet的底层是ConcurrentSkipListMap吗? (2)ConcurrentSkipListSet是线程安全的吗? (3)ConcurrentSkipListSet是有序的吗? (4)ConcurrentSkipListSet和之前讲的Set有何不同? 简介 ConcurrentSkipListSet底层是通过ConcurrentNavigableMap来实现的,它是一个有序的线程安全的集合. 源码分析 它的源码比较简单,跟通过Map实…
API epoll提供给用户进程的接口有如下四个,本文基于linux-5.1.4源码详细分析每个API具体做了啥工作,通过UML时序图理清内核内部的函数调用关系. int epoll_create1(int size): 创建一个epfd句柄,size为0时等价于int epoll_create(0). int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event): 向epfd上添加/修改/删除fd. int epoll_w…
CopyOnWriteArrayList  源码分析: 1:成员属性: final transient ReentrantLock lock = new ReentrantLock();  //内部是通过ReentrantLock来保证线程安全的,通过一个非公平锁 private transient volatile Object[] array;  维护一个Object数组 2:构造方法  初始化一个长度为0 的Object数组  new Object[0] public CopyOnWrit…
springmvc是一个基于spring的web框架.本篇文章对它的工作原理以及源码进行深入分析. 一.springmvc请求处理流程 二.springmvc的工作机制 三.springmvc核心源码分析 四.谈谈springmvc的优化 一.springmvc请求处理流程 引用spring in action上的一张图来说明了springmvc的核心组件和请求处理流程: ①:DispatcherServlet是springmvc中的前端控制器(front controller),负责接收req…
hashMap数据结构 类注释 HashMap的几个重要的字段 hash和tableSizeFor方法 HashMap的数据结构 由上图可知,HashMap的基本数据结构是数组和单向链表或红黑树. 以下内容翻译于HashMap类的注释 HashMap是map接口的基础实现类.这个实现提供了所有可选的Map接口操作.并且允许null键和null值.HashMap类和Hashtable类差不多,只是HashMap不是线程完全的,并且HashMap允许null值和null键.这个类不保证map元素的顺…