博客园  :: 首页  :: 新随笔  :: 管理

随笔分类 -  C/C++ Server

摘要:Linux c/c++ 高性能后端 ZMQ无锁消息队列 锁是解决并发问题的万能钥匙,可是并发问题只有锁能解决吗? CAS的含义 yqueue_t/ypipe_t无锁队列的设计原理 每次加入元素都动态分配节点对性能的影响(测试ypipe_t<int, 1000>, ypipe_t<int, 10>, 阅读全文

posted @ 2025-06-20 10:18 wsg_blog 阅读(65) 评论(0) 推荐(0)

摘要:Linux c/c++ 高性能后端 结构型设计模式 常用的有 单例、工厂,结构型设计模式代码 单例模式 保证一个类仅有一个实例,并提供一个该实例的全局访问点。——《设计模式》GoF 单例模式的对象通常和应用程序的生命周期是一模一样的,对于用户而言,我们不希望用户去new它或者delete它,因此我们 阅读全文

posted @ 2025-06-18 19:32 wsg_blog 阅读(19) 评论(0) 推荐(0)

摘要:Linux c/c++ 高性能后端 redis/memcached/nginx网络组件 网络编程关注的问题 连接的建立、连接的断开、消息的到达、消息发送完毕 连接的建立 分为两种:服务端处理接收客户端的连接;服务端作为客户端连接第三方服务; int clientfd = accept(listenf 阅读全文

posted @ 2025-05-19 23:19 wsg_blog 阅读(35) 评论(0) 推荐(0)

摘要:Linux c/c++ 高性能后端 RocksDB RocksDB 是 Facebook 的一个实验项目,目的是希望能开发一套能在服务器压力下,真正发挥高速存储硬件性能的高效数据库系统。这是一个 C++ 库,允许存储任意长度二进制 KV 数据。支持原子读写操作。 RocksDB 依靠大量灵活的配置, 阅读全文

posted @ 2025-05-11 22:48 wsg_blog 阅读(109) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 TiDB TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (HybridTransactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩 阅读全文

posted @ 2025-05-09 22:40 wsg_blog 阅读(31) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 tcp/ip定时器与滑动窗口 Posix API接口原理与网络状态 中介绍了网络的连接和断开过程,以及在不同情况下网络出现的各种状态;这次我们了解下网络在传输过程中如何保证数据的准确性(顺序性及完整性); 首先抛出三个问题: 1.tcp的数据如何发送和接收? 2.如何保 阅读全文

posted @ 2024-03-26 15:42 wsg_blog 阅读(27) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 用户态网络协议栈(Netmap)设计实现 通常情况下网络协议栈中的数据链路层、网络层、传输层是由内核程序完成, 而用户态网络协议栈则由我们自己来完成,后边有Udp协议栈的设计实现过程 现实工作中几乎不用我们自己去实现协议栈,一般都会用开源的已验证过的协议栈, 自己实现需 阅读全文

posted @ 2023-06-04 22:38 wsg_blog 阅读(257) 评论(0) 推荐(0)

摘要:Linux c/c++ 高性能后端 锁与分布式数据库 分布式锁本质上是解决了分布式事务中隔离性问题 在分布式系统中,一个应用部署在多台机器当中,某些场景下,为了保证数据据一致性,要求同一时刻,同一任务只在一个节点上运行,即保证某个行为在同一时刻只能被一个线程执行;在单机单进程多线程环境,通过锁很容易 阅读全文

posted @ 2023-05-14 23:43 wsg_blog 阅读(83) 评论(0) 推荐(0)

摘要:Linux c/c++高性能 gRPC远程调用 RPC 即远程过程调用协议(Remote Procedure Call Protocol),可以让我们像调用本地对象一样发起远程函数调用,RPC凭借其强大的治理功能,成为解决分布式系统通信问题的一大利器。 gRPC可以实现跨语言的高效远程数据调用,基于 阅读全文

posted @ 2023-04-26 20:13 wsg_blog 阅读(103) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 Redis缓存数据库 MySQL通常会作为我们项目中的主要数据库,因为每次增删改都会通过redolog进行落盘,因此它比Redis这种内存数据库的数据安全性要高一些,而且存储的数据量也更大; 但是由于MySQL读数据几乎都要去磁盘中查找,虽然有B+树,也有BufferP 阅读全文

posted @ 2023-04-19 13:12 wsg_blog 阅读(124) 评论(0) 推荐(0)

摘要:Linux C/C++ 高性能后端 C++11 新特性 C++11 中的thread、mutex、condition、function、bind等新特性,并使用这些新特性实现一个线程池 1. C++11 多线程 linux的线程函数在pthread.h中,c++对linux线程函数进行了类封装,使用 阅读全文

posted @ 2023-04-15 14:34 wsg_blog 阅读(211) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 websocket协议与服务器实现 服务器需要主动推送(长连接)给客户端数据,通常使用websocket协议,比如股票信息实时数据等;websocket服务器为websocket协议+reactor实现 websocket协议与http协议对比,http协议是针对网页设 阅读全文

posted @ 2023-04-07 01:44 wsg_blog 阅读(137) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 火焰图的生成原理与构建方式 1 火焰图简介 火焰图能做什么: 可以分析函数执行的频繁程度 可以分析哪些函数经常阻塞 可以分析哪些函数频繁分配内存 Flame Graph 原图路径:https://queue.acm.org/downloads/2016/Gregg4.s 阅读全文

posted @ 2023-04-04 21:22 wsg_blog 阅读(2354) 评论(0) 推荐(1)

摘要:Linux C/C++服务器 Redis协议与异步交互 redis网络层 io多路复用(单reactor)+非阻塞io 哪个管道先构成一个完整的数据包(读事件),谁就先得到处理; 1.一个数据包可能由多个读事件才能组装完成 2.管道就是连接 3.人推车相当于网络线程 redis pipeline r 阅读全文

posted @ 2023-04-02 02:07 wsg_blog 阅读(133) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 结构型设计模式 结构型设计模式 单例模式 保证一个类仅有一个实例,并提供一个该实例的全局访问点。——《设计模式》GoF 单例模式的对象通常和应用程序的生命周期是一模一样的,对于用户而言,我们不希望用户去new它或者delete它,因此我们需要对用户隐藏它的构造和析构函数 阅读全文

posted @ 2023-04-01 23:07 wsg_blog 阅读(24) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 Redis相关命令详解及原理 Redis 是 Remote Dictionary Service 的简称;也是远程字典服务; Redis 是内存数据库,KV 数据库,数据结构数据库; Redis 应用非常广泛,如 Twitter、暴雪娱乐、Github、Stack Ov 阅读全文

posted @ 2023-03-31 18:42 wsg_blog 阅读(71) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 MySQL语句,索引,视图,存储过程 MySQL存储模型:所有数据都在磁盘中,只有少部分高频数据会在内存中,查询存储数据结构主要使用B+树 MySQL网络模型:IO多路复用select+阻塞的io ,命令处理为多线程并发处理的模式,默认并发线程最大数151个,使用短连接 阅读全文

posted @ 2023-03-29 23:17 wsg_blog 阅读(51) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 C++智能指针与右值引用 智能指针、右值引用、STL 编译 版本比较低的编译器要指明c++11或c++14 g++ -o main main.cpp -std=c++11 g++ -o main main.cpp -std=c++14 1. 智能指针 智能指针主要解决以 阅读全文

posted @ 2023-03-27 20:58 wsg_blog 阅读(198) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 MySQL事务原理分析 事务 事务的本质是并发控制的单元,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。类似于原子操作CAS 事务将数据库从一种一致性状态转换为另一种一致性状态;保证系统始终处于一个完整且正确的状态; 事务可由一条非常 阅读全文

posted @ 2023-03-22 18:36 wsg_blog 阅读(45) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 MySQL索引原理及SQL优化 innodb 索引组成 一种有序的存储结构,按照单个或这多个列的值进行排序,目的是为了提升搜索效率 索引分类:主键索引、唯一索引、普通索引、组合索引、以及全文索引(elasticsearch) 主键选择 innodb 中表是索引组织表,每 阅读全文

posted @ 2023-03-21 18:39 wsg_blog 阅读(61) 评论(0) 推荐(0)