- 博客(53)
- 资源 (1)
- 收藏
- 关注
原创 SQL中为什么EXISTS可以替代DISTINCT
EXISTS的优势EXISTS在某些情况下可以显著提高查询性能,尤其是在处理大规模数据集时。它的短路评估特性使得数据库引擎只需找到一个匹配行即可停止搜索,从而减少了不必要的计算。DISTINCT的局限性DISTINCT虽然使用方便,但在处理大量数据时可能会导致性能问题。它通常需要对结果集进行排序或哈希操作,这些操作需要额外的计算资源和时间。性能优化:在编写SQL查询时,考虑使用EXISTS来替代DISTINCT,尤其是在需要从一个大表中提取唯一值并将其与另一个表进行关联的情况下。
2024-12-13 08:08:06
1247
原创 Java中的雪花算法生成ID与前端精度丢失问题
雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID。符号位(1 bit):始终为0,用于防止负值。时间戳部分(41 bits):表示时间戳的毫秒数,支持69年的时间跨度。工作机器ID(10 bits):标识不同的工作节点或机器。序列号(12 bits):同一时间戳下生成的序列号,支持每毫秒产生4096个不同的ID。雪花算法是一种高效的分布式ID生成算法,适合用于需要高性能和唯一性保证的场景。
2024-08-17 12:04:03
1532
原创 Java 中接口性能优化技巧与代码示例
接口性能优化是一个复杂而持续的过程,涉及到内存管理、网络通信、并发处理、动态代理和测试监控等多个方面。通过系统化的优化和持续的监控,你可以显著提升接口的性能和可靠性。希望本文提供的方法和示例能为你的项目带来帮助。如果你有更多关于接口性能优化的见解或问题,欢迎在评论区分享,与大家共同讨论。
2024-08-17 11:58:49
838
原创 人工智能时代,程序员如何保持核心竞争力?
在人工智能时代,程序员的核心竞争力不仅仅依赖于技术能力,更涉及到学习能力、适应能力、创新思维和职业素养。通过深入学习AI技术、提升编程技能、持续学习和技能升级、发展软技能、构建个人品牌、适应技术变革、探索新兴领域和积极参与行业贡献,程序员可以在这个充满机遇和挑战的时代中保持竞争力,并实现职业发展的持续增长。希望本文能为您在人工智能时代保持核心竞争力提供一些启示。如果您有任何问题或想分享您的经验,欢迎在评论区留言,与我们共同探讨。
2024-08-17 11:33:18
945
原创 如何看待“低代码”开发平台的兴起?
低代码开发平台是一种允许用户通过拖拽、配置和少量编程的方式快速开发应用程序的工具。与传统的编程方式相比,低代码平台简化了开发过程,减少了对编码技能的依赖,使得非技术人员也能参与到应用开发中来。低代码开发平台的兴起标志着软件开发方式的一次重要变革,它不仅提升了开发效率,也降低了技术门槛。然而,这一新兴技术在带来机遇的同时,也伴随一定的挑战。选择合适的平台、成功实施并不断优化,将是充分发挥低代码平台优势的关键。
2024-08-17 11:31:19
939
原创 高效记录并整理编程学习笔记
在记录学习内容时,除了详细记录原理和步骤外,还应加上自己的归纳总结。这种方式不仅能够加深对知识的理解,还能在复习时迅速回顾关键点。高效记录和整理编程学习笔记是一个系统化的过程,涉及到工具的选择、内容的记录技巧、定期的整理和更新、分享和自我反思等多个方面。通过上述策略,程序员不仅能在学习过程中提高效率,还能逐步建立起自己的知识体系。在这个快速发展的编程世界中,掌握高效的笔记管理技巧,能够更好地应对新技术带来的挑战,助力个人的职业成长和技术进步。
2024-08-17 11:28:11
998
原创 程序员如何平衡日常编码工作与提升式学习
在程序员的职业生涯中,平衡日常编码工作与提升式学习是一项重要的技能。通过制定明确的学习目标、将学习融入工作中、利用碎片时间进行学习、保持学习的动力与兴趣以及合理分配时间与精力,程序员可以有效地在工作与学习之间找到平衡。不断学习和提升,不仅能帮助程序员在职业发展中保持竞争力,还能让工作变得更加充实和有趣。实践之后,及时的反思和总结也是非常重要的。回顾自己在实践中的表现,分析遇到的问题和解决方案,总结经验和教训。这样能够帮助程序员更好地吸收学习的内容,避免在相同的问题上反复犯错。
2024-08-17 11:08:59
634
原创 Java BeanUtils.copyProperties() 详解及应用
方法用于将一个 Java 对象的属性复制到另一个对象。它在处理数据传输对象(DTO)、视图对象(VO)和实体对象(Entity)之间的数据传递时非常有用。source:源对象,属性值从这个对象中提取。target:目标对象,将属性值复制到这个对象中。是一个强大的工具,可以简化对象属性的拷贝操作。它在 Java 开发中扮演着重要的角色,尤其是在对象转换、数据封装和自动化测试等场景中。虽然它提供了很大的便利,但在性能要求较高的情况下,可能需要评估其他解决方案。
2024-08-17 10:47:43
10618
5
原创 如何优化 Redis 大 Key 问题
在 Redis 中,大 Key 是指单个键值对的数据量非常大,可能包含大量数据。例如,存储一个非常大的列表、哈希表、集合或有序集合等。这种大 Key 可能会影响 Redis 的性能和可用性,因为 Redis 需要在内存中处理这些数据,并且在操作这些大 Key 时可能会导致网络传输延迟。处理 Redis 大 Key 的挑战需要结合多种策略和工具,包括识别大 Key、优化存储方式、使用分布式功能以及定期监控性能。通过实施这些优化措施,可以显著提高 Redis 的性能和稳定性,确保应用程序的高效运行。
2024-08-17 10:28:02
1926
2
原创 BigDecimal使用指南:深入了解Java中的高精度计算
BigDecimal类位于java.math包中,主要用于表示任意精度的浮点数。它提供了对数值的高精度控制,常用于金融计算、科学计算等需要精确数值的场景。BigDecimal是Java中处理高精度数值计算的重要类,它提供了精确的数学运算能力和丰富的操作方法。了解并掌握BigDecimal的使用,可以帮助你在涉及金融、科学计算等领域时,确保计算的准确性和稳定性。BigDecimal在Java中提供了高精度的数值计算能力,适用于金融、科学计算等需要精确数值的场景。通过本文的介绍,你应该能够掌握。
2024-08-17 10:08:29
1285
原创 Java中的Stream API详解
Stream API是一种处理集合的高级抽象。它能够提供一种声明性的方法来处理数据集合(例如ListSet和Map),并且支持函数式编程的风格。Stream的主要目的是让你以声明性风格处理数据集,而不是以传统的命令式风格。Stream API在Java中提供了一种强大且灵活的方式来处理数据集合。通过使用Stream API,可以编写更加简洁和可维护的代码,并利用流的并行处理能力提升性能。然而,在使用Stream API时,也需要关注性能和资源的使用,确保代码的高效和稳定。
2024-08-17 09:57:07
2282
原创 Spring Cloud 框架中的循环依赖及解决方案
在 Spring 中,循环依赖指的是两个或多个 Bean 之间相互依赖,形成一个闭环。例如,Bean A 依赖于 Bean B,而 Bean B 又依赖于 Bean A。这种依赖关系会导致 Spring 容器在创建 Bean 时无法确定依赖的初始化顺序,从而引发问题。在 Spring Cloud 开发中,循环依赖是一个常见的问题。通过重新设计依赖关系、使用@Lazy注解、构造函数注入或引入中间层服务,可以有效地解决循环依赖问题。合理的设计和架构能够避免许多潜在的问题,提高系统的稳定性和可维护性。
2024-08-16 19:42:42
2147
原创 使用 MyBatis-Plus 的 <choose> 标签实现动态 SQL
MyBatis-Plus 是 MyBatis 的一个增强工具,它简化了 CRUD 操作,减少了样板代码,提高了开发效率。虽然 MyBatis-Plus 提供了很多便捷的功能,但在复杂查询时,我们仍然需要使用 MyBatis 的动态 SQL 功能。MyBatis 的标签使得我们能够根据不同的条件生成动态 SQL 语句,从而实现复杂的查询需求。在实际开发中,通过合理使用标签,可以大大简化 SQL 的编写,提高代码的可维护性和灵活性。
2024-08-16 19:26:16
2243
原创 Java实现数据脱敏
数据脱敏指的是某些敏感的信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。敏感数据包括,姓名、身份证号、手机号、银行卡号等信息,防止这些敏感数据在不安全的情况下使用,所以就要使用数据脱敏的技术。使用数据脱敏会在敏感数据被查询时,使用***进行遮挡,从而保护敏感数据的安全。配置文件,那个深度脱敏默认是关闭的,感兴趣的朋友可以去搜索相关资料。创建一个用户的实体类,设置一些敏感数据的属性。# 是否启用深度脱敏,为了性能考虑,默认关闭。# 是否启用脱敏,全局生效,默认开启的。添加数据脱敏用的到的依赖。
2023-06-27 18:35:05
1268
2
原创 VUE2.0集成 Markdown 编辑器
Markdown是一种标记语言,相较于word文档更加清晰方便,适合进行笔记等。将Markdown集成进入自己项目之后,就可以在项目中使用的Markdown编辑器了。这是一款基于Vue的markdown编辑器。既可以用来编辑Markdown语法,又可以用来解析。效果图,mavonEditor实现了Markdown集成。mavon-editor: 2.10.4版本。第三步: 写一个按钮来跳入富文本的一个页面。1、安装mavonEditor包。Markdown编辑器的使用。第二步: 还是导入配置。
2023-06-24 16:12:39
3741
1
原创 什么是HikariCP?HikariCP介绍(包含配置示例)
自定义数组类型(FastStatementList)代替ArrayList:避免每次get()调用都要进行range check,避免调用remove()时的从头到尾的扫描,相对与ArrayList极大地提升了性能,而其中的区别是,ArrayList在每次执行get(Index)方法时,都需要对List的范围进行检查,而FastStatementList不需要,在能确保范围的合法性的情况下,可以省去范围检查的开销。数据库连接复用:重复使用现有的数据库长连接,可以避免连接频繁建立、关闭的开销。
2023-06-19 13:59:01
8020
原创 arthas
将下载后的压缩包放到英文路径下的文件下,并新创建一个文件夹把压缩包里面的东西拿过来并把压缩包删掉。输入命令:java -jar arthas-boot.jar,查看所有已经启动的项目。进入项目对你要测试的接口进行右击选择Arthas Command中的Watch。启动idea中的项目,并在修改选择中关闭VM选项。对项目中你要测试的接口进行postman测试。测试成功后回到小黑框就会出现你执行后的效果。点击进入文件夹中,在路径处输入cmd进入。找到你想测试的项目,并输入最前面的编号。
2023-06-15 11:43:03
755
原创 EnableCaching
Key:如果写id,redis里命名空间后缀也就是id。如果不写key,命名空间后默认是所有值。2.写一个存储redis的配置类。3. 使用@Cacheble。再次查询时就不会走数据库了.运用在删除上缓存失效。
2023-06-15 11:39:45
137
原创 链路追踪( Skyworking )
skywalking 是一个优秀的国产开源APM组件,是一个对 Java 分布式应用程序集群的业务运行情况进行追踪、告警和分析的系统。2015年由个人吴晟开源 , 2017年加入Apache孵化器。短短两年就被Apache收入麾下,实力可见一斑。skywalking 支持 SpringBoot、SpringCloud、dubbo 集成,代码无侵入,通信方式采用 GRPC,性能较好,实现方式是 Java 探针,支持告警,支持JVM监控,支持全局调用统计等等,功能较完善。
2023-06-06 18:56:21
33084
转载 Mybatis-Plus的使用
如果我们对IDC划分有需求,还可以将10-bit分5-bit给IDC,分5-bit给工作机器。特点:乐观锁是一种并发类型的锁,其本身不对数据进行加锁而是通过业务实现锁的功能,不对数据进行加锁就意味着允许多个请求同时访问数据,同时也省掉了对数据加锁和解锁的过程,这种方式因为节省了悲观锁加锁的操作,所以可以一定程度的的提高操作的性能,不过在并发非常高的情况下,会导致大量的请求冲突,冲突导致大部分操作无功而返而浪费资源,所以在高并发的场景下,乐观锁的性能却反而不如悲观锁。// 起始版本 3.3.0(推荐使用)
2023-06-05 12:32:02
6146
原创 雪花算法生成ID , 在前端精度丢失的问题?
例子: 提供一个ID生成策略@Component@Override// 填充自己的Id生成器,IdGenerator是一个缩了位的雪花ID生成算法,生成的位数是16位,不会导致JS精度丢失/***/// max 31/***//**- @return*/} else {| sequence;
2023-06-04 15:41:30
993
原创 MQ的相关的使用
先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况。
2023-06-01 16:36:10
1345
原创 java8新特性
1、速度快;2、代码少、简介(新增特性:lamdba表达式);3、强大的Stream API;4、使用并行流和串行流;5、最大化较少空指针异常Optional;其中最为核心的是Lambda表达式和Stream APILambda是一个匿名函数,我们可以将Lambda表达式理解为一段可以传递的代码(将代码像数据一样传递)。使用它可以写出简洁、灵活的代码。作为一种更紧凑的代码风格,使java语言表达能力得到提升。
2023-03-26 16:29:44
632
原创 JAVA容器
前言这篇文章主要是介绍java容器的一些基本信息什么是java容器?在Java当中,有一个类专门用来存放其它类的对象,这个类就叫做容器,它就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 。为什么引入java容器?我们知道,如果定义一个int数组,需要一开始就要制定它的大小。在一些情况下,我们根本不知道它的长度是多少,开辟很大的长度会导致空间浪费。此外,数组还有很多缺点,例如数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便,同时效率不高。获取数据中实际元素的
2023-03-25 08:47:31
70
原创 springcloud(nacos)集成Kafka
Autowired/*** kafka发送手机短信的方法*/log.info("功能名称:发生验证码的方法,请求路径:[{}],请求方法:[{}],请求参数:[{}]",request.getRequestURI()// 获取短信验证码// 存入redis// 异步发生kaklog.info("功能名称:发生验证码的方法,请求路径:[{}],请求方法:[{}],响应参数:[{}]",request.getRequestURI()
2023-03-24 11:56:49
4745
1
原创 KafKa消息中间件
一、可靠性:分布式结构存储数据,构建多台kafkaServer集群分布式存储:往kafka中生产数据时,必然这个数据被分布式存放了。分区:每一个主题Topic都可以有多个分区当生产者往主题中生产数据时,会写入不同的分区每个分区存储在不同的机器上每一条数据会根据分区规则写入对应的分区二、可扩展性:横向扩展,机器不够加机器三、耐用性:Kafka中的数据分区存储在每台机器的磁盘上的,数据存储在Kafka中不易丢失。为什么我们以前看到的读写磁盘都比较慢?磁盘中分散存放的,牺牲大量的寻址时间。
2023-03-22 21:21:19
82
原创 若依框架的各大依赖
spring-cloud-dependencies是一个依赖管理器的pom文件 ,从而统一各种jar的版本号,避免了版本不一致而出现的问题。在 pom 文件中,加入一个新的依赖,往往不需要引入相应的版本号(如下代码块所示),就可以正常引入依赖,这其实是因为我们依赖了 spring-boot-starter-parent 模块的缘故。spring-cloud-dependencies和spring-boot-starter-parent他们两作用是相同的,都是一个依赖管理器的pom文件。
2023-03-21 21:17:36
2626
转载 沙箱安全机制
沙箱是一个限制程序运行的环境(沙箱主要限制系统资源的访问,如cpu,内存等等。不同级别的沙箱对这些资源的访问限制也不一样)就是将java代码限定在虚拟机(jvm) 特定的运行范围中,并且严格限制代码对本地系统资源的访问,通过这样的措施来保证对代码的有效隔离,防止对系统造成破坏。
2023-03-18 11:13:37
850
原创 JAVA的事务
要先知道什么是java中的事务?事务: 一般是指要做的或所做的事情.专业术语是这样说的: 就是代码逻辑上的一组操作,这些操作要么全部成功,要么全部失败!举一个现实生活当中的例子:1张三账上有2000元,李四账号也有2000元。张三要向李四转账1000元,正常来说应该是张三账上-1000元,李四账上+1000元。最后张三账上还剩1000元,李四账上3000元。这样就完成了一个转账的操作.2.但这组操作不应该出现的情况就是:张三转了1000元之后断电了,或者出现其他的特殊情况。
2023-03-15 14:53:09
2019
原创 Docker私有仓库
打开浏览器输入地址http://自己虚拟机的端口号:5000/v2/_catalog看到如下页面。修改daemon.json。
2023-03-12 09:14:41
81
原创 使用Jmeter进行性能测试的基本操作方法
Status状态栏里面全都是绿色的小盾牌,说明执行没有问题,表格里面可以看到各种参数如起始时间,线程名,标签,延迟等等。接下来我们双击Jmeter.bat就可以打开Jmeter软件啦,打开的时候会先跳出一个黑色命令行框,不用管它,直接最小化就可以,不要关闭,因为关了之后Jmeter也就一并关掉了。名称是可以自由更改的我就不提啦,我们可以在HTTP请求下的【路径】栏里,填写我们想要测试的URL,我就用搜狗主页。然后就可以在表格监听界面看到执行结果,在右上角能够看到我们刚刚的任务的总执行时间。
2023-03-11 08:32:06
554
原创 Mq的相关概念
先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。天生为金融互联网领域而生,对于可靠性要求很高的场景,尤其是电商里面的订单扣款,以及业务削峰,在大量交易涌入时,后端可能无法及时处理的情况。
2023-03-11 08:25:44
2510
原创 Docker安装RabbitMq
用户名:guest 密码:guest。# 创建rabbitmq文件夹。# 打开rabbitmq文件夹。# 打开docker目录。
2023-03-11 08:18:05
133
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人