随笔分类 - Java
大叔也学学java,跟跟风...
摘要:策略模式的应用,我们以一个配置字典来说一下这个问题;首先这个字典用来管理若干个配置,每个配置项都有key和value,key是字符串,value是某种类型;我们通过一个ConfigServiceStrategy接口来规定配置的操作行为,通过ConfigServiceContext来表示一个配置上下文
阅读全文
摘要:雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是建议通过不引入第三方组件和网络请求的前提下解决这个问题,所以我修改了kubernetes的yaml文
阅读全文
摘要:在 Java 中,使用 Mock 对象进行单元测试是一种常见的实践,尤其是在需要隔离被测试组件时。Mock 可以帮助我们模拟依赖对象的行为,从而专注于测试特定的逻辑,而不必依赖于外部系统或复杂的对象。 1. 使用 Mock 的好处 隔离测试:通过 Mock 依赖项,可以确保测试只关注被测试类的逻辑。
阅读全文
摘要:状态机(State Machine)是一种设计模式,用于描述对象在不同状态之间的转换和行为。状态机可以帮助开发者管理复杂的状态逻辑,使得系统在不同状态下的行为更易于理解和维护。以下是关于状态机设计模式的详细介绍。 1. 状态机的基本概念 状态:表示对象在某一时刻的情况或条件。例如,订单的状态可以是“
阅读全文
摘要:在Redisson中,锁的续期是一个关键特性,用于确保在锁的持有者仍在执行任务期间,锁不会被意外释放。 看门狗什么时间被启用 Redisson中的看门狗(watchdog)机制的行为确实与是否显式指定锁的超时时间有关。 lock() 方法与看门狗: 当您使用 lock() 方法而不传递任何参数时,R
阅读全文
摘要:在Java中,重写hashCode()方法时常常会使用31作为乘数,这是因为31具有一些独特的数学性质,使其成为一个优秀的选择。以下是几个原因: 1. 奇质数的特性 31是一个奇数和质数,这意味着它能有效地减少哈希冲突的概率。使用质数作为乘数可以帮助分散哈希值,从而提高哈希表的性能。 2. 位运算效
阅读全文
摘要:pojo实体bool字段不要加is前缀,在lombok这类工具自动的getter,setter方法时,对于布尔类型,它有自己的命名规则,boolean会把getter方法添加统一前缀is,如boolean的getter方法就是isDefault(),而如果你的字段也命名为isDefault,那么在反
阅读全文
摘要:Jedis Jedis 是一个 Java 客户端,用于与 Redis 数据库进行交互。它提供了一系列简单易用的 API,使得在 Java 应用程序中使用 Redis 变得非常方便。以下是 Jedis 的使用方法及一些注意事项。 Jedis的优势 Lettuce客户端及Jedis客户端比较如下: Le
阅读全文
摘要:如果多个实体类都有 isDelete 字段,并且你希望在插入时为它们统一设置默认值,可以采取以下几种方法来减少代码重复: 1. 使用基类(抽象类) 创建一个基类,其中包含 isDelete 字段和 @PrePersist 方法。然后让所有需要这个字段的实体类继承这个基类。 示例代码: import
阅读全文
摘要:场景 我在开发修改密码功能,通过原密码和新密码及确认新密码,希望通过ConstraintValidator这个方式来校验新密码和确认新密码,规则是这两个密码需要是相同的。 参考文档 https://github.com/micronaut-projects/micronaut-core/issues
阅读全文
摘要:前言 如果多个实体类都有 isDelete 字段,并且你希望在插入时为它们统一设置默认值,可以采取以下几种方法来减少代码重复: 1. 使用基类(抽象类) 创建一个基类,其中包含 isDelete 字段和 @PrePersist 方法。然后让所有需要这个字段的实体类继承这个基类。 示例代码: impo
阅读全文
摘要:前言 前端与后端在进行交互时,前端传的对象中,有的属性是int,boolean这些类型,它们是有默认值的,当前端不转它们时,后端也会接收到默认值,如int为0,boolean为false,这就给后端代码带来不确定性;比如要有个put更新用户的方法,有个用户对象如下 @Data public clas
阅读全文
摘要:Refresh_token是在access_token过期之后,用来换新的access_token的,有了Refresh_token之后,用户可以在很长一段时间不需要重新登录,这对于用户体验是有好处的;RequiredAction是一种登录阶段的必选行为,当一个用户被某个RequiredAction
阅读全文
摘要:一 单字段和多字段重写hashcode 在 Java 中,重写 hashCode 方法的场景通常与对象的哈希值计算有关,特别是在使用哈希表(如 HashMap, HashSet 等)时。下面是你提供的两种 hashCode 实现的具体使用场景分析: 1. 第一种实现 @Override public
阅读全文
摘要:本实例将通过keycloak社区登录实现微信二维码的登录,并且二微码不是keycloak动态生成,而是通过微信提供的js生成的,在页面上直接输出的方式实现的。 动态state 在Keycloak中使用微信二维码登录时,state参数确实是由后端生成的,并且用于确保登录过程的安全性,防止CSRF攻击等
阅读全文
摘要:原理 PageHelper是一个用于MyBatis的分页插件,pagehelper-spring-boot-starter是其在Spring Boot中的集成组件。下面简要介绍PageHelper的分页原理: PageHelper的分页原理 拦截器机制:PageHelper通过MyBatis的拦截器
阅读全文
摘要:相关文章 springboot~代码风格统计spring-javaformat-maven-plugin插件 springboot~spring-javaformat插件惹的祸 说明 在项目中,我们可以通过安装maven插件,spring-javaformat来达到代码统一的目的,而在idea中,为
阅读全文
摘要:javax.validation和jakarta.validation都是用于Java中进行数据验证(validation)的相关API,它们提供了一套标准的验证框架,用于验证Java对象的属性是否符合指定的约束条件。这两个API的作用类似,只是在Java EE平台的演进过程中发生了一些变化。 ja
阅读全文
摘要:将多个第三方包封装成一个项目后,如果你的目的是让其他开发人员可以直接引用这些依赖,一般来说有两种常见的方式: 打成JAR包:将封装好的项目编译打包成JAR文件,其他开发人员可以将这个JAR文件添加到他们的项目中,并在项目的构建工具(比如Maven)中配置该JAR作为依赖。这样做的好处是简单直接,其他
阅读全文
摘要:在Spring中,CompletableFuture通常用于异步编程,可以方便地处理异步任务的执行和结果处理,CompletableFuture 是 Java 8 引入的一个类,用于支持异步编程和并发操作。它基于 Future 和 CompletionStage 接口,提供了丰富的方法来处理异步任务
阅读全文