- 博客(51)
- 收藏
- 关注
原创 C语言解释器Java版-4-内存值转化
4 内存值的转化本节内存值的转化主要指的是:在实现java版c语言解释器时,将java数据值转化为c语言类型长度的字节数组值;将c语言类型长度的字节数组值转化为java数据值。4.1 Java->Cpublic class ConvertJavaData2CBytes { public static byte[] convertToBytes(short value, int
2016-02-04 15:29:15
514
原创 C语言解释器Java版-3-内存值管理
3 内存值管理本文描述的内存值管理主要是指:解释器的内存值如何表示,如何读取和存放。事实上,如果用值的类型去存储内存值,是很难做到一个统一内存值模型的。 复杂的方法如JCUTE、CRest的实现(符合执行框架,和解释器有类似之处),将内存值模型表示为一个结构体或者类,每一个值实例只在 结构体的一个域或者类中的一个成员变量有效,其他的均为冗余数据。这样做的问题是显而易见的,冗余数据太多,对每一个内存
2015-12-12 09:18:14
469
原创 CheckboxTreeviewer选中状态问题
在使用JFace的CheckboxTreeViewer做开发时,如果遇到如下问题:check状态点击出现问题,check A却让B的状态check了置灰(setGrayed)某个元素,元素状态并没有置灰,而改成了checked选中某个元素,在selection linstener中监听到的选中元素却不是选中的元素。。。。如果遇到上述一系列问题(或者其他比较反常的问题),那很有可能你的问题原
2015-12-03 17:10:40
896
原创 C语言解释器Java版-1-内存分配
1 内存分配基本了解了内存模型后,接下来考虑在实现解释器时如何进行内存分配,即怎样将每个内存区进行数据分配和释放。 在进行具体内存分配前,需要定义输入接口:被解释的源程序 file.c 和入口函数 func,然后根据输入生成对应的AST、控制流程图和符号表。有了这些原始数据后,开始进行内存分配。1.1 全局数据分配这里的全局数据包括如下几类,每一类的分配都不尽相同。主要操作的内存区是代码段区和数据
2015-11-29 15:48:02
539
转载 Linux压缩和解压缩命令
以下内容转自:http://www.php100.com/html/webkaifa/Linux/2009/1213/3652.htmltar 命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连
2015-11-15 21:56:41
378
原创 org.eclipse.equinox.internal.p2.engine.phases.CheckTrust phase问题
由于装了两个不同版本的CDT,然后打算卸掉一个,分不开版本,就直接在plugin和feature中将所有org.eclipse.cdt开头的包删掉了。重启Eclipse安装时出现org.eclipse.equinox.internal.p2.engine.phases.CheckTrust phase错误。 出现错误的原因是 Eclipse的更新管理P2出错了。p2有它的一个
2015-11-15 21:53:05
5858
1
原创 在Ubuntu上,使用SWT嵌入AWT/SWING代码导致Eclipse崩溃问题
配置:Ubuntu 13.04 + Eclipse4.3 + JRE 7现象:打开一个内嵌AWT/SWING代码的Eclipse 视图,Eclipse直接挂掉原因:AWT/SWING和SWT都在访问GTK时都使用了锁去保护自己的线程。AWT使用的GTK的锁,但是SWT使用的自己的锁。在使用SWT访问AWT时,就会出错。解决办法:在使用SWT访问AWT的代码中将以下代码:
2015-11-15 21:49:49
536
原创 eclipse编辑器生命周期事件监听
在做eclipse的编辑器开发时,可能会需要对编辑器的生命周期中的某个过程进行监听,该监听事件为org.eclipse.ui.IPartListener(2):public interface IPartListener { public void partActivated(IWorkbenchPart part); public void partBroughtToTop(
2015-11-15 21:47:17
1024
原创 SWT获取windows系统窗口颜色
很多人在使用电脑时都会将系统窗口的颜色修改为护眼色(85、95、205),在设计软件的界面背景时就需要考虑到背景颜色是根据系统的窗口颜色来决定的。 在使用AWT时,可以通过java.awt.SystemColor.window来获取windows系统窗口颜色。使用SWT时,如果使用Display.getSystemColor(id)是无法获得系统窗口颜色的。不过通过Display
2015-11-15 21:45:45
840
翻译 Eclipse Action与Command的区别
eclipse的action和command都能够执行一段确定的代码。通过一个工具栏上的图标、菜单项都可以触发执行。Action框架已经被验证过了,集成的非常紧密,而且很容易实现。但是为什么要废弃action改成command呢?Actions Actions主要关注的是表现形式,而且所有代码都在action中。尽管有些代码也分布在action代理中,但是本质上还是act
2015-11-15 21:42:07
1303
原创 InstallShield修改环境变量后不能立即生效的问题
创建一个InstallScript脚本的InstallShield安装程序,在脚本代码中更新环境变量,更新后发现注册表和计算机->属性->高级->环境变量中的变量值都更新了,但是使用命令行(WIN+R,CMD)始终获取不到设置的环境变量。 出现这个问题的原因是脚本代码中更新环境变量时没有给windows系统发送更新的通知事件。虽然网上有很多该问题的解决办法,但是我做了很多遍都不正
2015-11-15 21:38:22
1078
原创 java 对象序列化使用
java序列化的使用很简单的用法就是,在类定义时实现java.io.serializable即可。扩展这个接口不需要实现它的任何方法,Java会自动序列化。需要注意的,被标为transient和static的属性是不会被java自动序列化的。 在面对比较复杂的对象时,比如存在双向链接关系的对象时,如果实现该接口,java在序列化时会栈溢出,如果对象比较大,会出现堆溢出。那么这时候
2015-11-15 21:30:07
337
原创 Java判断两个路径对应的文件是否相同
今天遇到一个bug,查了一个小时才发现是文件路径比较出了问题: 比如有两个路径:D:\dir\..\a.txt和D:\a.txt。这两个路径写法虽然不同,但是很容易知道这两个路径指向的是同一个文件。如果我们使用Java的File去判断两个路径是否相同,判断如下:File f1 = new File("D:\\dir\\..\\a.txt");File f2 = new Fi
2015-11-15 21:26:30
2561
原创 离线使用tycho对eclipse RCP打包导出
tycho,是eclipse的一个孵化项目,是对maven的扩展,用于对eclipse 插件项目进行管理和构建。 关于tycho的解释和作用可以参考链接: http://blog.csdn.net/qinjienj/article/details/7908919。而且,相信能够用到tycho的GGMM们,应该还是能看得懂http://www.vogella.com/tutorials/Ecl
2015-11-04 08:42:50
1190
1
原创 使用EXE4J自动打包可运行jar文件
Eclipse提供了两种打包jar包的方式:jar文件和可运行jar文件(导出-->Java 菜单中)。这两者的区别在于,导出的jar文件前者不可以直接运行,后者(可运行jar文件)可直接运行。Jar文件之所以能直接运行,是因为jar文件中的META-INFO/MANIFEST.MF中配置了MAIN-CLASS。在Eclipse中导出jar文件时,如果用户选择已有的清单文件(MANIFEST.MF
2015-11-04 08:42:47
1097
原创 ubuntu13.4安装openssh-server
在ubuntu13.4上,不知道为什么使用sudo apt-get install openssh-server一直不能使用。找了很多资料,这篇文章(http://my.oschina.net/u/734592/blog/135045)给的方法可用,但文章中所给的地址无法下载openssh-server,而且使用命令行执行也不正常。最后在如下网址中http://www.filewatcher.co
2015-11-04 08:42:45
422
原创 HashMap.values().addAll()异常
问题:在使用一个Collection.addAll()方法时报告UnsupportedOperationException。追溯原因发现该collection是来自于hashMap.values()。分析原因:通过查看源代码,发现hashMap.values()实现如下: //HashMap.java public Collection values() { Collec
2015-11-04 08:42:42
715
原创 eclipse RCP界面从3.x切换到e4
由于eclipse e4做了很好的兼容性,使用3.x的技术开发的界面也可以以e4的风格显示。在实际切换过程中,可能会出现一些问题导致不能成功切换。本文只是总结了切换过程中需要注意的一些问题,通过确定这些问题,可能保证成功切换。确保启动org.eclipse.e4.ui.css.swt.theme;其他需要确保启动的插件包括org.eclipse.platform、org.eclipse.runti
2015-11-04 08:42:39
1555
原创 eclipse进度条从后台还原到前台
Eclipse在运行长时间任务时一般会有进度条提示,如下所示:650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5A/60/wKiom1T6-UjzQ5UlAAGiCqBQVfE270.jpg" title="res_otherjobs.png" alt="wKiom1T6-UjzQ5UlAAGiCqBQVfE270.jpg" />
2015-11-04 08:42:37
3140
原创 【java解惑】本地变量声明只能放在语句块中
如下所示代码:public class Example055 { private static long numCreated = 0; public Example055() { numCreated++; } public static long numCreated() { return numCreated; } public static void main(
2015-11-04 08:42:34
424
原创 【java解惑】类和实例的初始化循环问题
如下所示代码:public class Example049 { private int overtime; public static Example049 INSTANCE = new Example049();//1 private static int CURRENT_YEAR = Calendar.getInstance().get( Calendar.YEAR);//2
2015-11-04 08:42:32
543
原创 【java解惑】重载构造函数
如下所示代码:public class Example046 { private Example046(Object o) { System.out.println("Object"); } private Example046(double[] dArray) {//2 System.out.println("double array"); } private Examp
2015-11-04 08:42:29
238
原创 【java解惑】递归异常与有限循环
如下代码:public class Example045 { public static void main(String[] args) { long start = System.currentTimeMillis(); workHard(); System.out.println("递归花费时间:" + (System.currentTimeMillis() - start)
2015-11-04 08:42:27
556
原创 【java解惑】java构造器的那些事儿
如下所示代码:public class Example040 { private Example040 e40 = new Example040(); public Example040() throws Exception { throw new Exception("这里是exception,不是error"); } public void output() { System
2015-11-04 08:42:24
285
原创 【java解惑】java编译器对空final赋值的妥协
如下所示代码:public class Example038 { private final static String GUEST_ID = "ape_it"; private final static String ID; static { try { ID = getID(); } catch (GetIDException e) { ID = GUEST_ID;
2015-11-04 08:42:22
551
原创 【java解惑】int转化为float精度问题
如下代码:public class Example034 { public static void main(String[] args) { int count = 0; int start = 2000000000; for (float f = start; f < start + 64; f++) { count++; } System.out.println
2015-11-04 08:42:19
1026
原创 【java解惑】&和&&、|和||使用
如下所示代码:public class Example042 { public static void main(String[] args) { int[][] tests = { { 6, 5, 4, 3, 2, 1 }, { 1, 2 }, { 1, 2, 3 }, { 1, 2, 3, 4 }, { 1 } }; System.out.println("func1 ou
2015-11-04 08:42:16
421
原创 【java解惑】输入输出流使用后及时关闭问题
如下所示代码:public class Example041 { public static void main(String[] args) throws IOException { Example041 e41 = new Example041(); e41.copy("d:\\微信名ape_it.txt", "d:\\微信名爱题猿.txt"); } private void
2015-11-04 08:42:13
464
原创 【java解惑】try-finally语句执行问题
如下所示代码:public class Example039 { public static void main(String[] args) { Example039 example039 = new Example039(); System.out.println(example039.output1()); example039.output2(); } boolean
2015-11-04 08:42:11
293
原创 【java解惑】关于异常捕获的三条要求
有如下所示代码:public class Example037 { static void output1() { try { System.out.println("如果一个 catch 子句要捕获一个类型为 E 的被检查异常," + "而其相对应的 try 子句不能抛出 E 的某种子类型的异常,那么这就是一个编译期错误"); } catch (IOException
2015-11-04 08:42:08
382
原创 【java解惑】java中那些反常识的小知识(续)
六、Q:请为 i!=0 && i ==-1 提供一个声明,使得其成立。 分析:在布尔表达式(i != 0 && i == -i)中,一元减号操作符作用于 i,这意味着它的类型必须是数字型的:一元减号操作符作用于一个非数字型操作数是非法的。因此,我们要寻找一个非 0 的数字型数值,它等于它自己的负值。NaN 不能满足这个属性,因为它不等于任何数值,因此,i 必须表示一个实际的数字。肯定没有任何
2015-11-04 08:42:06
295
原创 【java解惑】java中那些反常识的小知识
一、Q:请为 i == i + 1 ; 提供一个声明使得条件成立。 分析:一个数字永远不会等于它自己加 1对吧!如果这个数字是无穷大的又会怎样呢?Java 强制要求使用IEEE二进制浮点数算术标准IEEE 754,它可以让你用一个 double 或 float 来表示无穷大。无穷大加 1 还是无穷大。如果 i 在声明为无穷大那么i == i + 1 就成立。 A:可以用任何被计算为无
2015-11-04 08:42:03
282
原创 【java解惑】移位运算符规则
如下代码:public class Example027 { public static void main(String[] args) { int i = 0; while (-1 << 32 != 0) { i++; } System.out.println(i); }} 结果说明: 将上述程序放到eclipse中,在输出行会有提示“Unreacha
2015-11-04 08:42:00
355
原创 在eclipse和TortoiseGit中配置git连接remote服务器
本文讲述在eclipse和TortoiseGit中设置git连接remote服务器的过程,不讲述git的其他使用。 在使用git进行连接remote服务器时,常常使用的工具无非是eclipse或者TortoiseGit了。eclipse中连接远程比较简单,TortoiseGit则比较麻烦一些,主要是在最初配置上TortoiseGit有很多需要注意的细节。主要需要完成的配置是,上传自己的公钥到
2015-11-04 08:41:57
3187
1
原创 【java解惑】整型溢出的循环控制变量
如下代码:public class Example026 { public static final int END = Integer.MAX_VALUE; public static final int START = END - 100; public static void main(String[] args) { int count = 0; for (int i =
2015-11-04 08:41:55
698
原创 【java解惑】前缀自增自减和后缀自增自减问题
如下代码:public class Example025 { public static void main(String[] args) { int ape = 100; int it = 100; int ape_it = 100; for (int i = 0; i < 100; i++) { ape--; it = it--; ape_it = --a
2015-11-04 08:41:52
1291
原创 【java解惑】无处不在的bug
如下所示代码:public class Example023 { public static void main(String[] args) { errorMethod(); rightMethod(); } private static void errorMethod() { StringBuffer word = null; Random rnd = new Ra
2015-11-04 08:41:49
377
原创 【java解惑】java字符串替换方法使用
如下代码:public class Example020 { public static void main(String[] args) { String separator = File.separator; String clazzName = Example020.class.getName(); String rs1 = clazzName.replace(".", se
2015-11-04 08:41:47
876
原创 【java解惑】字符串的字节数组构造函数使用
如下代码:public class Example018 { public static void main(String[] args) { byte bs[] = new byte[256]; for (int i = 0; i < 256; i++) { bs[i] = (byte) i; } string(bs);// 调用1 string(bs, "iso-
2015-11-04 08:41:44
1528
原创 【java解惑】Unicode转义字符的使用(续)
如下所示代码:public class Example016 { public static void main(String[] args) { char c = 0x000a; /** * \u000A 注释1 */ // \u000A 注释2 System.out.println("c = " + c); System.out.println("a ne
2015-11-04 08:41:42
1899
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人