阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年2月4日

摘要: CComPtr CComPtr派生自模板类CComPtrBase<T>,T代表某个COM接口。CComPtrBase<T>类只有一个成员变量T* p。下面是它们的代码分析:构造函数protected: CComPtrBase() throw() { p = NULL; } CComPtrBase(_In_ int nNull) throw() { ATLASSERT(nNull == 0); (void)nNull; p = NULL; } CComPtrBase(_In_opt_ T* lp) throw() { p = lp; if (p != NULL) p-&g 阅读全文

posted @ 2012-02-04 22:19 阳光VIP 阅读(298) 评论(0) 推荐(0) 编辑

摘要: “Windows游戏编程大师技巧"第二版 是一本很经典的书,里面虽然没有涉及到3D,但是游戏编程的很多基础知识还是很重要的。今天用visual studio 2005对它的第一个例子进行尝试。1)先创建一个win32工程,空工程T2(因为T1我失败了 :) )2)修改T2的字符集属性为多字符集3)将范例工程T3DCHAP01目录下的三个文件freakout.cpp,blackbox.h,blackbox.cpp复制到新工程目录下,并在项目中加入这三个文件4)设置工程的配置属性下的c/c++目录为Direct8.1所在的include目录(你需要先安装Direct8.1)5)编译,会一 阅读全文

posted @ 2012-02-04 22:19 阳光VIP 阅读(113) 评论(0) 推荐(0) 编辑

摘要: 利用Runtime.execute方法,我们可以在Java程序中运行Linux的Shell脚本,或者执行其他程序。参考了互联网上的这篇文章:http://lee79.javaeye.com/blog/418549(感谢一下),我重新整理了代码。现在通过CommandHelper.execute方法可以执行命令,该类实现代码如下:package javaapplication3;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/**** @author chensh 阅读全文

posted @ 2012-02-04 22:18 阳光VIP 阅读(226) 评论(0) 推荐(0) 编辑

摘要: 这真是一个艰难的探索,iBATIS也许是个不错的Framework,但是文档写的很不好,从头到尾都缺少一个完整的例子。如果习惯了微软MSDN和NetBeans.org上面的文章风格,你会觉得iBATIS的文章作者真的是不懂如何写文章。iBATIS文章中很多例子片段都不能使用,不知道为什么? 先交代一下开发环境:UBuntu9.10 AMD64 英文版 + NetBeans6.71. + JDK1.6 +iBATIS 3.0.0.211。第一步,获取最新的iBATIS源代码为什么要获取最新源代码,因为我用Beta5的jar包总是出错,我怀疑有bug。当我取得了最新源代码,并编译后,问题解决了。所 阅读全文

posted @ 2012-02-04 22:18 阳光VIP 阅读(115) 评论(0) 推荐(0) 编辑

摘要: 从这里获得最新版本http://code.google.com/p/inotify-java/,并参考下面的安装手册注意,当前版本号是0.1,所以[version]都要换成0.1并且还需要设置环境变量JAVA_HOME,可以只在编译用的终端设置export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.15/要先安装过ant,然后进入解压后的目录,使用如下命令编译:chenshu@chenshu-desktop:~/work/inotify-java-0.1$ ant release -Dversion=0.1然后拷贝已经编译出来的动态库到/usr/lib目录 阅读全文

posted @ 2012-02-04 22:17 阳光VIP 阅读(335) 评论(0) 推荐(0) 编辑

摘要: 我使用Ganymed库,访问http://www.ganymed.ethz.ch/ssh2/网页,下载最新版本的程序,解压后,在NetBeans下如下设置。 然后在我们的Java应用程序中,加入Ganymed-ssh2-build2库。假定我在192.168.0.110的UBuntu Server 9.04系统的/home/chenshu目录下放了一个文件夹test,test文件夹对应测试Java类的包名test,我们在该机器上运用javac ./test/Main.java编译后,在另一台机器上运行Java程序,该程序通过调用我们新建的Ganymed-ssh2-build2库的类完成远程调用 阅读全文

posted @ 2012-02-04 22:17 阳光VIP 阅读(450) 评论(0) 推荐(0) 编辑

摘要: 1)下载Log4j的程序http://logging.apache.org/log4j/1.2/download.html解压后在我的机器下目录如下:~/work/apache-log4j-1.2.15如果要重新编译,需要安装maven2,可以参考INSTALL文件的内容。可以不用编译。2)在~/work/apache-log4j-1.2.15目录下添加一个Server端的配置文件socketserver.properties,内容如下:文件名socketserver.properties#log4j.rootCategory=, A1 #如果需要显示日志界面,可以将本行启用log4j.roo 阅读全文

posted @ 2012-02-04 22:16 阳光VIP 阅读(389) 评论(0) 推荐(0) 编辑

摘要: 去年5月份,公司项目较少,我就组织了一个用于公司内部办公管理的项目(以下称OA)。第一个目的是为了让公司里面一些技术较差的人员得到真正编程的锻炼;第二个目的是为了使用空闲的人员为公司开发一个产品,在内部推行科学管理,以后也可以考虑销售。 结果一直到今年4月份,这个项目才算上线,开发进度一拖再拖,代码质量很差。回过头来考虑原因,有以下几个:1)程序员技术能力弱2)对JSF技术不熟悉3)JSF框架有Bug,并且可用tag较少,不足以应付项目,还需要额外开发自定义tag4)人员变动频繁5)按照<<Software Engineering>>最新版的建议和日立公司开发流程结合指 阅读全文

posted @ 2012-02-04 22:14 阳光VIP 阅读(203) 评论(0) 推荐(0) 编辑

摘要: 转自http://www.javabeat.net/javabeat/java7/index.php。此篇文章提供了Java 7.0的新的重要特性介绍。 Java 7.0也是自Java 5.0做重大改变(泛型和并发包)后的又一次重大变化。语言规范将进一步演化(C#演化的太快了)。尤其是闭包(Closures)的引入,使Java语言也能象C# 3.0语言一样便捷的进行Lamda运算。从语言变化上来看,property关键字可能得到支持. 通过闭包,可以进行lamda运算,并进一步简化匿名类的使用。纯XML支持。从API来看,NIO得到进一步提升,持久化框架将被加入到JSE,等等。当然,离Java 阅读全文

posted @ 2012-02-04 22:12 阳光VIP 阅读(206) 评论(0) 推荐(0) 编辑

摘要: 最近整理家里,终于搬出我那台7,8年前买的那台台式机,配置如下:1.CPU 赛扬1G2.显卡 i810 (?)3.内存512M4.光驱CD5.显示器 红色无法显示(或许显卡坏了)6. Windows XP反正此机闲着没用,遂想装个Linux玩玩。因为是CD光驱和Fedora 10 DVD安装光盘,所以我做了个ISO镜像,从硬盘安装。安装参考 "从硬盘安装Fedora-9-i386-DVD", 你可以google这篇文章。从晚8点开始安装,安装到0点还在安装packages, 不等了,睡了一觉,大约早上2,3点钟看了一下,发觉才装最后一个kernel包。不过总算装好了。今天回 阅读全文

posted @ 2012-02-04 22:12 阳光VIP 阅读(107) 评论(0) 推荐(0) 编辑

摘要: ACE历时20年,耗费数千万美金,在中间件领域享有盛誉。更可贵的是,ACE彻底的开源,且没有任何限制条件,完全是共产主义的精神,让人钦佩。ACE的Wrapper Facade模式解决了夸平台的c++编程问题。虽然我们现在有标准C++,但是目前的C++标准库对于多线程、网络通信、并发处理、进程管理以及小内存分配、共享内存、内存映射文件等诸多实际运用中的问题没有支持。相信随着时间的推移,C++标准库会越来越多的关心我们程序员实际编程中的问题,但是现在,我需要ACE.ACE的文档在http://www.dre.vanderbilt.edu/Doxygen/Stable/ace/index.html, 阅读全文

posted @ 2012-02-04 22:11 阳光VIP 阅读(170) 评论(0) 推荐(0) 编辑

摘要: 内存映射文件多个操作系统平台都提供了内存映射文件,这是一个简单的将数据结构保存到文件中的机制。同时由于32位操作系统的进程虚拟内存最大只能4GB,用内存映射文件的方式就可以突破这个限制,可以用来打开超过4GB的大文件。而且,内存映射文件其实就是一种共享内存机制,进程间可以通过共享内存直接访问数据。ACE提供了ACE_MMAP_Memory_Pool类,该类代表了为内存映射文件分配内存的内存池。和ACE_Malloc模板类配合,我们就可以以平台无关的方式操纵内存映射文件了。比如:ACE_Malloc<ACE_MMAP_Memory_Pool,ACE_SYNCH_MUTEX> 。第二个 阅读全文

posted @ 2012-02-04 22:10 阳光VIP 阅读(310) 评论(0) 推荐(0) 编辑

摘要: 物价在节节攀升,CPI居高不下,股市损失惨重,房贷似大山压顶......除了提高我们微薄的收入以外,我们还应该从日常的点点滴滴做起,节约每一分Money。流水记账软件就是帮助你提高理财水平,分析你每月的收入和支出,帮助你节省不必要的开支。它使用简便,就像在普通便签本上记录一样简单,可以方便查看历史趋势,打印相应的财务报告。并且,它是一个纯绿色的免费软件,无须联网便能运行。下载 阅读全文

posted @ 2012-02-04 22:09 阳光VIP 阅读(281) 评论(2) 推荐(0) 编辑

摘要: 广州国际乒乓赛降下帷幕,最令人注目的男单决赛在王励勤和波尔间展开,最终波尔夺冠。从比赛内容看,很精彩,既有近台的短兵相接,前三板干净利落;又有中 远台飞毛腿导弹你来我往,多回合难分高下,无愧世界第一,第二的称号。总体评价:比正手,比中远台对拉,比力量王胜一筹,但比反手,比近台快攻,比灵活性 波尔胜出,可谓旗鼓相当,各有千秋!对我们业余选手,真是手心手背,鱼与熊掌,狠不能把所有精华集于自身! 到底你是喜欢波尔呢,还是更喜欢王励勤,我想各人的答案不会一样。我这儿想要论证的是:你应该学哪位? 不妨给出我自己的回答:如果你反手好,追求正反均衡,两面弧圈眼花缭乱的,你学波尔;如果你反手不强,突出正手.. 阅读全文

posted @ 2012-02-04 22:09 阳光VIP 阅读(235) 评论(0) 推荐(0) 编辑

摘要: 主要要注意的是smtp认证的问题。代码很简单,如下:调用代码:namespace EmailTest{ class Program { static void Main(string[] args) { try { SMTPEmailSender sender = new SMTPEmailSender("mail.longdayinfo.com", "upcodechina@longdayinfo.com", "12345"); sender.From = "upcodechina@longdayinfo.com" 阅读全文

posted @ 2012-02-04 22:08 阳光VIP 阅读(179) 评论(0) 推荐(0) 编辑

摘要: Linux下面使用emacs 编写java程序,而不使用eclipse、netbeans等IDE工具,给我一种很酷的感觉。其实最主要的要知道一些细节:1)jdk1.6版本后面运行程序类通常格式如下:java packageName.className并且运行这行命令的当前路径应该在packageName同名目录的外面2)如果两个类同属于一个package,先使用javac编译好一个类A,另一个依赖A的类B编译时用如下命令:javac -d . B.java我使用 了makefile来解决第二个编译问题:JFLAGS = -gJC = javac -d . .SUFFIXES: .java .c 阅读全文

posted @ 2012-02-04 22:07 阳光VIP 阅读(281) 评论(0) 推荐(0) 编辑

摘要: 作为万类之首的Object类,我们有必要详细全面的了解一下。Object类定义在Object.java文件,属于包java.lang。 Object类有一个私有方法private static native void registerNatives(). native是java语言的一个关键字.使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用.JDK的源代码中并不包含这些函数的实现体,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现 阅读全文

posted @ 2012-02-04 22:06 阳光VIP 阅读(150) 评论(0) 推荐(0) 编辑

摘要: 安装NetBeans 我的操作系统是Fedora7,操作系统自带Eclipse,但是由于缺少Java运行库,所以只能运行,不能调试。为了简单起见,我去Sun公司网站下载了NetBeans5.5.1(带JDK),文件名称为:jdk-6u2-nb-5_5_1-linux-ml.bin,大小为143072256 字节。 安装很简单,先执行chmod +xjdk-6u2-nb-5_5_1-linux-ml.bin,然后运行bin文件即可。会出现一个图形安装向导,跟着向导安装,很简单。 你可以在Applications->Programming下找到NetBeans的启动菜单,也可以执行下面的命令 阅读全文

posted @ 2012-02-04 22:06 阳光VIP 阅读(104) 评论(0) 推荐(0) 编辑

摘要: 构造函数是java类的最传统创建方式,除此之外,我们还可以选择经典的设计模式,经典的创建型设计模式包含了四种,factory,abstract factory,singleton和prototype。另外,在java中还有一种经常使用的模式---静态工厂方法(我们可以认为这是创建型模式的一种新的补充)。 什么是静态工厂方法?其实很简单,也就是类的设计者将构造函数设计为保护的或者私有的,而提供静态成员函数负责返回给客户已经创建好的对象。这样做有什么优点呢?1)首先引入了静态函数,增加了间接性,这样也就带来了灵活性,这一点和其他的创建型模式一样。设计者可在内部创建单例对象,也可以预先创建,以提高性 阅读全文

posted @ 2012-02-04 22:05 阳光VIP 阅读(88) 评论(0) 推荐(0) 编辑

摘要: 如果我们对预定义类型使用==或者!=,就是值比较;如果我们对自定义类型的两个变量(引用)使用==或者!=,就是引用比较,也就是只比较内存地址。我们也可以调用自定义类型的equals方法进行比较。由于所有的自定义类型都是从Object派生,而Object类已经实现了equals方法,而这种默认的实现实际上就是引用比较,如果我们的自定义类需要提供值比较的语义,就需要重写该函数,并且在文档中说明。因此,我们不能简单理解为equales就是值比较,在某些情况下默认继承而来的引用比较更加符合某些场合的应用。String类型的equals提供了值比较的语义,比如:String str1=new Strin 阅读全文

posted @ 2012-02-04 22:05 阳光VIP 阅读(427) 评论(0) 推荐(0) 编辑