- 博客(4)
- 收藏
- 关注
原创 客户端服务端进程网络数据交互理解
之前对于客户端及服务端之间的网络交互和操作系统如何将网络数据交给应用的,似懂非懂,最近看了点书,写一下自己的想法,如有错误,请指正,谢谢。1.机器之间如何通过网络连接起来的?如果我们有一台机器是在内网,要访问公网上的一个地址(不考虑域名和ip的转换只是单纯的ip端口访问),那么途中应该是经过内网的各个交换机或路由器,最终通过一个nat或napt转换,将我们内网的ip端口转为公网的一个ip端口,将请求发出,该数据包在公网经路由器流转,最终到目的服务器,目的服务器返回数据,将我们由napt转换后的公网的ip
2021-07-11 20:24:23 432
原创 ThreadPoolExecutor线程池源码解析
构造函数参数介绍corePoolSize:核心线程数大小。线程池会维持该数量的线程处理任务或者等待消费任务队列中的任务,需要注意的是核心线程不是在线程池创建时立即构建的,而是随着线程池处理任务的提交增加的,即提交一个任务到线程池中,线程池判断当前核心线程数小于设置的corePoolSize,则直接新建一个线程,并将该任务作为该工作线程的首个任务,直到达到核心线程数的工作线程数量为止。maximumPoolSize:线程池允许的最大工作线程数量。首先我们要知道,除了初始时,核心线程数量未达到corePoo
2020-12-14 15:41:17 151 1
原创 jdk8 chm put操作源码解析
chm的put涉及的一些逻辑代码注释解析。final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerException(); //(h ^ (h >>> 16)) & HASH_BITS,HASH_BITS=0x7fffffff,即chm对于hash的计算除了与hashmap类似的hashcode抑或ha
2020-12-10 11:05:21 237
原创 ReentrantLock+Condition源码解析
ReentrantLock通过Sync对象实现锁功能, 抽象Sync对象继承了aqs,有两个子类NonfairSync和FairSync分别 对应非公平锁和公平锁,默认使用非公平锁。非公平锁NonfairSynclockfinal void lock() { //尝试将state通过cas设置为1,设置成功表示抢占锁成功 if (compareAndSetState(0, 1)) //设置独占锁的线程为当前线程 setExclusiveOwnerThre
2020-12-01 17:27:04 129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人