Linux架构
文章平均质量分 90
Bushoter
在?来一起学习?
展开
-
UDP可靠传输的实现(KCP)
1. 如何做可靠性传输?ack机制、重传机制、序号机制、重排机制(网络包乱序)、窗口机制2. 如何选择TCP和UDP?当实时性要求高,选择UDP:直播、音视频通话、游戏......使用短连接时:物联网传感器上报数据,采集完就休眠,采用UDP可以省电 大规模服务器心跳包设计,集中服务器监测,用来监控十万台服务器3. UDP如何可靠?KCP协议的优势是什么?可靠性UDP为了解决延迟问题 流量 = 带宽,流速 = 延迟 可靠+兼容速率——加序号TCP的超时重传间隔RT...原创 2021-07-18 21:19:46 · 1513 阅读 · 4 评论 -
Redis原理及实现细节(2)Redis协议和异步方式
1. Redis的网络层Reactor【并发】处理连接,线程【串行】处理命令 (串行、并发:一个处理器 并行:多个处理器)单Reactor:一个线程同时处理所有连接的数据:【命令】+【网络IO】(MySQL :一个线程对应一条连接 【并发】处理连接,【并发】处理命令)Redis pipeline(客户端的技术)先把多个请求(request)都发送过去,再按顺序依次处理响应(response)(避免阻塞,提升效率)send:把request数据写到该连接的fd写缓冲区,协...原创 2021-06-13 23:12:08 · 541 阅读 · 0 评论 -
Redis原理及实现细节(1)命令和数据结构
Redis(Remote Dictionary Service)远程字典服务,内存数据库,kv数据库,数据结构数据库http://redis.cn/commands.html1. 应用:朋友圈点赞数、评论、点击数(hash)记录朋友圈说说列表(排序)、快速显示(list)记录文章的标题、摘要、作者和封面,列表页显示(hash)朋友圈点赞用户ID、评论ID、显示去重计数(zset)缓存热点数据,减少数据库压力(hash)朋友圈说说id(计数器string)集合交并差记录好友原创 2021-06-03 11:32:55 · 196 阅读 · 0 评论 -
MySQL——什么是事务?四大特性ACID?隔离级别?
什么是事务(ACID)?事务的作用是什么?MySQL中,事务其实是一个最小的不可分割的工作单元,事务能够保证一个业务的完整性。UPDATE user SET money=money-100 where name = 'a';UPDATE user SET money=money+100 where name ='b';多条SQL语句,可能会有同时成功的要求,要么就同时失败如何控制事务?MySQL默认开启事务(自动提交) SELECT@@autocommit;默认事务开启的..原创 2021-02-15 13:48:41 · 266 阅读 · 1 评论 -
Linux网络编程和TCP服务器的多种实现
TCP客户端:bind(addr) connect() send() recv() close()服务端:fd=socket() bind(addr) listen() clientfd = accept() recv() close()listen只做迎接客户端的操作,不会影响后续工作(三次握手是在listen时确定的)UDP客户端:sendto() recvfrom()服务端:socket() recvfrom(fd,addr,buffer,...原创 2021-02-04 16:38:45 · 170 阅读 · 0 评论 -
设计模式编程基础——发布订阅者模式
设计模式:是指在软件开发中,经过验证的,用于解决在特定环境下、重复重现的,特定问题的解决方案。在开发过程中,设计模式不是套用的模板,而是遇到问题时自然而然想到的解决方案,避免了重复造轮子的工作。模式的基本四要素:模式名称 pattern name 问题 problem 解决方案 solution 效果 consequences模式的最终目的:高内聚,低耦合发布订阅者模式目的:解耦合...原创 2020-12-19 12:10:29 · 447 阅读 · 0 评论 -
无锁CAS/无锁队列
高并发,读写十分频繁,会使用CAS1 互斥锁 自旋锁 原子操作锁住的代码耗时短:counter++操作,自旋锁有优势锁住的代码耗时长:for_add操作,自旋锁无优势【因为在等待的时候消耗的CPU资源比较多,做的无用功比较多】如何选择不同的锁?共享区域的粒度:线程切换会耗时,如果粒度小,spinlock时间小于CPU线程切换时间损耗,则有优势mutex 共享区域运行时间比较长(如果获取不到锁,会让出CPU)spinlock 执行的语句少,非阻塞(获取不到锁,就一直检...原创 2020-10-18 10:26:09 · 929 阅读 · 1 评论 -
B树与B+树的基础知识
B树包括:B-Tree,B+Tree,B*Tree多叉树与B树的区别在于:B树的所有叶子结点,都在统一的高度上B-Tree和B+Tree常在磁盘中做索引一颗M阶B树T,满足以下条件:每个结点至多拥有M棵子树 根结点至少拥有两棵子树 除了根结点以外,其余每个分支结点至少拥有M/2棵子树 所有的叶结点都在同一层上 有k棵子树的分支结点则存在k-1个关键字,关键字按照递增顺序进行排序 关键字数量满足ceil(M/2)-1 <= n <= M-1 (ceil:向上取整)M阶:原创 2020-10-03 09:51:57 · 709 阅读 · 0 评论 -
红黑树的基础知识
红黑树是一颗二叉搜索树,它是平衡搜索树的一种,能够保证最坏情况下基本动态集合操作的时间复杂度为O(lgn)红黑树的性质: 每个结点都是红色或黑色 根结点是黑色 叶结点(nil)是黑色 如果一个结点是红色,则它的两个子结点是黑色(说明红色结点不相邻) 对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点 红黑树的结论:一颗有n个内部结点的红黑树的高度最多为2lg(n+1)注意:讨论红黑树时,一般都忽略黑色的叶结点,root的根原创 2020-09-26 22:16:43 · 439 阅读 · 0 评论 -
布隆过滤器的原理和实现
1. 布隆过滤器 VS hashmap布隆过滤器是一种巧妙的概率型数据结构(probabilistic datastructure),特点是高效地插入和查询。和传统的数据结构相比,布隆过滤器占用空间小且高效,但有一定的概率性,结果存在误差。hashmap的元素超过表的一半需要扩容hash冲突:太严重,退化为链表2. 应用场景判断一个字符串是否存在,记录的数据量很大且要求查询效率高的情况下会采用布隆过滤器。...原创 2020-11-10 17:34:23 · 591 阅读 · 0 评论 -
红黑树和B+树的应用场景
查找算法:遍历、二分(有序序列,二叉查找树)、哈希(最高效)、插值(二分的优化)、索引(搜索引擎、lucene)、BFS/DFS(图论的遍历)、平衡树、B树、B+树、红黑树(高效的查找算法)、二叉搜索树哈希:O(1) 查找、哈希冲突(即一个hash值下挂了很多点)、JDK1.8里的HashMap:链表+红黑树(处理哈希冲突,一个key对应一个计算出来的hash值,多个key对应了同一个hash值,则需要用链表来存储这多个key...原创 2020-09-28 11:20:54 · 717 阅读 · 0 评论