大海Online的博客

Looking for Interest

Class.forName 返回 String[].class

A: 如何通过Class.forName 返回 String[].class Q: Class.forName(“[Ljava.lang.String;”)

因为 String[].class.getName() => “[Ljava.lang.String;” 经测试, 反过来, 也成立

因此: 在sqlmap-config.xml可以这样写

<typeHandler javaType="[Ljava.util.String;" callback="xxxxxx.StringArrayTypeHandler" />

ibatis typehandler

今天配置typehandler时碰到一个问题

主要解决的问题是 java.sql.SQLException: Cannot convert value ‘0000-00-00 00:00:00’ from column 18 to TIMESTAMP

解决方案: 替换掉系统默认的 typehandler, 抛出异常时,改为null

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE sqlMapConfig
 PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
 "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
	<settings 
		cacheModelsEnabled="true" 
	/>
	<typeHandler javaType="java.util.Date" callback="xxxxxxxxx.CustomDateTypeHandler" />
	
	<sqlMap resource="sqlmap/sqlmap-price.xml" />	
</sqlMapConfig>

这里需要注意的是

  1. typeHandler 中的 jdbcType 取值应为 null, DATE, TIME, 这里用的null
  2. typehandler 必须要在 sqlmap 前面, 否则sqlmap中的类型handler就会用默认的

下面是自定义的datetypehandler

package xxxxxxxxx;

import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.ibatis.sqlmap.engine.type.DateTypeHandler;

public class CustomDateTypeHandler extends DateTypeHandler {


	@Override
	public Object getResult(ResultSet rs, String columnName) throws SQLException {
		try {
			return super.getResult(rs, columnName);
		} catch(SQLException e) {
			if("S1009".equals(e.getSQLState())) {
				return null;
			}
			throw e;
		}
	}

	@Override
	public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
		try {
			return super.getResult(rs, columnIndex);
		} catch(SQLException e) {
			if("S1009".equals(e.getSQLState())) {
				return null;
			}
			throw e;
		}
	}

	@Override
	public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
		try {
			return super.getResult(cs, columnIndex);
		} catch(SQLException e) {
			if("S1009".equals(e.getSQLState())) {
				return null;
			}
			throw e;
		}
	}

}

下列签名无效: NODATA 1 NODATA 2

ubuntu下 apt-get update 时,报错 下列签名无效: NODATA 1 NODATA 2

原因是: 网络连接出错了, 对应的网址连不上去

比如: archive.ubuntu.com, 连接不上, 可换成 cn.archive.ubuntu.com 或者: 网络有代理, 什么的被拦截了

ubuntu安装maven3

ubuntu 安装 maven3的方法就是

  sudo apt-get install maven

一直以来, 以为 install maven安装的是 maven1.x 而 install maven2 安装的是 maven2.x 而看到某些论坛说安装maven3, 要使用 ppa , 后来才知道错了

install maven 安装的就是最新版本的maven

在 12.04, 13.04 测试通过

git 与 svn 同步

svn 与 git 保持同步

  • 先svn checkout url 把svn上的代码checkout下来
  • 进入工程目录
  • git init
  • git remote add origin git@github.com:username/project.git
  • git pull
  • git branch –set-upstream master origin/master
  • git reset
  • git status
  • git commit -a -m “update”
  • git push

其中 git reset 不好处理,可以 git reset –hard svn -R revert .

另外:

  • svn propget svn:ignore .
  • svn propset svn:ignore . -Fingore.txt

ignore.txt 中 加入 .git .gitignore .gitignore 中 加入 .svn

.svn
bin
target
.settings
.project
.classpath

/assets/node_modules

nginx expires 绝对过期时间

nginx expires 绝对过期时间

参考: http://wiki.nginx.org/HttpHeadersModule

  expires       24h;
  expires       modified +24h;
  expires       @15h30m;
  expires       0;
  expires       -1;
  expires       epoch;

@time 表示绝对过期时间, 基于一天的某个时间点来过期

@15h30m, 这里的意思是每天15点30分的时候,请求过期

举例, 比如 访问时间为 08:00, 则过期时间为 15:30 访问时间为 21:33, 则过期时间为 第二天的15:30分

原文中的解释: Times written with an @ prefix represent an absolute time-of-day expiry, written in either the form Hh or Hh:Mm, where H ranges from 0 to 24, and M ranges from 0 to 59 (available from versions 0.7.9 & 0.6.34).

curlftpfs

多数curlftpfs的例子是这样的

sudo curlftpfs –o rw,allow_other ftp://username:password@192.168.1.111 /ftp

这种写法,有一个缺点,就是,当mount查看时, 会显示出密码

换成另一种写法吧:

sudo curlftpfs -o rw,allow_other,user=username:password ftp://192.168.1.111 /ftp

umount

mount nfs后, 如果遇到服务器修改 /etc/exports 等原因时,经常会遇到

umount2: Stale NFS file handle
umount: htdocs: Stale NFS file handle

或者

/var/www/html was not found in /proc/mounts

等问题

解决方案:

  • 找到使用目录的进程, kill掉
  • sudo umount -f /directory
  • sudo umount -i -f /directory
  • sudo umount -i -d -r -n -v -f /directory

用umount的各种参数, 总是有办法 unmount的

思考方法论

  1. 客户是谁?客户细分?
  2. 客户需要我们解决的问题?
  3. 什么情况和标志出现才体现我们解决了客户的问题?
  4. 独特卖点?与众不同的引起客户关注的是什么?
  5. 为解决客户的问题,我们需要聚焦的突破点和瓶颈是什么?
  6. 客户现有的能力即制或习惯是什么?
  7. 解决方案
  8. 产品最重要的三个功能?
  9. 客户参与的动力在哪?

ubuntu 无法载入支持的服务器方式列表 请检查您的gvfs安装

ubuntu “无法载入支持的服务器方式列表 请检查您的gvfs安装” 的解决方案

碰到两次这个错误了,记录下解决方案

sudo apt-get remove gvfs
sudo apt-get install ubuntu-desktop

原因不明,重装解决问题

补: 如果有些ubuntu底层的组件,类似gvfs, libgtk2.0等被卸载掉,又不想重装系统,直接install ubuntu-desktop就可以了