自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 从零造的一个网络轮子

从零造的一个网络轮子一 类图及各类简述一 类图及各类简述首先,在整个类图中,绿色部分是分别在客户端和服务端可直接使用的三个类,蓝色部分的两个类则是两个单例对象。1.CServiceNoBlock:是一个服务端的类,所有socket全都通过非阻塞模式进行accept、recv、send等行为,每次循环都会对所有socket进行操作,类似于轮询。2.CServiceEpoll:继承自CServiceNoBlock,行为和CServiceNoBlock基本一样,主要区别在于:在对套接字进行轮询之前,使用

2020-12-09 22:25:14 542 1

原创 毕设视频演示

https://www.bilibili.com/video/BV1Fr4y1S73B

2023-07-20 22:30:49 103 1

原创 lua随便写点

变长参数:

2023-07-20 21:10:14 101 1

原创 redis随便写点

srandmember key [count] 随机返回一个,如果传了count,正数返回不相同的count个,负数返回|count|个可能相同的。id,可以自己写,也可以用星号代替,id的格式是[unix时间戳-这个时间戳的第几条],使用*时,该命令的返回值是id。键的分配:所有的键都会经过crc16求hash,然后求余16384得到一个槽id,所以一共有0-16383个槽。槽的分配:集群创建时,16384个槽,分配个每个节点,命令操作键,会先找键在哪个节点,然后去对应节点上找,

2023-07-20 21:09:43 85 1

原创 高性能mysql 随笔

mysql的三层架构:  第一层是管理客户端连接的。    对于每个客户端连接,都会从管理的线程池中取出一个为其服务  第二层是语句查询、语句解析、语句优化,一些select的缓存、还有内置函数、存储过程视图之类的管理。    查询语句的优化则是再内部的解析器对语句重构以提升执行效率。  第三层是存储引擎,主要负责数据的存取,建表时可以选择不同的引擎,不同的引擎各有优劣。    比如MyISAM不支持事务却使用表锁,innoDB使用行锁却支持事务。并发控制  关于锁的上锁方式,分为两种....

2022-07-09 08:24:33 297 1

原创 一个c++RPC实现

一个c++RPC实现简述1.线程池2.RPC2.1RpcServer2.2RpcClient3.测试简述  1.本文主要由三个部分,第一个是线程池的实现,第二个是RPC的实现,第三个是一些测试的代码。  2.ROC网络的部分使用我另一篇文章的网络服务实现,所以这里的RPC实现完全没有一行关于网络的代码。  3.因为使用的是现成的网络轮子,很多地方的接口也不得不受限于其提供的接口。1.线程池  这个线程池是我直接拿来别人的改改,来自link.  threadpool.h文件class CThr

2021-11-16 16:20:12 3714 2

原创 《UNP卷二》随笔

UNP卷二随笔一二三四 管道和FIFO一  进程间通信的方式有三种:    ①文件系统。通过read、write等函数,穿过内核,于文件系统上实现进程之间的共享,当然这需要某种同步操作。这种类型的持久性基于文件何时被删除。    ②内核。在内核上建立的某个<进程间通讯的对象>,不同进程间通过调用一组相关函数,通过这个对象在进程间传递信息。其持久性不会随着进程结束被删除,只有显示调用某个删除操作,或者内核重启,这种对象才会消失。例如posix消息队列(今天刚看到这)。    ③进程。这类

2021-11-12 09:49:35 184 1

原创 《STL源码剖析》随笔

STL源码剖析随笔第二章 空间配置器第三章 迭代器与traits第二章 空间配置器  内存分配过程    STL的内存分配分为两级。    第一级是在所需分配内存大于128字节时。      此时只使用malloc分配内存,当malloc无法取得有效内存时,则会调用名为’内存不足处理例程’,调用该函数后依旧无法成功取得内存,就抛出异常。    第二级是在所需分配内存小于128字节时。      第二级则是为了解决内存碎片问题。其维护16个自由链表,分别是 8~128字节中8的倍数,这些内存被初

2021-02-10 20:13:28 135

原创 《winodws核心编程》随笔

winodws核心编程随笔第一章 错误处理第二章 字符及字符处理第一章 错误处理  1.WINDOWS版本的errno    当函数出错,不同的返回值类型有不同的描述,分别是:    ①VOID       该类型的API不会失败    ②BOOL       失败返回0,否则返回一个非0值    ③HANDLE     HANDLE标识一个可以操纵的对象,失败一般返回NULL,有些函数返回INVALID_HANDLE_VALUE(-1)。    ④PVOID       该类型标识一块内存地

2021-02-04 17:07:16 319

原创 《TCP/IP详解卷一》随笔

TCP/IP详解卷一随笔概述以太网协议ARP & RARPICMP概述链路层。主要包括操作系统的设备驱动程序和计算机的网卡接口。网络层。处理网络中的分组传输。传输层。提供端到端的服务,本书主要涉及TCP和UDP。应用层。负责处理应用程序细节,程序处理数据后交给套接字。TCP/IP协议族是一组不同的协议组合的。TCP和IP只是其中两个协议。在链路层,主要有以太网协议、ARP、RARP三个协议。在网络层,主要有IP、ICMP、IGMP三个协议。在传输层,主要有TCP、UDP两个协议。

2020-10-28 20:39:06 371

原创 《深度探索C++对象模型》随笔

深度探索C++对象模型随笔第一章 关于对象第二章第三章第四章第五章第六章第七章第一章 关于对象  1. C++中,有两种数据成员:    ①静态数据成员②非静态数据成员  三种成员函数:    ①静态成员函数②非静态成员函数③虚函数    2. 静态数据成员放在类之外,非静态数据成员被配置与每一个类对象之类  静态和非静态成员函数也放在类之外,虚函数则是特殊情况:    ①每个类产生一堆指向其虚函数的指针,集合在一个表格中,该表成为虚函数表(vtbl)    ②每个类对象被安插一个指针,

2020-10-22 23:45:13 189

原创 《Effective C++ 55&35》随笔

Effective C++ 55&35 随笔Effective C++ 55More Effective C++ 35大概很有以前看过这两本书,不过那时候知道的也不太多,笔记在OneNote上也是乱七八糟的,后来因为某些原因在OneNote上的笔记怎么也找不到了,重新看一遍好好整理整理。其中一些不怎么重要部分就被跳过了。Effective C++ 55  02条: 尽量以const enum inline 替换#define    ①对于单纯常量最好以const对象或者enum代替def

2020-10-15 23:37:35 242

原创 muduo一书随笔

muduo一书随笔第一章 线程安全的对象声明周期管理第一章 线程安全的对象声明周期管理  1.不要在对象构造函数 或 析构函数中出现this指针、注册回调、把this指针传递给跨线程对象。因为只要还在构造函数,对象就不是一个被构造好的对象,只要进入析构函数,对象就不是一个完整的对象。在多线程中使用未构造好的对象和已经销毁的对象是不安全的。  2.二段式构造。书中提出多线程情况下用构造函数+init()函数来构造对象,把注册回调这类危险的操作放在init()中,通过init()的返回值来判断对象是否构造

2020-10-15 17:38:14 144

原创 从零写的一个嗅探器

a

2020-08-26 19:29:17 458

原创 《C++并发编程实战》随笔

写在开头:本书中的许多代码过于复杂,使用了C++中较新的特性等。第一章

2020-08-11 15:58:42 243

原创 遇到的问题集合(倒序)

一些奇奇怪怪的坑1.远程调试linux,debug和release1.远程调试linux,debug和release  昨晚在win10 vs里,远程调试一个Linux程序,Linux的公网IP是39.x.x.x,接着客户端连接这个IP的时候,总是connect失败。  之后我在linux那边,用服务端的sock调用getsockname,看看他到底是bind的哪个IP。  打印出来之后是一个叫85.85.0.0,的IP。  阿里云服务器防火墙,netstat查看,端口也是设置正确的。  尝试过

2020-07-16 07:52:59 337

原创 《APUE》随笔

APUE随笔

2020-07-14 22:09:18 1069

原创 《UNP》随笔

UNP随笔第一章第二章这篇文章只是记载了我对于其中不太了解的知识。第一章 errno值:只要某个unix函数(某个系统调用或限定为某个套接字函数)有错误发生,全局变量errno会被置为一个指明错误类型的值。第二章TIME_WAIT状态 其存在的意义是为了解决两个问题: 1.A端发送了FIN后,收到B端的ACK和FIN,最后A端还会向B端发送一个ACK,当最后这个ACK丢失,B端会重发表示自己停止发送的FIN,以期望收到A端确认。 书中提到这个状态最多会维持2MSL,猜测也许如果2MSL

2020-07-13 22:06:17 577

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除