- 浏览: 864231 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (280)
- java相关 (29)
- linux系统 (55)
- ipsec (0)
- ssl (3)
- 信息安全 (13)
- web相关 (35)
- windows (9)
- c,c++ (14)
- log4j (3)
- hibernate (8)
- sqlite (1)
- 程序人生 (2)
- js (2)
- 生活点滴 (3)
- 网络相关 (14)
- 问题积累 (15)
- 数据库相关 (27)
- 软件测试 (2)
- PKI相关 (2)
- 程序设计 (7)
- 犄角旮旯 (0)
- 杂七杂八 (0)
- 硬件相关 (14)
- 防火墙 (2)
- 电子商务 (2)
- 多媒体相关 (1)
- 内存管理 (4)
- 面向对象 (1)
- csp (1)
- 驱动开发 (3)
- 移动开发 (2)
- openssl多线程实例 (1)
最新评论
-
xiaoyao3857:
博主很有探索精神嘛,学习了
Linux主机名Hostname详解 -
hiskyrisa:
言简意赅,好文章。
Flex是什么 -
layznet:
犯了类似错误。使用的是derby数据库。driverClass ...
java.sql.SQLException: No suitable driver -
idision:
你好,文章有一句createSubjectKeyId(keyT ...
bouncycastle 产生证书 -
zheng12tian:
代码有全的不?只贴一部分,,,,
在LOG4J中把日志写入远程数据库
CJ是一个好东西
。
还是比较喜欢IBM的developerworks
的文档风格,讲述一个技术文档,先是简单描述一下相关的术语和技术背景,然后基本的思路是为什么要用它?怎么去用?最后会遇到什么问题(一般会指出它的不
足)?提供完整的实例,并详细描述测试环境,结尾提供参考文档。很好,很强大。希望我也能够按照这样的风格写技术类文档。但是有时候真的很懒。哎,天下
事,难而废者十之一,惰而废者十之九。言归正传:
什么是GCJ?
GCJ(
GNU Compiler for the Java Programming Language, GCJ
)是多元的,高效的,具有前瞻性的java编译器。它可以编译java源代码,将java字节码转换成本地机器代码。目前支持的java版本最高1.5,最新的1.6还不支持。
为什么要用GCJ?
速度不是唯一的理由。他强大的分析工具,作为服务器开发的利器。他产生于JVM蜗牛时代,但今天的JVM已经不可同日而语了。
那么在linux里面怎么用GCJ呢?
如果你的linux是ubuntu的话,那恭喜你,这个过程太easy了。
首先安装GCJ,默认是没有安装的。所以我们需要打开“新利得软件包管理器”,然后搜索GCJ,如下图所示:
然后在gcj上面右键选择“标记以便安装”,下来会提示相关的几个包,默认就行,应用即可。大约50多兆,下载完自动安装。倒杯水回来ok。在新开一个终
端窗口里面,敲入gcj,如果出现“gcj: 没有输入文件”。说明安装成功。用gcj -v 显示版本信息。我的显示是:
使用内建 specs。
从 /usr/lib/gcc/i486-linux-gnu/4.2.3/libgcj.spec 读取 specs
将 spec startfile 重命名为 startfileorig
将 spec lib 重命名为 liborig
目标:i486-linux-gnu
配置为:../src/configure -v --enable-languages=c,c++,java --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2
--enable-clocale=gnu --enable-java-awt=gtk --enable-gtk-cairo
--enable-plugin
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.2-1.5.0.0/jre
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libmudflap
--enable-targets=all --enable-checking=release --build=i486-linux-gnu
--host=i486-linux-gnu --target=i486-linux-gnu
线程模型:posix
gcc 版本 4.2.3 (Ubuntu 4.2.3-2ubuntu6)
OK,安装成功(ubuntu的却强大!)。
GCJ的使用
下面简单举几个例子,说明GCJ的使用。深入的功能俺也是正在学习。
1、用gcj生成可执行文件,eg:
gcj -o test --main=Test Test.java
-o 是生成可执行文件
--main 是指定main方法所在的类,一般是多个文件有连接的时候
Test.java是事先用vi编辑的java类。
这样就生成一个可执行的文件:test,但发现大小明显比class文件多了一倍多。
然后在命令提示符下执行./test ,结果跟java Test 一样
2、用gcj生成java字节码class
gcj -C Test.java
即可生成Test.class文件
再用javac编译一个,以便比较。用ghex(需要另外安装,一个linux下的十六进制编辑器)打开两个class文件比较,都是CAFEBABE开始,0002001C结尾。没有区别。
3、用gij执行java字节码
gij Test 或者 gij -verbose Test 效果跟java Test /java -verbose Test 效果一下,只是gij的包不一样,例如 gnu.java.security, gnu.java.net
4、垃圾回收器的分析工具
用gc-analyze分析,先需要生成内存堆栈的文件。可以用
gnu.gcj.util.GCInfo.enumerate(String namePrefix)这个方法,比如:
[code="example"]import gnu.gcj.util.*;
import java.util.*;
public class GCDumpTest
{
public static void main(String args[])
{
ArrayList l = new ArrayList(1000);
for (int i = 1; i TestDump001 和
TestDump001.bytes的两个文件。
然后执行:
gc-analyze -v TestDump001 但显示的信息太多,最好还是重定向到一个文件,然后打开慢慢研究。
gc-analyze -v TestDump001 >dump.txt
信息比较庞大,俺还没有看完呢。
linux中 jdk 的卸载和安装
一.jdk1.4卸载
由于redhat Enterprise 5 中自带安装了jdk1.4的,所以在安装jdk1.6前我把jdk1.4的卸了,步骤如下:
1.打开终端输入#rpm -qa | grep gcj
,其现实内容有:
java
-1.4.2-gci-compat.........
java
-1.4.2-gcj-compat-devel.....(具体忘了是什么了,反正有两个java
开头的文件)
2.卸载
#rpm -e --nodeps java
-1.4.2-gci...
(利用rpm -e --nodeps 命令删除上面查找的内容)
此时jdk1.4已被卸了。
二.jdk1.6安装
1. 从网站上下载jdk1.6包(jdk-6u10-linux
-i586-rpm.bin
),通过leapFTP上传到linux
系统的/var/ftp/pub目录下
2.在linux
中切换到 /var/ftp/pub目录下,修改jdk1.6的使用权限:#chmod u+x
jdk-6u10-linux
-i586-rpm.bin
3.解压并安装:#./
jdk-6u10-linux
-i586-rpm.bin (默认安装在/usr/java
中)
4.环境变量配置:
#vi /etc/profile
在该profile文件中添加:
JAVA_HOME=/usr/java
/jdk1.6.0_10
JRE_HOME=/usr/java
/jdk1.6.0_10/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib(注意:前面的.:
,linux
中的;号为:号)
export JAVA_HOME JRE_HOME PATH CLASSPATH
添加完毕保存退出
#source /etc/profile
#java
-version
显示 java
version "1.6.0_10" (jdk1.6安装成功)
卸载rpm版的jdk:
#rpm -qa|grep jdk
显示:jdk-1.6.0_10-fcs
卸载:#rpm -e --nodeps jdk-1.6.0_10-fcs
[code="example"]
。
还是比较喜欢IBM的developerworks
的文档风格,讲述一个技术文档,先是简单描述一下相关的术语和技术背景,然后基本的思路是为什么要用它?怎么去用?最后会遇到什么问题(一般会指出它的不
足)?提供完整的实例,并详细描述测试环境,结尾提供参考文档。很好,很强大。希望我也能够按照这样的风格写技术类文档。但是有时候真的很懒。哎,天下
事,难而废者十之一,惰而废者十之九。言归正传:
什么是GCJ?
GCJ(
GNU Compiler for the Java Programming Language, GCJ
)是多元的,高效的,具有前瞻性的java编译器。它可以编译java源代码,将java字节码转换成本地机器代码。目前支持的java版本最高1.5,最新的1.6还不支持。
为什么要用GCJ?
速度不是唯一的理由。他强大的分析工具,作为服务器开发的利器。他产生于JVM蜗牛时代,但今天的JVM已经不可同日而语了。
那么在linux里面怎么用GCJ呢?
如果你的linux是ubuntu的话,那恭喜你,这个过程太easy了。
首先安装GCJ,默认是没有安装的。所以我们需要打开“新利得软件包管理器”,然后搜索GCJ,如下图所示:
然后在gcj上面右键选择“标记以便安装”,下来会提示相关的几个包,默认就行,应用即可。大约50多兆,下载完自动安装。倒杯水回来ok。在新开一个终
端窗口里面,敲入gcj,如果出现“gcj: 没有输入文件”。说明安装成功。用gcj -v 显示版本信息。我的显示是:
使用内建 specs。
从 /usr/lib/gcc/i486-linux-gnu/4.2.3/libgcj.spec 读取 specs
将 spec startfile 重命名为 startfileorig
将 spec lib 重命名为 liborig
目标:i486-linux-gnu
配置为:../src/configure -v --enable-languages=c,c++,java --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2
--enable-clocale=gnu --enable-java-awt=gtk --enable-gtk-cairo
--enable-plugin
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.2-1.5.0.0/jre
--with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libmudflap
--enable-targets=all --enable-checking=release --build=i486-linux-gnu
--host=i486-linux-gnu --target=i486-linux-gnu
线程模型:posix
gcc 版本 4.2.3 (Ubuntu 4.2.3-2ubuntu6)
OK,安装成功(ubuntu的却强大!)。
GCJ的使用
下面简单举几个例子,说明GCJ的使用。深入的功能俺也是正在学习。
1、用gcj生成可执行文件,eg:
gcj -o test --main=Test Test.java
-o 是生成可执行文件
--main 是指定main方法所在的类,一般是多个文件有连接的时候
Test.java是事先用vi编辑的java类。
这样就生成一个可执行的文件:test,但发现大小明显比class文件多了一倍多。
然后在命令提示符下执行./test ,结果跟java Test 一样
2、用gcj生成java字节码class
gcj -C Test.java
即可生成Test.class文件
再用javac编译一个,以便比较。用ghex(需要另外安装,一个linux下的十六进制编辑器)打开两个class文件比较,都是CAFEBABE开始,0002001C结尾。没有区别。
3、用gij执行java字节码
gij Test 或者 gij -verbose Test 效果跟java Test /java -verbose Test 效果一下,只是gij的包不一样,例如 gnu.java.security, gnu.java.net
4、垃圾回收器的分析工具
用gc-analyze分析,先需要生成内存堆栈的文件。可以用
gnu.gcj.util.GCInfo.enumerate(String namePrefix)这个方法,比如:
[code="example"]import gnu.gcj.util.*;
import java.util.*;
public class GCDumpTest
{
public static void main(String args[])
{
ArrayList l = new ArrayList(1000);
for (int i = 1; i TestDump001 和
TestDump001.bytes的两个文件。
然后执行:
gc-analyze -v TestDump001 但显示的信息太多,最好还是重定向到一个文件,然后打开慢慢研究。
gc-analyze -v TestDump001 >dump.txt
信息比较庞大,俺还没有看完呢。
linux中 jdk 的卸载和安装
一.jdk1.4卸载
由于redhat Enterprise 5 中自带安装了jdk1.4的,所以在安装jdk1.6前我把jdk1.4的卸了,步骤如下:
1.打开终端输入#rpm -qa | grep gcj
,其现实内容有:
java
-1.4.2-gci-compat.........
java
-1.4.2-gcj-compat-devel.....(具体忘了是什么了,反正有两个java
开头的文件)
2.卸载
#rpm -e --nodeps java
-1.4.2-gci...
(利用rpm -e --nodeps 命令删除上面查找的内容)
此时jdk1.4已被卸了。
二.jdk1.6安装
1. 从网站上下载jdk1.6包(jdk-6u10-linux
-i586-rpm.bin
),通过leapFTP上传到linux
系统的/var/ftp/pub目录下
2.在linux
中切换到 /var/ftp/pub目录下,修改jdk1.6的使用权限:#chmod u+x
jdk-6u10-linux
-i586-rpm.bin
3.解压并安装:#./
jdk-6u10-linux
-i586-rpm.bin (默认安装在/usr/java
中)
4.环境变量配置:
#vi /etc/profile
在该profile文件中添加:
JAVA_HOME=/usr/java
/jdk1.6.0_10
JRE_HOME=/usr/java
/jdk1.6.0_10/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/jt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib(注意:前面的.:
,linux
中的;号为:号)
export JAVA_HOME JRE_HOME PATH CLASSPATH
添加完毕保存退出
#source /etc/profile
#java
-version
显示 java
version "1.6.0_10" (jdk1.6安装成功)
卸载rpm版的jdk:
#rpm -qa|grep jdk
显示:jdk-1.6.0_10-fcs
卸载:#rpm -e --nodeps jdk-1.6.0_10-fcs
[code="example"]
发表评论
-
关于Bad version number in .class file的问题
2010-11-15 14:20 1000关于Bad version number in .class ... -
一个获取文件crc32校验码的简洁的java类
2010-05-12 19:48 3273从jdk1.4开始,java核心包里已经提供对crc计算的支持 ... -
Windows下Apache与Tomcat的整合
2010-05-12 13:52 1077为了完成这个任务,在 ... -
SSL双向认证java实现
2010-05-09 11:35 1797本文通过模拟场景,介 ... -
java.util.ResourceBundle 使用详解
2010-04-28 19:39 854一、认识国际化资源文件 这个类提供软件国际化的捷 ... -
基于JAAS实现登录
2010-04-25 22:11 1261JAAS:Java Authentication and ... -
什么是JAAS,以及灵活的Java安全机制
2010-04-25 22:05 1890今天在论坛上看到JASS,不清楚是什么呢,网上找了一下,受益良 ... -
Java插件技术
2010-04-25 21:31 21471.Java插件技术 Java插件技术(Java Plu ... -
java RMI的例子(转)
2010-04-25 21:11 950参考别人的程序后写了个自己的RMI 程序RMI ,远程方法 ... -
Java安全通信、数字证书及应用实践(转)
2010-04-21 21:05 1674摘要 : 在本文 ... -
Eclips 内存溢出
2010-04-13 16:26 1041在Eclipse 根目录下找到eclipse .ini ... -
Eclipse 启动不起来异常:JVM terminated. Exit code=-1
2010-04-11 10:09 7460Eclipse 启动不起来,出现以下错误: ... -
Java程序员需要了解的几个开源协议介绍
2009-12-21 21:32 1119介绍几个比较常见的开 ... -
apache lucene介绍
2009-12-15 09:16 1949什么是lucene Apache Lucene是一个开放源程序 ... -
Java基础:Java中堆内存与栈内存分配浅析
2009-08-11 20:19 1348Java 把内存划分成两种:一种是栈内存,另一种是堆内存 ... -
对synchronized(this)的一些理解
2009-07-23 10:21 1175一、当两个并发线程访问同一个对象object中的这个synch ... -
Linux下JNI调用
2009-07-09 12:43 1460整个实现过程可以分为五步来完成: 1)写一个声明了nativ ... -
如何在Java中执行其它程序
2009-07-09 12:42 2307在编写Java程序时,有时 ... -
linux下jdk的安装与卸载
2009-07-06 10:46 2105下面是卸载步骤: 用ro ... -
JNI技术小试
2009-06-23 14:28 1232目前 java 与 dll 交互的技术主要有 ...
相关推荐
因此,BD09坐标比GCJ02更适用于百度地图相关应用。 **Shp文件**,是Esri公司开发的地理空间数据存储格式,是GIS领域中最常见的矢量数据格式之一。它包含几何对象(如点、线、多边形)的位置信息以及相关的属性数据...
龙书front代码的gcj编译方法及相关文档,通过gcj将front代码编译为本地代码。
在IT行业中,尤其是在地理信息系统(GIS)开发领域,坐标转换是一项重要的任务。Leaflet是一个流行的JavaScript库,用于创建交互式的地图应用。...同时,确保遵循相关的法律法规,特别是在处理敏感的地理位置信息时。
js实现坐标系之间的转换,包括常用wgs84,GCj02,BD09等相关
总的来说,了解并掌握不同坐标系之间的转换,对于从事GIS或定位服务相关的开发工作至关重要。Go语言提供的强大功能和简洁语法,使得在实现这些转换时更加高效和便捷。通过对`coordtransform-master`项目的学习,...
### 钢筋GCJ10.0学员练习册知识点详解 #### 一、GGJ10.0概述 **1. 行业现状:** - 当前,设计领域经历了重大变革,超过90%的工程设计采用了平面整体标注法(简称平法)。这一改变促使钢筋工程量的计算方式发生了...
这个工具模块专注于处理中国特有的坐标系统,包括百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)以及国际通用的WGS84坐标系。理解这些坐标系之间的转换对于开发地图应用、定位服务或是地理数据分析至关重要。 ...
这篇文章将详细探讨基于给定博客中的源代码实现的WGS84到GCJ02的转换方法,并以此为出发点,深入讲解相关知识点。 首先,WGS84(World Geodetic System 1984)是国际上广泛使用的地心地固坐标系,它的原点位于地球...
中国的地理坐标系统主要涉及两个重要的标准,即“中国地球”所使用的WGS-84(World Geodetic System 1984)和“火星”代表的GCJ-02(也称为GPS加密坐标或国家3度带坐标)。这两个坐标系统在实际应用中有显著的差异,...
3. **BD09到GCJ02**:百度坐标是在GCJ02的基础上进行二次加密,转换时需要先将BD09坐标还原为GCJ02坐标,然后再将其转换成WGS84,最后再从WGS84转换回GCJ02。 4. **GCJ02到BD09**:这个过程与BD09到GCJ02相反,需要...
在百度地图API中,所有定位和地图相关的服务都基于此坐标系。 **GCJ-02坐标系统**,又称火星坐标系,是中国国家测绘局为了国家安全考虑,对WGS84进行加密处理后的坐标系。它同样存在偏移,使得原始的经纬度信息无法...
【标题】"matlab中国地球(WGS-84)与火星(GCJ-02)之间的传输坐标.zip" 涉及的是地球坐标系统与火星坐标系统之间的转换问题。在地理信息系统(GIS)中,坐标系统是至关重要的,用于定位地球上任何一点的位置。WGS-84...
这可以通过使用`rpm -qa | grep gcj`命令来完成,它将列出所有与gcj相关的已安装包。例如,显示结果可能包括`java-1.4.2-gcj-compat`和`java-1.4.2-gcj-compat-devel`等。 #### 2. 卸载现有Java组件 如果检测到不...
做过地图相关开发的同学肯定会遇到这样一个问题:同样的经纬度坐标,在百度地图和高德地图上位置不一样。 gcoord主要解决了两个问题 * 能将坐标在不同坐标系下相互转换 * 能够处理GeoJSON
1. **bin**:这个目录通常包含了可执行文件,如gcj编译器本身和其他相关工具,可以直接在命令行中调用。 2. **include**:包含了头文件,这些头文件提供了API接口供C或C++程序使用,以与Java代码进行交互,例如JNI...
如果还有其他Java版本存在,可使用`rpm -qa | grep gcj`查找并卸载与gcj相关的Java包,如`libgcj`和`java-1.5.0-gcj`。 接下来,开始安装Oracle JDK。首先,创建一个新的安装目录,比如`/usr/java`,然后将下载的...
下面我们将深入探讨与GCJ和Python编程相关的知识点。 一、谷歌代码果酱(Google Code Jam) 1. 比赛流程:GCJ通常分为资格赛、预赛、半决赛和决赛几个阶段。每场比赛会提供多个问题,参赛者需要在限定时间内提交...
这个游戏在国际计算机编程竞赛中也常被用作题目,如"gcj"(Google Code Jam)等。本文将深入探讨华容道的游戏规则、解题策略以及相关的算法实现。 一、游戏规则 华容道棋盘通常为5x5或更大的正方形网格,棋盘上...
Qt作为一个跨平台的C++图形用户界面应用程序开发框架,可以用于构建多种应用,包括地图相关的项目。本示例“使用Qt编写的将WGS84、高德GCJ-02、百度BD-09不同坐标系间的转换Demo”主要关注了如何在Qt环境中处理不同...
在Redhat 5.4 64位系统上,通过`rpm -qa|grep gcj`列出所有gcj相关的Java包,然后使用`rpm -e --nodeps --allmatches`命令进行卸载。接下来,安装JDK 1.6.0_18,通过赋予可执行权限并运行安装文件完成安装。配置环境...