记一次mysql 数据恢复
起因:公司内部使用的一个考勤系统(tomcat+mysql)由于使用的频率并不高,程序也并没有考虑需要进行数据定期备份(想起来了就备份下)。
前几天由于服务没有正常的关闭服务器的情况下导致无法正常使用数据库。
现象:出现数据库启动状态(netstat 查看有3306)无法连接数据库。查看安装目录bin下面的可执行文件不见了。
起因:公司内部使用的一个考勤系统(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");
}
发现使用外部加载文件的方式。 发现如果
在设置数据用户名时 user 中配置文件中的value 为 ${username}
<property name="user" value="${username}" />
无法加载成功。
换为其他的名字 就可以运行起来了。 不懂这是那里的问题。
以前也没有注意过这个问题
在使用 excludeMethods,includeMethods 时拦截器要 继承 MethodFilterInterceptor
而 AbstractInterceptor 没有 excludeMethods,includeMethods 这个2个属性。。
在使用继承映射是 发生了一个错。。
开始以为是配置文件的文件。。
1.还报 撒sessionFactory的错。。
说 org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass
这样一看感觉到了是继承映射写的有问题。。
就把相关的 类删除了。代码就能运行起了。。
org.hibernate.mapping.UnionSubclass cannot be cast to org.hibernate.mapping.RootClass
是因为2个继承的2张表内部还有 关系 如OneToMany。。
于是想到了 是不是子类的问题。
于是删除了之类的。。 结果还是没有运行起。
前几天遇到了这个问题。 发现遍历的文件夹和文件排列的顺序是乱的(按时间排序的)
于是想到了要自己去实现排序。 于是就在网上早了下代码。发现可以通过 Collections.sort
于是就想到了使用自己去重写 compare来实现排序。
下面是排序的代码。。
public static void mysort(List<Files> files){
Collections.sort(files, new Comparator<Files>()
{
public int compare(Files o1, Files o2) {
//如果传进来的2个文件o1为文件夹 o2 不是文件时需要改变顺序
if(o1.isFiler() && !o2.isFiler())
return -1;
//返回值>=0,则不调用Arrays.swap(Object x[], int a, int b) 方法。
if(!o1.isFiler() && o2.isFiler())
return 1;
return 0;
}
});
}