自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 收藏
  • 关注

原创 C++实现简易版http server

1.实现了GET和POST方法的HTTP request和HTTP respond的构建和发送,使服务器可以完成基本通信功能。2.使用了线程池技术,使服务器可以一次接收更多的链接和加快了服务器处理数据的速度。3.实现了简易的CGI,使得服务器可以完成接收表单提交的数据,然后返回后台处理好的数据给用户。4.cgi功能分别实现了简易计算器,使用MySQL往database插入数据两个功能。5.实现了简易的错误处理,比如若访问的资源不存在,可以返回404 NOT FOUND。

2024-03-04 00:13:09 1476

原创 C++实现网站内搜索功能

因此我们现在要开始分词了。只有先分词,我们才能知道关键字在文档中是否出现,出现几次等问题。

2024-01-07 17:19:59 1093

原创 画图解释一个汇编小例子

这里写的是intel x86的汇编指令,因此这句话的意思是把esp寄存器内的地址复制一份到ebp寄存器内。leave把add的最上面那个栈内元素,也就是上一个函数栈帧的ebp地址获取后弹出了,现在ebp回到了上一个函数栈帧的ebp位置,也就是caller的ebp位置。这一步的作用是保存上一个函数栈帧的基地址,在该函数(caller)结束之后,可以通过这一个基地址找到上一个函数的函数栈帧基地址。这里要说一下add函数栈帧是如何找到caller函数栈帧传入的temp1和temp2两个参数的。

2023-03-21 16:03:46 433 1

原创 质因数模板,欧拉函数(普通版)模板

质因数 欧拉函数

2022-12-13 10:55:18 315

原创 树状数组求逆序对

树状数组求逆序对

2022-12-12 16:51:06 567

原创 MAX MIN(LC统计定界子数组个数)

MAX MIN

2022-10-16 22:28:02 543

原创 LeetCode314周赛

314周赛

2022-10-09 19:43:22 200

原创 找到所有好下标

最长上升连续子序列

2022-09-25 19:52:39 251

原创 按位与最大的最长连续子数组

连续区间性质维护

2022-09-25 19:16:52 321

原创 leetcode第311场周赛题解

leetcode第311场周赛题解

2022-09-18 16:36:28 685

原创 leetcode股票交易系列---状态机相关题目

状态机

2022-09-16 10:41:41 202

原创 01,完全,多重,混合,分组背包相关题目

背包学习笔记

2022-09-03 16:47:58 182

原创 django启动命令,项目文件介绍,简单配置项介绍,url处理和视图函数

django学习笔记

2022-09-01 21:52:10 770

原创 数字三角形模型相关题目

数字三角形模型相关题目

2022-08-24 21:09:09 109

原创 红黑树插入代码实现(框架)

前言:个人观点,所谓手撕红黑树插入,就是记性好而已,理解并背下框架即可。插入代码量在200行左右红黑树特征root是黑色的若一个节点是红色的,则它两个孩子是黑色的。(没有连续的红节点)ps:黑色节点可以连续每条路径的黑色节点数量相等(一条路径指从root到某一个叶子节点)最长路径不超过最短路径的2倍红黑树插入流程这是总体流程,如果可以看着这张图写出红黑树插入,后面就不用看了。ps:强调两点1.插入的节点一定是红颜色的,因为要保证每条路径的黑色节点个数相同,如果插入了一个黑色的节.

2022-05-21 08:00:00 384 2

原创 C++11和POSIX线程库线程互斥与线程同步编程(锁,条件变量,信号量)

文章目录完成两个线程通过条件变量实现交替打印的控制锁+条件变量二元信号量对比一下条件变量和二元信号量按序打印条件变量版二元信号量版生产者消费者条件变量+锁(C++11)多元信号量(有点绕)条件变量和多元信号量的对比前言:用一些习题来说明这三个东西怎么写。说实话,编写线程同步代码并不简单。完成两个线程通过条件变量实现交替打印的控制锁+条件变量不管是C++11还是POSIX,套路都是一样的首先要强调的两点:1.缓冲区队列是临界资源,因此进入就要加锁2.条件变量是临界资源,进行判断条件是否满足和

2022-05-12 22:22:24 1099 1

原创 斐波那契凤尾

题目链接题目描述:考点:模对加法没有影响这里的考点很简单,难的是这道题目的大坑。先贴代码:ac代码:#include <iostream>using namespace std;typedef long long ll;const int N = 100010;ll fib[N];int main(){ fib[1] = 1, fib[2] = 2; for(int i = 3; i < N; i++) fib[i] = (

2022-05-10 18:53:11 159

原创 分解质因数

题目描述添加链接描述考点:试除法求质因数模板: for(int i = 2; i <= n / i; i++) { if(n % i == 0)判断这是一个因数,根据数学知识,如果这是一个因数,那肯定也是一个质数 { int s = 0;数这个因数的指数 while(n % i == 0) s++,n /= i;除多少次就证明有多少次

2022-05-10 18:37:26 165

原创 Go 封装 继承 多态 万能类型interface{}

文章目录封装go的类成员表示go的成员作用域表示继承封装go的类成员表示go没有class,只有struct。struct里面就是成员变量,外面显示带有this指针的就是成员函数。格式如下:type Hero struct { Name string Ad int Level int}this指针,记得要写成指针,不然就变成拷贝了func (this *Hero) ShowName() { fmt.Println(this.Name)}func (this *H

2022-05-06 21:15:15 1056

原创 Go 数组 slice map type struct

文章目录数组和sliceslice的四种声明方式slice追加与截取map四种声明方式map的一些操作遍历删除函数传参(引用)typestruct结构体对象函数传参数组和sliceGo里面数组是指指定长度大小的数组。不像C++里面,不指定长度大小也是数组。arr1 := [10]intvar arr2 = [10]int数组在go里面,大小不一样,它的类型是不一样。它们的类型分别是[10]int和[20]intarr1 := [10]int{1, 2, 3, 4}var arr2 = [2

2022-05-06 19:45:15 775

原创 Go常量和itoa

iota只可以在常量里面使用,iota默认值是0.每隔一行它会自增1.一般用iota用来定义枚举类型例子1:普通iotaiota每次自增1iotaconst( 可以在const里面添加itoa 每行的itoa都会累加1,第一行的iota的默认值为0 BEIJING = iota//iota = 0 SHANGHAI //iota = 1 SHENZHEN //iota = 2)星期例子type Weekday intconst ( Sunday Weekday = io

2022-05-06 17:08:30 359

原创 Go导包和包的初始化

文章目录Go导包包的初始化Go导包go自己写的包编译器会自动去GOPATH/src里面查找。因此我们的包要写在src里面。包必须是一个文件夹,文件夹里面放各种.go文件。大致脉络如下:lib1是一个包,lib2也是一个包,两个包里面都有一个go文件包的初始化包可以有一个init函数,编译器对于包的调用及初始化的顺序如下:写个程序验证一下:包1package lib1import "fmt"func TestLib1() { fmt.Println("lib1 test")

2022-05-06 16:43:36 411

原创 C++4种类型转换

文章目录static_castreinterpret_castconst_castdynamic_castexplicitRTTIstatic_cast相近类型的转换。比如double变成int之类的模板写成转换后的类型,括号内写要转换类型的东西int a = static_cast<int>(3.14);reinterpret_cast把int*变成intint b = reinterpret_cast<int>(&a);ps:这里无法用static

2022-05-05 11:17:31 139

原创 C++智能指针

文章目录RAIIauto_ptrunique_ptrshared_ptruse_count()删除器循环引用weak_ptrRAIIRAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源.也就是说对象会自己回收资源有两个好处:不需要显式地释放资源。采用这种方式,对象所需的资源在其生命期内始终保持有效。之前讲的lock_guard和unique_lock都是采用了RAII技术。其实本质上就是把这些资源封装成一个类,创建对象

2022-05-05 10:33:08 939

原创 C++11一些新功能

文章目录初始化列表decltypedefault & delete右值引用lambda表达式lambda的原理lambda表达式的类型可变参数包包装器C++线程库threadconstructorjoin和detachatomicmutexlock_guard和unique_lockcondition_variable初始化列表对象可以用大括号来初始化int main(){ int x = { 10 }; vector<vector<int>> v = { {1,

2022-05-03 15:35:53 1742

原创 C++11右值引用

文章目录左值和右值左值,右值与引用的关系右值的特殊点左值引用的应用场景和短板移动语义关于move完美转发(&& 和 forward)总结左值和右值一般没有明确的定义。左值有以下性质:左值可以取地址左值可以修改(除了const的左值)左值可以放在等号左边,也可以放在等号右边右值有以下性质:右值不可以取地址右值不可以修改右值只能放在等号右边最重要的性质是左值可以取地址,右值不可以取地址。常量,表达式的返回值,非左值的函数返回值是右值如下:10x + y;

2022-05-02 20:32:08 1564

原创 特殊类创建

总结:特殊类创建流程 = 私有构造函数+静态成员文章目录创建一个只能在堆上创建对象的类创建一个只能在栈上创建对象的类创建一个不允许拷贝对象的类创建一个不允许被继承的类单例模式饿汉单例懒汉单例创建一个只能在堆上创建对象的类方法:先把构造函数私有,这样就不能让用户随意创建对象了。然后我们再用静态成员来进行操作。class HeapOnly{public: static HeapOnly* createObj() { return new HeapOnly(); }private:.

2022-05-02 10:18:01 361

原创 位图与布隆过滤器

位图位图就是stl里面的bitset。一个位可以记录两个状态。适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。bitset的使用bitset的[]和set,reset都是很好用的接口。[]可以让你快速在某一位中插入一个数字。set可以让你在指定位置中变成1reset可以让你在指定位置中变成0bitset的构造函数要传字符串int main(){ bitset<16> foo("0000000000000000"); foo[1] = 1; foo[

2022-05-01 20:19:07 522

原创 哈希表(开散列和闭散列)简易实现

前言:这里是用oop实现的哈希表,实现的很简易,没有实现迭代器等。用于复习这两个散列方式的思想文章目录开放寻址发(闭散列)负载因子仿函数拉链法(开散列)结构负载因子开放寻址发(闭散列)先贴代码:#include <iostream>#include <vector>using namespace std;enum state{ EMPTY, EXIST, DELETE};template<class k, class v>struct .

2022-05-01 10:42:11 258

原创 map,multimap,set,multiset的使用(仿函数的使用)

前言:讲一些平常挺少用的但是也挺重要的东西文章目录maprbegin&rend范围forinsert与[]find&count仿函数multimapset和multisetmaprbegin&rend反向迭代器,可以反向遍历map。ps:反向迭代器的迭代器类型是reverse_iterator,别写错了demo:int main(){ string a[] = { "apple", "banana", "watermelon" }; map<string.

2022-04-29 11:01:54 323

原创 二叉树前中后序遍历(非递归)框架

前言:这个框架是模仿递归的前中后序来写的,应该算是比较好背的框架了文章目录前序遍历中序后序前序遍历框架:写这个框架的时候牢记以下:cur是要遍历所有节点的指针,所有都遍历完之后cur会变长nullptr前序遍历就按照递归的思路写即可。res.push_back(cur->val) 等价于 递归中的操作下面代码等价于preorder(root->left)while(cur){ st.push(cur); cur = cur->left;}.

2022-04-28 16:02:36 876

原创 搜索二叉树代码框架(复习)

前言:复习就不想用长篇大论来解释二叉搜索了,尽量用模板化的框架来帮助写二叉搜索的增删改。对于find和insert还是好记得,但是erase确实情况太多,不多写没办法记文章目录迭代版findinserterase递归版findinserterase题目迭代版findfind步骤:比key大往右早,比key大往左找用一个cur指针像遍历链表一样去找找到返回对应的Node总结:根据二叉搜索的性质像遍历链表一样找到对应的节点。代码:node* find(const k& k.

2022-04-27 23:17:05 1258

原创 C++多态(复习用)

文章目录多态代码如何写协变和析构函数的重写final和override(C++11)重载,隐藏(重定义),覆盖(重写)多态代码如何写总结:父类用指针或引用指向子类(不用不行)子类进行虚函数重写class Person{public: virtual void f() { cout << "person" << endl; }};class Stu : public Person{public: virtual void f()//子类的virt

2022-04-26 11:49:14 144

原创 C++继承(复习用)

文章目录三种继承关系与三种访问限定符的关系父类和子类对象赋值转换(切片)隐藏的定义及和重载的区别子类的默认构造函数怎么写子类构造函数子类拷贝构造函数子类赋值运算符重载子类析构杂项(了解即可)菱形继承数据冗余和二义性虚继承三种继承关系与三种访问限定符的关系总结一下:说了3个东西,知道的可以跳过只用public继承父类不要用private成员,因为子类无法直接访问继承与访问限定符的关系是权限缩小类成员/继承方式public继承protected继承pri

2022-04-24 12:24:25 1176

原创 mysql C语言连接

文章目录库安装接口介绍mysql_init()mysql_real_connect()mysql_query()获取select结果的接口mysql_store_result()mysql_num_rows()mysql_num_fields()mysql_fetch_fields()mysql_fetch_row()mysql_close库安装C语言连接首先要安装connector,去mysql官网找找即可。不想找的话,这是链接这里下载C API这里为了用纯C,就下载难用的那个库了。根据O

2022-04-21 12:32:51 3614 3

原创 mysql事务

文章目录事务的定义原子性事务的定义事务,transaction。由一组sql语句组成。这一组的sql的目的都是相同的,都是为了干同一件事情。比如要转账,在转账方数据减去相应的钱和接收方数据加上相应的钱这两句sql语句,就是一个事务。事务有四个性质,原子性,一致性,隔离性,持久性。原子性一个事务只有没做和做完两种状态,没有中间状态。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。...

2022-04-19 21:08:09 510

原创 mysql索引

文章目录磁盘,磁道,扇区CHS和LBA(定位数据)读取数据磁盘随机访问和连续访问MySQL 与磁盘交互基本单位:Page磁盘,磁道,扇区提炼一下这张图说的话:每一圈是一个磁道,每一个磁道又被分为了一个个扇区。每个扇区存储的数据量是一样的,其中最靠中心的扇区数据密度最大CHS和LBA(定位数据)查找文件的过程就是定位扇区的过程。如何定位扇区?定位扇区的过程先定位盘面,盘面就是哪一个盘的哪一个面(每一个盘有上下两面)。定位这个盘面的磁道track(也可以叫柱面)找到track之后再定位

2022-04-16 20:53:38 1311 9

原创 B-树,B+树

B树的孩子有左父亲和右父亲,父亲又有左孩子和右孩子。且一个节点既能做左孩子也能做右孩子,很奇妙的树!文章目录B树规则定义B树的插入过程根据分裂过程记忆性质(重要)B树规则定义一棵M阶(M>2)的B树,是一棵平衡的M路平衡搜索树,可以是空树或者满足一下性质:1. 根节点关键字的数量是[1,M-1]2. 根节点孩子的数量树[2,M]3. 每个非根节点至少有M/2(上取整)个孩子,至多有M个孩子4. 每个非根节点至少有M/2-1(上取整)个关键字,至多有M-1个关键字5. 所有的叶子节点都

2022-04-16 11:06:57 2268

原创 mysql多表查询和内外连接

文章目录多表查询显示部门号为10的部门名,员工名和工资显示各个员工的姓名,工资,及工资级别自连接嵌套查询单行单列子查询多行单列子查询in(存在于集合内)all(比集合里所有元素大/小)any(比集合内任意一个大/小)多列单行子查询在from中使用子查询(多表查询+子查询 + group by)多表查询有时候我们要查找的信息在两个表里,还是拿经典测试表举例。现在想筛选出相同部门的员工,并显示它们的员工名,部门号和部门名。我们发现,员工名和部门号都在emp这张表中,但是部门名在dept这张表。因此我

2022-04-15 08:50:13 917

原创 mysql内置函数

函数的使用都要搭配select文章目录日期函数current_date()current_time()current_timestamp()date_add()date_sub()datediff()now()题目字符集函数concatsubstringlcase,ucase数学函数bin(binary)hexrand()formatceiling()floor()其他函数md5()user()database()ifnull()日期函数由于是函数,这些东西都打上括号比较好current_date(

2022-04-14 08:38:34 478

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除