- 博客(89)
- 收藏
- 关注
原创 数据库----用户管理
root给普通用户权限,普通用户才能对表进行操作,数据库也是一样,得先让普通用户看到数据库,需要select或insert等,select换成all,就是获取所有权限,每次给权限后,刷新一下,然后重新use就可以了。host: 表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆。再重登一次就查不了了,但是它已经use不了,但还是可以查询,这个特殊,重登就好。MySQL中的用户,都存储在系统数据库mysql的user表中。刚创建的用户没有任何权限。
2026-05-11 20:38:31
42
原创 数据库---表的内连和外连
1. 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,前面的查询都是内连接,也是在开发过程中使用的最多的连接查询。1. 查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来。对stu表和exam表联合查询,把所有的成绩都显示出来,列出部门名称和这些部门的员工信息,同时列出没有员工的部门。如果联合查询,左侧的表完全显示我们就说是左外连接。如果联合查询,右侧的表完全显示我们就说是右外连接。即使这个成绩没有学生与它对应,也要显示出来。显示SMITH的名字和部门名称。
2026-04-25 15:51:06
448
原创 数据库 ---- 表的约束
1. 这里的自增长就是你可以忽略主键列的插入,也可以插入null,因为你不写id,默认插入id+1,相当于default,如果你显示写了id,以你写的id为准,然后下次默认插入的就是id+1,select last_insert_id(),查询的是最后一次插入id的值。比如,班级表里有1,2班,然后学生表里有学生在一班,此时你可以把一班的c语言班的班级表删除掉,但是不符合逻辑,学生表里学生在一班,而班级表却没有一班,或者在学生表里插入信息时,插入了一个班级表里,不存在的班,都是不符合逻辑的。
2026-04-23 21:28:52
336
原创 Linux----守护进程
如果调用进程原来是进程组组长,则会报错,为了避免这种情况,通常的使用的方法是先调用fork创建子进程,父进程终止,子进程继续执行,因为子进程会继承父进程的进程组ID,而进程ID则是新分配的,就不会出现错误的情况,所以守护进程也是孤儿进程的一种,所以新建一个会话,让服务器这个进程组到新建的这个会话里面,但一般是这个进程组只有一个进程,这个进程独占该进程组,我们把这个进程叫守护进程也叫精灵进程,此时关闭xshell,就不会影响服务器了。
2026-04-08 19:30:33
355
原创 Linux----序列化和反序列化
TCP是面向字节流的,所以可能会write一直在写,写了比如5个完整报文,而TCP在发时却只发了四个半,又或者写了2个完整的报文,但是只设置读了1个字节(strlen(buffer)),都会出现问题。UDP不存在这些问题,它是面向数据报的,发送一个报文读取一个,并且可以保证报文的完整性,w端必须等读端把数据读完再写,读端必须等w端写完再读,就是同步,UDP的原理跟TCP类似。TCP连接既有发送缓冲区,又有接受缓冲区,所以,在内核中,可以在发消息的同时,也可以收消息,即全双工。
2026-04-08 19:30:07
453
原创 C++----哈希表
{63,31}看起来没有关联的值,如果M是16,也就是2的4次幂 ,那么计算出的哈希值都是15,因为63的二进制后8位是00111111,31的二进制后8位是00011111,因为后四位相同,如果是10的x次幂 ,就更明显了,保留的都是10进值的后x位,如:{112,12312},如果M是100,也就是10的2次幂 ,那么计算出的哈希值都是12冲突。如果是2的x次幂 ,那么key%2的x次幂本质相当于保留key的后X位,那么后x位相同的值,计算出的哈希值都是⼀样的,就冲突了。
2026-02-21 15:59:04
563
原创 实现myset和mymap
如果是25,30就是下一结点,但如果是15,继续向上孩子是父亲的右,所以10不是15的下一结点,但18是10的左父亲,所以18是15的下一结点。1. 如果该结点 (30) 的右子树不为空,则该右子树的最左结点 (35)1. --end(),特殊处理,走到中序最后⼀个结点,整棵树的最右结点。先走到50,–迭代器,在打印,此时就算没有反向迭代器也可以实现倒着走。2. (40)左子树不为空,则取该结点的左子树的最右结点。2. 如果该结点的右子树为空,孩子是父亲左的那个祖先。
2026-02-21 15:58:52
66
原创 Linux----文件系统
把多个块放在不同区域叫分区,管理块的方式都是一样的,也就是把分区1管理好了,分区2和3也就管理好了,再把一个分区分成多个组,假如分区大小是300GB,分成10个组,每个组就是30GB,把这一个组的30GB管理好,因为每个组的管理方法一样,所以一个分区就管理好了,所以管理好组,磁盘就管理好了。记录的信息主要有:bolck和inode的总量,未使用的block和inode的数量,⼀个block和inode的大小,最近⼀次挂载的时间,最近⼀次写入数据的时间,最近⼀次检验磁盘的时间等其他文件系统的相关信息。
2026-02-21 15:58:23
891
1
原创 C++----异常
5. 抛出异常对象后,会生成⼀个异常对象的拷贝,因为抛出的异常对象可能是⼀个局部对象,所以会生成一个拷贝对象,这个拷贝的对象会在catch语句后销毁(这里的处理类似于函数的传值返回)2. 捕捉异常类型一样时,离抛异常调用链近的优先调用,这里把Func()里的捕捉异常类型改成 string &errmsg时,就会调用Func里的catch。4. ⼀旦程序开始执行异常处理程序,沿着调用链创建的对象都将销毁,这里在跳到main函数栈帧里执行catch之前,会先把Func里的对象都销毁。
2026-02-21 15:58:00
68
原创 Linux----缓冲区
上图中的外设,每个设备都有自己的read、write,但⼀定是对应着不同的操作方法,但通过struct file 下 file_operation 中的各种函数回调,让我们开发者只用file便可调取Linux系统中绝大部分的资源!.因为/a.out是向显示器文件写入,所以行刷新,四条消息都打印出来了,而向log.txt文件写入时,在fork的时候,那三条消息还在缓冲区里,因为缓冲区没满不会刷新,fork完成后,父子进程各自刷新,而write是直接向内核缓冲区写入的,不存在用户向内核刷新的问题。
2026-02-05 15:37:09
451
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅