- 博客(260)
- 资源 (5)
- 收藏
- 关注
原创 【项目设计】自主HTTP服务器
本项目实现的是一个HTTP服务器,项目中将会通过基本的网络套接字读取客户端发来的HTTP请求并进行分析,最终构建HTTP响应并返回给客户端。HTTP在网络应用层中的地位是不可撼动的,无论是移动端还是PC端浏览器,HTTP无疑是打开互联网应用窗口的重要协议。该项目将会把HTTP中最核心的模块抽取出来,采用CS模型实现一个小型的HTTP服务器,目的在于理解HTTP协议的处理过程。该项目主要涉及C/C++、HTTP协议、网络套接字编程、CGI、单例模式、多线程、线程池等方面的技术。
2022-11-24 11:44:30 9122 68
原创 【项目设计】高并发内存池
文章目录项目简介内存池的概念定长内存池的实现整体框架设计threadcachethreadcache整体设计threadcache哈希桶映射对齐规则threadcacheTLS无锁访问centralcachecentralcache整体设计centralcache结构设计centralcache核心实现pagecachepagecache整体设计pagecache中获取Span申请内存过程联调threadcache回收内存centralcache回收内存pagecache回收内存释放内存过程联调大于256K
2022-03-28 22:11:37 25848 146
原创 MySQL知识总结(内附超详细知识框架图)
博友们,你们好!博主最近对MySQL相关的知识进行了复盘,并通过思维导图的方式提取出了MySQL的核心知识点,现将复盘结果分享给大家,希望能够对大家学习MySQL有所帮助。
2023-10-27 15:40:38 1929 16
原创 Rust所有权
所有程序在运行时都必须管理其使用计算机内存的方式,一些语言中具有垃圾回收机制,在程序运行时有规律地寻找不再使用的内存,比如C#和Java。在另一些语言中,程序员必须自行分配和释放内存,比如C/C++。而Rust则是通过所有权系统管理内存,所有权是Rust最独特的特性,它让Rust无需GC就可以保证内存安全,通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查,如果违反了所有权规定,则程序不能通过编译。在程序运行时,所有权系统不会减慢程序的运行速度,因为所有权规则的检查是在编译时进行的。
2023-10-24 14:03:08 1246 18
原创 Rust通用编程概念
在Rust中,声明变量使用let关键字,并且默认情况下,声明的变量是不可变的,要使变量可变需要在声明变量时,在变量前面加上mut关键字。如果将上述代码中的mut关键字去掉,那么在编译代码时就会报错,报错结果就是不能对不可变的变量进行二次赋值,也就是不能对不可变的变量进行修改。
2023-10-20 09:11:50 1028 19
原创 猜数字游戏(Rust实现)
Rust团队没有把随机数字生成功能内置到标准库中,而是选择将它作为rand包(rand crate)提供给用户。Rust中的包(crate)代表了一系列源代码文件的集合,我们当前正在构建的项目是一个用于生成可执行程序的二进制包(binary crate),而我们引用的rand包则是一个用于复用功能的库包(library crate)。rand包中有一个名为Rng的trait,它定义了随机数生成器需要实现的方法集合,比如Rng中的gen_range方法可以根据指定的范围来生成随机数。
2023-10-17 18:55:56 1554 21
原创 Rust入门基础
Rust是一种通用的编程语言,它可以让每个人编写可靠且高效的软件。Rust可以用来替换C/C++,Rust和它们具有同样的性能,但是很多常见的bug在编译时就可以被消灭。Rust能够保证内存安全(无需GC),并且易于维护、调试,代码既安全又高效。
2023-10-11 11:29:04 1417 27
原创 高阶数据结构 ——— 图
文章目录图图的基本概念图的存储结构邻接矩阵邻接表图的遍历广度优先遍历深度优先遍历最小生成树Kruskal算法Prim算法最短路径单源最短路径-Dijkstra算法单源最短路径-Bellman-Ford算法多源最短路径-Floyd-Warshall算法图图的基本概念图的基本概念图是由顶点集合和边的集合组成的一种数据结构,记作 G=(V,E)G=(V, E)G=(V,E) 。有向图和无向图:在有向图中,顶点对 <x,y><x, y><x,y> 是有序的,顶点
2023-06-05 20:07:10 2390 45
原创 高阶数据结构 ——— 并查集
并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。并查集通常用森林来表示,森林中的每棵树表示一个集合,树中的结点对应一个元素。虽然利用其他数据结构也能完成不相交集合的合并及查询,但在数据量极大的情况下,其耗费的时间和空间也是极大的。
2023-04-28 15:57:42 1411 21
原创 KMP算法
KMP算法是一种改进的字符串匹配算法,是由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此叫做KMP算法。KMP算法的核心就是利用匹配失败后的信息,尽量减少模式串与文本串的匹配次数,以达到快速匹配的目的。
2023-04-24 20:29:42 1729 28
原创 MySQL用户管理
与Linux操作系统类似,MySQL中也有超级用户和普通用户之分。如果一个用户只需要访问MySQL中的某一个数据库,甚至数据库中的某一个表,那么可以为其创建一个普通用户,并为该用户赋予对应的权限,而不让该用户看到数据库中的其他数据,防止该用户对其他数据进行误操作。
2023-02-16 09:37:55 3144 34
原创 MySQL视图特性
视图是一个虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。视图中的数据并不会单独存储在数据库中,其数据来自定义视图时查询所引用的表(基表),在每次引用视图时动态生成。由于视图和基表用的本质是同一份数据,因此对视图的修改会影响到基表,对基表的修改也会影响到视图。
2023-02-13 10:35:58 1257 23
原创 MySQL事务管理
事务由一条或多条SQL语句组成,这些语句在逻辑上存在相关性,共同完成一个任务,事务主要用于处理操作量大,复杂度高的数据。比如转账就涉及多条SQL语句,包括查询余额(select)、在当前账户上减去指定金额(update)、在指定账户上加上对应金额(update)等,将这多条SQL语句打包便构成了一个事务。MySQL同一时刻可能存在大量事务,如果不对这些事务加以控制,在执行时就可能会出现问题。比如单个事务内部的某些SQL语句执行失败,或是多个事务同时访问同一份数据导致数据不一致的问题。
2023-02-09 19:10:51 4986 36
原创 MySQL索引特性
数据库表中存储的数据都是以记录为单位的,如果在查询数据时直接一条条遍历表中的数据记录,那么查询的时间复杂度将会是O(N)。索引的价值在于提高海量数据的检索速度,只要执行了正确的创建索引的操作,查询速度就可能提高成百上千倍。当一张表创建索引后,在数据库底层就会为表中的数据记录构建特定的数据结构,后续在查询表中数据时就能通过查询该数据结构快速定位到目标数据。索引虽然提高了数据的查询速度,但在一定程度上也会降低数据增删改的效率。
2023-01-31 14:57:26 1852 28
原创 MySQL复合查询
实际开发中往往需要将多张表关联起来进行查询,这就叫做多表查询,在进行多表查询时,只需要将多张表的表名依次放到from子句之后,用逗号隔开即可,这时MySQL将会对给定的这多张表取笛卡尔积,作为多表查询的初始数据源。多表查询的本质,就是对给定的多张表取笛卡尔积,然后在笛卡尔积中进行查询。所谓的对多张表取笛卡尔积,就是得到这多张表的记录的所有可能有序对组成的集合,需要注意的是,对多张表取笛卡尔积后得到的数据并不都是有意义的。
2023-01-15 10:44:42 2789 37
原创 MySQL表的增删查改
表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。CRUD的操作对象是对表当中的数据,是典型的DML(Data Manipulation Language)数据操作语言。
2023-01-02 22:02:56 3171 39
原创 学生管理系统(Python实现)
学生管理系统是为了对学校学生信息进行管理而开发的一款软件,下面我们来实现一个命令行版本的学生管理系统,该学生管理系统包括如下几个功能:新增学生信息、显示学生信息、查找学生信息、删除学生信息、学生信息存档
2022-12-27 11:21:25 1941 24
原创 MySQL表的约束
真正约束字段的是数据类型,如果插入的数据超出了对应数据类型的取值范围,那么数据将会插入失败。但是数据类型的约束很单一,为了更好的保证数据的合法性,从业务逻辑角度保证数据的正确性,MySQL中出现了表的约束,目的就是为了尽可能保证数据安全,减少用户的误操作可能性。表的约束有很多,本篇博客主要介绍如下几个:null/not null、default、comment、zerofill、primary key、auto_increment、unique key、foreign key。
2022-12-22 17:47:03 2223 31
原创 MySQL数据类型
数据类型决定了存储数据时应该开辟的空间大小,决定了如何识别一个特定的二进制序列,决定了数据的取值范围等。MySQL本身是不支持bool类型的,当把一个数据设置成bool类型时,数据库会自动将其转换成tinyint(1)的数据类型,其实这个就是变相的bool类型,因为tinyint(1)只有1和0两种取值,可以分别对应bool类型的true和false。
2022-12-10 15:52:12 2509 27
原创 MySQL表的操作
表操作至少会涉及如下两类SQL语句:DDL(Data Definition Language)数据定义语言:比如建表、删表、该表、新增列、删除列等。DML(Data Manipulation Language)数据操作语言:比如插入记录、删除记录、修改记录等。本篇博客讲的是表的DDL操作,也就是操作表结构的SQL语句。
2022-12-07 10:02:36 2795 40
原创 MySQL库的操作
创建数据库的SQL如下:CREATE DATABASE [IF NOT EXISTS] db_name [[DEFAULT] CHARSET=charset_name] [[DEFAULT] COLLATE=collation_name];说明一下:SQL中大写的表示关键字,[ ]中代表的是可选项。CHARSET用于指定数据库所采用的编码格式。COLLATE用于指定数据库所采用的校验规则。注意: 如果创建数据库时未指明数据库的编码格式或校验规则,则默认使用MySQL配置文件中对应的编码格式或校验规则。
2022-12-03 20:56:41 3814 44
原创 MySQL数据库基础
数据库是按照数据结构来组织、存储和管理数据的仓库,是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。虽然单纯的使用文件也可以存储数据,但会存在如下缺点:安全性问题:数据误操作后无法进行回滚。不利于数据的查询和管理:没有将存储的数据以某种数据结构组织起来。控制不方便:数据的控制需要用户自己来完成。不利于存储海量数据:数据量越大用户操控数据的成本越高。为了解决上述问题,于是专家们设计出了更利于管理数据的数据库。
2022-11-30 09:59:59 3897 42
原创 Python库的使用
库就是别人已经写好了的代码,我们可以直接拿来用。一个编程语言能否流行起来,一方面取决于其语法是否简单方便容易学习,另一方面取决于其生态是否完备。所谓的生态就是指,该语言是否有足够丰富的库来应对各种编程场景。在编程过程中并发所有代码都需要自己写,而是要充分利用现成的库来简化开发过程,因此如果一个语言有足够丰富的库,就能够降低程序员的学习成本,提高程序的开发效率。
2022-11-28 13:37:12 2808 6
原创 Python文件操作
打开文件的方式有以下几种:| 'r' | 以读方式打开文件(默认) || 'w' | 以覆盖写方式打开文件,如果文件不存在则先创建再打开 || 'a' | 以追加写方式打开文件,如果文件不存在则先创建再打开 || 'x' | 创建文件并以写方式打开,如果文件已存在则会抛出异常 || 'b' | 以二进制方式打开文件 || 't' | 以文本方式打开文件(默认) || '+' | 打开磁盘文件进行更新(读取与写入) |
2022-11-17 13:53:12 775 11
原创 文件搜索工具(Python实现)
文件搜索工具能够基于名称快速定位匹配的文件和文件夹位置,比如Everything就是Windows上的一款文件搜索工具:下面我们实现一个简单的文件搜索工具。文件搜索的步骤分为两步:需要注意的是,在搜索时并不是只在用户指定的那一级目录下进行搜索,如果该目录下存在子目录,那么还需要在该子目录下进行搜索。例如,我们在D盘下创建了一个名为TestDir的目录,该目录中的文件布局如下:当我们指定在TestDir目录下以test为关键字进行查找时,我们希望的是找出TestDir目录及其子目录下,所有包含test关键字的
2022-11-14 15:17:50 2008 35
原创 坤坤音效键盘(Python实现)
坤坤音效键盘说明:1. 单独按下 $j、n、t、m$ 按键,会对应触发 “鸡”、“你”、“太”、“美” 音效。2. 连续按下 $jntm$ 按键,会触发 “鸡你太美” 的较长音效。3. 连续按下 $ngm$ 按键,会触发 “你干嘛” 的较长音效。4. 按下Esc按键,会触发 “鸡你太美版《澎湖湾》” 的长音效。5. 按下左Ctrl键,会触发 “鸡你太美版《想某人》” 的超长音效。6. 按下小键盘上的数字键或小数点键,停止播放音频并终止程序。
2022-11-04 10:52:50 12821 66
原创 Python函数
函数的定义格式一个函数可以有一个或多个形参,也可以没有形参。一个函数中可以有一个或多个return语句,执行到return语句时函数会立即执行结束,回到调用位置。Python是动态类型语言,函数的形参和返回值都不必指定类型,因此一个函数可以支持多种不同类型的参数。多个返回值此外,Python中的一个函数可以有一个或多个返回值,当有多个值需要返回时,使用,来分隔这多个返回值。
2022-10-27 14:05:04 1565 14
原创 人生重开模拟器(Python实现)
人生重开模拟器是由VickScarlet上传至GitHub的一款简单的文字网页游戏。玩家点击“立即重开”并设置角色的初始属性后,程序就会随机为玩家生成对应的人生经历。
2022-10-24 10:50:02 44834 60
原创 Python顺序、条件和循环
Python语法规定,if语句、while语句、for语句、函数体、类定义等都不能为空,如果因为某些原因写了对应无内容的语句,就需要使用pass语句来避免语法报错。上述代码的执行结果一定是“abc”,而不会出现“bca”或“cba”等结果,这种按照顺序执行的代码就叫做顺序语句。在C/C++等其他某些语言中,负奇数取余后得到的是-1,但在Python中负奇数取余后得到的是1。Python中使用缩进来表示不同的代码块,不同级别的缩进,程序的执行效果是不同的。二、打印2,4,6,8,10。
2022-10-22 13:14:34 2390 9
原创 Python入门基础
吉多•范罗苏姆(Guido van Rossum)是一个荷兰程序员,因为他名字的前三个字母是Gui,所以大家都叫他龟叔。龟叔在1989年圣诞节的时候(当时33岁),因为在家里呆着无聊,为了打发时间于是开始了Python的开发,Python的第一个正式版本发布于1991年。1991年是一个神奇的年份,Python、万维网、Vim、Qt、第一台笔记本电脑,都诞生于1991年。
2022-10-20 16:17:59 2596 29
MySQL知识总结思维导图
2023-10-27
C++知识总结思维导图
2022-12-29
坤坤音效键盘可执行程序
2022-11-04
Python基础语法PPT
2022-07-10
【C++项目设计】高并发内存池.zip
2022-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人