- 博客(10)
- 收藏
- 关注
原创 浅谈Linux 网络Epoll模型
从事服务端开发,少不了要接触网络编程。Epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,Nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么?本文核心思想是:要让读者清晰明白 Epoll 为什么性能好。文章会从网卡接收数据的流程讲起,串联起 CPU 中断、操作系统进程调度等知识;再一步步分析阻塞接收数据、Select 到 Epoll 的进化过程;最后探究 Ep
2022-04-07 16:42:54 252 1
原创 zookeeper的理解(2)-ZAB协议
概述ZAB(Zookeeper Atomic Broadcast)协议是为分布式协调服务ZooKeeper专门设计的一种支持崩溃恢复的原子广播协议这套协议基于2PC算法进行的改进,又引入了PAXOS算法ZAB协议包括两种基本的模式,分别是:a. 消息原子广播(保证数据一致性)b. 崩溃恢复(解决2pc算法的单点问题)原子广播实现Zookeeper所有的节点的信息共享,保证分布式...
2019-06-26 23:23:56 178
原创 2PC算法
概述2PC,是Two-Phase-Commit的缩写,即二阶段提交,主要解决的问题是让基于分布式架构下的所有节点在进行事务处理过程中能够保证原子性和一致性。它的核心思想是“一票否决”。提交过程(正如它的名字,它的提交分为两个阶段)第一阶段:事务请求。由于在形式上近似是协调者组织各参与者对一次事务操作的投票表态过程,因此这一阶段也被称为“投票阶段”a.事务询问。协调者向所有的参与者发送事务内...
2019-06-26 22:39:26 1374
原创 zookeeper的理解(1)-选举机制
选举机制选举机制是在zookeeper集群选出leader选举过程分为两个阶段:第一个阶段是数据恢复阶段,当集群中的节点被启动的时候,会去加载当前节点中的数据(最大事务id,当前节点编号,逻辑时钟值),之后从这些数据中找出最大事务id第二个阶段是选举阶段,最开始所有节点都会推荐自己当leader,之后会把自己的节点信息发送给每一个节点进行比较,先比较最大事务id,谁大谁赢,事务id相同再去...
2019-06-26 22:00:43 356
原创 redis解决分布式session共享
Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Session共享会出现请求落到不同机器要重复登录的情况,这里我使用了redis来解决session的共享问题用户登录逻辑,需要处理session共享问题,将用户信息,存储在redis中将key作为数据返回页面时,放到cookie中,只要cookie...
2019-06-10 22:25:53 2397 1
原创 面向接口编程+策略模式+方法回调一起使用
面向接口编程+策略模式+方法回调日常在写代码的过程中,这些些简单的知识点我们应该都用过,但是真正的核心逻辑有很多人也不明白,这里给大家做一下简单的总结jdbcservlet规范jdk动态代理springmybatis中的原生 api 方法,select(),实现原理是策略模式 + 方法回调,select可以返回我们自定义的数据格式,例如jsonmybatis中的mpper的代理对象...
2019-06-09 18:19:10 340
原创 mysql数据库的隔离级别简单总结(1)
概述 隔离级别是基于客户端来讨论的,不同的客户端在和服务器交互时可以有不同的隔离级别, 客户端处在什么隔离级别就具有什么隔离级别的问题。mysql数据库的隔离级别一共有四种 1.read uncommitted 读未提交 不做任何隔离。可能产生脏读 不可重复读 虚读/幻读问题,性能最好。 2.read committed 读已提交 一个事务可以读取到另一个事务已经提交的数...
2019-04-19 19:17:28 162
原创 关于事务的简单总结(1)
事务事务概述数据库的事务实现事务的四大特性a. 原子性(Atomicity)b. 一致性(Consistency)c. 隔离性(Isolation)d. 持久性(Durability)隔离性的探讨在一个线程修改一个线程查询的情况下可能产生的问题事务概述事务是指逻辑上的一组操作,这组操作要么一起成功,要么一起失败 例如:A——B转帐,对应于如下两条sql语句 update account s...
2019-04-19 18:54:52 208
原创 【牢记】非线程安全的类,尽量避免定义成全局静态变量(以SimpleDateFormat为例说明)
前言:在开发中,我们都使用过SimpleDateFormat这个类,更为了开发方便,减少SimpleDateFormat对象的创建,我们将它封装在了 DateUtil 工具类中,并将它定义成了全局静态的变量,这样减少了内存开销,那这样究竟行不行呢?jdk官方文档给了我们答案: 它的意思是说SimpleDateFormat中的日期格式是不同步的。推荐(建议)为每个线程创建独立的实例。如果多个...
2019-03-31 23:19:32 1774
原创 【面试题】输入一个字符串,求每个字符的出现次数(至少写两种实现方式)
问题描述:给定一个字符串,统计每个字符出现的次数。如:s = “aaccbbcab”。第一种实现方式:第二种实现方式:
2019-03-19 22:43:30 1071 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人