2008年08月31日
今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。 结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。 下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。 ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符阅读全文>
发表于 @ 2008年08月31日 14:05:00|评论(loading...)|编辑|收藏
本文为在 32 位 Windows 平台上实现 Java 本地方法提供了实用的示例、步骤和准则。这些示例包括传递和返回常用的数据类型。 本文中的示例使用 Sun Microsystems 公司创建的 Java DevelopmentKit (JDK) 版本 1.1.6 和 Java本地接口 (JNI) 规范。 用 C 语言编写的本地代码是用 MicrosoftVisual C++ 编译器编译生成的。 简介 本文提供调用本地 C 代码的 Java 代码示例,包括传递和返回某些常用的数据类型。本地方法包含在特定于平台的可执行文件中。就本文中的示例而言,本地方法包含在 Windows 32 位动态链接库 (DLL) 中。 不过我要提醒您,对 Java 外部的调用通常不能移植到其他平台上,在 applet 中还可能引发安全异常。实现本地代码将使您的 Java 应用程序无法通过 100% 纯 Java 测试。但是,如果必须执行本地调用,则要考虑几个准则: 将您的所有本地方法都封装在单个类中,这个类调用单个 DLL。对于每种目标操作系统,都可以用特定于适当平台的版本替换这个 DLL。这样就阅读全文>
发表于 @ 2008年08月31日 11:26:00|评论(loading...)|编辑|收藏
如何监控GC及内存问题解决方案概述 内存问题错综复杂,本人水平也有限,浅薄之见仅供参考。 一、GC监控 GC日志记录了内存使用和回收状态,出现内存故障时,可作为分析排查手段。 1. 启用GC监控的方法:增加java启动参数-verbose:gc,输出信息的样例: GC 135: total final references 4390; cleared final references 8. GC 135: total phantom references 0; cleared phantom references 0. GC 135: total old soft references 0; cleared old soft references 0. GC 135: total JNI global weak references 0; cleared JNI global weak references 0. GC 136: starting collection, maximum allocation reached. GC 136: live objects 10810阅读全文>
发表于 @ 2008年08月31日 10:58:00|评论(loading...)|编辑|收藏
如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章: 利用VC++6.0实现JNI的最简单的例子 JNI入门教程之HelloWorld篇 SUN JNI Tutorial 这些资料的例子中,大多数只是输入一些简单的参数,获取没有参数。而在实际的使用过程中,往往需要对参数进行处理转换。才可以被C/C++程序识别。比如我们在C++中有一个结构(Struct)DiskInfo ,需要传递一个类似于DiskInfo *pDiskInfo的参数,类似于在C++这样参数如何传递到Java中呢?下面我们就来讨论C++到Java中方法的一些常见参数的转换: 定义Native Java类: 如果你习惯了使用JNI,你就不会觉得它难了。既然本地方法是由其他语言实现的,它们在Java中没有函数体。但是,所有本地代码必须用本地关键词声明,成为Java类的成员。假设我们在C++中有这么一个结构,它用来描述硬盘信息: //硬盘信息 struct { char name[256]; int serial阅读全文>
发表于 @ 2008年08月31日 10:41:00|评论(loading...)|编辑|收藏
如何用JNI技术提高Java的性能详解 阻碍Java获得广泛应用的一个主要因素是Java程序的运行效率。Java是介于解释型和编译型之间的一种语言,同样的程序,如果用编译型语言C来实现,其运行速度一般要比Java快一倍以上。Java具有平台无关性,这使人们在开发企业级应用的时候总是把它作为主要候选方案之一,但是性能方面的因素又大大削弱了它的竞争力。为此,提高Java的性能就显得十分重要。 问题的提出 Sun公司及Java的支持者们为提高Java的运行速度已经做出了许多努力,其中大多数集中在程序设计的方法和模式选择方面。由于算法和设计模式的优化是通用的,对Java有效的优化算法和设计模式,对其他编译语言也基本同样适用,因此不能从根本上改变Java程序与编译型语言在执行效率方面的差异。 JIT(Just In Time,及时编译)技术是个比较好的思想。它的基本原理是:首先通过Java编译器把Java源代码编译成平台无关的二进制字节码。然后在Java程序真正执行之前,系统通过JIT编译器把Java的字节码编译为本地化机器码。最后,系统执行本地化机器码,节省了对字节码进行解释的时间。这阅读全文>
发表于 @ 2008年08月31日 09:42:00|评论(loading...)|编辑|收藏
2008年08月28日
一.配置文件
Struts下有两个关键的配置文件:
1. web.xml
该配置文件负责整个BS结构解决方案的基本配置参数。样例如下:
阅读全文>
发表于 @ 2008年08月28日 19:44:00|评论(loading...)|编辑|收藏
2008年07月19日
Linux驱动开发要点
做LINUX驱动开发,应该具备以下几样知识:
1.首先读懂<<LINUX内核完全注释>>一书
2.再读<<LINUX设备驱动程序>>一书
3.再读<<LINUX操作系统设计与实现>>一书
4.英语水平要过关,至少能看懂芯片资料
5.在网上下载LINUX设备驱动程序一书的源代码,试着编译,若想要编译通过,首先得下载LINUX内核源代码,因为写驱动的时候需要引用内核源码时的变量,函数
以上都假设你目前已经能够在LINUX上做应用开发的前提下,而且在公司有人能够偶尔指点你的情况
步骤:
1. 学会写简单的makefil阅读全文>
发表于 @ 2008年07月19日 19:45:00|评论(loading...)|编辑|收藏
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)阅读全文>
发表于 @ 2008年07月19日 17:18:00|评论(loading...)|编辑|收藏
2008年06月19日
不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,阅读全文>
发表于 @ 2008年06月19日 23:12:00|评论(loading...)|编辑|收藏