自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(80)
  • 收藏
  • 关注

原创 悲催的PKU ACM 3980

读研那会儿,偶然发现了这个http://acm.zju.edu.cn/onlinejudge/(现在回忆起来大约是在CSDN算法论坛泡的时候有人提起的,原谅我这读本科不是计算机专业的人吧),于是就兴致满满的一道一道做,直到做完了1008。突然觉得很没意思,那些AC率低的一般都是NP问题,翻来覆去就是如何剪枝,而这个是最伤脑细胞的。然后呢,就不做了。最近听说浙大得了ACM比赛的世界冠军,上去又看了看

2011-06-09 11:51:00 878

原创 J2ME中Form的内存泄露

改别人代码是件很痛苦的事情,但是工作中在所难免。今天碰到了很棘手的问题——有一个类的对象无论如何不能被回收,当然这是在排查了半天内存溢出之后得出的结论。还好模拟器忠实的反映了这个问题——假设创建了一个包含两个TextField的Form之后,那么这个Form将永远存在,哪怕没有任何引用,好在只会存在一个。问题的根由就是把那个包含很多资源的类作为那个Form的CommandListener之后,

2009-02-10 15:35:00 866

原创 Java中Stream的close

 最近在精简代码,发现每次new一个ByteArrayInputStream然后再new一个DataInputStream,然后还要把两个都close,看着都恶心,真的要这么写吗?首先,实在搞不懂为什么ByteArrayInputStream也要close,完全没有意义吗!好在现在java也开源了,看了一下源代码,发现close还真是多余的:    /**     * 

2008-12-30 09:25:00 2532

原创 在Lua中使用Unicode

这是一个事实上已经解决的,但是却很难搜索到方案的问题。在这点上不得不佩服老外的兜圈子和中国人的没耐性。关于这个问题比较详细的文档是lua-suers wiki上的一篇http://lua-users.org/wiki/LuaUnicode,看完之后,虽然懂了不少,还是没解。这点也怪不得人家,Unicode的问题对于东亚语系才是不得不解决的问题。倒是中文资料总是三言两语带过,确实让人很愤懑。

2008-12-06 21:57:00 7347

原创 Mercurial的.hgignore写法

 看了N多的介绍,结果都是一句话——一目了然,就不介绍了……其实那些例子并没有涵盖常用需求,所以导致我很困惑。自己研究一下吧。hgignore支持两种语法,Python/Perl-style regular expressions和系统shell。虽然shell语法一目了然,但是还是建议使用regexp吧,一是不用在文件中指定语法(正则表达式是默认语法),二是可控性高些。常用需求有两种:过

2008-11-22 15:31:00 4446

原创 Linux下Netbeans的字体反锯齿

首先说明,我是被锯齿的Netbeans虐待了半年才下决心解决来解决这个问题,想想还真是冤枉。我用的Linux发行版是Ubuntu8.04,如果使用源里面的JDK一切都很简单(现在源里的版本是1.6u6),JDK6开始支持反锯齿。装完Netbeans你就会惊喜的发现,仿原生GUI的界面(GTK+)上的文字是反锯齿的,但是编辑器里面的文字是锯齿的,小了看着别扭,选大号的字体就极为明显的看出来了。这

2008-10-10 00:58:00 4606

原创 如何在Linux下实现Nokia PC Suit的功能

    不管Nokia PC Suit的口碑如何(有人说它太大、影响系统稳定,等等……),我所以在windows下用,不外乎两个原因,电话簿和传文件,对于S40还有一个用处是安装程序——直接蓝牙发送和数据线拷贝不能保存RMS,对于继承存档的游戏来说真是个大问题。    换到Linux(我用的Ubuntu 8.04)下后,google到“Nokia PC Suit for Linux”一律是自力

2008-09-03 13:55:00 117 1

原创 生成在PC和手机都能运行的jar包

首先看一下可行性。java的字节码规范是一样的,但是两个平台的类库有很多不同,好在程序执行的入口点不同,并且对于根本不会执行到的死代码,里面有什么无所谓。下面看一下具体过程:首先生成一个midletimport javax.microedition.midlet.*;import javax.microedition.lcdui.*;public cla

2008-08-22 12:15:00 1419

原创 Java的“静态库链接”

Java的库组织方式就是“动态链接”的,从一个Java的jar包运行有可能要接一堆classpath就知道。和基于静态链接的C语言要实现动态链接要做额外的事情相似,Java要想实现类似C的静态链接也要做很多额外的事。用类似Fat Jar的方法,把所有的依赖库打包的最后的库中,其实不是静态链接——C的静态链接只把需要的代码复制过来,不是眉毛胡子一把抓。按说,以Java的思想,静态链接不是很必要,

2008-06-23 13:36:00 1557

原创 如何在不支持上传文件的论坛上传文件

如何在不支持上传文件的论坛上传文件要达成这个目标,有个前提条件是这个论坛要能上传图片。常用的图片格式一般为JPEG,这种格式是以FFD9作为文件结束标志的,至于这之后存了什么,就不管了,因此我们可以把我们要上传的文件附加在这后面,同时也不影响这张图片的显示。BMP格式也是可以这样的,因为这种格式里有一个位置是保存文件大小的,在确定的大小后面是什么也不管。推广之,所有带文件结束标志或者相当于有文

2006-04-03 23:54:00 3126 2

原创 系统托盘气泡提示和上下文(右键)菜单

系统托盘气泡提示和上下文(右键)菜单WTL嵌入类的架构可以使整个程序很清晰,系统托盘气泡提示、上下文菜单处理可以分别独立出来,以下是实现代码,很清晰就不注释了。基本上这两个类很少需要修改,因此我把它们放到了系统包含文件搜索路径中。//ContextMenu.h#pragma oncetemplate class CContextMenu{public:      

2006-03-29 19:32:00 3020 2

原创 准备工作——修改向导添加WinSock支持

要想使用WinSock必须在调用前加载相应的DLL,通常是调用WSAStartup来完成,这个函数一般放在WinMain,然后在程序结束的时候调用WSACleanup(其实不调用也行,不过“那就不符合WinSock规范”了),还需要链接ws2_32.lib。虽然不是很麻烦,考虑到以后我们要写得此类程序还很多,每次都要做如此乏味的事情也很让人不爽。所以,我们要让向导来为我们做这项工作,并且你将同时学

2006-03-29 16:40:00 1739

原创 Windows网络编程简易上手重写计划

首先很抱歉真正应了我写在开头的“有足够的耐心”,我已经很久没更新这个分类了。倒不是没写什么,这段时间我也写了完成端口的例程,只是整个程序看起来很混乱,实在没什么心情再给别人讲。这个系列处于停顿主要也是因为这个。由于用嵌入类来编写任务栏提示的类,让我认识到了WTL的架构的优越之处,当我的程序运行起来后,我觉得这实在是太神奇了。WTL广泛的使用了多重继承,在这里多重继承的语义不(只)是这个类属于某

2006-03-28 18:03:00 1858 1

转载 WTL for MFC Programmers, Part VIII - Property Sheets and Wizards

原作 :Michael Dunn [英文原文]翻译 :Orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]下载演示程序代码本章内容 介绍 WTL 的属性表类 CPropertySheetImpl 的方法 WTL 的属性页类

2006-03-28 14:10:00 1509

转载 WTL for MFC Programmers, Part VII - Splitter Windows

原作 :Michael Dunn [英文原文]翻译 :Orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]下载演示程序代码本章内容 介绍 WTL 的分隔窗口 相关的类 创建分隔窗口 基本的方法 数据成员

2006-03-28 14:09:00 1429

转载 WTL for MFC Programmers, Part VI - Hosting ActiveX Controls

原作 :Michael Dunn [英文原文]翻译 :Orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]下载演示程序代码本章内容 介绍 从使用向导开始 建立工程 自动生成的代码 使用资源编辑器添加控件 ATL中使用控件

2006-03-28 14:08:00 1433

转载 WTL for MFC Programmers, Part V - Advanced Dialog UI Classes

原作 :Michael Dunn [英文原文]翻译 :Orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]下载演示程序代码本章内容 第五章介绍 特别的自画和外观定制类 COwnerDraw CCustomDraw WTL的新控件

2006-03-28 14:06:00 1390

转载 WTL for MFC Programmers,Part IV - Dialogs and Controls

原作 :Michael Dunn [英文原文]翻译 :Orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]下载演示程序代码本章内容 介绍 回顾一下ATL的对话框 通用控件的封装 用应用程序向导生成基于对话框的程序 使用控件的封装类 ATL 方式 1 - 连

2006-03-28 14:05:00 1330

转载 WTL for MFC Programmers, Part III - Toolbars and Status Bars

原作 :Michael Dunn [英文原文]翻译 :Orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]下载演示程序代码本章内容 介绍 主窗口的工具条和状态条(Toolbars和Status Bars) 向导为工具条和状态条生成的代码 CMainFrame 如何创建工具条和

2006-03-28 14:02:00 1225

原创 WTL向导的中文本地化

需要修改两个文件,/AppWiz/Files/Templates/../root.rc,/AppWiz/Files/Scripts/../default.js。当然,愿意全盘汉化的也可以修改/AppWiz/Files/HTML里面的HTML页面。注意到这些目录里都有一个1033的子目录,这就是语言区域为USEnglish对应的文件,我们要做的是复制一份,改名为2052,然后修改里面的上边提到的

2006-03-28 11:51:00 2367 1

转载 WTL for MFC Programmers, Part II - WTL GUI Base Classes

原作 :Michael Dunn [英文原文]翻译 :Orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]下载演示程序代码本章内容 对第二部分的介绍 WTL 的总体印象 开始写WTL程序 WTL 对消息映射链的增强 从WTL的应用程序生成向导能得到什么 使

2006-03-28 10:58:00 1131

转载 WTL for MFC Programmers, Part I - ATL GUI Classes

原作 :Michael Dunn [英文原文]翻译 :Orbit(桔皮干了) [http://www.winmsg.com/cn/orbit.htm]下载演示程序代码本章内容 README.TXT 对本系列文章的总体介绍 对第一章的简单介绍 ATL 背景知识 ATL 和 WTL的发展历史 A

2006-03-28 10:56:00 1317

转载 WTL for MFC Programmers, Chinese Version Prologue

我一直在寻找这样一个类库:他对Windows的窗口提供面向对象的封装,有灵活的消息响应机制和比较完备的界面框架解决方案,对标准控件提供简练实用的封装,支持操作系统的新特性,支持功能扩充和二次开发,有代码自动生成向导机制,生成的程序使用较少的系统资源,最后是有完全的代码支持和文档支持。你会说那就用MFC吧!是的,我一直使用MFC,但我对MFC已经越来越厌倦了。陈旧的类库使得它无法支持操作系统

2006-03-28 10:53:00 1228

转载 托盘编程全接触

一、托盘简介   所谓的“托盘”,在Windows系统界面中,指的就是下面任务条右侧,有系统时间等等的标志的那一部分。在程序最小化或挂起时,但有不希望占据任务栏的时候,就可以把程序放到托盘区。其实,托盘区的编程很简单,下面简要阐述一下子喽^_^   二、托盘编程相关函数   其实呢,把程序放到托盘上的本质就是先在托盘区绘制一个图标,然后把程序隐藏不见,再对托盘的图标进行消息处理,就可以了。   绘

2006-03-19 18:03:00 825

原创 第一章 UDP

UDP(User Datagram Protocol,用户数据报协议)具体是什么我不说了,随便Google、Baidu一下,或者到书店、图书馆都能找到详细的答案。我只是打个比方,UDP的通信方式就好像你看见张三,然后你就扯着脖子喊“张三”,张三听见后,回喊你“李四”,你们就这么互相扯着脖子喊话。不过,要是张三的耳朵有点背,你就得多喊两声;再或者,有座隔音墙,你就是喊破喉咙,张三也不会理你,你只能自

2005-10-08 18:50:00 2280 1

原创 如何正确的计算文件收发进度

学习Winsock编程,用TCP协议收发文件是必不可少的一个实践环节,而计算收发百分比的一行代码,很多人都写不对。假设我们用DWORD(unsigned long)来表示文件长度,则长度的最大值是232-1,也就是4GB。虽然Win32 API能够返回两个DWORD表示长度,但是为了简便,我们还是原意接收4GB的人为限制。以下我们的讨论基于这个前提。通常我们会使用一个DWORD表示length,一

2005-10-06 15:56:00 1089

原创 WTL中CString的使用问题

如果你按照说明定义_WTL_USE_CSTRING,然后包含atlmsic.h,就会出现CString定义不明的编译错误,其实就是编译器分不清你是用WTL::CString,还是ATL::CString。其实你跟本用不着用WTL::CString,它们根本上就是一样的。避免这类错误的方法就是在atlapp.h前面包含atlstr.h,这个文件里面定义的__ATLSTR_H__和_WTL_USE

2005-09-29 22:20:00 3919 1

原创 WTL向导生成的对话框程序中文乱码的解决

首先,选工程属性,把资源的属性改成“中文(中国)”,是不是一定要改,我不确定。最重要的是,把对话框的字体换成中文字体,比如宋体。并不需要改成Unicode程序。或者直接中文化向导模板,参阅我的文章。

2005-09-29 21:39:00 1654

原创 Windows网络编程简易上手——写在开始

写在开始最近开始看《Windows网络编程(第二版)》,应该说是本好书,要言不烦,并且很细致,不过也很厚。以前用过MFC的CSocket,虽然也没弄清楚它是怎么工作的,但是也能发发消息,收收文件,并且传送文件功能我是在CArchive上实现的,不是像现在的例程用上了send、receive等更初级的函数;厉害吧,至于效率吗,如你所想,也不会高,呵呵。好像现在很多人对MFC都不耐烦了,并且很多人都推

2005-09-29 11:08:00 1473

原创 Windows下的应用程序如何获得本机IP地址

看到一些例程,使用的是winsocket,实际上我们都知道ipconfig就能完成我们的要求。IP助手API提供了类似的功能,本文用到的是GetAdaptersInfo,具体参数意义可以查MSDN。例子如下://需要链接iphlpapi.lib#include #include #include void GetHostIP(CString& address){ ULONG len = 0; ad

2005-09-28 16:12:00 1975 2

原创 如何在VS.net2003下开发ARX2005

这是一个老问题,也是一个热门问题,我所能找到的解决方案都不够理想。简单的办法就是,把mfcs71.dll,mfc71.dll复制一份,改名叫mfcs70.dll,mfc70.dll,这样就能胡弄过编译器,但是,AutoCAD不能加载,当然,用arx命令不理会那个警告信息也是能加载的。可是这样总有点顾及,并且总得为用户考虑吧,反正这种总是要弹警告的东西我是不敢用。这不是由于我们李代桃僵造成的,不信你

2005-09-27 21:29:00 1279

原创 数据结构学习(C++)续——续篇后记

我觉得续篇的写作我很不负责任,越到后面越是如此,可能是我没有打算写的缘故,或者说是“心浮气躁”——写了几个月有点熬不住了,^_^。但也可能我只能写到这样,毕竟这部分离我们太远,至少和前边的“数据结构”相比是太远。有人说,查找和排序的算法已经非常成熟了,大师们穷尽脑汁也不可能带来“质的飞跃”了,而像我们这些等着“吸收前人劳动果实”的人,能全盘吸收就甚为不易,更不要说“完成前人所未完成”了。因此,

2004-03-16 16:56:00 2254 2

原创 数据结构学习(C++)续——查找(搜索)【2】

树型查找折半查找所需要的,有序的、可以随机存取的、顺序结构的限制,导致了排序的额外负担(如果是逐个添加,主要的负担是移动数据,此时是折半插入排序)。通过观察折半查找的过程,发现实际上mid是从判定树的根走到了叶子节点,而这棵判定树和有相同节点的完全二叉树的高度是相同的。链式结构的好处就是不用大量移动数据,自然的用链树来做查找结构应该是个好选择。在前面我们曾经写过一个BSTree类,这个类大

2004-02-09 00:11:00 2381 1

原创 数据结构学习(C++)续——排序【6】内部排序总结

基数排序本文后面将会提到,我觉得将其和前面的排序算法放在一起比较有些不伦不类。前面介绍了四类排序方法,每种都有基本型和改进型。对于内部排序,我们最关心的当然是速度,这也是为什么快排受欢迎的原因。考虑到快排的缺陷,有时候我们可能会用堆排或者希尔排序、归并排序。上面可能是选择排序方法最直接的思路了(我们的选择范围也不算广,就那几个翻过来调过去的,好一点的,综合一下搞一个“杂牌”),出于“赌徒”的思

2004-02-09 00:07:00 2272 1

原创 数据结构学习(C++)续——查找(搜索)【1】

相信每个人都曾感受过找东西的痛苦,大多数人也感受过计算机参与资料管理后所带来的便捷,而学过编程的也曾为了某个问题(比如实现“如果不存在则加入”这样的算法描述——排列组合算法的初级阶段)而实现过查找。在SGI-STL的stl_algo.h里面有这样一段代码:template inline _InputIter find(_InputIter __first, _InputIter __las

2004-01-04 10:22:00 1663

原创 数据结构学习(C++)续——排序【5】归并排序

【5】归并排序当初学习链表的时候,我们都曾经做过将两个有序链表合成一个有序链表的练习。那时我们就知道了归并的特点就是,将分段有序的序列合成整体有序的序列。在内部排序中,归并的地位并不十分重要,主要是因为附加的O(n)的储存空间;但是,归并却是外部排序的不二法门——我们只能用内排得到分段有序的序列,为了得到最后的有序序列,必须使用归并的方法。迭代的2路归并排序2路归并是最简单的,并且单纯

2003-10-28 14:21:00 2295

原创 数据结构学习(C++)续——排序【4】选择排序

【4】选择排序基本思想是:每次选出第i小的记录,放在第i个位置(i的起点是0,按此说法,第0小的记录实际上就是最小的,有点别扭,不管这么多了)。当i=N-1时就排完了。直接选择排序直选排序简单的再现了选择排序的基本思想,第一次寻找最小元素的代价是O(n),如果不做某种特殊处理,每次都使用最简单的寻找方法,自然的整个排序的时间复杂度就是O(n2)了。template void S

2003-10-20 23:57:00 1570

原创 数据结构学习(C++)续——排序【3】交换排序

【3】交换排序基本思想是:两两比较待排序记录的关键码,如果发生逆序,则交换之,直到所有对象都排好为止。起泡排序起泡排序是比较相邻的两个记录,逆序则交换。这样的做法导致小的关键码一层层的浮上来,因此得名。CSDN的论坛曾经讨论过“冒泡”和“起泡”是不是一个东西,看来这是翻译惹的祸,英文名都是Bubble Sort,具体写的时候可以正着排,也可以倒着排。(严版是从后往前排,殷版是从前往后排

2003-10-20 23:56:00 1472

原创 用Visual C++编写电子邮件程序

一、概述 本文主要讲述如何使用Visual C++用MAPI编写E-mail程序。MAPI是包含在Windows之中的,因此不需要安装其他额外的部件。MAPI有以下三种形式: SMAPI,Simple MAPI,简单的MAPI CMC,Common Messaging Calls,一般通讯调用 完整的MAPI SMAPI和CMC都包含在完整的MAPI中,当用户想执行一些高级操作,比如编

2003-09-23 23:39:00 2522

原创 数据结构学习(C++)续——排序【2】插入排序

基本思想是,每步将一个待排序的记录,按其关键码大小,插入到前面已经排好序的记录的适当位置,从头做到尾就可以了。直接插入排序template void InsertSort(T a[], int N, int& KCN, int& RMN){       KCN = 0; RMN = 0;      for (int i = 1; i        {        

2003-09-12 19:23:00 1572 1

空空如也

空空如也

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

TA关注的人

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