置顶文章

1.3k 1 分钟

# C++web 框架 # 简介 项目地址:https://github.com/charmber/Cppserve 麻烦点个小🌟 目前框架准备取名为 chamber,具体功能正在逐渐完善,如有改进或者提议的地方欢迎指导 # 文件结构 ----http //tcp请求响应逻辑部分 ---httpheader.h ---httpserve.h ⌙--router ---router.h ----str //字符串以及json序列化和反序列化 ---json.h ----test...

精选分类

文章列表

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...
2.5k 2 分钟

# 排序算法 # 概述 算法分类: 十种常见排序算法主要分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破 O (nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。 ![image-20210908201939895](/Users/macbook/Library/Application...