- 博客(65)
- 收藏
- 关注
原创 解决【远程主机可能不符合 glibc 和 libstdc++ Vs code 服务器的先决条件】
可能是因为vscode不支持远程操作系统的版本,要么升级操作系统要么回退vscode版本。
2025-04-11 10:59:01
212
原创 算法刷题--动态规划
暴力破解版本,利用那个前缀和的pre[i]-pre[j-1]来解决从j到i之间子数组的和的问题,但超出时间限制。原则上来讲是没问题的。给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。这个就是考虑,当新的元素进来的时候,最大的是加入前缀还是最大的是他自己,动态规划最主要的就是推方程了。子数组是数组中的一个连续部分。
2025-03-24 14:20:45
160
原创 算法刷题--子串
每当遍历到一个新的i的时候,找一下已经存的unordered_map里面有没有键为pre[i]-k的,如果有,那么其值的个数就是找到的子串个数。如此遍历i,得到结果。也就是寻找pre[j-1]等于当前数组i下的pre[i]-k的个数。给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。这个题就用哈希+前缀和的思想解决。pre是一个哈希表,存放出现过的前缀和以及其出现的次数。子数组是数组中元素的连续非空序列。
2025-03-24 11:13:28
237
原创 内存池项目
在page层是允许这种情况,在没有==请求的numpages时,允许分配>numpages的span,切割出需要的numpage页后返回。这么做的好处是,如果只允许分配完全匹配的span,反而会导致内存利用率降低;通过允许分配更大的内存可以减少向系统申请内存的频率。
2025-03-20 21:39:40
741
原创 MySQL 简记
mysql中的数据存储的结构是B+树那么B+树的树结构like this:然后mysql中的数据存储是这样的:其实在mysql里面是要比uuid要好的,原因是因为,当每次插入数据的时候,直接向下、向下一页去插入就好了;如果说不是自增主键,那么当一页数据存满,新插入的数据主键大小应该是在旧的页上时,就需要挪动原始的旧数据的最后一个,插入到新的一页,然后将新插入的数据插入到旧的也里面中,这伴随着系统的消耗。
2025-03-20 20:24:30
716
原创 解决vscode连接失败linux服务器问题--ssh试图写入的管道不存在
最近重新配置了一下linux环境,但服务器的ip是没变的,这下怎么样都不能再连接到原来的服务器上了,折腾了我一个小时。原因,电脑上存储了旧的远程服务器的信息,不匹配了。这样就可以清除原始主机的信息了。
2025-03-18 14:46:34
175
原创 C++特性——RAII、智能指针
对于定义的局部变量,当作用域结束之后,就会自动回收,这没有什么问题。当时用new delete的时候,如果new了一个变量,但却没有delete,这会造成内存泄露。特别是当大型项目,会使用多个指针指向同一块内存区域的时候,什么时候释放这块指针所指向的内存区域就成了一个问题。智能指针就是解决这个问题的办法,他的思想就是当你定义了一个智能指针,可以像普通指针一样使用*⃣️来获取里面的内容,当用其他的智能指针再次指向这块区域的时候,会有一个计数器。
2025-03-16 23:23:14
946
原创 计算机网络开发(3)——端口复用、I\O多路复用
由于有一个MSL,所以上一秒关闭的服务器,可能之前的端口还未释放;又或者是程序突然退出系统没有释放端口,导致端口被占用。当有新的服务想要用这个端口的时候,会出现错误:服务会出现。
2025-03-11 21:01:48
1061
原创 算法刷题--贪心算法
其实也没啥要点,就是求局部最优解,完事了将局部最优解汇总、筛选、max\min之类的,获得全局最优解,每一次都选择最优的,这个就是贪心算法。
2025-03-11 16:13:29
1463
原创 TCP三次握手,四次挥手;多进程、多线程实现并发服务器
SYN、ACK是TCP协议头里面的标志位同步仅在三次握手建立 TCP 连接时有效。当 SYN = 1 而 ACK = 0 时,表明这是一个连接请求报文段,对方若同意建立连接,则应在相应的报文段中使用 SYN = 1 和 ACK = 1。因此,SYN 置1 就表示这是一个连接请求或连接接受报文ACK:确认 ACK:仅当 ACK=1 时确认号字段才有效,TCP 规定,在连接建立后所有传达的报文段都必须把 ACK 置1ack。
2025-03-08 22:21:57
1421
原创 计算机网络(1) 网络通信基础,协议介绍,通信框架
应用层:应用层是 TCP/IP 协议的第一层,是直接为应用进程提供服务的对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了 SMTP 协议、万维网应用使用了 HTTP 协议、远程登录服务应用使用了有 TELNET 协议应用层还能加密、解密、格式化数据应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源传输层:作为 TCP/IP 协议的第二层,传输层在整个 TCP/IP 协议中起到了中流砥柱的作用。
2025-03-05 16:01:50
1646
原创 多线程开发
线程是允许程序并发执行多个任务的机制一个进程可以包含多个线程进程是CPU分配资源的最小单位,线程是操作系统调度运行的最小单位(LWP),在Linux下,线程的本质仍然是进程ps -lf pidpid是进程号一般情况,main函数在的线程成为主线程,其余成为子线程。
2025-03-04 16:41:50
888
原创 八股速记-进程与线程的区别、URL从输入到页面展示发生了什么
进程是系统的资源分配和调度的最小单位线程是系统运算调度的最小单位线程是进程的子任务一个进程至少有一个线程,一个进程可以有多个线程进程的创建和销毁消耗的资源比较大,因为每一个进程都有自己独立的内存空间,就算fork一个子进程,在写时复制的机制下,还是会提前复制一些内核区的信息而线程由于共享同一块内存,创建和删除只需要消耗少量的上下文,因此资源消费更少进程因为拥有自己独立的内存空间,所以进程间通信需要借助特殊的手段例如管道 共享内存 信号等方式而线程由于是同一块内存,可以直接通过访问内存数据进行通信进
2025-03-04 10:10:46
333
原创 linux--多进程开发(7) 信号、相关函数、信号集及其操作和捕获、SIGCHLD解决僵尸进程
用户不能对系统默认的信号集进行直接操作,但是可以访问,或者是用自定义的信号集对它简介操作。类似类里面的隐私成员变量的保护。总共有5个sigempty清空信号集、sigfillset设置信号集全为1、sigaddset添加某个为1、sigdelset设置信号集某个信号为0、判断信号集某个信号为1否* 使用`man 3 sigemptyset`查看帮助* 功能:清空信号集中的数据,将信号集中的所有的标志位置为0* 参数:`set`,传出参数,需要操作的信号集* 返回值:成功返回0, 失败返回-1。
2025-03-02 13:20:38
898
原创 linux--多进程开发(5)--进程间通信(IPC)、linux间通信的方式、管道
每两个进程之间都是独立的资源分配单元,不同进程之间不能直接访问另一个进程的资源。但等,因此需要。
2025-02-25 22:41:50
333
原创 linux--多进程基础(2)GDB多进程调试(面试会问)
当detach-on-fork是默认也就是on的时候,info inferiors只会显示一个进程,因为另一个进程已经执行完毕,销毁。当在多进程调试的时候,默认是调试哪个进程,另一个进程就继续运行。默认是on,如果是off,调试当前进程的时候,其他进程被GDB挂起,就停住。一般默认情况下,GDB调试都是针对父进程调试的。将其中的命令记住就行。
2025-02-24 22:58:20
294
原创 linux-多进程基础(1) 程序、进程、多道程序、并发与并行、进程相关命令,fork
程序与进程的关系:一个程序可以用来创建多个进程。程序是一个文件,占用磁盘的空间,进程运行的时候,内核会分配CPU和内存给进程当作资源。从内核的角度看,进程是由。
2025-02-24 21:51:45
717
原创 算法刷题-字符串-151.反转单词
给一串字符串,里面有若干单词,以空格界定单词的结束,翻转其中的单词输入:s = " hello world "输出:“world hello”需要注意的是,给定的字符串可能存在头空格、尾空格以及中间的空格数量不唯一的情况。
2025-02-24 13:11:33
163
原创 linux -对文件描述符的操作dup、fcntl有五种
如果一开始传入的是O_RDONLY,然后后面再加上O_APPEND的话,还是不行的,因为只有只读和在尾部追加的权力,并没有写的权力,这个东西规定的死板的。eg:第二种改写文件描述符状态的操作示例。有五种用法,常用的两种。
2025-02-23 21:56:03
167
原创 算法刷题-哈希表的总结
经常会混淆。混淆1:例如有时候题目可能要求在一大堆元素里找目标元素,要求,这就会让我想到只包含一个键值的set或者是map,但的情况,那么这个时候就可以用一个vector容器或者是直接int a[26],这样直接利用ASCII码的原理记录什么字母出现了几次,用一次减一个就OK了 例如用来判断有效异位单词和赎金信这样的题。,那么如果有就可以返回在这一种相等的情况下有几次,或者需要索引的情况下,就用map这样的有键值对的,,找到是否存在之后,就可以获取她的下标二零。
2025-02-19 22:59:43
406
原创 算法刷题--哈希表--快乐数
本来很快乐,直到遇上了快乐数。快乐数的定义:给定一个数,经过多次将它的值更新为各位数的平方之和,最终变为1的数为快乐数。示例:输入:n = 19输出:true解释:那么题目就是要求给定一个数字n,判断是否是快乐数,返回类型为bool类型。
2025-02-17 19:51:14
243
原创 linux--关于linux文件IO(2) open、read、lseek、stat
在linux中的读写文件有对应的命令。在终端中输入man 2 open可以打开open的手册页,注意man 2是linux自己的函数的一些手册,man 3是C库的手册mode这里为什么是8进制数?因为在linux中权限要么就是rwx,就是读写可执行的权限,那么这三个权限如果都有就是111,二进制来说就是7。那么一个文件不仅只在一个地方有权限,还有用户对他的权限、其他文件对他的权限等这样的权限使用的地方,有三个这样的地方,那么如果三个地方全都有权限就是0777,0代表八进制数,777代表都有权限,
2025-02-16 22:59:31
492
原创 算法刷题--哈希表--字母异位词和两个数组的交集
哈希表是而直接的。直白来讲数组就是一种哈希表。那么哈希表能解决什么问题呢,。那么一般都是将一个集合里面的元素映射为哈希表的索引。那么设计哈希表的时候需要考虑以下原则:均匀性,尽可能让不同key均匀分布到哈希表中;高效性;覆盖性,确保所有key都能映射到哈希表范围内。当多个元素映射到同一个索引时,这种现象叫做。,发生冲突的元素都被存储在中,这样可以通过索引找到冲突的元素了。这样做就及不会因为数组空值而浪费大量内存,又不会因为链表太长而在查找上浪费太多时间。
2025-02-16 20:02:10
1058
原创 linux--关于Linux的文件IO、虚拟地址空间概念、文件描述符
分为两个区域,用户区是用户可以进行操作的部分,受保护低地址就类似nullptr这样的地址存放,堆空间的存放是按照内存从小到大存放的,但栈空间就是按照内存地址从大到小存放的,然后用户区也会存放共享库也就是之前的那个动态库这样的内容,剩下再放一些命令行参数和环境变量什么的。内核区普通用户是不能进行读写的,存放着一些管理任务之类的,用户可以通过内核函数实现对硬件的数据进行读写什么的。当例如close3的那个a.txt后,3的位置就会释放,下一次对文件操作就会放在3的位置,因此这个就是。,占用的是内存的空间。
2025-02-16 16:02:56
449
原创 linux--GDB
notice:要想退出循环的话,光until可能会失败,原因是如果在循环体内设置了断点就不行,以及必须停在循环开头。第一列代表编号,第二列代表断点类型,是否生效在红色框,what代表其存在的位置信息。首先要生成一个可调试的执行文件,他不是嵌入源文件,而是嵌入源文件的行号什么的信息,,GCC是编译,GDB就是调试,二者组成一个完整的开发环境。然后就可以输入shell命令。是由GNU组织提供的一个。GDB有以下四个功能。进入这个可调试程序,
2025-02-16 14:34:48
402
原创 算法刷题-链表系列-两两交换链表结点、删除链表的倒数第n个元素
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
2025-02-15 17:09:52
316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人