利用NIO,ByteBuffer处理TCP长连接数据粘包的问题

问题:TCP 长连接会发生数据粘包 原因:IP层对数据进行了分包发送(就是说这个与发送端无关,接收端必须处理) TCP长连接发送数据是以数据流的方式传输。当然也并不是将整个数据一次发送。当然程序里面就是write一次就足够了。然而这个会被IP层进行分包发送,这样意味着数据并不是一次能接受完的。如果数据量不大(1.3kb~1.4kb)就有可能一次收完,能否一次接受完毕主要看当时网络的MTU值。如果 ...
Java那些事 / 2015-02-05
JAVA Linux下的验证码问题

JAVA Linux下的验证码问题

一般项目涉及到会员的时候就少不了需要验证码,项目放在Windows 可以正常的运行但是一旦把项目部署到Linux 触及到验证码的方法就会导致tomcat 直接停止运行。

这个问题百度大多答案都是千篇一律的,大多都是用到了awt把项目搞挂了。
Java那些事 / 2014-11-30
使用云存储记录

使用云存储记录

提及这个词的时候是在观看百度的一个视频的时候看到里面提到了PCS和BCS两种存储方式。很好奇,于是简单查看相关的资料,发现平时使用的大多网盘也都是云存储。发现云存储还是挺多的好处的,比如,宽带网络,数据文件不怕丢失。
自己在这之前部署web 项目每次都要将上传的数据文件丢掉,如果将文件拷贝到本地在上传上去,真心的很烦。于是云存储能很好的处理这个问题。
其他 / 2014-11-29

记一次mysql 数据恢复

起因:公司内部使用的一个考勤系统(tomcat+mysql)由于使用的频率并不高,程序也并没有考虑需要进行数据定期备份(想起来了就备份下)。

前几天由于服务没有正常的关闭服务器的情况下导致无法正常使用数据库。


现象:出现数据库启动状态(netstat 查看有3306)无法连接数据库。查看安装目录bin下面的可执行文件不见了。

工作日志 / 2014-11-27

java 编写网页爬虫程序(利用HttpClient+jsoup)

对于网页抓取这方面大家都知道百度和google 都是依靠这个起家的. 百度为广大的网名提供了很多便捷的地方.让大家能最快的找到自己的想要的东西.百度做的事情就是聚合互联网的信息资源(当然百度也有自己的信息平台,如百度文库,知道,贴吧这类的产品).那百度是怎样的抓取网站的呢.一般情况百度会有自己的链接库. 根据部分网站友链,外链.或者是网站管理员向百度提交网址的方式抓取网站A的内容. 百度的会根据网站A的情况派出蜘蛛(也有称爬虫的)去抓取网站A的内容.蜘蛛根据情况抓取网站A内容.百度根据自己的算法去组织抓取的内容. 然后你就能在百度中搜索到网站A的内容了.当然有时候可能不会第一页的. 这个就是百度核心了. 如何让用户第一时间找到自己想要的内容.
Java那些事 / 2014-10-19

java socket(TCP)学习记录

        最近在 学习了socket 发现socket果然是个好东西. 仔细的去了解发现用途真的太多.通过scoket编写的东西能很好的做到各种兼容性.比如大家孰知的HTTP 协议了.sokcet通过一些同行协议就能就完成了HTTP . 想想就感觉好厉害呀.

        HTTP 这样强大的协议也不是在任何情况都是很有效的.如HTTP 需要实现长链接就显得有些力不从心了.HTTP 适合BS下的应用需要什么数据就从服务器请求什么数据.如果想要服务器主动找客户端的话就不是那样容易了.HTTP 基于请求的特点就无法完成服务端一主动找客户端(浏览器)

Java那些事 / 2014-09-17

利用SQL还原.bak 文件

利用SQL还原.bak 文件 提到这个问题还是1年多前的事情了,刚开始使用SQLServer,使用SQL导入固然是很方便的。而且对于在线管理SQL server的程序都是很久以前的了。做一些基本的增删改查还是挺方便的, 而这个程序用的可谓是相当的少而且比起phpmyadmin 这个在线管理工具来说简直就是弱爆了。 对于这两个工具的优缺点就不去讨论了。我说一点吧 phpmyadmin 支持导入sql文件的大小基本都没有撒限制的。当然默认是8M 可以 改这个 sqlserver 这个(貌似这个唯一的,不晓得微软是咋个想的)。对与sql 文件的还原小一点的文件是可以的。 但是文件过大直接是无法愉快的还原了。而且有大量的aspx的程序都在使用.bak 来还原的方式来导入数据。
分享 / 2014-08-22

如何通过JAVA代码实现 批量改文件后缀

最近在改一套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");
		
	}

 

Java那些事 / 2014-03-20