自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c++右值引用 转移构造函数

class MyString {public: friend ostream& operator<<(ostream &out, const MyString &str); MyString(const char *s) { assert(s != NULL); cout << "Constructor" << endl; int sz = strlen(s); str =

2013-03-12 17:44:29 2925

转载 C++11 Lambda函数与表示式

http://zh.wikipedia.org/wiki/C%2B%2B11#Lambda.E5.87.BD.E5.BC.8F.E8.88.87.E8.A1.A8.E7.A4.BA.E5.BC.8F在标准 C++,特别是当使用 C++ 标准程序库算法函数诸如 sort 和 find,用户经常希望能够在算法函数调用的附近定义一个临时的述部函数(又称谓词函数,predicate funct

2013-03-12 16:54:26 11117

原创 +-*/()整型表达式求值(不带符号)

map opt;double cal(double lv, double rv, char op) { switch (op) { case '+': return lv + rv; case '-': return lv - rv; case '*': return lv * rv; case '/': return lv / rv; } assert(0);}doubl

2013-03-12 16:50:31 1780

原创 Java 泛型参数的获取

Gson中序列化带泛型的类型的方式: Type fooType = new TypeToken>() {}.getType(); gson.toJson(foo, fooType); gson.fromJson(json, fooType);其中Type为java.lang.reflect.Type接口ParameterizedT

2012-03-06 13:13:30 7010

转载 Java Inner Class

Variable Visibility In Anonymous Classes/** * Class to test what sort of communication between * anonymous inner classes and the enclosing * method's local variables. * This experiment does not

2012-03-06 00:44:52 1188

原创 Activity生命周期

onCreate ~ onDestroy:onStart ~ onStop: 可见onResume ~ onPause: 可见但失去焦点(不能与用户交互) 只调用onPause-onResume的情况:1. 按poweroff睡眠 2. 当前activity被一个透明的包含Dailog的activity覆盖 调用onStop-OnStart的情况:1. 按了HOME键回到桌

2012-02-25 15:55:55 848

转载 Comparing floating point numbers

Comparing for equalityFloating point math is not exact. Simple values like 0.2 cannot be precisely represented using binary floating point numbers, and the limited precision of floating point number

2012-01-12 18:14:32 1723

原创 Java override

Overriding and Hiding MethodsAn instance method in a subclass with the same signature and return type as an instance method in the superclass overrides the superclass's method. (Remember that a meth

2011-12-06 15:21:16 3081

原创 函数调用堆栈变化情况

int goo(int a, int b){ return a + b;}void foo(){ int a[] = {1, 2, 3}; int result = goo(a[1], a[2]); printf("result: %d", result);}

2011-07-10 00:44:44 7108

原创 C++0x 右值引用

<br />#include <iostream> #include <algorithm>#include <boost/array.hpp>#include <algorithm>#include <string>#include <vector>using namespace std;struct A{ enum { SIZE = 3 }; A() { cout << "Constructor." << endl; p = n

2011-04-27 16:06:00 926

转载 关于Java中各种修饰符与访问修饰符的说明

类:访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称(访问修饰符与修饰符的位置可以互换)访问修饰符名称说明备注public可以被所有类访问(使用)public类必须定义在和类名相同的同名文件中package可以被同一个包中的类访问(使用)默认的访问权限,可以省略此关键字,可以定义在和public类的同一个文件中 修饰符名称说明备注final使用此修饰符的类不能够被继承 abstract如果要使用abstract类,之前必须首先建一个继承abstract类的新类,

2010-12-29 13:31:00 816

转载 比较java和C++的面向对象语法

<br /> 打开《Java 核心技术》第一卷的第4章:对象和类,第5章:继承,第6章:接口和内部类。洋洋洒洒近150页,几乎集中了Java中面向对象语法的全部。不过凭借我在C++中浸淫这么多年的深厚功力,看起来还是相当轻松的:)这句话无疑是吹牛了,学习C++久了,我想人应该变得越来越谦虚才对。不过我还是提倡在枯燥的学习中多给自己一点自吹自擂的骄傲吧:)<br />简单的封装:<br />    面向对象最基本的单元就是类,类在本质上仅仅是把数据和方法结合在一起的产物,这种结合带有一定的必然性,说白了这就是

2010-12-29 01:12:00 2056

转载 鱼还是熊掌:浅谈多进程多线程的选择

作者: yah99wolf (1 篇文章) 日期: 七月 20, 2010 在 9:15 上午 <br />关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。<br />经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Linux下用多进程还是多线程?”等等期望一劳永逸的问题,我只能说:没有最好,只有更好。根据实际情况来判断,哪个更加合适就是

2010-12-16 12:30:00 750

原创 boost C# 正则表达式

<br />字符串:<br />void ABTR("quint32 ab")<br />{<br /> string s = TR("sky is blue.");<br /> obj.foo(TR('rose is red.'));<br /> obj.foo(TR('rose is red."));<br /> obj.foo(TR("Mike (Mike Lee)say /"He is hungury/""))<br />}<br /> <br />正则表达式:(?<!/w)(?:TR/()('|"

2010-11-25 19:21:00 962

原创 正则表达式 匹配

<br />字符串:<br />void ABTR("quint32 ab")<br />{<br /> string s = TR("sky is blue.");<br /> obj.foo(TR('rose is red.'));<br /> obj.foo(TR('rose is red."));<br /> obj.foo(TR("Mike (Mike Lee)say /"He is hungury/""))<br />}<br /> <br />正则表达式:(?<!/w)(?:TR/()('|"

2010-11-25 19:18:00 1710

转载 正则表达式 boost Regex

正则表达式有多种不同的风格。下表是在PCRE中元字符及其在正则表达式上下文中的行为的一个完整列表:字符 描述 / 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“n”匹配字符“n”。“/n”匹配一个换行符。串行“//”匹配“/”而“/(”则匹配“(”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“/n”或“/r”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multili

2010-11-25 16:15:00 10289

转载 PV操作

<br />在计算机操作系统中,PV操作是进程管理中的难点。<br />首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:<br />    P(S):①将信号量S的值减1,即S=S-1;<br />           ②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。<br />    V(S):①将信号量S的值加1,即S=S+1;<br />           ②如果S>0,则该进程继续执行;否则释放队列中第一

2010-11-19 20:52:00 970

转载 OOP五原则

<br /> 基本原则 封装变化Encapsulate what varies.面向接口变成而不是实现 Code to an interface rather than to an implementation.优先使用组合而非继承 Favor Composition Over InheritanceSRP: The single responsibility principle 单一职责<br />系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。<br />Every

2010-11-18 19:02:00 973

原创 单链表归并排序

<br />#include <iostream>#include <time.h>#include <cassert>#include <algorithm>#include <map>using namespace std;template <typename T>class List{public: struct Node { Node(const T &val): data(val), next(NULL){}

2010-11-18 17:35:00 1252

原创 TemplateMethod与快速排序

设计模式TemplateMethod模式,快速排序中2种不同的分割算法#include #include #include #include using namespace std;template class AbstractQuickSort{public: void sort(T arr[], int begin, int end) { if (begin

2010-11-18 14:57:00 807

原创 单链表反转

templatestruct Node{ Node(T v):val(v), next(NULL) {} T val; Node *next;};templateNode *listReverseIteratively(Node *head){ Node *lp = NULL; Node *rp = head; while(rp != NULL) { Node *temp = rp->next; rp->next = lp; lp =

2010-11-02 20:28:00 739

转载 C++中理解“传递参数”和异常之间的差异

从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别:  class Widget { ... }; //一个类,具体是什么类    // 在这里并不重要    void f1(Widget w); // 一些函数,其参数分别为    void f2(Widget& w); // Widget, Widget&,或    void f3(const Widget& w); // Widget* 类型    void f4(Widget *pw);    void f5(const Wid

2010-10-30 22:31:00 858

原创 Qt中的中文编码

在windows下的记事本中输入“我a”,分别以ANSI、Unicode、UTF-8保存,然后用16进制打开:ANSI:ced2 61Unicode:fffe 1162 6100    (fffe是记事本用于标识是unicode编码的标识符)UTF-8:efbb bfe6 8891 61       (efbb bf是记事本用于标识是utf-8编码的标识符)ANSI编码(默认):英文1个字节,中文2个字节,即一个字节最高为1时,与后一个字节合并组成双字节,为一个字符,否则为ASCII字符。Unicode:无

2010-10-28 21:22:00 3467

原创 TortoiseSVN 和 subversion

<br />subversion 服务器<br />1. 安装subversion 和 TortoiseSVN<br />2. 在c:/svn_repository/userName_repository目录下右键create repository here,建立服务器中repository<br />3. 在生成的conf目录中的svnserve.conf文件内,去掉# password-db = passwd前的井号<br />4. 在passwd文件中增加用户名、密码<br />5. 在cmd中输入s

2010-09-24 20:54:00 839

转载 linux 动态链接库

 2.2 Linux共享对象技术   在Linux操作系统中,采用了很多共享对象技术(Shared Object),虽然它和Windows里的动态库相对应,但它并不称为动态库。相应的共享对象文件以.so作为后缀,为了方便,在本文中,对该概念不进行专门区分。Linux系统的/lib以及标准图形界面的/usr/X11R6/lib等目录里面,就有许多以so结尾的共享对象。同样,在Linux下,也有静态函数库这种调用方式,相应的后缀以.a结束。Linux采用该共享对象技术以方便程序间共享,节省程

2010-07-25 22:52:00 988

原创 UNIX socket 编程

客户端像服务器端发送数据:#include #include #include #include #include int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); int skt = socket(AF_INET, SOCK_STREAM, 0); // local address (optional) sockaddr_in localaddr; l

2010-07-25 12:08:00 807

原创 crypto++ 密码库 安装使用

<br />1.下载Crypto++® Library 5.6.0<br />2.用VC2008打开.sln解决方案文件 转换后选择cryptlib项目 选择Release版本 右键生成(默认是MT 即静态编译)<br />3.编译后会在cryptopp560/Win32/Output/Release下生成cryptlib.lib静态库文件<br />4.配置VS2008的include 、lib目录<br />5.新建一个项目,包含一些crypto++的一些头文件,不要忘了using namespace

2010-07-21 00:06:00 2914

转载 C++中构造函数中调用虚函数的问题

在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct C180{C180() {foo();this->foo();}virtual foo() {cout }};struct C190 : public C180{C190() {}virtual foo() {cout }};   父类中有一个虚函数,并且父类在它的构造函数中调用了

2010-07-19 22:23:00 890

原创 C char str[] , char *str 区别

#include #include using namespace std;int main(){ char str1[] = "Hello"; char *str2 = "Hello"; char str3[] = {'H', 'e', 'l', 'l', 'o'}; cout 显示输出:6       5         // 字符数组,"Hello" 存于堆栈上4       5         // “Hello” 存于字符串常量区5       19      

2010-07-19 21:16:00 1445

原创 Windows 多线程 Mutex

<br />不使用互斥 2个线程输出数组arr<br />#include <string>#include <iostream>#include <Windows.h>using namespace std;HANDLE hMutex = NULL;int arr[5] = {1, 2, 3, 4, 5};DWORD CALLBACK Thread1(LPVOID Param){ while(true) { //WaitForSingleObject(hM

2010-07-18 22:33:00 4662

原创 C++ new malloc 初始化与构造函数

<br />Effective item 12<br /> <br />new 分配空间->初始化->构造函数<br />malloc 分配空间<br /> <br />对象的创建分两步:<br />1. 数据成员初始化。(参见条款13)<br />2. 执行被调用构造函数体内的动作。<br /> <br />class AA{public: string s;};int main(){ AA *a = (AA *)malloc(sizeof(AA)); a->s = "

2010-07-18 16:34:00 6404

转载 C++ Std exception

<stdexcept><br />Defines several standard classes used for reporting exceptions. The classes form a derivation hierarchy all derived from class exception and include two general types of exceptions: logical errors and run-time errors. The logical errors ar

2010-07-18 15:21:00 3047

转载 C++ RAII

Resource Acquisition Is InitializationFrom Wikipedia, the free encyclopediaJump to: navigation, searchThis article may require cleanup to meet Wikipedia's quality standards. Please improve this article if you can. (March 2007)<br />Resource Acquisition Is

2010-07-18 15:04:00 1597

转载 C++异常机制的实现方式和开销分析

在我几年前开始写《C++编码规范与指导》一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了。没想到时隔几年以后才有机会把这个尾巴补完 :-)。<br />还 是那句开场白:“在恰当的场合使用恰当的特性” 对每个称职的 C++ 程序员来说都是一个基本标准。想要做到这点,就必须要了解语言中每个特性的实现方式及其时空开销。异常处理由于涉及大量底层内容,向来是 C++ 各种高级机制中较难理解和透彻掌握的部分。本文将在尽量少引入底层细节的前提下,讨论 C++ 中这一崭新特性,并分析其实现开销。<br /

2010-07-18 15:02:00 5981 1

原创 小于n的素数

<br />#include <iostream>#include <cstdio>#include <cstdlib>#include <vector>#include <map>#include <set>#include <queue>#include <stack>#include <algorithm>#include <string>#include <cstring>#include <cmath>using namespace std;

2010-05-31 21:26:00 897

转载 C# IDisposable 接口

using System;using System.ComponentModel;// The following example demonstrates how to create// a resource class that implements the IDisposable interface// and the IDisposable.Dispose method

2010-05-20 19:02:00 2130

转载 聚集索引,非聚集索引

由于需要给同事培训数据库的索引知识,就收集整理了这个系列的博客。发表在这里,也是对索引知识的一个总结回顾吧。通过总结,我发现自己以前很多很模糊的概念都清晰了很多。不论是 聚集索引,还是非聚集索引,都是用B+树来实现的。我们在了解这两种索引之前,需要先了解B+树。如果你对B树不了解的话,建议参看以下几篇文章:BTree,B-Tree,B+Tree,B*Tree都是什么 http://blog.c

2010-05-19 20:33:00 944

原创 UNIX gcc fileIO

#include #include #include #include #include int main(){ int fid=open("text",O_RDWR|O_CREAT); printf("fid:%d/n",fid); //write sth. char data[]="abcdef

2010-05-18 16:33:00 640

原创 UNIX gcc fork exec

#include #include int main(){ int loopCount=10; int pid=fork(); if(pid == 0) { printf("Childs pid:%d/n",pid); for(int i=0;i

2010-05-18 00:09:00 891

原创 二叉堆 SiftDown SiftUp

#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;templateclass Heap{public: Heap(

2010-05-03 21:15:00 2067 1

Windows API 发送邮件程序 SMTP协议 exe文件仅90KB

使用Windows API 编写的SMTP邮件发送程序 Release编译出的exe文件仅90KB左右 支持多收件人功能 在main中重新定义发件人、收件人、正文、发件人SMTP服务器信息即可 仅支持文本格式发送 无法发送附件 在VS2008下编写

2010-04-30

俄罗斯方块 C++ DOS模式下(已实现自动下移功能)

游戏功能均由3个核心cpp文件(block.cpp allblocks.cpp terix.cpp),提供旋转,左右移动,直接下移到底,查看下一个方块等功能 自动下移功能通过线程同步中的Windows API函数CreateWaitableTimer等实现 图形显示(MFC或者Qt)模式可在http://download.csdn.net/source/1899078下载

2010-02-13

俄罗斯方块(c++) DOS MFC QT 版本 3合一

3种模式中游戏功能均由3个核心cpp文件(block.cpp allblocks.cpp terix.cpp),提供旋转,左右移动,直接下移到底,查看下一个方块等功能,3个文件仅包含iostream time.h 2个额外头文件,可轻松移植到任何C++ 图形平台上,实现自定义的俄罗斯方块的图形界面。具体如何显示可参考MFC或QT中的版本。

2009-12-13

空空如也

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

TA关注的人

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