
Java
文章平均质量分 58
jack_zhou.
假如生活欺骗了你,
不要悲伤,不要心急!
忧郁的日子里须要镇静:
相信吧,快乐的日子将会来临!
心儿永远向往着未来;
现在却常是忧郁。
一切都是瞬息,一切都将会过去;
而那过去了的,就会成为亲切的怀恋。
展开
-
ThreadLocal
ThreadLocal简单介绍原创 2022-08-07 22:25:15 · 170 阅读 · 1 评论 -
lambda表达式
函数式接口@FunctionalInterfacepublic interface MathOperation { int operation(int a, int b); static int sum(int a, int b) { return a + b; }}可以这样写:MathOperation operation = (a, b) -> a + b;operation.operation(2, 3);方法引用::以上是两数相加原创 2022-01-04 00:40:19 · 357 阅读 · 0 评论 -
logger日志规约
1.开发手册日志规约2. 规范谨慎地记录日志。生产环境禁止输出 debug 日志;有选择地输出 info 日志;如果使用 warn 来记录刚上线时的业务行为信息,一定要注意日志输出量的问题,避免把服务器磁盘撑爆,并记得及时删除这些观察日志。说明:大量地输出无效日志,不利于系统性能提升,也不利于快速定位错误点。记录日志时请思考:这些日志真的有人看吗?看到这条日志你能做什么?能不能给问题排查带来好处?lombok的@Slf4j不用频繁写LogFactory.getLogger日志输出对原创 2021-09-17 13:09:14 · 207 阅读 · 0 评论 -
Docker部署web项目
文章目录Docker部署web项目SpringbootWeb项目Docker部署Nginx反向代理时区问题测试Docker部署web项目前面部署过springboot项目,这里主要记录不同之处。SpringbootWeb项目注意是@Controller注解,不是@RestController返回的 hello 表示页面,不要写成 /hello,本地这样写没问题,服务器可能会匹配不到页面@Controllerpublic class HelloWebController {原创 2021-04-04 13:26:19 · 303 阅读 · 0 评论 -
Docker部署springboot项目
文章目录Docker部署springboot项目Springboot项目Docker安装docker部署阿里镜像加速打包镜像测试Docker部署springboot项目Springboot项目@RestControllerpublic class DockerController { @RequestMapping("/") public String index() { return "Hello Docker!"; }}@SpringBootAppl原创 2021-04-01 22:37:15 · 260 阅读 · 0 评论 -
ReentrantLock
文章目录ReentrantLockLockDemo输出解析lock()源码ReentrantLock.FairSyncAQS#acquireQueuedLockSupportThread#parkBlockerAQS#addWaiter(Node.EXCLUSIVE)AQS.NodeReentrantLockLockReentrantLock implements Lock, java.io.SerializableDemopackage com.kornzhou.javademo.concur原创 2021-04-01 10:36:36 · 102 阅读 · 0 评论 -
Unsafe.CAS、jol查看偏移量
文章目录Unsafe.CAS、jol查看偏移量AQS#compareAndSetState测试偏移量offsetjol测试输出Unsafe.CAS、jol查看偏移量AQS#compareAndSetState#AbstractQueuedSynchronizerprotected final boolean compareAndSetState(int expect, int update) { // See below for intrinsics setup to support原创 2021-04-01 10:34:05 · 395 阅读 · 0 评论 -
Serializable序列化
文章目录Serializable序列化代码测试总结附录单例对象的反序列化测试1在MySingleton中加入方法readResolve测试2Serializable序列化代码import java.io.IOException;import java.io.ObjectInputStream;import java.io.Serializable;public class User implements Serializable { transient private String原创 2021-03-26 13:29:10 · 100 阅读 · 0 评论 -
外部接口调用失败重试
文章目录@[toc]第三方接口调用失败重试规则代码`@MyRetry``MyRetryFactory``MyRetryTemplate``ResponseResult``ThirdCallService``ThirdCallServiceImpl``Tester`结果总结第三方接口调用失败重试规则第三方接口调用失败后,相隔3秒后后重试;若再次失败则相隔5秒重试,后续不再重试。代码@MyRetry@Target(ElementType.METHOD)@Retention(Retenti原创 2021-01-20 10:58:53 · 5381 阅读 · 4 评论 -
HashMap解析(JDK1.7和1.8区别)
文章目录HashMap解析JDK1.8版本之前扩容的死循环、数据丢失问题JDK1.8 HashMaphash()resize()红黑树HashMap解析1.Hashmap在插入元素过多的时候需要进行Resize,Resize的条件是: HashMap.Size >= Capacity * LoadFactor。2.Hashmap的Resize包含扩容和ReHash两个步骤,ReHash在并发的情况下可能会形成链表环(头插)。3.1.8后采用尾插(对树的操作会出现死循环,但不会有链表环),原创 2020-08-24 13:14:39 · 396 阅读 · 0 评论 -
[转]漫画:树
AVL/B/B+/红黑/哈夫曼 树转载自知乎(程序员小灰)漫画:什么是平衡二叉树(AVL树)漫画:什么是B+树漫画:什么是B-树漫画:什么是红黑树漫画:什么是 “哈夫曼树”转载 2020-08-18 15:45:14 · 184 阅读 · 0 评论 -
排序算法
排序算法文章目录排序算法选择排序冒泡排序插入排序希尔排序归并排序/** * @author admin */public abstract class Sort<T extends Comparable<T>> { protected String name; public Sort(String name) { this.name = name; } protected abstract void sort(T[] n原创 2020-07-10 18:04:34 · 120 阅读 · 0 评论 -
合同模板html转pdf
文章目录html转pdfmaven jar包代码测试效果展示总结中文不显示html转pdfmaven jar包<!-- https://mvnrepository.com/artifact/org.xhtmlrenderer/flying-saucer-pdf --> <dependency> <groupId>org.xhtmlrenderer</groupId> <artifact原创 2020-06-08 16:13:25 · 920 阅读 · 0 评论 -
JSP自定义标签库
文章目录JSP自定义标签库Shiro标签shiro标签的shiro.tld文件principal TagShiro principal Tag实现类自定义标签main.jspmytag.tldMyTag实现类运行结果JSP自定义标签库Shiro标签(如 shiro:principal shiro:hasRole shiro:hasPermission)可以在JSP页面中工作,那么自定义标签是如何使用的呢Shiro标签shiro标签的shiro.tld文件principal Tag<ta原创 2020-05-28 14:14:55 · 249 阅读 · 0 评论 -
excel导入导出
文章目录引入jar包导入导出引入jar包<!--Excel导入 poi poi-ooxml--><dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version></dependency><dependency> &原创 2020-05-14 15:27:50 · 193 阅读 · 0 评论 -
理解static的加载顺序
理解static的加载顺序测试类:public class StaticDemo { /** * 静态变量/静态代码块 -> 非静态变量/非静态代码块 -> 构造方法 */ public static int k = 0; public static StaticDemo t1 = new StaticDemo("t1"); p...原创 2020-04-17 14:46:58 · 284 阅读 · 0 评论 -
main函数只执行Thread.activeCount(),打印值为:2
写多线程的时候,想要等main中其他线程都执行完成后(其他线程功能为对一个数字inc+1),输出最终的inc值。于是写了个循环:while (Thread.activeCount() > 1) { System.out.println(Thread.activeCount()); Thread.yield(); }System.out....原创 2018-05-04 19:27:19 · 7235 阅读 · 0 评论 -
transient
1. transient:阻止变量序列化接口需实现Serializable,没有实现此接口的类将不能被序列化或逆序列化 当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口 序列化作用的对象是类的实例.对实例进行序列化,就是保存实例当前在内存中的状态.包括实例的每一个属性的值和引用等 反序列化的作用便是将序列化后的编码解码成类实例的瞬时状态.申请等同的内存...原创 2018-07-25 10:34:32 · 899 阅读 · 0 评论 -
Java中DO/BO/DTO/VO/AO/PO(附:《阿里巴巴Java开发代码》)
1. 阿里巴巴Java开发手册链接:https://pan.baidu.com/s/11I9ViOrat-Bw_HA8yItXwA 密码:x5yi2. DO/BO/DTO/VO/AO/PO PO(persistant object) 持久对象 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了。通常对应数据模型 ( 数据库 ), 本身还有部分业务逻...转载 2018-08-14 10:22:13 · 16185 阅读 · 3 评论 -
实战理解类的加载顺序(Java)
1. 类的加载顺序我们都知道类的加载顺序一般遵循:先父类、再子类,先静态变量 / 静态代码块、再普通成员变量 / 非静态代码块。但这只是一个大概的认识,实际操作往往更能加深我们的理解。静态变量及其代码块按顺序执行; 非静态变量及其代码块按顺序执行; 成员变量初始化如果会调用构造方法,则会先按顺序初始化一遍实例变量;2. 代码示例(这里排除父类、子类顺序的测试)/...原创 2019-07-19 17:36:03 · 160 阅读 · 0 评论 -
Integer缓存范围-128 to 127
1.源码/** * Returns an {@code Integer} instance representing the specified * {@code int} value. If a new {@code Integer} instance is not * required, this method should generally be ...原创 2019-07-19 18:19:07 · 1094 阅读 · 0 评论 -
Java虚拟机——类的加载(加载、验证、准备、解析、初始化)
生命周期类从被加载到虚拟机内存,到拆卸出内存,它的整个生命周期包括7个阶段:Loading、Verification、Preparation、Resolution、Initialization、Using、UnLoading。其中Verification、Preparation、Resolution称为“Linking”。加载、验证、准备、初始化、拆卸这5个阶段是确定的,类的加载过...原创 2019-07-29 16:24:31 · 297 阅读 · 0 评论 -
使用注解统一校验参数非空
可修改做工具类代码:1. 待校验类:public class User { @NonNull(content = "姓名不能为空", minLen = 2, maxLen = 100) private String name; public String getName() { return name; } public ...原创 2019-08-21 12:40:38 · 4604 阅读 · 0 评论 -
网络原因等需要重试服务的几种方法
动态代理(目标类需实现接口) public class DynamicProxy implements InvocationHandler { private final Object subject; private static final int RETRY_MAX_COUNT = 3; ...原创 2019-08-22 16:49:45 · 294 阅读 · 0 评论 -
Java虚拟机内存区域划分,一图搞定
一、Java虚拟机内存区域原创 2018-05-09 10:40:22 · 226 阅读 · 0 评论