置顶文章

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...

精选分类

文章列表

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,长度为...
2k 2 分钟

# Manacher 算法 # 背景 给定一个字符串,求出其最长回文子串。例如: s="abcd",最长回文长度为 1; s="ababa",最长回文长度为 5; s="abccb",最长回文长度为 4,即 bccb。 以上问题的传统思路大概是,遍历每一个字符,以该字符为中心向两边查找。其时间复杂度为 O (n2),效率很差。 1975 年,一个叫 Manacher 的人发明了一个算法,Manacher 算法(中文名:马拉车算法),该算法可以把时间复杂度提升到 O...
1.2k 1 分钟

# 数据库事务 数据库事务有四大特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability) # 什么是事务 1. 事务首先要保证一组数据库操作要么全部成功要么全部失败 2. 在 Mysql 当中,事务的实现是在引擎层 # 事务特性 ---...