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

 

 

原文地址:https://www.cnblogs.com/xifenglou/p/6229307.html