信步踏轻歌
笑着过....
摘要: 为了准确无误地把数据送达目标处,TCP协议采用了三次握手策略.客户端-发送带有SYN标志的数据包-一次握手-服务端服务端-发送带有SYN/ACK标志的数据包-二次握手-客户端客户端-发送带有ACK标志的数据包-三次握手-服务端断开一个TCP连接则需要"四次挥手"客户端-发送一个FIN,用来关闭客户端到服务器的数据传送.服务器-收到这个FIN,它发送一个ACK,确认序号为收到的序号加1.和SYN一样... 阅读全文
posted @ 2019-05-21 15:15 信步踏轻歌 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 过期集合:redis会将每个设置了过期时间的key放入到一个独立的字典中,定时遍历这个字典来删除到期的key,还可 结合惰性策略来删除过期二代key.定时扫描策略:Redis默认会每秒进行十次过期扫描,过期扫描不会遍历过期字典中所有的key,而是采用了一种简单的贪心策略. 1.从过期字典中随机20个key. ... 阅读全文
posted @ 2019-05-11 21:13 信步踏轻歌 阅读(609) 评论(0) 推荐(0) 编辑
摘要: Redis是单线程程序,采用非阻塞ID来处理请求.非阻塞IO在套接字对象上提供了一个选项Non_Blocking,当这个选项打开时,读写方法不会阻塞,而是能读多少读多少,能写多少写多少.能读多少取决于内核为套接字分配的读缓冲区内部的数据字节数,能写多少取决于内核为套接字分配的写缓冲区的空闲空间字节数.读方法和写方法都会通过返回值来告知程序实际读写了多少字节.有了非阻塞IO意味着线程在读写IO时可以... 阅读全文
posted @ 2019-05-10 15:10 信步踏轻歌 阅读(695) 评论(0) 推荐(0) 编辑
摘要: 事务管理是应用系统开发中必不可少的一部分.Spring为事务管理提供了丰富的功能支持.Spring事务管理分为编码式和声明式两种方式.编码式事务指的是通过编码方式实现事务;声明式事务基于AOP,将具体业务逻辑与事务处理解耦.声明式事务管理使业务代码逻辑不受污染,因此在实际使用中声明式事务用的比较多.声明式事务有两种方式,一种是在配置文件(xml)中做相关事务规则声明,另一种是基于@Transact... 阅读全文
posted @ 2019-04-15 16:12 信步踏轻歌 阅读(1661) 评论(0) 推荐(0) 编辑
摘要: 最近学习研究了一下Java中关于公平锁与非公平锁的底层实现原理,总结了一下.首先呢,通过其字面意思,公平与非公平的评判标准就是付出与收获成正比(和社会中的含义差不多一个意思).放到程序中,尤其是在多线程环境,线程获取资源(CPU\内存\网络等等)的时序与其所再此资源上消耗的等待时间成正比,亦即我等的时间越长,获取该资源的时序越短.(和上学时排队打饭一个道理).公平锁这个样子,那非公平锁,简单来说也... 阅读全文
posted @ 2019-04-13 10:59 信步踏轻歌 阅读(408) 评论(0) 推荐(0) 编辑
摘要: Redis的过期策略:通常有三种,Redis中同时使用惰性过期和定期过期两种过期策略组合。定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好; 但是会占用大量的CPU资源去处理过期的数据,从而影响缓存的响应时间和吞吐量。惰性过期:只有当访问一个key时,才会判断该key是否已过期,过期则... 阅读全文
posted @ 2019-01-14 11:43 信步踏轻歌 阅读(281) 评论(0) 推荐(0) 编辑
摘要: ReentrantLock主要利用CAS+CLH队列来实现。它支持公平锁和非公平锁,两者的实现类似。CAS:Compare and Swap,比较并交换。CAS有3个操作数:内存值V、预期值A、要修改的新值B。当且仅当预期值A和内存值V相同时, 将内存值V修改为B,否则什么都不做。该操作是一个原子操作,被广泛的应用在Java的底层实现中。在Java中,CAS主要是sun. ... 阅读全文
posted @ 2019-01-11 10:18 信步踏轻歌 阅读(200) 评论(0) 推荐(0) 编辑
摘要: b+树的查找过程:如上图所示,如果要查找数据项29,那么首先会把磁盘块1由磁盘加载到内存,此时发生一次IO,在内存中用二分查找确定29在17和35之间,锁定磁盘块1的P2指针, 内存时间因为非常短(相比磁盘IO)可以忽略不计,通过磁盘块1的P2指针的磁盘地址把磁盘块3由磁盘加载到内存,发生第二次IO,29在26和30之间,锁定磁盘块... 阅读全文
posted @ 2019-01-10 20:52 信步踏轻歌 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 线程安全:当多个线程访问一个对象时,如果不同考虑这些线程在运行时环境下的调度和替换执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用 这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。线程安全的实现方法:互斥同步:synchronized关键字 monitorenter monitorexit字节码指令,在执行monitore... 阅读全文
posted @ 2019-01-09 19:30 信步踏轻歌 阅读(98) 评论(0) 推荐(0) 编辑
摘要: Java内存模型(Java Memory Model,JMM):主内存与工作内存:Java内存模型主要是定义程序中各个变量的访问规则。Java内存模型规定了所有的变量都存储在主内存(Main Memory)中,每条线程还有自己的工作内存(Working Memory),线程的工作内存保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量... 阅读全文
posted @ 2019-01-09 17:22 信步踏轻歌 阅读(140) 评论(0) 推荐(0) 编辑