- 博客(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
原创 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
原创 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关注的人