Good good study, day day up

aleung的学习笔记, aleung的idea

http://www.zaval.org/ 这个网站有好几个java开发辅助工具,library. 包括了:

  • Java Resource Editor: 用于i18n/l10n的翻译
  • Light-Weight Visual Components Library (LwVCL): 一组基于AWT的可视控件, 估计目标是可以移植到PDA等小型设备上
  • Proxy Suite: an easy-to-use solution that allows monitoring TCP-based protocols, such as HTTP, NNTP and others. It is extremely useful in software development and can be used as a debug tool.
  • 轻型数据库工具
  • 其他的一些东西, 如Java Charts Package等, 只有介绍没有下载
阅读全文 »

SWT(in Eclipse)与Swing之争, 似乎争议注意在这几方面:

  • SWT是否比Swing更快? SWT使用OS native构件, 理论上更快. 但实际比较如何, 争议很大.
  • SWT与Swing比较, 是否更符合平台传统外观? SWT使用OS native构件,而不是象Swing一样重新写代码模拟出来. Swing支持者说用Look&Feel灵活, 也可以做得不错.
  • Swing的结构过于复杂. Swing的事件模型设计得不好. 但是swing扩展性强.
  • Swing采用JVM的垃圾收集来回收资源, SWT提供可控的资源销毁而不采用垃圾收集.

这个Java英文讨论组, http://www.javalobby.org , 内容还可以, search功能也比较好用.
看老外的论坛也是老骂架的:)

阅读全文 »

想写个GPS有关的软件,网上找到一些相关的项目:

  • Java framework for GPS http://www.aasted.org/gps/
    这个项目的目标是为各种应用程序加入GPS功能提供framework. 目前提供的是与Garmin GPS通讯的功能.
  • Chaeron GPS library http://www.chaeron.com/gps.html
    类似的项目,也是作为支持库,但功能更强/完善. 支持多种平台, 包括多种PDA. 而且这看来是一个active的项目, 由一个公司支持.
  • JavaGPS http://javagps.sourceforge.net/
    这个项目的范围似乎比前两个窄一些, 局限于从GPS中取得当前位置数据. 从代码看来,设计也不如前两个项目规范。

但是,这些项目看来都是只支持从GPS取数据,而不支持传送数据给GPS。

  • EPS http://eps.sourceforge.net/
    这是一个小应用程序,能够下载GPS数据并显示。这个程序能与Garmin GPS通讯,有上传/下载功能, 不过代码风格很差。
阅读全文 »

Java程序的本地化,做法都是在程序中不直接写死字符串,而是通过ResourceBoundle的getString()方法,在本地语言的properties文件中读取出翻译后的字串。
对于已经开发好的程序,找出源代码中写死的字符串工作相当繁琐,Eclipse有这方面的辅助工具。
选择文件,右键菜单 source->Extenalize Strings 打开工具,能够找出源文件中的所有字符串,选择那些需要翻译,自动替换并生成properties文件。

阅读全文 »

Java swing编程,更改了一个JPanel的内部components后,需要改变一下窗口大小,新内容才能显示出来。
解决方法:调用panel.validate()。
对于container,添加或者改变了对象后,需要调用validate()才能重新布局并显示。

阅读全文 »

原来MySQL是不会理会字段的NOT NULL标记的!
按照MySQL manual中1.8.5.2节的说法: 当插入的字段的值不符号要求的时候, 不会出错, 而是用一个最接近的”合理”值来替代. 对于NOT NULL的varchar字段, 替换的值是空字符串’’. 这不是等于没有设定NOT NULL吗? 真是莫名其妙.
只好在程序里面来控制了

阅读全文 »

字符编码问题一直都是令人头痛,查阅资料,写下了《java 字符转换问题的学习笔记》。

什么是字节流与字符流的转换? 什么时候会做转换?

字符就是char类型, 是双字节的, 用unicode, 一个char就是实际上的一个字符;字节就是byte类型, 是单字节的,实际的字符串根据编码不同,用单字节或者双字节来表示。
常用的String类型核心就是char[],String.length()就是char[]数组的大小,因此当encoding没有转换错误时,String长度是字符的个数,不管是中文还是英文。做字符处理的时候也从来不会出现截断半个字符的问题。
Java内部都是用char的,但是很多时候做输入输出就要用byte stream,例如文件、数据库、网络。
当数据要从char变为byte,或者byte变成char时,就要做转换。
同样的内容,用不同的编码方式(encoding),byte stream是不同的,转换的时候需要指定使用的encoding。
JVM的file.encoding属性确定了JVM的缺省的编码/解码方式:从而影响应用中所有字节流==>字符流的解码方式 字符流==>字节流的编码方式。在不同OS平台上,这是由locale决定的,缺省encoding在中文平台为GBK,英文平台为8859_1。

Java I/O

Reader和Writer核心是char,InputStream和OutputStream核心是byte。
专门有bridge类做Reader/Writer与InputStream/OutputStream的转换:InputStreamReader/OutputStreamWriter。

阅读全文 »

LANDSAT是美国陆地探测卫星系统。从1972年开始发射第一颗卫星LANDSAT 1,到目前最新的LANDSAT 7。

LANDSAT 7 卫星于99年发射,装备有Enhanced Thematic Mapper Plus(ETM+)设备,ETM+被动感应地表反射的太阳辐射和散发的热辐射,有8个波段的感应器,覆盖了从红外到可见光的不同波长范围。

ETM+比起在LANDSAT 4、5上面装备的Thematic Mapper(TM)设备在红外波段的分辨率更高,因此有更高的准确性。

LANDSAT 7 的一些总体数据:

  • 7个光谱波段和一个全色波段
  • 观察宽度达185km
  • 15、30、60、80米精度
  • 离地705km太阳同步轨道
  • 16天运行周期
  • 覆盖范围为南北纬81度之间区域
阅读全文 »