12月 202019
12月 132019
问题与原因
启动spring boot程序时,报异常,导致程序启动失败,遇到形如下面的错误:
A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/Integration]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
……
然而,这个只是结果,实际上并不能定位问题,笔者继续找异常,看到类似下面的错误: Continue reading »
12月 092019
目前看到的有两种方式:
- 根据文件后缀
- 根据文件魔数
根据文件后缀
满足一般需要,但如果文件后缀被手工修改,则可能判断错误。
JDK中已经提供了现成的接口用于根据文件名判断: Continue reading »
12月 052019
代码取自:JAVA根据URL网址获取输入流
/**
* 根据地址获得数据的输入流
* @param strUrl 网络连接地址
* @return url的输入流
*/
public static InputStream getInputStreamByUrl(String strUrl){
HttpURLConnection conn = null;
try {
URL url = new URL(strUrl);
conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(20 * 1000);
final ByteArrayOutputStream output = new ByteArrayOutputStream();
IOUtils.copy(conn.getInputStream(),output);
return new ByteArrayInputStream(output.toByteArray());
} catch (Exception e) {
logger.error(e+"");
}finally {
try{
if (conn != null) {
conn.disconnect();
}
}catch (Exception e){
logger.error(e+"");
}
}
return null;
}
如若想下载文件,则可以在上面方法基础上,进一步封装即可:
Continue reading »
11月 242019
现象
spring boot 启动时,连接mysql 8数据库报错errorCode 0, state 08001
。
原因
1. spring boot项目中,pom文件中配置的mysql驱动版本与mysql数据库版本不一致
此时修改pom文件中的版本即可,可以使用下面的配置:
……
<groupId>mysql
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
……
同时,yml文件中的mysql驱动类文件最好修改成
……
driver-class-name: com.mysql.cj.jdbc.Driver
……
11月 242019
问题
导入excel文件时,偶发bug:
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [C:\Users\AppData\Local\Temp\tomcat.4266029690466887869.8037\work\Tomcat\localhost\ROOT] is not valid
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:112)
at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:86)
at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:79)
at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1104)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:936)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
原因
Spring boot项目在导入文件时,没有找到指定文件夹。
子所以是偶发的问题,是因为spring boot项目本身在启动后会自动在Temp文件夹中创建若干临时文件夹,而操作系统可能会定期删除这些临时文件夹。linux也有类似操作系统自动清空临时文件夹的操作,参见这篇文章CentOS7的/tmp目录自动清理规则。
11月 172019
git cherry-pick可以挑选某个分支的一个或多个commit,将其应用到当前分支上。
git cherry-pick <commit id>
查询commit id 的查询可以使用git log
查询(查询版本的历史),最简单的语法如下:
git log
如果想查找已经被删除的某次commit,则可以用
git reflog
11月 122019
spring boot 多个包启动失败-解决:扫描多个包
11月 082019
git stash命令:保存现场、恢复现场
- 功能:将git 工作区中的数据暂存起来,保存现场,以及后续的恢复现场,类似于函数调用的保存现场、恢复现场
- 使用场景:正在开发一个代码,编写到一半,需要将代码恢复到某个版本修复某个bug上,但已经编写的工作又想保留
用法
git stash # 保存当前现场。
git stash list # 查看当前stash缓存的内容
## 编辑其他内容,编辑完毕后,想回复现场:
git stash pop # 弹出stash缓存栈顶内容,即可恢复现场
10月 312019
git撤销修改