java

SpringBoot LocalDateTime序列化配置

项目中用LocalDateTime替换Date后, 许多地方需要增加配置配置Json响应格式化方式注册JavaTimeModule/** * 序列化LocalDateTime */ @Bean public JavaTimeModule javaTimeModule() { JavaTi
2022-05-25

Java服务高CPU占用代码排查方法

1.查找进程通过top -c命令可以确定出现问题的进程2.查找线程 接下来就要找到这个进程中是哪个线程出现问题这个确定也是比较简单的,只需要输入命令:top -Hp PID例top -Hp 9828 3.定位代码jstack 进程PID | grep 线程id的16进制 -c 显示行数jstack
2022-03-31

MyBatis-Plus部分方法封装

在此仅记录一种思路public interface SuperMapper<T> extends BaseMapper<T> { default List<T> idNotInList(List<?> idList) { return selectList(new Quer
2022-01-29

Java Stream flatMap解析

flatMap对流扁平化处理运行如下代码 String[] words = new String[]{"Hello", "World"}; List<String> a = Arrays.stream(words) .map(word
2022-01-14

Java8 Optional 开发常见用法

class Info { String a; public String getA() { return a; } public void setA(String a) { this.a = a; } } 第一个例子针对空指
2021-12-27
观察者模式与SpringBoot应用

观察者模式与SpringBoot应用

当对象间存在一对多关系时, 则使用观察者模式(Observer Pattern). 比如, 当一个对象被修改时, 则会自动通知依赖它的对象.优点:观察者和被观察者是抽象耦合的建立一套触发机制SpringBoot应用场景在SpringBoot启动流程中org.springframework.boot.
2021-11-30

Java SPI机制与应用

SPI全称Service Provider Interface, 是Java提供的一套用来被第三方实现或者扩展的接口实际上是"基于接口的编程+策略模式+配置文件"组合实现的动态加载机制, 更是设计模式的生动体现它可以用来启用框架扩展和替换组件. SPI的作用就是为这些被扩展的API寻找服务实现我们一
2021-11-29
Java JNI 调用 C++方法 基于 IDEA Visual Stutio 2019

Java JNI 调用 C++方法 基于 IDEA Visual Stutio 2019

JNIJava Native Interface首先写一个java类package com.test; public class JNI { //native关键字 public native int add(int a, int b); } 执行javah命令注意路径我的JN
2021-07-20

JUnit 模拟多线程 逻辑不执行

@Test public void test() { new Thread() { @Override public void run() { //logic } }.star
2021-03-03

Java 获取当前方法的被调用信息

Thread.currentThread().getStackTrace();
2021-01-28

Seata全局事务隔离性

在数据库本地事务隔离级别 读已提交(Read Committed) 或以上的基础上,Seata(AT 模式)的默认全局隔离级别是 读未提交(Read Uncommitted) 。如果应用在特定场景下,必需要求全局的 读已提交 ,目前 Seata 的方式是通过 SELECT FOR UPDATE 语句
2021-01-26

Java 建造者模式

建造者模式建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。介绍意图:将一个复杂的构建与其表示相分离
2021-01-25

各平台时间格式

javayyyy-MM-dd HH:mm:ss2021-01-18 13:05:25mysqlDATE_FORMAT(time,'%Y-%m-%d %H:%i:%s')2021-01-18 13:05:25sql serverSELECT CONVERT(varchar(100), GETDATE(
2021-01-18

Dubbo服务降级-Mock

模块A依赖模块B, 当模块B无法启动或无法提供服务时, 需要进行服务降级 @Reference(version = "${bs.service.version}", timeout = 500000, retries = 0, check = false, mock = "fail:com.code
2021-01-12

Java操作Redis的常见误区

不能使用 keys * 命令不能在set中存放大量数据
2021-01-11

Java 单例模式

双重校验懒汉式单例public class Singleton { //1. 避免jvm指令重排 由于JVM具有指令重排的特性,执行顺序有可能变成 1-3-2。指令重排在单线程下不会出现问题,但是在多线程下会导致一个线程获得一个未初始化的实例。例如:线程T1执行了1和3,此时T2调用 ge
2021-01-06

Java 工厂模式

public class Rectangle implements Shape { @Override public void draw() { System.out.println("Inside Rectangle::draw() method."); } }
2021-01-02

Java 模板模式

public abstract class Template { public final void templ() { System.out.println("开始"); code(); System.out.println("结束"); } public abstract v
2021-01-02

Java 装饰者模式

接口Printerpublic interface Printer { void start(); void print(); void stop(); } 实现类 HPPrinter public class HPPrinter implements Printer {
2021-01-02
Java Proxy.newProxyInstance动态代理

Java Proxy.newProxyInstance动态代理

定义接口public interface Student { void buy(); String talk(); } 实现类public class Lisi implements Student { @Override public void buy() { System.ou
2021-01-02