
分享转载
文章平均质量分 72
ziyuewuneng
这个作者很懒,什么都没留下…
展开
-
编码风格不是编码规范
编码风格不是编码规范我并不认为程序员是一个情绪特别丰富的群体。但有一些事情却能很容易刺激程序员的神经,那就是代码格式和布局。如果看到一个函数的括弧在同一行上没有闭合,我的眼睛会喷血。如果看到有人没有恰好的在两个函数间留一空行,我的小腿会抽筋。但重点在这里——除非是在家里开发自己的业余爱好软件,我的这些个人喜好其实是无关紧要的。同样,作为一个团队中的一员,你的个人编程转载 2013-08-04 17:49:59 · 680 阅读 · 0 评论 -
C语言实现strlen函数的几种方法
C语言实现strlen函数的几种方法 今天偶然看到了一个实现strlen函数的方法,也实际练习了一下,挺有意义的,其实现的一些思想值得学习,记录一下吧。我这里除了写两个比较巧妙的递归实现之外,也写了另外一种常规的方式。 传说常见的一个笔试题:不使用中间变量求const字符串长度,即实现求字符串长度库函数strlen函数。函数接口声明如下:int strl转载 2013-09-23 22:35:32 · 2173 阅读 · 0 评论 -
软件开发过程包括哪几个阶段
软件开发过程包括哪几个阶段Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。 IEEE:软件工程是开发、运行、维护和修复软件的系统方法。 Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。 软件工程学的内容 软件工程学的主要内容转载 2013-09-23 22:53:41 · 12790 阅读 · 0 评论 -
malloc和new的区别
malloc和new的区别 malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译转载 2013-09-24 13:25:45 · 645 阅读 · 0 评论 -
从头到尾彻底解析Hash表算法
从头到尾彻底解析Hash表算法发布时间: 2013-10-02 10:26 阅读: 2833 次 推荐: 3 原文链接 [收藏] 作者:July、wuliming、pkuoliver 说明:本文分为三部分内容, 第一部分为一道百度面试题Top K算法的详解;第二部分为关于Hash表算法的详细阐述;第三部分为打造一个最快的Hash表算法。转载 2013-10-10 17:50:43 · 986 阅读 · 0 评论 -
Linux下ps命令详解
Linux下ps命令详解 Linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待)2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)5. 停止(进程收到SIGSTOP转载 2013-09-25 08:15:02 · 845 阅读 · 0 评论 -
内存空间分几部分:代码段、数据段,栈,堆 (收集整理)
1.函数代码存放在代码段。声明的类如果从未使用,则在编译时,会优化掉,其成员函数不占代码段空间。全局变量或静态变量,放在数据段,局部变量放在栈中,用new产生的对象放在堆中,内存分为4段,栈区,堆区,代码区,全局变量区BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by转载 2013-10-20 15:56:53 · 1133 阅读 · 0 评论 -
对内存中堆、栈、静态存储区的理解
堆:由程序员自己分配释放(用malloc和free,或new和delete) ,如果我们不手动释放,那就要到程序结束才释放。如果对分配的空间在不用的时候不释放而一味的分配,那么可能会引起内存泄漏,其容量取决于虚拟内存,较大。 栈:由编译器自动分配释放,其中存放在主调函数中被调函数的下一句代码、函数参数和局部变量,容量有限,较小。 静态存储区:由在编译时由编译器分配,由系统释放,其中存放转载 2013-10-20 15:57:59 · 2464 阅读 · 0 评论 -
局部变量,静态局部变量,全局变量,静态全局变量在内存中的存放区别
我们先来看内存中的几大区: 内存到底分几个区?下面有几种网上的理解,我整理一下:一: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由os回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局转载 2013-10-20 15:58:52 · 2132 阅读 · 0 评论 -
递归与循环的优缺点
递归的话函数调用是有开销的,而且递归的次数受堆栈大小的限制。 以二叉树搜索为例: bool search(btree* p, int v) { if (null == p) return false; if (v == p->v) return true else { if (v v) return search(p->left, v转载 2013-10-19 17:53:22 · 7896 阅读 · 0 评论 -
C字符串处理函数的实现
C字符串处理函数的实现C字符串处理函数的实现(Linux)#include char * ___strtok = NULL; char * strcpy(char * dest,const char *src) { char *tmp = dest; while ((*dest++ = *src+转载 2013-10-20 18:08:11 · 881 阅读 · 0 评论 -
strstr strlen strcpy函数实现
strstr strlen strcpy函数实现分类: c++语言2013-06-17 13:54 59人阅读 评论(0) 收藏 举报strcpy函数实现strcpy 看似是标准函数库里面最简单的函数了,谁都可以实现这个函数, 但是,并不一定谁都能实现的很好。林锐博士面试微软的时候,就做这个题目。 他也没有把这个题目完全的做对。建议你自己先动手写一个自己转载 2013-10-20 18:25:44 · 857 阅读 · 0 评论 -
常用的排序算法的时间复杂度和空间复杂度
常用的排序算法的时间复杂度和空间复杂度常用的排序算法的时间复杂度和空间复杂度排序法 最差时间分析平均时间复杂度 稳定度 空间复杂度 冒泡排序O(n2)O(n2)稳定 O(1) 快速排序O(n2)O(n*log2n)不稳定 O(log2n)~O(n)转载 2013-10-20 19:35:19 · 912 阅读 · 0 评论 -
排序算法的时间复杂度和空间复杂度
常用的内部排序方法有:交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)、插入排序(直接插入排序、希尔排序)、归并排序、基数排序(一关键字、多关键字)。一、冒泡排序: 1.基本思想:两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。2.排序过程:设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气转载 2013-10-20 19:37:31 · 750 阅读 · 0 评论 -
为什么硬链接不能指向目录
linux系统中的硬连接有两个限制:不能跨越文件系统和不允许普通用户对目录作硬连接。至于第一个限制,很好理解,而第二个就不那么好理解了。 我们对任何一个目录用ls -l 命令都可以看到其连接数至少是2,这也说明了系统中是存在硬连接的,而且命令ln -d 也可以让超级用户对目录作硬连接,这些都说明了系统限制对目录进行硬连接只是一个硬性规定,并不是逻辑上不允许或技术上的不可行。那么操作系统为什么要进行转载 2013-11-29 08:08:24 · 1501 阅读 · 0 评论 -
vim查找/替换字符串
vim查找/替换字符串vi/vim 中可以使用 :s 命令来替换字符串。该命令有很多种不同细节使用方法,可以实现复杂的功能,记录几种在此,方便以后查询。 :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vivian/sky/g 替换当前行所有 vivian 为 sky :n,$s/vivian/sk转载 2014-01-05 13:53:51 · 986 阅读 · 0 评论 -
linux下用gcc编译使用了math库函数的程序出错的解决方法
linux下用gcc编译使用了math库函数的程序出错的解决方法症状:在c程序中用到math库函数时,编译成obj后,再生成执行文件时,会遇到类似下面的错误:/tmp/ccalvMPY.o: In function `main':/tmp/ccalvMPY.o(.text+0x40): undefined reference to `pow'原因:因为l转载 2013-09-23 18:45:53 · 1838 阅读 · 0 评论 -
常见gcc编译警告整理
1、warning: no newline at end of file在文件最后一行加上回车键解释:在《Rationale for the C99 standard》一文中,有C99的相关信息:A backslash immediately before a newline has long been used to continue string literals, as well转载 2013-09-17 22:00:33 · 1669 阅读 · 0 评论 -
最快线程间数据交换算法,有效避免锁竞争 -- TwoQueues
最快线程间数据交换算法,有效避免锁竞争 -- TwoQueueshan z. 于 星期四, 21/03/2013 - 04:34 提交分类:开源优化安全线程C/C++服务器服务器开发人员处理多线程数据共享问题注意的几个要点:1、锁竞争:尽量减少锁竞争的时间和次数。2、内存:尽量是使用已分配内存,转载 2013-09-17 16:29:30 · 942 阅读 · 0 评论 -
windows下的vim编辑器及vim的配置
ftp://ftp.vim.org/pub/vim/pc/gvim61.exe功能和LINUX下的VIM一样并且支持中文输入和显示界面上更友好如果你习惯于使用vim 但是在windows下一直没有合适工具的话可以下一个来用用原创 2013-08-04 10:55:18 · 6284 阅读 · 0 评论 -
Linux man命令的使用方法
Linux man命令的使用方法Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。Linux的man手册共有以下几个章节:代號代表內容1使用者在shell中可以操作的指令或可执行档2系統核心可呼叫的函数与工具等3转载 2013-08-03 17:20:40 · 1122 阅读 · 0 评论 -
Linux常用的网络命令
Linux常用的网络命令网络参数设置命令 所有时刻如果你想要做好自己的网络参数设置,包括IP参数、路由参数和无线网络等,就得要了解下面这些相关的命令才行。其中Route及ip这两条命令是比较重要的。当然,比较早期的用法,我们都是使用ifconfig的。? ifconfig:查询、设置网卡和IP网段等相关参数。? ifup、ifdown:这两个文件是Script,转载 2013-08-03 20:20:31 · 2207 阅读 · 0 评论 -
linux下创建文件夹
linux下创建文件夹创建文件夹语法:mkdir [-p][--help][--version][-m 目录属性>][目录名称]说明:mkdir可建立目录并同时设置目录的权限。参数: -m目录属性>或--mode目录属性> 建立目录时同时设置目录的权限。 -p或--parents 若所要建立目录的上层目录目前尚未建立,转载 2013-08-20 07:16:13 · 1022 阅读 · 0 评论 -
linux fork函数知识整合
fork:n. 叉;餐叉;耙vt. 叉起;使成叉状vi. 分叉;分歧[cpp] view plaincopy#include #include /* 功能:复制进程 参数:无 返回值: 成功: 父进程:返回子进程id 子进程:返回0 失败: 返回-1 */转载 2013-08-22 22:32:38 · 835 阅读 · 0 评论 -
qsort 快速排序法
sort(数组名,数组末地址,compare) //若不写compare则默认升序排列,需要#include例如:sort(a,a+10); //将数组a以升序排序,假设先前定义了a[10]并输入了数据 文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。qsort包含在头文件中,此转载 2013-08-22 22:52:52 · 1113 阅读 · 0 评论 -
linux下解决:cannot execute binary file
linux系统下遇到cannot execute binary file的问题,一般由以下情况造成:非root用户或者无执行权限编译环境不同(程序由其他操作环境复制过来)对于第一种情况,采用增加执行权限即可chmod +x program对于第二种情况,建议将该程序二进制包拷贝过来,重新编译程序。因为我在实际操作过程中发现我将美国的VPS的整个操作系统环境打包后下载到本地服务器上解转载 2013-09-09 10:11:12 · 210242 阅读 · 5 评论 -
MP3文件格式解析
MP3文件格式解析Peter Lee 2008-06-05 目录一、概述二、整个MP3文件结构三、MP3帧格式1. 帧头格式2. MAIN_DATA四、ID3标准1. ID3V12. ID3V2五、MP3文件实例剖析六、资料 一、 概述MP3 文件是由帧(frame)构成的,帧是 MP3 文件最小的组成单位。转载 2013-09-09 14:43:13 · 2353 阅读 · 0 评论 -
比特 字节 字
1、位(bit) 来自英文bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位,11010100是一个8位二进制数。一个二进制位只可以表示0和1两种状态(21);两个二进制位可以表示00、01、10、11四种(22)状态;三位二进制数可表示八种状态(23)……。 2、字节(byte) 字节来自英文Byte,音译为“拜特”,习惯上用大写的“B”表示。 字节是计算机中数据处转载 2013-09-09 15:52:30 · 1744 阅读 · 0 评论 -
system函数,WIFEXITED和WEXITSTATUS
1,在程序中,用exit来设置进程的退出值时,虽然该函数的参数类型为int型,但再父进程中只能取到其值的低8位.所以用exit返回值时,高于255的值是没有意义的.2,对于system函数,返回值是由两部分组成的,低8位值表示所执行的脚本在执行过程中所接收到的信号值,其余的位表示的脚本exit退出时所设置的值, 即脚本内exit退出是的值的低8位,在system返回值的低9-1转载 2013-09-16 23:45:22 · 5314 阅读 · 0 评论 -
父进程等待子进程终止 wait, WIFEXITED, WEXITSTATUS
很多内容转自link这篇文章linkwait()的函数原型是:#include #include pid_t wait(int *status)进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出。如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子转载 2013-09-16 23:50:06 · 861 阅读 · 0 评论 -
sprintf,你知道多少?
sprintf,你知道多少?2005-04-07 14:4623056人阅读 评论(9)收藏 举报扩展编译器mfcbyte语言笑话选自《CSDN 社区电子杂志——C/C++杂志》http://emag.csdn.net 2005 年1 月 总第1 期 - 93 -本文作者:steedhorse(晨星)printf 可能是许多程序员在开始学习C 语转载 2013-09-17 12:08:21 · 884 阅读 · 0 评论 -
关于typedef的用法总结
关于typedef的用法总结 不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的转载 2013-09-17 22:17:16 · 803 阅读 · 0 评论 -
typedef用法总结之续
typedef用法总结之续 刚刚看了一篇也是关于typedef用法的文章,跟先前看的那篇文章内容大同小异,不过有一处让我收获不小,就是在上篇最后那个案例我不理解的地方,这篇文章给了一个很好的答案。以下是文章的部分内容 : 陷阱一: 记住,typedef是定义了一种类型的新别名,不同于宏,它不是简单的字符串替换。比如: 先定义: typedef转载 2013-09-17 22:18:26 · 670 阅读 · 0 评论 -
kill用法详细解释(特别是信号量9的使用以及理解)
kill用法详细解释(特别是信号量9的使用以及理解)Linux kill命令当需要中断一个前台进程的时候,通常是使用组合键;但是对于一个后台进程恐怕就不是一个组合键所能解决的了,这时就必须求助于kill命令。该命令可以终止后台进程。至于终止后台进程的原因很多,或许是该进程占用的CPU时间过多;或许是该进程已经挂死。总之这种情况是经常发生的。Linux进程中的kill命令是通过向进程转载 2013-09-18 07:44:10 · 1524 阅读 · 0 评论 -
const使用方法探讨
const使用方法探讨关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,现将本人的一些体会总结如下,期望对大家有所帮助:一 const基础如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:int b = 500;const int* a = &b; [1]int const *a = &b; [2]转载 2013-12-22 15:19:01 · 850 阅读 · 0 评论