- 博客(75)
- 资源 (1)
- 收藏
- 关注
原创 vscode wsl远程连接 权限问题
问题描述:执行命令时遇到Operation not permitted 和 Permission denied问题,是有关ip地址和创建文件的权限问题,参考网络上更改wsl.conf文件等方法均无法解决,只能加sudo来解决。
2024-02-10 11:24:32
955
原创 prometheus监控系统
云原生、容器场景下按需的资源使用方式对于监控系统而言就意味着没有了一个固定的监控目标,所有的监控对象(基础设施、应用、服务)都在动态的变化,这对基于 Push 模式传统监控软件带来挑战。对于 Prometheus 这一类基于 Pull 模式的监控系统,显然也无法继续使用的 static_configs 的方式静态的定义监控目标。
2023-10-24 12:59:53
354
原创 Raft算法
leader 在每一个发往 follower 的追加条目 RPC 中,会放入前一个日志条目的索引位置和任期号,如果 follower 在它的日志中找不到前一个日志,那么它就会拒绝此日志,leader 收到 follower 的拒绝后,会发送前一个日志。给 follower,让它们复制该条目。相比于 Paxos,Raft 不用考虑状态之间的共存和相互影响,只用考虑状态的转化,极大地简化了算法的实现。:每个节点在达到一定条件后,可以把当前日志中的命令都写入自己的快照,然后就可以把已经并入快照的日志都删除了。
2023-10-24 12:49:52
253
原创 Golang ioutil包
ReadAll方法,我们比较常用的工具类方法,一次性读取文件的所有内容并返回,适用于读取小文件,如果文件太大会占用太多内存。调用 ReadAll 方法成功,会读取 io.Reader的所有内容,返回的 err == nil,而不是 err == EOF,因为读取完所有数据了,完成了我们的任务,此时 EOF 不应当是 error.原型。
2023-07-25 21:32:08
514
原创 Golang Json 编解码
使用 interface 接收 json.Unmarshal 的结果,然后利用 type assertion 特性 (把解码结果转换为 map[string]interface{} 类型) 来进行后续操作。3、相对于解码,json.NewEncoder进行大JSON的编码比json.marshal性能高,因为内部使用pool。1、json.NewDecoder用于http连接与socket连接的读取与写入,或者文件读取。2、json.Unmarshal是从已存在与内存中的json进行解码。
2023-07-25 21:23:53
573
原创 fork函数嵌套在for循环
当printf以\n结尾时会打印14个。因为程序遇到“\n”,或是EOF,或是缓冲区满,或是文件描述符关闭,或是主动flush,或是程序退出,就会。因为在fork()的调用中,整个父进程空间会原模原样地复制到子进程中,包括缓冲区。会打印出 24 个 i 而不是 14 个。
2023-06-17 14:56:30
274
原创 计算机组成原理 第一章_概述
CPI(Clock cycle Per Instruction): 执行一条指令所需的时钟周期数。总容量 = 存储单元个数 * 存储字长(bit) = 存储单元个数 * 存储字长/8 Byte。响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间。运算器:用于实现算术运算(如加减乘除)、逻辑运算(如与或非)MDR位数 = 存储字长 = 每个存储单元的大小。MAR位数代表存储单元的个数(最多支持多少个)吞吐量:指系统在单位时间内处理请求的数量。CPU主频(时钟频率)=
2023-06-03 11:25:24
389
原创 操作系统 四、文件管理
需要指明是哪个文件(在支持“Open”操作的系统中,只需提供文件在打开 文件表中的索引号即可),还需要指明要写出多少数据、写回外存的数据要放在内存中的什么位置。需要指明是哪个文件(在支持“Open”操作的系统中,只需提供文件在打开 文件表中的索引号即可),还需要指明要读入多少数据、读入的数据要放在内存中的什么位置。如果一个文件过大,这种依次访问的效率是极低的。磁盘地址结构的设计:(柱面号,盘面号,扇区号),当访问相邻地址的数据时,0号盘面读完时只需启动下一盘面的磁头即可,不需要在移动磁头。
2023-05-30 16:21:00
2029
原创 查看网络相关信息的命令
p 显示正在使用socket的程序的名称。-n 直接使用IP地址,而不通过域名服务器。-a 所有的socket。查看网络相关信息的命令。
2023-04-02 16:33:54
150
原创 STL--vector
STL的去重函数,他的时间复杂度和手动去重(先排序,后去重)一样,都是nlog(n),但是他的原理和手动去重不一样,他是把重复的元素放到序列的末尾,序列的前k个数都是不重复的有效元素,所以输出的时候只需要输出有效长度就可以了。以上删除,插入操作复杂度都是log(n)的,因为vector下标是从0开始的,所以下标为i的数实际上就是第i+1个数。返回有序表中第一个小于等于x的数的位置,仅适用于降序序的有序表。返回有序表中第一个小于x的数的位置,仅适用于非升序的有序表。//返回向量的开始指针的位置。
2023-03-24 15:09:24
425
原创 GDB多进程调试
默认为 on,表示调试当前进程的时候,其它的进程继续运行,如果为 off,调试当前进程的时候,其它进程被 GDB 挂起。使用 GDB 调试的时候,GDB 默认只能跟踪一个进程,可以在 fork 函数调用之前,通。过指令设置 GDB 调试工具跟踪父进程或者是跟踪子进程,默认跟踪父进程。使进程脱离 GDB 调试:detach inferiors id。查看调试的进程:info inferiors。切换当前调试的进程:inferior id。
2023-03-24 14:25:57
161
原创 进程创建fork
内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间。也就是说,资源的复制是在需要写入的时候才会进行,在此之前,只有以只读方式共享。注意:fork之后父子进程共享文件,fork产生的子进程与父进程相同的文件文件描述符指向相同的文件表,引用计数增加,共享文件偏移指针。系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成。1. 当前系统的进程数已经达到了系统规定的上限,这时 errno 的值被设置。2. 系统内存不足,这时 errno 的值被设置为 ENOMEM。
2023-03-24 14:22:50
94
原创 进程相关命令
每个进程都由进程号来标识,其类型为 pid_t(整型),进程号的范围:0~32767。任何进程(除 init 进程)都是由另一个进程创建,该进程称为被创建进程的父进程,进程组是一个或多个进程的集合。他们之间相互关联,进程组可以接收同一终端的各。种信号,关联的进程有一个进程组号(PGID)。默认情况下,当前的进程号会当做当。进程号总是唯一的,但可以重用。当一个进程终止后,其进程号就可以再次使用。对应的进程号称为父进程号(PPID)。3.实时显示进程动态。
2023-03-23 22:38:41
344
原创 进程控制块PCB
为了管理进程,内核必须对每个进程所做的事情进行清楚的描述。内核为每个进程分配一个 PCB(Processing Control Block)进程控制块,维护进程相关的信息,Linux 内核的进程控制块是 task_struct 结构体。在 /usr/src/linux-headers-xxx/include/linux/sched.h 文件中可以查看 struct task_struct 结构体定义。进程的状态:有就绪、运行、挂起、停止等状态。进程切换时需要保存和恢复的一些。:系统中每个进程有唯一的。
2023-03-23 21:31:56
300
原创 Leetcode 84. 柱状图中最大的矩形
维护一个单调栈,对于当前下标为i的元素,我们想得到它左右两边比它大的区间。左边区间为弹出该元素后栈顶元素,右边区间为当前元素+1。个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。
2023-03-22 21:48:31
87
原创 GDB详解
GDB 是由GNU软件系统社区提供的调试工具,同GCC配套组成了一套完整的开发环境,GDB是Linux和许多类Unix系统中的标准开发环境。通常,在为调试而编译时,我们会关掉编译器的优化选项(‘-o’),并打开调试选项('-g')。另外,'-Wall'在尽量不影响程序行为的情况下选项打开所有warningLinux命令为:gcc -g -Wall program.c -o program其中,`-g` 选项的作用是在可执行文件中加入源代码的信息,比如可执行文件中第几条机。
2023-03-21 20:00:37
473
原创 Makefile文件的编写
PHONY表示clean程序不会被生成,这样保证了可以重复执行clean。在命令行中执行make clean可以删除,执行make又可以生成。
2023-03-20 23:54:28
88
原创 Leetcode 72. 编辑距离
给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数。cost[i][j]表示匹配word1前i个字符和word2前j个字符最少操作数。
2023-03-20 16:17:31
94
原创 动态库的制作与使用
对于elf格式的可执行程序,是由ld-linux.so来完成的,它先后搜索elf文件的DT_RPATH段 --> 环境遍历LD_LIBRARY_PATH --> /etc/ld.so.cache文件列表 --> /lib/, /usr/lib目录找到库文件后将其载入内存。对于动态库,GCC进行链接时,动态库的代码不会被打包到可执行程序中。当系统加载可执行代码时,能够知道其所依赖的库的名字,但是还需要知道绝对路径。不建议在动态库文件放在/lib/, /usr/lib目录,因为其中有很多系统库函数。
2023-03-20 15:41:20
438
原创 Leetcode 56. 合并区间
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。:用flag数组存储除末端外是否包含的集合,用spFlag数组存储starti = endi的特殊情况,用intInSet判断是否已在队列中。
2023-03-19 19:29:11
74
原创 静态库的制作与使用
生成可执行文件命令为 gcc main.c -o app -I ./include/ -L ./lib/ -l suanshu。上述命令即可生成名为app的可执行文件。静态库在链接时被添加到程序中。
2023-03-19 16:50:51
395
原创 g++ 和 gcc 的区别
gcc和g++都是GNU的一个编译器后缀为.c的,gcc会把它当作C程序,g++会当作C++程序;后缀为.cpp的,两者都会认为是C++程序,C++的语法规则更加严谨一
2023-03-19 15:39:54
158
原创 GCC 基本使用
预处理命令:gcc test.c -E -o test.i。编译命令:gcc test.i -S -o test.s。汇编命令:gcc test.s -c -o test.o。预处理作业:展开头文件、替换宏、删掉注释等。
2023-03-19 14:53:53
302
原创 Leet Code 53. 最大子数组和
为了保证计算子问题能够按照顺序、不重复地进行,动态规划要求已经求解的子问题不受后续阶段的影响。这个条件也被叫做「无后效性」。换言之,动态规划对状态空间的遍历构成一张有向无环图,遍历就是该有向无环图的一个拓扑序。有向无环图中的节点对应问题中的「状态」,图中的边则对应状态之间的「转移」,转移的选取就是动态规划中的「决策」。,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。设dp[i] 为以nums[i]结尾的最大的连续子数组的和。是数组中的一个连续部分。
2023-03-18 16:51:14
86
原创 Leetcode 49. 字母异位词分组
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一。给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。:利用map来去重,每个字符串先排序,判断是不是一组,再push_back即可。
2023-03-18 15:35:25
72
原创 Leetcode 48. 旋转图像
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。情况二:顺时针转 180 度:先上下镜像,再左右镜像(先左右再上下也可):可以对每一层依次对四个元素转换,也可以根据规律来。情况三:顺时针转 270 度:先转置再上下镜像。情况一:顺时针转 90 度:先转置再左右镜像。
2023-03-17 17:18:48
685
原创 操作系统 三、内存管理
编译、连接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。基于局部性原理,若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存,当所访问的信息不在内存时,由操作系统负责从外存调入内存。另外,FIFO算法虽然实现简单,但是该算法与进程实际运行时的规律不适应,先进入的页面也有可能最经常被访问,算法性能差。:首次适应算法每次都从链头开始查找,可能会导致低地址出现很多小的空闲区,而每次分配查找时,都要经过这些分区,增加了查找的开销。
2023-03-17 12:34:50
860
原创 Leetcode 39. 组合总和
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。
2023-03-16 10:47:05
79
原创 Leetcode 32. 最长有效括号
定义 dp[i] 表示以下标 i 字符结尾的最长有效括号的长度。的字符串,找出最长有效(格式正确且连续)括号子串的长度。(1) s[i] = ')且s[i-1]='('时。(2) s[i] = ')且s[i-1]=')'时。题目描述:给你一个只包含。
2023-03-16 10:10:40
79
原创 Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。如果数组中不存在目标值 target,返回 [-1, -1]。
2023-03-16 10:05:02
90
原创 Leetcode 31. 下一个排列
如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元素按升序排列)。例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。而 arr = [3,2,1] 的下一个排列是 [1,2,3] ,因为 [3,2,1] 不存在一个字典序更大的排列。类似地,arr = [2,3,1] 的下一个排列是 [3,1,2]。例如,arr = [1,2,3] 的下一个排列是 [1,3,2]。
2023-03-15 18:44:03
71
原创 Leetcode 19. 删除链表的倒数第 N 个结点
双指针法,通过快慢指针定位到要删除的结点前面。题目描述:给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。
2023-03-15 13:29:59
67
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人