自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

eqxu的专栏

天使联盟

  • 博客(38)
  • 收藏
  • 关注

原创 linux源代码 及 查看工具、教程

  1、比较好的linux源代码  0.11版本 2.4版本  2.6版本下载地址:http://www.oldlinux.org/Linux.old/kernel/linux-0.11-pre.tar.Z 最好是看一下http://www.oldlinux.org/index_cn.html的linux源代码内核完全注释 可以免费下载 赵炯博士所著  相关视频:由尚德系列讲座之linux内核

2007-06-29 10:01:00 9355

原创 计算现在到1970年过了多少秒 mktime函数 自己写的 ^_^

#include #include #include #define MINUTE 60#define HOUR (60*MINUTE)#define DAY (24*HOUR)#define YEAR (365*DAY)//判断是不是闰年int isYunNian(int year){ if(((year%4==0) && (year%100!=0))||(year%400==0))

2007-06-28 17:51:00 4945

原创 类型的最大最小值

#include #include long getSecondsFromNowTo70(){ printf("sizeof long is %d/n",sizeof(long long));   printf("__LONG_MAX__ is %ld/n",__LONG_MAX__); printf("__INT_MAX__ is %ld/n",__INT_MAX__); printf(

2007-06-28 16:09:00 700

原创 java性能监控工具 可以检查内存泄露

 Borland.Optimizeit.Enterprise.Suite.6_0 /现在是2006版本,可以跟eclipse结合使用1、 下载地址:http://www.javatang.com/archives/2006/10/10/160171.html http://www.borland.com/downloads/download_optimizeitbig5.htmlftp:/

2007-06-28 13:29:00 5327 3

原创 宏定义函数2 类同于宏定义变量

#define get_seg_byte(seg,addr) ({ /register char __res; /__asm__("push %%fs;mov %%ax,%%fs;movb %%fs:%2,%%al;pop %%fs" / :"=a" (__res):"0" (seg),"m" (*(addr))); /__res;}) 解释:这个宏定义的括号里的内容的最后部分__res;作为

2007-06-28 13:05:00 1536

原创 中断处理函数 asm

_divide_error:pushl $IntFuncName                                               # 首先把将要调用的函数地址入栈。no_error_code:                                                         # 这里是无出错号处理的入口处,公用代码xchgl %eax,(%

2007-06-28 12:43:00 1268

原创 linux 0.11 STDOUT STDIN STDERR 的创建

 载内核源码的/init/main.c代码中:     (void) open ("/dev/tty0", O_RDWR, 0); // 用读写访问方式打开设备“/dev/tty0”,  // 这里对应终端控制台。  // 返回的句柄号0 -- stdin 标准输入设备。    (void) dup (0);  // 复制句柄,产生句柄1 号 -- stdout 标准输出设备。    (v

2007-06-27 14:35:00 809

原创 分析java.lang.OutOfMemoryError

permenter区用来存放用得非常多的类和类描述。permsize默认就4m。本来SUN设计的时候认为这个区域在JVM启动的时候就固定了,但他没有想到现在动态会用得这么广泛。而且这个区域有特殊的垃圾收回机制,现在的问题是动态加载类到这个区域后,gc根本没办法回收!解决方法:-XX:PermSize=64M -XX:MaxPermSize=128M   

2007-06-27 10:52:00 613

原创 宏定义 内嵌汇编函数 及使用方法

1、定义了几个不同的函数,可以通过这个来分辨出是哪个函数调用2、内嵌汇编函数:=r代表是会改变的变量 r代表输入的变量 这里的%0 是__ret %1 是 __MySysCall_##name3、这里的##是宏中常使用的字符串连接符4、static inline最好是搭配使用  #define __MySysCall_myfunc1 1#define __MySysCall

2007-06-27 09:47:00 2613

原创 汇编 设置中断描述符表

操作的步骤如下:1、记录中断处理函数的段内偏移2、获取或指定段选择子3、对idt表赋值(本操作是对所有的中断都采用同一的函数(MyIntFunc)处理)注: _idt  中断描述符表的基址 idt_descr  中断描述符操作的参数图示如下:63.55.47.39.31.23.15.7.0|MyIntFunc[2] |MyIntFunc[3] |0x8e |0x00 |0x00 |0x08

2007-06-26 17:19:00 1442

原创 利用bochs调试linux 0.11内核

 引导程序调试软件bochs,跟配套的linux0.11内核img下载地址分别是:http://sourceforge.net/projects/bochs/http://www.oldlinux.org/Linux.old/bochs/linux-0.11-devel-040329.zip 调试环境的的建立       下载linux-0.11-devel-040329.zi

2007-06-25 13:58:00 3155 1

原创 汇编 内存间的数据搬动

mov ax,#INITSEG ! 将es 段寄存器置为0x9000;mov es,axmov cx,#256 ! 移动计数值=256 字;sub si,si ! 源地址 ds:si = 0x07C0:0x0000sub di,di ! 目的地址 es:di = 0x9000:0x0000rep ! 重复执行,直到cx = 0movw ! 移动1 个字;jmpi go,INITSEG ! 间接跳转

2007-06-22 10:05:00 1342

原创 uname gethostbyname 结合获取本机地址

#include //struct utsname#include //struct hostent#include //NULL#include //struct in_addr//struct utsname//{//  char sysname[20];//系统名称//  char nodename[20];//本机名//  char release[20];//OS//  char ver

2007-06-20 11:13:00 992

原创 netfilter 防火墙 包过滤 实例

下面这个模块是用来将 #include #include static struct nf_hook_ops user_hook_ops= {   { NULL, NULL },   user_hookfn, //用户定义的钩子函数   PF_INET,   NF_IP_LOCAL_IN, //挂载点 。对于所有进入本机的数据包(包括使用网络套接字的IPC),都是在此挂载点完成的过滤

2007-06-19 16:16:00 1618

原创 java String pattern 功能 替换掉所有的空白字符

java的java.util.regex.Pattern类中给出了如下的功能: 预定义字符类 . 任何字符(与行结束符可能匹配也可能不匹配) /d 数字:

2007-06-18 15:41:00 5794

原创 套接口选项 读取 sock_opts getsockopt setsockopt

#include #include union val {  //套接口选项可能有的5个类型分别作为一个成员:  int i_val;  long l_val;  char c_val[10];  struct linger linger_val;  struct timeval timeval_val;  //struct {int S; int uS} } val; //函数原型(prot

2007-06-18 14:21:00 1469

原创 指针在任何情况下都可以进行>,=,<=, ==运算?

答案:1、如果不谈比较的意义,答案是肯定的。就算在没有赋初值得时候也是可以比较的2、比较的意义:        不同类型的指针不强制类型转换    (没有意义)        没有意义的指针(比方说同类型的没有初始化的指针)比较    (没有意义)        一般不在相同的存储区域(堆、栈、静态存储空间)内    (没有意义)

2007-06-18 11:23:00 8048

原创 shutdown函数 glibc函数

int shutdown(int sockfd, int how); sockfd 是你想要关闭的套接字文件描述复。how 的值是下面的其中之 一:0 – 不允许接受//可读 关闭1 – 不允许发送//可写 关闭2 – 不允许发送和接受(和 close() 一样)//双向关闭shutdown() 成功时返回 0,失败时返回 -1(同时设置 errno。) 如果在无连接的数据报套

2007-06-15 14:38:00 1189

原创 select 函数 使用

告知内核等待某一或某些事件发生  而后唤醒进程  或超时返回    int select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *excepset,               const struct timeval *timeout);    返回准备好的描述符数量 超时返0错误-1 主要功能:对I/O读 写 异常的监控;

2007-06-15 10:57:00 1217 1

原创 地址转换函数 inet_* inet_addr inet_aton ...

注意程序的数据的endian头文件的包含#include //bzero memset#include //struct in_addr#include //AF_INET#include //inet_*int main(int argc, char **argv) {  char str[]="172.16.10.196"; char str1[16]; struct in_add

2007-06-14 10:05:00 3388

原创 inet_pton inet_ntop 注意点使用

 #include //bzero memset#include //struct in_addr#include //AF_INET#include int main(int argc, char **argv) {  char str[]="172.16.10.196";// char str1[16]; struct in_addr myin; int ret = 1; unsign

2007-06-13 17:29:00 10361 1

原创 不同套接口比较

 

2007-06-13 16:06:00 770

原创 linux 指针参数所指向空间大小的计算 malloc realloc alloc 指针指向空间的大小的计算 malloc_chunk结构

原理:glibc中的内存动态分配时通过一个结构来实现的struct malloc_chunk{INTERNAL_SIZE_T prev_size; /* 如果前一个结构未使用则把这个填充为前一结构的size*/INTERNAL_SIZE_T size; /* 本结构的size,最小16(本结构的大小),因为是8字节对齐,最后的三位用来做标记位 PREV_INUSE(最后一位用来标记前一结构

2007-06-12 11:00:00 4964

原创 java 中的fscanf/scanf String.format 实例

 public static void main(String []argv) {  Object[] sendData = new Object[4];  sendData[0] = Integer.valueOf(1);  sendData[1] = "172.12.1.2";  sendData[2] = Integer.valueOf(123);  sendData[3] = "testa

2007-06-08 16:27:00 5328

原创 java 服务端代码 UDP

代码的功能就是构建一个UDP服务器接口:客户端给我发送请求  "IP,paraNumber" 向我询问关于某个设备的参数流程:先做参数检查 1、参数个数,2、参数是否准确根据要求回答客户端import java.io.*;import java.net.*;public class UDP { final private static int PARA_PORT = 199

2007-06-08 16:25:00 1984

原创 网络 服务端 建立服务监听描述符 socket setsockopt(reuse) bind listen

 #define LISTENQ 20int open_listenfd(int port){  int listenfd,optval = 1; struct sockaddr_in serveraddr;  if ((listenfd = socket(AF_INET,SOCK_STREAM,0)) {  return -1; }  if(setsockopt(listenfd,SOL_SOC

2007-06-08 09:44:00 3742 1

原创 网络 客户端 多种方法 建立与服务端的连接 接口:服务器名,IP socket connect

#include #include #include #include #include #include #include //gethostbyname//#include //struct in_addr()#include #include  typedef struct sockaddr SA; typedef struct sockaddr_in SIN; in

2007-06-07 16:37:00 1805

原创 网络编程 客户端 服务端 函数 流程 图示 来自深入理解计算机系统一书 P704

其中rio前缀代表Robust io 函数库 

2007-06-07 15:13:00 1309

原创 linux 环境下 用gethostbyname函数获取 DNS的服务器列表 名称 IP

#include #include //gethostbyname//#include //struct in_addr()#include void getHostName(){ struct hostent *myhost; char ** pp; struct in_addr addr; myhost = gethostbyname("www.sohu.com");  printf(

2007-06-07 13:57:00 3837

原创 linux 文件操作函数 通过例子来解释 父子间文件描述符共享 内存映像图

 #include #include #include #include #include #include void cyg_error(char * msg){ printf("%s:%s/n",msg,strerror(errno)); exit(0);}//构建自己的安全的fork函数pid_t myFork(){ pid_t mypid;  if ((mypid = fo

2007-06-07 10:35:00 946

原创 linux 经典的例子 解释 dup dup2 文件描述符重定向函数 输入输出重定向

#include #include #include #include int main(void){   #define STDOUT 1   //标准输出文件描述符 号   int nul, oldstdout;   char msg[] = "This is a test";   /* create a file *///打开一个文件,操作者具有读写权限 如果文件不存在就创建

2007-06-07 10:12:00 6063 1

原创 HTTPParser 解析HTML中的Table的行列 手工设定需要解析的table

 public Hashtable httpParserRadioTable(String content) {  Hashtable retHashTable = new Hashtable();  //_advancedWirlessSettingsList.clear();  Parser myParser;  NodeList nodeList = null;  myParser

2007-06-06 14:45:00 5174

原创 HTTPCLIENT POST 返回信息处理 避免返回数据过大

public final int PAGE_MAX_LEN = 1024 * 1024;//调用ss = getHTMLcontent(post.getResponseBodyAsStream(), post.getResponseContentLength(), post.getResponseCharSet());//函数 public String getHTMLcontent(

2007-06-06 10:51:00 7711

原创 HTTPCLIENT 下载文件 GET 先登录 下载 退出

public int getConfig(String configName) throws MOConfigException {  /*   * telnet prompt is based on sysName, making sure snmp opeded in order   * to get sysName   */  // down load config file  //登陆服务

2007-06-05 15:07:00 2551 1

原创 linux 信号 函数 情景分析 进程组

1、 进程组  getgprggetgpid(0) 获取当前进程的进程组组号         setpgid 用来设置调用进程的进程组号 setpgid(0,0)将自己的进程号作为组号创建一个进程组,调用进程加入其中2、    用kill程序发送信号kill -9 -199 将信号SIGKILL 发送到进程组199的所有进程(-199)kill -9 199 将信号SIGKILL

2007-06-04 15:20:00 843

原创 linux shell 编程 调用过程 fork execve 组合拳

parseline (cmdline,argv);   //将用户输入的CMDLINE 进行处理,分开命令行和参数i f (argv[0] == NULL) return;//含有数据if((pid=myFork( ) ) ==0) {//子进程中调用if{execve(argv[0], argv , environ) exit(0);}}if (waitPid( p

2007-06-04 14:36:00 1422

原创 linux 进程管理 常用系统函数

 1、      获取进程IDgetpid 返回调用进程的pidgetppid 返回调用进程的父进程的id2、    进程的创建、终止fork  创建进程,在新创建的子进程返回零,在父进程(调用进程)中返回非零exit (int)    终止进程3、    回收子进程 waitpid(pid,int *status,int options)    options==0

2007-06-04 13:05:00 1125

原创 linux 系统调用 出错信息 调试 strerror errno

在linux系统中每次调用系统函数都要进行出错信息检查这是应该的,不过为了降低代码的臃肿我做了如下更改原代码:if ((mypid = fork())函数封装:void mystrerror(char * errstr){fprintf(stderr,"%s : %s/n",errstr,strerror(errno));exit(0);}现在代码:if ((mypid = f

2007-06-04 12:11:00 1350

空空如也

空空如也

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

TA关注的人

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