自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

转载 字符编码笔记:ASCII,Unicode和UTF-8

作者: 阮一峰日期: 2007年10月28日今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。

2011-04-27 10:02:00 547

转载 C++中的未定义行为(undefined behavior)

<br />之所以想到这个话题,是前段时间一次讨论中提到的new[]一个简单类型的数组,能否用delete而不是delete[]释放的问题。因为明确说了不是类对象,所以这里可以不考虑数组对象析构时的错误,那么这样做可不可以呢?<br />    一种声音是:严格遵守C++标准,保持好习惯;另一种声音:不要生搬经典,要自己实践才知道。<br />    为了弄清这个问题,不得不引入一个词“未定义行为”(undefined behavior)。<br />    In computer science, und

2010-11-14 15:39:00 6988

转载 C代码优化方案

  UML软件工程组织火龙果软件工程技术中心C代码优化方案 2008-11-10 作者:王全明 来源:csdn目录__ 2C代码优化方案__ 41、选择合适的算法和数据结构__ 42、使用尽量小的数据类型__ 53、减少运算的强度__ 5(1)、查表(游戏程序员必修课)_ 5(2)、求余运算__ 6(3)、平方运算__ 6(4)、用移位实现乘除法运算__ 6(5)、避免不必要的整数除法__ 8(6)、使用增量和减量操作符__ 8(7)、使用复合赋值表达式__ 8(8)、提取公共的子表达式__ 94、结构体成

2010-11-01 22:20:00 983

转载 优雅地关闭Socket;检测非正常断开的TCP连接

<br />--------------------------------------------------------------------------------------------------------------------------------------[转载声明] 本文所有版权归原作者所有;如本文原作者不认可转载,请联系本空间删除。<br />[相关资源]  NA<br />-----------------------------------------------------

2010-10-25 23:19:00 16448 2

转载 TCP: SYN ACK FIN RST PSH URG 详解

三次握手Three-way Handshake (引自:http://hi.baidu.com/netzhou/blog/item/f13e32823f2418b96d811900.html)一个虚拟连接的建立是通过三次握手来实现的 1. (B) --> [SYN] --> (A) 假如服务器A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接. 注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认

2010-10-25 23:14:00 1092

转载 最大全1子矩阵

<br />可以借鉴“最大子矩阵和问题”的解题思路,但是时间复杂度为O(M*N*min(M,N))<br /> <br />把矩阵中的0用一个很大的负数来替代,这样就转化为“最大子矩阵和问题”<br /> <br />下面我们来分析一下最大子段和的子结构,令b[j]表示从a[0]~a[j]的最大子段和,b[j]的当前值只有两种情况,(1) 最大子段一直连续到a[j]  (2) 以a[j]为起点的子段,不知有没有读者注意到还有一种情况,那就是最大字段没有包含a[j],如果没有包含a[j]的话,那么在算b[j]

2010-10-25 14:22:00 1429

转载 求0,1矩阵的最大连续全1块(可以非规则)

求0,1矩阵的最大连续全1块(con)给一个的0,1矩阵,求它的面积最大的全1子块。 要求时间。 ------------------------------------------------------------------------ 对矩阵做三次扫描, 扫描的次序都是从左到右,从上到下.第一遍将所有为1的元素,依次标一个值,这个值从1开始 例如:0 0 0 0 0 0 0 0 0 00 1 1 0 0 0 1 2 0 00 1 0 0 0 标注成这样 0 3 0 0 00 0 0 1 0 0 0

2010-10-25 13:37:00 2879

转载 最大子矩阵问题

最大子矩阵问题:问题描述:(具体见http://acm.pku.edu.cn/JudgeOnline/showproblem?problem_id=1050)   给定一个n*n(0Example: 0 -2 -7  0  9  2 -6  2 -4  1 -4  1 -1  8  0 -2 其中左上角的子矩阵: 9 2 -4 1 -1 8 此子矩阵的值为9+2+(-4)+1+(-1)+8=15。  我们首先想到的方法就是穷举一个矩阵的所有子矩阵,然而一个n*n的矩阵的子矩阵的个数当n比较大时时一个很大的数

2010-10-25 12:43:00 539

转载 strlen

strlen源码剖析学习高效编程的有效途径之一就是阅读高手写的源代码,CRT(C/C++ Runtime Library)作为底层的函数库,实现必然高效。恰好手中就有glibc和VC的CRT源代码,于是挑了一个相对简单的函数strlen研究了一下,并对各种实现作了简单的效率测试。strlen的函数原形如下:      size_t strlen(const char *str);strlen返回str中字符的个数,其中str为一个以'/0'结尾的字符串(a null-terminated string)。1

2010-10-23 21:57:00 462

转载 strcpy

char   *strcpy(char   *strDest,const   char   *strSrc)   {           assert((strDest!=NULL)&&(strSrc   !=NULL))   //判断指针是否合法,即分配内存,指向某块确定区域        char   *address   =   strDest;               //记住目标地址的起始值        while((*strDest++   =   *strSrc++)!='/0') ; 

2010-10-23 21:42:00 413

转载 Broken Necklace

You have a necklace of N red, white, or blue beads (3

2010-10-21 11:11:00 398

转载 求质数

AlgorithmA prime number is a natural number which has exactly two distinct natural number divisors: 1and itself.To find all the prime numbers less than or equal to a given integer n by Eratosthenes' method:Create a list of consecutive integers from two to 

2010-10-20 15:46:00 451

转载 dynamic_cast同类指针

对于同类指针的cast应该是直接通过,不对指针所指的object进行run time check。int main(){     A *p1 = (A*)0x1;     A *p2 = dynamic_cast(p1);     return 0;}但是VC6中竟对p1所指的地址进行了检查,这是VC6对ISO C++ standard实现不对的地方,在2003/2005中得到了修正。

2010-10-16 23:41:00 423

转载 static_cast

用法:static_cast ( expression )  该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:  ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。  进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;  进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。  ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。这种转换的安全性

2010-10-16 23:37:00 383

转载 dynamic_cast

该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void *;  如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。  dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。  在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;  在进行下行转换时,dynamic_c

2010-10-16 23:36:00 430

原创 请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句

#include #include using namespace std;#define Cmp(x,y) compare(x,y)int compare(int a,int b){     int i=a-b; while((i^1)&&(i^-1)) { i>>=1; } return i;}int main(){     int c;     c = Cmp(25,14); c = Cmp(5,14);     cout     return 0;}

2010-10-16 22:01:00 542

转载 托管代码和非托管代码

托管代码 (managed code)    由公共语言运行库环境(而不是直接由操作系统)执行的代码。托管代码应用程序可以获得公共语言运行库服务,例如自动垃圾回收、运行库类型检查和安全支持等。这些服务帮助提供独立于平台和语言的、统一的托管代码应用程序行为。  托管代码是可以使用20多种支持Microsoft .NET Framework的高级语言编写的代码,它们包括:C#, J#, Microsoft Visual Basic .NET, Microsoft JScript .NET, 以及C++。所有的语

2010-10-15 10:29:00 424

转载 C#比C++慢

c#通过底层的虚拟机机制减少了c/c++语言中常常容易发生的内存泄漏和安全性问题,代价是运行速度减慢。同样的由于简化了编程语言的复杂性(c#远远比c++来得简单),大大提高了开发者得效率。另外c#具有.net庞大的类库,这个优势是c++所不具有的。因此c#非常合适开发企业中处理业务的应用程序。

2010-10-15 10:27:00 1904 2

转载 C#的特点

1、 C#与Java类似,编译后得到的还不是机器代码,而是运行在虚拟机中的元指令。它对安全性做了更多的考虑,没有指针,不能直接操作内存,自动实现内存管理。C++中的指针在带来强大的灵活性和高效的同时,也带了不少使用上的难题,C++程序中的绝大多数问题都来源于指针的不正确使用,C#出于软件安全性的考虑和语言易用性的考虑没有指针。C#中实现自动垃圾回收,通过new在堆中创建对象,当对该对象的引用计数为0时回收内存。类有构造函数而没有析够函数。C#没有指针这个概念,只有引用和数值之分。int等内部数据类型和str

2010-10-15 10:24:00 3657

转载 C与C++的区别

C是一个结构化语言:C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础

2010-10-15 10:18:00 583

转载 C,C++,C#,java的区别

简单地说,它们不是一种语言,语法有差别,编程时具体用到的类库或者函数库也不一样。  虽然它们不是一种语言,不过它们却也有所联系。广泛地说,C可以看作其他三种语言的源语言,因为其他三种语言几乎都是从C而来的,无论从数据类型还是控制语句看,其他三种语言都有从C得来的迹象。  其中C++则一般看作是对C语言的扩展。因为C语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就为C添加了面向对象的结构。现在C++已经不只是C的扩展了,它已经完全可以被看作一种新的编程语言。虽然C的

2010-10-15 10:14:00 1601

转载 ZJU 1990 Subway tree systems - 树的最小表示

题目大意:初始时站在树的根节点,若朝着远离根的方向走,记录“0”,接近根的方向走记录“1”。并且树的每一条边只能来回走一次(即向下和返回)。一个合法的01序列可以描述出一棵树的形态。现在给出两个合法的01序列,判断两棵树是否同构。分析:由于根节点确定,若两棵树同构,无非就是把子树的位置交换了一下。很自然的想法就是:将树的子树按照某种规则进行排序,若排序之后两个字符串相等,则同构;否则不同构。现在来分析一下01序列,可以看出,当一个串的“0”和“1”个数相等时,恰好就是一棵子树。例如:001001110100

2010-10-14 20:32:00 464

转载 判断单链表是否存在环,判断两个链表是否相交问题详解(转载)

摘要】有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如果找到环的入口点?扩展:判断两个单链表是否相交,如果相交,给出相交的第一个点。有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如果找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast

2010-10-14 20:30:00 376

转载 构造函数调用虚函数

参考stroustrup的回答吧(http://www.research.att.com/~bs/bs_faq2.html#vcall)在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct C180{ C180() {  foo();  this->foo(); } virtual foo() {  cout  }};struct C190 : public C180{ C190(

2010-10-14 20:27:00 483

空空如也

空空如也

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

TA关注的人

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