MyBatis 类型处理器

问题描述

最近测试将 MyBatis 从 3.1.1 升级到 3.2.3 时遇到一个问题。原来可以正常工作的枚举类型处理器,抛异常了。

1
Caused by: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'member_type' from result set.  Cause: java.lang.IllegalArgumentException: No enum code 'MERCHANT'. class com...ChangeSceneType

涉及的代码及配置信息如下:

Read More

AES加密时报java.security.InvalidKeyException Illegal key size

Contents

使用 AES 加密时,密钥大于128bit的话会抛出java.security.InvalidKeyException异常。因为密钥长度是受限的,根据网上一些博客中说的,这种限制是因为美国对软件出口的控制。解决办法很简单,下载对应版本的jce包,解压并覆盖 ${JAVA_HOME}/jre/lib/security/ 下的同名文件即可。

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 6

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7 Download

Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 8 Download

Shiro笔记

简介

Apache Shiro是一个强大易用的Java安全框架,可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。

Shiro基本功能

  • Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
  • Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
  • Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
  • Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
  • Web Support:Web支持,可以非常容易的集成到Web环境;
  • Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率;
  • Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;
  • Testing:提供测试支持;
  • Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问;
  • Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

Read More

FreeMarker-XML处理笔记

揭示XML文档

test.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<book>
<title>Test Book</title>
<chapter>
<title>Ch1</title>
<para>p1.1</para>
<para>p1.2</para>
<para>p1.3</para>
</chapter>
<chapter>
<title>Ch2</title>
<para>p2.1</para>
<para>p2.2</para>
</chapter>
</book>
  • 根节点是“文档”而不是book
  • 如果 B 是 A 的直接后继,我们说 B 节点是 A 节点的 child 子节点,A节点是B节点的parent父节点。
  • 元素,文本,注释,处理指令都是DOM树的节点

Read More

FreeMarker-程序开发指南笔记

快速入门

  • 使用 java.lang.String 来构建字符串。
  • 使用 java.lang.Number 来派生数字类型。
  • 使用 java.lang.Boolean 来构建布尔值。
  • 使用 java.util.List 或 Java 数组来构建序列。
  • 使用 java.util.Map 来构建哈希表。
  • 使用你自己定义的 bean 类来构建哈希表, bean 中的项和 bean 的属性对应。例如product 中的 price 属性可以用 product.price 来获取。

Read More

深入理解Java虚拟机笔记三(JVM性能监控与故障处理工具)

概述

大多工具都是对jdk/lib/tools.jar类库的一层包装,SUN JDK监控和故障处理工具:

  1. jps:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程
  2. jstat:JVM Statistics Monitoring Tool,用于收集HotSpot虚拟机各方面的运行数据
  3. jinfo:Configuration Info for Java,显示虚拟机配置信息
  4. jmap:Memory Map for Java,生成虚拟机的内存转储快照(heap dump文件)
  5. jhat:JVM Heap Dump Browser,用于分析heap dump文件,会建立一个HTTP/HTML服务器,让用户可以在浏览器查看分析结果
  6. jstack:Stack Trace for Java,显示虚拟机的线程快照

然后还有两个GUI工具:

  1. jconsole:略微过时的JVM各状态查看工具
  2. visualVM:Sun出品的强大的JVM工具,推荐使用!

Read More