- 博客(25)
- 资源 (10)
- 收藏
- 关注
原创 GNU C 与ANSI C 相比,独特的9个地方(转载
这篇的东西只对GNU C有效,其他的标准C 或者VC 并不适用1.允许零长度数组GNU C允许零长度数组,在定义变长对象的头结构时,这个特性非常有用。struct var_data s{ int len; char data[0];};char data[0]仅仅意味着程序中通过var_data的结构体实例的data[index]成员可以访问len之后的第index个地址,并没有为data[0]分配内存。假设struct var_data的数据域保存在struct var_data紧接着
2011-05-31 16:00:00 640
原创 Micro kernel 和 Monolithic kernel
<br />1、内核概述Kernel是OS的核心,提供了硬件级的抽象,它向外部提供了对计算机设备的核心管理调用。我们将操作系统的代 码分成2部分。内核所在的地址空间称作内核空间。而在内核以外的统称为外部管理程序,它们大部分是对外围设备的管理和界面操作。外部管理程序与用户进程所 占据的地址空间称为外部空间。通常,一个程序会跨越两个空间。当执行到内核空间的一段代码时,我们称程序处于内核态,而当程序执行到外部空间代码时,我们 称程序处于用户态。内核的结构往往可分为单内核(monolithic kern
2011-05-31 09:52:00 4884
原创 Unix的五个特性
<br />The original elegant design of the Unix system, along with the years of innovation <br />and evolutionary improvement that followed, has resulted in a powerful, robust, and stable <br />operating system.A handful of characteristics of Unix are at
2011-05-30 20:40:00 855
转载 二进制兼容性
<br />陈硕 (giantchen_AT_gmail) <br />Blog.csdn.net/Solstice<br />本文主要讨论 Linux x86/x86-64 平台,偶尔会举 Windows 作为反面教材。<br />C/C++ 的二进制兼容性 (binary compatibility) 有多重含义,本文主要在“头文件和库文件分别升级,可执行文件是否受影响”这个意义下讨论,我称之为 library (主要是 shared library,即动态链接库)的 ABI (applicat
2011-05-24 16:08:00 5269 1
原创 常用算法(1) 将排序二叉树转换双向链表
#include "stdafx.h"#include using namespace std;templatestruct Node{ T data; Node *left; Node *right; Node(): left(NULL), right(NULL) { }};//create binary sorted treetemplate void AddBstNode(Node *& node, T value){ i
2011-05-18 13:59:00 1227 1
原创 C++中typedef用法
<br />C++不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,也就是说允许由用户为数据类型取"别名",该功能是通过关键字typedef来完成的。例如,有整型量a、b: <br /> int a,b; <br /> int是整型变量的类型说明符,int实际上是integer的简写。为了增加程序的可读性,可把整型说明符用typedef定义为: <br /> typedef int INTEGER <br /> 以后就可用INTEGER来代替int作整型变量的类型
2011-05-16 21:49:00 882
原创 Symbian C++中的异常处理
<br />在现代高级语言中,大多数语言都有对应处理异常的关键字,如:C++中的try/catch,Delphi中的Try/Except/Finally,这些关键字都被编译器直接的支持。<br /> 但是,当Symbian OSC++被发明的时候,C++中的关键字try/catch/finally还没有被标准支持。而且照Symbian官方的话来说,C++的异常处理机制太笨重,不够轻量级,他们设计了一套效率更加高,更适合于小型的、内存受限的设备的异常处理机制。<br /> 一、 回顾历史<
2011-05-15 21:37:00 662
原创 c++中异常
<br />C++异常处理机制核心观点: <br /><br />0.如果使用普通的处理方式:ASSERT,return等已经 <br /> 足够简洁明了,请不要使用异常处理机制. <br /><br />1.比C的setjump,longjump优秀. <br /><br />2.可以处理任意类型的异常. <br /> 你可以人为地抛出任何类型的对象作为异常. <br /> throw 100; <br /> throw "hello"; <br /> ... <
2011-05-15 21:01:00 567
转载 open和fopen的区别
open和fopen的区别 收藏open和fopen的区别:1.缓冲文件系统缓冲文件系统的特点是:在内存开辟一个“缓冲区”,为程序中的每一个文件使用,当执行读文件的操作时,从磁盘文件将数据先读入内存“缓冲区”, 装满后再从内存“缓冲区”依此读入接收的变量。执行写文件的操作时,先将数据写入内存“缓冲区”,待内存“缓冲区”装满后再写入文件。由此可以看出,内存 “缓冲区”的大小,影响着实际操作外存的次数,内存“缓冲区”越大,则操作外存的次数就少,执行速度就快、效率高。一
2011-05-15 15:00:00 895 1
转载 什么叫实时操作系统,什么叫非实时操作系统,两者有什么区别?
<br />嵌入式实时系统中采用的操作系统我们称为嵌入式实时操作系统,它既是嵌入式操作系统,又是实时操作系统。作为一种嵌入式操作系统,它具有嵌入式软件共有的可裁剪、低资源占用、低功耗等特点;而作为一种实时操作系统(本文对实时操作系统特性的讨论仅限于强实时操作系统,下面提到的实时操作系统也均指强实时操作系统),它与通用操作系统(如Windows、Unix、Linux等)相比有很大的差别,下面我们将通过比较这两种操作系统之间的差别来逐步描述实时操作系统的主要特点。 <br />
2011-05-15 14:46:00 15421 1
原创 Linux,Windows和UNIX的进程调度的分析
<br /><br /> 摘要:本文以Linux ,Unix ,Windows操作系统为例,分析其进程调度策略,以期对进程调度过程有更深层次的认识<br /> 关键词:进程调度 优先级 时间片轮转 实时进程 分时技术<br /> <br /> <br /> 引言:无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执
2011-05-14 17:23:00 14943
转载 在Ubuntu 10.10 中增加 Samba服务
[代码] [Shell/批处理]代码view sourceprint?01sudoapt-get installsamba smbfs02 03####图形界面04###sudo apt-get install system-config-samba05 06mkdir/home/flexitime/share07 08chmod755 /home/flexitime/share09 10sudocp/etc/samba/smb.conf /etc/samba/smb.conf.bak11 12sudo
2011-05-11 20:43:00 579
原创 贪心算法的详解
一、 贪心策略的定义【定义1】 贪心策略是指从问题的初始状态出发,通过若干次的贪心选择而得出最优值(或较优解)的一种解题方法。 其实,从"贪心策略"一词我们便可以看出,贪心策略总是做出在当前看来是最优的选择,也就是说贪心策略并不是从整体上加以考虑,它所做出的选择只是在某种意义上的局部最优解,而许多问题自身的特性决定了该题运用贪心策略可以得到最优解或较优解。 二、贪心算法的特点 通过上文的介绍,可能有人会问:贪心算法有什么样的特点呢?我认为,适用于贪心算法解决的问题应具有以下2个特点:1、贪心选择性质:
2011-05-11 13:37:00 2454
转载 背包问题动态规划详细探究
首先是问题描述:给定n种物品和一背包,物品i的重量是wi,其价值是pi,背包的容量是M,问如何选择装入背包中的物品总价值最大?可以这样理解:背包的背负有上限,因此在这个上限内尽可能多的装东西,并且价值越多越好。在这里我之想讨论动态规划解决这个问题的详细过程。动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。因为背包的最终最大容量未知,所以,我们得从1到M一个一个的试,比如,刚开始任选N件物品中的一个,看对应的M的背包,能不能放进去,如果能放进去,并且
2011-05-11 12:27:00 728
原创 0-1背包问题--动态规划解法
问题描述: 给定n种物品和一背包,物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品(物品不能分割),使得装入背包中物品的总价值最大? 抽象描述如下: x[n]:表示物品的选择,x[i]=1表示选择放进物品i到背包中。 问题分析: 1.抽象之后背包问题转换为找到一个最优的数组,x1,x2,.....,xn的0-1序列。 2.假设最优解的序列为x1,x2,.....,xn,能使背包容量C的总价值最大.
2011-05-11 10:25:00 1761
原创 select, poll区别及使用
<br />一、select, poll的区别<br /><br />select()系统调用提供一个机制来实现同步多元I/O:<br /><br /><br />#include <sys/time.h><br />#include <sys/types.h><br />#include <unistd.h><br /><br />int select (int n,<br />fd_set *readfds,<br />fd_set *writefds,<br />fd_
2011-05-10 16:05:00 2439
原创 read和recv等函数的区别
<br />1recv和send<br />recv和send函数提供了和read和write差不多的功能.但是他们提供了第四个参数来控制读写操作.<br />int recv(int sockfd,void *buf,int len,int flags)<br />int send(int sockfd,void *buf,int len,int flags)<br />前面的三个参数和read,write相同,第四个参数能够是0或是以下的组合<br />_________
2011-05-10 13:53:00 1103
转载 网络端口安全防护技巧大放送
<br />众所周知,计算机之间通信是通过端口进行的,例如你访问一个网站时,Windows就会在本机开一个端口(例如1025端口),然后去连接远方网站服务器的一个端口,别人访问你时也是如此。默认状态下,Windows会在你的电脑上打开许多服务端口,黑客常常利用这些端口来实施入侵,因此掌握端口方面的知识,是安全上网必备的技能。 <br /> 一、常用端口及其分类<br /> 电脑在Internet上相互通信需要使用TCP/IP协议,根据TCP/IP协议规定,电脑有256×256(65536
2011-05-10 10:20:00 981
原创 得到当前时间的几个函数
<br />asctime(将时间和日期以字符串格式表示) <br />相关函数 time,ctime,gmtime,localtime<br /> <br />表头文件 #include<time.h><br /> <br />定义函数 char * asctime(const struct tm *timeptr);<br /> <br />函数说明 asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果
2011-05-09 13:11:00 1124
转载 _tmain()和main()区别
<br />_tmain()是unicode版本的的main() <br />_tmain这个符号多见于VC++创建的控制台工程中,这个是为了保证移植unicode而加入的(一般_t、_T、T()这些东西都和unicode有关系),对于使用非unicode字符集的工程来说,实际上和main没有差别(其实就算是使用unicode字符集也未必有多大的差别)。<br />1。 main是C程序的函数,_tmain是main为了支持unicode所使用的main的别名<br />2。
2011-05-09 09:42:00 594
原创 位运算求2个整数的平均值原理
<br />int avg=(x&y) +((x^y)>>1);<br /><br />x&y 取出x和y二进制都为‘1’的所有位<br />x^y x和y中有一个为‘1’的所有位<br />(x^y)>>1 除以2<br /><br /><br />就是把x和y都分成两部分,<br />一部分是都为‘1’的部分,因为相同,所以直接加就行了<br />一部分是x为‘1’,y为‘0’的部分,以及y为’1‘,x为’0‘的部分,两部分加起来除以2,然后跟前面的相加就可以了
2011-05-06 22:06:00 1118
原创 两个已排序链表的合并
<br /> 1 typedef struct Node{<br /> 2 int data;<br /> 3 struct Node* next;<br /> 4 }Node, *LinkList;<br /> 5 void Merge(LinkList la, LinkList lb, LinkList &lc)<br /> 6 {<br /> 7 // NULL检测<br /> 8 if(!la) {lc = pb; return;}<b
2011-05-05 19:46:00 679
基于Qt/QML的微博客户端源码
2011-12-19
C++ 输入输出流及本地化
2010-01-08
Pattern-Oriented Software Architecture Volume 2.Pattern for Concurrent and Networked Objects
2008-10-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人