利用NIO,ByteBuffer处理TCP长连接数据粘包的问题
问题:TCP 长连接会发生数据粘包 原因:IP层对数据进行了分包发送(就是说这个与发送端无关,接收端必须处理) TCP长连接发送数据是以数据流的方式传输。当然也并不是将整个数据一次发送。当然程序里面就是write一次就足够了。然而这个会被IP层进行分包发送,这样意味着数据并不是一次能接受完的。如果数据量不大(1.3kb~1.4kb)就有可能一次收完,能否一次接受完毕主要看当时网络的MTU值。如果 ...
Class-Path:
注意观看这个是不是一个空行,有的请删除掉。然后就能跑起来了。
不过在Linux 咋个好像没有这个问题
起因:公司内部使用的一个考勤系统(tomcat+mysql)由于使用的频率并不高,程序也并没有考虑需要进行数据定期备份(想起来了就备份下)。
前几天由于服务没有正常的关闭服务器的情况下导致无法正常使用数据库。
现象:出现数据库启动状态(netstat 查看有3306)无法连接数据库。查看安装目录bin下面的可执行文件不见了。
最近在 学习了socket 发现socket果然是个好东西. 仔细的去了解发现用途真的太多.通过scoket编写的东西能很好的做到各种兼容性.比如大家孰知的HTTP 协议了.sokcet通过一些同行协议就能就完成了HTTP . 想想就感觉好厉害呀.
HTTP 这样强大的协议也不是在任何情况都是很有效的.如HTTP 需要实现长链接就显得有些力不从心了.HTTP 适合BS下的应用需要什么数据就从服务器请求什么数据.如果想要服务器主动找客户端的话就不是那样容易了.HTTP 基于请求的特点就无法完成服务端一主动找客户端(浏览器)
最近在改一套HTML模板 总是要改文件的后缀
但是手动改有些显得不太爽于是 就用java 实现了这个小小的功能。 方便以后自己使用
贴代码 开始
/** * 根据文件后缀 查找符合要求文件列表 * @param path * @param prefix */ private void getFilesByPrefix(String path,String prefix){ File file[]=new File(path).listFiles(); for(File f:file) { if(f.isDirectory() && new File(f.getAbsolutePath()).listFiles()!=null){ getFilesByPrefix(f.getAbsolutePath(), prefix); } else{ if(f.getAbsoluteFile().toString().endsWith(prefix)){ fileList.add(f.getAbsoluteFile().toString()); } } } } /** 外部调用 (根据文件后缀 查找符合要求文件列表) 并且检查传入的路径是否存在 * @param path * @param prefix */ public void updateFilesPrefix(String path,String oldPrefix,String nowPrefix){ if (new File(path).isDirectory()) { getFilesByPrefix(path, oldPrefix); } if(fileList.size()>0){ for (String string : fileList) { String fileName=string.substring(0,string.lastIndexOf(".")+1); String newFileName=fileName+nowPrefix; System.out.println(newFileName); new File(string).renameTo(new File(newFileName)); } } } public static void main(String[] args) { FilesManageUtil f=new FilesManageUtil(); f.updateFilesPrefix("H:\\网页模板\\charisma-master\\charisma-master","jsp","html"); }