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次提交运行速度会有明显的提升。