自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

函数式编程思维 高清完整PDF版

函数式编程思维 高清完整PDF版 函数式编程思维 高清完整PDF版

2018-03-14

ARM Linux中断源码分析(2)——中断处理流程

ARM Linux中断源码分析(2)——中断处理流程

2017-01-11

PCIe规范详细解析

PCIe规范介绍的文档,很详细。

2016-12-31

嵌入式开发_北航PPT教案

嵌入式开发

2016-01-29

APUE 中文版

APUE advanced programming unix environment

2014-03-15

APUE-3rd advanced programming in the unix environment

APUE第三版! advanced programming in the unix environment 3 edition

2014-03-15

HyperTerminaEnglishANSI+超级终端中文版

HyperTerminaEnglishANSI+超级终端中文版

2013-12-27

SPECPower2008使用说明

SPECPower2008使用说明

2013-10-09

最新的TPCH benchmark数据包

TPC全称为“事务处理性能委员会”(Transaction Processing Performance Council),主页(http://www.tpc.org/),是由数10家会员公司创建的非盈利组织,总部设在美国。TPC的成员主要是计算机软硬件厂家,而非计算机用户,它的功能是制定商务应用基准程序(Benchmark)的标准规范、性能和价格度量,并管理测试结果的发布。 “TPCH”就是用来进行数据库测试的一个基准(benchmark)。说通俗一点,就是一堆数据的集合,用来进行数据库学习和测试。

2013-10-08

DOS98.IMG DOS镜像

纯DOS98镜像,包含command.com、io.sys、msdos.sys三个文件。

2012-12-13

myeclipse 10 破解(注册机+详细操作步骤)

里面包含myeclipse 10 以及10.0版本以下注册机,下载后请先阅读压缩包中的操作过程,来进行。

2012-08-11

ipmitool 源码包

ipmitool 源码包

2012-04-18

算法导论 中文版 第二版

算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美。 《算法导论》由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作编著(其中Clifford Stein是第二版开始参与的合著者)。本书的最大特点就是将严谨性和全面性融入在了一起。

2012-04-10

算法导论 第二版 英文版

算法导论》原书名——《Introduction to Algorithms》,是一本十分经典的计算机算法书籍,与高德纳(Donald E.Knuth)的《计算机程序设计艺术》(《The Art Of Computer Programming》)相媲美。 《算法导论》由Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein四人合作编著(其中Clifford Stein是第二版开始参与的合著者)。本书的最大特点就是将严谨性和全面性融入在了一起。

2012-04-10

VI自带的补全功能

VI自带的补全功能

2012-02-23

写一个块设备驱动-共15章

写一个块设备驱动-共15章

2012-02-23

LINUX与UNIX_Shell编程指南

LINUX与UNIX_Shell编程指南

2011-12-02

linux内核模块编程

linux内核模块编程

2011-12-01

linux_Shell(脚本)编程入门_实例讲解详解

linux_Shell(脚本)编程入门_实例讲解详解

2011-11-23

Linux命令及Shell脚本使用

Linux命令及Shell脚本使用

2011-11-23

MFC通过ADO操作Access数据库

MFC通过ADO操作Access数据库 MFC通过ADO操作Access数据库 MFC通过ADO操作Access数据库MFC通过ADO操作Access数据库 MFC通过ADO操作Access数据库

2011-11-21

MFC类库详解

MFC类库详解 MFC类库详解 MFC类库详解 MFC类库详解 MFC类库详解 MFC类库详解

2011-11-05

SVN目录结构说明

SVN目录结构说明 SVN目录结构说明 SVN目录结构说明 SVN目录结构说明

2011-09-20

IPMI数据手册

IPMI数据手册 IPMI数据手册 IPMI数据手册

2011-09-20

空空如也

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

TA关注的人

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