zoukankan      html  css  js  c++  java
  • 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

     

     

  • 相关阅读:
    用pygame实现打飞机游戏-3-显示飞机和控制飞机移动
    用pygame实现打飞机游戏-2-检测键盘
    最好听的钢琴曲排行榜 世界上最好听的钢琴曲
    使用gulp构建nodejs,你只需要记住5个函数
    Linux删除文件夹命令
    前端构建工具gulpjs的使用介绍及技巧
    HTML5 LocalStorage 本地存储
    jquery新窗口打开链接
    Sublime text 3 如何格式化HTML代码
    jquery滚动条加载数据
  • 原文地址:https://www.cnblogs.com/xifenglou/p/6229307.html
Copyright © 2011-2022 走看看