- 博客(63)
- 收藏
- 关注
原创 [MySQL] 内置函数
2.要求显示exam_result表中的信息,显示格式:“XXX的语文是XXX分,数学XXX分,英语XXX分”2.md5(str)对一个字符串进行md5摘要,摘要后得到一个32位字符串。4.password()函数,MySQL数据库使用该函数对用户加密。4.截取EMP表中ename字段的第二个到第三个字符。3.database()显示当前正在使用的数据库。3.将EMP表中所有名字中有S的替换成’上海’5.以首字母小写的方式显示所有员工的姓名。1.获取emp表的ename列的字符集。
2025-04-09 17:03:58
317
原创 [MySQL] 表的约束
真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。上一小节我们就提到了约束的概念,这篇我们来系统的认识约束。
2025-04-05 16:25:18
691
原创 [MySQL]数据类型
2.当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字节],如果编码是gbk,varchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。例子:有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择(可以多选),(男,女)[单选]支持小数最大位数d是30。另外,我们存入100.0,看似是长度是4,但是系统会在插入时判断这个数字为100.00,所以还是不可以插入的。
2025-03-31 17:57:36
731
3
原创 [贪心算法] 加油站 && 单调递增的数字 && 坏了的计算器 && 合并区间 && 无重叠区间
暴力解法:两层for循环,(先写一下,优化版本就是根据暴力解法写出来的)优化:当从a位置出发到f位置的时候发现油变成负数了,,所以我们直接从f的下一个位置开始出发寻找,这样时间复杂度就变低了(这里的diff表示gas[i]-cost[i]
2025-03-26 10:39:11
424
原创 [贪心算法]买卖股票的最佳时机 && 买卖股票的最佳时机Ⅱ && K次取反后最大化的数组和 && 按身高排序 && 优势洗牌(田忌赛马)
暴力解法就是两层循环,找出两个差值最大的即可。优化:在找最小的时候不用每次都循环一遍,只要在i向后走的时候,每次记录一下最小的值即可。
2025-03-20 20:59:46
1506
原创 MySQL:数据库基础
数据库(Database,简称DB),长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据"仓库"。用来存放管理数据。
2025-03-19 22:31:17
1520
原创 [贪心算法]-最大数(lambda 表达式的补充)
我们一般使用的排序比较大小都是a>b 那么a在b的前面a=b 无所谓a<b a在b的后面本题的排序则是ab>ba 那么a在b的前面ab=ba 无所谓ab<ba a在b的后面。
2025-03-17 19:51:25
543
原创 [C语言]字符串函数模拟实现strlen,strcpy,strcat,memcpy,memmove,memset
memcpy和strcpy很像,但是memcpy可以拷贝任意类型,所以函数返回值类型和函数参数这里用的时void*将 ptr 所指向的内存块的前 num个字节都设置为指定的值 value。通常用于将一段内存初始化为特定的值。memmove和memcpy也是一样的,但是memmove可以处理源内存区域和目标内存区域有重叠的情况。strlen是获取字符串的长度以‘\0’结尾但是不包括。strcat将一段字符串追加到另一段字符串后面。上面的代码便于理解,下面的代码写起来行数更少。判断是正向赋值还是反向。
2025-03-17 17:09:14
207
原创 信号的解析
它是操作系统提供的一种同步机制,用于控制多个线程或进程对共享资源的访问,防止出现竞态条件。-> OS会把这个解释成2号信号,向目标进程发送,这也是为什么我们在运行代码的时候,ctrl +c可以直接终止进程的原因。signal调用结束,handler不是立即执行的,要受到相应的信号,才会执行。阻塞信号也是一个位图,比特位的位置表示信号编号,比特位的内容,表示是否阻塞该信号。我们碰到信号的时候,可以不立即处理它,但是这时候就我们需要把信号保存起来。这里,linux有core功能,这个功能是被默认关闭的。
2024-11-12 18:29:54
590
原创 管道与共享内存
管道的限制就是他只能在有血缘关系(父子进程)的进程中,允许互相访问,这是有局限性的,所以我们想在毫无关系的进程中允许他们相互访问,这就是命名管道的定义。总结:命名管道就是就比如这个图,通过管道让两个进程看到同一个资源,然后执行不同的任务,进程A就进行向文件中读取数据,而进程B就是向文件中写入数据。
2024-10-24 17:29:47
323
原创 进程间通信
4.进程控制:有些进程希望完全控制另一个进程的执行(如debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。如果关闭和等待是一起写的,关闭一个等待一个,那进程就无法退出,因为退出的判断是当管道中没有写端之后那就会自动关闭,3.通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)他会创建一个内存级的文件,匿名文件(管道)只能进行有血缘关系的进程,进行进程间通讯!概念:一个进程把自己的数据,能够交给另外一个进程。
2024-10-24 17:11:32
569
原创 [Linux]自定义shell详解
写之前我们先看看一个完整的shell都包括了什么$符号前面(包括这个符号)就是命令行提示符,后面就是命令行字符串了。
2024-09-19 17:21:28
684
2
原创 [Linux]进程控制详解
任何进程的最终执行情况我们用两个数字表示==(异常)信号编号+进程退出码如何让进程退出?1.main函数return2.exit(退出码)——终止进程,status(进程退出码)这个进程退出码status会在进程等待中详细的说。
2024-09-18 17:12:39
502
原创 [Linux]进程地址空间
fork之后代码共享,那存放数据的地址会是一样的吗?我们用代码来验证一下这里我们发现了一个问题,同一个变量,内容不一样但是地址是一样的。
2024-09-18 16:47:46
301
原创 [Linux] 进程优先级 && 进程的调度与切换 &&环境变量详解
main函数也是有参数的,argv为指针数组(命令行参数表),argc是数组中元素的个数,env就是环境变量表我们先来谈谈前面两个参数这里就容易看出来了,argc就是指针函数argv的参数个数,argv就是命令行参数表通过不同的选项实现不同的功能;命令行参数是linux指令选项的基础。为了方便理解我们可以写一个实现加减乘除的代码来解释一些//实现+-*/四种运算if(argc!=4)else这就是通过不同的选项实现不同的功能。
2024-09-16 11:23:41
1052
3
原创 哈希重要思想续——布隆过滤器
布隆过滤器是由布隆(Burton Howard Bloom)在1970年提出的 一种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 “我们在使用新闻客户端看新闻时,它会给我们不停地推荐新的内容,它每次推荐时要去重,去掉那些已经看过的内容。给两个文件,分别有100亿个query,我们只有1G内存,如何找到两个文件交集?注意,布隆过滤器不好做删除操作,当删除一个数之后,别的数出现误判的可能性会增大。对于布隆过滤器中他的大小要设置成多少,这也是个数学问题,可以参考此文章。
2024-06-03 19:53:23
1054
5
原创 哈希重要思想——位图详解
所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。为了方便理解我们引入一道面试题,给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。两个思路:1.排序+二分2.set+find首先40亿个整数占用多少内存?1G约等于10亿字节,40亿个整数有160亿字节,也就是大约16G左右,16G是绝对会内存超限的,所以正常的方法我们都不可以使用。
2024-05-13 17:52:20
1000
7
原创 哈希用法及其底层详解+实现
前面几章我们已经讲完了map和set的使用,及其底层,相信你已经会使用map和set了,今天我们学习hash,他可以说是map和set的亲兄弟。
2024-05-08 13:18:43
1002
5
原创 手撕红黑树(map和set底层结构)(2)
总的来说红黑树的实现和AVL树非常像,他们就是兄弟,红黑树就是把考虑的因素从平衡因子转变成了颜色。
2024-04-23 11:04:36
653
2
原创 手撕AVL树(map和set底层结构)(1)
int _bf;, _bf(0), _kv(kv){}左旋:新节点插入了较高右子树的右侧右旋:新节点插入了较高左子树的左侧双旋:左+右:新节点插入了较高左子树的右侧右+左:新节点插入了较高右子树的左侧总之一句话:理解旋转我们一定要自己去画图,一定要自己动手,才会理解深刻。
2024-04-18 11:13:47
1884
5
原创 关联式容器——map和set详解
我们前几篇文章讲了搜索二叉树,我们提到了搜索二叉树的应用就是K结构和KV结构,今天我们要提到的这两个关联式容器就是这两个结构的实现,废话少说直接今日我们的内容。总的来说map和set就是我们已经学过的知识,知识换了包装而已,这里的重点就是要理解这个下标的原理,多通过代去深化自己的知识,下一节我们就要开始讲AVL树和红黑树了。
2024-04-09 16:25:55
1106
13
原创 二叉树进阶——手撕二叉搜索树
若它的左子树不为空,则左子树上的所有节点的值都小于根节点的值若它的右子树不为空,则右子树上的所有节点的值都大于根节点的值总的来说二叉搜索树,比较难的地方就是删除部分,多画图多思考。下篇我们就要深入二叉搜索树。
2024-04-06 17:35:34
868
10
原创 详解Linux进程
进程在我们的电脑和手机上是无处不在的。例如我们windows系统下的任务管理器这一个个的启动项就是我们的进程。我们在这个图片上可以看出,进程是需要用到CPU的资源的。当我们开启一个可执行程序,那么这个可执行文件就被加载到内存中,这个可执行程序就是进程。那么在我们的CPU有那么多的进程,CPU是怎么把他们区分并执行起来呢?我们刚刚提到CPU去管理进程,这个说法是有些不对的,实际上,真正管理进程的软件是操作系统操作系统就是我们常常说的例如:windows,macOS,linux;
2024-03-31 13:55:29
789
原创 内存管理+模板初阶
我们之前说过,cpp关注的是自定义类型,所以出现这两个操作符的原因就是解决C语言中malloc不方便解决动态申请自定义类型对象初始化的问题。这里的_a是指针,它本身就有空间,而他又在stack类中,那么我们的delete就先调用析构函数先释放_a的内容,然后释放stack的空间。new和delete的语法规范十分的便于记忆,但是注意符号一定要配对申请的数组释放的时候一定是释放数组的类型,不然编译的时候就会报错。泛型编程:编写与类型无关的代码,是代码复用的一种常用手段。这样的函数我们一般用参数模板来实现。
2023-12-02 18:49:52
1706
5
原创 类和对象(4)——补充内容+DateOJ题
声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。从题目要求出发,我们先计算给出的月份距离一月的天数,然后再加上day。我们这里计算月份的天数可以用数组来计算。我们有了上一题的代码,我们就可以先算出两个(month+day)的差值然后再计算year之间的差。因为static定义的变量是所有成员共同拥有的,所以要计算n次,那么就调用n次的构造即可。这个题和上面的打印日期非常的像,我们多加一个year的考虑即可。
2023-11-25 11:46:44
209
10
原创 类和对象(3)日期类的实现
day = day;Print();cout << "日期非法" << endl;这里要注意,构造函数的声明定义分离,给缺省值的时候,只在声明的地方给,不然会出错。
2023-11-25 10:38:56
127
8
原创 C++入门,详解类和对象(1)
类和对象学习是算我们正式进入C++的学习,这一章内容还是很多的,我们需要打好这一节的基础。C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在以C++方式实现,会发现struct中也可以定义函数。在我们之前的C语言中,结构体内只能写成员变量,函数则是写在了外面,C++则对其作了优化,新引入了成员函数的概念,就是函数可以写在结构体中。// 类体:由成员函数和成员变量组成// 一定要注意后面的分号。
2023-11-15 17:50:35
141
11
原创 C++入门 1——命名空间,缺省参数
今天就要开始更新cpp的内容了,cpp就是在c的基础上进行的修改+创新,也就是说cpp改正了一些c语言的问题,这些可能会帮助我们去更简洁的去写代码,ok,接下来就是我们的正式内容定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。int val;这里的yjt就是命名空间的名字,这个自己定义。1. 然后命名空间不仅仅用来定义变量,命名空间中可以定义/函数/类型。2. 命名空间是可以嵌套实现的。int a;int b;
2023-11-11 11:41:48
163
12
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人