03 2017 档案
摘要:SpringBoot在内部通过集成hibernate-validation 已经实现了JSR-349验证规范接口,在SpringBoot项目中只要直接使用就行了。 一般用在Controller中用于验证前端传来的参数。 验证分两种:对封装的Bean进行验证 或者 对方法简单参数的验证 一、进行Bea
阅读全文
摘要:一、Throughput收集器(吞吐量)-XX:+UseParallelGC-XX:+UseParallelOldGC *参数调整:通过调整堆大小,减少GC停顿时间,增大吞吐量增强堆大小可以减少Full GC频率,但却会增加停顿时间1.手动调整-Xmn -Xms -XX:NewRatio=N手动指定
阅读全文
摘要:1.多态 target指通过这个对象调用的方法 (匹配标识对象的所有方法) getMethod() this指调用这个对象的方法 (匹配标识对象实现的方法) getDeclaredMethod() target/this匹配类及其子类 2. execution(* com.dao.BaseDao.*
阅读全文
摘要:ReentrantLock基于AQS(Q:队列 S:同步): CAS修改state, 如果修改state成功, 则表示获得了该锁, 线程继续执行, 否则表示该锁已经被其他线程获得, 本线程被插入队列并挂起. 1.线程尝试修改state, 成功则继续执行, 否则进入2 2.把本线程封装成一个node插
阅读全文
摘要:1.根据硬件配置系统参数 wait_timeout 非交互连接的最大存活时间, 10-30min max_connections 全局最大连接数 默认100 根据情况调整 back_log 达到max_connections后, 还能继续接受的连接请求数, linux不超过1000, 根据情况调整
阅读全文
摘要:java分主内存和工作内存, 主内存是线程共享的, 工作内存是每个线程独有的. java对主内存的操作是通过工作内存间接完成的: 先拷贝主内存变量值到工作内存, 在工作内存操作这个变量的副本, 完成后将这个副本的值再写回主内存. 这几个操作不是原子性的, 意味着当有多个线程同时想修改主内存的话, 在
阅读全文
摘要:一、JIT java同时具有解释型语言的跨平台性,又有编译型语言的本地性能两次编译:第一次被编译成java字节码,JVM可以直接解释执行Java字节码,也可以用JIT先编译成本地二进制汇编语言,再执行 -client:运行开始时就编译-server:运行后编译,可以更好地进行优化-XX:Tiered
阅读全文
摘要:1. LinkedHashMap实现LRU缓存 LRU缓存核心是根据访问顺序排序, 自动移除队尾缓存, LinkedHashMap已经实现了这些要求: 2.InvocationHandler实现动态代理 手工为每一个类实现一个代理类称为静态代理, 缺点是即使代理的操作是一样的, 仍然要为每个类实现一
阅读全文
摘要:什么时候会使用临时表:group/order没设计好的时候 1.order没用索引 2.order用了索引, 但不是和where相同的索引 3.order用了两个索引, 但不是联合索引 4.order用了联合索引, 但排序顺序不同序 原因: 1.不用说 2.mysql一次只能用一个索引 3.4 其实
阅读全文
摘要:1.java变量类型 java变量类型分:基本数据类型变量和Object数据类型变量,变量也是占用者内存的 例如: int i = 3; i这个变量保存的就是整形3, 占32位 Object a = new Object(); a这个变量保存着一个指向堆中对象的引用(指针), a占用的内存是一个in
阅读全文