标签:
大小端网络字节流it |
分类: C/CPlusPlus |
标签:
网络面试it |
分类: Network_Simulator |
标签:
排序k数组it |
分类: Algorithm/DateStructure |
写一段程序,找出数组中第k大小的数,输出数所在的位置。
【解法一】
我们先假设元素的数量不大,例如在几千个左右,在这种情况下,那我们就排序一下吧。在这里,快速排序或堆排序都是不错的选择,他们的平均时间复杂度 都是 O(N * log2N)。然后取出前 K 个,O(K)。总时间复杂度 O(N * log2N)+ O(K) = O(N * log2N)。
你一定注意到了,当 K=1 时,上面的算法也是 O(N * log2N)的复杂度,而显然我们可以通过 N-1 次的比较和交换得到结果。上面的算法把整个数组都进行了排序,而原题目只要求最大的 K 个数,并不需要前 K 个数有序,也不需要后 N-K 个数有序。
怎么能够避免做后 N-K 个数的排序呢?我们需要部分排序的算法,选择排序和交换排序都是不错的选择。把 N 个数中的前 K 大个数排序出来,复杂度是O(N * K)。
那一个更好呢?O(N * log2N)还是 O(N * K)?
标签:
coredumpkernelcit |
分类: C/CPlusPlus |
Linux环境下经常遇到某个进程挂掉而找不到原因,我们可以通过生成core file文件加上gdb来定位。
标签:
kernelcoredumpit |
分类: C/CPlusPlus |
什么是coredump?
通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件。许多程序和操作系统出错时会自动生成一个core文件。
如何使用coredump?
coredump可以用在很多场合,使用Linux,或者solaris的人可能都有过这种经历,系统在跑一些压力测试或者系统负载一大的话,系统就hang住了或者干脆system panic.这时唯一能帮助你分析和解决问题的就是coredump了。
现在很多应该程序出错时也会出现coredump.
分析coredump的工具
现在大部分类unix操作系统都提供了分析core文件的工具,比如 GNU Binutils Binary File Descriptor library (BFD), GNU Debugger
标签:
linuxkernelbspit |
分类: NSN_BspDriver |
标签:
ubootnand启动it |
分类: NSN_BspDriver |
标签:
arm指令集it |
分类: NSN_BspDriver |
(Addition with Carry)
ADC{条件}{S} <dest>, <op 1>, <op 2> dest = op_1 + op_2 + carry
ADC
将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32
位大的加法。下列例子将加两个 128 位的数。
128 位结果: 寄存器 0、1、2、和 3
第一个 128 位数: 寄存器 4、5、6、和 7
第二个 128 位数: 寄存器 8、9、10、和 11。
ADDS R0, R4, R8 ; 加低端的字 ADCS R1, R5, R9 ; 加下一个字,带进位 ADCS R2, R6, R10 ; 加第三个字,带进位 ADCS R3, R7, R11 ; 加高端的字,带进位
如果如果要做这样的加法,不要忘记设置 S 后缀来更改进位标志。
(Addition)
ADD{条件}{S} <dest>, <op 1>, <op 2&g
标签:
动态编译重定位-fpicgot表plt表it |
分类: NSN_BspDriver |
标签:
动态编译重定位-fpicgot表plt表it |
分类: NSN_BspDriver |
全局偏移表(GOT)和过程链接表(PLT)
ELF 格式的共享库使用 PIC 技术使代码和数据的引用与地址无关,程序可以被加载到地址空间的任意位置。PIC 在代码中的跳转和分支指令不使用绝对地址。PIC 在 ELF 可执行映像的数据段中建立一个存放所有全局变量指针的全局偏移量表 GOT