Java常见问题
1. eclipse permgen space 问题:
debug configrations - vm arguments
最后设置:
-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m
IDEA 在Run/Debug configuration 的你要运行行的tomcat里面的
vm options里面输入
-server -XX:PermSize=128M -XX:MaxPermSize=256m
2. springmvc transactional注解问题
@parameterException不会回滚
须加入rollbackFor=Exception.class
3. Spring Validation使用
@Validated 放到类上面
@Valid放到controller方法上 参数前面
@NotBlank 字符串
@NotNull 整形
@NotEmpty 集合类
@Pattern(regexp ='') //正则表达式校验
4.JSON用法
JSON.parseArray("",*.class);
JSON.parseObject("",*.class);
JSON.toJSONString(Object c);
/**
* 对字符串md5加密
*
* @param str
* @return
*/
public static String getMD5(String str) throws ParameterException {
try {
// 生成一个MD5加密计算摘要
MessageDigest md = MessageDigest.getInstance("MD5");
// 计算md5函数
md.update(str.getBytes());
// digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
// BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
String sign = new BigInteger(1, md.digest()).toString(16);
if (31 == sign.length()){
return "0" + sign;
}
return sign;
} catch (Exception e) {
throw new ParameterException("MD5加密出现错误");
}
}
MD5缺位问题,正常返回32位,某些情况 会返回31位,此时需要进行补0
5. 类源码中 ctrl + o 找相应的方法
6. perference general workspace 统一编码
7. tomcat webapps 下 war包不能带 中横杠 - 如: back-sys ,否则不会自动解压
8. eclipse git文件图标不显示, 右键 project -> team -> share project
9. TimerTask 定时任务无故挂了, 方式不可靠
后改用 spring task方式
@Scheduled(cron = "0/30 * * * * ?")
<task:annotation-driven scheduler="pushScheduler" mode="proxy"/>
<task:scheduler id="pushScheduler" pool-size="1"/>
//文件编码格式校验
10.文件读取txt文件首行bom问题
private boolean checkFilePattern(InputStream inputStream) throws IOException {
boolean isUTF = false;
byte[] b = new byte[3];
try {
inputStream.read(b);
if (b[0] == -17 && b[1] == -69 && b[2] == -65)
{
isUTF = true
}
}finally{
if(inputStream !=null)
inputStream.close();
}
return isUTF;
}
记事本bom问题:
不含 BOM 的 UTF-8 才是标准形式 的确是这样,无BOM使用得更多些,所以个人还是推荐一般情况下用无BOM的形式吧,
除非有问题的时候,再考虑换有BOM的。Windows系统保存的都是有BOM的,所以你可以看到,用记事本保存一个UTF-8的txt,其实是有BOM的,这一点需要注意。
另外不同的文本编辑器对于有无BOM的称呼也略有不同,比如EditPlus,有BOM的称为UTF-8+,无BOM的称为UTF-8,而在Notepad++中,有BOM的被称为标准UTF-8,而无BOM则被称为UTF-8无BOM。
10. 反射性能问题,比非反射代码慢30倍左右 ,如果需要提升,将accessible设置为true.避免安全检查, 可提升四倍性能。
11. html 静态化 cdn 压缩 cms squid缓存 memcache缓存 nginx mycat数据库分库分表 主从模式
12. http 三次握手 ( syn(j) ack(j+1) syn(k) ack(k+1) ) 四次挥手
13. pager-taglib2.0.jar乱码问题
14. 服务器Mysql 中文存储乱码
cd /etc/my.cnf
mysqld部分 增加 default_character_set = utf8
15. springmvc 前端传输年月日时分秒 串 后台小8小时问题,可在application中增加方法 解决
@PostConstruct
void started(){ //解决客户端传入时间自动增加8小时的bug
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
16. springboot校验注意事项
controller类上加上 @Validated
request对应的方法中@Valid
string @Notblank
int @Notnull
list @Notempty
17. springmvc 前端传输年月日时分秒 串 后台小8小时问题,可在application中增加方法 解决
@PostConstruct
void started(){ //解决客户端传入时间自动增加8小时的bug
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
18.ElasticSearch/KIBANA: GET /test/test/_search
{
"query": {
"match": {"":""}
}
}
GET /test/test/_search
{
"query": {
"match_all": {}
}
}
PUT /test/test/_id
{
// _source内容
}
DELETE /test/test/_id
{
}
19. aspect中获取request,response
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
aspect 如调用async 异步方法,需要传递request对象,否则因为线程问题,在async方法中 获取到的request中数据会丢失
20. 数据库中的日期格式的数据 自动转11位 时间戳
spring.jackson.serialization.write-dates-as-timestamps:true
21.如果我们git clone的下载代码的时候是连接的https://而不是git@git (ssh)的形式,当我们操作git pull/push到远程的时候,总是提示我们输入账号和密码才能操作成功,频繁的输入账号和密码会很麻烦。
解决办法:
git bash进入你的项目目录,输入:
git config --global credential.helper store
22. mybatis pagehelper 多出limit问题,pageHelper.startPage 务必跟dao的查询写在一块,这样会是安全的方式。
否则容易错乱。 明明没有需要分页,居然会追加limit报错。
具体参考: http://www.herohuang.com/2018/08/08/pagehelper-limit/
比较有特色的几个博客:
Sunny https://www.cnblogs.com/sunny3096/category/1034222.html
昵称:孤独烟 https://www.cnblogs.com/rjzheng/p/8972725.html
海子:https://www.cnblogs.com/dolphin0520/p/3799052.html
java技术:https://github.com/crossoverJie/Java-Interview
如果,您认为阅读这篇博客让您有些收获, 如果,您希望更容易地发现我的新博客,不妨关注一下。因为,我的写作热情也离不开您的肯定支持。
感谢您的阅读,如果您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客。
因为有小孩,兼职卖书,路过的朋友有需要低价购买图书、点读笔、纸尿裤等资源的,可扫最上方二维码,质量有保证,价格很美丽,欢迎咨询! 欢迎关注微信公众号:18般武艺