- 博客(38)
- 资源 (2)
- 收藏
- 关注
转载 什么是MIPI接口
什么是MIPI接口 摘要: 随着客户要求手机摄像头像素越来越高同时要求高的传输速度传统的并口传输越来越受到挑战。提高并口传输的输出时钟是一个办法但会导致系统的EMC设计变得越来困难增加传输。 手机摄像头MIPI技术介绍 随着客户要求手机摄像头像素越来越高同时要求高的传输速度传统的并口传输越来越受到挑战。提高并口传输的输出时钟是一个办法但会导致系统的EMC设计变得越来困难,增加传输
2017-09-30 10:55:22
19792
原创 C++代码优化总结-1
最近负责代码的优化工作,在优化工作过程中发现,优化工作需要学习了解的东西还是比较多的,在此慢慢累积。1 选择合适的算法和数据结构 选择一种合适的数据结构很重要,如果在一堆随机存放的数中使用了大量的插入和删除指令,那使用链表要快得多。数组与指针语句具有十分密切的关系,一般来说,指针比较灵活简洁,而数组则比较直观,容易理解。对于大部分的编译器,使用指针比使用数组生成的代码更短,执行效率更高。
2017-09-22 23:24:26
366
转载 浅析C语言的非局部跳转:setjmp和longjmp
浅析C语言的非局部跳转:setjmp和longjmp作者:李恩华 写于2012.4.22日凌晨西甲国家德比之前C语言中有一个goto语句,其可以结合标号实现函数内部的任意跳转(通常情况下,很多人都建议不要使用goto语句,因为采用goto语句后,代码维护工作量加大)。另外,C语言标准中还提供一种非局部跳转“no-local goto",其通过标准库中的两个标准函数setjmp和l
2017-04-07 16:10:33
331
转载 左值引用与右值引用
在C语言中,我们常常会提起左值(lvalue)、右值(rvalue)这样的称呼。而在编译程序时,编译器有时也会在报出的错误信息中会包含左值、右值的说法。不过左值、右值通常不是通过一个严谨的定义而为人所知的,大多数时候左右值的定义与其判别方法是一体的。一个最为典型的判别方法就是,在赋值表达式中,出现在等号左边的就是“左值”,而在等号右边的,则称为“右值”。比如:a = b + c;在
2016-12-29 10:16:47
397
原创 关于加密和解密 -- 1
在对文件进行加密处理中,主要分为两种加密方式,对称加密和公钥加密,常用的对称加密:DES, 3DES, AES128,AES256,公钥加密:RSA。使用公钥加密能够进行身份验证以及具有不可否认性,但该加密过程相比对称加密要慢很多,而对称加密速度较快,但存在密钥分配问题,所以在通常的加密处理过程中采用的方式为: 使用对称加密对文件进行加密,使用公钥加密对对称密钥进行加密,以保证密钥安全分配。
2016-12-17 18:27:57
1067
原创 callgrind查看程序流程
如果想了解某块源码的流程,做法是:先使用-g选项把代码编译成可执行文件,然后使用以下命令运行:valgrind --tool=callgrind myprogram args接着进行各种测试,最后把程序停掉。此时,当前目录产生一个文件如:callgrind.out.9074,使用KCachegrind将它打开查看就行。
2016-11-30 15:34:00
630
转载 valgrind
http://blog.youkuaiyun.com/yanghao23/article/details/7514587valgrind通常用来成分析程序性能及程序中的内存泄露错误一 Valgrind工具集简绍Valgrind包含下列工具: 1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。 2、callgrind:检测程
2016-11-30 15:32:23
511
2
转载 性能分析工具--- gprof
性能分析工具gprof介绍Ver:1.0目录1. GPROF介绍 42. 使用步骤 43. 使用举例 43.1 测试环境 43.2 测试代码 43.3 数据分析 53.3.1 flat profile模式 63.3.2 call graph模式 74.
2016-11-30 15:30:03
680
转载 虚拟地址、线性地址和物理地址的转换
虚拟地址、线性地址和物理地址的转换一、 虚拟地址即逻辑地址,是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是
2016-11-29 16:44:24
733
转载 用户态与内核态
究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:1)例子C代码1. void testfork(){ 2. if(0 = = fork()){ 3. printf(“create new process
2016-11-29 16:43:34
378
转载 单内核与微内核
单内核是个很大的进程。它的内部又能够被分为若干模块(或是层次或其他)。但是在运行的时候,他是个单独的二进制大映象。其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。在运行效率上,单内核会具有一定的好处.单内核结构是非常有吸引力的一种设计,由于在同一个地址空间上实现所有低级操作的系统控制代码的复杂性的效率会比在不同地址空间上实现更高些。单核结构正趋向于容易被正确设计,所
2016-11-29 16:42:24
2489
转载 回调函数
回调函数 在看LWIP时,见到用回调函数,再看某老外公司OPC源代码时,见到用回调函数。看我国内某些代码(我公司软件等)时没用到。于是,我对回调函数产生了很大的好奇。以前,我写VC程序时用到过回调函数,但是没有用C语言来使用。最近,看到国外大量的经典代码中广泛使用了回调函数(LWIP、某两个公司的OPC程序等),都是C语言来实现的,而不是VC windows程序中别人实现自己使用的那种。
2015-08-19 19:57:43
334
原创 ARP数据包格式、ARP欺骗编程实现
注意:并不是在有ARP请求时,才会有APR响应数据包。首先介绍ARP协议的报文格式。结构ether_header定义了以太网帧首部;结构arphdr定义了其后的5个字段,其信息用于在任何类型的介质上传送ARP请求和回答;ether_arp结构除了包含arphdr结构外,还包含源主机和目的主机的地址。定义常量#define EPT_IP 0x0800 /*
2015-04-18 21:43:49
4645
转载 coredump详解
一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。 通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆
2015-04-01 21:50:11
640
转载 linux线程编程
进程 系统中程序执行和资源分配的基本单位 每个进程有自己的数据段、代码段和堆栈段 在进行切换时需要有比较复杂的上下文切换 线程 减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多 进程内独立的一条运行路线 处理器调度的最小单元,也称为轻量级进程可以对进程的内存空间和资源进行访问,并与同一进程中的其他线程共享 线程
2015-01-20 14:23:44
394
原创 内存池的小结
在编程中使用到了内存池,为此先学习一下内存池的相关知识吧!1. 什么是内存池?所谓内存池就是预先分配好的一定数量的大小相等的内存块,当需要使用的时候可以直接从中使用,而不必再申请。2. 为什么要使用内存池?有什么优点?使用new 或 malloc进行内存分配会使用很多时间,特别是高频率的小内存申请释放。优点: 极少的堆碎片整理; 更快的分配速度;
2015-01-20 09:14:56
378
转载 netstat命令
netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的I
2015-01-11 15:54:44
445
转载 条件变量 多线程
最近看《UNIX环境高级编程》多线程同步,看到他举例说条件变量pthread_cond_t怎么用,愣是没有看懂,只好在网上找了份代码,跑了跑,才弄明白 [cpp] view plaincopy#include #include #include pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化
2015-01-11 10:32:26
309
转载 内存池介绍
看到一篇关于内存池技术的介绍文章,受益匪浅,转贴至此。 原贴地址:http://www.ibm.com/developerworks/cn/linux/l-cn-ppp/index6.html 6.1 自定义内存池性能优化的原理 如前所述,读者已经了解到"堆"和"栈"的区别。而在编程实践中,不可避免地要大量用到堆上的内存。例如在程序中维护一个链表的数据结构时,每次新增或者删除一个链
2015-01-10 12:46:10
348
转载 gdb调试
GdbGdb使用流程首先,笔者给出了一个短小的程序,由此带领读者熟悉一下Gdb的使用流程。强烈建议读者能够实际动手操作。首先,打开Linux下的编辑器Vi或者Emacs,编辑如下代码。(由于为了更好地熟悉Gdb的操作,笔者在此使用Vi编辑,希望读者能够参见3.3节中对Vi的介绍,并熟练使用Vi)。 #include int sum(int m);int main(
2015-01-10 12:26:21
580
转载 gcc详解
GNU CC(简称为Gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。Gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且Gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译
2015-01-10 12:00:03
428
转载 Makefile 中 gcc 参数小结
gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp](把"include"的文件拷贝到要编译的源文件中,用实际值替代"define"的文本,在调用宏的地方进行宏替换) 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序
2015-01-10 11:30:59
1596
原创 fsck命令——小记
有时候维护Linux服务器时会面临这样一种错误,即显示文件系统变成(Read Only System),即文件系统变成只读的方式,产生这一问题的原因可能有两种: (1)多机写入时同步机制出现问题 (2)单机写入时
2014-12-29 17:40:55
563
原创 /etc/fstab文件小解
在《关于磁盘分区的小脚本 》中提到了fstab文件,当时,仅仅分析了添加的内容(如下),今天需要进行仔细的分析一下该文件内容。/dev/sda2 swap swap defaults 0 0 /dev/sda3 /data ext4 defaults 0 0第一列: 为需要挂载的文件系统或存储设备第二列: 挂载点第三列:文件系统 或分区类型
2014-12-29 10:18:02
519
原创 关于磁盘分区的小脚本-----parted命令
脚本内容如下: 1 #!/bin/sh 2 val1=$(fdisk -l | grep "Disk /dev/sda" | awk '{print $5}') 3 val2=$[1024 * 1024] 4 disksize=$[val1 / val2] 5 parted /dev/sda mkpart primary linux-swap 8002MB 161
2014-12-29 09:01:41
1351
原创 线程的学习3—线程的控制
一、线程的属性创建线程时,可以指定线程的属性。结构体:pthread_attr_t attr;初始化:使用函数pthread_attr_init(&attr)函数初始化该结构,初始化后,该结构将设置为系统默认的属性值。销毁: pthread_attr_destory(&attr),在调用create函数创建好线程后,就可以调用销毁函数,销毁属性结构体
2014-12-12 09:35:06
363
原创 线程学习笔记2
在两个进程间进行socket通信中,在其中一个进程中创建新的线程,用于监听,编程中发现自己对线程的操作仅限于线程的创建,销毁,以及互斥量的操作,感觉还有许多关于线程的东西没有掌握,so,需要好好学习总结一下,不足之处望指出! 为什么要引入线程呢? 虽然进程可以提高CPU的利用率,但是进程之间的切换是非常耗费资源和时间的,为了能更进一步的提高操作系统的并发进,
2014-12-10 09:56:17
335
转载 linux下挂载img方法
目的:在linux下挂载img文件,以实现对img文件的修改# fdisk -lu arch-live-usb.imgYou must set cylinders.You can do this from the extra functions menu.Disk arch-live-usb.img: 0 MB, 0 bytes248 heads, 19 sectors/t
2014-12-09 13:35:49
3561
原创 守护进程学习
概念:守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并 且周期性地执行某种任务或等待处理某些发生的事件。守护进程常常在系统引导装入时启动,在系统关闭时终止。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。守护进程创建的理论过程: 1、创建子进程,父
2014-12-08 10:37:15
429
转载 僵尸进程与孤儿进程学习
原文:http://www.cnblogs.com/Anker/p/3271773.html1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本
2014-12-08 10:14:32
294
转载 linux 线程学习1
原文:http://www.cnblogs.com/forstudy/archive/2012/04/05/2433853.html进程 系统中程序执行和资源分配的基本单位 每个进程有自己的数据段、代码段和堆栈段 在进行切换时需要有比较复杂的上下文切换 线程 减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多 进程内独立的
2014-12-08 09:42:37
385
转载 iptables语法
iptables工具__过滤包—命令(-A、-I、-D、-R、-L等)、参数(-p、-s、-d、--sport、--dport、-i、-o等)、动作-j (ACCEPT、DROP、REJECT、REDIRECT等) iptables 指令语法: iptables [-t table] command [match] [-j target/jump] -t
2014-11-30 14:44:53
404
转载 iptables使用实例
实例: 链基本操作: [root@rh34 root]# iptables -L -n (列出表/链中的所有规则,包过滤防火墙默认使用的是filter表,因此使用此命令将列出filter表中所有内容,-n参数可加快显示速度,也可不加-n参数。) [root@rh34 root]# iptables -F (清除预设表filter中所有规则链中的规则) [ro
2014-11-30 14:43:30
347
原创 iptables详解
在检测器的系统漏洞扫描中,扫出许多漏洞,为解决这些系统漏洞问题,采取了关闭端口的方法。在关闭端口中用到了iptables命令,现在就总结一下此命令的相关知识吧! 先贴出在关闭端口中使用的脚本吧!#!/bin/bash#清除所有端口iptables -F#设置链的默认策略iptables -P INPUT DROPiptables -P FORWARD
2014-11-30 14:20:01
477
转载 DNS报文学习
DNS协议运行在UDP协议之上,使用端口53。 DNS请求报文的结构是0 15 16 31标识ID标志问题数资源记录数授权资源记录数
2014-11-30 13:48:09
736
原创 glib学习-1
在看检测器的源码中看到有许多地方用到了glibc中的函数,感觉挺方便的,看来还是需要好好学习一下的!glib库是Linux平台下最常用的c语言函数库,具有很好的移植性和实用性。glib是用C实现的.glib提供了动态数组、单/双向链表、哈希表、多叉树、平衡二叉树、字符串等常用容器,完全是面向对象设计的,实现得非常精致。 1、类型定义 整数类型:gint8 、guint8、
2014-11-30 13:25:56
358
转载 pkg-config的学习笔记
之前听说过pkg-config,但是一直没怎么使用到,最近老是听身边的人提起pkg-config,看来我也需要好好补习一下相关知识了,就今天吧!pkg-config干什么用的?pkg-config 是一个提供从源代码中编译软件时查询已安装的库时使用的统一接口的计算机软件。pkg-config原本是设计用于Linux的,但现在在各个版本的BSD、windows、Mac OS X和Sola
2014-11-30 11:36:24
553
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人