目录stack介绍stack的定义stack的数据插入stack中数据的个数stack数据删除stack中数据的查看判断stack对象是否为空stack对象的数据交换queue的介绍queue的定义queue的数据插入queue的元素个数queue中元素的删除queue的数据交换stack介绍首先stack是一个类这个类是专门用来存数据,并且这个类是一个模板
......
279
0
0
2023-05-20
目录一、RPC简介1.1 简介1.2 本地调用和远程调用的区别1.3 RPC运行的流程1.4 小结二、RPC简单实现2.1 客户端实现代码2.2 服务端代码三、加强版RPC(以“RPC简单实现”为基础)3.1 加入错误处理3.2 加入网络连接(socket)3.3 加强并发性3.4 加入容错机制(修改客户端部分)RPC是远程调用系统简称,它允许程序调用运行在
......
334
0
0
2023-05-17
目录1.线程传参的过程1.1 内置类型的实参1.2 类类型的实参1.3 传入智能指针unique_ptr1.线程传参的过程下面是thread的源代码template< class Function, class... Args >
explicit thread( Function&& f, Args&&...
......
294
0
0
2023-05-13
目录1.C语言传统的处理错误的方式2. C++异常概念3. 异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3异常安全 3.4 异常规范4.自定义异常体系5.C++标准库的异常体系 6.异常的优缺点总结1.C语言传统的处理错误的方式传统的错误处理机制:1. 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误
......
292
0
0
2023-05-13
目录一、互斥原理(mutex)二、递归互斥量(Recursive Mutex)三、读写锁(Read-Write Lock)四、条件变量(Condition Variable)五、总结一、互斥原理(mutex)互斥锁可以确保在任何时候只有一个线程能够进入临界区。当线程需要进入临界区时,它会尝试获取互斥锁的所有权,如果互斥锁已经被其他线程占用,那么当前线程就会进
......
361
0
0
2023-05-13
目录一、封装第一层:仿函数取结点中的key关键码二、封装第二层:红黑树的普通迭代器1.map和set的表层迭代器实现2.底层红黑树中迭代器的实现三、封装第三层:1.set的迭代器(底层均为const_iterator)3.map的[ ]运算符重载四、对于红黑树设计产生的问题总结一、封装第一层:仿函数取结点中的key关键码1.在源码里面,对于map和set的实
......
295
0
0
2023-05-12
目录一、设计模式概念二、设计一个不能被拷贝的类三、设计一个只能在堆上创建对象的类3.1 私有构造3.2 私有析构四、设计一个只能在栈上创建对象的类五、设计不能被继承的类六、单例模式6.1 饿汉模式6.2 懒汉模式6.2.1 线程安全问题6.2.2 新写法一、设计模式概念设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的
......
268
0
0
2023-05-12
目录一、引入二、自定义类型隐式类型转换三、sync_with_stdio同步四、文件IO流4.1 open和close文件4.2 写入文件与读出文件五、stringstream流的使用5.1 将数值类型数据格式化为字符串5.2 序列化和反序列化总结一、引入int main()
{
string str;
while (cin >> st
......
357
0
0
2023-05-12
目录前言一、JSON格式二、cJSON下载三、cJSON常用函数接口1.cJSON_Parse2.cJSON_Print3.cJSON_Delete4.cJSON_GetObjectItem5.cJSON_GetObjectItem(数组相关)6.创建对象函数接口7.添加cJSON对象到链表8.从现有的cJSON链表中删除一个对象四、cJSON解析JSON案
......
337
0
0
2023-05-12
目录1、背景2、方案简介3、 使用4、测试1、背景用C++做业务发开的同学是否还在不厌其烦的编写大量if-else模块来做接口参数校验呢?当接口字段数量多大几十个,这样的参数校验代码都能多达上百行,甚至超过了接口业务逻辑的代码体量,而且随着业务迭代,接口增加了新的字段,又不得不再加几个if-else,对于有Java、python等开发经历的同学,对这种原始的
......
469
0
0
2023-05-11
目录1. 配置运行环境2. 通讯录的实现2.1 通讯录的功能目录2.2 增加信息功能代码的实现2.3 显示信息功能代码的实现2.4 删除信息功能代码的实现2.5 查询信息功能代码的实现2.6 修改信息功能代码的实现2.7 按名字排序信息功能代码的实现3. 完整静态版本通讯录的全部源码3.1 contact.c3.2 contact.h3.3 test.c4.
......
254
0
0
2023-05-10
需求C语言项目图形库:easyXimage:背景图bk.jpg,卡片图lingdang.png,shu.png,cao.pngmiss:背景音乐yang.mp3思路首先需要导入图片定义图片三板斧:1.定义 2.加载 3.渲染C#include<stdio.h>
#include<easyx.h>
#include<windo
......
280
0
0
2023-05-05
内存分区模型C++程序在执行时,将内存大方向划分为5个区域运行前:代码区:存放函数体的二进制代码,由操作系统进行管理的全局区(静态区):存放全局变量和静态变量以及常量常量区:常量存储在这里,不允许修改运行后:栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的
......
282
0
0
2023-05-04
C/C++常用控制台函数前言:包含头文件Windows.h#include<Windows.h>
需要说明的是,这个头文件包含了大多数win api函数的定义,绝不仅仅只包含控制台api查看操作控制台的全部可使用API函数1.修改和获取标题使用函数:SetConsoleTitleA,GetConsoleTitleA原型:BOOL WINAPI
......
326
0
0
2023-05-04
线程也叫轻量级进程,通常一个进程包含若干个线程。线程可以利用进程所拥有的资源。 本文记录 C++ 操作线程的方法。并发两个或者多个独立的活动同时进行的现象称为并发。并发可以简单的认为,可以理解成多个应用程序同时运行。在单核CPU中,并发实际上是一种假象,进程之间实际上是按照一定的分配算法轮流使用CPU。并发的实现主要有两种方式:多进程实现并发单个进程,多个线
......
339
0
0
2023-05-02