学习JAVA中...
学习java已达一周。
促使我打算学习java的原因是今年的一个项目。今年用C++做了一个很简单的分布式non-relational key-value store. 功能仿照Dynamo,但是实现要比它简单得多,很多比如容错等模块都没有加上去。但即便如此,用C++来开发这么一个东西仍然不是一件让人愉快的事。举个例子,为了用event driven架构,一开始打算使用epoll,但是epoll太底层,后来就找到了libevent,因为是网络应用,自然就得用linux下的网络编程,然后C++不支持序列化,所以又找了半天才找到protocolbuf,所以C++的第一个问题就是它的标准库太烂了。十年前就是这个样子,现在还是这个样子,到今天都没有和线程,锁或者序列化有关的内容,在项目中要实现这些就要另外的去找库,这其实是个痛苦的过程,因为不太好确定说到底哪个库最适合。
更郁闷的一个问题则是对内存的维护,搭建一个robust的系统就要求要对所有可能的错误都要有对应的措施,比如一个失败的链接就要去释放它所拥有的所有资源,所以首先要找到它们,然后delete掉。这真不是件轻松的活。
所以,不是说用C++做不了这件事。而是如果要用C++,那么它的要求会很高。首先,它要求整个团队的编程水平都要足够的好(事实上这样的人都不好找)。如果你像google一样有那么多天才的程序员,那么C++当然是首选,但是,如果你找不到这么多优秀的人,那用C++只会适得其反。最后得到的程序一定堆满了bug。其次,要花大量的时间放在找库和学习库上。没办法,谁让它的标准库是那么的陈旧呢。
之所以想换java,是因为找到的很多开源的类似系统都是用java或者erlang做的。erlang当然好,但还是小众了一点,所以就打算试试java。经过一周的学习,我有了两个基本认识,首先,它的语法要比C++简单多了,说明它比C++更容易操控。其次,它的标准库很强大。所以,用java应该会让你的项目开发周期缩短很多,并且bug会更少。当然,效率可能会慢一些。但是,对于大部分的项目,应该都是可忍受的范围内。
一点小感受,等我多学几周,也许会理解得更深刻些。
相关文档:
一:准备 www.savarese.org download
1. rocksaw-1.0.0-src.tar.gz
2. vserv-tcpip-0.9.2-src.tar.gz
二:编译源文件得到jar包 使用Ant
1. build vserv-tcpip-0.9.2-src
在vserv-tcpip-0.9.2目录下面建一个tests目录,然后在cmd窗口下进入 ......
本文来自:http://blog.csdn.net/ruyanhai/archive/2007/11/07/1871663.aspx
◆ 一般情况下,我们都使用相对路径来获取资源,这样的灵活性比较大.
比如当前类为com/bbebfe/Test.class
而图像资源比如sample.gif应该放置在com/bbebfe/sample.gif
而如果这些图像资源放置在icons目录下,则应该是com/bbebfe/icons/sample.gif ......
一. stream
代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Out stream)都包括两种类型:
1 以字节为导向的stream
以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型:
Input s ......
写了个简单的测试代码,测试了JAVA的时间更新单元,发现currentTimeMillis的更新周期大约是15或16ms,所以精度也就在15ms-16ms,低于15ms的时间是无法测量出来的。而nanoTime的更新周期大约在800-1200纳秒左右,因此低于 800ns的时间无法测量出来。代码如下:
public class JavaTimeWinTest
{
public static void main ......