自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 SpringBoot3整合Mybatis plus

我们在main方法有个注解,配置我们的mapper类路径后,Spring Boot 会帮我们生成bean放到IOC容器中,这样我们就不用每个mapper类写一个@Mapper注解了。启动成功后,调用我们的接口,就能够获取数据了。我们使用postman调用截图如下:当我们在。

2024-04-13 17:27:15 783

原创 算法小本:前缀和数组

基本思路首先,我们会有一个原始数组,例如 int[] arr = {1, 4, 5, 9, 7, 2}。然后会要求我们求解某一段数组的累加和是多少,比如让我们求索引 1 ~ 3 的累加和,即求解answer = arr[1] + arr[2] + arr[3]。一般情况下,我们的思路为遍历数组需要的索引位置,累加得到结果。但是,如果我们如果需要频繁去得到某一段数组的累加和,那么每次计算的时间复杂度就是 O(n)。现在,我们就用累加和的思路去解决这个问题,使得时间复杂度变为 O(1)。第1步,根据

2022-01-16 11:52:33 211

原创 springboot实现多租户动态路由代码

01 背景当我们在做项目时,特别是ToB的项目,会发生一种场景,即大的业务流程是一样的,但是在某个节点,不同的租户有不同的业务需求。这就需要我们针对不同的租户将代码路由到不同的实现上面,从而执行正确的业务逻辑。如下图所示,我们现在有个业务逻辑,需要依次执行A、B、C、D四段代码逻辑。但是B和D节点,不同的租户有不同的业务逻辑,需要单独去实现,这时就需要我们能通过租户标识动态的路由到自己的实现上面。02 思路我们上节图中的B节点为例。首先,我们得创建一个X租户和所有租户的父类,比如我们这里就叫

2021-03-18 15:56:10 1925 7

原创 Mybatis 通过拦截器动态修改SQL

01 使用场景当我们在多租户的项目中,编写SQL语句都要带上tenant字段,用于区分不同的租户只能操作自己的数据。比如,像下面的SQLselect * from member where id = #{id} and tenant = #{tenant}但是,我们的tenant属性一般是放在一个ThreadLocal的变量中的,便于我们随时获取该属性进行一些业务处理。public class TenantContext { private static final ThreadLoca

2021-03-17 18:47:51 3971 2

原创 SpringBoot 使用 beforeBodyWrite 实现统一的接口返回类型

通常我们在 Spring Boot 的项目中,会使用一个类来作为统一的接口返回,比如这样:import lombok.Data;@Datapublic class Result<T> { private int code; private String message; private T data; public static <T> Result<T> success(T t) { Result<T&gt

2020-07-20 20:06:13 15798 10

原创 排查 JVM 总是 full GC 的问题

有时候,full GC 过多,会占用大量的 CPU 资源,导致 JVM 发生过多的 STW 问题我们开始写触发该场景的业务代码import java.util.concurrent.TimeUnit;/** * @author [email protected] * @date 2020/6/8 **/public class GcTest { public static void main(String[] args) throws InterruptedException {

2020-06-08 14:12:16 306

原创 排查 CPU 100% 的 Java 程序

这种问题,一般开发人员还是很难遇到,或者说是遇到了也会交给很厉害的人去处理,所以这里我们就自己模拟场景,然后去排查解决。当然实际生产情况查询原因更难,有很多复杂的情况。话不多说,首先是编写触发的代码public class CpuTest { public static void main(String[] args) { while (true) { /* */ } }}然后我们执行代码在这里我是在 centos 系统执行

2020-06-08 12:48:50 198

原创 Spring Cloud 整合 seata 实现分布式事务

伴随着越来越多的项目使用微服务架构或者把原来的单体应用改造为微服务,每个微服务都有自己的数据库后,分布式事务就是我们必须要考虑的问题了。阿里巴巴开源的seata就是我们很好的一个选择。优点:开源非侵入式的,微服务配置好以后,一个注解即可开启分布式事务。1. 版本框架版本Spring CloudGreenwich.RELEASESpring boot2....

2020-04-14 21:18:45 1450 5

原创 springboot整合redisson

01 搭建redis服务我是在自己的云服务通过docker搭建了一个单机的redis服务docker run -d --rm --name redis5 -p 6379:6379 redis --requirepass "123456"02 创建应用1.在pom.xml文件导入redisson依赖<dependency> <groupId>org.red...

2019-12-12 15:12:10 2614 3

原创 JDK8源码阅读:wait方法和sleep方法的区别

wait和sleep的区别,这真是在面试中一个高高高高频的面试题。哈哈,要想说完这两个家伙的所有区别还是不太容易的,今天我们就来总结下这两个方法的区别。把小本本拿出来,一条条记下来。我们先来看看源码,是不是一听要看源码就脑阔疼,放心,这两个方法源码还是容易理解的。因为它们两个是native方法????。 /** * Causes the current thread to w...

2019-12-03 14:22:11 385 4

原创 设计模式之路:策略模式

01 说明定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。02 UML图03 代码实现public abstract class AbstractOperation { public abstract int calculate(int m, int n);}public class AddOperation extends AbstractOperat...

2019-11-20 14:52:42 106

原创 Spring Cloud Alibaba实战(4) - 整合dubbo实现rpc调用

现在,我们也可以使用dubbo作为rpc框架,来实现服务提供者和服务消费者。01

2019-11-20 14:47:25 3134 4

原创 Spring Cloud Alibaba实战(3) - nacos作为配置中心

nacos除了能作为注册中心以外,还可以作为配置中心。01 在nacos编写配置

2019-11-20 11:23:45 205

原创 设计模式之路:七大设计原则

01 单一职责原则单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。02 开放-封闭原则03 依赖倒置原则04 里氏替换原则

2019-11-18 19:53:52 99

原创 数据结构之路:稀疏数组

假如,我们有一个二维数组array,里面大部分的数据都是0,只有两个数字不一样,分别是array[1][2] = 1 和 array[2][3] = 2。[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0][0, 0, 0, 0, 0, 0, 0...

2019-11-13 19:53:48 168

原创 设计模式之路:简单工厂模式

01 简介简单工厂模式,就是我们把需要new出来的对象放到工厂方法中进行创建。我们有一个抽象类叫Animal,每个动物都需要吃东西才能活着,所以我们在Animal类中定义一个抽象方法叫eat()。现在,我们有三种动物,分别是dog、cat和rabbit,然后我们都去继承Animal类,并实现eat()这个方法。最后,我们有一个工厂类,有一个静态方法get(String name),通过这个...

2019-10-23 11:14:58 180

原创 Spring Cloud Alibaba实战(2) - nacos服务的一些细节

在上篇文章Spring Cloud Alibaba实战(1) - 快速上手nacos注册中心,我们留了一些问题还没解决,现在我们来一个一个解决掉吧。01 访问nacos页面1.1 端口号我们打开nacos/conf/application.properties文件可以发现设置了端口号为8848,还有应用的context path 为/nacos1.2 登录的账号密码我们在访问nacos...

2019-10-09 16:24:22 176

原创 Spring Cloud Alibaba实战(1) - 快速上手nacos注册中心

Spring Cloud版本是Greenwich.RELEASESpringboot版本是2.1.9.RELEASESpring Cloud Alibaba版本是2.1.0.RELEASE01 环境准备需要在启动的机子上安装了jdk802 下载nacos的压缩包下载地址:https://github.com/alibaba/nacos/releases03 运行nacos服务...

2019-10-09 15:38:20 307

原创 springboot整合apollo配置中心

1 下载apollo源码源码地址2 使用docker-compose启动apollo进入到启动docker compose 的文件路径,我这里是在centos系统启动的apollo。我已经提前安装好docker和docker-compose。输入执行命令[root@jamie docker-quick-start]# docker-compose up启动成功后,我们就可以在浏览器...

2019-09-12 00:07:09 625

原创 springboot同一个类里的方法之间调用事务不起作用

今天在看项目代码的时候,发现在service层,有方法调用同类中的方法,SonarLint提示有bug。下图是我自己做测试时写的demo代码:经过测试发现,当A方法调用同类中带有@Transactional注解的B方法时,被@Transactional注解的B方法的事务是不起作用的。原因:spring会扫描@Transactional的类和方法,并通过动态代理实现启动事务的代理方法。这...

2019-09-06 16:53:52 5557 2

原创 springboot实现一个starter

1 pom文件引入依赖先新建一个maven工程。然后,在pom文件引入需要的依赖:<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boo...

2019-09-05 23:39:48 188

原创 Windows10系统修改hosts文件

1 进入到hosts所在的文件夹2 点击左上角的文件,打开power shell依次点击:文件 --> 打开Windows PowerShell --> 以管理员身份打开Windows PowerShell3 在PowerShell终端输入命令 notepad ./hosts4 就可以在记事本修改hosts文件,最后保存退出...

2019-08-07 17:56:24 198

原创 解决Using platform encoding (UTF-8 actually) to copy filtered resources问题

解决mvn打包部署时出现的warning问题:Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!在pom.xml文件中添加配置 <properties> <project.build.sourceE...

2019-08-07 16:15:45 1527

原创 springboot2整合thymeleaf模板引擎

1 什么是thymeleafThymeleaf是用于Web和独立环境的现代服务器端Java模板引擎。Thymeleaf的主要目标是将优雅的自然模板带到您的开发工作流程中—HTML能够在浏览器中正确显示,并且可以作为静态原型,从而在开发团队中实现更强大的协作。Thymeleaf能够处理HTML,XML,JavaScript,CSS甚至纯文本。2 使用方法2.1 在pom.xml中导入th...

2019-07-11 12:02:01 3009 1

原创 每天一道算法题:34. 在排序数组中查找元素的第一个和最后一个位置(Find First and Last Position of Element in Sorted Array)

1 问题Given an array of integers nums sorted in ascending order, find the starting and ending position of a given target value.Your algorithm’s runtime complexity must be in the order of O(log n).If ...

2019-07-11 00:14:10 194

原创 每天一道算法题:33. 搜索旋转排序数组(Search in Rotated Sorted Array)

01 问题描述Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.(i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).You are given a target value to search. If ...

2019-07-10 13:19:53 200

原创 每天一道算法题:31. 下一个排列(Next Permutation)

01 问题描述Implement next permutation, which rearranges numbers into the lexicographically next greater permutation of numbers.If such arrangement is not possible, it must rearrange it as the lowest pos...

2019-07-10 12:40:24 162

原创 springboot字段的权限控制

有些时候我们不想让一些权限不足的人看到一些敏感字段,因此我们可以使用注解+AOP+反射来实现将返回的对象中的敏感字段设置为null值。1. 编写一个注解,在属性上使用,用来控制字段的权限@Target(ElementType.FIELD)@Retention(RetentionPolicy.RUNTIME)public @interface ShowField { String...

2019-05-29 16:53:00 4023 1

原创 设计模式之路:UML类图

1 基础知识1.1 类第一层表示类名,若是一个抽像类,则类名用斜体表示,例如:类。第二层表示类的属性第三层表示类的方法注意:在第二层和第三层最前面的符号表示访问权限,例如:+、-、#。符号访问权限-private(空)(缺省,表示包级别的权限)#protected+public1.2 接口第一层表示接口名称,顶部有<&...

2019-04-08 12:54:00 262

原创 在Docker中安装MySQL8

拉取mysql镜像docker pull mysql启动容器 docker run --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -p 13306:3306 -d mysql–name:给容器起个名字-e MYSQL_ROOT_PASSWORD=123456:设置mysql的root密码为123456-p 13306:3306:宿主机的13...

2019-03-06 21:01:48 542

原创 JDK8源码阅读:HashMap

1.是什么是通过K-V键值对来保存数据的数据结构,K和V都可以为null。继承关系如下图所示:数据结构如下图所示:2.构造函数和主要属性加载因子loadFactor非常重要,这个决定了什么时候进行数组的扩容操作每次扩容时,都扩容为原来数组长度的2倍// 存放数据的数组默认初始大小为16static final int DEFAULT_INITIAL_CAPACITY = 1...

2019-03-03 00:39:26 145

原创 JDK8源码阅读:ArrayList

是什么ArrayList是一个非线程安全的集合,实现了RandomAccess接口。 JDK中写到实现了RandomAccess接口的List,用普通的for循环比增强for循环效率更高,如下面代码所示,上面的循环运行速度更快 for (int i=0, n=list.size(); i &amp;amp;amp;amp;amp;amp;lt; n; i++) list.get(i); runs faste...

2019-03-02 22:12:25 151

原创 springboot整合redis缓存

使用redis作为缓存1. 在pom.xml文件中导入依赖&lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-data-redis&lt;/artifactId&gt;&lt;/dependency&gt...

2018-11-02 13:54:31 296

原创 springboot整合zookeeper实现分布式锁

目录运行zookeeper服务springboot应用配置CuratorFramework使用zookeeper实现集群只一个应用实例执行定时任务使用zookeeper实现分布式锁使用zookeeper实现调度任务运行zookeeper服务安装jdk去官网下载zookeeper的压缩包,我这里下载的是3.4.10版本解压后进入到zookeeper-3.4.10/conf,修改zoo_sa...

2018-11-01 11:32:27 4329

原创 MySQL删除重复数据,只保留id最小的一条

SQL脚本如下所示create table `dept` ( `id` int , `name` varchar , `floor` int ); insert into `dept` (`id`, `name`, `floor`) values('1','软件部','1');insert into `dept` (`id`, `name`, `floor`) values('2',...

2018-10-11 22:15:10 2130

原创 Java的一些冷门知识点

1、注释中的代码也能执行public static void main(String[] args) { // 下面这行代码会执行,因为 \\u000d 是一个换行符 // \u000d System.out.println(&amp;amp;amp;quot;hello world&amp;amp;amp;quot;);}2、除数为0也会不报错下面的代码会在控制台打印Infinity System.out.println(1.0 /...

2018-09-21 16:55:08 2261

原创 springboot2整合kafka

一、下载和启动kafka 启动kafka服务之前要先启动zookeeper,目前kafka的压缩包中是包含zookeeper的1、从官网下载kafka的压缩包:http://kafka.apache.org/downloads 2、解压下载的压缩包 ,我本地解压后的kafka文件夹放在了E:\keluosi目录下 3、启动zookeeperE:\keluosi\kafka_2...

2018-09-14 17:42:50 9712 1

原创 去除IntelliJ IDEA中mapper.xml文件的提示和背景色

一、点击 File -&amp;gt; Settings二、点击 Editor -&amp;gt; Inspections,找到图中所示的SQL,去掉下面的No data sources configured和SQL dialect detection的勾选三、点击 Editor-&amp;gt; Colors &amp;amp; Fonts -&amp;gt; General ,打开Code,去掉Backgroun...

2018-09-07 13:42:52 4810 1

原创 JDK8源码阅读:LinkedList

是什么?LinkedList 是一个双向链表结构的集合,非线程安全。主要属性transient int size = 0;:表示集合的元素个数transient Node&amp;lt;E&amp;gt; first;:指向第一个元素transient Node&amp;lt;E&amp;gt; last;:指向最后一个元素新增方法public boolean add(E e) { ...

2018-09-06 18:36:10 137

原创 springcloud项目搭建(二):feign组件使用

搭建服务提供者1. 在pom.xml文件中导入依赖&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema...

2018-08-28 15:07:51 453

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除