Posts · page 4 of 8

All posts

80 posts · 10 per page

技术1 min read中文

Curator框架-InterProcessMutex

InterProcessMutex 分布式锁 InterProcessMutex是常用的一个使用ZK的分布式锁,它会在我们指定的前缀下面创建类型为有序临时的临时节点,然后序号最靠前的节点会获取到锁。 如果某个持有锁的线程挂了之后,对应的节点就会被删除,如果这时候有线程在等待锁,就会获取到锁

技术1 min read中文

ConcurrentHashMap源码解读

--- ConcurrentHashmap ConcurrentHashmap整体跟hashmap差不多,主要的区别是线程安全,并且不支持key和value为null ConcurrentHashmap在插入元素的时候会使用synchronized,保证了写的线程安全。在扩容的时候,将表划分成一个个独立的区域,然后每个…

技术4 min read中文

IO模型

一般来说一次IO操作包含两个步骤 - 内核准备数据 - 数据从内核拷贝到用户进程 常见的IO模型主要有以下几种 - 阻塞IO - 非阻塞IO - 多路复用IO - 信号驱动IO - 异步IO

技术1 min read中文

ConcurrentHashMap源码解读-算法部分

tableSizeFor 该算法相当奇妙,目的是输入一个数字c,然后返回离它最近的且值大于它的2的n次幂,例如输入7,返回8,输入123,返回128。 首先定义一个变量n为c-1,至于为什么为c-1,之后会说到。 我们输入c=13来带入计算一下 这里我们可以回头看上面的第一步,n = c-1,如果不执行c-1的话,我们…

技术1 min read中文

spring事务(1)

Spring中的事务,主要有以下几个参数 - value:事务名称 - transactionManager:事务管理器 - propagation:传播行为 - isolation:隔离级别 - timeout:超时时间,如果在超时时间内事务没有提交,则事务就会被终止(此处会有坑) - readOnly:是否只读事务…

技术2 min read中文

记一次数据库问题排查

案发现场 在任务开始的时候,状态为INIT,然后需要等待定时器去取状态为INIT的任务,修改状态然后执行。但是在下午开始,突然发现INIT的任务一直处于INIT的状态,而定时器却是5s轮询一次,没有头绪,只能继续等,刚好当时在做别的事情,就没有在意。 吃过饭之后,看了下错误日志,看到了下面的内容 通过输出,能够发现错误…

技术1 min read中文

Nginx伪装流量

之前使用的nginx伪装流量,后来发现是有问题的,很快就被封了。 之前的思路是,机器保留443端口,然后使用ssr去链接跳板机的443端口,如果是ssr协议,就转发到本地的ssr服务,如果是http请求,就返回对应的页面。 这么做存在一个漏洞,所有经过443端口的流量都会被探测到,如果检测到ssr的特征,就会直接导致机…