
C语言
文章平均质量分 64
浮沉飘摇
Linux C
展开
-
[算法题]合并K个有序链表
合并K个有序链表题目来源题目内容初步分析解题思路代码实现关于二级指针题目来源这是力扣一道困难难度的算法题,题目序号23,链接 https://leetcode-cn.com/problems/merge-k-sorted-lists/ 有兴趣的同学可以上去看下。题目内容给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表原创 2022-05-08 21:06:48 · 666 阅读 · 0 评论 -
[算法题]返回数组A的元素组成的小于n的最大数
偶然在力扣上看到有人问下图这个问题,激起求解的兴趣。大概要求就是 数组A中提供了可以使用的1~9的数,给定一个数,求使用A数组中元素能组成的小于给定数值的最大的数。给定条件A数组的数是升序排列(不是的话,可以做一个排序操作)。刚开始想了几个解题思路都不太好,后来想到可以先把给定值x转化成digits数组,然后再进行求最大数。这样看起来思路就清晰多了。题解如下:int MaxNumberLessThanN(int Numbers[], int Count, int Value){ int原创 2022-04-02 13:07:30 · 8213 阅读 · 10 评论 -
[内存泄漏]keepalived进程内存泄漏定位
缘起公司部分项目在部署上通过keepalived实现了了双机热备,通过荣誉和接管,实现高可用性。最近其中一个项目出现了内存耗尽问题,使用<内存问题快速定位工具>定位提示是keepalived进程的rarp socket收报队列挤压了太多数据包导致。 该工具可以快速定位大多数内存问题,详细介绍文档见《内存泄漏定位思路和方法》,在此不再赘述。 分析keepalived我们用的是v2.0.10版本,...原创 2021-08-28 20:25:12 · 1011 阅读 · 2 评论 -
[crash分析]报文解密造成的系统crash
现网环境出现了crash,原因是"general protection fault: 0000 [#1] ",也就是说访问了异常地址导致。查看异常调用栈。//...省略部分 #6 [ffff88041fd43830] general_protection at ffffffff8168ef68 [exception RIP: put_page+10] RIP: ffffffff8118edaa RSP: ffff88041fd438e8 RFLAGS: 00010202原创 2020-09-10 23:06:29 · 827 阅读 · 0 评论 -
[crash分析]cascade错误,最终发现是内核BUG
我们目前使用的是标准的CentOS 3.10.0-514.26.2版本。因为要做docker产品,为了测试设备可以支持多少个docker,我们使用脚本在设备上不断创建docker并运行我们的产品。但是我们发现每次到了290多个docker后,很快系统就crash了。crash栈大体上有两种:[ 1076.347341] ------------[ cut here ]------------[ 1076.361159] kernel BUG at kernel/timer.c:1105![ 107原创 2020-08-08 23:22:24 · 2065 阅读 · 0 评论 -
[crash分析]栈破坏分析总结
栈破坏的两种表现1. 栈帧被破坏栈帧被破坏,从寄存器上可以看到栈帧寄存器rbp异常。因为返回地址正常,所以我们能够看到返回地址函数。//栈帧被写坏后的栈表现[New LWP 31418]Core was generated by `./test1'.Program terminated with signal 11, Segmentation fault.#0 0x000000000040053b in test1 ()Missing separate debuginfos, use: d原创 2020-08-07 23:50:00 · 3173 阅读 · 0 评论 -
[crash分析]Kernel panic - not syncing: Aiee, killing interrupt handler!
公司产品升级后,测试发现下发某个配置失败时会导致系统crash。crash查看栈显示如下,没有有用信息。crash> btPID: 3348 TASK: ffff880175034e70 CPU: 3 COMMAND: "test.sh" #0 [ffff88016c063b38] machine_kexec at ffffffff81059beb #1 [ffff88016c063b98] __crash_kexec at ffffffff81105822 #2 [ffff88原创 2020-08-06 21:39:19 · 773 阅读 · 0 评论 -
[crash分析]“Kernel panic - not syncing: Aiee, killing interrupt handler”“BUG: scheduling while atomic“
PANIC信息不太常见,crash栈也没太多信息,COMMAND:“rmmod”提示可能是卸载模块时导致的crash。PID: 14829 TASK: ffff88007b478000 CPU: 0 COMMAND: "rmmod" #0 [ffff88004a157b38] machine_kexec at ffffffff81059bab #1 [ffff88004a157b98] __crash_kexec at ffffffff81105812 #2 [ffff88004a157c6原创 2020-07-05 22:16:37 · 966 阅读 · 0 评论 -
近期项目中错误总结
strcmp/strncmp函数使用错误。期望相等则执行block,结果却用了 if (strcmp(string1, string2)) { do something; }避免方法:尽量使用 if (strcmp(string1, string2) == 0) 这样显式使用比较等式。容易理解编码期望,也容易发现编码错误。结构指针使用前没有判断是否为NULL,这估计是C开...原创 2019-11-26 17:44:16 · 120 阅读 · 1 评论 -
单链表的逆序
单链表的逆序算是链表最基础的一个考题了,如果这个都不能做出来,会影响面试的分数的。另外代码的简洁,易懂也是考察编码技能的重要一环。Node *reverse_list(Node *pHead){ Node *pCur, *pTmp; pCur = pHead; pHead = NULL; while(pCur) { pTmp =原创 2016-08-01 23:00:59 · 178 阅读 · 0 评论 -
一人岁数的3次方是四位数,四次方是六位数,并知道此人岁数的3次方和4次方用遍了0~9十个数字。编写一程序求此人的岁数
判断平方和立方是否用完了0~9的十个数字,用了一个flag数组,使判断简单了好多。#include #include int use0_9(int x, int y){ char flag[10] = {0}; while(x) { if(flag[x%10] == 1) { return 0;原创 2016-07-30 21:02:48 · 1152 阅读 · 0 评论 -
简单单链表的 创建 打印 和 释放
单链表的创建,打印,释放模板。可以直接在上面开发。原创 2016-07-30 18:57:02 · 200 阅读 · 0 评论 -
简易的数组&链表生成器(2)
链表的生成框架。数组和链表的生成框架是一脉相承的,我只需要继承原有的框架,做轻微修改就可以使用了。原创 2015-09-10 09:30:35 · 251 阅读 · 0 评论 -
单向链表的反序
链表的反序是链表的基本操作之一,简洁易读的反序操作实现也是体现一个人对链表的掌握程度。下面是我的一个链表实现方法原创 2015-09-10 10:00:02 · 465 阅读 · 0 评论 -
数组中值为2的n次幂的元素个数
刚开始想到的是用2个for循环,外层用2的n次幂,内层用数组,去比对,如果相等则统计值++。后来想到无法判断n的界限,想要获知n的界限还要知道数组的最大值,就牵扯到数组的排序了。理顺思路后,分拆一下解题步骤,第一步对数组排序,使数组单调递增;第二步判断2的n次幂个数。#include #include #include void bubblesort(int *array, uns原创 2015-11-12 09:28:02 · 728 阅读 · 0 评论 -
判断一个正整数是否是对称数,不允许使用库函数转换成字符串
对称数判断函数原创 2015-11-15 16:22:33 · 1694 阅读 · 0 评论 -
[面试解答]Olympic Game
Olympic Game描述: 每次奥运会期间,大家都非常关注奖牌榜排名的情况。 现在我们假设奖牌榜的排名规则,按优先级从高到低如下: 1、金牌 数量多的排在前面;2、银牌 数量多的排在前面;3、铜牌 数量多的排在前面;4、若以上三个条件仍无法区分名次,则以国家名称的字典序排列。原创 2015-11-18 18:19:02 · 3062 阅读 · 0 评论 -
[面试解答]字符串双向排序
输入一个字符串,从中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上原创 2015-11-19 11:06:27 · 630 阅读 · 0 评论 -
两个有序链表的合并【不改变原链表】
有序链表的合并,不改变原链表。原创 2016-07-29 22:58:06 · 921 阅读 · 0 评论 -
对 1,2,3,4,5这五个数任意取出两个数,列出他们的所有组合
对 1,2,3,4,5这五个数任意取出两个数,列出他们的所有组合原创 2016-07-30 18:44:02 · 2094 阅读 · 0 评论 -
简易的数组&链表生成器(1)
在测试或者调试中,我们经常需要创建变长数组或者链表,用它来验证自己的算法函数是否正确。比如我做了一个链表的反序函数reverse(),我需要手动创建一个链表来验证reverse函数是否工作正常,达到期望。或者我需要产生一个数组,来验证我写的冒泡排序算法是否正确。等等诸如此类的。对于链表生成,之前我都是用逐原创 2015-09-10 08:11:47 · 489 阅读 · 0 评论