7款开源Java反编译工具

今天我们要来分享一些关于Java的反编译工具,反编译听起来是一个非常高上大的技术词汇,通俗的说,反编译是一个对目标可执行程序进行逆向分析,从而得到原始代码的过程。尤其是像.NET、Java这样的运行在虚拟机上的编程语言,更容易进行反编译得到源代码。当然,也有一些商业软件,对其程序进行了混淆加密,这样我们就很难用工具反编译了。

1、Java反编译插件 ——Jadclipse

JadClipse是Jad的Eclipse插件,是一款非常实用而且方便地Java反编译插件,我们只需将下载的插件包复制到eclipse的plugins目录下,然后修改window -> Preferences -> Java -> JadClipse 下的Path to decompiler ,如:C:pinjadnt158jad.exe,最后在Windows -> Perference -> General -> Editors -> File Associations中修改“*.class”默认关联的编辑器为“JadClipse Class File Viewer” 即可。
更多 »

为什么开发者对Java 9如此的兴奋

随着标准Java的版本更新,开发者总是可以从升级后的版本中获取想要的功能。那么Java 9的发布为什么会让开发者如此的兴奋?下面列出了一些主要原因:

1、模块化的源代码

JDK源代码将以模块化的形式组织起来,生成系统将会在模块化编译上得到增强,并且在生成的时候模块之间的边界也将被强制区分开来。“Jigsaw的目标是为Java SE平台设计并实现标准的模块化系统,并将该系统应用到自身平台和JDK当中去。它的主要目标是为一些小型设备提供可简单扩展的实施方案,并且提高安全性和可维护性,提高应用系统的性能,以及为开发者提供更多的开发工具。”JDK优化建议中是这么描述的。

2、轻量级的JSON API

这是利用JSON数据交换格式生成文档和数据流的一个接口,某些时候,JSON完全可以替代XML。“JSON可以在Web服务中用得上了,Java SE也将采用JSON数据格式,同时这也是Java 9中提供的最需要的功能了。” 更多 »

jsp乱码问题 jsp页面往mysql里插入中文后数据库里显示乱码

1、JSP页面乱码
这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可:

<%@ page contentType="text/html;charset=utf-8" language="java" %>

2、数据库乱码
这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:
在数据库连接字符串中加入编码字符集

String Url="jdbc:mysql://localhost/digitgulf?user=root&
password=root&useUnicode=true&characterEncoding=GB2312";

并在页面中使用如下代码:

response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");

3、中文作为参数传递乱码
当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下:
在参数传递时对参数编码,比如

RearshRes.jsp?keywords=" + java.net.URLEncoder.encode(keywords)

然后在接收参数页面使用如下语句接收

keywords=new String(request.getParameter("keywords").getBytes("8859_1"));

以上为现阶段遇到的乱码问题,乱码的核心问题还是字符集编码问题,只要掌握了这一点,一般的乱码问题都可以解决。

JSP 多条SQL语句同时执行的方法

con.setAutoCommit(true);//设为true,每次executeUpdate将立刻被执行 
sql = "insert into table1(lable1) values('001')"; 
rs = stmt.executeUpdate(sql); 
sql = "insert into table2(lable2) values('002')"; 
rs = stmt.executeUpdate(sql);

这是一段基本的SQL插入语句,分别将两个值插入到两个表中,上面的程序已经能够完成这一需求,但是实际操作中并不建议这样写,原因如下: 
1、程序顺序执行,假如第一条语句入库了,后面一条发生了不可预知的错误而入库失败, 
这样的情况是不被允许的,如果其中一条出错,就应该全部都不予执行。 
2、这里是连续插入2条数据,感觉连续提交两次很正常,但是假如我们扩大这个问题,连续插入1000 
条数据,每次都自动的COMMIT了,这对服务器性能来说是一种浪费。 
因此我们遇到多条SQL语句需要同时执行,就应该把程序改为: 
con.setAutoCommit(false);//设为false,每次executeUpdate将不会立刻提交,而是等待commit();

con.setAutoCommit(false);
//设为false,每次executeUpdate将不会立刻提交,而是等待commit();
sql = "insert into table1(lable1) values('001')";
rs = stmt.executeUpdate(sql);
sql = "insert into table2(lable2) values('002')";
rs = stmt.executeUpdate(sql);
con.commit();

首先把setAuoCommit()设为false,不自动执行。然后正常入库,当所有需要入库的语句都预执行了,然后在进行 commit();这跟前面的代码有什么不一样的地方呢? 
1、假如两条语句中任意一条出问题,两条语句都不会被执行,但是同样可以用catch来获取出错提示 
2、对于需要同时提交1000条记录,我们可以每100条,进行一次commit();这样只需要执行10次提交运行速度会有明显的提升。

Copyright © All Rights Reserved · 菁菁博客 Since 2012 · Proudly powered by WordPress