Java常见问题

1. eclipse permgen space  问题:
  debug configrations  -   vm arguments
最后设置:
-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256mhtml

 

 IDEA  在Run/Debug configuration 的你要运行行的tomcat里面的 
vm options里面输入前端

-server -XX:PermSize=128M -XX:MaxPermSize=256mmysql



2. springmvc transactional注解问题nginx

@parameterException不会回滚
须加入rollbackFor=Exception.class git

 

3. Spring Validation使用web

@Validated 放到类上面正则表达式

@Valid放到controller方法上 参数前面spring

@NotBlank 字符串sql

@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

相关文章
相关标签/搜索