
C/C++
文章平均质量分 64
shenyanxxxy
这个作者很懒,什么都没留下…
展开
-
gdb调试带参数的程序
看了论坛http://bbs.chinaunix.net/thread-4063853-1-1.html里面的讨论,掌握了一个之前一直不会解决的问题。那就是如何运行gdb 带参数调试 比如 ./a.out 1 2 3 你如果运行 $gdb ./a.out 1 2 3 肯定会报错。 正确的做法是: $gdb --args ./A原创 2013-08-06 10:55:46 · 749 阅读 · 0 评论 -
linux下so动态库一些不为人知的秘密(上)
linux 下有动态库和静态库,动态库以.so为扩展名,静态库以.a为扩展名。二者都使用广泛。本文主要讲动态库方面知识。 基本上每一个linux 程序都至少会有一个动态库,查看某个程序使用了那些动态库,使用ldd命令查看 # ldd /bin/lslinux-vdso.so.1 => (0x00007fff597ff000)libselinux.so.1 => /lib64/libse原创 2013-08-06 10:56:19 · 684 阅读 · 0 评论 -
开源代码中的递归宏
这个是将所有的字节顺序完全颠倒的一个宏,调用BSWAP_64(x) 即可将x的Byte顺序完全颠倒,实现非常简洁,足见实现者的功力。#define BSWAP_8(x) ((x) & 0xff)#define BSWAP_16(x) ((BSWAP_8(x) > 8))#define BSWAP_32(x) ((BSWAP_16(x) > 16))#define BSWAP_64(原创 2013-08-06 10:57:00 · 1803 阅读 · 0 评论 -
用printf打印uint64_t的符号
在32位平台 typedef unsigned long long int uint64_t;在64位平台 typedef unsigned long int uint64_t;不同的typdef,要求在printf中使用不同的length modifier,uint64_t 在32位使用ll,在64位使用l。除了定义数据类型,C99还定义了相应数据类型的打印方式,使用PRIu64打原创 2013-08-06 10:57:21 · 43291 阅读 · 0 评论 -
算法导论-动态规划
钢筋分割问题长度i对应价格p(i)那么给定长度i,如何分割才能够使得收益最大呢?动态规划是将问题划分子问题然后求解,所以动态规划的前提是问题是可分解成子问题的。由于每一节都有两种情况分,或者部分,所以总共有2^(n-1)次方的分解方法。解法一: cutFc(int n,p){ int q; if n == 0 return原创 2013-08-06 10:57:23 · 802 阅读 · 0 评论 -
leveldb中的编码方式的分析
leveldb除去测试部分,也不到2w行,看完代码才发觉这是由于编程的人太牛了。好多代码的实现几行代码就可以实现,当然非常简单了。 先说说他的变长编码的实现方法。char* EncodeVarint32(char* dst, uint32_t v) { // Operate on characters as unsigneds unsigned char* ptr = rein原创 2013-11-03 10:06:32 · 1007 阅读 · 0 评论