主页

【整理】Redis

Redis 底层数据结构 键空间通知(keyspace notification) 事务(transaction) 发布与订阅(pub/sub) 主从复制 持久化 Redis内部数据结构详解 Redis为什么用跳表而不用平衡树? redis缓存淘汰策略 《一套题》 线程模型 为什么 Redis 在最初的版本中选择单线程模型? 使用单线程模型能带来更好的可维护性,方便开发和调试 使用单线程模型也能并发的处理客户端的请求 使用I/O多路复用机制并发处理来自客户端的多个连接,同时等待多个连接发送的请求; 使用I/O多路复用技术能够极大的减少系统开销,系统不需要再额外创建和维护进程或线程来监听来自客户端的大量连接,,减少了服务器的开发和维...

阅读更多

【整理】Java并发编程

AbstractQueuedSychronizer 在AQS中维护着一个FIFO的同步队列。 一般步骤: 1、线程尝试获取同步状态,如果成功则返回;如果失败、,则会封装成Node加入到同步队列的队尾,并一直保持着自旋。 2、在CLH同步队列中的线程在自旋时,会判断其前驱节点是否为首节点,如果为首节点则不断尝试获取同步状态, 获取成功则退出CLH同步队列。 3、当线程执行完逻辑后,会释放同步状态,释放后会唤醒其后继节点 ForkJoin 基于JDK的ForkJoin构建一个简单易用的并发组件 https://juejin.im/post/5acb6cbc6fb9a028bc2e0d42 并发编程模型 并发模型指定了系统中的线程如何通过协作来完成分配给它们的作业。 不同的并发...

阅读更多

【整理】设计模式

设计模式最大的意义在于方便交流, 把隐形知识清晰地表达出来, 而不在于编码路线图. 设计的关键从来都不是设计模式,而是设计原则。一个好的设计并不需要死套哪些设计模式的,最重要的是阐述好OOP的设计原则,尽可能做到开放封闭,奔着高内聚低耦合的目标而去。

阅读更多

【整理】计算机网络

OSI七层模型和TCP/IP四层模型 应用层 应用层的任务是通过进程间的交互来完成特定的网络应用。 应用层协议定义的是应用进程间的通信和交互的规则。 对于不同的应用需要不同的应用层协议。如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等。 我们把应用层交互的数据单元称为报文。 传输层 运输层的主要任务是负责向两台主机进程间的通信提供通用的数据传输服务。 传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题; 运输层主要使用以下两种协议: 传输控制协议 TCP(Transmission Control Protocol):提供面向连接的,可靠的数据传输服务。 用户数据协议 UDP(User Datagr...

阅读更多

Welcome to Jekyll!

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated. To add new posts, simply add a file in the _posts dire...

阅读更多