zoukankan      html  css  js  c++  java
  • 关于spring mvc 请求参数校验使用中的坑 。 maven 生命周期,线程池杂识

     //一、使用@Valid  @NotNull 启动项目请求,参数为空,
        // 好像没有效果。原因是只加了jar包:javax.validation:validation-api,这个包是一个规范,并没有实现
        // spring 的默认实现是 org.hibernate:hibernate-validator 加上即可。
        // 再次请求 返回400,
        //看日志是校验未通过,接下来就是校验异常后处理了。使用以下代码处理
        @ResponseBody
        @ExceptionHandler(MethodArgumentNotValidException.class)
        public String bindException(MethodArgumentNotValidException e) {
            QrResponse res = new QrResponse();
            res.setBack("中文");
            String result = JSON.toJSONString(res);
            return result;//(本项目是返回json字符串)
        }
        //不在显示400异常stack了。
        //然而仔细看返回的json ,发现出现了乱码
        //二、网上一查全是说@Notnull等的提示信息乱码
        //@NotNull等注解是可以自定义提示信息的,都是说这个提示信息乱码怎么解决。
        //我并不关心提示信息,整了半天,最后clean了重新打包好了
        //三、自定义校验
        public class ScanValidator implements ConstraintValidator<ScanAnnotation,ADTO> {
            //ScanAnnotation 自定义注解,可以放到类上,属性上,仿@notnull
            //ADTO 需要校验的类或属性
        }
        @Retention(RetentionPolicy.RUNTIME)
        @Target({ElementType.TYPE})
        @Constraint(validatedBy = ScanValidator.class) //这句别忘了
        public @interface ScanAnnotation {
    
        }$# 表示传入脚本的参数2. grep -a xx 筛选文件内容(解决报错binary 问题)
       grep -C num 显示搜索内容的前后num行
            -v 反向查询 
            -i 忽略大小写
    3. 自定义命令
        alias cdl='cd /home/wtposp/logs/'
    alias cdc='cd /var/www/pro/transaction_agent/current/transaction_agent/WEB-INF/classes/'
    alias cdt='cd /var/www/apps/transaction_agent/java/apache-tomcat-8.5.24/bin'
    
        永久生效: 修改~/.bashrc 文件,source ~/.bashrc
    4. 切换用户 : 
       su : switch user 切换用户 , 参数 - 表示切换用户,并且切换到用户环境。默认不写用户是切到root
       sudo 临时获取root权限执行命令。 sudo su 临时获取root权限执行命令su切换到root , su username 切换到普通用户,exit 即可回到root 用户。
    5. ps -aux |grep 查看进程cpu ,内存占用情况
    top -p pid 查看进程资源占用情况。 【其他】
    1. solid原则:单一,开闭,里氏,接口,依赖倒置,迪米特。 2. win + shift + s win系统自带【截图工具】,截图后点击后上角复制即可复制。 3. alt + A 微信自带截图工具 4. xshell 快捷键 ctrl +w 删除光标前一个单词,ctrl+u 删除光标前所有单词 , crtl+Y 撤销删除 5. maven生命周期有三个: 默认default , clean 和 site . 常用的clean 和 install(默认生命周期)不在一个生命周期里(重点)。 所以不要以为install会自动执行clean(尤其在你删除了文件后,不clean,直接install可能会发现删除的文件还在包里,晕). install 对应的default 生命周期为: validate,compile,test,package,verify,install,deploy 6. 如果excel不能编辑,可以先打开word,再重新打开excel 即可编辑。 7. ThreadPoolExecutor.submit() 可以返回的含义:其实是sumbit方法内部将线程包装成futureTask,仍然调用的是execute()方法,然后返回包装后的可以通过 的futureTask 而不是说submit直接返回线程执行结果。 用户如需获取线程返回值,可以通过futureTask.get()方法阻塞线程等待线程返回。
  • 相关阅读:
    JAVA面试题 启动线程是start()还是run()?为什么?
    Java面试题 equals()与"=="的区别?
    Java面试题之数据库三范式是什么?
    很全的Python 面试题 github
    链家二手房 爬虫
    15个重要Python面试题 测测你适不适合做Python?
    静态链接和动态链接
    Python里的拷贝
    GIL线程全局锁 协程
    Python中的作用域
  • 原文地址:https://www.cnblogs.com/zhangchenglzhao/p/11103936.html
Copyright © 2011-2022 走看看