- 博客(168)
- 资源 (1)
- 收藏
- 关注
原创 尴尬的goto语句
以前看过的effect xxx之类的书,总是会少不了这一条:避免使用goto语句理由很简单,你一段代码一会跳这里,一会跳那里,跳来跳去就晕了,犹如在迷宫之中看起来是很有道理,但是在实际运用中,不大会有人这么乱跳有些情况下,goto反而是一种更加优雅的方式。比如: 1.多重循环跳出循环用break,如果跳出多重循环呢?这种例子屡见不鲜,大家也都有自己的应对方式:标志变量。
2010-03-26 21:47:00
1220
原创 让人蛋疼的数学
一直智商欠佳且思维迟钝,小时候起初数学还不错,每每到毕业班时,难度都会陡升,然后成绩就差的一塌糊涂。大学时期,高数考了4年,一次比一次分数低,当然这是没有用心学的原因。我的时间都花在了一些应用的编程上了。毕业后发现,数学在程序很多方面都有用到,而且薪水和数学的高深程度成正比。望着令人垂涎的工资拿不到,只有继续做我的代码民工。现在被迫接触到OpenGL,发现我的知识竟是如此的欠缺。到
2010-01-27 22:03:00
957
1
原创 该重装系统了
我比较懒,系统凑合用就行了。 所以一直用风评很差的Vista(随机送的 哈哈)而且杀毒也没装过。家用电脑比较少用于写程序,昨天打开VC2008,才知道试用版到期了。找个序列号吧,程序有错误,进不到升级界面就挂了。没办法,下载个Express版吧,然后系统提示C盘空间不足。一看,我×,30G满了,我没装啥东西啊。先卸载VC2008试试,同样的错误,卸载失败。下载一个绿色版VC6,编译
2010-01-27 20:07:00
964
原创 Java中的byte
很郁闷 一段很简单的代码 把ARGB转为RGBA,结果图像颜色偏红。搞了很久,才知道问题出在了byte身上。一个颜色分量8位,想当然的用了byte,组合成一个像素32位,就是(r问题就出在了byte到int的转换上byte在Java中是有符号的 (win32中是unsigned char)这样0xFF转成int就变成0xFFFFFFFF (-1)也就是说如果蓝色
2010-01-27 19:43:00
814
原创 2010年手机市场展望
2009年的手机市场风起云涌,扑朔迷离。先是Nokia首度亏损,然后是Moto扭亏,但这是以牺牲销量为代价的。相对老牌手机厂商,iphone坐稳了北美智能手机市场,三星、LG全球市场份额节节攀升,直逼手机王者Nokia,HTC不甘示弱,亮点连连。各大手机厂商似乎走到了命运的关键点,面临重新洗牌。做手机软件接触了不少新手机,看出了一点未来的小苗头。Symbian:说手机操作系统,不得不先
2009-12-16 19:31:00
997
原创 沉痛悼念在前线壮烈牺牲的战友
前一段时间CSND上流传一句话:少壮不努力,老大做IT。前几天又有一位伟大的战友倒在了最前线。==========================================================================================酷6网员工吐血猝死的帖子中称,该消息为酷6网内部员工透露,猝死者姓罗,在
2009-11-22 14:38:00
1008
3
原创 关于Android应用的内存管理及性能
现在有一个有趣的现象,Android平台的手机用户并不多,而开发者数量已经呈爆炸趋势。不过这种现象应该会很快有所改观,全球各大知名厂商(除了固执的Nokia)都在紧锣密鼓地推自己的Android手机。作为一个初学者,我很难理解Google的一些策略用意,首要的就是内存及效率方面。1.力挺Java。不可否认,Java是一门语法简洁,先进而有魅力的语言,它在很多方面都要比臃肿衰老的C/C+
2009-09-03 00:42:00
2840
1
原创 毕业一年后,工作更难找了?
首先缅怀一下以前工作的E公司。虽然觉得在E公司呆下去对的技术发展不利,但是不可否认那里工作比较轻松,领导还是比较看得起我的。下定决心要离开,感谢我的主管这段时间的照顾和信任。还有我的同事们,和你们相处真的很愉快。算起来,我总共呆了一年半,说长也不长,说短也不短,我已经是名副其实的老员工了。很多公司HR看重员工的忠诚,却从不从自身找原因。呆的好好的,谁会走?很多时候问题出在企业。我们部门连续有人离职
2009-07-30 17:14:00
3189
3
原创 private virtual 与 Template Method模式
今天面试真倒霉,本来我状态还不错,结果遇到一位咄咄逼人的面试官。然后我就被逼问的晕菜了。最后问private virtual声明的方法有什么用,我竟然随口答没有用。出来想了一下 ,大概是父类还有一个公有的方法调用这个private virtual方法,由于虚函数不受访问权限的影响,在子类中可能会有该方法的override。为了验证这个想法,回去写了段程序试了一下,果然如此。#include
2009-07-29 18:57:00
133
原创 ATL-Style模板 不用虚函数实现 多态
最近在看ATL和WTL,比较有意思的是,它用类模板来实现多态,子类通过类模板将真实的类型传给父类,这样父类就知道真实的类型了。简单的例子:#include //Coding by nyzhltemplateclass CBase{public: void Display() { T* pT = static_cast(this); pT->Print()
2009-07-28 16:51:00
2035
1
原创 垃圾CSDN
RT以后写blog还是先写在记事本上,然后再粘过来吧。辛辛苦苦写篇文章,点发表就没了~! 极度恼火虽然不想骂人 还是要问候一下CSDN
2009-07-28 16:01:00
946
原创 CreateThread引起的内存泄露
我的程序跑了一个星期,比较稳定,但是内存占用却以每天300k左右的速度递增.内存泄露比较难找,先让他继续跑跑看偶尔在书上看到CreateThread创建的线程,并不能释放CRT的资源如果用CRT函数的话,可能会有内存泄露.很遗憾... 我习惯用CRT字符串处理 在此有两种解决方案:1.用CRT函数 _beginthread来创建线程,它在结束时会自动释放CRT资源2.在
2009-07-03 10:27:00
3121
原创 Oracle Error BadImageFormatException on X64bit platform
在Windows server 2003 X64 edition上连接Oracle,调试时报错:System.InvalidOperationException: Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 b
2009-06-04 19:52:00
2770
原创 新写简单C++链表
C++标准化的进度一直都很慢,也许是因为众口难调的原因吧~!但是已经标准化的STL用起来也比较闹心,最典型的就是跨Dll调用时老出问题。首先,参数和返回值不能用STL类,因为STL模板实现时使用了静态成员,而每个Dll都有独立的静态存储空间,这样对象传过去后再访问静态成员,就造成了非法内存访问。由此延伸,类的成员也不能有STL对象,因为类对象拷贝也会造成STL对象拷贝,也会发生上面的问
2009-05-08 20:53:00
104
1
原创 多重继承与类型转换 -- 虚基类多继承
多重继承是C++的特性之一,但在比较新的Java和C#中被摒弃,因为多重继承在类型转换中会出现一些有意思的现象。下面是虚方法多重继承#include #define interface structusing namespace std;interface IA { virtual void FA() = 0;};interface IB { vir
2009-04-11 20:48:00
2514
原创 关于数组名的思考
在大学里一直认为数组名是指针,现在看来似乎有些站不住脚,最明显就是sizeof的结果:char arr[8];在这里,sizeof(arr)的结果是8,而在32位PC中,指针的长度应该是4才对。 但是可以有这样的操作:char* p = arr;可以把数组赋值给指针,数组名又好像指针一样 从本质来讲,数组应该是连续的一段存储空间,个人觉得C#和Java的数组声明方法更直
2009-04-08 20:10:00
808
1
原创 STL中跨DLL指针调用导致断言_CrtIsValidHeapPointer验证失败
昨天遇到一问题,令我百思不得其解,问题大概是这样的:函数封装都是写在外部dll中的,主程序部分只是一些简单的调用。dll中有一个方法原型大概是这样的:bool Function(list& l)在主程序中调用一切没有问题,得出的结果也是正确的,只是在主程序结束析构数据成员时出错。查看Call Stack,确定是析构时出错,_CrtIsValidHeapPointer断言验证失败 起
2009-03-27 19:10:00
1540
1
原创 关于值类型和引用类型的思考
注:这里的引用类型是广义上的Referrence Type,类似于C#中关于引用类型的定义,包括C++中的引用和指针.更准确的说应该是堆内存指针. 已经习惯了C#和Java里的对象即对象指针,在写C++程序中总是面临困扰.用引用类型?什么时候new而又什么时候delete?在堆内存分配空间比栈更耗时,用什么样的方案最合理呢?用值类型?传值,以为着内存之间的频繁拷贝,频繁拷贝构造和析
2009-03-20 21:16:00
740
原创 static 成员未初始化引起 error lnk2001
对C++的语法不精通,出了很多问题。静态成员我本想直接初始化,结果编译出错,必须是静态常量才行,而且C++没有静态构造函数。根据C#和Java的经验,不初始化总要有默认的初始化吧!结果出了编译错误error lnk2001,我以为是某个符号没有链接上,找了好久配置问题无果。后来才发现出错的都是静态变量。头文件: static bool m_hasInit; static v
2009-02-04 13:39:00
2600
原创 关于 Win32API 中的 LoadLibrary
有人说 反射反射,程序员的法宝。这句话一点也没有错。如果能够动态的加载类和方法,就等于彻底的解除了类和类,方法和方法的耦合。当然,这样编译器就无法帮你检查出其中的错误了,还是有一定的风险的。总的来说,反射是一位好同志。他可以让程序的扩展变得如此方便,免除了重新编译之苦。 近来在玩C++,被其中的种种细节问题搞得晕头转向。用LoadLibrary实现动态加载类,花了很多时间在dl
2009-02-03 22:21:00
5645
原创 C++ 纯虚析构函数 error LNK2019
C#和Java写的多了,在能声明为接口的情况下,尽量不会声明为抽象类昨天写C++程序,理所当然的把基类里的所有方法都写成了纯虚函数。事实上也的确应该全是纯虚函数。因为我是把两个(以后可能会是n个)硬件厂商的SDK抽象出来,硬件不一样,软件SDK差别就更大了,完全没有一致的地方。基类的析构函数应该声明为虚函数的,索性一不做二不休声明为纯虚构函数好了。这样,一个类似与Java中接口的C++
2009-01-14 18:01:00
3729
原创 Oracle Job的使用心得
Oracle中的Job能帮你定时的自动完成一些机械的任务,例如你可以定时在晚上12点备份数据库,或者是你可以在某个时间触发一些数据操作。创建一个Job很简单,创建Job的方法如下:dbms_job.submit( job out number, what in varchar2, next_date in date, interval
2008-12-08 20:13:00
934
原创 读重构 (Refactoring:Improving the Design of Existing Code)
总觉得自己的代码写的很垃圾,事实上也是如此,每当需求出现变化时,都有力不从心的感觉.虽然最终总是能解决问题,但是代码看起来一团糟,然后仰天长啸:我×,我这代码没有人能看得懂了!或许你可以把这个归结为设计问题.计划总是赶不上变化(尤其是做项目),程序员之间的想法又不大一样,往往起初代码还可以说得过去,但是就在不断的更改,添加功能的过程中,程序慢慢的腐败掉.有一句古老的谚语:If it aint b
2008-11-21 18:26:00
755
原创 State 状态模式 - Design Patterns 学习笔记 (8)
if-else,switch-case之类的条件分支语句,是典型的机器线性思维的表现,并不是面向对象的方式。当然,纯粹的面向对象并不现实,我们面向对象设计目标是封装变化,如果条件和行为都是恒定的话,我们没有必要把他们封装成对象。模式的滥用和误用往往是画蛇添足。为了解决冗长而易变的switch-case而带来的笨拙,状态模式就应运而生了。它把每一个分支都封装成为一个类,当调用方法时,由状态类
2008-11-11 11:24:00
639
原创 模板方法模式 - Design Patterns 学习笔记 (7)
有这么一种情况,有很多类会有一些相似的逻辑,但又不完全一样,只有一些微小的差别,为了这些微小的差别,很多时候我们会一拍脑袋,把这些逻辑不厌其烦的写了一遍又一遍.重复 = 易错 + 难于变化为了解决这个问题,我们可以充分利用多态的特性,将这些微小的变化延迟到子类.每个子类只要实现这些小变化就可以了.抽象类,封装不变的内容: public abstract class Person {
2008-10-22 13:31:00
545
原创 c# string与byte[]转换
string inputString = System.Convert.ToBase64String(inputBytes); byte[] inputBytes = System.Convert.FromBase64String(inputString); 把字符串转换为base64字符,base64字符的优点在于可以压缩数据量,把8个字节缩减为6个字节
2008-10-17 21:27:00
904
原创 当前线程不在单线程单元中,因此无法实例化 ActiveX 控件 解决
不在单线程单元中,那就声明为单线程单元咯给Main函数加上[STAThread]特性就OK了 具体是什么原理还不大明白谁知道的吼一声
2008-10-16 11:29:00
3166
原创 数据表中的数据实体类
在写基于数据库的程序中发现,通常关系数据库中一个表可以抽象为一个类,数据表中的每条数据都可以看做是该类的一个实例。例如用户表Users有三个字段:id(varchar2),name(Varchar2),age(number)。用户理所当然要抽象成一个类(当然,这里谈的是面向对象设计),而该类的数据成员应该是Users表中的三个字段。至于用户类的方法,总少不了增删改查这些操作,例如添加新用户,修改用
2008-10-14 20:30:00
2877
原创 使用VS 2005 Team Suit创建单元测试
今天一直在摆弄VS自带的单元测试.有那么一点心得,与大家分享一下测试->新建测试->单元测试向导,然后选中你要测试的项目,程序就会自动生成测试项目测试类以及测试方法命名方式是××Test,如果有函数重载,会再加上数字的后缀,如1,2,3等需要注意的是:只有Team版的VS才有测试功能如果你用的是中文版,而又把语言改为英文的话,会造成测试模板丢失,再把语言换回来就好了和别的单元框架相似,这里会经常用
2008-09-26 22:41:00
1014
原创 Bridge - Design Patterns 学习笔记 (6)
面向对象设计的目的是消除需求变化对软件的影响当有一个可能变化的因素时,我们会把这个变换点抽象成接口,让程序依赖这个接口,另写这个接口的实现这个是面向对象里的依赖倒置原则,也就是说实现细节依赖抽象,而不要抽象依赖实现细节这样做降低了实现变化对程序的影响.但是有时候很不幸,如果抽象本身也是不稳定的,或者说程序在两个方面都是易变的,这时候怎么办?多继承?让实现继承两个接口?买噶的 想起来就有点恐怖.如果
2008-09-25 21:15:00
722
原创 C# 动态加载类
貌似大多时候我们创建一个对象最终都是用new运算符生成的反射允许我们动态的加载类,也就是说完全可以在配置文件里决定究竟要选用哪个类这样,就可以把数据库工厂,皮肤等写成类放在dll中,通过修改配置文件随意的改变如我们有一个数据库工厂接口IDatabaseFactory,两个数据库工厂类实现这个接口:OracleFactory和SqlServerFactory可以在配置文件中设置究竟要用Oracle数
2008-09-23 22:22:00
4070
原创 C# 强制退出程序
。net类库已经帮助我们实现了窗口的关闭,如果此窗口是系统的主窗口,关闭此窗口即应该退出了整个应用程序。但事实上有时候并不是这样的,关闭窗口,只是停止了当前窗口的消息循环。系统主窗口,实质上是Main函数中开始消息循环的窗口,这个消息循环结束后,Main函数就基本上完成了历史使命,整个应用程序自然就结束了。Application.Exit()方法是终止所有线程上的消息循环,一般情况下,无论在什么地
2008-08-05 14:41:00
3320
1
原创 Could not find file 'Microsoft.Windows.CommonLanguageRuntime, Version=2.0.50727.0' 问题
今天Publish Solution的时候遇到了这个错误:Could not find file Microsoft.Windows.CommonLanguageRuntime, Version=2.0.50727.0 感到很诧异,CLR都找不到了,还混个P啊~!后来查查资料,网上说这是因为Solution有多个入口程序而导致的。个人组织了三种解决方案:1.Solution中保证只
2008-07-24 20:47:00
1764
原创 Critical Section 线程同步 (C/C++ Windows Platform SDK 实现)
Mutex和Event是系统内核对象,好处是他们是跨进程的,可以用作进程间的线程同步。缺点也很明显,就是他们的速度较慢。Critical Section则是用户对象,速度快,但是不能设置超时时间,一不小心会造成死锁。(记得操作系统课本上的哲学家饿死问题吗,幸好哲学家不搞程序,要不然非气吐血不可)。。。一个很简单的Critical Section示例:// Coding by nyzhl
2008-07-11 21:55:00
2295
原创 UDP Socket编程 C/C++实现 (Windows Platform SDK)
挺无聊一小程序,俩SB一人说一句,据说聊天程序最好用UDP写。Server:#pragma comment (lib,"ws2_32.lib")#include #include void main(){ //版本协商 WORD wVersionRequested; WSADATA wsaData; int err;
2008-07-04 21:05:00
13128
5
原创 TCP Socket编程 C/C++实现 (Windows Platform SDK)
C语言TCP程序中的Hello World。以前一直用OO语言,现在用C语言写着玩,思想上有点转不过来弯,o(∩_∩)o...Server:#pragma comment(lib, "ws2_32.lib")#include #include void main(){ //版本协商 WORD wVersionRequested
2008-07-04 20:38:00
6140
4
原创 Mutex线程同步 (C/C++ Windows Platform SDK 实现)
最近对Windows Platform SDK和MFC编程比较感兴趣,工作之余(我是搞.NET的C/S编程),写了写小程序消遣。o(∩_∩)o... 首先是关于线程同步的:#include #include //线程方法DWORD WINAPI Run1(LPVOID lpParam);DWORD WINAPI Run2(LPVOID lpParam);
2008-07-04 20:18:00
2163
1
原创 Oracle 客户端心得
Oracle经常会出现莫名其妙的错误: 1。ORA-12154,TNS无法处理服务名 这个错误意思是服务名写错了或者是服务名配置问题。但是PLSQL都能连接上,放程序里就连接不上了。 这可能是因为你的程序目录包含括号等特殊符号,把文件夹名改掉就OK了 2。需要 Oracle 客户端软件 8.1.7 或更高版本 这个错误意思是你需要装Or
2008-06-29 22:32:00
799
原创 Windows 2003 NTP 时间服务器设置
.默认情况下,独立服务器WINDOWS 2K3 是作为NTP(Network Time Protocol)客户端工作的 ,所以必须通过修改注册表,以使系统作为NTP服务器运行。 1.修改注册表的键值:Run->regedit HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time /TimeProviders/NtpServ
2008-06-27 15:35:00
3238
原创 Windows 2003 NTP 时间服务器设置
.默认情况下,独立服务器WINDOWS 2K3 是作为NTP(Network Time Protocol)客户端工作的 ,所以必须通过修改注册表,以使系统作为NTP服务器运行。 1.修改注册表的键值:Run->regedit HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W32Time /TimeProviders/NtpS
2008-06-27 15:31:00
13199
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人