日常碎碎念


碎碎念

  1. TimerTask
Timer timer = new Timer(false);
timer.schedule(new RefreshTask(), 10*1000L, 30*1000L);
private class RefreshTask extends TimerTask {
    @Override
    public void run() {
        reflesh();
    }
}
reflesh() {
    // 拉去权限数据
    // 更新缓存数据
}

TimerTask在执行时,如果抛出异常不进行捕获就直接终止,建议使用ScheduledThreadPoolExecutor来替代

  1. mycat全局表插入的时抛出索引重复
    现象是mycat在插入时,抛出了索引重复但是再次查询时,确有数据
    原因是因为mycat在查询时候只会随机查询一个分库中的数据,由于不同分库的主键序列不一样,导致每次插入时,id不一样,随后又通过id来进行删除,这样只会删除一个表的数据,导致数据未被删除的库再次插入时抛出索引重复。
  • mycat全局表随机选择库
public static String getAliveRandomDataNode(TableConfig tc) {
		List<String> randomDns = (List<String>)tc.getDataNodes().clone();

		MycatConfig mycatConfig = MycatServer.getInstance().getConfig();
		if (mycatConfig != null) {
            //将dataNodes随机排列
			Collections.shuffle(randomDns);
            //省略...满足条件选取第一个dataNode
		}
		// all fail return default
		return tc.getRandomDataNode();
	}
  • 对重复数据的不同处理在1.6.x上对于重复数据是直接抛出异常,最新的版本则是返回修改值
  1. 查询端口占用情况
# 端口占用情况
netstat -nap |grep 2181

# 端口连接数
netstat -na | grep 2181 | wc -l

  TOC