- 博客(592)
- 资源 (37)
- 收藏
- 关注
转载 struct 字节对齐详解
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型
2015-11-18 11:42:44 1928
转载 详解 /etc/inittab 文件
当内核初始化后,就会启动第一个进程 init,init进程会进行一系列的系统初始化工作,init是根据什么来进行初始化的?init 会读取/etc/inittab文件(针对CentOS 5 系列),执行里面的内容来进行初始化工作,这个文件是一定的格式。获取inittab文件的帮助,输入 man inittab 命令过滤掉空白行和以#号开始的行,内容如下:[root@s
2015-10-10 14:43:51 5304
转载 Linux系统脚本分析之rc.sysinit
#!/bin/bash## /etc/rc.d/rc.sysinit - run once at boot time# # # Rerun ourselves through initlog // 通过 /sbin/initlog 命令重新运行自己if [ -z "$IN_I
2015-10-10 14:33:20 1160
转载 vmlinux,vmlinuz,uImage,zImage,bzImage之间的异同
转自:http://www.cnblogs.com/hnrainll/category/283519.html linux内核镜像格式一、Linux内核镜像格式 Linux内核有多种格式的镜像,包括vmlinux、Image、zImage、bzImage、uImage、xipImage、bootpImage等.(1)kernel镜像格式:vmlinux
2015-10-08 19:45:58 590
转载 几种linux内核Image文件的区别
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别
2015-10-08 19:11:54 10849
转载 深析静态链接库和动态链接库相同函数覆盖及库调用顺序问题
最近一个项目遇到的一个问题,MongoDB和自家库中的md5函数出现冲突, 而且报的是莫名错误,经过仔细debug终于找到md5中的md5_finish覆盖出现的问题,今天抽了点时间写了些小程序测试了下注意:编译器为gcc,若使用g++, 请在库里面加上extern "C" 两个静态库首先测试静态链接库,大概的代码如下:libA.c
2015-08-19 11:45:57 538
转载 JSONP跨域的原理解析
JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax
2015-08-10 16:34:13 528
转载 JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序
一、浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,GUI渲染线程,浏览器事件触发线程。1. javascript引擎是基于事件驱动单线程执行的,JS引擎一直等待着任务队列中任务的到来,然后加以处理,浏览器无论什么时候都只有一个JS线程在运行JS程序。2. GUI渲染线程负责渲染浏览器界面,当界面需要重绘(R
2015-07-17 15:58:08 2533
转载 CSS padding margin border属性详解
图解CSS padding、margin、border属性W3C组织建议把所有网页上的对像都放在一个盒(box)中,设计师可以通过创建定义来控制这个盒的属性,这些对像包括段落、列表、标题、图片以及层。盒模型主要定义四个区域:内容(content)、内边距(padding)、边框(border)和外边距(margin)。对于初学者,经常会搞不清楚margin,background-color
2015-05-11 10:20:32 1013
转载 神器——Chrome开发者工具
这里我假设你用的是Chrome浏览器,如果恰好你做web开发,或者是比较好奇网页中的一些渲染效果并且喜欢折腾,那么你一定知道Chrome的开发者工具了。其实其他浏览器也有类似工具,比如Firefox下的firebug。本文将会详细讲述如何使用Chrome开发者工具,希望里面有些让你感到惊艳的东西!即使你不用Chrome,那么文中的某些内容也会相当有用。首先啰嗦一下如何打开开发者工具吧。可以
2015-05-08 15:29:20 10886 1
转载 通过 http 协议上传文件(rfc1867协议概述,jsp 应用举例,客户端发送内容构造)
1、概述在最初的 http 协议中,没有上传文件方面的功能。 rfc1867 (http://www.ietf.org/rfc/rfc1867.txt) 为 http 协议添加了这个功能。客户端的浏览器,如 Microsoft IE, Mozila, Opera 等,按照此规范将用户指定的文件发送到服务器。服务器端的网页程序,如 php, asp, jsp 等,可以按照此规范,解析出用户发送来
2015-05-07 11:48:25 727
转载 gettid 和pthread_self的区别
Linux中,每个进程有一个pid,类型pid_t,由getpid()取得。Linux下的POSIX线程也有一个id,类型 pthread_t,由pthread_self()取得,该id由线程库维护,其id空间是各个进程独立的(即不同进程中的线程可能有相同的id)。Linux中的POSIX线程库实现的线程其实也是一个进程(LWP),只是该进程与主进程(启动线程的进程)共享一些资源而已,比如代码段,
2015-04-27 17:38:25 8567
转载 HTML <form> 标签
例子 First name: Last name: 亲自试一试浏览器支持IEFirefoxChromeSafariOpera 所有浏览器都支持 标签。定义和用法 标签用于为用户输入创建 HTML 表
2015-04-24 18:17:40 648
转载 Linux Socket学习之:套接口选项 getsockopt 、setsockopt
本文将会专注于下列主题:如何使用getsockopt(2)函数获得套接口选项值如何使用setsockopt(2)函数设置套接口选项值如何使用这些常用的套接口选项得到套接口选项有时,一个程序需要确定为当前为一个套接口进行哪些选项设置。这对于一个子程序库函数尤其如此,因为这个库函数并不知道为这个套接口进行哪些设置,而这个套接口需要作为一个参数进行传递。程序也许需要知道类似于
2015-04-17 19:02:12 1163
转载 为什么使用getaddrinfo()函数
在IPv6的应用中getaddrinfo()是很常见的,最常见的形式是:[cpp] view plaincopyaddrinfo hints; addrinfo *res = NULL; memset(&hints,0,sizeof(hints)); hints.ai_family=AF_INET6;
2015-04-17 16:55:42 1207
转载 彻底释放Linux线程的资源
Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的。而默认的条件下,一个线程结束后,其对应的资源不会被释放,于是,如果在一个程序中,反复建立线程,而线程又默认的退出,则最终线程资源耗尽,进程将不再能建立新的线程。解决这个问题,有2种方式,系统自动释放线程资源,或者由另一个线程释放该线程资源。注意,在这里,我认为进程运行后,本身,也是一个线程,主线程,主线
2015-04-15 15:42:28 1408
转载 Pthread创建线程后必须使用join或detach释放线程资源
Pthread 资料中,有这么一段话:(man pthread_detach):Either pthread_join(3) or pthread_detach() should be called for each thread that an application creates, so that system resources for the thread
2015-04-15 15:30:59 4957
转载 Linux下利用backtrace追踪函数调用堆栈以及定位段错误
来源:Linux社区 作者:astrotycoon一般察看函数运行时堆栈的方法是使用GDB(bt命令)之类的外部调试器,但是,有些时候为了分析程序的BUG,(主要针对长时间运行程序的分析),在程序出错时打印出函数的调用堆栈是非常有用的。在glibc头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。int backtrace(void **buff
2015-04-09 13:27:04 1864
转载 Linux用户空间与内核空间
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。于是像linux这样的系统就做了一个约定,不允许没有用户空间上下文的内核线程访问用户空间。不允许内核访问用户空间使内核免去了很多的负担,使内核设计更加简化
2014-07-02 10:54:40 2824 1
转载 Linux用户空间与内核空间
Linux 操作系统和驱动程序运行在内核空间,应用程序运行在用户空间,两者不能简单地使用指针传递数据,因为Linux使用的虚拟内存机制,用户空间的数据可能被换出,当内核空间使用用户空间指针时,对应的数据可能不在内存中。于是像linux这样的系统就做了一个约定,不允许没有用户空间上下文的内核线程访问用户空间。不允许内核访问用户空间使内核免去了很多的负担,使内核设计更加简化
2014-07-01 18:28:36 997
转载 从 Linux 内核访问用户空间内存
Linux 内存和用户空间 API 简介因为内核和用户空间存在于不同的虚拟地址空间中,在它们之间移动数据需要特别注意。研究虚拟地址空间和内核 API 理念,用于将数据移入或移出用户空间,并学习其他的一些用于映射内存的映射技术。Linux 内存在 Linux 中,用户内存和内核内存是独立的,在各自的地址空间实现。地址空间是虚拟的,就是说地址是从物理内存中抽
2014-07-01 15:49:27 1043
转载 在内核窥视用户态
在内核窥视用户态首先,环境:VMware Server上运行的ubuntu10.4,arch为x86_64。先看下面这个程序:#include #include #include int dataA;char bufA[1000];int main(){ int d
2014-07-01 15:07:56 805
转载 编译和链接
2.1 被隐藏了的过程 C语句的经典,“Hello World”程序几乎是每个程序员闭着眼睛都能写出的,编译运行一气呵成,基本成了程序入门和开发环境测试的默认标准。#include int main(){ printf("Hello World\n"); return 0; 在Linux下,我们用GCC来编译该程序时,只需使用简单的命令(
2014-07-01 11:53:57 5429
转载 ext2 / ext3 结构分析
实验机器:虚拟机 + red hat 9先看 ext2/ext3 文件系统 基本结构由于机器面对的是 字节流,因此必须对 字节流 进行结构化定义,文件系统亦如此。下面介绍 ext2/ext3 文件系统的结构。ext2/ext3 结构图:ext2 / ext3 结构 - lizeaaaa - Hello World Part 1.
2014-06-27 17:10:06 1856
转载 解析 Linux 中的 VFS 文件系统机制
本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统,例如 ext2,jffs 等。本文侧重于通过具体的代码分析来解释 Linux 内核中 VFS 的内在机制
2014-06-27 11:43:16 1569
转载 自旋锁
自旋锁 本来就只是一个很简单的同步机制,在SMP之前根本就没这个东西,一切都是Event之类的同步机制,这类同步机制都有一个共性就是 一旦资源被占用都会产生任务切换,任务切换涉及很多东西的(保存原来的上下文,按调度算法选择新的任务,恢复新任务的上下文,还有就是要修改cr3寄存器会导致cache失效)这些都是需要大量时间的,因此用Event之类来同步一旦涉及到阻塞代价是十分昂贵的比如 我用一个E
2014-06-25 13:57:15 708
转载 Java中-classpath和路径的使用
javac:如果当前你要编译的java文件中引用了其它的类(比如说:继承),但该引用类的.class文件不在当前目录下,这种情况下就需要在javac命令后面加上-classpath参数,通过使用以下三种类型的方法 来指导编译器在编译的时候去指定的路径下查找引用类。(1).绝对路径:javac -classpath c:/junit3.8.1/junit.jar Xxx.java
2014-06-19 15:57:09 965
转载 jdk工具keytool和jarsigner帮助
jdk工具keytool和jarsigner帮助Part1(jdk keytool&jarsigner tool manual)0.背景keytool是JDK中包含的密钥和证书的管理工具。用于管理私钥及其相关的X.509证书链的keystore。X.509证书链用于认证对应的公钥,keystore类似于一个数据库。同时keytool还用于管理信任实体发布的证书。jarsigner是JD
2014-06-19 15:01:49 1992
转载 jarsigner - JAR 签名和校验工具
为 Java 归档 (JAR) 文件产生签名,并校验已签名的 JAR 文件的签名。结构jarsigner [ options ] jar-file aliasjarsigner -verify [ options ] jar-file说明jarsigner为 Java 归档 (JAR) 文件签名校验已签名的 JAR 文件的签名和完整性JAR
2014-06-19 13:58:23 2846
转载 jar 打包详解
JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种文档格式。JAR 文件非常类似 ZIP 文件??准确的说,它就是 ZIP 文件,所以叫它文件包。JAR 文件与 ZIP 文件唯一的区别就是在 JAR 文件的内容中,包含了一个 META-INF/MANIFEST.MF 文件,这个文件是在生成 JAR 文件的时候自动创建的。举个例子
2014-06-19 11:27:23 876
转载 HTTP认证
一、前言 HTTP认证是Web服务器对客户端的权限进行认证的一种方式,能够为Web应用提供一定程度的安全保障。目前一些Web应用项目已经提出了采用HTTP 认证的需求。一般的Web容器都提供基本认证和摘要认证的API。RFC2617对此有详细的描述。 二、HTTP认证机制 HTTP认证采用“质询-响应(challenge-response
2014-06-18 17:44:29 819
转载 SSL/TLS 原理
1. 前言首先要澄清一下名字的混淆:1 SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议。这种协议在WEB上获得了广泛的应用。2 IETF(www.ietf.org)将SSL作了标准化,即RFC2246,并将其称为TLS(Transport Layer Security),从技术上讲,TLS1.0与SSL3.0的差别非
2014-06-17 15:36:10 802
转载 vmalloc分配高端物理内存
由vmalloc()分配的内存线性地址空间在VMALLOC_START之上,并且其分配的物理内存也是在896M之上的高端内存中的。/*** vmalloc - allocate virtually contiguous memory* @size: allocation size* Allocate enough pages to cover @
2014-06-17 14:58:28 2238
转载 Linux x86_64 的TLB管理
TLB介绍TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访存(查页表获得物理地址+取数据),下图是TLB在整个系统中的示意图。@yuanbor:Linux x86_64 的TLB管理 - yuanbor - SmallOfficeHomeOfficx86_64上的TLB普通模式Global Pages当CR3寄存器被
2014-06-17 14:56:49 2151
转载 TLB与cache的深入分析
一)TLB1)TLB的概述TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存.TLB是位于内存中的页表的cache,如果没有TLB,则每次取数据都需要两次访问内存,即查页表获得物理地址和取数据.2)tlb的原理当cpu对数据进行读请求时,CPU根据虚拟地址(前20位)到TLB中查找.TLB中保存着虚拟地址(前20位)和页框号的对映关系,如果匹配到虚拟地址就
2014-06-17 14:56:30 12365 1
转载 TLB
TLB的全称是Translation Lookaside Buffer,翻译成中文有时是后备转换缓存,可能还有其他叫法,总之这个东西是用来保存线性地址到物理地址转换用的。因为在MMU开启的情形下,线性地址到物理地址的转换需要经过页表的查找,如果每次都这么做的话显然对系统性能有影响,因此出现了这么一个cache,用来将已经此前的查找结果保存在这个TLB中。显然TLB因为容量的限制不可能将所有的线性地
2014-06-17 14:55:09 1018
转载 SSL/TLS协议运行机制的概述
互联网的通信安全,建立在SSL/TLS协议之上。本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。一、作用不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。(1) 窃听风险(eavesdropping):第三方可以获知通信内容。
2014-06-17 14:53:46 680
转载 hash、MD5、SHA-1、CRC简介
Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。 简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
2014-06-16 18:43:54 14295
转载 数字证书原理
文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书。如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出! 1、基础知识 这部分内容主要解释一些概念和术语,最好是
2014-06-16 16:55:22 783 3
转载 RSA算法原理(二)
作者: 阮一峰上一次,我介绍了一些数论知识。有了这些知识,我们就可以看懂RSA算法。这是目前地球上最重要的加密算法。六、密钥生成的步骤我们通过一个例子,来理解RSA算法。假设爱丽丝要与鲍勃进行加密通信,她该怎么生成公钥和私钥呢?第一步,随机选择两个不相等的质数p和q。爱丽丝选择了61和53。(实际应用中,这两个质数越大,就越难破解。)第二步,计算p和q的
2014-06-16 16:26:23 689
APUE-3rd advanced programming in the unix environment
2014-03-15
最新的TPCH benchmark数据包
2013-10-08
算法导论 中文版 第二版
2012-04-10
算法导论 第二版 英文版
2012-04-10
MFC通过ADO操作Access数据库
2011-11-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人