- 博客(62)
- 资源 (9)
- 收藏
- 关注
原创 常见排序算法的实现
在计算机科学与数学中,排序算法是一种基本并且常用的算法,一个排序演算法是一种能将一串资料依照特定排序方式的一种演算法。有效的排序演算法在一些演算法中是重要的,如此这些演算法才能得到正确解答。排序演算法也用在处理文字资料以及产生人类可读的输出结果。由于实际工作中处理的数量巨大,所以排序算法对算法本身的速度要求很高。现介绍C/C++中几种常见排序算法的简单运用方法。 插入排序是最简单最直观的
2009-08-30 21:36:00 419
原创 MP3文件的结构与编程
有一个朋友喜欢听MP3,为了获取MP3,写了一个程序,专门从一家音乐网站上搜索下载mp3,一下子下载了有上千首。这时朋友又犯愁了,这些MP3的歌曲名字都是使用1,2,3,4,。。等数字命名,挑选起来十分不方便。虽然MP3播放器能够读出MP3文件信息的歌曲名,但歌曲文件本身的名字却不利于自己管理。于是就想写一个小程序实现MP3自动更名。查了一些资料,研究了一下MP3的文件结构。研究MP3的结构,
2009-08-30 21:26:00 865 1
原创 用C语言解析BMP文件的结构
bmp文件的结构比较简单,主要包括文件头,BMP信息头,BMP数据内容。文件头BITMAPFILEHEADER结构为:Windows GDI提供了 typedef struct tagBITMAPFILEHEADER { WORD bfType; DWORD bfSize; WORD
2009-08-30 21:17:00 850 1
原创 xbox 用身体动作来控制游戏
北京时间5月13日上午消息,据国外媒体报道,知情人士透露,微软正在为Xbox 360游戏机开发一种新型动作传感摄像头,允许游戏玩家利用身体动作来控制游戏。 微软此举是针对任天堂Wii游戏传感器作出的反击,但与Wii不同的是,微软的摄像头不需要用户手握任何硬件来控制游戏。该摄像头放置在电视机附近,可以捕捉玩家手指、腿或头部运动。 该摄像头使用了3D技术,可以让玩家更准确地控制游戏。该项技
2009-08-23 22:27:00 1187
原创 文件操作函数全集 Linux C(流式 I/O)
在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags;
2009-08-20 10:05:00 4280 1
转载 程序员,应该掌握的英语词汇
卷首语:“英语”不需要专业,因为它只是工具...... 本文选自《Java程序员,上班那点事儿》 有时候如果应聘到了一个有外资背景的公司或者这个公司的很多人都有海外或外资工作背景时,你也许还会用到一些日常工作交流时候的词汇。 比如我们看一下某主管开会时的发言: 小王,请你尽快“Push”一下这件事,按照前期咱们定下来的“Plan”
2009-08-18 14:37:00 637
原创 epoll精髓
在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:#define __FD_S
2009-08-18 14:26:00 456
原创 程序分析工具gprof介绍
程序分析是以某种语言书写的程序为对象,对其内部的运作流程进行分析。程序分析的目的主要有三点:一是通过程序内部各个模块之间的调用关系,整体上把握程序的运行流程,从而更好地理解程序,从中汲取有价值的内容。二是以系统优化为目的,通过对程序中关键函数的跟踪或者运行时信息的统计,找到系统性能的瓶颈,从而采取进一步行动对程序进行优化。最后一点,程序分析也有可能用于系统测试和程序调试中。当系统跟踪起来比较复杂,
2009-08-18 10:49:00 752
原创 ar和nm命令的使用
当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍两个命令ar和nm,用来对库操作。 当我们的程序中有经常使用的模块,而且这种模块在其他程序中也会用到,这时按照软件重用的思想,我们应该将它们生成库,使得以后编程可以减少开发代码量。这里介绍两个命令ar和nm,用来对库操作。 1、
2009-08-18 10:45:00 438
原创 linUx常用手工入侵检测方法与命令
一个好的网管员不但要治理好网络,能及时排除各种故障,还要注重网络安全,提防黑客入侵。所以熟悉常用手工入侵检测的方法和命令也应该是网管员们的基本技能之一。本文介绍的是一些Unix下常用手工入侵检测方法与命令,网管员们把握了它不但可以迅速判定出一些简单的黑客入侵,还可以加深对入侵检测的了解,从而能更好地使用一些入侵检测和审计工具。检查/etc/passwd文件中是否有可疑用户Unix
2009-08-14 00:07:00 804
原创 2.6内核下不编译内核给iptables加模块
1,安装kernel源码[root@jiecho]# yum install kernel-source2,iptables-1.3.3.tar.bz2和patch-o-matic-ng-20050810.tar.bz2并解包,为了方便,我们都放在/usr/src下,并把kernel和iptables做符号链接.[root@jiecho]# cd /usr/src[root@ji
2009-08-14 00:02:00 600
原创 在Unix下用命令行中完成所有的工作
UNIX 命令行是一种WYTIWYG(即所输即所得)的接口。UNIX 提供了大量的命令,使用这些命令,您可以对内核和用户空间中各种可用的资源进行操作。您需要对 CPU 的使用情况进行监视吗?可以尝试使用 top 或 ps。您需要删除所有以 .bak 结尾的文件吗?可以尝试使用 rm .bak。您需要获得关于一个新的命令的帮助吗?可以运行 man。但是,当您所需要的资源位于广域网 和全球 Int
2009-08-13 23:59:00 1066
原创 linux、内核源代码的阅读
对于源代码的阅读,要想比较顺利,事先最好对源代码的知识背景有一定的了解。对于linux内核源代码来讲,我认为,基本要求是:1、操作系统的基本知识;2、对C语言比较熟悉,最好要有汇编语言的知识和GNU C对标准C的扩展的知识的了解。另外在阅读之前,还应该知道Linux内核源代码的整体分布情况。我们知道现代的操作系统一般由进程治理、内存治理、文件系统、驱动程序、网络等组成。看一下Linux内核源代码就
2009-08-13 23:50:00 593
原创 SSH进阶(二):FTP转发
1.FTP协议简介 为了便于后面的讨论,我们首先简要地讨论一下FTP协议(如果对FTP协议已经有了比较深入的了解,你可以略过这一节)。大多数的TCP服务是使用单个的连接,一般是客户向服务器的一个周知端口发起连接,然后使用这个连接进行通讯。但是,FTP协议却有所不同,它使用双向的多个连接,而且使用的端口很难预计。一般,FTP连接包括: 一个控制连接 这个连接用于传递客户端的命令和服务器端对命令的响应
2009-08-13 23:46:00 1141
原创 一起学远程控制你的Windows服务器
1. rdesktop最新版本http://www.rdesktop.org/#download 2. 解压的包# tar zxvf rdesktop-1.2.0.tar.gz3. 进入解开的目录,执行通用的LINUX程序安装过程# ./configure....# make...# make install4. 加参数运行rdesktopUsage: rdesktop [options] ser
2009-08-13 23:42:00 477
原创 Linux中文件查找方法大全
每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的Windows操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。可是使用Linux的用户就没有那么幸运了,在Linux
2009-08-13 23:38:00 372
原创 互联网创业几个思路(2009年8月版)
互联网创业几个思路(2009年8月版) 这篇文章是我上篇blog的一个延续,上篇博客讨论了一个最近算是成功的网站《摩尔庄园为什么这么火?》。我最后总结了一句话,空白的市场、潜在的用户、用户的消费意愿、再加上一个少犯错的团队。但想想只有这样几条还是不够的,还应该有其他因素。 1、空白市场 首先这个市场是个空白市场,现在再去做一个QQ或者百度或者新浪都是没可能的事情了
2009-08-13 23:00:00 412
原创 内核中工作队列(linux工作队列)
[前记]Linux自从2.6.20之后,工作队列发生了一些变化,目前从网络上搜索的资料一般都是介绍老版本的工作队列,很少见到对新版本的介绍。本文对新老版本都做了简要概述,并分别提供了简单的实作案例。工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在
2009-08-13 17:58:00 2093 2
原创 linux消息队列
基本概念1.队列 队列是信息的线性表,它的访问次序是先进先出(FIFO)。也就是说,置入队列中的第一个数据项将是从队列中第一次读出的数据项,置入的第二项将是读出的第二项,依此类推。这是队列允许的唯一存取操作,其它随机访问是不允许的。这种数据结构保证对数据资源的请求将严格按照先后顺序进行,因而可用于对事件的调度并起到I/O缓冲的作用。2.报文 发送进程
2009-08-13 17:48:00 1036
原创 在Linux下使用RamDisk
一、什么是RamDisk顾名思义,Ram:内存,Disk:磁盘,RamDisk就是指使用你的一部分内存空间来模拟出一个硬盘分区。不过这在硬盘越来越便宜的今天好象并不是很有用,但现在内存也越来越便宜呀,对于一些我们想让其访问速度很高的情况下,还是可以试一试的。二、创建一个RamDisk 其实创建一个RamDisk是一件很简单的事,由于RedHat Linux 6.0在默认安装下就支持了RamDisk
2009-08-11 09:15:00 1021
原创 strcpy()、memcpy()、memmove()、memset()的实现
一直想知道内部实现, 现在想看了, 就找了一下.不错.strcpy()、memcpy()、memmove()、memset()的实现 strcpy(), 字符串拷贝.char *strcpy(char *strDest, const char *strSrc){ assert((strDest!=NULL) && (strSrc !=NULL));
2009-08-09 13:59:00 811
原创 memset 实现
第一种:最常见的:void* memcpy( void* dest, const void* src, size_t count ){if (count{printf("Invalid count number !./n");return (void*)0;}if(src==NULL||dest==NULL)return (void*)0 ;if ((unsigne
2009-08-09 13:57:00 1265
原创 memcpy实现
通常来说,这个函数的实现比较简单 我看了下crt的实现源码,如下:(略去64位机的) void * __cdecl memcpy ( void * dst, const void * src, size_t count ){ void * ret = dst; while (count--) {
2009-08-09 13:52:00 1020 2
原创 strcpy,sprintf,memcpy的区别
strcpy 函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。snprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字符串或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。memcpy 函数顾名思义就是 内存拷贝,实
2009-08-09 13:49:00 1278
原创 memset ,memcpy 和strcpy 的根本区别?
Memset 用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;例:char a[100];memset(a, /0, sizeof(a)); memset可以方便的清空一个结构类型的变量或数组。 如:struct sample_struct{ char csName[16]; int iSeq; int iTy
2009-08-09 13:47:00 470
原创 strcpy,strncpy,strlcpy,memcpy
好多人已经知道利用strncpy替代strcpy来防止缓冲区越界。但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。 1. strcpy我们知道,strcpy 是依据 /0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代码如下(来自 OpenBSD 3.9):char *strcpy(char *to, cons
2009-08-09 13:41:00 498
原创 strcpy 使用
代码1:#include #include main() { char *buf; char *string= "hello "; buf=string; printf( "%s/n ",buf); strcpy(buf, "ok "); printf( "buf=%s ",buf); } 代码2:#include #include main() { c
2009-08-09 13:26:00 813
转载 malloc 使用
malloc使用示例实例代码:/* 编写日期:2009-5-16 程序作者:haiyangcqu 程序目的:演示malloc使用方法 */#include #include #include #define SIZE 20int main(int argc, char *argv[]){ //使用malloc分配空间 int
2009-08-09 13:22:00 799
原创 pxe网络安装系统---------基于windows xp做服务器(dhcp+ftp)安装linux系统
首先下载tftpd32.exe+谷普FTP服务器 1.0 中文绿色版.rar然后,配置tftp:创建tftp目录/tftpboot,将光盘中pxelinux.0,vmlinuz,initrd.img文件拷到该目录/tftpboot下 ,在该目录下创建/tftpboot/pxelinux.cfg,将 光盘中isolinux.cfg改名为default拷贝到/tftpboot/pxelinux
2009-08-09 12:37:00 892
原创 suse10.3缺字体而无法进入图形界面
只需下载两个RPM包1.xorg-x11-fonts-core-7.2-85.noarch.rpm2.xorg-x11-fonts-7.2-85.noarch.rpmrpm -ivh xxxxx.rpm即可, 此方法在suse10.3通过
2009-08-09 12:09:00 585
原创 只ping得通网关,访问局域网的资源不能在浏览器里访问网页
只ping得通网关,访问局域网的资源不能在浏览器里访问网页 我使用是redhat7.2使用的是两块8139网卡,在配置网络的时候,只ping得通网关,访问局域网的资源。 #insmod /lib/.../8139too.o #ifcoinfig eth1 xx.xxx.x.xxx netmask 255.255.255.192 up #ping ss.sss.ss.ss /ping网关是通
2009-08-08 12:05:00 1351
原创 Linux单网卡绑定多IP与多网卡共用单IP
在Linux下有时候需要给一个网卡绑定多个IP: 1、单网卡绑定多IP在Redhat系列中的实现方法 假设需要绑定多IP的网卡是eth0,请在/etc/sysconfig/network-scripts目录里面创建一个名为ifcfg-eth0:0的文件, 内容样例为: DEVICE=”eth0:0″ IPADDR=”172.16.170.2″ BROADCAST=”172.16.170.254″
2009-08-08 11:55:00 550
原创 利用LINUX做路由器+网关+防火墙进行远程办公
LINUX在公网上,内网有台计算机,支持网卡远程唤醒,在INTERNET上可以通过控制软件实现远程办公 1、安装wakelan-1.1.tar.gz tar wakelan-1.1.tar.gz cd wakelan-1.1 ./configure make make install 2、添加广播路由 route add -host 255.255.255.255 -dev eth
2009-08-08 11:41:00 588
原创 算法 哈希(hash——map)
详细解说STL hash_map系列详细解说STL hash_map系列0 为什么需要hash_map1 数据结构:hash_map原理2 hash_map 使用2.1 一个简单实例2.2 hash_map 的hash函数2.3 hash_map 的比较函数2.4 hash_map 函数3 相关hash容器4 其他4.1
2009-08-05 09:57:00 1801
原创 让NTFS在linux(redhat as 5) 下游刃有余
方法一:download fuse-2.7.4.tar.gz安装步骤:解压fuse-2.7.4.tar.gz./configuremakemake installmodprobe fuse即可, 此方法在suse10.3安装成功方法二:传统编译内核模块的方法繁琐而费时,本文将告诉我们一种快速编译所需要内核模块的新方法。 当你安装完Linux系统,并且已经启动
2009-08-03 23:43:00 689
原创 LINUX系统下,让VFAT和NTFS分区开机自动挂载
测试环境:RH AS 5 Windows既可以为FAT分区,也可以为NTFS,linux默认不支持NTFS,但是,我们可以通过编译NTFS的模块。参考:www.chinaunix.net任何转载请保证原文完整1.)以root身份登陆终端,在/下创建目录比如:Windows下有c,d,……盘就要创建对应的/win/c ,/win/d……目录后面我们会讲到将win盘挂载到/win下对应
2009-08-03 23:40:00 750
原创 万年历
<!--<! if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4) document.write("你的浏览器无法执行此程序。此程序在 IE4 以后的版本才能执行!!")// >// --><!--lck=0;function r(hval){if (
2009-08-03 22:34:00 755
原创 Linux下C语言编程--线程操作
前言:Linux下线程的创建 介绍在Linux下线程的创建和基本的使用. Linux下的线程是一个非常复杂的问题,由于我对线程的学习不时很好,我在这里只是简单的介绍线程的创建和基本的使用,关于线程的高级使用(如线程的属性,线程的互斥,线程的同步等等问题)可以参考我后面给出的资料. 现在关于线程的资料在网络上可以找到许多英文资料,后面我罗列了许多链接,对线程的高级属性感兴趣
2009-08-03 15:02:00 386
原创 Linux下C语言编程--信号处理函数
前言:这一章我们讨论一下Linux下的信号处理函数. Linux下的信号处理函数: 1.信号的产生 2.信号的处理 3.其它信号函数 -------------------------------------------------------------------------------- 一个实例 1。信号的产生 Linux下的信号可以类比于DOS下的INT或
2009-08-03 15:01:00 526
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人