- 博客(66)
- 收藏
- 关注
原创 LambdaQueryWrapper解释一下
是 MyBatis-Plus 框架中的一个核心查询构造器,使用的是Lambda表达式来构建安全的sql查询条件,避免了字段名,
2025-04-02 22:04:21
142
原创 DTO,VO,BO,DO
层间传输数据对象,用于Controller/Service等交互,可能与VO字段相似但设计目的不同(如API定制字段)。:业务逻辑对象,抽象现实中的业务实体(如订单+用户=订单BO),封装多表关联的复杂业务逻辑。后端内部: DTO --> Service --> BO --> DO --> 数据库。:前端展示数据对象,只包含页面需要的数据,隐藏不必要字段,减少传输量并保护数据库结构。前端 -- 提交DTO --> 后端。后端 -- 返回VO --> 前端。:数据库映射对象,与表字段一一对应(如。
2025-04-02 15:45:17
31
原创 Setting.xml文件方面问题
这些 里面 配置的jdk都保持 一致 比如 xml文件里面配置了 18 那么 这些地方 也得配置 18 不然容易出问题 多多检查。然后下面的xml文件 像公司里 会有配置的私服地址 仓库一些配置啊 有的 还有jdk 等等。一般选择对应项目的settings.xml文件 以此来通过maven来获得对应配置 下载依赖包等。这个本地仓库地址尽量要跟图一中的Localrepository:中的 地址一致。打开项目的setting.xml文件 看下对应的配置。
2024-04-15 09:00:11
381
原创 StringUtil.isEmpty理解
通常是一个工具类方法,用于检查一个字符串是否为空或者为 null。这个方法在不同的编程语言和库中可能有所不同,但其核心功能是一致的,即提供一种便捷的方式来处理字符串的空值检查。方法或类似的函数可以帮助开发者避免因字符串为空而导致的程序错误,例如空指针异常或无效的字符串操作。通过在代码中适当地使用这类方法,可以提高程序的健壮性和可读性。这种方法可以确保在处理字符串时,避免了空指针异常的发生。这个方法会检查输入的字符串是否为 null、空字符串或者只包含空白字符(如空格、制表符等)。
2024-04-12 10:14:01
529
原创 ReadWriteLock锁
ReadWriteLock锁是一种并发编程中的锁机制,它允许多个线程同时读取共享资源,但在写操作时会阻塞其他读取和写入操作。这种锁机制可以提高读取操作的并发性能,但会限制写入操作的并发性能。通常情况下,读取操作比写入操作更频繁,因此使用ReadWriteLock锁可以优化并发程序的性能。
2024-04-09 11:04:13
926
原创 Java系统线上生产问题排查一把梭哈
靠猜是猜不出来的,需要提前做好基础监控的建设。监控的话,需要在基础运维层、应用层、业务层等多个层次进行。定位问题的时候,我们同样需要参照多个监控层的指标表现综合分析。
2024-04-05 22:09:19
987
原创 spring 和springBoot区别
Spring Boot是Spring框架的扩展,旨在简化Spring应用程序的开发和部署。Spring Boot提供了自动配置和约定优于配置的原则,可以快速搭建和运行基于Spring的应用程序,减少了开发人员的工作量。Spring框架是一个全功能的企业级Java应用程序框架,提供了广泛的功能,包括依赖注入、AOP、事务管理、数据访问等。下面是一个简单的例子,展示了一个使用Spring框架和Spring Boot框架的Hello World应用程序。使用Spring框架的Hello World应用程序。
2024-04-05 09:49:11
566
原创 composer常见错误解决
解决方法包括使用构建工具(如Maven或Gradle)来管理依赖项,明确指定依赖项的版本,或者使用依赖项管理工具(如Maven Dependency Plugin)来解决冲突。解决方法包括使用同步机制(如synchronized关键字或Lock接口)、使用并发集合(如ConcurrentHashMap)或者使用线程池来管理线程。解决方法包括使用性能分析工具(如JProfiler或VisualVM)来识别性能瓶颈,优化算法或IO操作,以及进行内存管理和垃圾回收优化。参数来指定初始堆大小和最大堆大小。
2024-04-05 09:44:11
469
原创 ORM框架概述
ORM框架是现代软件开发中不可或缺的一部分,它通过将数据库操作对象化,极大地简化了数据访问层的编码工作。选择合适的ORM框架,并合理地设计和实现它,可以显著提升开发效率和软件质量。
2024-04-03 16:43:04
456
原创 分布式事务组件有那些
TCC是一种基于补偿事务的分布式事务解决方案,主要包括Try阶段、Confirm阶段和Cancel阶段。常见的TCC实现包括Hmily、ByteTCC等。:Saga是一种分布式事务解决方案,通过将长事务拆分为多个短事务,并通过补偿事务来保证最终一致性。以上是一些常见的分布式事务组件,每种组件都有其适用的场景和特点,选择合适的分布式事务组件需要根据具体的业务需求和系统架构来进行评估和选择。:Seata是一种开源的分布式事务解决方案,提供了AT(原子性事务)、TCC、SAGA等多种事务模式的支持。
2024-04-02 17:52:41
696
原创 redis中怎么用分布式token
在分布式系统中,使用Redis作为分布式Token存储的解决方案可以帮助实现跨服务的用户认证和授权。Redis是一个高性能的键值存储系统,它支持多种数据结构,如字符串、列表、集合等,这使得它非常适合用于存储和管理Token。
2024-04-01 11:52:24
1818
原创 k8s是什么
Kubernetes(简称K8s,发音为“kube-serves”)是一个开源的容器编排平台,用于自动部署、扩展和管理容器化应用程序。它最初由Google设计并捐赠给Cloud Native Computing Foundation(CNCF)来维护。Kubernetes的核心目标是简化和自动化容器化应用程序的部署和管理过程,使得开发和运维团队能够更加高效地发布和管理软件。
2024-03-31 08:59:56
749
原创 ThreadLocal 与 synchronized 关键字在多线程编程中有什么区别?
在实际应用中,选择ThreadLocal还是synchronized取决于具体的需求。如果需要线程之间完全独立的数据副本,ThreadLocal是一个好的选择;如果需要同步访问共享资源,synchronized则更为合适。在某些情况下,两者也可以结合使用,以达到既隔离数据又同步访问资源的目的。
2024-03-29 15:42:45
318
原创 模拟nacos心跳怎么做
Nacos心跳机制是微服务架构中用于服务注册与发现的重要组成部分,它确保了服务实例的实时性和可用性。模拟Nacos心跳的过程,实际上就是模拟服务实例向注册中心发送心跳信息,以维持其在注册中心的注册状态。
2024-03-29 10:23:13
758
原创 如何保证Redis中存储的Token安全性?
确保Redis中存储的Token安全性是一个多层面的任务,涉及到网络、应用、数据和操作等多个方面的安全措施。
2024-03-28 10:50:51
915
原创 你们优惠券支持兑换码的方式是吧,哪兑换码是如何生成的呢?
32位的自增序列,可以每4位一组,转为10进制,这样就有8个数字。(请设计一个优惠券兑换码生成方案,可以支持20亿以上的唯一兑换码,兑换码长度不超过10,只能包含字母数字,并且要保证生成和校验算法的高效)最后把签名值的后14位、新鲜值(4位)、自增序列(32位)拼接,得到一个50位二进制数,然后与一个较大的质数做异或运算加以混淆,再基于Base32或Base64转码,即可的对兑换码。当我们在发放优惠券的时候,会判断优惠券的领取方式,我们有基于页面手动领取,基于兑换码兑换领取等多种方式。取中4位得到新鲜值。
2024-03-27 12:16:24
747
原创 你在项目中负责积分排行榜功能,说说看你们排行榜怎么设计实现的?
比如有任务A、B、C,要按照字母顺序依次执行,我们就可以将C设置为B的子任务,再将B设置为A的子任务。此时,第一个分片处理的数据就是第1、4、7、10、13等几页数据,第二个分片处理的就是第2、5、8、11、14等页的数据,第三个分片处理的就是第3、6、9、12、15等页的数据。这里要说明一下,这里三个任务是有关联的,之所以让任务分开定义,是为了避免任务耦合。- 每个执行器的读取的起始页都是自己的分片编号+1,例如第一个执行器,其起始页就是1,第二个执行器,其起始页就是2,以此类推。依然非常简单、高效。
2024-03-26 12:42:41
823
原创 JWT的加密算法有哪些,它们之间有什么区别?
在选择JWT的加密算法时,需要根据系统的具体需求和安全要求来决定使用哪种算法。对于需要跨多个服务或不信任环境传输的Token,推荐使用非对称加密算法,如RS256或ES256。JWT(JSON Web Token)支持多种加密和签名算法,这些算法用于确保Token的安全性和数据的完整性。
2024-03-25 20:43:57
1774
原创 数据库中冗余字段
尽管在某些特定情况下冗余字段可能有其合理性,但在大多数情况下,它们被视为不良设计的表现,因为它们违反了数据库设计的第一范式(1NF),即每个字段都应该是原子的,不应该包含可以进一步分解的信息。在数据库设计中,冗余字段(Redundant Field)指的是那些存储了重复信息的字段,即这些字段中的数据可以在不查看该字段的情况下,通过其他字段或表中的数据推断出来。例如,如果一个字段是从另一个表中引用的外键,那么在当前表中存储这个外键的值可以确保即使在引用的表中数据被删除或更改时,当前表中的数据仍然保持一致。
2024-03-24 16:26:12
887
原创 ThreadLocal的主要特点:
虽然没有直接的性能比较数据,但我们可以推测,由于Java 11中的JVM和垃圾回收器的改进,ThreadLocal在Java 11上的性能可能会有所提升,特别是在内存泄漏问题和垃圾回收效率方面。然而,ThreadLocal的基本工作原理和数据结构在Java 8和Java 11中保持不变,因此性能差异可能不会特别显著。具体性能表现还需要通过实际的基准测试来确定。
2024-03-24 11:12:25
1205
原创 乐观锁和悲观锁区别
悲观锁和乐观锁的选择取决于具体的应用场景和数据冲突的概率。悲观锁适合冲突可能性高的场合,而乐观锁适合冲突可能性低的场合。在实际应用中,开发者需要根据系统的需求和特点来选择最合适的并发控制策略。
2024-03-23 09:17:13
339
原创 你项目中使用过Redis的那些数据结构?
但是为了解决签到数据量较大的问题,我们可能就需要对数据做分表处理了。总的来说,签到数据使用Redis的BitMap无论是安全性还是数据内存占用情况,都是可以接受的。因为签到数据量非常大嘛,而BitMap则是用bit位来表示签到数据,31bit位就能表示1个月的签到记录,非常节省空间,而且查询效率也比较高。或者呢,我们可以搭建Redis主从集群,再结合Redis哨兵。主节点会把数据持续的同步给从节点,当即后也会有哨兵重新选主,基本不用担心数据丢失问题。比如很多的缓存,我们就使用了String结构来存储。
2024-03-22 13:25:38
354
原创 面试题:你们的微服务系统是如何校验用户的,用户ID又是怎么传递的?+mybatisplus好处
你们的微服务系统是如何校验用户的,用户ID又是怎么传递的?+mybatisplus好处
2024-03-12 21:15:22
496
原创 代码生成器 MybatisX
代码生成器 MybatisX 通过代码生成器,就可以根据表结构,反向生成对应的实体类、Mapper、Service等,可以简化开发,提供开发效率。
2024-02-28 08:42:02
1423
原创 linux 文件目录操作命令【重点】
当我们在查看一些比较大的文件时,我们可能需要经常查询文件尾部的数据信息,那这个时候如果文件很大,我们要一直向下翻页,直到最后一页,去看最新添加的数据,这种方式就比较繁琐了,此时,我们可以借助于tail指令。rmdir -p itcast/test 删除itcast目录中名为test的子目录,若test目录删除后itcast目录变为空目录,则也被删除。mkdir -p itcast/test 在工作目录下的itcast目录中建立一个名为test的子目录,若itcast目录不存在,则建立一个。
2024-02-23 11:15:52
1018
原创 安装SSH连接工具
在Linux系统中,也是存在目录的概念的,但是Linux的目录结构和Windows的目录结构是存在比较多的差异的 在Windows目录下,是一个一个的盘符(C盘、D盘、E盘),目录是归属于某一个盘符的。2.2 ↑ ↓ 键盘切换之前或者之后使用的命令 history可以展示最近输入的所有指令。3.windows目录结构分盘符 linux不分盘符 都在根目录 /下,目录像一个倒挂的树。[parameter]: 传给命令的参数,可以是零个、一个或者多个。3). 使用上下箭头快速调出曾经使用过的命令。
2024-02-22 11:10:39
1119
原创 4. TypeScript
目录1 TypeScript 介绍2 TypeScript 常用类型2.1 类型标注的位置2.2 字符串、数字、布尔类型2.3 字面量类型2.4 interface 类型2.5 class 类型TypeScript(简称:TS) 是微软推出的开源语言TypeScript 是 JavaScript 的超集(JS 有的 TS 都有)TypeScript = Type + JavaScript(在 JS 基础上增加了类型支持)TypeScript 文件扩展名为 tsTypeScript 可编译成标准的 JavaS
2024-02-10 10:15:00
3010
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人