Java

用callback机制使线程的run()方法返回一个值

这是《java net programming》书中的思想 调用者实现一个监听接口 HelloListener,其中一个方法是getReturnedValue() 被调用者(好线程)一个这个实现了此监听接口的变量作为自己的成员变量,当RUN方法快要完成是,调用这个成员的getReturnedValue()方法

把一个byte[]数组 变成 字符串,再变回byte[]数组,前后两个数组长度可能不同

把一个byte[]数组 变成 字符串,再变回byte[]数组,前后两个数组长度可能不同,即使两次转换使用的是同一种字符集     String  content = "朱元璋";     byte[] line = content.getBytes("utf-8");   //长度为9                     byte[] subLine = ArrayUtils.subarray(line, 0, 5); //长度为5         new String(subLine,"utf-8").getBytes("utf-8").length; //长度为6    看subLine,本来长度是5,转了一圈之后变成6了

CGLIB环境下,Properties.copyProperties()要慎用

Properties.copyProperties() 就是用来复制一个BEAN的所有属性 到 另一个BEAN 但如果其中一个BEAN是ProxyBean(如CGLIB实现的代理),那就很可能会出错,因为ProxyBean有其他一些 莫名奇妙 的属性,把这些属性搞给一个非Proxy的原Bean,就会出现“无此属性” 错误

注意:ftpClient某些方法是boolean方法

注意:ftpClient.login(), ftpClient.changeWorkingDirectory()都会返回boolean结果 如果用户名密码错误,ftpClient.login()并不会报异常,只是返回false 如果指定目录不存在,ftpClient.changeWorkingDirectory()不会报异常,只是返回false

new File().mkdirs()返回的true或false是怎么决定的?

例示: 假设系统只有一个硬盘,c:盘,且c盘下还没有 "hi"目录 //连续执行 new File("z:/hi").mkdirs();  //false,因为z盘不存在 new File("z:/hi").mkdirs();  //false,同上 //连续执行 new File("c:/hi").mkdirs();  //true new File("c:/hi").mkdirs();  //false,因为hi目录已经存在

[Spring]如果要从datasource里拿到connection并且使它自动被事务管理器掌管

今天偶然发现,如果使用了Spring框架,如果要从datasource里拿到connection并且使它自动被事务管理器掌管,则应该: Application code is required to retrieve the JDBC connection via DataSourceUtils.getConnection(DataSource) instead of J2EE’s standard DataSource.getConnection. 如果资源是JDBC 连接,则用DataSourceUtils 如果资源是JDO 连接,则用PersistenceManagerFactoryUtils 如果资源是Hibernate session,则用 SessionFactoryUtils