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

03 2023 档案

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

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

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

posted @ 2023-03-29 23:17 wsg_blog 阅读(52) 评论(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 阅读(201) 评论(0) 推荐(0)

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

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

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

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

摘要:Linux C/C++服务器 连接池 创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。 这里讲的数据库,不单只是指Mysql,也同样适用于Redis 连接池的意 阅读全文

posted @ 2023-03-18 16:04 wsg_blog 阅读(89) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 线程池 为什么需要线程池? 某类任务非常耗时(磁盘io、网络io或cpu密集任务),严重影响该线程处理其他任务 解决办法就是把这些耗时任务放到其他线程异步去执行,线程资源的开销与cpu核心之间做平衡选择 线程池的作用:复用线程资源,减少线程创建和销毁的开销;充分利用系统 阅读全文

posted @ 2023-03-16 18:02 wsg_blog 阅读(65) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 内存池 内存池只能降低内存碎片的产生,并不会减少内存泄漏的风险 通常,我们都采用new或者malloc动态申请内存。一般来说,少量的操作不会造成什么影响,但是,如果我们频繁去申请内存块,会造成效率上的损失,更有甚者,会造成内存碎片的存在,从而影响系统的效率(所有程序都可 阅读全文

posted @ 2023-03-15 07:06 wsg_blog 阅读(39) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 异步请求与协程 1.1 什么是异步? 什么是异步?什么是同步? 同步:为一发一收,发完之后阻塞等待回传数据,处理完成然后再发下一条 异步:一直发,commit提交请求接口会一直连续提交请求,有一个专门的等待回传数据的线程,这里我们用epoll来管理接收数据的fd 1.2 阅读全文

posted @ 2023-03-15 06:16 wsg_blog 阅读(62) 评论(0) 推荐(0)

摘要:Linux c/c++ 高性能后端 定时器的几种实现方案 定时器的应用 网络心跳检测 游戏技能冷却 倒计时 其他需要延时处理的功能 定时器的触发方式 网络事件和定时事件在一个线程处理 通常使用在定时任务比较少的场景,redis、nginx、memcached都是这样处理定时任务的,通常最多组织102 阅读全文

posted @ 2023-03-14 00:11 wsg_blog 阅读(95) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 内存泄漏检测组件 调用malloc或者new,没有调用free或delete 内存泄漏检测组件 如何判断是否有内存泄漏 到底在哪行代码泄漏 本文介绍三种内存泄漏检测的方法 mtrace 宏定义 hook malloc mtrace mtrace是系统自带的内存检测接口, 阅读全文

posted @ 2023-03-12 04:12 wsg_blog 阅读(60) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 死锁检测组件 死锁存在的条件 死锁,是指多个线程或者进程在运行过程中因争夺资源而造成的一种僵局,当进程或者线程处于这种僵持状态,若无外力作用,它们将无法再向前推进。如下图所示,线程 A 想获取线程 B 的锁,线程 B 想获取线程 C 的锁,线程 C 想获取线程 D 的锁 阅读全文

posted @ 2023-03-11 21:51 wsg_blog 阅读(105) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 原子操作CAS与锁 1.互斥锁 2.自旋锁 3.读写锁 4.原子操作 5.shmem 多线程同时操作同一个变量问题 多线程执行 idx++,实际运行是转换成三行汇编代码去运行,绝大多数情况下没啥问题,如下图所示 但有一小部分会出现问题,如下 如何解决? 首先想到的就是加 阅读全文

posted @ 2023-03-09 23:15 wsg_blog 阅读(144) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 Posix API接口原理与网络状态 整理网络相关的各个状态和相关接口的工作原理 tcp建立连接 tcp状态机 tcp断开连接 网络api接口 客户端接口:socket()、bind()、connect()、send()、recv()、close() 服务端接口:soc 阅读全文

posted @ 2023-03-08 04:22 wsg_blog 阅读(182) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 http服务器的实现 http服务器说的是在reactor网络io框架基础上加上http协议,实现可与浏览器交互的后端服务,reactor在之前有介绍,下面我们先来看看http协议都有哪些东西 http协议 http消息分两部分,一个是客户端请求消息,一个是服务器响应消 阅读全文

posted @ 2023-03-07 04:25 wsg_blog 阅读(382) 评论(0) 推荐(0)

摘要:Linux C/C++服务器 reactor的原理与百万并发 五元组 五元组:sip,sport,dip,dport,proto 源IP,源端口,目的IP,目的端口,协议 tcp的端口最大支持65536个,客户端和服务端ip都是固定的,为了测试百万并发,我们使用65536个客户端的端口,使用100个 阅读全文

posted @ 2023-03-04 03:40 wsg_blog 阅读(121) 评论(0) 推荐(0)