自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kkxgx的专栏

一些学习的笔记。

  • 博客(64)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux Smack 学习总结

Linux 中的安全模块LSM是一种轻量级的访问控制框架。用户在执行系统调用时,先通过内核接口依次执行功能性的错误检查,接着进行传统的DAC检查,在访问内核之前通过LSM钩子函数调用LSM,LSM根据具体的访问控制策略来决定方法的合法性,以此来实现访问控制。访问控制的架构图: 1, DAC (Discretionary Access Control) 自主访问控制 Linux文件系统中对文件

2016-08-01 21:32:26 6126

原创 openssl 学习之证书中提取N 和 E

通常数字证书包含很多信息,其中N和E值即我们称为的公钥。如何从PEM 或者DER格式的证书中提出证书呢?下面给出代码实现从PEM和DER编码的证书中提出N、E。#include #include #include #include void PrintHex(unsigned char *str, unsigned int len){ int i = 0; for

2014-02-24 22:42:39 11861 2

原创 openssl 学习之enc中salt参数解析

openssl 命令行加密中salt 解析

2013-10-20 10:12:22 15203 1

原创 openssl 学习之SSL/TLS

之前在微博上看到一个分享,关于HTTPS的,原文链接The First Few Milliseconds of an HTTPS Connection,加上最近也在学习openssl 的相关知识。所以也进行简单的实验,并整理一些资料,以加深对SSL、TLS的了解。一,基本概念SSL是安全套接层(Secure Socket Layer)的缩写,而TLS表示传输层安全(Transport

2013-10-19 13:09:56 24285

原创 openssl学习之ccm,gcm 模式

openssl中添加了对AES ccm 和gcm模式的支持。下面来分析一下openssl中的aes加密中这两种模式的使用。一,CCMCCM (counter with CBC-MAC)定义在分组长度为128位的加密算法中,如,AES 的分组长度为128。Wifi 的WPE协议中使用了AES-CCM。在HMAC中我们介绍CCM是属于一种E&M(认证并且加密),首先我们来看一下AES-CCM模

2013-10-18 21:17:53 34820 4

原创 openssl 消息认证码CMAC支持

之前在openssl0.9.8中还不支持CMC,而现在的最新版开始支持CMAC了,我目前下载了两个版本openssl-1.0.1c 及openssl-1.0.1e 中都支持。而HMAC在openssl-0.9.8 中就已经支持。下面首先简单介绍一下HMAC及CMCA的区别。1,HMAC (keyed-hash message authentication code)HAMAC 最主要的目的

2013-08-27 22:40:14 13136 8

原创 openssl DSA 算法学习

DSA

2013-08-27 22:04:54 6169

原创 OpenSSL之PKey的EVP封装

在Openssl中,非对称加密涉及到两个密钥。一个为公开的密钥(公钥),一个为非公开的密钥。而OpenSSL中非对称加密算法有RSA、DSA、ECC,他们的原理不同,因此其密钥结构不同。下面我们列出我们关心的密钥部分。1)非对称算法密钥结构OpenSSL中,生产密钥的算法通过以下几个函数int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM

2013-08-15 22:10:13 23788 1

原创 C程序栈空间

#includestruct std{int num;int dum;};int main(){ struct std a ; int d; cout<<&(a.dum)<<endl; cout<<&(a.num)<<endl; cout<<&a<<endl; cout<<&d<<endl; ((struct std *)&a.d

2013-08-09 23:42:35 2552

转载 Linux内核IP Queue机制的分析(二)——用户态处理并回传数据包

本文分析用户态接收到IP Queue的数据包后,根据数据包的相关信息决定数据包的下一步处理,并将处理后的数据包和处理的结果传递到内核态。文中如有任何疏漏和差错,欢迎各位朋友指正。       本文欢迎自由转载,但请标明出处,并保证本文的完整性。      作者:Godbach      日期:2009/02/19     一、处理IP Queue数据报文的编程接口本文中

2012-09-05 20:11:05 4476

转载 Linux内核IP Queue机制的分析(一)——用户态接收数据包

作者:GodbachBlog:http://Godbach.cublog.cn      本文的大纲如下:一、基础知识1. Netfilter2. Netlink机制二、IP Queue编程接口三、一个实现接收内核态发送的IP Queue数据包的用户态例程1. libipq.h2. libipq.c3. ipq_user.c四、应用程序的测试1.

2012-09-05 20:06:58 8022

转载 Linux内核和用户空间通信的方法— 使用netlink (续)

本文主要是对《Linux内核和用户空间通信的方法(二)— 使用netlink》一文中谈到到imp2的源码,进行简单的流程分析及其执行结果的显示。 该源码是从http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz下载的。本人在RH9(2.4.20.-8)上进行编译。读者可以自行下载,本文并不会贴出源码。

2012-09-05 19:54:12 2477

转载 Linux内核和用户空间通信的方法— 使用netlink

作者:Kendo2006-9-3这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载:http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz参考文档《Linux 系统内核空间与用户空间通信的实现与分析》

2012-09-05 19:53:01 2613

原创 数据结构------二叉平衡树(二)删除操作

二叉平衡树的删除与插入类似,先采用二叉搜索树的删除方法,删除结点,再在必要时通过重新平衡,恢复平衡性和排序性。当删除X有两个孩子时,使用替代法,将问题转化为删除只有一个孩子的结点的问题,然后删除之。由q指向实际被删除的结点,它最多只有一个非空子树,当结点q由它的孩子取代后,该树变矮,这种情况会影响其祖先的平衡性,应重新平衡。使用short变量来记录对其双亲(p)平衡性的影响。同插入的情况一样,

2012-08-15 22:06:31 3547

原创 数据结构------二叉平衡树(一)插入操作

二叉平衡树是一种特殊的二叉树,它能有效的控制树的高度,避免产生普通二叉搜索树的“退化”树形一,基本定义1、二叉平衡树又称AVL树,它或是一棵空二叉树,或者是具有以下性质的二叉树。(1)其根的左右子树高度只差的绝对值不超过1(2)其根的左右子树都是二叉平衡树二叉树结点上的平衡因子定义为该结点左子树的高度减去右子树的高度,即取值为-1,0,1下面的研究都是基于二叉平衡搜索树,在

2012-08-14 22:01:43 3183

原创 数据结构-----二叉搜索树

二叉搜索树是一种搜索树,通常的二分搜素算法有很好的搜索性能但是一般在顺序表上进行,插入和删除元素比较费时。而通过采用树型结构,能够有效的支持插入和删除,同时保证查找的效率。(很多内容摘自数据结构---陈慧南编写的书上)一,二叉搜索树1)二叉搜索树的定义假定所有结点的关键字值各不相同,二叉搜索树或者是一个空二叉树,或者是具有下列性质的二叉树:若左子树不空,则左子树上的所有结点的关

2012-08-12 22:02:58 2954

原创 数据结构------哈夫曼数及哈夫曼编码

哈夫曼(huffman)树,又称最优树,是一类带权路径长度最短的树,有着广泛的应用。通过构造哈夫曼树来生成哈夫曼编码。哈夫曼编码使用的是不等长编码(ASCII为等长编码),通过不等长编码将出现频率高的字符编码比较短,频率高的字符编码长的方式来减少文本的长度。一,哈夫曼树首先理解一下什么是路径和路径长度。路径:从树中一个结点到另一个节点之间的边数构成这两个结点之间的路径。路径上变数之和称为路

2012-08-11 10:03:08 5687

原创 数据结构------堆和优先权队列

堆和优先权队列是基于树型结构的实现的。一,堆1,堆的定义:一个大小为n的堆是一棵包含n个结点的完全二叉树,该书中每个结点的关键字值大于等于其双亲结点的关键字,完全二叉树的根称为对顶。它的关键字值是整棵树上最小的称为最小堆,反正最大的称为最大堆。2,堆的存储,由于堆是完全二叉树,正如二叉树学习时提及,完全二叉树可以通过顺序存储来实现,故采用顺序存储结构来学习堆。3,建堆算法,建堆算法

2012-08-09 21:02:43 2748

原创 数据结构-----二叉树的遍历

数据结构学完有好长时间了。渐渐忘记了很多,在此机会以做笔记的形式将其复习一般,同时熟悉敲点代码熟悉VIM。一,基本概念1,二叉树是节点的有限集合,该集合或者为空(而树不允许为空)或者是由一个根和两棵互不相交的、称为该根的左子树和右子树组成。2,几种特殊的二叉树满二叉树:高度为h的二叉树敲好有2h -1个结点时称为满二叉树完全二叉树:一个二叉树中,只有最下面两层结点的度(一个结点

2012-08-09 16:54:32 2420

原创 读书笔记之内核数据结构一链表

在Linux内核中实现了几种常用的数据结构包括:链表、队列、映射、二叉树。一、链表在一般需要遍历所有数据或需要动态的加入和删除数据时选用链表比较适合,当需要随机访问数据时一般不使用链表。Linux内核中链表的实现不同于通常的设计,它不是将数据塞入链表,而是将链表节点塞入数据结构。通常的方法:struct fox{ unsigned long tail_length;/*尾巴长度*/

2012-08-06 10:16:13 2052

原创 两台笔记本通过电信终端上网

现在电信的单终端比较烦,刚装的时候,用我的电脑联网,后来其他人的电脑就上不了网。打了10000号,把之前的登陆记录都清楚了,其他电脑就可以上了,但我的不可以,原来记录了mac地址。可以通过设备管理器修改网卡mac地址,这样改为电信记录的mac地址就可以上网了。如图所示:2,设置两台电脑上网家里两台电脑,两人都想上就比较麻烦了。所以就共享一下(共享的是宽带连接),通过无线来上网。具体

2012-07-29 17:19:27 1361

原创 python学习笔记之wxpython打印预览

主要学习wxPython in action 和Demo程序,做点学习笔记wxPython 通过使用设备上下文和绘制操作来实现打印,wxPython中实现打印的一个重要的类:wx.PrintOut它管理实际的图片部分。打印输出实例可以由一个代表打印机的wx.Printer对象或用于打印预览的wx.PrintPreview对象来管理。下面我介绍一下打印预览。一,创建wx.PrintOut的子

2012-07-18 15:50:10 4425 1

原创 python 使用zbar解码二维码

使用python做二位码的解析。非常的方便,需要安装zbar,我使用的是python2.6,Windows Xp,下载的是zbar-0.10.win32-py2.6.exe可以到http://pypi.python.org/pypi/zbar/上面下载,这个安装包比较方便,源码安装比较麻烦,还需要安装Mingw,我在虚拟机下面是python2.7试一下安装没有成功。还需要安装zbar-0.10-s

2012-07-15 20:58:52 19054 2

原创 python打包VideoCapture 捕获摄像头信息

最近使用VideoCapture捕获摄像头信息,摸索了好久。首先要安装VideoCapture,将解压的内容分别拷贝到python安装的目录。我的电脑中如下所示:这样就可以使用VideoCapture,我使用wxpython做GUI,故需要将采集的信息以实时视频的形式显示在控件上。本来通过staticbitmap控件,通过定时器来更新图片,发现视频可以实时的显示,但是不停的闪烁。看完http:

2012-07-15 20:10:51 13537 2

原创 select、poll、epoll使用小结

Linux上可以使用不同的I/O模型,我们可以通过下图了解常用的I/O模型:同步和异步模型,以及阻塞和非阻塞模型,本文主要分析其中的异步阻塞模型。一、select使用这个模型中配置的是非阻塞I/O,然后使用阻塞select系统调用来确定一个I/O描述符何时有操作。使用select调用可以为多个描述符提供通知,对于每个提示符,我们可以请求描述符的可写,可读以及是否发生错误。异步阻塞I

2012-07-05 15:28:27 16431 1

原创 py2exe打包问题

最近在使用python打包的时候出现很多问题1)python程序中使用到图片的问题、数据库问题解决方法:将程序打包后,将文件拷贝到执行文件下。2)报错“由于应用程序配置不正确...“我拷贝exe文件到多台电脑上运行,只有一台运行不成功,google知道是缺少dll文件。解决方法:按照http://blog.sina.com.cn/s/blog_57406b550100pruc.

2012-06-28 19:22:56 4030

原创 tcp连接断连处理

一个 TCP 连接在完成上述的三次握手之后便建立完毕;此后,连接的两端即可进行信息的相互传递。因此,TCP 连接可以认为是以两端 IP 地址和端口进行标识的一个通信信道,而 TCP 连接的建立就是向通信双方进行上述通信信道注册的过程。TCP 连接一旦建立,只要通信双方之间的中间结点(包括网关和交换机、路由器等网络设备)工作正常,那么在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持

2012-06-12 16:40:53 1493

原创 学习笔记之守护进程

Linux C编程一站式学习 学习笔记一,基本概念Linux 系统启动时会启动很多系统服务进程,如inetd,init等,这些系统服务进程没有控制终端,不能直接和用户交互。其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户登录注销的影响,它们一直在运行着。这种进程有一个名称叫守护进程(Daemon)。守护进程的三个特点:后台运行,

2012-04-29 19:40:57 1108

原创 linux 堆、栈、全局变量存放

在学习《深入理解计算机系统》中链接这一章中,数据讲一个可执行文件包含多个段。在Linux系统中代码段总是从0x08048000处开始,数据段在接下来的4KB对齐的地址处,运行时堆在接下来的读写段之后的第一个4KB对齐的地址处,并通过调用malloc库网上增长,开始于地址0x40000000处的段是为共享库保留的,用户栈总是从地址0xbfffffff处开始,并向下增长,从栈的上部开始于地址0xc00

2012-04-28 19:44:08 7443

转载 进程间通信

本文转自:http://blog.chinaunix.net/uid-25324849-id-207468.html (9)进程间通信 注:所以文章红色字体代表需要特别注意和有问题还未解决的地方,蓝色字体表示需要注意的地方1.     本文所介绍的程序平台开发板:arm9-mini2440虚拟机为:Red Hat Enterprise Linux 5开发板上系统内核版本:l

2012-04-28 08:59:59 978

原创 字符串向前移动的问题

之前面试被要求现场写一个字符串的移动问题,由于很多问题没考虑到,写的十分不理想。偶然翻看《编程珠玑》上面的方法。整理一下。[cpp] view plaincopy#include  #include   /********************************************* 方法1:三次交换即可 reverse(

2012-04-28 08:55:25 1620

原创 学习笔记之文件与I/O

本文是学习linux C一站式学习的笔记在unix中,所有的I/O设备,如网络磁盘和终端都被模型化为文件,而所以输人和输出都被当成对相应文件的读和写来执行,大多数unix文件I/O只需用到5个函数:open,read,write,lseek以及close。相对于ANSI C而言,这些函数被称为不带缓存的I/O,不带缓存指每个read和write都调用内核中的一个系统调用。一、I/O函数

2012-04-27 22:21:44 770

原创 linux多线程学习笔记六--一次性初始化和线程私有数据

一,一次性初始化以保证线程在调用资源时,确保资源已经被初始化,并且只初始化一次。在传统的顺序编程中,一次性初始化经常通过使用布尔变量来管理。控制变量被静态初始化为0,而任何依赖于初始化的代码都能测试该变量。如果变量值仍然为0,则它能实行初始化,然后将变量置为1。以后检查的代码将跳过初始化。但是在多线程程序设计中,事情就变的复杂的多。如果多个线程并发地执行初始化序列代码,2个线程

2012-04-26 16:15:05 1749

原创 linux多线程学习笔记五--线程安全

一,线程安全基础一个函数被称为线程安全的当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。我们能够定义出四类线程不安全函数。第一类:不保护共享变量的函数共享变量在多线程中是共享数据,可以通过同步机制来保护共享数据。第二类:保护跨越多个调用状态的函数一个伪随机数生成器是一个简单的例子:unsigned int next=1;int rand(void){

2012-04-26 10:32:25 3248

原创 linux进程学习笔记一--进程控制

进程的经典定义是一个执行中程序的实例。系统中的每个程序都是运行在某个进程上下文中。进程上下文是有程序正确运行所需的状态组成的,这个状态包括存放存储器中的程序代码和数据、栈、通用寄存器内容、程序计数器、环境变量以及打开文件描述符的集合。一,linux 进程地址空间进程为每个程序提供它自己的私有地址空间,通常与这个地址空间关联的存储器字节是不能被其他进程读或者写的,linux进程的地址空间如下

2012-04-25 12:24:26 1099

原创 linux多线程学习笔记四---线程同步之互斥锁、读写锁和条件变量

一,使用互斥锁1,初始化互斥量pthread_mutex_t mutex =PTHREAD_MUTEX_INITIALIZER;//静态初始化互斥量int pthread_mutex_init(pthread_mutex_t*mutex,pthread_mutexattr_t*attr);//动态初始化互斥量int pthread_mutex_destory(pthread_mut

2012-04-17 19:44:22 4390

原创 linux多线程学习笔记三---线程同步之信号量

一,共享数据一组并发线程运行在一个进程的上下文中,每个线程都有它自己独立的线程上下文,包括线程ID、栈、栈指针、程序计数器、条件代码和通用寄存器。每个线程和其他线程一起共享进程上下文的剩余部分。包括整个用户虚拟地址空间,它是由只读文本、读写数据、堆以及所有的共享库代码和数据区域组成的。线程也共享同样的打开文件的集合。所以任何线程都可以访问共享虚拟存储器的任意位置。如果某个线程修改了一个存储器位

2012-04-15 22:08:36 1400

原创 linux多线程学习笔记二---基本线程编程

一,线程常见函数介绍#include#includevoid *thread_routine(void *arg){ pthread_t tid=pthread_self(); printf("thread 1 say hello\n"); return arg;}int main(){ pthread_t thread_id; void * thread_result;

2012-04-09 20:16:04 1018

原创 linux多线程学习笔记一---基本概念

在学习多线程之前,先搞清楚一下几个概念1,什么是进程,什么是线程,什么是同步?每个正在系统上运行的程序都是一个进程,每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。同步指两个或两个以上随时间变化的量在变化过程

2012-04-08 15:58:37 974

原创 openssl学习之lhash

学习openssl中的lhash,源码在crypto\lhash目录下。Lhash在openssl中用到的地方很多,如文本数据库txt_db中,具体的以后再分析。首先看看lhash的实现结构,lhash的实现很多地方和stack的实现相同。参考了赵春平老师的Openssl编程和mm350670610的这篇博文。//哈希节点的定义,是一个单链表typedef struct lhash_node_s

2012-01-02 14:23:21 3708

电子名片管理系统使用acess数据库

提供一个电子名片管理系统,采用acess为数据库。。头像部分有问题。被注释掉了

2011-03-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除