Review
文章平均质量分 96
基础知识
yolo0616
穷且益坚,不坠青云之志。
展开
-
总结四:数据库(MySQL)面经
MySQL的分页语法:在MySQL中,SELECT语句默认返回所有匹配的行,它们可能是指定表中的每个行。为了返回第一行或前几行,可使用LIMIT子句,以实现分页查询。-- 在所有的查询结果中,返回前5行记录。-- 在所有的查询结果中,从第5行开始,返回5行记录。总之,带一个值的LIMIT总是从第一行开始,给出的数为返回的行数。带两个值的LIMIT可以指定从行号为第一个值的位置开始。原创 2023-10-10 09:24:06 · 205 阅读 · 2 评论 -
总结一:C++面经(五万字长文)
概念:函数指针就是指向函数的指针变量。每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。定义形式如下:f = &func;函数指针的应用场景:回调(callback)。我们调用别人提供的 API函数(ApplicationProgramming Interface,应用程序编程接口),称为Call;如果别人的库里面调用我们的函数,就叫Callback。原创 2023-10-07 09:27:44 · 581 阅读 · 1 评论 -
总结二:linux面经
GDB调试:gdb调试的是可执行文件,在gcc编译时加入 -g ,告诉gcc在编译时加入调试信息,这样gdb才能调试这个被编译的文件quit:退出gdb,结束调试list:查看程序源代码list 5,10:显示5到10行的代码list test.c:5, 10: 显示源文件5到10行的代码,在调试多个文件时使用list get_sum: 显示get_sum函数周围的代码list test,c get_sum: 显示源文件get_sum函数周围的代码,在调试多个文件时使用。原创 2023-10-06 18:08:43 · 1748 阅读 · 3 评论 -
总结三:计算机网络面经
如果第一次握手消息丢失,那么请求方不会得到ack消息,超时后进行重传如果第二次握手消息丢失,那么请求方不会得到ack消息,超时后进行重传如果第三次握手消息丢失,那么Server 端该TCP连接的状态为SYN_RECV,并且会根据 TCP的超时重传机制,会等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包。原创 2023-10-06 17:05:24 · 1135 阅读 · 3 评论 -
十一、2023.10.5.计算机网络(end).11
如果第一次握手消息丢失,那么请求方不会得到ack消息,超时后进行重传如果第二次握手消息丢失,那么请求方不会得到ack消息,超时后进行重传如果第三次握手消息丢失,那么Server 端该TCP连接的状态为SYN_RECV,并且会根据 TCP的超时重传机制,会等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包。原创 2023-10-05 20:00:32 · 1200 阅读 · 4 评论 -
十、2023.10.4.计算机网络(one).10
路由可分为静态&动态路由。静态路由由管理员手动维护;动态路由由路由协议自动维护。路由选择算法的必要步骤:1)向其它路由器传递路由信息;2)接收其它路由器的路由信息;3)根据收到的路由信息计算出到每个目的网络的最优路径,并由此生成路由选择表;4)根据网络拓扑的变化及时的做出反应,调整路由生成新的路由选择表,同时把拓扑变化以路由信息的形式向其它路由器宣告。两种主要算法:距离向量法(Distance Vector Routing)和链路状态算法(Link-State Routing)。由此可分为距离矢量原创 2023-10-04 20:29:40 · 1343 阅读 · 4 评论 -
九、2023.10.3.Linux(end).9
死锁: 是指多个进程在执行过程中,因争夺资源而造成了互相等待。此时系统产生了死锁。比如两只羊过独木桥,若两只羊互不相让,争着过桥,就产生死锁。产生的条件:死锁发生有四个必要条件:(1)互斥条件:进程对所分配到的资源不允许其他进程访问,若其他进程访问,只能等待,直到进程使用完成后释放该资源;(2)请求保持条件:进程获得一定资源后,又对其他资源发出请求,但该资源被其他进程占有,此时请求阻塞,而且该进程不会释放自己已经占有的资源;原创 2023-10-03 22:08:40 · 573 阅读 · 2 评论 -
八、2023.10.2.Linux(二).8
孤儿进程:是指一个父进程退出后,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并且由init进程对它们完整状态收集工作。是指一个进程使用fork函数创建子进程,如果子进程退出,而父进程并没有调用wait()或者waitpid()系统调用取得子进程的终止状态,那么子进程的进程描述符仍然保存在系统中,占用系统资源,这种进程称为僵尸进程。如何解决僵尸进程:(1)一般,为了防止产生僵尸进程,在fork子进程之后我们都要及时使用wait系统调用;原创 2023-10-02 20:02:08 · 222 阅读 · 3 评论 -
七、2023.10.1.Linux(一).7
GDB调试:gdb调试的是可执行文件,在gcc编译时加入 -g ,告诉gcc在编译时加入调试信息,这样gdb才能调试这个被编译的文件quit:退出gdb,结束调试list:查看程序源代码list 5,10:显示5到10行的代码list test.c:5, 10: 显示源文件5到10行的代码,在调试多个文件时使用list get_sum: 显示get_sum函数周围的代码list test,c get_sum: 显示源文件get_sum函数周围的代码,在调试多个文件时使用。原创 2023-10-01 21:44:19 · 199 阅读 · 2 评论 -
五、2023.10.1.C++stl.5
容器可以用于存放各种类型的数据(基本类型的变量,对象等)的数据结构,都是模板类,分为顺序容器容器并非排序的,元素的插入位置同元素的值无关。包含vector、deque、list,具体实现原理如下:(1)vector 头文件动态数组。元素在内存连续存放。随机存取任何元素都能在常数时间完成。在尾端增删元素具有较佳的性能。(2)deque 头文件双向队列。元素在内存连续存放。随机存取任何元素都能在常数时间完成(仅次于vector)。在两端增删元素具有较佳的性能(大部分情况下是常数时间)。原创 2023-10-01 19:24:49 · 128 阅读 · 2 评论 -
四、2023.9.30.C++面向对象end.4
类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更明确的限定:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。原创 2023-09-30 21:26:55 · 532 阅读 · 2 评论 -
三、2023.9.29.C++面向对象.3
面向对象是一种编程思想,把一切东西看成是一个个对象,把这些对象拥有的属性变量和操作这些属性变量的函数打包成一个类来表示。面向过程和面向对象的区别根据业务逻辑从上到下写代码将数据与函数绑定到一起,进行封装,加快开发程序,减少重复代码的重写过程。只定义了析构函数,编译器将自动为我们生成拷贝构造函数和默认构造函数。默认构造函数和初始化构造函数。在定义类的对象的时候,完成对象的初始化工作。public://默认构造函数num=1001;age=18;原创 2023-09-30 18:35:53 · 146 阅读 · 3 评论 -
二、2023.9.28.C++基础end&&C++内存end.2
malloc采用的是内存池的管理方式,以减少内存碎片。当用户申请内存时,直接从堆区分配一块合适的空闲快。采用隐式链表将所有空闲块,每一个空闲块记录了一个未分配的、连续的内存地址。(2)用malloc或new申请内存之后,应该立即检查指针值是否为NULL。第二:将分配的内存的指针以链表的形式自行管理,使用完毕之后从链表中删除,程序结束时可检查改链表。BSS段通常是指用来存放程序中未初始化的或者初始化为0的全局变量和静态变量的一块内存区域。(3)内存分配成功并且已经初始化,但操作越过了内存的边界。原创 2023-09-28 19:55:09 · 379 阅读 · 2 评论 -
一、2023.9.27.C++基础.1
概念:函数指针就是指向函数的指针变量。每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。定义形式如下:f = &func;函数指针的应用场景:回调(callback)。我们调用别人提供的 API函数(ApplicationProgramming Interface,应用程序编程接口),称为Call;如果别人的库里面调用我们的函数,就叫Callback。原创 2023-09-27 20:13:20 · 186 阅读 · 3 评论