- 博客(171)
- 资源 (7)
- 收藏
- 关注
原创 dig详解
dig是一个linux/unix下用于查看域名详情的小工具,类似于 nslookup ,但比 nslookup 的功能更强大,显示的信息更全面。而 windows 系统下只带有 nslookup 这个命令,下面是在 windows 系统下安装 dig 命令的方法。首先下载 dig 包,下载地址是:http://members.shaw.ca/nicholas.fong/dig/dig-fi...
2011-04-07 18:00:35
618
原创 OLAP与OLTP
当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 O...
2011-02-10 13:51:13
227
原创 Squid是什么
1.Squid是什么? Squid是一种用来缓冲Internet数据的软件。它是这样实现其功能的,接受来自人们需要下载的目标(object)的请求并适当地处理这些请求。也就是说,如果一个人想下载一web页面,他请求Squid为他取得这个页面。Squid随之连接到远程服务器(比如:http://squid.nlanr.net/)并向这个页面发出请求。然后,Squid显式地聚集数据...
2011-02-10 10:06:20
601
原创 学习STL map, STL set之数据结构基础
学习STL map, STL set之数据结构基础摘要:本文列出几个基本的STL map和STLset的问题,通过解答这些问题讲解了STL关联容器内部的数据结构,最后提出了关于UNIX/LINUX自带平衡二叉树库函数和map,set选择问题,并分析了map, set的优势之处。对于希望深入学习STL和希望了解STLmap等关联容器底层数据结构的朋友来说,有一定的参考价值...
2010-12-23 09:45:57
181
原创 htonl(),htons(),ntohl(),ntons()--大小端模式转换函数
不同机器内部对变量的字节存储顺序不同,有的采用大端模式(big-endian),有的采用小端模式(little-endian)。大端模式是指高字节数据存放在低地址处,低字节数据放在高地址处。小端模式是指低字节数据存放在低地址处,高字节数据放在高地址处。在网络上传输数据时,由于数据传输的两端可能对应不同的硬件平台,采用的存储字节顺序也可能不一致,因此 TCP/IP 协议规定了在网络上必须...
2010-12-16 16:51:22
568
原创 经典的排错过程 expected unqualified-id before string constant
答案是:我的代码少了一个 “;”=====================================现场:回到 报错的那一行,发现没有问题。 报错的文件:ptlogin2_api.h(22行):expected unqualified-id before string constant 在我的一个cpp的 代码中间(绝对不是在头文件),使用了这个文件 ptlogin2_a...
2010-10-20 18:52:19
1209
原创 命令行输出彩色字符串
#include int main (int argc, char **argv){ printf ("\033[31mThe color of this line is red, %s!\033[0m", "ha ha"); printf("\033[46;32m 北京颜色不同 \033[0m"); printf("\033[4;41;32m test ...
2010-09-30 14:13:25
658
原创 关于Linux静态库和动态库的分析
1.什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的本质不同,因此二者库的二进制是不兼容的。本文仅限于介绍linux下的库。2.库的种类linux下的库有两种:静态库和共享库(动态库)。二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体...
2010-09-28 10:29:17
127
原创 Heartbeat
Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。下面描述了 heartbeat 模块的可靠消息通信机制,并对其实现原理做了一些介绍。 高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系...
2010-09-01 19:31:47
170
原创 source Insight常用自定义命令和一些小技巧
在Source Insight中添加自定义功能的步骤如下:1.Source Insight中,Options->Custom Commands...->Add...,New Command name 随便写,我的是"Edit with Vim" 2.Run中写入: "C:\Program Files\Vim\vim63\gvim.exe" --remote-silent +%l...
2010-08-13 14:34:44
317
原创 WEB服务器性能瓶颈分析
本文先介绍一下各种WEB服务器平台,然后对影响WEB服务器性能的各方面做了分析,最后解析了目前使用最普遍的Apache服务器在服务请求高峰时的响应延迟现象 在上周的一篇文章里,我们介绍了搭建WEB服务器的方法,但这只是建立WEB服务器的第一步,在实际的站点运行中,也许服务器的性能表现会不尽如人意,这就需要分析具体的服务器性能瓶颈并找到解决办法。本文先介绍一下各种WEB服务器平台,然...
2010-07-29 15:15:52
870
原创 linux下更改共享内存的最大值
System V IPC参数名字 描述 合理取值 SHMMAX最大共享内存段尺寸(字节)最少若干兆(见文本)SHMMIN最小共享内存段尺寸(字节)1SHMALL可用共享内存的总数量(字节或者页面)如果是字节,就和 SHMMAX 一样...
2010-07-26 13:22:49
335
原创 宏和内联函数的区别
先说宏和函数的区别:1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数...
2010-07-07 15:55:20
119
原创 C中存储类,链接,作用域
C中存储类,链接,作用域C中变量按照不同的标准有不同的分类方式,总的来说主要有三大类:存储周期,作用域,链接。 作用域:作用域描述了程序中可以访问一个标志符的一个或多个区域。目前主要包括以下:文件作用域:在所有函数之外定义的变量具有文件作用域。函数原型作用域:从变量定义到原型声明的末尾。注意此时可以不写变量具体名称,编译器只关注变量的类型,如下(两者等价): ...
2010-07-06 17:47:22
155
原创 10个强大的开源Web流量分析工具
锐商企业CMS 写道 "Web 流量分析工具多不胜数,从 WebTrends 这样专业而昂贵的,到 Google Analytics 这样强大而免费的,从需要在服务器端单独部署的,到可以从前端集成的,不一而足。本文收集并介绍了10个功能强大的开源 Web 流量分析工具,因为是开源的,因此可以免费部署到你的网站(完整图文版)。------------------...
2010-06-18 20:18:52
1123
原创 URL Encoding
URL:http://localhost:8080/example/中国?name=中国汉字 编码 二进制表示中国 UTF-8 0xe4 0xb8 0xad 0xe5 0x9b 0xbd[-28, -72, -83, -27, -101, -67]中国 GBK 0xd6 0xd0 0xb9 0xfa[-42, -48, -71,...
2010-06-10 20:45:20
192
原创 环境变量相关
系统环境变量:/etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.当前用户变量:~/.bash_profile:每个用户都可使用...
2010-06-10 15:03:45
135
原创 linux中的信号处理(signal与alarm)
简单处理程序: #include<stdlib.h> #include<stdio.h> #include<unistd.h> #include<signal.h>void handle() { printf("I am steven\n"); alarm(1); } ...
2010-05-12 15:25:52
434
原创 Trie- 字典树(单词树)的基本应用
#include <stdio.h> #include <stdlib.h> #include <string.h> int const N= 1000000; struct Trie{ int id; // 标记每一个单词 int cnt; // 标记单词前缀的数量 int next[26]; //...
2010-05-12 14:47:29
197
原创 Http 协议学习笔记
HTTP(Hypertext Transfer Protocol, 超文本传输协议),用于从WWW服务器传输超文本到本地浏览器的传输协议。你可以通过协议定制传送的内容,从而减少网络传输。由于HTTP协议支持的服务不限于WWW,还可以是其它服务,因而HTTP协议允许用户在统一的界面下,采用不同的协议访问不同的服务,如FTP、Archie、SMTP、NNTP等。另外,HTTP协议还可用...
2010-05-09 15:23:12
181
原创 HTTP 1.1的一些细节:Cache机制
HTTP 1.1的一些细节:Cache机制Du XiaoGang <dugang@188.com> Cache机制可能是HTTP 1.1协议中最复杂的一个组成部分,它的目的有两个: 1, 降低网络上发送HTTP请求的次数,这采用"过期"机制(Expiration M...
2010-05-08 13:38:26
185
原创 Web缓存加速指南
原文(英文)地址: http://www.mnot.net/cache_docs/ 这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中。为了简要起见,某些实现方面的细节被简化或省略了。如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容。什么是Web缓存,为什么要使用它?...
2010-05-08 12:15:13
101
Cache 的write back和write through
Cache 的write back和write through 收藏 为了保证cache和memory的数据一致性,通常有三种方法:1〉write through:CPU向cache写入数据时,同时向memory也写一份,使cache和memory的数据保持一致。优点是简单,缺点是每次都要访问memory,速度比较慢。2〉post write:CPU更新cache数据时,把更新的数据写入到...
2010-04-22 15:47:02
98
选择 ARM处理器,ARM7还是Cortex-M3?
要使用低成本的 32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。1.ARM实现方法ARMCortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(冯诺伊曼结...
2010-04-08 00:52:25
181
LINUX 时间和日期
时间与日期通常对于一个程序来说可以确定时间与日期是十分用的。也许他要记录其运行的时间,或者是他要一个特定的时间改变其形为。例如,一个游戏程序也许不会在工作时间运行,或者是一个备份调度会在启动自动备份之前等待早些的工作完成。所有的Unix系统对于时间与日期都使用相同的起始点:1970年1月1日午午夜GMT。这是Unix的创世纪,而Linux也不例外。而在Linux系统中所有的时间...
2010-04-01 19:09:56
121
RGB 转换至 YCbCr (YUV) 的计算公式
对于每个取样点的 R,G,B 值, 在转换到 YUV colour space 时, 首先定义画面的平均亮度值(Luminance), Y, 其计算公式为:Y = kr*R + kg*G + kb*Bkr, kg, kb 为 weighting factors (加权因数), kr + kg + kb = 1 恒定.(其中, ITU-R BT.601 定义 kb = 0.114 ...
2010-03-28 12:46:53
791
编译错误小记 - fcntl2.h
编译gcc-3.3.6的时候,出现以下错误: /usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments 这纯属软件bug,因为使...
2010-03-16 17:17:55
455
IPC之消息队列
消息队列缺点:1. 如果进程创建了一个消息队列,在该队列中放入了几则消息,然后终止,但是该消息队列及其内容并不会被删除。直到出现一下情况:某个进程调用msgrcv或msgctl读消息或删除消息队列,某个进程执行ipcrm(1)命令删除消息队列,或由正在启动的系统删除消息队列。2. 消息队列有大小限制,通常只用于小数据量的发送。系统对用户的大小限制可以通过 ulimit -q 命...
2010-03-13 12:05:12
117
如何让errno多线程/进程安全
在linux或者unix环境中,errno是一个十分重要的部分。在调用的函数出现问题的时候,我们可以通过errno的值来确定出错的原因,这就会 涉及到一个问题,那就是如何保证errno在多线程或者进程中安全?我们希望在多线程或者进程中,每个线程或者进程都拥有自己独立和唯一的一个 errno,这样就能够保证不会有竞争条件的出现。一般而言,编...
2010-03-13 11:35:31
245
Linux下库相关的概略介绍及动态库的搜索路径优先级
(本文主要针对动态连接库,内容来源网络,重新整理之,高亮部分的请重点关注) 一.基本知识 总体来说, 库可以有三种使用的形式: 静态、共享和动态. 静态库的代码在编译时就已连接到开发人员开发的应用程序中, 而共享库只是在程序开始运行时才载入. 在编译时, 只是简单地指定需要使用的库函数. 动态库则是共享库的另一种变化形式. 动态库也是在程序运行时载入,...
2010-03-13 11:29:57
141
ftok函数
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下: key_t ftok( char * fname, int id) fname就时你指定的文件名,id是子序号。在一般的UNIX实现中,是将文件的索引节点号取出,前面加上子序号得到key_t的返回值。如指定文件的索引节点号为655...
2010-03-13 11:01:29
130
理解I/O Completion Port
欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术: I/O端口 同步/...
2010-03-13 10:42:09
97
右左法则
Theright-left rule: Start reading the declaration from the innermostparentheses, go right, and then go left. When you encounterparentheses, the direction should be reversed. Once everything in t...
2010-03-06 17:30:23
107
16道嵌入式C语言面试题
> 预处理器(Preprocessor)1. 用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #defineSECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)....
2010-03-06 17:28:53
115
elf格式学习总结
当编译一个源文件生成目标文件时,会在目标文件中生成符号表和重定位表。符号表包含在文件中定义的全局符号以及在文件中引用的外部符号(外部函数或变量)。重定位表告诉链接器在哪些位置要进行重定位操作。编译生成的目标文件在文件的开始处会有一个elf头,描绘了整个文件的组织结构。它还包括很多节(section)。这些节有的是系统定义好的,有些是用户在文件中通过.section命令自定义的,链接...
2010-03-03 15:35:04
145
视频播放的基本原理
VLC是一个功能强大的玩意,能做很多有意思的事情。最简单的,从界面打开一个文件播放,也可以在命令行下使用,如C:\Program Files\VideoLAN\VLC>vlc.exe test.ts获取内置的帮助,会写到vlc-help.txtC:\Program Files\VideoLAN\VLC>vlc.exe -h获取更详细的帮助,有大量的选项介绍...
2010-03-03 10:08:49
225
About pci.ids
pci.ids - This is a public repository of all known ID's used in PCI devices:ID's of vendors, devices, subsystems and device classes. '1543' with red underline : VendorID '30...
2009-12-23 21:01:29
489
原创 关于IO ports和IO memory
在IA32 Manuals-Basic Architecture中, 对于IO有二种寻址方式:1, IO Port(IO Address Space); 2, Memory-Mapped IO. 1) IO Port方式. 使用体系结构相关的in/out指令来访问IO端口,并且能够保证每一条指令都在下一条之前完成,也就是in/out指令是自然有序的。 ...
2009-12-21 15:30:01
1083
原创 port I/O
Nameoutb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p, outw_p, outl_p, inb_p, inw_p,inl_p - port I/ODescriptionThis family of functions is ...
2009-12-21 15:27:44
241
原创 C++类型转换运算符的使用方法
C++的四个类型转换运算符已经有很久了,但一直没有弄清楚它们的用法,今天看到一本书上的解释,才大致地的了解了其具体的用法.具体归纳如下: reinterpret_cast该函数将一个类型的指针转换为另一个类型的指针.这种转换不用修改指针变量值存放格式(不改变指针变量值),只需在编译时重新解释指针的类型就可做到.reinterpret_cast 可以将指针值转换为一个整型数,但不能用...
2009-12-21 14:34:48
97
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人