自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Python流控制工具

range生成的序列不会包括给定的终止值,range可以不从0开始,且可以按给定的步长递增,即使是负数步长。要按照索引迭代序列,可以组合使用range和len。​ 没错,这段代码就是这么写。continue语句同样借鉴自c语言。子句在未发生异常时执行,循环的。子句用于循环时比起 if。

2024-08-08 23:26:59 655 1

原创 Makefile 详解

背景会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂 的功能操作makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编 译,极大的提高了软件开发的效率。

2024-08-07 18:12:50 753

原创 Python基本语法

除法运算/总是返回浮点数,如果要得到一个整数结果可以使用 // 运算符,要计算余数可以使用%,而且python全面支持浮点数,混合类型运算数的运算会把整数转化为浮点数python使用**运算符计算乘方交互模式下,上一次输出的表达式会赋值给变量_。把python当作计算器使用时,用该变量实现下一步计算更为简单。

2024-08-07 15:25:30 996

原创 RAII和智能指针的实现

借此,我们实际上把管理一份资源的责任托管给了一个对象。

2024-08-06 17:16:19 405

原创 MySQL内外连接

​ 就是使用inner join table_2 on someting代替了原来的条件。​ 其实右连接也可以使用左连接来实现,就是要换一下两个表的位置即可。

2024-08-03 17:13:34 542

原创 MySQL复合查询

单行子查询是指子查询只返回单列,单行数据;多行子查询是指返回单列多行数据,都是针对单列而言 的,而多列子查询则是指查询返回多个列数据的子查询语句。​ 这里可以看到,如果只是简单的选择两张表,那最终的结果就是两张表的排列组合,这里称为笛卡尔集。自连接就是指在同一张表进行查询,将自己的表进行两次重命名,最后得到一个由两个相同的表组成的大表。子查询语句出现在from子句中,这里要用到数据查询的技巧,把一个子查询当作一个临时表来使用。子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

2024-08-02 18:45:57 522

原创 c++异常详解

实际使用中很多公司都会自定义自己的异常体系进行规范的异常管理,因为一个项目中如果大家 随意抛异常,那么外层的调用者基本就没办法玩了,所以实际中都会定义一套继承的规范体系。这样大家抛出的都是继承的派生类对象,捕获一个基类就可以了// 服务器开发中通常使用的异常继承体系public:{}protected:int _id;public:{}

2024-08-02 11:08:09 597

原创 c++function bind包装器详解

​ 对于一个ret = func(x),我们并不知道func是什么,func可能是函数指针,也可能是函数名,仿函数,lambda表达式,所以这些都是可调用的类型,这样就会导致模板的效率低下,就如同我刚写的代码,count的地址是不一样的,这就是说函数模板实例化出来了多份,而包装器就可以很好的解决这个问题。

2024-08-01 09:27:33 809

原创 超详细的MySQL CRUD 并配备了大量的测试用例, 包教包会

​ 从这里我们可以看出,update不仅可以使用where进行挑选,而且可以使用order by + limit,就是先选出我们要进行更改的行,然后再进行update。​ 这里有一个注意到点就是哪一个先运行,这里是先选出总分<20的,然后在进行显示,所以显示的是后运行的,所以不能使用别名。​ 条件筛选的阶段是不同的,where是对具体的任意列进行条件筛选,having是对分组聚合之后的结果进行条件筛选。​ 这里排序是可以使用别名的,因为排序是先选择在进行排序。​ 这里是可以显示部门的,因为它是分过组的。

2024-07-31 21:51:37 1326

原创 c++可变参数模板

​ 上面的参数args前面有省略号,所以它就是一个可变模版参数,我们把带省略号的参数称为“参数包”,它里面包含了0到N(N>=0)个模版参数。我们无法直接获取参数包args中的每个参数的, 只能通过展开参数包的方式来获取参数包中的每个参数,这是使用可变模版参数的一个主要特 点,也是最大的难点,即如何展开可变模版参数。由于语法不支持使用args[i]这样方式获取可变 参数,所以我们的用一些奇招来一一获取参数包的值。

2024-07-31 08:57:18 330

原创 二分算法及其公式

​ 这是我最开始写的代码,最开始其实我不屑于看什么模板,感觉这些用if else 语句都可以解决,但多做了几道发现if else语句会让你的代码变得非常的臃肿,而且有一种面向测试用例编程的感觉,所以在在这里我想斗胆给各位好好讲一下二分查找算法。为什么不是left <= right,大家可以看下图,如果此时ret > target这是就会执行第二种语句,right=mid,那就会造成死循环。mid = left + (right-left)/2 这种情况是如果只有两个元素会找左边的那一个。

2024-07-31 08:54:53 534

原创 c++11类的新功能

如果你没有自己实现移动赋值重载函数,且没有实现析构函数 、拷贝构造、拷贝赋值重载中 的任意一个,那么编译器会自动生成一个默认移动赋值。默认生成的移动构造函数,对于内 置类型成员会执行逐成员按字节拷贝,自定义类型成员,则需要看这个成员是否实现移动赋 值,如果实现了就调用移动赋值,没有实现就调用拷贝赋值。(默认移动赋值跟上面移动构造 完全类似)如果你提供了移动构造或者移动赋值,编译器不会自动提供拷贝构造和拷贝赋值。

2024-07-30 08:28:38 395

原创 c++完美转发

​ 因为这里我没有写左值引用的Insert,这里如果没有进行完美转发的话,PushBack和PushFront就会调用左值的Insert,从而会进行深拷贝,这样的效率并不是很高。关于右值引用与移动构造请看这里。

2024-07-30 08:26:50 339

原创 MySQL索引

auto_increment: 当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值 -> 通常与主键搭配,作为逻辑主键。​ 可以看到,当我们没有插入id时,因为有auto_increment 所以每次插入都会。​ 这里像删除主表中的某个元素,就要保证从表中没有元素是绑定在这个主表上的。foreign key (字段名) references 主表(列)​ 唯一键允许为空,而且可以多个为空,空字段不做唯一比较。

2024-07-29 14:19:05 382

原创 右值引用与移动构造详解

可能可以对它赋值,左值可以出现赋值符号的左边,右值不能出现在赋值符号左边。也是一个表示数据的表达式,如:字面常量、表达式返回值,函数返回值(这个不能是左值引 用返回)等等,右值可以出现在赋值符号的右边,但是不能出现出现在赋值符号的左边,右值不能 取地址。->如果返回的是一个局部作用域的对象就不能使用引用返回,但是使用传值返回的话就会进行一份深拷贝,这对于追求极值性能的c++来说不是很可取,所以因右值引用而产生的移动构造就起了作用,它可以很好的解决传值返回深拷贝的问题。如果没有移动构造的话,结果是这样的。

2024-07-29 09:55:22 492 1

原创 位图与布隆过滤器

布隆过滤器是一个位图结构,如:然后根据多个哈希函数对要存储的值进行计算,然后得到多个哈希值,再将对应位置的值置1eg:​ 如我想存储百度,就用三个哈希函数计算出3个哈希值,然后将其置1,再插入Tencent,在进行计算和置1这时在进行查询时就将要查询的值同样进行计算然后判断是不是所有的结果都为1,如果是那么就可能存在(因为可能你想存的值也是其他几个数据想存储的,这样就会导致误判),如果有一个不为1就一定不存在。

2024-07-28 19:01:16 1037

原创 使用拉链法实现哈希

​ 通过结构的分析我们不难看出使用开散列比开放定址法的好处在于减少了因哈希冲突而导致的额外寻找,在某中意义上实现了存储位置与关键字的真正对应,但是开散列仍然需要扩容,也就是还需要负载因子,因为可能很多数据映射在同一个桶中导致一个链表过长,扩容的目的可以降低各个桶的长度,从而增加查找速度。

2024-07-28 18:26:20 412

原创 友元模板类的使用

这里最重要的是。

2024-07-27 15:52:43 233

原创 MySQL表的约束

站在正常的业务逻辑中: 如果班级没 有名字,你不知道你在哪个班级 如果教室名字可以为空,就不知道在哪上课 所以我们在设计数据库 表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。​ 如果用户像插入数据,但此时设置了not null,那么是不能插入null的,但如果用户此时忽略了这一列,那么在插入时就会使用默认值进行插入。这里就可以看到int(5) b int (10),其中这个位是可以自行设置的,如果插入的元素没有到达这么多位,就在前面补零,如果超过了就不处理。

2024-07-26 14:30:42 611

原创 MySQL数据库备份

​ mysqldump -P3306 -u -root -p 密码 -B 数据库名 > 数据库备份的路径eg:这样就会在当前路径生成一个.sql文件,如果你好奇的打开它就会发现所有的创建语句都在这里面。

2024-07-26 13:31:32 410

原创 使用开放定址法实现Hash

比较在我们之前学习的顺序结构和平衡树中,,因此当我们要查找一个元素时,要进行多次关键码的比较。顺序表的时间复杂度是O(N),搜索树为树的高度,平衡搜索树为O(log_2 N),它们搜索的效率取决与元素的比较次数。

2024-07-25 21:40:49 1183

原创 MySQL数据类型

MySQL数据类型整型数据类型大小说明BIT(M)M为位数,默认是1二进制数,M的范围从1到64,存储数值的范围从0到2^M-1TINYINT1字节SMALLINT2字节INT4字节BIGINT8字节整型的使用与c/c++中普通的整型几乎一样,没有太多要注意的点浮点型数据类型大小说明FLOAT(M, D)4字节,单精度,M指定长度,D指定小数位数,会发生精度丢失DOUBLE(M,D)8字节

2024-07-25 15:10:40 298

原创 c++17

是C++17中引入的一个类模板,它允许在变量中存储值或不存储值,这类似于其他编程语言中的 “可选类型” 或 “空安全类型”。c++17之前只有内联函数,现在还有内联变量 -> 使得c++类中的静态成员变量在头文件中可以进行初始化操作。主要用于表示一个变量可能有值,也可能没有值的情况,从而避免了使用特殊值或指针来表示缺失的值。c++17之前的if语句不可以在if()中对变量进行初始化,但是c++17之后可以。使用结构化绑定,可以帮助我们更好的使用结构里面的值。包含一个值,可以使用。

2024-07-25 08:55:37 353

原创 MySQL库操作和表操作

显示当前数据库。

2024-07-24 16:45:32 910

原创 c++14新特性

c++14相比于c++11增加了很多新的特性,我在这里举几个我认为比较有用的讲解一下。

2024-07-24 09:50:47 313 1

原创 c++红黑树插入实现

RED,BLACK:_kv(kv),_col(RED),{}同样的三叉链结构,只是将AVLTree的bt变成col这里新插入的节点的默认颜色是红色 -> 因为如果是黑色,那么每插入一个新的节点都会破坏性质4,但是如果新插入的节点是红色节点则有可能会破坏性质3,有可能不破坏。

2024-07-23 21:10:00 274

原创 数据库基本概念

如果只是为了存储数据,那么使用文件就可以了,为什么还要搞一个数据库呢?文件存储有一下几个缺点为了解决以上问题,专家们设计出更加利于管理数据的软件–数据库,它能更有效的管理数据。数据库可以提供远程服务,即通过远程服务来使用数据库,因此也称为数据库服务器。

2024-07-23 16:25:22 212

原创 weak_ptr解决循环引用问题

每个节点的next和prev指针都分别增加了被指向节点的引用计数,这样就形成了一个循环引用,导致这些节点的引用计数永远都不会将为0,因此这些节点永远都不会被释放。auto prev_node = current->_prev.lock()进行后续的连接,lock()返回的是shared_ptr。注:由于weak_ptr没有operator*()和operator->()所以在连接是使用。weak_ptr不会增加被指向对象的引用计数,这样可以打破循环引用,确保对象可以被正确释放。

2024-07-23 10:24:23 198

原创 c++11智能指针

shared_ptr还提供了一些类成员函数,其中get()可以获得shared_ptr所包含的原生指针,reset如果没有实参,会将当前调用对象的对内存引用计数-1,同时将当前对象置为空指针,如果有对象,将当前shared_ptr指向参数,并将原始空间的智能指针-1,use_count()获得当前shared_ptr的引用计数, operator*()可以获得当前指针指向的数据, 其余函数请参考官方文档了解详情。同样,当 weak_ptr 指针被释放时,之前所指堆内存的引用计数也不会因此而减 1。

2024-07-23 09:53:54 1034 1

原创 AVLTree实现

总结: 假如以pParent为根的子树不平衡,即pParent的平衡因子为2或者-2,分以下情况考虑pParent的平衡因子为2,说明pParent的右子树高,设pParent的右子树的根为pSubR当pSubR的平衡因子为1时,执行左单旋 当pSubR的平衡因子为-1时,执行右左双旋pParent的平衡因子为-2,说明pParent的左子树高,设pParent的左子树的根为pSubL。

2024-07-22 23:01:55 1090 2

原创 MySQL客户端命令一节将.sql文件导入MySQL

在连接到服务器之后可以使用help或者\h来查看命令列表,可以根据需要自行测试,\d,\t,\T都比较常用help content可以查看关于MySQL数据库使用的具体帮助,包括用户管理、SQL语法、数据类型、组件等相关内容列表。

2024-07-22 13:31:01 940

原创 腾讯云服务器在重启之后出现连接不上的问题

不知道大家有没有代码调崩之后连接不上云端最后重启云服务器的经历,我在重启云服务器之后就无法使用xshell进行连接,22端口等也打开了,最后问客服知道是网卡问题,输入sudo dhclient 就可以解决(是在云服务器平台提供的vpn登录中输入)

2024-04-30 18:17:58 114 1

原创 解决从windows向vim中粘贴出现格式错误的问题

在window中有时我们进行复制东西,然后想将它粘贴到vim中,有时会出现每一行前面都有很多的空格,这样很影响我们阅读代码,对于python这样的语言都无法编过,最近我做cs61a时复制测试用例就遇到了这样的问题,上网查之后解决方法也很简单,就是在vim命令行中输入set paste命令。,这样就解决了复制出现格式不匹配问题。

2024-04-21 20:06:02 206 1

原创 2024 CS61A中的lab4中的BuyFruit

只要理解了for循环的设计,其余的代码都是很好想的。

2024-04-18 17:28:28 139 2

原创 CS61A中Dis4中的sum函数

我们要做的是要不重不漏的找到所有的数组并将其返回,所以我们可以用k历遍1到n(这里包含n)然后将k作为列表的第一个式子,同时rest表示剩下的式子,这时我们就是用递归,将n- k和m作为参数传递给sums,最后我们会得到一个列表,这个列表中包含很多子列表,都是和为n - k的列表,为了满足题目要求,我们可以将空链表和rest[0]不等于k的列表加到k的后面,这样我们就得到了想要的结果,如果看到这里还是不理解为什么这样就可以了,可以使用python tutor这个工具来帮助你了解更多细节。

2024-04-17 22:09:39 315 7

原创 浮点数在内存中的存储

相信大家对与整数在内存中的存储都不陌生,整数在内存中是以二进制补码的方式进行存储的,那补码与源码的转换这节博客不做讲解,有兴趣的小伙伴可以上网查一下,比较简单。

2023-11-29 08:05:47 43 2

原创 特殊的回文数

各位好久不见,双十一不知道大家有没有剁手啊,那么今天我将给大家讲一下一种特殊的回文数和如何用辗转相除法来求两个数的最小公约数。

2023-11-01 22:21:58 51 1

原创 扫雷游戏完整实现

这里是头文件的引用要有这些代码的引用才可以实现完整的代码逻辑。这就是主要的game函数,这里面有详细的代码实现和注意事项。这是第一个.c文件,里面记录了代码的逻辑和大致 的功能。

2023-10-30 20:56:28 57 3

原创 循环结构详解

今天我来为大家详细讲解一下循环结构,具体内容有:for循环以及while,do while和for中的break与continue。

2023-10-24 20:54:49 49

原创 牛客网刷题总结

今天我们来看一下这几天在牛客网上刷的一些题目,以及从中学到的一些知识和写代码的技巧,让我们来看一下吧。

2023-10-18 21:17:05 66

空空如也

空空如也

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

TA关注的人

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