合集-springboot(2)

摘要:@ConditionalOnMissingBean在很多spring框架里都得到很广泛的应用,如spring-boot-starter-security,spring-cloud-starter-oauth2中的应用。 注意@ConditionalOnMissingBean这种注解需要添加在@Bea 阅读全文
posted @ 2022-03-14 13:39 张占岭 阅读(1862) 评论(0) 推荐(1)
摘要:对于spring-security来说,当你访问一个受保护资源时,需要检查你的token,当没有传递,或者传递的token有错误时,将出现401unauthorized异常;当你传递的token是有效的,但解析后并没有访问这个资源的权限时,将返回403forbidden的异常,而你通过拦截器@Res 阅读全文
posted @ 2022-03-28 11:25 张占岭 阅读(1146) 评论(0) 推荐(0)
摘要:使用springboot进行文件上传时,你将文件存到磁盘的一个位置,然后通过映射,将这个文件夹映射成应用程序访问的一个路径即可。 资源文件映射 @Configuration public class WebAppConfigurer implements WebMvcConfigurer { @Au 阅读全文
posted @ 2022-04-20 15:17 张占岭 阅读(368) 评论(0) 推荐(0)
摘要:对于一些带着固定标签的字段来说,我们通常把它们配置到字段中,而在数据库中存它们的字典code,或者是字典主键,不是一个整型的数字,而在前端显示时,有时需要将它们翻译成名称,这时后端可以帮他们进行翻译,或者前端通过code自己使用字典翻译;下面说一下第一种,后端在View model中将integer 阅读全文
posted @ 2022-04-18 21:28 张占岭 阅读(348) 评论(0) 推荐(1)
摘要:日期类型,我们需要统一它在被序列化后的格式,序列化是指把java类型通过网络系统或者IO进行持久化,如把一个java对象保存到txt文件里,或者把java对象保存到redis里,又或者把java对象通过网络以JSON的格式输出到浏览器上。 jackson的日期序列化 public class Jac 阅读全文
posted @ 2022-04-16 22:43 张占岭 阅读(385) 评论(0) 推荐(0)
摘要:数据库字段为int类型 实体字段为了可读性强,使用枚举类型 默认情况 一般来说,数据库为varchar时,你的枚举元素直接会进行转换 字段为整型 这些如果你是mybatis-plus,可以使用如下default-enum-type-handler参数开启@EnumValue特性,将每句的@EnumV 阅读全文
posted @ 2022-03-31 20:28 张占岭 阅读(706) 评论(0) 推荐(0)
摘要:前后一体的应用,是这样进行认证的 用户向服务端发送验证信息(用户名、密码); 服务端验证成功就向用户返回一个sessionid; 服务端保存了这个session_id对应的信息,并写入用户的 Cookie; 之后的每一次请求,都会通过Cookie,将session_id传回服务端,服务端收到sess 阅读全文
posted @ 2022-08-17 15:40 张占岭 阅读(1925) 评论(0) 推荐(0)
摘要:maven进行docker打包与推送 docker.host 表示本地的docker主机,tcp走2375端口 docker.registry 表示私服地址,本例使用harbor做为私服 <plugin> <groupId>io.fabric8</groupId> <artifactId>docke 阅读全文
posted @ 2022-07-28 11:13 张占岭 阅读(808) 评论(0) 推荐(0)
摘要:Maven打包发布版本可能会遇到自己的提交不起作用的情况,排查比较困难,可能需要拉下服务器上包,反编译查看是否包含自己的提交记录。如果使用的是GIT作为SCM,可以使用 git-commit-id-plugin插件 该插件在打包时生产一个git.properties文件,里面记录本次git提交的信息 阅读全文
posted @ 2022-07-28 09:25 张占岭 阅读(738) 评论(0) 推荐(0)
摘要:@valid注解将字段上的验证信息进行处理,并统一返回到前端,而有时我们不希望将所有错误一起返回,如下 通过BindingResult接口实例,来返回第一个校验失败的消息 public CommonResult update-password(@RequestBody UserPasswordDTO 阅读全文
posted @ 2022-07-11 09:23 张占岭 阅读(1061) 评论(0) 推荐(0)
摘要:使用方法: 1.将$JAVA_HOME/jre/lib/security/Java.security内,将securerandom.source的内容改为file:/dev/./urandom即可 2.java -jar -Djava.security.egd=file:/dev/./urandom 阅读全文
posted @ 2022-07-05 08:44 张占岭 阅读(263) 评论(0) 推荐(0)
摘要:springboot2.7之前的自动装配 springboot-starter包,是一个公用组件包,它在被项目引用之后,它内部的bean被完成自动装载,这个过程通过resources/META-INF/spring.factories文件来实现的 org.springframework.boot.a 阅读全文
posted @ 2022-07-04 11:38 张占岭 阅读(518) 评论(0) 推荐(0)
摘要:# 字段注解 @TableField中的参数fill com.baomidou.mybatisplus.annotations.TableField exist 是否为数据库表字段( 默认 true 存在,false 不存在 ) strategy 字段验证 ( 默认 非 null 判断,查看 com 阅读全文
posted @ 2022-06-29 21:48 张占岭 阅读(1569) 评论(0) 推荐(0)
摘要:一般对于公用包来说,是不需要springboot启动类的,它只是一个工具,而对于包的健壮性来说,单元测试是必须的,而如果你使用下面代码声明类,将会出现,“无法找到启动类” @RunWith(SpringRunner.class) @SpringBootTest() public class Redi 阅读全文
posted @ 2022-06-28 13:03 张占岭 阅读(5181) 评论(1) 推荐(0)
摘要:1. 前言 WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-ba 阅读全文
posted @ 2023-02-01 17:25 张占岭 阅读(719) 评论(1) 推荐(0)
摘要:上一篇说了关于MDC跨线程为null的理解,而本讲主要说一下,如何去解决它,事实上,Hystrix为我们留了这个口,我们只需要继承HystrixConcurrencyStrategy,然后重写wrapCallable方法,再把这个重写的对象注册到Hystrix里就可以了,跨线程共享数据,可以使用阿里 阅读全文
posted @ 2023-01-30 15:46 张占岭 阅读(464) 评论(0) 推荐(0)
摘要:MDC概念 MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 和 logback 提供的一种方便在多线程条件下记录日志的功能,也可以说是一种轻量级的日志跟踪工具。 MDC能做什么 那么通过MDC的概念,我们可以知道,MDC是应用内的线程级别,不是分布式的应用 阅读全文
posted @ 2023-01-29 17:11 张占岭 阅读(471) 评论(0) 推荐(0)
摘要:对于logback的模板来说,我们是可以自定义的,同时它也提供了一些公开的常量,比如%level,%thread这些,我们如果希望自定义这些常量,需要实现ClassicConverter抽象类,重写它的convert方法。 系统变量 %thread 当前线程 %d{yyyy-MM-dd HH:mm: 阅读全文
posted @ 2023-01-28 09:31 张占岭 阅读(830) 评论(0) 推荐(0)
摘要:BeanFactory BeanFactory是Spring容器中的一个基本类也是很重要的一个类是Spring容器中的一个基本类也是很重要的一个类,在BeanFactory中可以创建和管理Spring容器中的Bean,它对于Bean的创建有一个统一的流程。 Spring的本质是一个bean工厂(be 阅读全文
posted @ 2023-01-19 16:24 张占岭 阅读(142) 评论(0) 推荐(0)
摘要:excel读出来的json,它是一个字符串,不是标准json,所以需要对字符串字段进行解析 复杂的excel如图 通过poi解析json,通过jackson完成对字段的解析 public static List<Map<String, Object>> read(String filePath) t 阅读全文
posted @ 2022-10-28 16:17 张占岭 阅读(238) 评论(0) 推荐(0)
摘要:redis-cluster是一个高可用,可分片的分布式redis集群解决方案,建议使用springboot2.3及以上版本的脚手架,如果是<2.3版本,你需要手动添加LettuceConnectionFactory来实现因为服务器宕机引起的节点感应功能;如果没有添加动态感应,那你的redis-clu 阅读全文
posted @ 2022-10-24 16:54 张占岭 阅读(715) 评论(0) 推荐(0)
摘要:一个start包,它不需要有springboot启动类,它只提供一切公用的功能,被其它包依赖就行了,通过META-INF/spring.factories或者META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguratio 阅读全文
posted @ 2022-10-11 10:44 张占岭 阅读(627) 评论(0) 推荐(1)
摘要:配置类 @Data @ConfigurationProperties("auth") public class AuthProperties { private String title; } 配置类的注册,需要声明@RefreshScope @Configuration public class 阅读全文
posted @ 2022-09-21 15:36 张占岭 阅读(376) 评论(0) 推荐(0)
摘要:RedisTemplate默认使用二进制hex的方式进行持久化,它对象的值存储到redis里,当然,你的对象需要先实现java.io.Serializable接口,这种方式兼容性好,速度快,存储空间小;缺点就是没有可读性,所以就有了json的序列化方式,下面总结一下。 一 JdkSerializat 阅读全文
posted @ 2022-09-16 17:20 张占岭 阅读(2291) 评论(0) 推荐(0)
摘要:对于springboot中基于方法的缓存Caching来说,我们直接以声明的方式添加,删除这些缓存,而它们在redis这种持久化产品中,通过value::key的方法组成一个redis.key,在业务方法中,可以通过这种key来手动获取它们。 注解声明 @CacheEvict(value = Cac 阅读全文
posted @ 2022-09-09 17:38 张占岭 阅读(540) 评论(0) 推荐(0)
摘要:ApplicationContextAware是一个接口,它提供一个方法setApplicationContext,当spring注册完成之后,会把ApplicationContext对象以参数的方式传递到方法里,在方法里我们可以实现自己的逻辑,去获取自己的bean,当前对接的断言等;一般用在被封装 阅读全文
posted @ 2022-09-09 10:03 张占岭 阅读(671) 评论(0) 推荐(0)
摘要:数据库说明文档,在我们开发项目时是非常必要的,有时项目交付时,客户也是需要让我们提供的,而如果人工编写,比如耗时,通过screw组件来生成文档,非常方便。 源代码和使用:https://github.com/pig-mesh/screw 添加依赖 <dependency> <groupId>cn.s 阅读全文
posted @ 2022-09-02 16:52 张占岭 阅读(209) 评论(0) 推荐(0)
摘要:首先,进行springboot2.7之后,官方不推荐使用/META-INF/spring.factories,转成和SPI比较类似的/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件, 阅读全文
posted @ 2022-08-31 16:42 张占岭 阅读(560) 评论(0) 推荐(1)
摘要:对于es的数据类型来说,如果它是一个复杂类型,而我们需要把复杂类型进行检索,那么应该定义成nested类型,而对于它的检索,如果是非集合数据,它与其它类型没有分别;而如果你的nested存储的数据是一个集合,那在进行不等于这种操作时,就需要说明一下了。 举例子 "id": "1", "operate 阅读全文
posted @ 2022-08-23 10:16 张占岭 阅读(395) 评论(0) 推荐(0)
摘要:thymeleaf在spring-mvc时代很是盛行,与freemaker组成了两大模版引擎,而进行springboot之后,很多项目都采用前后分离的模式,这使得模板引擎关注度少了;而在一些场景下,使用模板引擎还是有着不可替代的优势的,比如email模板,我们会把html模版文件和后端代码放到一个项 阅读全文
posted @ 2022-08-18 09:21 张占岭 阅读(770) 评论(0) 推荐(0)
摘要:一、SSE是什么? SSE技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端。服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,再向服务端发送请求,周而复始。 注意:因为EventSource对象是SSE的客户端,可能会有浏览 阅读全文
posted @ 2023-05-04 17:16 张占岭 阅读(4306) 评论(0) 推荐(0)
摘要:SimpleDateFormat和DateTimeFormatter都是进行日期时间格式化的工具类,后者是为jdk1.8以后的日期对象服务的,它没有线程安全的问题;而前者,是存在多线程下的安全隐患的。 作用 将日期格式化成日期/时间字符串 从给定字符串的开始解析文本以生成日期 SimpleDateF 阅读全文
posted @ 2023-04-27 14:26 张占岭 阅读(406) 评论(0) 推荐(0)
摘要:github在被大微软收购之后,推出了很多非常不错的功能,这一次把很多仓库管理合并到一起了,包括了nuget,npm,maven,docker等等,今天我们把java代码推到github的maven仓库吧! 申请一个github token 建立一个仓库,起名为maven_repo 配置你的.m2/ 阅读全文
posted @ 2023-04-25 10:39 张占岭 阅读(217) 评论(0) 推荐(1)
摘要:事实是这样的,我有个接口,这个接口不能被篡改,于是想到了比较简单的md5对url地址参数进行加密,把这个密码当成是sign,然后服务端收到请求后,使用相同算法也生成sign,两个sign相同就正常没有被篡改过。 问题的出现 接口中的参数包括userId,extUserId,时间,其中extUserI 阅读全文
posted @ 2023-04-23 17:23 张占岭 阅读(262) 评论(0) 推荐(0)
摘要:@ConditionalOnProperty注释在类或者bean方法上进行控制这个bean对象是否被注册,它是否被注册,完成依赖于ConditionalOnProperty里的value的值,为true时,表示被注册,为false表示不注册这个bean。而我们通过matchIfMissing来配置这 阅读全文
posted @ 2023-03-09 11:09 张占岭 阅读(1217) 评论(0) 推荐(0)
摘要:spi是原生java的组件,通过META-INF/services目录进行注册,通过ServiceLoader进行加载,一般可以用在组件开发中,你在公用组件中封装好逻辑,将个性化的部分抽象出一个接口,接口通过spi的方式进行加载,在外部开发人员引用你的组件之后,通过实现接口来扩展个性化的功能,再通过 阅读全文
posted @ 2023-02-07 18:13 张占岭 阅读(165) 评论(0) 推荐(0)
摘要:Java中的Locale.getDefault()获取的是操作系统的默认区域设置,如果需要获取客户端浏览器的区域设置,可以从HTTP头中获取"Accept-Language"的值来进行解析。 # 使用说明 Java网站中实现国际化(多语言支持)通常需要涉及以下几个方面: 1. 为所有可见的文本(如按 阅读全文
posted @ 2023-05-19 17:45 张占岭 阅读(3713) 评论(0) 推荐(3)
摘要:# 原因 当mysql数据库单表大于1千万以后,查询的性能就不能保证了,我们必须考虑分库,分表的方案了,还好,sharding-jdbc可以很优雅的与springboot对接,完成对mysql的分库和分表。 # 依赖整理 > 为了不影响其它小容量的表,所有添加了动态数据源,只对需要分库分表的进行配置 阅读全文
posted @ 2023-05-24 11:15 张占岭 阅读(682) 评论(0) 推荐(0)
摘要:# 超轻量级 DynamicTableNameInnerInterceptor是mybatis-plug的一个拦截器插件,可以自己定义需要拦截的表单,然后对它进行加工,这时mybatis-plus就会把SQL代码的表名加上你的这个装饰。 # 封装的思想 我们通常把mybatis做成一个包,公司其它同 阅读全文
posted @ 2023-05-24 14:07 张占岭 阅读(1670) 评论(0) 推荐(1)
摘要:日期类型的参数在从前端通过url参数传递到后端时,它会被进行格式化,如果格式化失败会出现400的错误,像日期格式默认会使用yyyy/MM/dd的格式,如果希望自己去个性化配置,我们可以通过实现WebMvcConfigurer接口的addFormatters方法来完成。 # java.time.Loc 阅读全文
posted @ 2023-05-25 09:29 张占岭 阅读(956) 评论(0) 推荐(0)
摘要:在 Java 中,没有直接支持无符号整数的数据类型。Java 的基本数据类型(如 int、long、short、byte)都是带符号的,即它们可以表示正数和负数。 > .net中每种整型都有对应的无符号类型,它不会把取值范围分成正负两个区间,只在正整数范围内取值 然而,你可以使用 Java 中的较大 阅读全文
posted @ 2023-06-08 09:46 张占岭 阅读(1722) 评论(0) 推荐(0)
摘要:# JGroups概念 在 JGroups 中,集群(cluster)是一个由多个节点组成的逻辑实体,节点可以通过一个共享的集群名称来进行连接和通信。这个集群名称可以在配置中指定或在运行时动态创建。 JGroups 提供了多种方式来创建集群,并使节点能够加入到相同的集群中。下面是一些常见的方式: 1 阅读全文
posted @ 2023-06-08 11:32 张占岭 阅读(1530) 评论(0) 推荐(0)
摘要:Spring Javaformat是Spring团队开发的一款基于Google Java Format的代码格式化工具,可以帮助Java开发者自动化进行代码格式化,提高代码质量,降低代码维护成本。 Spring Javaformat可以自定义配置文件,支持大量的代码风格配置选项,满足不同项目和团队的 阅读全文
posted @ 2023-06-13 16:29 张占岭 阅读(1130) 评论(0) 推荐(0)
摘要:# Header基础知识 HTTP 头部(HTTP Header)是在 HTTP 请求和响应中用于传递附加信息的部分。它由一个或多个字段组成,每个字段由字段名和字段值组成,中间用冒号分隔。 HTTP 头部在请求和响应中都扮演着重要的角色,用于传递关于消息的元数据和其他相关信息。以下是一些常见的 HT 阅读全文
posted @ 2023-06-20 08:20 张占岭 阅读(1901) 评论(0) 推荐(0)
摘要:状态机,包括了状态和动作,某个**状态**下,只能执行某些**动作**,如果**动作**不匹配,状态是不会进行变更了,这样就保护了我们状态字段的准备性,不能随意改变,必须按着我们**设计的规则**进行状态的轮转。 # Stateless实现的状态机 1. **Stateless**:Stateles 阅读全文
posted @ 2023-06-25 16:07 张占岭 阅读(851) 评论(0) 推荐(0)
摘要:# 起因 我们在写代码时,有时间代码过高,尤其是stream流的时间,可能有多个map,filter,sort组成,这样我们更希望看到的是一种可读性更好的风格 * 我的代码是这样的 ![](https://img2023.cnblogs.com/blog/118538/202306/118538-2 阅读全文
posted @ 2023-06-27 14:19 张占岭 阅读(2246) 评论(0) 推荐(1)
摘要:# 起因 事情是这样的,我在通过redission进行限流时,用到了在lua脚本里进行数值计算,而我在本地测试过程中,发现所有tonumber()方法时,返回值都是nil,这个原因最后找到了,是没有配置序列化的方式,出现错误提示如下: ``` org.redisson.client.RedisExc 阅读全文
posted @ 2023-07-21 17:32 张占岭 阅读(1563) 评论(1) 推荐(0)
摘要:在mybatis中,我们在insert操作之后,可以获取到自增主键的值,这个需要我们用到 INSERT INTO lawyer_id_offset (kgid) VALUES (#{kgid}) ``` # java中调用它 > 注意,这里有个坑,获取自增主键,不是获取mapper的返回值,而是从当 阅读全文
posted @ 2023-08-09 09:02 张占岭 阅读(551) 评论(0) 推荐(0)
摘要:当我们使用阿里的alibaba.fastjson2进行json序列化时,你可以通过方法参数PropertyFilter来实现对字段的获取,将需要序列化的字段写到PropertyFilter对象里,当然也可以将不进行序列化的写到这里,进行`逻辑非`操作即可 # 实体 ``` class Person 阅读全文
posted @ 2023-08-10 16:39 张占岭 阅读(1309) 评论(0) 推荐(0)
摘要:看着题目,有点一头污水吧,事实上,没有经历过,很难去说`ApplicationContextAware`在什么时候会用到,直接在一个bean对象里,你可以直接使用构造方法注入或者Autowired属性注入的方式来使用`其它的bean对象`,这在springboot里是非常自然的,也是天然支持的;但如 阅读全文
posted @ 2023-08-18 10:28 张占岭 阅读(119) 评论(0) 推荐(0)
摘要:# 应用场景 * 用户下单5分钟后,给他发短信 * 用户下单30分钟后,如果用户不付款就自动取消订单 # kafka无死信队列 kafka本身没有这种延时队列的机制,像rabbitmq有自己的死信队列,当一些消息在一定时间不消费时会发到死信队列,由死信队列来处理它们,上面的两个需求如果是rabbit 阅读全文
posted @ 2023-08-22 18:01 张占岭 阅读(1841) 评论(0) 推荐(0)
摘要:`@Autowired` 是 Spring Framework 中用于自动注入依赖的注解,通常情况下可以正常工作,但有一些情况下可能无法获取到 bean 对象: 1. **Bean未定义或未扫描到**:如果要注入的 bean 没有在 Spring 上下文中定义或者没有被正确扫描到,`@Autowir 阅读全文
posted @ 2023-09-05 15:49 张占岭 阅读(327) 评论(0) 推荐(0)
摘要:在 Spring 中,`@Autowired` 注解的使用在不同的上下文中会产生不同的效果,这取决于所在的组件或类是否由**Spring**管理。 1. **`@Aspect` 注解的使用**:`@Aspect` 注解通常用于声明切面,而切面是 Spring 管理的组件。因此,`@Autowired 阅读全文
posted @ 2023-09-06 08:38 张占岭 阅读(231) 评论(0) 推荐(0)
摘要:在工具类中封装getBean,使用哪个接口来实现 实事上,在工具类中,实现BeanFactoryPostProcessor和ApplicationContextAware接口后,使用它们构造方法里的对象ConfigurableListableBeanFactory和ApplicationContex 阅读全文
posted @ 2023-09-26 09:04 张占岭 阅读(474) 评论(0) 推荐(0)
摘要:配置文件中的敏感信息,如密码,账号这些都应该是秘文的,在程序获取时,再将它们动态解密,这样保证了配置信息的安全;在springboot中,有个resources\META-INF\spring.factories文件,他帮我们完成了自动装配,开发过starter包的同学应该不会陌生,而在这个文件里, 阅读全文
posted @ 2023-10-09 10:38 张占岭 阅读(884) 评论(0) 推荐(1)
摘要:基础说明 本文根据 RFC4226 和 RFC6238 文档,详细的介绍 HOTP 和 TOTP 算法的原理和实现。 两步验证已经被广泛应用于各种互联网应用当中,用来提供安全性。对于如何使用两步验证,大家并不陌生,无非是开启两步验证,然后出现一个二维码,使用支持两步验证的移动应用比如 Google 阅读全文
posted @ 2023-10-16 10:04 张占岭 阅读(984) 评论(0) 推荐(0)
摘要:springcloud-nacos-seata 分布式事务组件seata的使用demo,AT模式,集成nacos、springboot、springcloud、mybatis-plus,数据库采用mysql demo中使用的相关版本号,具体请看代码。如果搭建个人demo不成功,验证是否是由版本导致, 阅读全文
posted @ 2023-12-04 17:15 张占岭 阅读(174) 评论(0) 推荐(0)
摘要:webjars类型的前端jar包 我们可以将公用的js,css,html,vue,shtml打包成一个jar,然后在其他项目中引用,这样就不用每个项目都去引用一遍了,这样就可以实现前端的公用了。 1.创建一个maven项目,添加依赖和插件 <dependencies> <!-- 依赖webjars- 阅读全文
posted @ 2023-12-05 09:55 张占岭 阅读(458) 评论(0) 推荐(0)
摘要:实时统计,也可以理解为流式计算,一个输入流,一个输出流,源源不断。 Kafka Stream Kafka Stream是Apache Kafka从0.10版本引入的一个新Feature。它是提供了对存储于Kafka内的数据进行流式处理和分析的功能。 Kafka Stream的特点 Kafka Str 阅读全文
posted @ 2024-01-09 16:20 张占岭 阅读(1348) 评论(0) 推荐(0)
摘要:shardingsphere已经很方便的被springboot集成了,你只要引入sharding-jdbc-spring-boot-starter这个包就可以了,而如果是原生java的话,你就需要自己去实现了,主要是重新定义数据源,定义规则等问题,本文主要介绍原生环境下的shardingsphere 阅读全文
posted @ 2024-01-16 16:22 张占岭 阅读(340) 评论(0) 推荐(0)
摘要:日志本地化,对于每个应用来说都是必须的,最起码第一时间日志是需要本地化的,然后从本地化的日志中再进行推送,例如通过fluentd将日志推到es里,通过kibana工具进行可视化分析。 日志文件大小限制 对于把日志持久化到磁盘,你需要设置它的占用空间,logback提供了保存文件大小和历史文件数量的配 阅读全文
posted @ 2024-01-31 09:26 张占岭 阅读(1796) 评论(0) 推荐(0)
摘要:对于实体中包含有公共字段,像create_at,create_time,update_at,update_time来说,我们没有必要在每个实体的crud操作中复制同样的代码,这样代码的味道很坏,我们应该使用mybatis的拦截器机制,将公共字段统一处理;当然mybatis-puls在实现上更加优雅, 阅读全文
posted @ 2024-04-08 13:06 张占岭 阅读(488) 评论(0) 推荐(0)
摘要:mybatis-plus中,如果数据表字段类型与java实体字段类型不一样,这时就需要做类型映射与转换了,我们一般可以实现TypeHandler接口,或者继承抽象类BaseTypeHandler,我们下面举例来说明一下它的使用方法。 场景 数据表里字段是varchar,java里是List集合,例如 阅读全文
posted @ 2024-04-23 17:50 张占岭 阅读(1469) 评论(0) 推荐(0)
摘要:redis配置文件开启键过期 # The "notify-keyspace-events" takes as argument a string that is composed # of zero or multiple characters. The empty string means tha 阅读全文
posted @ 2024-04-28 10:41 张占岭 阅读(391) 评论(0) 推荐(0)
摘要:这个文章主要介绍一下@AutoConfigureAfter在spring框架中的作用,在使用过程中,很多开发人员在使用它的时候都出现了问题,问题比较多的就是它们的注册顺序总不是我们预期的,下面介绍一下正常的使用方法。 @AutoConfigureAfter用在配置类上面,即需要在@Configura 阅读全文
posted @ 2024-04-30 13:07 张占岭 阅读(407) 评论(0) 推荐(0)
摘要:在Spring中,CompletableFuture通常用于异步编程,可以方便地处理异步任务的执行和结果处理,CompletableFuture 是 Java 8 引入的一个类,用于支持异步编程和并发操作。它基于 Future 和 CompletionStage 接口,提供了丰富的方法来处理异步任务 阅读全文
posted @ 2024-05-06 13:40 张占岭 阅读(755) 评论(0) 推荐(0)
摘要:将多个第三方包封装成一个项目后,如果你的目的是让其他开发人员可以直接引用这些依赖,一般来说有两种常见的方式: 打成JAR包:将封装好的项目编译打包成JAR文件,其他开发人员可以将这个JAR文件添加到他们的项目中,并在项目的构建工具(比如Maven)中配置该JAR作为依赖。这样做的好处是简单直接,其他 阅读全文
posted @ 2024-05-28 14:56 张占岭 阅读(1204) 评论(2) 推荐(1)
摘要:在使用 Spring Data JPA 中的 @CreatedDate 注解时,如果希望自动填充创建时间字段,通常需要结合 @EntityListeners(AuditingEntityListener.class) 注解一起使用。这是因为 @CreatedDate 等审计注解通常与审计事件监听器( 阅读全文
posted @ 2024-05-30 13:44 张占岭 阅读(591) 评论(2) 推荐(0)
摘要:相关文章 springboot~代码风格统计spring-javaformat-maven-plugin插件 springboot~spring-javaformat插件惹的祸 说明 在项目中,我们可以通过安装maven插件,spring-javaformat来达到代码统一的目的,而在idea中,为 阅读全文
posted @ 2024-06-20 11:24 张占岭 阅读(289) 评论(0) 推荐(0)
摘要:原理 PageHelper是一个用于MyBatis的分页插件,pagehelper-spring-boot-starter是其在Spring Boot中的集成组件。下面简要介绍PageHelper的分页原理: PageHelper的分页原理 拦截器机制:PageHelper通过MyBatis的拦截器 阅读全文
posted @ 2024-07-19 10:49 张占岭 阅读(995) 评论(0) 推荐(1)
摘要:前言 前端与后端在进行交互时,前端传的对象中,有的属性是int,boolean这些类型,它们是有默认值的,当前端不转它们时,后端也会接收到默认值,如int为0,boolean为false,这就给后端代码带来不确定性;比如要有个put更新用户的方法,有个用户对象如下 @Data public clas 阅读全文
posted @ 2024-09-27 09:01 张占岭 阅读(315) 评论(0) 推荐(0)
摘要:前言 如果多个实体类都有 isDelete 字段,并且你希望在插入时为它们统一设置默认值,可以采取以下几种方法来减少代码重复: 1. 使用基类(抽象类) 创建一个基类,其中包含 isDelete 字段和 @PrePersist 方法。然后让所有需要这个字段的实体类继承这个基类。 示例代码: impo 阅读全文
posted @ 2024-09-27 15:07 张占岭 阅读(397) 评论(0) 推荐(0)
摘要:场景 我在开发修改密码功能,通过原密码和新密码及确认新密码,希望通过ConstraintValidator这个方式来校验新密码和确认新密码,规则是这两个密码需要是相同的。 参考文档 https://github.com/micronaut-projects/micronaut-core/issues 阅读全文
posted @ 2024-10-14 14:43 张占岭 阅读(446) 评论(0) 推荐(0)
摘要:部署 docker run --name=seata1.4.2 \ --hostname=d67502e1d2ea \ --mac-address=02:42:0a:ff:fe:02 \ --env=SEATA_IP=192.168.60.136 \ --env=SEATA_PORT=8091 \ 阅读全文
posted @ 2024-11-13 08:43 张占岭 阅读(165) 评论(0) 推荐(0)
摘要:如果多个实体类都有 isDelete 字段,并且你希望在插入时为它们统一设置默认值,可以采取以下几种方法来减少代码重复: 1. 使用基类(抽象类) 创建一个基类,其中包含 isDelete 字段和 @PrePersist 方法。然后让所有需要这个字段的实体类继承这个基类。 示例代码: import 阅读全文
posted @ 2024-11-18 15:49 张占岭 阅读(520) 评论(2) 推荐(1)
摘要:目前有两种方式对 IP 以及归属地信息进行缓存: 第一种是将起始 IP,结束 IP 以及中间所有 IP 转换成整型,然后以字符串方式,用转换后的 IP 作为 key,归属地信息作为 value 存入 Redis; 第二种是采用有序集合和散列方式,首先将起始 IP 和结束 IP 添加到有序集合 ip2 阅读全文
posted @ 2024-11-25 14:14 张占岭 阅读(157) 评论(0) 推荐(0)
摘要:Jedis Jedis 是一个 Java 客户端,用于与 Redis 数据库进行交互。它提供了一系列简单易用的 API,使得在 Java 应用程序中使用 Redis 变得非常方便。以下是 Jedis 的使用方法及一些注意事项。 Jedis的优势 Lettuce客户端及Jedis客户端比较如下: Le 阅读全文
posted @ 2024-12-13 20:45 张占岭 阅读(592) 评论(2) 推荐(0)
摘要:pojo实体bool字段不要加is前缀,在lombok这类工具自动的getter,setter方法时,对于布尔类型,它有自己的命名规则,boolean会把getter方法添加统一前缀is,如boolean的getter方法就是isDefault(),而如果你的字段也命名为isDefault,那么在反 阅读全文
posted @ 2024-12-17 14:49 张占岭 阅读(215) 评论(0) 推荐(0)
摘要:在Redisson中,锁的续期是一个关键特性,用于确保在锁的持有者仍在执行任务期间,锁不会被意外释放。 看门狗什么时间被启用 Redisson中的看门狗(watchdog)机制的行为确实与是否显式指定锁的超时时间有关。 lock() 方法与看门狗: 当您使用 lock() 方法而不传递任何参数时,R 阅读全文
posted @ 2024-12-25 16:05 张占岭 阅读(450) 评论(0) 推荐(0)
摘要:状态机(State Machine)是一种设计模式,用于描述对象在不同状态之间的转换和行为。状态机可以帮助开发者管理复杂的状态逻辑,使得系统在不同状态下的行为更易于理解和维护。以下是关于状态机设计模式的详细介绍。 1. 状态机的基本概念 状态:表示对象在某一时刻的情况或条件。例如,订单的状态可以是“ 阅读全文
posted @ 2024-12-26 11:41 张占岭 阅读(3193) 评论(0) 推荐(5)
摘要:在 Java 中,使用 Mock 对象进行单元测试是一种常见的实践,尤其是在需要隔离被测试组件时。Mock 可以帮助我们模拟依赖对象的行为,从而专注于测试特定的逻辑,而不必依赖于外部系统或复杂的对象。 1. 使用 Mock 的好处 隔离测试:通过 Mock 依赖项,可以确保测试只关注被测试类的逻辑。 阅读全文
posted @ 2024-12-26 16:41 张占岭 阅读(826) 评论(0) 推荐(0)
摘要:雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是建议通过不引入第三方组件和网络请求的前提下解决这个问题,所以我修改了kubernetes的yaml文 阅读全文
posted @ 2024-12-30 15:31 张占岭 阅读(603) 评论(0) 推荐(2)
摘要:在开发Web项目时,使用Jedis客户端与Redis进行交互时,通常建议将 JedisPool 设置为单例或静态的,而 Jedis 实例则不应该是单例的。之前写过jedis使用注意事项,大家可以先阅读一下,然后再看下面的最佳实践: 1. JedisPool 设置为单例或静态 原因: JedisPoo 阅读全文
posted @ 2025-01-02 10:47 张占岭 阅读(332) 评论(0) 推荐(0)
摘要:我们以日期类型为例,把它作为请求参数和响应字段进行说明,默认的日期字段格式为ISO 8601标准,DateTimeFormat.ISO.DATE_TIME,格式为yyyy-MM-dd'T'HH:mm:ss,与咱们常用的日期时间有所不同,所以咱们需要重新定义一下。 本文功能 统一了日期参数,由传入的字 阅读全文
posted @ 2025-02-05 10:57 张占岭 阅读(312) 评论(0) 推荐(0)
摘要:matchIfMissing是@ConditionalOnProperty注解中的参数,它控制了在配置文件中没有显示声明配置时,它的一个默认值,这个默认是false,就是说,当你有一个配置叫lind.redis.enabled,在配置文件中没有声明它,那么我们就认为它是false、当值为false时 阅读全文
posted @ 2025-02-11 16:34 张占岭 阅读(669) 评论(0) 推荐(0)
摘要:MySQL 8.0 引入了许多新特性和改进,旨在增强性能、可用性和安全性。以下是一些主要的新特性:数据字典,窗口函数,公共表表达式 (CTE),JSON 改进,隐式列和生成列,字符集和排序规则,原生支持 GIS 功能,支持更强的 SSL/TLS 加密选项等。 下面文章主要介绍mysql字段为Json 阅读全文
posted @ 2025-04-10 10:27 张占岭 阅读(831) 评论(0) 推荐(0)
摘要:在SpringBoot2.x版本下,公用包在resources/META-INF/spring.factories文件下定义 org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.lind.xxx.xxx.xxx 可以实 阅读全文
posted @ 2025-05-28 16:06 张占岭 阅读(108) 评论(0) 推荐(0)
摘要:在 Spring Boot 3.4.x 中,HttpSecurity 的 and() 方法已经被标记为过时,因此我们需要采用新的 Lambda 风格 API 来配置安全性。你可以将 exceptionHandling() 移到 HttpSecurity 的顶层配置中,而不是在 authorizeHt 阅读全文
posted @ 2025-05-29 08:45 张占岭 阅读(132) 评论(0) 推荐(0)
摘要:https://www.baeldung.com/jpa-join-column https://docs.oracle.com/javaee/6/api/javax/persistence/JoinColumn.html https://stackoverflow.com/questions/37 阅读全文
posted @ 2025-06-25 17:32 张占岭 阅读(90) 评论(0) 推荐(0)
摘要:外键 同时更新,现时删除 约束更新,约束删除 索引 优化查询 添加外键后,自动为这个字段添加上索引 举例 用户主表 user_info 用户扩展信息 user_extension 项目表 project_info 理解表与表的关系 一对一 一对多 多对一 多对多 在关系数据库中,实体间的关联关系通过 阅读全文
posted @ 2025-07-18 10:00 张占岭 阅读(136) 评论(0) 推荐(0)
摘要:在 Spring Boot 应用中开启 HTTP/2 能带来更好的性能体验。下面我会为你解释如何根据不同的需求进行配置。首先,用一个表格来对比两种主要的实现方式: 特性 基于 TLS 的 HTTP/2 (h2) 明文 HTTP/2 (h2c) 是否需要证书 ✅ 是(SSL/TLS 证书) ❌ 否 协 阅读全文
posted @ 2025-08-26 10:13 张占岭 阅读(399) 评论(0) 推荐(0)
摘要:在 Spring Boot 3.x 中为控制器编写集成测试,主要是通过 @SpringBootTest 注解加载完整的应用上下文,并利用 MockMvc 或 TestRestTemplate 来模拟 HTTP 请求并验证响应。下面我将为你提供一个清晰的指南和代码示例。 两种测试 在Spring Bo 阅读全文
posted @ 2025-08-26 17:09 张占岭 阅读(341) 评论(0) 推荐(1)
摘要:获取Spring Data自定义Repository中的实际类型 在Spring Data中,当您实现自定义Repository时,由于Java类型擦除的原因,泛型参数T在运行时确实会被擦除为Object类型。不过,有几种方法可以获取实际的类型信息。 你想在自定义的 Spring Data Neo4 阅读全文
posted @ 2025-09-08 16:57 张占岭 阅读(131) 评论(0) 推荐(0)
摘要:参考 https://www.ruanyifeng.com/blog/2017/05/server-sent_events.html SSE本质 严格地说,HTTP 协议无法做到服务器主动推送信息。但是,有一种变通方法,就是服务器向客户端声明,接下来要发送的是流信息(streaming)。 也就是说 阅读全文
posted @ 2025-09-09 14:44 张占岭 阅读(297) 评论(0) 推荐(0)
摘要:一 重要知识点 在Spring框架中,AnnotationUtils.findAnnotation()和AnnotatedElementUtils.findMergedAnnotation()是两种不同的注解查找方式,主要区别如下: 1. AnnotationUtils.findAnnotation 阅读全文
posted @ 2025-09-23 17:40 张占岭 阅读(110) 评论(0) 推荐(0)
摘要:起因 在java项目中,我在maven的pom.xml中引用了io.github.officiallysingh:spring-boot-starter-spark:1.3包,然后这个包里又有org.apache.spark:spark-core_2.13:3.5.5包的引用,而在spark-cor 阅读全文
posted @ 2025-10-15 10:10 张占岭 阅读(112) 评论(0) 推荐(0)
摘要:🎯 核心区别 Content-Type:告诉服务器我发送的数据是什么格式 Accept:告诉服务器我希望接收什么格式的响应数据 📋 详细说明 1. Content-Type (内容类型) 作用:描述请求体的格式 使用场景:当你的请求有请求体时(如POST、PUT请求) 示例:Content-Ty 阅读全文
posted @ 2025-11-18 14:03 张占岭 阅读(91) 评论(0) 推荐(0)
摘要:CSRF 是什么? CSRF(Cross-Site Request Forgery,跨站请求伪造) 是一种常见的Web安全漏洞。攻击者利用受害者已经登录的合法会话,诱使受害者执行非本意的操作。 简单比喻: 想象你在咖啡店会员卡里有钱,你每次消费只需要说“用会员卡支付”。攻击者伪装成服务员,在你面前说 阅读全文
posted @ 2025-12-31 11:22 张占岭 阅读(78) 评论(0) 推荐(0)