
技术杂谈
pud_zha
这个作者很懒,什么都没留下…
展开
-
初始化
初始化要干净,添加变量后要记得同样去初始化,不然出问题很难找原创 2012-07-02 17:27:42 · 432 阅读 · 0 评论 -
为什么要用补码
二. 原码, 反码, 补码的基础概念和计算方法.在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式.1. 原码原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:[+1]原 = 0000 0001转载 2012-07-31 17:02:15 · 15110 阅读 · 9 评论 -
vector:push_back时的对象构造
class CT{public:CT(){std::cout }~CT(){std::cout }CT(const CT &t){std::cout }};void main(){std::vector vec;CT t;vec.push_back(t);}两次CT(CT &原创 2012-08-30 14:05:48 · 2468 阅读 · 0 评论 -
编码规范
How can we use a class Foo in a header file without access to its definition?We can declare data members of type Foo* or Foo&.We can declare (but not define) functions with arguments, and/or retur原创 2012-09-01 12:26:39 · 832 阅读 · 0 评论 -
由12306.cn谈谈网站性能技术
酷壳网陈皓:由12306.cn谈谈网站性能技术发表于2012-01-17 09:51| 6459次阅读| 来源酷壳网| 42 条评论| 作者陈皓性能优化网站性能电子商务分布式存储web服务摘要:批量处理的技术,是把一堆基本相同的请求批量处理。比如,大家同时购买同一个商品,没有必要你买一个我就写一次数据库,完全可以收集到一定数量的请求,一次操作。这个技术可以用作很转载 2012-08-24 17:25:17 · 1811 阅读 · 0 评论 -
性能调优攻略
性能调优攻略发表于2012-06-21 10:23| 3936次阅读| 来源CollShell| 1 条评论| 作者陈皓性能优化web开发http服务器优化性能摘要:关于性能优化这是一个比较大的话题,在《由12306.cn谈谈网站性能技术》中我从业务和设计上说过一些可用的技术以及那些技术的优缺点,今天,想从一些技术细节上谈谈性能优化,主要是一些代码级别的技术和方转载 2012-08-24 17:05:21 · 1219 阅读 · 0 评论 -
技术小记6(C++)
友元函数(friend function)1. 什么是友元函数? 一个类的私有数据成员通常只能由类的函数成员来访问,而友元函数可以访问类的私有数据成员,也能访问其保护成员2. 友元函数的用处体现在哪里? 2.1 使用友元函数可提高性能,如:用友元函数重载操作符和生成迭代器类 2.2 用友元函数可以访问两个或多个类的私有数据,较其它方法使人们更容易理解程序的逻辑原创 2012-09-24 17:23:50 · 457 阅读 · 0 评论 -
%S(大写S)
wchar_t value[512] = { 0 };swprintf(value, L"%S", "what are you doing?");printf("%S\n", value);%S:用来将ANSI字符写入wchar_t内存,或者将wchar_t内存打印出来TCHAR szBuffer[128] = { 0 };_stprintf(szBuffer,原创 2012-09-12 11:56:40 · 4229 阅读 · 0 评论 -
#pragam once 和 #ifndef 预编译头
为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句转载 2012-09-29 23:07:11 · 1999 阅读 · 0 评论 -
技术小记2(string操作)
std::stringsring::substr(begpos);string::find(begpos, ch);std::string::size_type beg = url.find( "http://" );_string_replace( std::string source, const char* old, const char* dest ){wh原创 2012-09-14 15:32:45 · 470 阅读 · 0 评论 -
技术小记4(C++)
1.减少依赖Handle类,即通过包含来实现功能class CPerson{ public: void func1() { pImpl->func1(); }private: CPersonImpl* pImpl;};接口类,即通过继承来实现功能class IPerson{原创 2012-09-20 16:35:45 · 457 阅读 · 0 评论 -
技术小记5(C++)
1.Add( int * value ); Add( const int * value );两个函数不一样2.vector加入对象时,调用copy assignment,且形参为const,然后调用 operator=()赋值函数(形参可以是const,也可以不是)3.纯虚函数必须在子类中重新声明,但它还是可以在基类中有自己的实现4.char *p = "hello";原创 2012-09-21 16:43:31 · 409 阅读 · 0 评论 -
dll import
我相信写WIN32程序的人,做过DLL,都会很清楚__declspec(dllexport)的作用,它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然,如果你的DLL里全是C++的类的话,你无法在DEF里指定导出的函数,只能用__declspec(dllexport)导出类。但是,MSDN文档里面,对于__declspec(dllimport)的说明让人感觉有点奇怪,先来看看MSDN转载 2012-11-02 16:58:24 · 448 阅读 · 0 评论 -
A2W
这儿是个关于宏的问题,我曾用过ATL的串转换宏,包括W2A,开始有些东西我还不太明白。为了使用这些宏,必须在函数的开始处用USES_CONVERSION来初始化某些局部变量。用就用吧,但是看看这个宏的定义,它有类似下面的代码:// 在atlconv.h文件中#define USES_CONVERSION /int _convert; _convert; /UINT _acp =转载 2012-10-27 00:44:16 · 1237 阅读 · 0 评论 -
sstream和strstream以及fstream
sstream和strstream以及fstream在C++有两种字符串流,也称为数组I/O流,一种在sstream中定义,另一种在strstream中定义。它们实现的东西基本一样。strstream里包含class strstreambuf;class istrstream;class ostrstream;class strstream;它们是基转载 2012-10-27 00:47:20 · 634 阅读 · 0 评论 -
PE
在Dump PE File的section table时候,一开始选用RVA来计算section的地址,以期望能取到Section信息,后来发现不完全正确,应该用PointerToRawData的值。如果根据自己定义的内存对齐的值,将FileAlignment和SectionAlignment设为相同的对齐方式,这个时候生成的PE文件,RVA和PointerToRawData的值指向同一个转载 2012-10-27 14:20:01 · 401 阅读 · 0 评论 -
小知识点2
1.DLL中需要导出的函数前加__declsepc(dllexport)就可以了2.__cplusplus必须是小写3.用HMODULE做基址时,要转化为(BYTE*)4.Windows消息分为队列消息和非队列消息,WH_GETMESSAGE不能取到非队列消息,用SendMessage发送的消息不经过队列,用PostMessage发送的消息被放入队列5.PE PIMAGE_IMPO原创 2012-10-31 14:00:02 · 391 阅读 · 0 评论 -
技术小记3(dll)
在VC中,若用了__declspec(dllexport ) ,就可不用.DEF文件了。.DEF文件主要用于指定程序的输入。 对于C++程序动态链接库,一般都要加上extern "C ",以便能为C所调用。DEF文件定义你么输出的函数映射,这是属于老式程序的方式;现在,如果已经在源文件的函数定义中加了__declspec(dllexport),就不需要在DEF文件中在定义了。原创 2012-09-19 10:32:30 · 648 阅读 · 0 评论 -
CString解析
CString 有一个转换函数operator PXSTR (){return data;//假设是data}1.PXSTR GetBuffer(){CStringData* pData = GetData();if( pData->IsShared() ) {Fork( pData->nDataLength );}return(原创 2012-11-15 01:34:11 · 971 阅读 · 0 评论 -
小知识点3
1.char* p = "123abc";if( p == "123abc" ) 和 std::string str = "123abc";if( str == "123abc" )是可以的,用char []是不行的,== 比较的是地址2.class CT{public:CT(int v){m_v = v;}public:in原创 2012-11-13 18:22:04 · 663 阅读 · 0 评论 -
技术积累
① do{if()break;if()break;}while(false); 这样做事为了避免大量的嵌套语句②Pimpl机制是Private Implementation的缩写,我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们一般都会修改私有接口,但是这会导致包含该头文件的所有源文件都要重新编译,这会是个麻烦事儿。Pimpl机制,原创 2012-09-01 14:50:56 · 407 阅读 · 0 评论 -
内存泄露检测
#include "stdafx.h"#include #incude #include #ifdef _DEBUG#define DEBUG_CLIENTBLOCK new( _CLIENT_BLOCK, __FILE__, __LINE__)#else#define DEBUG_CLIENTBLOCK#endif#define _CRTDBG_MAP转载 2012-11-24 10:39:50 · 410 阅读 · 0 评论 -
STL容器插入类时的构造函数调用以及插入指针时的情况
map:调用过程class CT{public:CT(){std::cout }CT(const CT&){std::cout }~CT(){std::cout }};void main(){std::map mval;CT t;mval.insert( std::make_pair(1,原创 2012-12-08 17:36:48 · 826 阅读 · 0 评论 -
设计模式之命令模式[自我理解]
interface ICommand{ virtual void Execute() = 0;};class ConcreteCmd : public ICommand{ Worker m_impl; ConcreteCmd(Implement *pImpl):m_impl(pImpl){} void Excute() {原创 2012-12-11 10:34:30 · 513 阅读 · 0 评论 -
设计模式之抽象工厂
与工厂模式的区别是:他是一个创建各种不同类型结果的接口集合,且这些接口是写死的。没听上去那么NB原创 2012-12-25 17:00:34 · 405 阅读 · 0 评论 -
设计模式之原型模式
我觉得就是一个接口而已,只不过在克隆的时候是参数化的,不是每次都一样原创 2012-12-25 17:40:06 · 405 阅读 · 0 评论 -
string
void CCOMString::TrimLeft(){LPTSTR lpsz = m_pszString;while (_istspace(*lpsz))lpsz = _tcsinc(lpsz);if (lpsz != m_pszString){memmove(m_pszString, lpsz, (GetLength()+1) * sizeof(TC原创 2012-12-15 21:08:50 · 375 阅读 · 0 评论 -
内存分配相关,new , GlobalAlloc, VirtualAlloc, HeapAlloc
从用户的角度来看,WIN32的内存管理是非常简单和明了的。每一个应用程序都有自己独立的4G地址空间,这种内存模式叫做“平坦”型地址模式,所有的段寄存器或描述符都指向同样的起始地址,所有的地址偏移都是32位的长度,这样一个应用程序无须变换选择符就可以存取自己的多达4G的地址空间。这种内存管理模式是非常简洁而便于管理的,而且我们再不用和那些令人讨厌的“near”和“far”指针打交道了。在W16下有两转载 2012-12-16 12:46:37 · 546 阅读 · 0 评论 -
COM中的几种字符的转换
1.BSTR是COM中使用的基本类型,赋值需用SysAllocStringBSTR bstr = NULL;bstr = SysAllocString(L"data");BSTR转为CString可强制转换CString str = (CString)bstrCString转为BSTRCString str;BSTR bstr = str.AllocSy原创 2012-12-15 20:26:53 · 405 阅读 · 0 评论 -
MFC消息雏形
,组织两个数组_messageEntries[ ]和_commandEntries[ ],把程序中欲处理的消息以及消息处理例程的关联性建立起来:// 消息与处理例程之对照表struct MSGMAP_ENTRY _messageEntries[] ={WM_CREATE, OnCreate,WM_PAINT, OnPaint,WM_SIZE转载 2012-12-18 22:46:42 · 372 阅读 · 0 评论 -
MFC复习
LIBC.LIB - 这是C Runtime 函数库的静态链接版本。 MSVCRT.LIB - 这是C Runtime 函数库动态链接版本(MSVCRT40.DLL)的 import 函数库。如果链接此一函数库,你的程序执行时必须有 MSVCRT40.DLL 在场。 如果把应用程序获得的各种「输入」分类,可以分为由硬件装置所产生的消息(如鼠标移动或键盘被按下),放在系统队列(s原创 2012-12-18 22:37:53 · 415 阅读 · 0 评论 -
MFC的CFile
在MFC之中,CFile 用来处理正常的文件I/O 动作。CStdioFile 派生自CFile,一个CStdioFile 对象代表以C runtime函数fopen所开启的一个stream文件。Stream文件有缓冲区,可以文字模式(预设情况)或二进位模式开启。CString 对象代表一个字符串,是一个完全独立的类。我的例子用来计算小于100的所有费伯纳契数列(Fabonacci转载 2012-12-18 23:06:29 · 577 阅读 · 0 评论 -
窗口的生命周期
窗口的生命周期(详细说明请看图1-6)1. 程序初始化过程中调用CreateWindow,为程序建立了一个窗口,做为程序的屏幕舞台。CreateWindow 产生窗口之后会送出WM_CREATE直接给窗口函数,后者于是可以在此时机做些初始化动作(例如配置内存、开文件、读初始数据...)。2. 程序活着的过程中,不断以GetMessage从消息贮列中抓取消息。如果这个消息是WM_QUIT,G转载 2012-12-18 22:56:29 · 933 阅读 · 0 评论 -
什么是C Runtime函数库的多线程版本
什么是C Runtime函数库的多线程版本当C runtime 函数库于1970s 年代产生出来时,PC 的内存容量还很小,多任务是个新奇观念,更别提什么多线程了。因此以当时产品为基础所演化的C runtime 函数库在多线程(multithreaded)的表现上有严重问题,无法被多线程程序使用。利用各种同步机制(synchronous mechanism)如critical sect转载 2012-12-18 23:08:27 · 553 阅读 · 0 评论 -
WTL之基本
CMessageLoop, CIdleHandler 和 CUpdateUI三个类互相协同完成界面元素的状态更新(UI update),就像MFC中的ON_UPDATE_COMMAND_UI宏一样界面元素的自动更新(UI Updating) 空闲时间的界面更新是几件事情协同工作的结果: CMessageLoop对象,嵌入类CIdleHandler 和 CUpdateUI,CMa转载 2012-12-19 11:25:55 · 878 阅读 · 0 评论 -
C++三个结论
1. 如果你以一个「基类之指针」指向「派生类之对象」,那么经由该指针你只能够调用基类所定义的函数。2. 如果你以一个「派生类之指针」指向一个「基类之对象」,你必须先做明显的转型动作(explicit cast)。这种作法很危险,不符合真实生活经验,在程序设计上也会带给程序员困惑。3. 如果基类和派生类都定义了「相同名称之成员函数」,那么通过对象指针调用成员函数时,到底调用到哪转载 2012-12-18 23:23:17 · 676 阅读 · 0 评论 -
MFC几个主要的机制
①动态生成机制1.#define DECLARE_DYNAMIC(class_name) \public: \static const CRuntimeClass class##class_name; \ 声明对象virtual CRuntimeClass* GetRuntimeClass() const; \2.#define IMPLEMENT_DYNAMIC(cl原创 2012-12-19 00:41:31 · 694 阅读 · 0 评论 -
MFC框架
MFC 就把有着相当固定行为之 WinMain 内部动作包装在 CWinApp 中,把有着相当固定行为之 WndProc 内部动作包装在 CFrameWnd 中。也就是说: CWinApp 代表程序本体 CFrameWnd 代表一个框架窗口(Frame Window)CwinApp——取代 WinMain 的地位 CWinApp 的派生对象被称为appli原创 2012-12-19 01:11:48 · 3332 阅读 · 0 评论 -
设计模式之工厂模式
class Product{public:virtual ~Product() = 0;protected:Product();};class ConcreteProduct : public Product{public:~ConcreteProduct();ConcreteProduct();};class Factory转载 2012-12-21 00:50:12 · 411 阅读 · 0 评论 -
WTL控件结构
class CXXXControl : public CWindow{}他们都只是对HWND的封装CWindowImplRoot : public CWindow, public CMessageMap{}CWindowImplBaseT: public CWindowImplRoot{增加的成员函数主要是些winproc之类的东西}原创 2012-12-20 10:50:55 · 544 阅读 · 0 评论