置顶文章

2.1k 2 分钟

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

精选分类

文章列表

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 当中,事务的实现是在引擎层 # 事务特性 ---...
3.7k 3 分钟

# Redis # Nosql 特点 1、方便扩展(数据之间没有关系) 2、大数据量高性能(Redis 一秒写入 8 万,读区 11 万,Nosql 的缓存记录级,是一种细粒度 的缓存) 3、数据类型多样(不需要提前设计) # Nosql 分类 键值类型:Key 指向 value 的键值对,通常用 hash table 来实现 列存储数据库:以列簇存储,将同一列数据存在一起 文档型数据库:Key-Value 对应的键值对,Value 为结构化数据 图形数据库:图结构 # redis 基本知识 redis 默认有 16 个数据库,默认使用第一个数据库,可以使用 select [编号]...
2.1k 2 分钟

# SQL 注入 # 分类 SQL 注入根据不同的标准,有不同的分类,从数据类型分类的话,SQL 注入分为数字型和字符型。 根据注入手法分类,可以分为: 可联合查询注入 ----- 联合查询 使用 order by 1 order by 2 ....... 判断数据库有多少列数 再使用 [?id=3 union select 1,2,3,....] 报错型注入 ------ 报错查询 # 布尔型注入 ------ 布尔盲注 思路:布尔逻辑注入的思路是闭合 sql 语句,构造 or 和 and 逻辑语句,注释多余的代码。 原始语句: select fir ,las from user where...
4.3k 4 分钟

# 分布式 # 分布式缓存 # 一致性哈希算法 # 布隆算法 布隆算法是为了解决缓存穿透问题而设置的布隆过滤器原理 1. 将全部数据库当中的 ID 值进行 hash 函数计算,结果范围为 [0,m] 之间 2. 将结果存入一个长度为 m 的二进制当中 存入方案 假设 ID=1 的一个数据通过 hash 计算的结果为 2 那么长度为 m 的二进制数据为 0010...... 假设再存入一个数据 ID=10,通过 hsah 计算结果为 4 那么长度为 m 的二进制数据为 0010100...... 如果计算结果重复,那么当前位置的值不变 原则: 如果客户端发送过来数据 ID...