2017-04-08 16:18:15

IDEA 由数据库表生成带注释的java实体类代码

Java生成实体类代码有非常多的方案,而且强大的可以生成整个项目的解决方案,不过这里只是讨论实体类的生成。IDEA提供了类似的实体类生成脚本,用起来比较方便简捷。不过需要用IDEA支持的jvm脚本语言开发(默认示例是Clojure、Groovy)。 但是自带的脚本简单到生成的代码都没法用(有bug),所以花了点时间完善了下脚本实现代码,这里简单介绍下如何使用我们的脚本去生成java实体类代码。 连接数据库: 配置数据库连接信息,如果没有下载过jdbc的jar,这里需要点击download 找到IDEA的脚本扩展目录: 在这个脚本目录下新建Generate Entitys.groovy并复制如下代码 Generate Entitys.groovy: import com.intellij.database.model.DasTable import com.intellij.database.model.ObjectKind import com.intellij.database.util.Case import com.intellij.database.util.DasUtil /* * 默认可用的 context 绑定: * SELECTION Iterable* PROJECT project * FILES fi

2015-08-25 07:30:32

java inputstream toString

在以前的众多执行利用代码当中获取命里执行结果一直是一个比较麻烦的事情,常见的byte/char[50000]、readFully、readLine但总会有很多不便,比如说readLine的while循环读取问题。使用java.util.Scanner(xxx).useDelimiter(xxx)可以快速解决命令执行回显问题。 import java.io.IOException; import java.io.InputStream; public class Exec { public static void main(String[] args) { try { InputStream in = Runtime.getRuntime().exec("ifconfig").getInputStream(); java.util.Scanner s = new java.util.Scanner(in).useDelimiter("\\A"); System.out.println(s.hasNext() ? s.next() : ""); } catch (IOException e) { e.printStackTrace(); } } } 利用Scanner读取文件内容到S

2015-03-30 10:32:48

HttpServletRequestWrapper 编码问题

当发现经过Wrapper后Spring setCharacterEncoding还乱码时,可以实现HttpServletRequestWrapper,重写public String[] getParameterValues(String name) {....}等方法,再Encoding已设了encoding。 /** * 获取应用层的编码方式,应用层Filter需要setCharacterEncoding避免乱码问题 * 当getCharacterEncoding不为空那么就可以从RequestWrapper中获取转换编码 * 后的字符串了 * @param request * @return */ public static String getCharacterEncoding(HttpServletRequest request){ String encoding = request.getCharacterEncoding(); return encoding != null ? encoding : "ISO8859-1"; } /** * 避免Filter乱码问题,默认ISO8859-1,如果应用层setCharacterEncodin

2015-03-29 14:24:34

[转]Java开发者常犯的十个错误

这篇文章转自:http://www.cnblogs.com/liushaobo/p/4375493.html 翻译自:Top 10 Mistakes Java Developers Make 文章列出了Java开发者最常犯的是个错误。 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList,但这个ArrayList是Arrays的私有静态类,不是java.util.ArrayList。java.util.Arrays.ArrayList有set(), get(), contains()方法,但没有任何能增加元素的方法,所以它的大小是确定的。 为了创建一个真正的ArrayList,应该这样做: ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arr)); ArrayList的构造函数能够接收一个Collection类型,而它也是java.util.Arrays.ArrayList的一个祖先类。 2.检查一个数组是否包含某个值 开发者经常这样做: Set<String> set =

2015-01-30 15:47:18

jsoup 1.8 修改版

简单修改了几个小地方: 1、增加了自定义URL参数Encoding(connection.setURLEncoding(boolean isURLEncoding);)。 2、增加动态识别网页源码方法,原来的获取页面编码会不太准确,现在如果设置了自动parseEncoding的可以降低乱码出现率(connection.setParseEncoding(boolean parseEncoding);)。 3、增加了一个基础工具类用来发简单的HTTP请求(org.jsoup.helper.HttpRequestUtils)。 4、新增了忽略SSL证书方法(org.jsoup.helper.SslUtils) 编译环境jdk1.5 jsoup-1.8.1-yz.jar

2015-01-23 20:06:33

Oracle public权限用户通过Oracle索引提权

今天下午2点左右看到这个漏洞就立马测试了一下发现没成功(我测试的版本是12.1.0.1.0 和oracle 10g),google了一下找到了INDEX to SYSDBA without SELECT。 文章发布时间是2014年3月,当时觉得可能是一个老漏洞了(我那时还不知道这个漏洞的CVE)。到了下午看到相关的漏洞新闻报道才知道Oracle 漏洞猎手David Litchfield在去年6又发现了一个新提权漏洞(CVE-2015-0393)。 引用一篇关于这个漏洞的报道: 疑似后门:漏洞CVE-2015-0393 江湖人称“Oracle漏洞猎手”的David Litchfield在去年6月11日发现过Oracle一个疑似后门的严重漏洞CVE-2015-0393。 日前Litchfield向我们透漏了一些漏洞细节: 在该漏洞中,Oracle数据库内的PUBLIC角色在DUAL表中被授予了索引权限,也就是说任何用户都可以在该表创建索引。 DUAL表是SYS用户下的一张内部表,所有用户都可以使用DUAL名称访问,无论什么时候这个表总是存在。在DUAL表中创建了基于函数的索引后,黑客将暂时获得SYS用户权限(SYSDBA),可执行任意SQL语句进而尝试控制整个服务器。如果存在这个漏洞的电子商务套件可以从外网远程访问的话,攻击者只要有PUBLIC角色(不需要用户密码),就可以跟进

2015-01-19 22:57:14

java应用内存dump和分析工具

首先:# ps -ef |grep java 找到程序的PID,然后用jmap dump分析。 # jmap -dump:format=b,file=test.bin 23160 压缩后下载到本地。 # zip -r test.bin.zip test.bin 本机解压后使用jat查看: [yz@yz:Downloads]$ jhat test.bin Reading from test.bin... Dump file created Mon Jan 19 18:06:51 CST 2015 Snapshot read, resolving... Resolving 1602637 objects... Chasing references, expect 320 dots..................................................................................................................................................................................................................................................................

2015-01-12 12:22:21

[转]推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置,所以维护起来相当困难。 Gradle:Gradle采用增量构建。Gradle通过Groovy编程而不是传统的XML声明进行配置。Gradle可以很好地配合Maven进行依赖管理,并且把Ant脚本当作头等公民。 字节码操作 编程操作Java字节码的函数库。 ASM:通用底层字节码操作及分析。 Javassist:尝试简化字节码编辑。 Byte Buddy:使用“流式API”进一步简化字节码生成。 代码分析 软件度量和质量评估工具。 Checkstyle:对编程规范和标准进行静态分析。 FindBugs:通过字节码静态分析找出潜在Bug。 PMD:对源代码中不良编程习惯进行分析。 SonarQube:通过插件集成其它分析组件,提供评估最终结果报告。 编译器 创建分析器、解释器和编译器的框架。 ANTLR:功能完备的自顶向下分析复杂框架。 JavaCC:相对ANTLR更具体,上手略为简单。支持语法语法超前预测(syntactic lookahead)。 持续集成 支持持续集成、测试和应用发布的工具。 Bamboo:Atlassian的持续集成(CI)解决方案,包含很多其它产品

2014-12-07 16:20:20

UCanAccess连接Access数据库

Access_JDBC30是跨平台连接access最适合的jar但收费非常的贵,Access_JDBC30的免费版有查询50次、数据小于1000的限制。UCanAccess也提供了数据连接功能,可以比较方便的读写access数据库。UCanAccess自身依赖几个jar包,比如核心的:jackcess-2.0.6.jar ,Jackcess 是一个Java 类库,用来读写微软的Access 数据库。如果设置了hsqldb,那么将会在内存中加载. 默认=true. 快速入门:http://ucanaccess.sourceforge.net/site.html 依赖包: commons-lang-2.6.jar commons-logging-1.1.1.jar hsqldb.jar jackcess-2.0.6.jar ucanaccess-2.0.9.2.jar 下载地址:UCanAccess-2.0.9.2-bin.zip 连接方式如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.logging.Level; import java.util.logging.Lo

2014-12-01 16:50:28

java.text.MessageFormat.format

public class MessageFormat extends Format MessageFormat 提供了以与语言无关方式生成连接消息的方式。使用此方法构造向终端用户显示的消息。 MessageFormat 获取一组对象,格式化这些对象,然后将格式化后的字符串插入到模式中的适当位置。 注:MessageFormat 不同于其他 Format 类,因为 MessageFormat 对象是用其构造方法之一创建的(而不是使用 getInstance 样式的工厂方法创建的)。工厂方法不是必需的,因为 MessageFormat 本身不实现特定于语言环境的行为。特定于语言环境的行为是由所提供的模式和用于已插入参数的子格式来定义的。 public class Test { public static void main(String[] args) { String key="好好{0}习,天天{1}上."; String result=java.text.MessageFormat.format(key,new Object[]{"学","向"}); System.out.println(result); } } 输出:好好学习,天天向上.