- 博客(29)
- 收藏
- 关注
原创 eureka集群注册机制
2、客户端直接注册的service会有客户端的信息,被直接注册的service a如果注册到其他service b,那么b也会有客户端的信息,但是如果service b还注册给了其他service,则其他service不会有客户端的信息。eureka7001 注册到eureka7002,eureka7002注册到eureka7003,eureka7003注册到eureka7001。1、客户端注册到多个service,优先第一个生效,其他的不生效,只有第一个service异常之后才会启用第二个。
2023-08-14 14:47:05
112
原创 springboot通过kubernetes的configMap挂载配置文件
【代码】springboot通过kubernetes的configMap挂载配置文件。
2023-07-31 16:47:37
233
原创 mybatisplus自动生成代码
mybatisplus自动生成代码pom文件生成类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/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
2022-03-13 17:07:44
184
原创 日志配置文件logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?><!--%p:输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL%r:输出自应用启动到输出该日志讯息所耗费的毫秒数%t:输出产生该日志事件的线程名%f:输出日志讯息所属的类别的类别名%c:输出日志讯息所属的类的全名%d:输出日志时间点的日期或时间,指定格式的方式: %d{yyyy-MM-dd HH:mm:ss}%l:输出日志事件的发生位置,即输出日志讯息的语句在他所在类别的第几行
2021-10-15 14:55:56
174
原创 springboot项目结构
springboot项目结构源代码目录结构源代码目录结构说明bo:用于本应用内的业务数据传输dto:用于微服务间的业务数据传输entity:和数据库表对应的对象vo:controller的输入输出参数对象repository:数据库操作TestRepository.java:针对某个表的操作,统一数据库操作入口mapper:mybatis接口资源目录结构...
2021-10-13 14:54:26
96
原创 Condition无法指定唤醒线程,Condition本身是无法控制线程执行流程的
Condition 可以指定唤醒线程?先说说问题的起源,最近在网上看到一个网友提问,说是看到了一个教学视频,讲到了线程的执行顺序问题,有一个疑惑,先将代码贴出来。/** * @describe: 测试 * @author: sunlight * @date: 2021/7/31 11:24 */public class Test { public static void main(String[] args) { Loop loop = new Loop();
2021-07-31 12:33:47
284
原创 集群和分布式
集群什么是集群集群,就是把一组相同或者相似的事物组合在一个集合中,从计算机的角度来讲,就是把一个系统,在不同的服务器中多次重复部署。集群中的单体所进行的操作或者功能具有相同或者相似性。举个生活中的例子,楼下早餐店的是两口子在卖,买早餐的时候,不管是向老板还是老板娘都可以买,他们也各自收钱,拿东西,包装,给客人,做的工作都是一样的,这个叫集群。集群的特点数量上 :集群在数量上必须是多个体的,一台服务器不能叫集群;功能上:集群在功能上具有相同或者相似性,完全没有相同点的服务器组合不能叫集群;为什
2021-07-25 21:29:40
105
原创 应用服务器和数据库时间不一致,以及不同应用服务器时间不一致的问题
问题描述今天在生产上遇到一个这样的问题,通过某个功能配置参数,先弹出一个窗口,输入完成后,调用后台接口查询刚刚配置数据,结果出现了配置后的数据无法查询的问题,该问题出现频率很高,但是在测试环境又无法重现。配置的数据在经过一段时间后又可以查询的到,表现的形式具有延时性。问题排查开始认为是前端的问题,在没有等待第一个结果返回就调用查询接口,经过排查不是,又经过代码复查,发现在插入数据时,使用配置生效时间为应用服务器时间,但是查询时,查询的条件为生效时间在数据库系统时间之前的,而刚刚好两台应用服务器的某一台
2021-07-22 00:06:00
2548
原创 Springboot 集成线程池
项目背景: 在某次项目中,需要对用户的评分进行计算,评分分5个大项,每个细项又分8个大项,每个细项的数据都来源于另外一个数据查询服务,数据查询服务的接口平均响应时间大概是100ms,查询到数据后还有进行加工处理,评分的要求是要再2s内完成,如果使用常规的顺序执行,时间至少是5 * 8 * 0.1 = 4s,也就是评分接口响应时间超过4s。问题分析: 数据的调用接口之间没有依赖关系,因此可以使用多线程来调用数据接口,等所有数据返回后,再统一加工处理,所以问题就变成以下处理点:...
2021-07-14 19:44:07
1080
转载 redis缓存雪崩,缓存穿透,缓存击穿的解决方法
一、缓存雪崩缓存雪崩表示在某一时间段,缓存集中失效,导致请求全部走数据库,有可能搞垮数据库,使整个服务瘫痪。使缓存集中失效的原因:1、redis服务器挂掉了。2、对缓存数据设置了相同的过期时间,导致某时间段内缓存集中失效。如何解决缓存集中失效:1、针对原因1,可以实现redis的高可用,Redis Cluster 或者 Redis Sentinel(哨兵) 等方案。2、针对原因2,设置缓存过期时间时加上一个随机值,避免缓存在同一时间过期。<?php $redis
2021-06-26 19:15:21
113
原创 mybatis 没有实现类,如何执行sql
提问 大家都知道,mybatis通过接口类定义增删改查方法,然后有个一一映射的mapper文件,在执行sql时,没有接口的实现类,
2021-06-20 20:31:11
549
原创 数据库的ACID特性
原子性:记录之前的版本,允许回滚一致性:事务开始和结束之间的中间状态不会被其他事务看到隔离性:适当的破坏一致性来提升性能与并行度 例如:最终一致~=读未提交。持久性:每一次的事务提交后就会保证不会丢失...
2021-06-17 22:22:37
84
原创 设计模式-简单工厂模式
什么叫简单工程模式?就是把复杂对象的创建过程抽离到一个工厂类中,也就是将逻辑集中到一块,防止逻辑变动时,需要多处修改。简单工厂模式在日常使用中并不一定显式的定义一个工厂类型,将逻辑集中的类和方法,都可以...
2021-06-02 21:53:00
60
原创 快速排序
快速排序是冒泡排序的升级版本,使用的是分治和递归的思想,具体代码如下:package com.test;import java.util.Arrays;/** * @describe: 快速排序 * @author: sunlight * @date: 2021/5/19 20:18 */public class QuickSort { public static void main(String[] args) { int[] arr = {5, 7, 2,
2021-05-20 00:20:15
79
原创 Date 与 LocalDateTime 转换以及LocalDateTime 和字符串互转
LocalDateTime 和字符串互转 private static void testDateTimeFormatter() { // 日期 ---> 字符串 LocalDateTime localDateTime = LocalDateTime.now(); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
2021-05-14 10:37:06
716
原创 设计模式之模板方法模式
背景最近在做一个商管系统,有这样一个场景,当操作员提交审核后,需要创建一个待办信息,当具有审核权限的管理员登录系统后,在首页展示一个待办消息提示,当管理员审核通过后,又会创建新的待办信息,当具有二级审核权限的管理员登录系统后,同样可以看到一个待办消息,同理,如果审核未通过,也需要创建一个待办信息给提交资料的操作员,当操作员登录系统时,提示其去修改资料再次提交,此外,当待办事件处理完成后,需要将该待办信息更新为已经处理完成,背景表述完毕。分析以创建待办为例,根据需求的背景来分析,从提交到初审.
2021-04-21 23:54:49
55
原创 mybatis-plus 拦截器敏感字段加解密
背景数据库在保存数据时,对于某些敏感数据需要脱敏或者加密处理,如果一个一个的去加显然工作量大而且容易出错,这个时候可以考虑使用拦截器,本文针对的是mybatis-plus作为持久层框架,其他场景未测试。代码如下:一、查询拦截器package com.sfpay.merchant.service.interceptor;import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;import com.sfpay.merch.
2021-04-07 11:01:22
4787
5
原创 CLASS 类型获取的三种常见方式
背景反射是java中常用的语法结构,在很多场景中都用的到,反射的前提条件是要能获取到class对象,以下大概是获取class对象的三种常见方式:场景一:这是最简单的场景,即在开发期就已经知道需要反射的类型,可以直接使用类名.class方式获取: public static void main(String[] args) { //方式一 Class clazz1 = String.class; }场景二:需要反射的对象是存在配..
2021-03-31 16:09:47
1078
原创 oracle数据库mybatis-plus生成主键方法
背景项目中往表中插入数据时,需要有物理主键,项目使用的是oracle数据,所以不能使用数据自增字段,对于自己新表,可以使用mybatis-plus的默认主键,即通过雪花算法得到的19为数字型主键,但是由于某些原因,有些历史遗留的表主键长度没有19位,也不好修改数据库。解决办法可以通过序列来添加主键,主要过程如下:创建oracle序列 配置mybatis-plus主键策略 /** * 使用序列生成指定主键 * * @return */.
2021-03-29 18:43:40
1027
2
原创 mybatis-plus更新数据库字段为null
背景在项目过程中,信息的录入有个需要是有联动效果的,比如,录入用户信息时,如果性别选择女,则需要填入是否生育,如果是男,则没有。如果有用户先选择了性别女,录入了已经生育字段信息,然后又把性别改成了男,这样数据库的字段就会变成,性别男,已生育这样的奇怪组合,因此,需要把是否生育字段的值改成空值,当然以上例子并不十分准确,但是类似的场景比比皆是。问题项目使用的持久层框架是mybatis-plus,正常来说mybatis-plus是有空值判断,如果更新的对象(比如UserDO)中某个值为空,my.
2021-03-29 17:27:47
1800
2
原创 spring使用Transactional事务管理
背景在公司项目过程中,当需要使用事务管理时,统一的处理方式是在服务的启动类中添加 @EnableTransactionManagement ,然后在需要事务控制的方法上加上注释@Transactional(rollbackFor = Exception.class),基本就能实现事务管理。问题发现有时候在方法上添加注释@Transactional(rollbackFor = Exception.class)后事务并没有生效,包括改成事务的传播級別没有生效和方法没有进行事务管理。经过.
2021-03-29 16:41:47
132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人