编程
黄小东的csdn
静以修身,俭以养德
展开
-
求100的阶乘各位数之和
int factorial_ten(int n);int main(){factorial_ten(100);return 0;}int factorial_ten(int n){ int i; double sum = 1; for(i=1;i {sum *= i; } printf("su原创 2015-01-07 14:01:31 · 1355 阅读 · 0 评论 -
函数声明带参数与不带参数区别
说说下面两段代码的差异:代码一void fun(){printf("hello\n");}int main(){ fun(1,2); return 0;} 代码二void fun(void){printf("hello\n");}int main(){ fun(1,2);原创 2015-01-07 14:20:47 · 6609 阅读 · 0 评论 -
lint 代码审查工具
基本介绍lint是最著名的C语言工具之一,是由贝尔实验室SteveJohnson于1979在PCC(PortableC Compiler)基础上开发的静态代码分析,一般由UNIX系统提供。与大多数C语言编译器相比,lint可以对程序进行更加广泛的错误分析,是一种更加严密的编译工具。最初,lint这个工具用来扫描C源文件并对源程序中不可移植的代码提出警告。但是现在大多数lint实用程序已经变原创 2015-01-05 23:30:27 · 2043 阅读 · 0 评论 -
FindBugs Java代码审查工具
简介编辑尽管如此,好的静态分析工具仍然是工具箱中的无价之宝。在这个由两部分组成的系列文章的第一部分中,高级软件工程师 Chris Grindstaff 分析了 FindBugs 如何帮助提高代码质量以及排除隐含的缺陷。代码质量工具的一个问题是它们容易为开发人员提供大量但并非真正问题的问题——即 伪问题(false positives)。出现伪问题时,开发人员要学会忽略工具的输出或者放弃原创 2015-01-05 23:34:47 · 6289 阅读 · 0 评论 -
spin_lock & mutex_lock的区别
spin_lock & mutex_lock的区别?本文由该问题引入到内核锁的讨论,归纳如下为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic转载 2014-12-29 15:31:53 · 742 阅读 · 0 评论 -
Java动态代理
Java动态代理详解说到动态代理,顾名思义就是动态的代理(真是废话)。关于代理:想必大家都并不陌生,GOF的23种设计模式之一(结构型模式)。这里暂不多做介绍,有兴趣的可以关注我关于设计模式的文章。什么是动态代理:说起动态,其实不如先说什么是静态。所谓静态代理,个人理解为自己手写的代理类,或者用工具生成的代理类,或者别人帮你写的代理类(没说一样...)。总之,就是程转载 2014-12-29 14:43:56 · 1076 阅读 · 0 评论 -
JAVA反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。JAVA反射(放射)机制:“程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”。从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言转载 2014-12-29 15:25:05 · 663 阅读 · 0 评论 -
不安全的C函数
C 中大多数缓冲区溢出问题可以直接追溯到标准 C 库。最有害的罪魁祸首是不进行自变量检查的、有问题的字符串操作(strcpy、strcat、sprintf 和 gets)。一般来讲,象“避免使用 strcpy()”和“永远不使用 gets()”这样严格的规则接近于这个要求。今天,编写的程序仍然利用这些调用,因为从来没有人教开发人员避免使用它们。某些人从各处获得某个提示,但即使是优秀的开发人转载 2014-12-26 16:30:55 · 1960 阅读 · 0 评论 -
临界区(Critical section)与互斥体(Mutex)的区别
1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用。1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对转载 2014-12-26 18:25:24 · 682 阅读 · 0 评论 -
C1X系列:type-generic macros
C1X系列:type-generic macros 承蒙转载,请保持本文的完整性,请匆用于商业用途。type-generic macros在新的C1X草案又称为Generic selection,根据它的提案和最新C1X草案,可将type-generic macros翻译成泛型宏或者通用类型宏。 type-generic macros是一种编译期技术,它允许开发转载 2014-12-24 13:52:44 · 721 阅读 · 0 评论 -
检测系统是否大小端
int checkEnd(){ int i = 0x1234; char *p = &i; printf("p = %x\n",*p); if( *p == 0x12 ){printf("big end\n"); }else{printf("little end\n"); } return (*p == 0x12);}原创 2015-01-07 14:12:33 · 645 阅读 · 0 评论