java
文章平均质量分 84
java
wcy0310
这个作者很懒,什么都没留下…
展开
-
SpringBoot优化小技巧
在开发过程中,我们为了统一管理会把一些变量放到yml配置文件中,例如:用 @ConfigurationProperties 代替@Value ,定义对应字段的实体@Data// 指定前缀@Component在需要使用的地方注入这个bean。原创 2024-07-09 14:15:06 · 871 阅读 · 0 评论 -
接口设计规范
在实际工作中,我们需要经常跟第三方平台打交道,可能会对接第三方平台API接口,或者提供API接口给第三方平台调用。那么问题来了,如何设计一个优雅的API接口,能够满足:安全性、可重复调用、稳定性、好定位问题等多方面需求?今天跟大家一起聊聊设计API接口时,需要注意的一些地方,希望对你会有所帮助。原创 2024-06-19 13:58:33 · 1003 阅读 · 0 评论 -
使用@Transactional 注解下,事务失效的场景
是一种基于注解管理事务的方式,spring通过动态代理的方式为目标方法实现事务管理的增强。使用起来方便,但也需要注意引起失效的场景,本文总结了七种情况,下面进行逐一分析。原创 2024-05-21 11:46:55 · 834 阅读 · 1 评论 -
Java开发规范
一、编程规约(一) 命名风格1. 【强制】所有编程相关的命名均不能以下划线或美元符号开始 ,也不能以下划线或美元符号结束。反例:_name/ __name/$Object/name_ /name$ / Object$2. 【强制】所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意即使纯拼音命名方式也要避免采用。正例:ali/ alibaba/ taobao/kaike原创 2024-05-20 17:26:54 · 615 阅读 · 1 评论 -
网关 GateWay 的使用详解、路由、过滤器、跨域配置
有时候SpringCloudGateWay提供的过滤器工厂不能满足自己的要求。可能有时候需要在过滤时做一些其它的逻辑操作。那么这时候可以选择使用java代码自定义全局过滤器。@Component@Override// 1.获取请求参数//1.这里的request并不是servlet中的request//2.返回值是一个多键的map集合、也就是说这个map集合的键可以重复// 2.获取userName参数// 3.校验// 放行// 4.拦截// 4.1.禁止访问,设置状态码。原创 2024-05-20 11:02:57 · 1064 阅读 · 0 评论 -
Lambda 表达式中的 forEach 如何提前终止
但是,在实际运行中,往往有很多不突发情况导致代码提前终止,比如:空指针异常,其实,我们也可以通过抛出假异常的方式来达到终止 forEach() 方法的目的。这里,需要注意的一点是:要确保你 forEach() 方法体内不能有其它代码可能会抛出的异常与自己手动抛出并捕获的异常一样;否则,当真正该因异常导致代码终止的时候,因为咱们手动捕获了并且没做任何处理,岂不是搬起石头砸自己的脚。forEach(),说到底是一个方法,而不是循环体,结束一个方法的执行用什么?,就会出现 foreach 的代码提示。原创 2024-05-18 15:29:28 · 560 阅读 · 0 评论 -
SpringBoot启动优化
公司 SpringBoot 项目在日常开发过程中发现服务启动过程异常缓慢,常常需要6-7分钟才能暴露端口,严重降低开发效率。通过 SpringBoot 的原理和源码调试等手段排查发现,在 Bean 扫描和 Bean 注入这个两个阶段有很大的性能瓶颈。通过 JavaConfig 注册 Bean, 减少 SpringBoot 的扫描路径,同时基于 Springboot 自动配置原理对第三方依赖优化改造,将服务本地启动时间从7min 降至40s 左右的过程。原创 2024-05-17 17:10:23 · 826 阅读 · 0 评论 -
flowable多人会签与一票否决
到这里就结束了,大概流程就是这样,因为这是测试代码,所以这里写的是审批人是相当于直接塞进去的,也可以手动的塞进去,就是add的那个方法,在进行加载xml的时候,创建一个map,然后序列化一下,放到那个方法的第二个参数的位置就行了。我这里为了能体现否决和同意,我一共设置了三个任务,第一个任务是会签,第二个任务和第三个任务一个是同意一个是否决对应的任务,他们是通过路由进行相关联的,路由判断outcome是"否决"还是"通过"然后路由到第二个任务或者第三个任务。接下来就可以运行了,数据库的名称要对应好。原创 2024-05-17 10:30:32 · 741 阅读 · 0 评论 -
SpringBoot最核心的注解
Spring Boot方式的项目开发已经逐步成为Java应用开发领域的主流框架,它不仅可以方便地创建生产级的Spring应用程序,还能轻松地通过一些注解配置与目前比较火热的微服务框架SpringCloud集成,而Spring Boot 之所以能够轻松地实现应的创建及与其他框架快速集成,最核心的原因就在于它极大地简化了项目的配置,最大化地实现了“约定大于配置”的原则,然而基于Spring Boot 虽然极大地方便了开发,但是也很容易让人“云里雾里”,特别是各种注解很容易让人“知其然而不知其所以然”。原创 2024-05-16 17:01:50 · 899 阅读 · 0 评论 -
在多线程中常见锁的策略
每次读写数据都认为不会发生冲突,线程不会阻塞,一般来说,只有在进行数据更新时才会检查是否发生冲突,若没有冲突,直接更新,只有冲突(多个线程都在更新数据)了才解决冲突问题。当线程冲突不严重的时候,可以采用乐观锁策略来避免多次的加锁解锁操作。每次去读写数据都会冲突,每次在进行数据读写时都会上锁(互斥),保证同一时间段只有一个线程在读写数据。当线程冲突严重时,就需要加锁,来避免线程频繁访问共享数据失效带来的CPU空转问题。原创 2024-05-16 10:19:31 · 1056 阅读 · 0 评论 -
为什么不建议用 equals 判断对象相等
比较时, 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。如果 a 和 b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true。而 a.equals(b) 是进行逻辑比较,当内容相同时,返回true,所以通常需要重写该方法来提供逻辑一致性的比较。如果不相等,后面的表达式的意思是,先判断a不为空,然后根据上面的知识点,就不会再出现空指针。与情况1 行为一致。原创 2024-05-15 14:59:06 · 401 阅读 · 0 评论 -
Java中反射和new效率对比
其中JIT在程序运行期会对程序进行优化,但是反射是通过动态解析的方式,因此可能无法执行某些java虚拟机的优化。但是随着我们技术的不断提升,我们也学习到了,可以通过反射技术实现对象的创建。接下来,程序运行期间,可能会通过一个JIT,即时编译器将字节码文件转换为计算机认识的机器码文件。可是,你有没有想一下,什么时候我们改用new创建对象,什么时候我们改用反射创建对象呢?首先第一点,一般我们的Java代码是需要编译后在虚拟机里面运行的。new的对象无法访问其中的私有属性,反射出来的可以通过设置。原创 2024-05-14 16:46:34 · 433 阅读 · 1 评论