摘要:
对指针的应用是C语言编程的精髓所在,而回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。为什么要使用回调函数呢?我们先看一个小例子: Node * Search_List (Node * node, const int value) { while (node != NULL) { if (node ->... 阅读全文
摘要:
在C中,并没有字符串这个数据类型,而是使用字符数组来保存字符串。C字符串实际上就是一个以null('\0')字符结尾的字符数组,null字符表示字符串的结束。需要注意的是:只有以null字符结尾的字符数组才是C字符串,否则只是一般的C字符数组。C字符串定义时可以利用"="号进行初始化,但是以后不能利用"="对C字符串进行赋值。对C字符串的操作需要通过"string"文件中定义的字符串处理函数。例如://字符串的初始化char a[11] = "huanying";//字符串的赋值strcpy(a,& 阅读全文
摘要:
一、软件效率 软件性能剖析工具分析每个函数(有的工具能分析到每个循环)的执行时间。性能剖析软件:IBM(Rational Quantify)、Intel(VTune)、AMD(CodeAnalyst),DSP集成环境自带。二、减少指令数 1. 使用更快的算法 快排,FFT算法 2. 选用合适的指令 3. 降低数据精度 4. 减少函数调用 a. 将小函数直接写成语句; b. 将小函数写成宏; c. 将函数声明为内联函数; 5. 空间交换时间 将中间结果保存(Google等搜索引擎算法) 6. 减少过保护 性能实在吃紧时,可以去掉冗余功能(函数参数检查、... 阅读全文
摘要:
1. 并行计算(Parallel Computing) 并行计算或称平行计算是相对于串行计算来说的。并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程。为执行并行计算,计算资源应包括一台配有多处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。 并行计算可以划分成时间并行和空间并行。时间并行即流水线技术,空间并行使用多个处理器执行并发计算,当前研究的主要是空间的并行问题。以程序和算法设计人员的角度看,并行计算又可分为数据并行和任务并行。数据并行把大的任务化解成若干个相同的... 阅读全文
摘要:
ANSWER:It's likely because of how often you are flushing the stream to disk in the C++ code. Insertingendlinto a stream inserts a new line and flushes the buffer, whilefprintfdoesn't cause a buffer flush.So your C++ example performs 20,000,000 buffer flushes while your C example will only fl 阅读全文
摘要:
Rio,Linux 重度用户说说我的理解吧。Unix 的 file 只是一个表现形式,其本质有两点:统一的名字空间 (unified namespace):表现形式是文件系统 (filesystem) 的路径;统一的访问接口 (unified interface):表现形式是 read/write 等标准函数。统一的名字空间保证了系统内各种资源都能用相同的方法发现;统一的访问接口保证了这些资源都能以相似的方法进行操作。通过这两点进而实现了以最小代价对系统内类型迥异的各种资源的调用。这样做的缺点也是很明显的,因为要兼顾不同资源类型的不同属性,所以访问操作通常被定义为了最基础最原始的字符串读写。显 阅读全文
摘要:
http://blog.csdn.net/winterttr/article/details/2590741作者:winterTTr (转载请注明)我想,这个标题或许是很多初学者的问题。尤其是像我这样的对C/C++比较熟悉,刚刚进入python殿堂的朋友们。C/C++的函数参数的传递方式根深蒂固的影响这我们的思维--引用?传值?究竟是那种呢。呵呵,语言的特性决定了是使用的方法,那么,现在我们来探究一下python的函数参数传递方式。在开始之前,我们有必要分清一下python的一些基础概念。首先要说的是:变量 与 对象在python中,类型属于对象,变量是没有类型的,这正是python的语言特性 阅读全文
摘要:
1. 用户态和内核态的概念区别究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子: 1)例子 C代码 1 void testfork() 2 { 3 if(0 == fork()) 4 { 5 6 printf(“create new process success!\n”); 7 8 } 9 10 printf(“testfork ok\n”); 11 12 } 这段代... 阅读全文
摘要:
最近在捣鼓LFS,开始要制作工具链,没听过这个东东,还有一些附属概念,于是GOOGLE了下总结一点。。维基百科在软件工程中,工具链(英语:toolchain)是一系列用于制作软件的工具。 这些工具一般一个接一个地运用,一件工具的输出输入至下一件工具,但广义上可以单单是指多个相关的工具。工具链一般包括用来编辑源代码的文本编辑器;生成可执行文件的编译器及链接器;连接操作系统的库;以及除错器。例子有GNU toolchain。工具链是集成开发环境的近义词。工具链是在每一个大型开放源码项目(包括Linux内核本身)背后默默支撑的力量。它们由一组必要的工具和软件构成,用于编译和调试从最小的工具软件到你可 阅读全文
摘要:
这两天闲着都在捣鼓VIM了,感觉有点不务正业了,不得不说VIM里面要学习的东西太多了,学习曲线无比陡峭。知识点多了有点乱,特地发个博梳理一下,都是我自己在学习过程中积累的一些,可能有点杂,凑合着看吧,轻拍,欢迎提问一起探讨。一、vim介绍与常用命令 这个就不说了吧,自行google,贴一张VI/VIM键盘图,要学习的拿去当桌面吧,哈哈。 二、vim各版本区别 ubuntu下预装的版本是vim.tiny,这个更靠近纯vi了,不能使用小键盘和方向键,在编辑模式下,移动光标会变成A B C D等字符并换行。 解决方法两个; 1.vim缺省是vi兼容模式,设置成不兼容模式就好了: ... 阅读全文