自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (3)
  • 收藏
  • 关注

转载 Linux 的 completion机制

一、定义:linux/include/linux/completion.h 13struct completion { 14 unsigned int done; 15 wait_queue_head_t wait; 16}; 二、作用:虽然信号量可以用于实现同步,但往往可能会出现一些不好的结果。例如:当

2014-08-14 23:25:17 793

原创 使用排序化简组合生成算法

  组合问题在日常生活中随处可见,先来看一个摘于《离散数学》(第六版,Richard Johnsonbaugh著)的例子:  摇滚乐队“Unhinged Universe”录制了n段视频节目,时间长度分别为t1 ,t2 ,t3 ,…,tn 秒。一盘磁带可以容纳C秒的视频。这是Unhinged Universe发行的第一盘磁带,乐队希望这盘磁带能尽可能多的收入他们的视频节目。问题转化为从{1,2

2010-01-17 18:57:00 2192 1

原创 欧几里德算法中的Fibonacci序列

Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE

2009-10-30 21:26:00 1270

原创

  数是客观存在的。它们渗透世间的每个角落,它们并不依赖于任何人所规定的任何度量。它们总是以某种确定的方式揭示着某种真理。  我们只讨论最为熟悉的整数,它们总是存在且良序的,一个总是大于另一个。人类发现了整数,并使用它们来计数,于是产生了符号。也许我们早已习惯于称我们的“0,1,2,3,...”为数,其实这些只是用来表示数的符号,不论你给出如何不同的符号,数永不改变。  当然为每个数指定一

2009-10-14 10:45:00 1122 1

原创 使用洗牌算法生成随机序列

  假如我们要构造一个取值在1到n之间的n项随机整数序列S,而且有一个可以生成i到j之间的随机整数的函数rand(i, j)。好的,我们可以简单的为序列S的每一项生成一个介于1到n之间的随机整数Si,伪代码如下:for(i = 1; i <= n; ++i){ Si = rand(1, n);}   OK,问题解决。使用这个算法只需要调用n次rand(1, n)。  现在我

2009-09-10 00:42:00 2959 2

转载 gcc/g++参数详解

原文作者([email protected])[介绍] gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs] 3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as] 4.连接目标代码,生成可执行程序[链接器ld]

2009-06-18 17:41:00 5407

原创 不使用中间变量交换两个数值型变量的值

  记得第一次接触“不使用中间变量交换两个数值型变量的值”这个概念是在学习算法的时候,课本后有这样一道课后题,当时想到的方法就是现在所说的加减法。后来在编程和学习的过程中又发现了几种方法,特写此帖,总结一下。这里所写的语言环境是C/C++语言,一些运算符的形式以及可以内嵌汇编代码的约束都是类C的。   第一类方法也是常用的方法,通过多次的数值计算来完成交换,到现在知道的有下面三种: 

2009-05-19 16:02:00 9873 2

原创 国人的浮躁!

      看《编译原理 第二版》(龙书三)一个多月了,有很多感慨,今天终于忍不住了,也来说上几句,聊以寄托一点对民族未来的期望。      我只是一名学生,没有多少阅历,更没有什么可以称的上积淀的东西。以前也佯装深沉的整天在作文里写些忧国忧民的陈词滥调,但我真的忧过吗?应该是没怎么忧过的。也许在我脑子里出现过的最为可忧的也就只是毕业后就业的压力,所以我没有关注过多少东西,除了专业方面。 

2009-05-12 18:39:00 1785 3

原创 编译原理——从if then else看使用二义性文法

      在研究语法分析器时,大部分语法分析器都期望文法是无二义性的,否则,我们就不能为一个句子唯一地选定语法分析树。但是在某种情况下,使用经过精心选择的二义性文法可以带来方便。此时需要使用消二义性规则来“抛弃”不想要的语法分析树,只为每个句子留下一棵语法分析树。      假如我们要将if then else语句加入某一文法G中,我们可以给出无二义性文法如下:           

2009-05-07 12:55:00 8702

转载 volatile编写多线程程序的好帮手

并不是我故意想弄糟你的心情,但是在这期专栏里,我们将讨论多线程编程这一话题。正如上一期Generic里所说的,编写异常安全(exception-safe)的程序是非常困难的,但是和编写多线程程序比起来,那简直就是儿戏。        多线程的程序是出了名的难编写、难验证、难调试、难维护,这通常是件苦差事。不正确的多线程程序可能可以运行很多年也不出一点错,直到满足某些临界的条件时,才出现意想不到的奇

2009-02-10 14:14:00 937

原创 sql模糊查询实现组合查询

数据库编程中经常遇到组合查询的情况。    例如,某公司数据库里有一张存放用户信息的表user_info,它有多个字段:userID,ID,name,age,sex,address。其中userID是表的主码,表示用户的用户号,该用户号对每个用户都是唯一的;ID表示用户省份证号。此时要对用户信息进行组合查询,即给出这些字段中的一条或几条信息来查询该用户。比如,可以只填写userID、ID、na

2009-01-18 18:47:00 2716

转载 进程防杀的实现收藏

进程防杀的实现在WINDOWS操作系统下,当我们无法结束或者不知道怎样结束一个程序的时候,或者是懒得去找“退出”按钮的时候,通常会按“CTRL+ALT+DEL”呼出任务管理器,找到想结束的程序,点一下“结束任务”就了事了,呵呵,虽然有点粗鲁,但大多数情况下都很有效,不是吗?设想一下,如果有这么一种软件,它所要做的工作就是对某个使用者在某台电脑上的活动作一定的限制,而又不能被使用者通过“结束

2009-01-17 22:40:00 1173

转载 c/c++ c++ file c++/stl/boost 判断文件目录是否存在

1.C++很简单的一种办法:#include iostream>#include fstream>using namespace std;#define FILENAME "stat.dat"int main(){     fstream _file;     _file.open(FILENAME,ios::in);     if(!_file)     {         cout

2008-12-21 10:56:00 9803 3

原创 可变参数模拟C++中缺省参数及重载

    前几天在论坛C++版块里看到一个帖子,求教一个让函数参数缺省为同一参数表里的其他参数的方法。『其连接为:http://topic.csdn.net/u/20081101/13/743fffff-5f5d-4077-91e1-3465748372d5.html』    大体解决方案有二:    1)在函数体中进行参数特征的判断。该方法的缺点在于很难找到一个合适的判断条件,假如用户的输入正好符

2008-11-06 12:25:00 1325

转载 C/C++中的内存对齐

[Intel Architecture 32 Manual]    字,双字,和四字在自然边界上不需要在内存中对齐。(对字,双字,和四字来说,自然边界分别是偶数地址,可以被4整除的地址,和可以被8整除的地址。)    无论如何,为了提高程序的性能,数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;然而,对齐的内存访问仅需要一次访问。

2008-11-05 23:04:00 701 2

转载 CSDN C/C++电子杂志第一期 之 可变参数学习笔记

前言:本文在很大程度上改编自网友kevintz的“C语言中可变参数的用法”一文,在行文之前先向这位前辈表示真诚的敬意和感谢。一、什么是可变参数我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变

2008-11-05 23:03:00 779

原创 C++技术感想——多态赋值

  今天突然想到一个问题:C++中多态该如何完成赋值呢?形如以下的情况:class Base{public: Base() : a(0){} Base(int n) : a(n){} ~Base(){} //使用缺省的operator = //...private: int a;};class Derived : public Base{public: Derived() : Base()

2008-07-24 23:32:00 885

原创 C++技术感想——多态类的虚复制函数

 C++技术感想    ——多态类的虚复制函数    当我们在进行类对象的复制时,很可能会写下面的语句:T* pSomeObj = ...;T* pNewObj = new T(*pSomeObj);    对于非多态类我们可能放心的这样作,但对多态类呢?看这样一个场景,T是一个派生层次中的基类,而pSomeObj指向的是T的一个派生类对象,这样的复制显然无法达到我们的预期目的。此时我们可

2008-05-21 23:23:00 958

原创 编程技术感想——一个用模板实现的assert

        今天看到了Andrei Alexandrescu设计的一个用模板实现的类CTAssert template,作用和assert宏类似,但施行于“可在编译期间被核定(evaluated)”的条件句中。以下别是CTAssert template: templatebool> struct CTAssert;template struct CTAsserttrue> ..

2008-04-09 22:30:00 1138

原创 C++点滴——const/volatile不能用来修饰没有this指针的成员函数

       前几天在论坛闲逛,看到这样一个静态成员函数声明: static int XX::count() const;        当时还真没看出什么问题(因为这个函数确实没有改变数据成员的值,一切似乎都正常),后来看到有人说static成员函数不能用const和volatile修饰,突然感觉这句话好熟悉,却怎么都想不起为什么了。后来查了下书,恍然大悟,特发此篇。  

2008-04-02 23:04:00 2171

原创 编程技术感想——用取模运算代替判断后得到的高效性

 假如, 我们在设计一个循环队列,预先分配一段内存空间使其容量为capacity。当队尾指针(可用一个指示序号的整型变量实现,其永远指向最后一个元素的下一个位置)指向物理空间上的最后一个存储单元时,此时再插入元素,因为队列可能并未真满,可使尾指针返回来指向物理存储空间中的第一个单元。此时,我们可能需要一个判断: if( ++Q.rear > Q.capacity )      

2008-03-22 22:11:00 1844 2

原创 C/C++中随机数的生成函数和播种子的函数

随机数生成函数:int rand( void );播种子函数: void srand( unsigned int seed ); 例:  void main( void )     {           int i;           /*根据时钟每次产生不同的种子*/           srand( ( unsigned )time( NULL ) );           /*  

2008-03-19 22:52:00 1707 1

原创 C++技术感想 -- 禁止类的复制构造函数和赋值操作符的使用

有些类是不希望产生被复制或赋值的(甚至坚决拒绝),但若不为类定义复制构造函数和复制操作符时系统将自动按值复制或赋值,因此简单的不去定义这两个函数无法起到禁止的作用。现总结方法如下:1,在类无友元的情况下,将复制构造函数和赋值操作符声明为private。2,只提供成员的生命而不提供定义。这样当程序中出现 复制或赋值现象时,会造成链接错误。 

2008-03-12 23:11:00 1504

原创 类设计者的核查表

1,你的类需要一个构造函数吗?2,你的数据成员是私有的吗?3,你的类需要一个无参构造函数吗?4,是不是每个构造函数初始化所有的数据成员吗?5,类需要析构函数吗?6,类需要一个虚析构函数吗?7,你的类需要复制构造函数吗?8,你的类需要一个赋值操作符吗?9,你的类需要定义关系操作符吗?10,你的类需要定义关系操作符吗?11,删除数组是你记住了用delete []吗?12,记得在复制构造函数和赋值操作符

2008-01-30 22:40:00 1018 1

转载 C++中的内存划分

       在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。  栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。  堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系

2008-01-30 22:20:00 773 1

转载 Effective STL: Item 44:优先使用与泛型算法同名的成员函数

item 44:优先使用与泛型算法同名的成员函数一些容器拥有和stl泛型算法同名的成员函数。关联容器提供count()、find()、lower_bound()、upper_bound(),和equal_range(),而list提供了remove()、remove_if()、unique()、sort()、merge(),和reverse()。这样做有两个理由。首先,成员函数更快。其次,它们

2007-10-30 11:23:00 984

转载 关于“内存对齐”

对于大部分程序员来说,“内存对齐”对他们来说都应该是“透明的”。“内存对齐”应该是编译器的 “管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。如果你想了解更加底层的秘密,“内存对齐”对你就不应该再透明了。 一、内存对齐的原因大部分的参考资料都是如是说的:1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的

2007-10-25 12:06:00 1205 1

《Thinking in C++》第二版 第一卷-标准C++引导 pdf

《Thinking in C++》第二版 第一卷-标准C++引导 pdf

2010-09-29

《Linux系统应用与开发教程》PPT课件

《Linux系统应用与开发教程》PPT课件

2009-03-01

概率统计课本[浙三版] PDF

概率统计课本[浙三版] PDF

2008-08-08

空空如也

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

TA关注的人

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