- 博客(37)
- 资源 (16)
- 收藏
- 关注
原创 使cpu占用率50% --《编程之美》
欢迎访问小站,阅读此文http://www.yandong.org/?p=552编程之美的有个题是让cpu的占用率达到50%,从而画出一条直线,下面在linux下实现这一功能首先定义一下cpu的利用率:CPU执行非系统空闲进程的时间 / CPU总的执行时间 = run / (run+sleep)具体内容参考这个链接 http://server.51c
2013-06-26 15:13:57
1380
原创 系统调用和快速系统调用
欢迎访问小站,阅读原文http://www.yandong.org/archives/519介绍 系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被
2013-06-04 09:23:31
1131
原创 修改windows注册表
欢迎访问个人小站,阅读此文http://www.yandong.org/archives/397在认识windows注册表中提到有三种方式可以修改注册表,本文重点介绍第三种所的相关工具和库。不通过windows API,而修改windows注册表,已经有许多人做了这分工作。我们可以直接参考他们的代码,甚至使用他们的工具。下面介绍几份可供参考的代码。第一个:windo
2012-07-27 15:18:09
700
原创 认识winodw注册表
欢迎访问个人小站,阅读此文http://www.yandong.org/archives/386大致认识 对注册表的大致认识,除了使用百度,google搜索出来之外,推荐阅读这片文章The Windows NT∗ Registry File Format Version 0.4 。尝试对其翻译,比较烂,察看此处(有兴趣且英文好的朋友可以翻译一份,大家共享)。注
2012-07-27 15:17:30
860
原创 让l4ka跑起来
欢迎访问个人网站,阅读此文http://www.yandong.orgL4ka:pistachio是一种微内核,关于微内核的一些情况曾经介绍过一些,看这里。本文使用的虚拟机是:bochs不过如果你使用qemu的话也可以,而且也不用写配置文件了,直接输入命令就可以了qemu-system-i386 -fda l4.img 最简单的方法
2012-05-01 10:45:32
968
原创 Grub入门教程
欢迎访问个人网站,阅读此文http://www.yandong.orgGrub(Grand Unified Bootloader)是 一个来自GNU项目的多操作系统启动程序。最新的grub版本是grub2,但是本文没有涉及grub2的内容,通常说的grub代指0.9X等版本,即grub Legacy。返回Grub legacyapt-get
2012-05-01 10:44:25
878
翻译 IA-32的启动过程—-翻译The boot process on IA-32
翻译这篇文章,文章意思很简单。本文主要讲述关于L4的。http://www.geocities.ws/munkee_chuff/l4/boot_process.html 本文主要叙述在IA-32(PC)上一个OS的启动进程,以及详细描述其内存模型。首先当PC启动时,它实在实模式。BIOS首先察看磁盘的启动扇区(前512字节,也叫MBR),接着便加载存储在这的程序。我
2012-05-01 10:42:31
745
原创 ubuntu中文乱码
欢迎访问个人网站,阅读此文http://www.yandong.org1.rar解压乱码: 方法一: ubuntu没有用于解压rar的工具,需要自己下载,在终端运行sudo apt-get install rar即可,不过用rar解压出来的文件和文件夹有乱码,按照在网上搜到的方法,把rar卸掉,安装unrar,就可以解决乱码问题。先卸载rar:sudo apt-
2012-05-01 10:39:43
535
原创 mmap的使用
<br />#include <sys/mman.h> /* for mmap and munmap */#include <sys/types.h> /* for open */#include <sys/stat.h> /* for open */#include <fcntl.h> /* for open */#include <unistd.h> /* for lseek and write */#include <stdio.h>#include <str
2011-05-15 08:43:00
562
原创 c语言的可变参数列表
#include#include/*计算平均值*/int fun(int n_value, ...){va_list value_arg;int count;int sum = 0;/*初始化,第一个参数是va_list, 第二个参数是最后一个有名子的参数*/va_start(value_arg, n_value);for(count = 0; count {/*第一个参数是va_list, 第二个参数是变量类型,该例中所有变量都是整形。在一些函数中需要判断,如printf使用格式列表*/sum += va
2011-05-15 08:41:00
669
原创 反汇编一个c程序
方式一:使用gccgcc编译有四步走,预编译,编译,汇编,连接使用-S编译选项 gcc -S test.c会在当前目录下生成test.s的文件,该文件即是相应的汇编程序方式二:使用gdb首先编译时要是用-g编译选项 gcc -g ./test.c -o ./test接着运行gdb gdb ./test--(可执行文件)在gdb中使用 disassemble + frame(帧),即可查看相应代码段的汇编代码frame通常为一个函数名。方式三:使用objdump命令为 objdump -d test.o
2011-05-10 17:49:00
5367
原创 交换两个变量的值的方法
<br />方法一<br /> Val1 = Val1 ^ Val2;Val2 = Val1 ^ Val2;Val1 = Val1 ^ Val2;或 a^=b; b^=a; a^=b;方法二int a=1,b=2;a=a+b;b=a-b;a=a-b; <br />
2011-04-29 01:50:00
723
原创 一些c/c++基础题,看看是否每题都会?
1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?#include #include int main(){ while(1) { fprintf(stdout,"hello-std-out"); fprintf(stderr,"hello-std-err"); sleep(1); } return 0; 参考答案:stdout和stderr是不是同设备描述符。stdout是
2011-04-29 01:37:00
759
原创 测试大端和小端的代码
<br />#include<stdio.h>#include<stdlib.h>#define CPU_VENDOR_OS "i686-pc-linux-gnu"intmain(int argc, char ** argv){ union { short s; char c[sizeof(short)]; }un; un.s = 0x0102; printf("%s: ", CPU_VENDOR_OS); if(sizeof(short
2011-04-29 01:26:00
1172
原创 整数的二进制表示中1的个数
<br />#include<iostream>using namespace std;/*如果我们把number减去1,那么原来处在整数最右边的1就会变成0,原来在1后面的所有的0都会变成1。其余的所有位将不受到影响。这样把number 与 number-1的值 相与 可以使number的二进制代码中少去一个1。当把所有的1干掉的时候,number就变成了0,此时退出*/int numOfBinary1(int number){ int result=0; in
2011-04-29 01:23:00
523
原创 c和c++中const的区别
<br /> <br />c和c++中的const从语义上讲没什么太大的区别,但毕竟两种语言设计思想还有很大区别,在实现的时候不尽相同。<br />请编译test.c 和test.cpp,看一点区别。<br /> <br /> <br /> <br />test.c<br /> <br />#include<stdio.h>void main(){ //网上认为这个会编译出错,但是却没有. //申请数组时,这个与编译器有关,请关注c99特性。 printf("I am c/n");
2011-04-29 01:18:00
634
原创 如何判断c语言函数参数的入栈顺序
编译运行这段代码:#include void foo(int x, int y, int z){ printf("x = %d at [%X]/n", x, (int)&x); printf("y = %d at [%X]/n", y, (int)&y); printf("z = %d at [%X]/n", z, (int)&z);}int main(int argc, char *argv[]){ foo(100, 200, 300);
2011-04-29 01:10:00
805
原创 常用排序
/*1.插入排序2.选择排序3.冒泡排序4.希尔排序5.快速排序6.归并排序7.堆排序*//*1.插入排序思路:R[0],R[1],...R[i]是已经排序好的序列,要把R[i+1]插入到合适的位置。template */void insertionSort(vector &a){ int j; T temp; for(int i=1;ivoid selectionSort(vector &a){ int num=a.siz
2010-11-28 22:00:00
766
1
转载 linux学习路线(转)
<br />建议学习路径:<br /><br />首先先学学编辑器,vim, emacs什么的都行。<br />然后学make file文件,只要知道一点就行,这样就可以准备编程序了。<br /><br />然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。<br /><br />如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。<br /><br />
2010-09-17 04:09:00
680
原创 linux上用户之间的通讯及管理员的广播
用户之间的聊天:linux是多人多任务系统,那么在线的几个账户之间是否可以相互联系?相互通话呢?当然可以了。 通话的第一步,你当然要知道那些人在线,才可以通话阿。在终端输入 w 会显示当前有哪些人在线。然后使用 write cedar hello,I am god! [ctrl]+d 可以给cedar这个用户发送信息。但是这样会打断cedar的当前工作,所以cedar不想接受信息,于是他
2010-08-21 20:23:00
953
原创 linux帐号管理相关---增加用户和群组
涉及到的文档: /etc/passwd 1.每一行都代表一个帐号, 有几行就代表有几个帐号在你的系统 中 2.信息主要有:帐号名称,密码,UID,GID,使用者资讯说明 栏,家目录,Shell /etc/shadow 1.真正的密码存放位置,为了安全起见。 2.信息主要有:帐号名称,密码,最近更动密码的日期,密码不 可被更动的天数,密码需要重新变更的天
2010-08-21 16:38:00
1668
原创 shell脚本实例---学习的捷径就是练习
写在前面: 1.在linux里面是不在乎后缀名的,但是建议写上后缀名,如test.sh,这样一眼便看出这是shell程序。 2.如果不能运行,一般要执行chmod +x filename 使文件可执行 3.执行格式一般为./test.sh,为了安全起见。 4.写shell脚本时最好要建立良好的习惯。 在每个 script 的档头处记录好∶(练习的时候免了吧) script 的功能; script 的版本资讯; script 的作者与联络方式; script 的版权宣告方式;
2010-08-21 05:18:00
9502
原创 一些调试工具的使用
<br />最常用的调试工具是gdb,在此就不多说了,家庭常备。下面主要介绍一些其他的工具,满足一些特殊需要的。<br />(对于一些工具只是简单介绍功能,如果感兴趣或觉得有用可以查阅相关资料)<br /><br />ctags:<br /> 作用:<br /> 为程序中所有函数建立索引,就像书籍总的目录一样。在当前目录创建tags,<br /> 文件中每行由函数名,声明该函数的文件和一个可以在文件中查找该函数定义的正则表达式。<br />
2010-08-17 13:02:00
641
原创 linux 安装git--fedora
在这个网站上下载你所需要的版本。http://kernel.org/pub/software/scm/git/RPMS/i386/ 然后安装就行了。 但通常会出现错误,当然安装问题大都是依赖文件的问题。 我安装的时候需要 libcrypto.so.8 和 libssl.so.8 这两个文件。 在rpmfind上可以搜索导这两个文件都包含在openssl-0.9.8k-1.fc11.i686.rpm中(可在rpmfind中查到这些信息),
2010-08-16 23:49:00
3246
转载 Linux MySQL更改MySQL数据库目录位置
<br />MySQL默认的数据文件存储目录为/var/lib/mysql。假如要把目录移到/home/data下需要进行下面几步:<br /><br />1、home目录下建立data目录<br /><br />cd /home<br />mkdir data<br /><br />2、把MySQL服务进程停掉:<br /><br />mysqladmin -u root -p shutdown<br /><br />3、把/var/lib/mysql整个目录移到/home/data<br /><br /
2010-08-16 21:23:00
567
原创 mysql学习笔记
一:安装后的配置 文件目录: 数据库目录 /var/lib/mysql/ 配置文件 /usr/share/mysql(mysql.server命令及配置文件) 相关命令 /usr/bin(mysqladmin mysqldump等命令) 启动脚本 /etc/rc.d/init.d/mysqld(启动脚本文件mysql的
2010-08-16 18:55:00
590
原创 Warning: RPMDB altered outside of yum.的解决办法
错误提示:Warning: RPMDB altered outside of yum解决办法:删除yum的历史记录rm -rf /var/lib/yum/history/*.sqlite上面的命令可能需要root权限才能执行
2010-08-16 01:56:00
3399
1
原创 fedora 13 mysql安装记录
一:可以到mysql官网去下载,我下载的是通用版本。你需要下载下面四个文件就可以了。mysql-client --------客户端包mysql-server--------主服务器包mysql-devel---------开发包,作为开发者,这个是必须的,其提供开发用的头文件和库文件mysql-shared----共享组建包-----外部客户端使用的共享库然后安装就可以了。但是我遇到了一个极为头疼的问题,就是版本匹配的问题,官网下载的是MySQL-server-5.1.49-1版本,而我的
2010-08-15 22:31:00
877
原创 linux --gedit插 及乱码解决 && stardict词库
一.gedit插件 0.gedit自身带了一些插件,除了这些我还常用到classbrower ,autocomplete 这些都是非常重要的插件。classbrower不用说 浏览类很方便,可以浏览c++,java,xml,python等等,实在很强悍。autocomplete可以让你少些很多单词,只要在 你打开的 文件里面出现过,它就会自动记忆,自动补全。 1.到http://live.gnome.org/Gedit/Plugins下载插件,如我下载Snapo
2010-08-15 21:41:00
1175
原创 linux dbm学习中的问题
遇到的问题一:gcc编译老是 undefined reference to `dbm_open'具体描述 : gcc -I/user/include -L/user/lib -o dbm1 dbm1.c -lgdbm这条语句老是出错。我通过deb包安装了一次dbm,其文件分别在/usr/include 和/user/lib 中我将其包含进去编译出错。于是我尝试自己下载源文件,自己编译, http://ubuntu.cn99.com/ubuntu/pool/main/g/gdbm/ 编译好的文件分别在
2010-08-12 13:43:00
910
1
原创 linux 中curses找不到怎么办?
在许多版本的linux中,curses都被安装了,但是也有不少没有被安装的(比如我的minit9)。如果你发现你的/user/include和/user/lib下面都没有curses或者ncurses的影子,就要想办法自己安装了。方法一:新立德安装 在新立德里面搜索curses,你会发现你已经安装了一些关于ncurses的软件包,如libncurse5等(安装这个软件包可以让你在/lib里面找到关于ncurses的共享库)。这时你需要安装libncurs
2010-08-09 19:03:00
1705
转载 linux文件系统下的 /dev/null 和 /dev/zero
linux文件系统下的 /dev/null 和 /dev/zero1,可以/dev/null看作"黑洞". 它非常等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到. 然而, /dev/null对命令行和脚本都非常的有用.用处:禁止标准输出. 1 cat $filename >/dev/null # 文件内容丢失,而不会输出到标准输出.禁止标准错误 (来自例子 12-3). 2>/dev/null 这样错误信息[标准错误]就被丢到太平洋
2010-08-07 20:46:00
1378
转载 如何查看linux命令源代码
用linux一段时间了,有时候想看看ls、cat、more等命令的源代码,在下载的内核源码中用cscope没能找到,在网上搜索了一下,将方法总结如下: 1. 以搜索ls命令源码为例,先搜索命令所在包,命令如下: lpj@lpj-linux:~$ which ls /bin/ls 2. 用命令搜索该软件所在包,代码如下: lpj@lpj-linux:~$ dpkg -S /bin/ls coreutils: /bin/ls 3.
2010-08-07 20:45:00
2023
转载 minit/ubuntu/debian 中 /bin/sh--->dash
GNU/Linux 操作系统中的 /bin/sh 是 bash(Bourne-Again Shell)的符号链接,但鉴于 bash 过于复杂,有人把 ash 从 NetBSD 移植到 Linux 并更名为 dash(Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Ubuntu 号称自从他们在 6.10 版里这样做了以后,系统启动速度有了明显的提升。Debian 计划在下一个发行版(代号 lenny)中也将 dash 作为默认的 /bin/sh。
2010-08-07 20:43:00
1097
原创 静态库和动态库
静态库描述:如果有多个应用程序使用该库,那么每个程序都有一份该库的拷贝创建: ar crv 库的名称 用来生成的文件 库的名称:必须以lib开头,后缀名为.a例子: ar crv libfoo.a bill.o fred.o 注:这句话已经创建了一个库文件,但是创建完了不代表就可以使用了,还需要为函数库生成一个内容表, 方可使用。不过如果使用了GNU的软件开发工具,这一步是不需要的。 ranlib libfoo.a使用
2010-08-04 12:33:00
412
卓有成效的程序员.pdf
2011-01-08
Effective+C++中文
2010-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人