c/c+程序设计
文章平均质量分 55
bingqingsuimeng
这个作者很懒,什么都没留下…
展开
-
workflow task分析
workflow task 架构分析原创 2022-09-13 17:31:35 · 375 阅读 · 1 评论 -
ctypesgen c程序转python
https://github.com/ctypesgen/ctypesgen.git#注意事项:头文件里的引用头文件需要将引用的括号改为引号,否则可能生成文件报错①#示例 pydemolib.py 是生成的文件,可重命名../run.py -o pydemolib.py -l libxxx.so xxx1.h xxx2.h②不要将.so放在当前目录,这样自动生成的代码才能有try catch代码如果没有生成try catch:#生成后 ,找到load_library对应一行,前后添加try.原创 2021-12-28 16:34:17 · 896 阅读 · 0 评论 -
LINUX内存相关的内核参数
linux控制内存的内核参数,大多放在在/proc/sys/vm目录下,主要分为几类: 控制内存cache 1、dirty_background_bytes/dirty_background_ratio 当dirty cache到了多少的时候,就启动pdflush进程,将dirtycache写回磁盘 当有dirty_background_byte转载 2012-10-31 11:23:04 · 885 阅读 · 0 评论 -
ubuntu下装gmp,libfplll经验
新手安装libfplll 1.安装libfplll之前要安装gmp,安装gmp之前要安装m4,m4可以自动安装:sudo apt-get install m4. 2.源码安装gmp,到存放gmp源码的目录下:$ ./configure --prefix=/usr/local/gmp-5.1.1(这里是指定安装目录) $ make转载 2013-10-15 13:06:08 · 4248 阅读 · 0 评论 -
nm命令介绍
nm命令转自:http://www.hsboy.com/blog/archives/116-guid.html它用来列出一个目标文件中的各种符号。nm命令还是比较简单而且强大的。它用来列出一个目标文件中的各种符号。符号的种类很多,以下是一些常见的符号类型nm输出字转载 2013-07-24 10:10:52 · 1422 阅读 · 0 评论 -
C语言全局变量那些事儿
作为一名程序员,如果说沉迷一门编程语言算作一种乐趣的话,那么与此同时反过来去黑一门编程语言就是这种乐趣的升华。今天我们就来黑一把C语言,好好展示一下这门经典语言令人抓狂的一面。我们知道,全局变量是C语言语法和语义中一个很重要的知识点,首先它的存在意义需要从三个不同角度去理解:对于程序员来说,它是一个记录内容的变量(variable);对于编译/链接器来说,它是一个需要解析的符号(sym转载 2013-07-22 10:31:35 · 8476 阅读 · 3 评论 -
求一个整数是2的几次幂(极其高效)
1.源自linux内核源码中的一段(有汇编的,不过摘抄的c实现的,并做了一点变形)汇编的不做比较,记录下而已Linux/arch/avr32/include/asm/page.h/* Pure 2^n version of get_order */static inline int get_order(unsigned long size){ uns转载 2013-03-25 16:39:37 · 3123 阅读 · 0 评论 -
openlog、syslog和closelog函数
守护进程日志的实现syslogd守护进程用于解决守护进程的日志记录问题,而日志信息保存的位置和记录的信息级别是在syslogd守护进程的配置文件中设定的。守护进程日志主要涉及3个函数,分别是openlog、syslog和closelog函数。表8.4所示为这3个函数的具体信息。表8.4 openlog、syslog和closelog函数头文件转载 2013-03-30 22:42:17 · 9575 阅读 · 0 评论 -
浅谈时间函数gettimeofday的成本
我们在程序中会频繁地取当前时间,例如处理一个http请求时,两次调用gettimeofday取差值计算出处理该请求消耗了多少秒。这样的调用无处不在,所以我们有必要详细了解下,gettimeofday这个函数做了些什么?内核1ms一次的时钟中断处理真的可以支持tv_usec字段达到微秒精度吗?它的调用成本在i386/x86_64体系架构上代价一样吗?如果在系统繁忙时,频繁的调用它有问题吗?转载 2013-02-17 10:03:11 · 757 阅读 · 0 评论 -
ubuntu10.4下安装和使用GMP高精度数学库
1、安装:下载gmp-5.0.1的源代码,解压至gmp-5.0.1目录。su切换至超级用户权限。./configure --prefix=/usr --enable-cxx提示:checking for suitable m4… configure: error: No usable m4 in $PATH or /usr/5bin (see config.log f转载 2013-10-15 13:07:48 · 3754 阅读 · 0 评论 -
开源算法库GMP的安装与调试
GMP简介:GMP是一个任意精度的开源算术库,可用于符号整数,有理数,浮点数计算。算数库对于有没有实际的限制,唯一的限制是计算机的内存。 GMP具有丰富的函数集并且函数都有通用的接口。GMP的安装:环境:Ubuntu 11.10Terminal中运行:sudo apt-get install libgmp3-devgmp的调试:新建.c文件,输入一下代码。转载 2013-10-15 13:54:45 · 1650 阅读 · 0 评论 -
C的strncpy和snprintf (是否补充最后字符串结尾)
C的strncpy和snprintf (是否补充最后字符串结尾)C里操作字符串很高效,但也很麻烦。1. char * strcpy ( char * destination, const char * source );最常用的函数,但是却不安全,原因在于,一是要destination有足够的空间,二是要保证source和destination指向的空间没有转载 2013-10-23 11:29:37 · 1724 阅读 · 0 评论 -
我的算法学习之路
关于严格来说,本文题目应该是 我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数据结构和算法(例如 算法导论 指的实际上是 数据结构和算法导论),所以我认为本文题目是合理的。这篇文章讲了什么?我这些年学习数据结构和算法的总结。一些不错的算法书籍和教程。算法的重要性。初学第一次接触数据结构是在大二下学期的数据结构课程。然而这门课程并没有让我入门——转载 2016-10-09 17:15:34 · 534 阅读 · 0 评论 -
嵌入式linux面试题解析(二)——C语言部分一
1、编写统计一个数二进制表示中有多少个1的函数int count_bit1(int m){int count = 0;while(m){m = m & (m-1);count++;}return count;} 2、编写一个函数判断一个数是否是2的N次方int is_number(int num){if( m & (m - 1) == 0转载 2017-10-23 09:57:20 · 883 阅读 · 1 评论 -
Python中的装饰器(decorator)
想理解Python的decorator首先要知道在Python中函数也是一个对象,所以你可以将函数复制给变量将函数当做参数返回一个函数函数在Python中给变量的用法一样也是一等公民,也就是高阶函数(High Order Function)。所有的魔法都是由此而来。1,起源我们想在函数login中输出调试信息,我们可以这样做1234转载 2018-01-12 17:11:48 · 223 阅读 · 0 评论 -
Python中用format函数格式化字符串的用法
自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足。那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱。语法它通过{}和:来代替%。“映射”示例通过位置?123456In [1]:'{0},{1}'.format('kzc',18)转载 2018-01-12 17:20:03 · 216 阅读 · 0 评论 -
windows 安装python3.6(numpy,scipy,pandas,matplotlib,scikit-learn)
用python将近一年了,一直用的是python3.4,最近想把自己的python环境升级到最新的python3.6操作系统windows8.1 64位1、到官网下载相应安装包,直接点击安装注意勾选相应选项,如果没有勾选需要自己安装造成不便安装结束点击完成即可我在官网下载的是32位版本python,注意在以后安装各种安装包时一定要注意与之匹配否则会报错转载 2018-01-09 10:35:54 · 1567 阅读 · 0 评论 -
std bind 原理简单图解(清晰简明)
本文解释了bind 是如何工作的。为了清晰,我对图中的语法作了一些简化(例如,省略函数调用操作符的参数类型),并且简化了 bind 的实现.bind 可以用来将用户提供的需要一个参数的函数转换成不需要参数的函数对象。绑定的值(在这个例子中是123)存储在函数对象内并且会被自动传递给用户指定的函数:参数绑定也可以用于将类成员函数转换成零参数的函数对象。猿类们都知道,非静态成员函数需要一个隐式的 th...转载 2018-03-12 09:45:38 · 516 阅读 · 0 评论 -
静态代码检查工具
5个静态代码检查工具FlexeLint支持windows,linux http://www.gimpel.com/html/flex.htmpclint只支持 windowshttp://www.gimpel.com/html/pcl.htmsplint只支持c代码的文件http://www.splint.org/cppcheck转载 2013-02-06 17:09:09 · 1107 阅读 · 0 评论 -
PC-lint安装与集成(检查Unix环境代码)(一)
From:http://hi.baidu.com/zhangzongg/blog/item/0fd0f3d9e87874e377c6383b.htmlPC-LINT简介 PC-Lint是C/C++软件代码静态分析工具,你可以把它看作是一种更加严格的编译器。它不仅可以检查出一般的语法错误,还可以检查出那些虽然符合语法要求但不易发现的潜在错误。 C语言的灵活性带来了代码效转载 2012-12-15 21:09:58 · 872 阅读 · 0 评论 -
YUV格式一点通
概述 YUV(亦称YCrCb)是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。其中的 Y,U,V几个字母不是英文单词的组合词,Y代表亮度,uv代表色差,u和v是构成彩色的两个分量。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色 CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路转载 2012-12-13 13:56:54 · 674 阅读 · 0 评论 -
利用Oprofile对多核多线程进行性能分析
杨小华在对应用程序不断调优的过程中,除了制定完备的测试基准(Benchmark)外,还需要一把直中要害的利器——性能分析工具。 根据工具的复杂度和所提供的功能,可以将性能工具分为两个层次: 基本的计时工具在普通生活中,秒表是最简单的计时工具。根据该思想,可以将计时函数放在代码的任意位置并多次调用,这样就可以测量出整个应用或者某一部分的运行时间。这种分析方转载 2012-11-30 15:39:22 · 1371 阅读 · 0 评论 -
关于为什么整型不能和float,double型直接比较大小的原因
实型数据在内存中存在的时候是以指数形式储存的,一般前三个字节储存小数部分,后一个字节储存指数部分 比如380在内在中的储存是小数部分:0.38,指数部分:3,即0.38*10^3(这个与科学计数法不同),前面的是小数,在转换为二进制数时有时会出现误差(具体自己看小数转二进制数部分,可能出现无限循环),所以实型数据的储存并不准确 所以实型数据用一个字节来储存指数部分,只表示38位转载 2012-10-26 16:04:46 · 4031 阅读 · 0 评论 -
sqlite操作语句
建立数据库档案用sqlite3建立数据库的方法很简单,只要在shell下键入(以下$符号为shell提示号,请勿键入):$ sqlite3 foo.db如果目录下没有foo.db,sqlite3就会建立这个数据库。sqlite3并没有强制数据库档名要怎么取,因此如果你喜欢,也可以取个例如foo.icannameitwhateverilike的档名。转载 2012-10-26 13:45:31 · 13162 阅读 · 1 评论 -
两个在存储方面的用到的函数
statfs statfs函数使用说明 功能描述: 查询文件系统相关的信息。 用法: #include /* 或者 */ int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct statfs *buf); 参数: path: 位于需要查转载 2012-11-01 20:52:16 · 603 阅读 · 0 评论 -
c++中vector的用法详解[转]
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.用法: 1.文件包含: 首先在程序开头处加上#include以包含所需要的类文件vector 还有一定要加上using namespace std; 2.变量声明:转载 2012-10-31 14:48:55 · 849 阅读 · 0 评论 -
c++中的map
1.map的构造函数Map mapStudent;2. 数据的插入在构造map容器后第一种:用insert函数插入pair数据#pragma warning (disable:4786) )#include #include #include Using namespace std;Int main(){ Map mapStudent; mapSt转载 2012-10-31 14:41:44 · 451 阅读 · 0 评论 -
LINUX内存高,触发OOM-KILLER问题解决
最近遇到两起Linux的内存问题,其一是触发了oom-killer导致系统挂1. 首先确认该系统的版本是32位?#uname -aLinux alarm 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i3862. 我们了解转载 2012-10-31 11:25:29 · 1625 阅读 · 0 评论 -
重写、覆盖、重载、多态几个概念的区别分析
override->重写(=覆盖)、overload->重载、polymorphism -> 多态 override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则: 1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2、重写方法的访问修饰符一定要大于被重写方转载 2012-10-31 08:45:41 · 510 阅读 · 0 评论 -
[深入理解C++(一)]类型转换(Type Casting)
[深入理解C++(一)]类型转换(Type Casting)罗朝辉 (http://blog.csdn.net/kesalin)CC许可,转载请注明出处类型转换就是将给定类型的表达式转换为另一种类型。C++中的转型可分为两种:隐式类型转换和显式类型转换。下面将一一介绍。一,隐式类型转换隐式类型转换是C中的遗留物,在C+转载 2012-10-31 08:46:53 · 576 阅读 · 0 评论 -
Java之本地方法
本地方法就是直接和硬件打交道的一个软件模块,由虚拟机来执行调用。当我们的JAVA应用程序声明了本地方法就会通过虚拟就调用本地方法,本地方法中主要是实现一些对硬件的处理。一、为什么会有本地方法呢?它的作用是什么?java使用起来非常方便,然而有些层次的任务用java实现起来不容易,或者我们对程序的效率很在意时,问题就来了。1>与java环境外交互: 有时java转载 2012-10-29 12:56:04 · 991 阅读 · 0 评论 -
代码的可充入性问题
2005 年 2 月 20 日如果要对函数进行并发访问,不管是通过线程还是通过进程,您都可能会遇到函数不可重入所导致的问题。在本文中,通过示例代码了解如果可重入性不能得到保证会产生何种异常,尤其要注意信号。引入了五条可取的编程经验,并对提出的编译器模型进行了讨论,在这个模型中,可重入性由编译器前端处理。在早期的编程中,不可重入性对程序员并不构成威胁;函数不会有并发访问,也没有中断。转载 2012-10-29 10:28:25 · 904 阅读 · 0 评论 -
编写可重入和线程安全的代码
原文地址: http:/unet.univie.ac.at/aix/aixprggd/genprogc/writing_reentrant_thread_safe_code.htm译者:Love. Katherine,2007-03-28译文地址:http://blog.csdn.net/lovekatherine/archive/2007/03/28/1544585.aspx转载 2012-10-29 10:19:16 · 844 阅读 · 0 评论 -
linux下svn命令大全
1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前目录下转载 2012-10-17 10:17:07 · 548 阅读 · 0 评论 -
memalign和valloc
memalign在GNU系统中,malloc或realloc返回的内存块地址都是8的倍数(如果是64位系统,则为16的倍数)。如果你需要更大的粒度,请使用 memalign或valloc。这些函数在头文件“stdlib.h”中声明。在GNU库中,可以使用函数free释放memalign和valloc 返回的内存块。但无法在BSD系统中使用,而且BSD系统中并未提供释放这样的内存块的途径。转载 2012-09-25 10:18:56 · 2606 阅读 · 0 评论 -
linux用户空间下的原子操作
Atomic Operations“Where did atomic.h go?!?”..was my surprised reaction when I compiled one of my applications in Debian Etch for the first time. It compiled with no problems on Sarge and on Gent转载 2012-08-27 14:09:23 · 4958 阅读 · 0 评论 -
close 与 unlink区别
close 与 unlink区别 每一个文件,都可以通过一个struct stat的结构体来获得文件信息,其中一个成员st_nlink代表文件的链接数。 当通过shell的touch命令或者在程序中open一个带有O_CREAT的不存在的文件时,文件的链接数为1。 通常open一个已存在的文件不会影响文件的链接数。open的作用只是使调转载 2012-08-01 09:56:33 · 1323 阅读 · 0 评论 -
全面了解setjmp与longjmp的使用
将对setjmp与longjmp的具体使用方法和适用的场合,进行一个非常全面的阐述。另外请特别注意,setjmp函数与longjmp函数总是组合起来使用,它们是紧密相关的一对操作,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,才能按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理。 与goto语句的作用类似,它能实现本地的跳转 这种情况容易理解转载 2012-07-27 10:05:52 · 1667 阅读 · 0 评论 -
oprofile 使用之四(注意事项---灰常重要)
1.在文件系统\etc下创建符号链接 ln –sf /proc/mounts mtab 。同时确保文件系统中存在如下共享库:libdl.so.2、libstdc++.so.6、libm.so.6、libgcc_s.so.1、libc.so.6。2.由于Oprofile编译时采用的是绝对路径,在编译时设置的安装路径必须与嵌入式平台上运行时的路径一致。可以复制/mnt/oprofile/文件夹转载 2012-11-29 17:38:49 · 1146 阅读 · 0 评论 -
oprofile 使用之二(run 使用事件采样)
oprofile 是 Linux 平台上的一个功能强大的性能分析工具, 支持两种采样(sampling)方式:基于事件的采样(event based)和基于时间的采样(time based)。 基于事件的采样是oprofile只记录特定事件(比如L2 cache miss)的发生次数,当达到用户设定的 定值时oprofile 就记录一下(采一个样)。这种方式需要CPU 内部有转载 2012-11-29 17:37:28 · 1237 阅读 · 0 评论