- 博客(46)
- 资源 (2)
- 收藏
- 关注
转载 linux kernel内存回收机制
http://www.wowotech.net/linux_kenrel/233.html无论计算机上有多少内存都是不够的,因而linux kernel需要回收一些很少使用的内存页面来保证系统持续有内存使用。页面回收的方式有页回写、页交换和页丢弃三种方式:如果一个很少使用的页的后备存储器是一个块设备(例如文件映射),则可以将内存直接同步到块设备,腾出的页面可以被重用;如果页面没有后
2018-01-02 22:20:12
397
原创 C++运算符重载
#include using namespace std;class A{ public: A(int v):m_val(v){} A operator+(A a1); bool operator==(A a1); friend ostream& operator<<(ostream& out, A a1); p
2015-10-25 17:53:25
389
转载 CMMI实施流程
实施流程阶段1:CMMI项目启动会明确企业实施CMMI的商业目标,建立CMMI项目实施的沟通机制。阶段2:CMMI基础培训和过程改进小组(EPG)组建进行CMMI基础概念讲解,指导企业建立核心的过程改进小组。阶段3:诊断充分了解企业研发过程现状,识别企业现有软件过程与企业现阶段理应达到的CMMI成熟度级别的差距,提交诊断报告,进行过程改进的策划。
2014-05-18 19:08:42
1360
转载 Huffman 编码压缩算法
前两天发布那个rsync算法后,想看看数据压缩的算法,知道一个经典的压缩算法Huffman算法。相信大家应该听说过 David Huffman 和他的压缩算法—— Huffman Code,一种通过字符出现频率,Priority Queue,和二叉树来进行的一种压缩算法,这种二叉树又叫Huffman二叉树 —— 一种带权重的树。从学校毕业很长时间的我忘了这个算法,但是网上查了一下,中文社区
2014-03-28 17:00:32
722
转载 iptables
简单地说,就是设定一些规则,对进来和出去的数据包的ip做检查,符合规则的通行,不符合的做响应的处理,要了解这个流程中的三个表:nat表,filter表,mangle表,五条链:INPUT链,OUTPUT链,FORWARD链,PREROUTING链,POSTROUTING链。1)对于进来的包:经过IP校验后,经过第一条链PREROUTING处理,一般是做DNAT;然后经过路由,决定是到本
2014-02-05 20:18:25
512
转载 putty工具命令行参数
putty.exe [-ssh | -telnet | -rlogin | -raw] [user@]hostExample: putty -ssh -l vagrant -pw vagrant -P 2222 127.0.0.1 -V print version information and exit -pgpfp print PGP key fingerpri
2014-01-11 22:41:42
1373
原创 测试基础整理
白盒测试、黑盒测试、静态测试、动态测试、性能测试、测试自动化、安全性测试、配置测试、兼容性测试、测试工具单元测试、集成测试、系统测试、验收测试的区别:根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要测试单元是否符合“设计”。
2013-08-25 12:26:18
1168
转载 CMM流程之总结
从CMM软件开发流程的理念、流程这两个方面概括介绍一下CMM。CMM软件开发流程试图将几十年来风险比较不可控的软件开发用一个规范的流程控制起来,变成一个类似传统工业化生产流程的工业。CMM理念CMM主要理念之一就是加强过程控制,认为只要开发的过程按照规定动作执行,就可以很大程度上降低软件开发的质量、进度风险。而过程质量控制的主要手段就是检视。CMM的理念之二是根据经验数
2013-08-24 16:18:34
1269
原创 嵌入式开发流程整理
当前,嵌入式开发已经逐步规范化,在遵循一般工程开发流程的基础上,嵌入式开发有其自身的一些特点,如下图所示为嵌入式系统开发的一般流程。主要包括系统需求分析(要求有严格规范的技术要求)、体系结构设计、软硬件及机械系统设计、系统集成、系统测试,最终得到最终产品。
2013-08-24 15:58:52
1374
原创 敏捷开发整理
开发宣言:个体和交互 胜过 过程和工具可以工作的软件 胜过 面面俱到的文档客户合作 胜过 合同谈判响应变化 胜过 遵循计划虽然右项也有价值,但是我们认为左项具有更大的价值。敏捷开发与测试的关系:正因为敏捷开发的这些特征,原则,模式等等,才需要有相应的敏捷测试团队与之匹配,注重和敏捷开发团队配合,沟通,并且重要的是测试团队要理解和重视敏捷的思想,融入这样的一个大的
2013-08-24 15:25:10
871
原创 调制解调笔记
数字与模拟的区别是:数字利于机器处理但有失真、模拟保真度高但不利于机器处理调制是由于频带有限为了提高频谱利用率、通过搬移到高频降低直流分量传送的损耗、提高纠错和差错能力。调制分为模拟调制和数字调制。声音->模拟交流电->AD抽样->量化->信源编码->信道编码->调制->信道->解调->信道解码->信源解码->DA->声音编码分为信源编码(压缩)和信道编码(冗余、校验)。信道复
2013-08-17 14:56:35
1095
原创 机顶盒笔记
机顶盒(STB)的主要作用是用普通模拟电视机收看数字电视或数字高清晰度电视,当然也具备网络和有条件接收功能(CA)。目前很多机顶盒为缩短开发时间和提高扩展性都采用中间件的方式。根据传输媒体的不同,数字电视机顶盒又分为数字卫星机顶盒(DVB-S)、地面数字电视机顶盒(DVB-T)和有线数字电视机顶盒(DVB-C)三种,三种机顶盒的硬件结构主要区别在解调部分。现在出来的IPTV通过网络传输节目。
2013-08-14 22:48:48
860
转载 编写linux module
Linux内核模块编程的资料有些纷繁复杂,有的过于简单,有的过于庞杂,我试图用笔记的形式想读者展示怎样来进程Linux模块编程,力图做到简明扼要,这篇文章也是作为本人备忘的资料,所以有些地方过于简略是难免的。本来这篇文章的目的就是让用户知其然,至于所以然还是请参考相应的资料,其实最好的资料莫过于Linux Kernel Source。适用范围:* Linux Kernel >= 2.6.0
2013-07-21 22:09:27
775
转载 C++与Java的语法区别
首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别。main 函数C++//自由浮动的函数int main( int argc, char* argv[]){printf( "Hello, world" );}Java// 每个函数都必须是一个类的一部分;当java 运行是一个特定类的主函数会被调用// (因此你可以让每个类都有一个main
2013-07-21 14:21:19
645
转载 Linux C SQLite3 编程
SQLite3SQLite是一个轻量级的数据库。和常用的MySQL大同小异。和MySQL相比,数据类型基本一样,只是sqlite的指令都是以"."开头(如:mysql中查看当前有哪些数据库是“show databases",而sqlite中是".databases")。当然,SQL语句都是一样的语法规则。Host System: Archlinux gcc: 4.6.1 201108
2013-07-21 01:07:40
676
原创 SQL常用命令
(1) 数据记录筛选:sql="select * from 数据表 where 字段名=字段值 order by 字段名 [desc]"sql="select * from 数据表 where 字段名 like '%字段值%' order by 字段名 [desc]"sql="select top 10 * from 数据表 where 字段名 order by 字段名 [desc]"
2013-07-20 23:49:09
935
原创 vim学习笔记一
vim中执行shell命令,有以下几种形式1):!command不退出vim,并执行shell命令command,将命令输出显示在vim的命令区域,不会改变当前编辑的文件的内容例如:!ls -l特别的可以运行:!cmd来启动一个cmd shell并执行命令,不需要退出vim2):r !command将shell命令command的结果插入到当前行的下一行例如
2013-07-20 15:39:58
618
原创 FLTK学习笔记三
Drawing Things in FLTKThere are only certain places you can execute drawing code in FLTK. Calling these functions at other places will result in undefined behavior!• The most common place is insid
2013-07-04 22:52:26
754
原创 FLTK学习笔记二
Making Your Own BoxtypesYou can define your own boxtypes by making a small function that draws the box and adding it to the table of boxtypes.Adding Your Box Type#define XYZ_BOX FL_FREE_BOXT
2013-07-03 23:36:38
818
原创 FLTK学习笔记一
The widgets are created using the C++ new operator. For most widgets the arguments to the constructor are:Fl_Widget(x, y, width, height, label)label is a pointer to a character string to label the
2013-07-01 22:38:39
871
转载 gcc同时使用动态和静态链接
场景是这样的。我在写一个Nginx模块,该模块使用了MySQL的C客户端接口库libmysqlclient,当然mysqlclient还引用了其他的库,比如libm, libz, libcrypto等等。对于使用mysqlclient的代码来说,需要关心的只是mysqlclient引用到的动态库。大部分情况下,不是每台机器都安装有libmysqlclient,所以我想把这个库静态链接到Nginx模
2013-06-30 15:14:16
462
转载 C/C++与Lua互相调用
function luaf_Add(x, y) print("luaf_Add: x=" .. x .. ", y=" .. y .. ", x+y=" .. x+y) return x + yend#include int main (void){ const int x = 123, y = 456; int ret = 0; lua_Stat
2013-06-23 23:21:51
726
转载 在线UML工具
类图、活动图、用例图:http://yuml.me/diagram/scruffy/class/draw 序列图:http://www.websequencediagrams.com/序列图、协作图:http://www.diagrammr.com/visio流程图:www.draw.io
2013-06-23 13:36:50
1314
原创 电路学习笔记(一)
原文:http://www.elecfans.com/yuanqijian/sanjiguang/20120831286715.htmli(b)->i(e)->i(c)i(c)不是产生的,而是i(e)泄露造成的,所以只能通过i(c)=f(i(e))计算,无法通过其他方式获得。要使三极管处于放大状态就只用保证V(be)正偏导通,V(cb)反偏即可。产生i(c)的条件是存在i(b),i
2013-06-16 15:01:12
922
原创 自动化测试
#!/usr/bin/luawhile true do os.execute("ls") os.execute("sleep 1m")end#!/usr/bin/bashwhile [ true ]do ls sleep 1mdone
2013-06-10 17:52:23
691
原创 linux kernel学习笔记(一)
include/linux/init.hmodule_init\module_exit\__setup1、通过alias可以指定函数的别名。2、同时加载不同的动态库时,即使有相同的函数名也不会引起任何异常,并且可以分别进行调用。include/asm-i386/unistd.hThis file contains the system call numbers.
2013-06-10 17:32:26
1001
转载 加密算法
对称加密算法对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须
2013-05-25 12:47:56
546
转载 网络入侵一般步骤
第一步:进入系统 1. 扫描目标主机。 2. 检查开放的端口,获得服务软件及版本。 3. 检查服务软件是否存在漏洞,如果是,利用该漏洞远程进入系统;否则进入下一步。 4. 检查服务软件的附属程序(*1)是否存在漏洞,如果是,利用该漏洞远程进入系统;否则进入下一步。 5. 检查服务软件是否存在脆弱帐号或密码,如果是,利用该
2013-05-05 13:53:44
2550
转载 开启Linux 路由转发功能
如何使用iptables的NAT功能把红帽企业版Linux作为一台路由器使用?方法:提示: 以下方法只适用于红帽企业版Linux 3 以上。1、打开包转发功能:echo "1" > /proc/sys/net/ipv4/ip_forward2、修改/etc/sysctl.conf文件,让包转发功能在系统启动时自动生效:# Controls IP pa
2013-04-29 11:27:33
801
转载 函数调用的压栈方式
几种函数调用方式__cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。_stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右
2013-04-15 21:18:26
1061
转载 Linux静态库和动态库
库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 静态库和动态库的区别1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为
2013-04-14 15:06:58
391
转载 Makefile中用宏定义进行条件编译
在源代码里面如果这样是定义的: #ifdef MACRONAME //可选代码 #endif 那在makefile里面 gcc -D MACRONAME=MACRODEF 或者 gcc -D MACRONAME 这样就定义了预处理宏,编译的时候可选代码就会被编译进去了。 对于GCC编译器,有如下选项: -D macro=string,等价于在头文
2013-04-14 14:14:35
659
原创 Lua syntax
Chapter 1: Getting Started1.1 ChunksEach piece of code that Lua executes, such as a file or a single line in interactive mode, is called a chunk. A chunk is simply a sequence of commands (or state
2013-03-24 12:49:03
701
转载 Linux下patch的制作和应用
转自:http://blog.chinaunix.net/u3/100239/showart_1984963.html首先介绍一下diff和patch。在这里不会把man在线文档上所有的选项都介绍一下,那样也没有必要。在99%的时间里,我们只会用到几个选项。所以必须学会这几个选项。1、diff--------------------NAMEdiff - find diffe
2013-03-17 21:49:25
437
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人