@Transactional
public synchronized ScheduleCommonWorkPlanVO insertMonthPlan(ScheduleCommonWorkPlanVO<ScheduleWorkWorkplanmonthVO> commonWorkPlanVO) {
//业务逻辑。。。
ScheduleWorkWorkplanmonthVO workplanmonthVO = commonWorkPlanVO.getWorkPlan();
String monthPlanId = IdsUtil.getUUID32();
if (workplanmonthVO != null) {
//业务逻辑。。
}
}
问题原因:
@Transactional 是通过Spring AOP实现的,会在被代理方法执行完成后,没有异常提交事务入库,
在并发环境下 线程A 执行完方法 释放锁 此时还未提交事务,线程B 获取锁 执行方法 由于线程A 数据还未入库 导致线程B 读取到的数据还不是最新的,
就导致 线程A 和线程B 的编号 重复问题
解决方案:
1.在controller 层对service 方法进行加锁,使用 synchronized 或者 Lock
2.在controller 层使用分布式锁,推荐使用 Redisson,简单 高效,适合分布式场景
主要是因为编码格式的问题,英文名的文件ftp使用的是GBK格式的编码,含中文的文件FTP使用的是ISO-8859-1的编码格式,所以如果在
ftpClient.retrieveFile(file.getName(),os);
这里对文件名转码的话ftp就找不到文件了,导致下载0kb
除了上面的原因会出现0kb还有可能会因为工作路径设置不正确,也会导致各种错误
例如:
本机设置的ftp根路径是 E:\jd\ftpserver\ ,ftp会以 / 作为根路径,在配置文件里设置路径时应使用完整路径,如:
否则,在
ftpClient.changeWorkingDirectory(ftpConfig.getFtpTaskPath());
变更ftp的工作目录后,会导致文件下载失败
public FTPClient getFTPClient(){
FTPClient ftpClient=new FTPClient();
try {
//必须在连接之前设置好ftp的编码格式,否则含中文路径的目录无法切换
ftpClient.setControlEncoding("UTF-8");
ftpClient.connect(host,port);
ftpClient.login(userName,password);
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
System.out.println("连接ftp失败");
ftpClient.disconnect();
}else{
System.out.println("连接ftp成功");
}
} catch (Exception e) {
e.printStackTrace();
}
return ftpClient;
}
# cat /sys/class/net/eth0/mtu
#echo "1460" > /sys/class/net/eth0/mtu
设置socket的缓存大小可以有效改善下载的速度
windows环境的ftp服务器可以通过软件修改socket缓存大小,如:
linux 查看最大的发送缓冲区大小(tcp连接)
cat /proc/sys/net/core/wmem_max
查看最大的接收缓冲区大小(tcp连接)
cat /proc/sys/net/core/rmem_max
缺省的接收缓冲区大小(tcp连接)
cat /proc/sys/net/core/rmem_default
缺省的发送缓冲区大小(tcp连接)
cat /proc/sys/net/core/wmem_default
查看接收缓冲区:sysctl -a | grep rmem
修改配置文件:vim /etc/sysctl.conf
添加:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.rmem_default=16777216
net.core.wmem_default=16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
使用 sysctl -p 让配置生效
原文:https://www.cnblogs.com/lazyfox/p/14228487.html