置顶文章

1.9k 2 分钟

# C++web 框架 # 简介 项目地址:https://github.com/charmber/Cppserve 麻烦点个小🌟 目前框架准备取名为 chamber,具体功能正在逐渐完善,如有改进或者提议的地方欢迎指导 后续将会推出详细的使用文档,以及头文件引入教程,目前支持使用方式 1. 直接引入头文件 chamber.h clang++ main.cpp -lmysqlclient2. 使用 CMakeLists.txt 引入直接构建 # 文件结构 ----basedata ---src 数据库源文件 ---corm.h 数据库声明头文件 ----http...

精选分类

文章列表

2.7k 2 分钟

# C 语言多线程简单运算不加锁实现 因为 c 语言本事并没有提供原子性操作的函数,而使用多线程库当中的锁机制又会大大影响效率,在经过多方查找,以及 redis 源码当中实现计数器的实现了解到了编译器自带的十二个内置原子性操作函数 # 原子性操作函数: // 返回更新前的值type __sync_fetch_and_add (type *ptr, type value, ...) // 自加type __sync_fetch_and_sub (type *ptr, type value, ...) // 自减type __sync_fetch_and_or (type *ptr, type...
257 1 分钟

# 随机图 API 许久没有水文章了,也是因为现在工作了,没有大学那会时间多,后面更新可能不会很频繁,但是一定会坚持写文章的 目前暂时就一个接口,大家有需要使用的可以直接调用,后面关于随机图 API 的功能更新和文档也会在此文章继续更新 https://images.chamberun.com/get/random //获取随机图 如果我的网站无法加载图片,那么需要将网站设置当中不安全内容为允许 因为随机图 API 采用的是 http 协议(主要是阿里云 https 的 cdn 挺贵),而我的网站为 https 协议,导致会被浏览器识别为不安全内容
28k 25 分钟

# 指针 # 指针所占内存空间 指针在 32 位系统下所占 4 个字节,64 位操作系统占 8 个字节,不管是什么数据类型。 # 空指针 空指针:指变量指向内存中编号为 0 的空间。 ** 用途:** 初始化指针变量 注意:空指针指向的内存是不可以访问的。内存编号 0~255 为系统占用内存,不允许用户访问。 # ** 野指针 ** 野指针:指针变量指向非法的内存空间,未经分配的地址,没有访问权限的地址。 # const 修饰指针 常量指针:指针的指向可以修改,但是指针指向的值不可以修改 const int *P=&a; *p=20; // 错误,指向 a...
2.5k 2 分钟

# CMU-15445-Lab0-primer # 环境配置 使用的是 Ubuntu 22.04 编译器版本为 clang-14 实验设定的语法标志为 C++17 源码下载地址: https://github.com/cmu-db/bustub/releases/tag/v20221128-2022fall 需要下载压缩包进行解压使用,要不然有一些地方已经有了新的更新已经和课程的代码不一样了 其他的就是跟着说明过一遍命令即可 最后测试环境是否搭建完成 cd bulid/test/make...
2.4k 2 分钟

# C++ 单例模式 # 简介 单例模式是指在当前程序当中,有且仅存在一个该实例对象,那么就得满足以下几个条件: 构造函数私有化,保证用户无法创建新的对象; 在私有变量当中定义该类唯一的实例对象; 保留一个 static 类型函数接口访问该对象 例如: class T{public: static T* GetQue();private: T(); vector<int> que;};# 单例模式又分为饿汉模式和懒汉模式 #...
581 1 分钟

# HTTP+TLS 密钥协商 因为在互联网当中 http 协议报文是明文进行发送和接收,所以传输的信息容易被中间人盗取并篡改;而 https 在 http 传输的基础上加上了加密和身份认证以及完整性保护来保证了传输过程的安全性 HTTPS 就是 HTTP+TLS 的组合 # 什么是 TLS TLS(Transport Layer Security,安全传输层),TLS 是建立在传输层 TCP 协议之上的协议,服务于应用层,它的前身是 SSL(Secure Socket Layer,安全套接字层),它实现了将应用层的报文进行加密后再交由 TCP 进行传输的功能。 TLS/SSL...
2.2k 2 分钟

# TCP 协议 # TCP 协议头部 TCP 头部信息出现在每一个 TCP 报文段中,用于指定通信的源端端口,目的端口,管理 tcp 连接等;如下图所示 16 位的端口:告诉主机该报文来源于哪个端口以及传给上一层协议的目的端口 32 位序列号:在一次 TCP 通信过程中某一方向上的每个字节编号;在最开始建立连接时候序列号将被初始化为一个随机值,后续的数据传输字节大小将在这个初始值上往后偏移 32 位应答号:在收到 32 位序列号之后,将 32 位应答号设置为收到的序列号 + 1 4 位头部长度:标识该 TCP 头部有多少个 32bit (4 字节),4 位能表示的最大值为 15,所以...
4.8k 4 分钟

# 1. 自我介绍 # 2. 项目的介绍 # 3. 进程线程协程是什么,区别 进程是资源的分配和调度的独立单元。进程拥有完整的虚拟地址空间,当发生进程切换时,不同的进程拥有不同的虚拟地址空间。而同一进程的多个线程是可以共享同一地址空间 线程是 CPU...
1.8k 2 分钟

# 堆排序 (最大小堆) 堆排序:堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一颗近似完全二叉树,并且满足子节点的值总是小于 (大于) 他的父节点 ** 完全二叉树:** 最下层子节点集中在从左边开始;如果最下层左节点为空,右节点不为空,那么久不是完全二叉树 如图,可以将这颗二叉树分为三个小堆,每一个小堆堆父节点与两个子节点进行比较,选择最大的一个替换父节点 如 A,B,C 三个节点替换之后为 A (10),B (5),C (3) 由此可以写出替换算法 void HeapSort(int tree[],int end,int start){ int...
1.9k 2 分钟

# KMP 算法 KMP 算法是一种模式匹配算法,可以尽量减少主串与模式串的匹配次数 # 算法步骤 # 1. 生成 next 数组(前缀表) 例如字符串:ABADCABD AB 0 ABA 1 ABAD 0 ABADC 0 ABADCA 1 ABADCAB 2 所以生成前缀表数组为 [0,0,1,0,0,1,2] 原因: 例如 AB,前缀和后缀分别为 A 和 B,并部相同,所以最长公共前后缀为 0;例如 ABA,前缀和后缀分别为,A,AB,后缀:A,BA,所以最长的公共前后缀长度为 1;.... 例如 ABADCAB,最长公共前后缀为 AB,长度为...