- 博客(30)
- 收藏
- 关注
原创 C++实现可变参函数
使用该方法有着很多的优点,但是因为不能直接获得包中的参数,存在一个问题就是怎样展开参数包,而展开参数包的方法有:递归方法展开、逗号表达式展开法。这种方法可以传递0,1,2…initializer_list是一种容器,和vector差不多,这个使用就不要求变参列表的位置,使用方法,在这里传递的参数至少一个。使用递归方法展开,就和普通的递归函数使用类似,需要一个递归终止函数。
2023-05-18 21:33:37
695
原创 C++back_inserter的使用
因此可以使用插入迭代器(insert iterator)向容器中插入元素。back_inserter()定义在头文件iterator中。接受一个指向容器的引用,返回一个与该容器绑定的插入迭代器,通过此迭代器赋值会调用push_back添加元素到容器。问题:当使用使用copy()从一个容器向另一个容器拷贝数据时,程序员需要自己保证目标容器的大小大于等于源容器,否则会导致程序崩溃。
2023-05-18 21:32:57
257
原创 nginx惊群效应学习
学习链接:Nginx的惊群问题Nginx惊群问题分析及解决Liunx与Nginx中的惊群效应测试代码:nginx如何解决惊群效应server_accept.cpp/* * * * * */#include <arpa/inet.h>#include <netinet/in.h>#include <stdio.h>#include <errno.h>#include <stdlib.h>#include <
2023-05-17 12:43:22
96
原创 MYSQL主从复制
3.从节点的I/O进程接收到内容后,将接收到的日志内容更新到本机的relay log中,并将读取到的binary log文件名和位置保存到master-info 文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log 的哪个位置开始往后的日志内容,请发给我”当从节点连接主节点时,主节点会创建一个log dump 线程,用于发送bin-log的内容。在读取bin-log中的操作时,此线程会对主节点上的bin-log加锁,当读取完成,甚至在发动给从节点之前,锁会被释放。
2023-05-17 12:43:17
74
原创 C++设计模式:状态模式
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不通状态的一系列类当中,可以把复杂的判断逻辑简化。State类,抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为。ConcreteStra类,具体状态,每一个子类实现一个与Context的一个状态相关的行为。Contxt类,维护一个ConcreteState子类的实例,这个实例定义当前的状态。
2023-05-17 12:41:38
110
原创 TCP/IP知识合集
还有这样一种情况,如果目前的通信双方都已经调用了 close(),都到达了CLOSED状态,没有TIME_WAIT状态时,会出现这样一种情况,现在有一个新的连接被建立起来,使用的IP地址和端口和这个先前到达了CLOSED状态的完全相同,假定原先的连接中还有数据报残存在网络之中,这样新的连接建立以后传输的数据极有可能就是原先的连接的数据报,为了防止这一点,TCP不允许从处于TIME_WAIT状态的socket 建立一个连接。而在每收到一个新的报文段的确认后,把拥塞窗口增加至多一个MSS的数值。
2023-05-17 12:41:31
107
原创 C++整形提升
整型提升就是 char、short int 和位段类型(无论 signed 或 unsigned)以及枚举类型将被提升为 int ,前提是 int 能够完整的容纳原先的数据,否则将被转换为 unsigned int。
2023-05-16 19:00:17
201
原创 C++模板之CRTP
CRTP的全称是Curiously Recurring Template Pattern,即奇异递归模板模式,简称CRTP。CRTP是一种特殊的模板技术和使用方式,是C++模板编程中的一种惯用法。CRTP的特性表现为:基类是一个模板类;派生类继承该基类时,将派生类自身作为模板参数传递给基类。// 定义一个模板类作为基类 template < typename T > class Base {. . . };
2023-05-16 17:33:11
346
原创 KMP算法
输入:haystack = “leetcode”, needle = “leeto”输入:haystack = “sadbutsad”, needle = “sad”解释:“leeto” 没有在 “leetcode” 中出现,所以返回 -1。haystack 和 needle 仅由小写英文字符组成。解释:“sad” 在下标 0 和 6 处匹配。第一个匹配项的下标是 0 ,所以返回 0。
2023-05-16 15:36:48
48
1
原创 mysql隔离级别
一、数据库的隔离级别数据库的隔离级别脏读不可重复读幻读读取未提交(Read Uncommittied)√√√读取已提交(Read committed)×√√可重复读(Repeated Read)××√序列化(serializable)×××二、表现案例:1.读未提交2.读取已提交2.读取已提交3.可重复读三、实现原理:1、Read uncommitted:1.事务对当前读的数据不加锁;2.事务在更新数据的
2022-07-13 23:44:41
86
原创 排序算法汇总
冒泡排序void bubblesort(vector<int> &v){ for (int i = v.size() - 1; i >= 0; --i) { for (int j = 0; j < i; ++j) { if (v[j] > v[j + 1]) { swap(v[j], v[j + 1]); }
2021-12-22 23:08:26
773
1
原创 MySQL优化
MYSQL高级1.架构介绍2.索引优化3.查询截取分析4.MYSQL锁机制5.主从复制1.架构介绍2.索引优化3.查询截取分析4.MYSQL锁机制5.主从复制
2021-09-21 11:43:04
76
原创 MySql学习笔记
本单元目标一、为什么要学习数据库二、数据库的相关概念 DBMS、DB、SQL三、数据库存储数据的特点四、初始MySQL MySQL产品的介绍 MySQL产品的安装 ★ MySQL服务的启动和停止 ★ MySQL服务的登录和退出 ★ MySQL的常见命令和语法规范 五、DQL语言的学习 ★ 基础查询 ★ 条件查询
2021-09-10 23:05:40
107
原创 C++设计模式学习笔记:之装饰模式
设计模式之装饰模式1、单一职责原则用途为什么使用装饰模式装饰模式应用1、单一职责原则装饰模式(Decorator):动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式比生成子类更为灵活。用途已经开发完毕的对象,后期由于业务需要,对旧的对象需要扩展特别多的功能,而不是整个类添加一些功能。这时候使用给对象动态地添加新的状态或者行为(即装饰模式)方法,而不是使用子类静态继承。使用继...
2020-02-18 22:44:19
147
原创 C++设计模式学习笔记:策略模式
设计模式:策略模式策略模式设计商场促销介绍功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片C++代码生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入策略模式设计商场促销介绍商场促销:...
2019-11-18 23:38:31
184
1
原创 结构体编解码
记录一下代码:message.h#include <string>class Message{public: virtual int serializeToByte(char *buff) = 0; virtual int parseFromByte(char *buff) = 0; virtual ~Message() {}protected: char* in...
2019-10-27 23:22:59
342
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人