自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分库分表(以MySQL为例说明)

分页时,根据时间排序,将最后一条数据的时间传到分页参数里,然后在每个节点查询大于这个时间的数据,然后在业务层面对数据聚合汇总,做内存排序后返回。超5000万数据,B+树深度可能会到4层,B+树越深,查找数据耗时越长。③一致性hash:使用hash取模方式,前期如果未做好规划,后期还是需要扩容二次分表,表数量需要增加,所以hash值需要重新计算,这时候就需要迁移数据了。未分库分表前,单库单表使用本地事务就好了,但是分库分表后,数据落到了不同库表中,传统事务处理方式就不行了,就要用到分布式事务。

2024-02-23 14:57:38 575 3

原创 使用多线程无法收集到子线程的日志

解决:创建多线程的时候使用org.slf4j.MDC把主线程的信息映射到子线程。问题:使用多线程的时候日志收集只能收集到主线程的,子线程的日志收集不到。

2023-10-26 19:58:16 369 1

原创 springboot项目获取包下有RestController注解的class

【代码】springboot项目获取包下所有RestController的class。

2023-10-20 18:02:03 494

原创 线程池的使用

【代码】线程池的使用。

2023-07-07 15:40:13 139

原创 mybatis-plus实现物理分页

【代码】mybatis-plus实现物理分页。

2023-06-29 18:25:03 244

原创 docker部署项目获取不到项目目录下的文件

问题:docker部署springboot项目,获取不到项目目录或者获取到的项目目录不准确,导致resources下的文件也读取不到。linux机器也不能放文件,所以拿不到文件。解决:创建一个临时文件夹,把resources下的文件写到临时目录,然后读取临时目录的数据就可以了。

2023-05-09 11:20:20 1580 1

原创 Springboot访问webapp下的文件

问题:springboot项目,有html的静态文件,启动springboot项目后访问不了静态文件。分析:编译的时候没有把静态文件编译进target/classes下。问题解决:pom文件下build节点下添加resources节点。重新编译,发现静态文件编译到了classes下,访问成功。

2023-03-31 10:44:27 569

原创 git回滚到某一个版本没有回滚记录

git reset --hard 要加滚的版本号。

2023-02-13 17:55:46 279

原创 获取所有controller下面接口的url

一、有个需求是获取所有contrller下的接口url。2.用反射拿到注解上的value值,拼接起来就可以啦。二、自己一个一个统计太麻烦。1.扫描包下所有类的工具包。

2022-11-18 17:49:38 827

原创 git上push代码错误回退代码

回退代码:git reset - - hard 版本号。点history查看提交记录,强制提交:git push -f。去git上找到要回退的版本号。

2022-11-10 19:54:35 476

原创 实体字段大写,返回给前端变小写了

解决 :实体类加注解。

2022-09-02 16:12:50 638

原创 JDK动态代理

可以在方法前后做统一的处理,比如:事务处理、日志统计理解动态代理原理,实现代理工厂。jdk动态代理是基于接口的。所以被代理的类必须实现接口。1.Proxy类的静态方法,创建代理实例public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, Inv

2022-06-14 18:49:52 164

原创 redis基础

redis基本命令:启动:1.bin目录下 ./redis-server2.指定配置文件 ./redis-server ../redis.conf (配置所在目录)关闭服务:1.ps -ef | grep redis 查询redis的pid kill -9 pid杀掉2.bin目录下./reids-cil shutdown开启外网访问:修改配置文件redis.conf1.bind 127.0.0.1 改为 bind 0.0.0.02.protected-mode y.

2022-03-21 11:20:36 836

原创 springboot-redis基本用法

import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.data.redis.core.*;import java.util.List;import java.util.Optional;.

2022-03-18 17:03:39 1326

原创 alibaba-seata实现

seata是什么?seata是来处理分布式服务之间互相调用的事务问题。Seata术语TC (Transaction Coordinator) - 事务协调者维护全局和分支事务的状态,驱动全局事务提交或回滚。TM (Transaction Manager) - 事务管理器定义全局事务的范围:开始全局事务、提交或回滚全局事务。RM (Resource Manager) - 资源管理器管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

2022-02-24 15:20:01 964

原创 alibaba-sentinel实现

Sentinel 是什么?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。sentinel替代了netfix的histrx的服务降级、服务熔断、服务降级。sentinel下载地址https://github.com/alibaba/Sentinel/releasessentinel-dashboard下载jar包启动就可以访问启动命令:java -jarsentinel-dashbo.

2022-02-24 11:20:49 298

原创 springcloud-alibaba-nacos-config实现

微服务架构下关于配置文件的一些问题:配置文件相对分散。在一个微服务架构下,配置文件会随着微服务的增多变的越来越多,而且分散 在各个微服务中,不好统一配置和管理。 配置文件无法区分环境。微服务项目可能会有多个环境,例如:测试环境、预发布环境、生产环 境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们去各个微服务下手动 维护,这比较困难。 配置文件无法实时更新。我们修改了配置文件之后,必须重新启动微服务才能使配置生效,这对一 个正在运行的项目来说是非常不友好的。配置中心的思路

2022-02-19 15:50:01 781

原创 springcloud-alibaba-nacos实现

nacos是什么?Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。可以更容易的构建。nacos替代了netfix的eureka服务注册中心和config的配置中心功能。nacos中文文档https://nacos.io/zh-cn/index.htmlnacosGIT地址https://github.com/alibaba/nacosnacos下载地址https://githu

2022-02-19 14:21:24 517

原创 spring-aop切面实现

aop是什么我们将记录日志功能解耦为日志切面,它的目标是解耦。进而引出AOP的理念:就是将分散在各个业务逻辑代码中相同的代码通过横向切割的方式抽取到一个独立的模块中!著作权归https://pdai.tech所有。AOP 有哪些应用场景?举几个例子:记录日志(调用方法后记录日志) 监控性能(统计方法运行时间) 权限控制(调用方法前校验是否有权限) 事务管理(调用方法前开启事务,调用方法后提交关闭事务 ) 缓存优化(第一次调用查询数据库,将查询结果放入内存对象, 第二次调用,...

2022-02-16 14:34:50 397

原创 springcloud-config实现

具体实现在gitee新建一个仓库,加几个配置文件。新建config服务端项目cloud-config-server3344pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:

2022-02-14 14:20:16 372

原创 springcloud-gateway实现

Spring Cloud Gateway 的三大核心概念Route (路由): 路由是构建网关的基本模块,它由 ID,目标 URI,一系列的断言和过滤器组成,如果断言为true则匹配该路由Predicate(断言):参考的是 java8 的 java.util.function.Predicate 开发人员可以匹配 HTTP 请求中的所有内容(例如请求头或请求参数),如果请求与断言相匹配则进行路由Filter(过滤):指的是 Spring 框架中 GatewayFilter 的实例,使用过滤器,可以

2022-02-12 14:12:30 445

原创 springcloud-hystrix实现

服务熔断服务降级服务限流

2022-02-11 14:49:29 424

原创 mybatis拦截器Interceptor

问题:想把整个项目实体包含caseId字段的所有含有Bigdecaml类型的字段动态设置精度。解决:自己写一个类实现接口org.apache.ibatis.plugin.Interceptor几个小问题1.Interceptor接口不能注入业务代码的service(可能是业务service比Interceptor迟加入spring容器,加载Interceptor的时候还是空的),但是可以注入ApplicationContext.2.MetaObject对象的setValue方法可以对插入之前

2022-01-25 10:54:35 834

原创 springcloud之openFeign使用

什么是openFeign?openfeign在springcloud中的角色是服务调用,没有openfeign的时候呢,我们用RestTemplate调用服务,但是在实际开发中,对服务的调用不止一个地方,所以openfeign在此基础上又做了一次封装。openfeign集成了ribbon和RestTemplate,我们只需要创建接口加注解就可以实现跨服务调用,符合我们程序员的对接口编程的习惯。openFeign实现1.创建FeignClient接口 ,加注解FeignClient,value为服

2022-01-20 23:48:01 839

原创 springcloud之ribbon的使用

springcloud-ribbon是什么?ribbon是netflix开发的一套负载均衡的工具,只要为ribbon提供应用程序名,就可以实现负债均衡。ribbon提供了很多负载均衡算法。也就是com.netflix.loadbalancer.IRule接口的实现类。我们也可以自己定义负载均衡算法。ribbon架构图ribbon具体代码实现1.首先我们需要一个eureka注册中心,最少两个服务提供者,一个服务消费方。项目结构:2.客户端我们需要导入eureka客户端的pom.

2022-01-19 22:16:06 1404

原创 springcloud之eureka项目搭建

eureka是什么?eureka是netflix开的的一套服务发现框架。在框架中的主要核心角色有,服务发现,服务注册和服务提供。eureka服务集群搭建1.项目结构2. 新建父级项目,父级项目pom文件,版本统一<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XML

2022-01-18 22:08:55 1850 1

原创 一款比PowerDesigner好用的uml建模工具chiner

CHINER首页、文档和下载 - 元数建模 - OSCHINA - 中文开源技术交流社区chiner,发音:[kaɪˈnər] [CHINER元数建模-3.0],历时三年,几经磨难,匠心打造,浴火重生。做一款丰富数据库生态的,独立于具体数据库之外的,数据库关系模型设计平台。 元数建模平台,使用React+Electron+Java技术体系构建。 1. 前世今生 2018年初,我和...https://www.oschina.net/p/chiner...

2022-01-13 16:26:05 1154

原创 每天一道面试题

java面试

2022-01-05 10:13:01 166

原创 java集合

集合架构图List集合特点Vecter:线程安全,ArrayList:线程不安全,底层实现数组,有索引,查询快,修改快。LinkedList:线程不安全,底层实现双向链表,增加和删除快。·ArrayList源码分析先看看构造方法: /** * 给定初始大小实例化对象 * @param initialCapacity */ public ArrayList(int initialCapacity) { if (initi.

2021-11-23 14:51:49 253

原创 java-IO流

File类java.io.File:文件夹和文件的对象表示。 作用:操作文件和文件夹,可以对文件和文件夹进行增、删、重新命名操作。但是File类不能访问文件里面的内容,这个时候就需要IO流了。 在java中要表示一个文件或文件夹的真实存在,那就必需要有一个File对象。但是java中有一个File对象,可能没有一个真实存在的文件或文件夹。 File架构图,构造方法。实现了Serializable接口,告诉JVM是可序列化的。File类的构造方法:...

2021-11-18 16:41:56 216

原创 mybatis-plus统一处理数据权限

问题:项目要求数据权限配置查询,全部、自定义、部门、部门及下级部门、个人。要求做统一处理。 分析: 数据权限精确到个人。那么每张表里面都要有创建人字段。每次插入数据都要保存创建人。查询的时候才能区分。 mybatis-plus统一处理创建时间,创建人,更新时间,更新人:统一处理创建人 查询的时候每个查询加条件代码太复杂。所以sql加统一处理例: SELECT %s FROM (%s) temp_data_scope WHERE temp_data_scope.%s IN (%s) 第一

2021-07-14 17:09:53 9289 14

原创 springboot设置双数据源

开发项目的时候一个项目要访问不同的数据库,所以要用到双数据源首先配置类:url 账号密码自行改。我的是两种不同类型的数据库,相同的也是一样的。 datasource: type: com.alibaba.druid.pool.DruidDataSource db: jdbc-url: jdbc:postgresql://172.16.20.58:5432/zrzy_gis username: ${MYSQL-USER:postgres} p

2021-07-08 17:00:23 328

原创 linux安装nginx并开机启动

nginx下载地址:https://nginx.org/download/## 解压tar -zxvf nginx-1.9.9.tar.gz##进入nginx目录cd nginx-1.9.9配置./configure --prefix=/usr/local/nginx编译make安装make install## 配置vue压缩./configure --prefix=/usr/local/nginx --with-http_gzip_static_modu

2021-07-08 16:28:11 233

原创 linux安装redis并开机启动

安装redis下载地址:https://redis.io/download下载后copy到linux机器解压:tar -xvf redis-5.0.0.tar.gz 复制并修改名字redis-5.0.0.tar.gz 到/usr/local下mv redis-5.0.0 /usr/local/redis安装gcc环境 由于redis是由C语言编写的,它的运行需要C环境,因此我们需要先安装gcc。安装命令如下:[root@localhost mnt]# yum...

2021-07-08 16:20:32 188

原创 linux安装mysql并设置开机自启

安装mysql下载地址https://downloads.mysql.com/archives/community/下载好的tar包放到linux机器上解压tartar -xvf mysql-5.7.26-linux-glibc2.12-x86_64.tar把mysql-5.7.26-linux-glibc2.12-x86_64.tar移动到/usr/local下面并且改名为mysqlmv mysql-8.0.24-linux-glibc2.12-x86_64 /usr/loc.

2021-07-08 16:11:19 9700

原创 springcloud项目部署到Linux多服务启动脚本和开机自启

脚本 java.shexport修改成自己的项目路径和项目别名端口号跟每个微服务的端口号一样,跟yml配置的一样修改脚本中$符号的脚本变量,跟export的一样因为项目写的是全路径,例:/opt/apps/zrzy/okayx/okayx-register/okayx-register.jar所以放在linux的任何地方都可以执行。启动项目:./java.sh start停止项目:./java.sh stop重启项目:./java.sh restartjava.sh如下.

2021-07-05 11:41:32 1176 4

原创 Springboot加Aspectj注解方法实现aop切面

一、准备1.springboot的demo项目一个。2.maven的xml配置 ,spring-boot-starter-web:springboot启动需要的类。spring-boot-starter-aop:开启aop,必需有,没有完成不了切面。aspectjrt:切面所需要的类和注解都在里面。<dependency> <groupId>org.springframework.boot</groupId> <artifa

2021-06-25 15:46:17 724

原创 JSON数据转各种类型的方法

JOSN数据转各种类型一.json数据转list,map(只需要部分数据可以用)1.maven的pom文件<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.75</version> </dependency>2.这里是我.

2021-05-20 15:52:26 1918 1

原创 无限递归(StackOverflowError);嵌套异常为com.fasterxml.jackson.databind.JsonMappingException:无限递归

出现错误:org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (t...

2021-05-11 17:05:29 1598 1

原创 mybatis-plus反向生成实体和mapper

反向生成只需要一个main方法就可以了import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.DataSourceConfig;import com.baomidou.mybatisplus.generator.config.GlobalConfig;import com.baomidou.mybatisplus.generator.confi

2021-02-02 16:41:33 392

空空如也

空空如也

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

TA关注的人

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