自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 客户端服务端进程网络数据交互理解

之前对于客户端及服务端之间的网络交互和操作系统如何将网络数据交给应用的,似懂非懂,最近看了点书,写一下自己的想法,如有错误,请指正,谢谢。 1.机器之间如何通过网络连接起来的? 如果我们有一台机器是在内网,要访问公网上的一个地址(不考虑域名和ip的转换只是单纯的ip端口访问),那么途中应该是经过内网的各个交换机或路由器,最终通过一个nat或napt转换,将我们内网的ip端口转为公网的一个ip端口,将请求发出,该数据包在公网经路由器流转,最终到目的服务器,目的服务器返回数据,将我们由napt转换后的公网的ip

2021-07-11 20:24:23 411

原创 ThreadPoolExecutor线程池源码解析

构造函数参数介绍 corePoolSize:核心线程数大小。线程池会维持该数量的线程处理任务或者等待消费任务队列中的任务,需要注意的是核心线程不是在线程池创建时立即构建的,而是随着线程池处理任务的提交增加的,即提交一个任务到线程池中,线程池判断当前核心线程数小于设置的corePoolSize,则直接新建一个线程,并将该任务作为该工作线程的首个任务,直到达到核心线程数的工作线程数量为止。 maximumPoolSize:线程池允许的最大工作线程数量。首先我们要知道,除了初始时,核心线程数量未达到corePoo

2020-12-14 15:41:17 135 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 219

原创 ReentrantLock+Condition源码解析

ReentrantLock通过Sync对象实现锁功能, 抽象Sync对象继承了aqs,有两个子类NonfairSync和FairSync分别 对应非公平锁和公平锁,默认使用非公平锁。 非公平锁NonfairSync lock final void lock() { //尝试将state通过cas设置为1,设置成功表示抢占锁成功 if (compareAndSetState(0, 1)) //设置独占锁的线程为当前线程 setExclusiveOwnerThre

2020-12-01 17:27:04 108

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除