
java优秀例子
文章平均质量分 51
小编工作、学习中,收集的一些优秀例子和一些常用方法的记录,比较散未进行系统集中处理。
Lin_Miao_09
这个作者很懒,什么都没留下…
展开
-
List对象进行排序
用空间换时间,Java在内存中进行对象集合排序。原创 2025-02-13 09:30:27 · 2043 阅读 · 0 评论 -
ApplicationRunner、SmartLifecycle实现启动开启和优雅关闭
ApplicationRunner、SmartLifecycle实现启动开启和优雅关闭原创 2025-01-10 09:24:21 · 454 阅读 · 0 评论 -
ThreadLocal+Queue消息总线
实现服务内部的消息总线原创 2024-12-30 08:18:48 · 177 阅读 · 0 评论 -
接口调用限频(代理模式+滑动窗口)
通过代理模式+滑动窗口,限流请求第三方平台,避免出现第三方平台抛出限流异常,影响正常业务流程,从出口出发进行限流请求。原创 2024-12-26 08:56:28 · 519 阅读 · 0 评论 -
飞书群机器人告警通知
飞书群机器人是一种强大的自动化工具,能够无缝集成到团队的日常工作流中,提供自动化信息推送、第三方服务集成、个性化定制等功能,从而显著提升沟通效率和协作效果。原创 2024-12-23 08:27:02 · 652 阅读 · 0 评论 -
ProGuard代码混淆
ProGuard 是一种用于优化、缩小和混淆 Java 字节码的工具,广泛应用于 Android 应用开发中。原创 2024-11-30 11:44:13 · 1060 阅读 · 0 评论 -
常用加密算法(AES、RSA、MD5、SHA)及其使用场景
加密算法是信息安全的重要组成部分,用于保护数据的机密性、完整性和可用性。根据不同的应用场景,加密算法可以分为对称加密算法、非对称加密算法和哈希函数。原创 2024-11-29 10:45:18 · 1443 阅读 · 0 评论 -
使用lombok@Data存在extends时需要注意
当在继承的上下文中使用Lombok的@Data注解时,需要特别注意equals()、hashCode()、toString()方法的生成以及字段的可见性和封装性。通过适当的Lombok注解和手动编码,可以确保代码的健売性、正确性和可维护性。原创 2024-08-30 06:26:37 · 487 阅读 · 0 评论 -
RocketMQ顺序消费
RocketMQ 支持两种类型的顺序消息消费:分区顺序消息(Partition Ordered Messages)和全局顺序消息(Global Ordered Messages)。这两种方式都能确保消息的顺序消费,但它们的工作机制有所不同。原创 2024-07-22 10:36:23 · 2819 阅读 · 0 评论 -
Canal自定义客户端
Canal自定义客户端具有解耦与业务代码、实时性高、扩展性强、容错能力强、高性能和灵活性高等优点。这些优点使得Canal成为实现数据同步的理想选择之一。原创 2024-06-21 18:51:00 · 543 阅读 · 0 评论 -
List过滤重复数据
Stream API 的核心在于提供了一组高度灵活且功能强大的接口和方法,这些方法允许开发者对数据进行高效地转换、聚合、过滤、排序等操作,而无需显式地管理循环和其他控制结构。原创 2024-05-20 16:58:06 · 671 阅读 · 0 评论 -
ThreadLocal的使用
ThreadLocal在Java中用于创建线程局部变量,即为每个线程提供一个独立的变量副本,确保每个线程看到的变量值是其私有的,不会被其他线程修改或看到。原创 2024-05-20 09:30:29 · 274 阅读 · 0 评论 -
Spring的@Retryable实现方法重试
Spring Retry的主要作用是为Spring应用程序提供自动重试的功能。当应用程序中的某些操作因为临时性故障(如网络抖动、短暂的服务不可用等)而失败时,Spring Retry能够按照配置的策略自动重新尝试这些操作,从而提高系统的健壮性和可靠性。它可以通过编程式接口或注解(如@Retryable和@Recover)来方便地集成到Spring应用程序中。原创 2024-05-05 20:01:19 · 636 阅读 · 1 评论 -
MyBatisPlus @TableLogic实现全局自动逻辑删除
@TableLogic这个注释是专门为在数据库实体中实现逻辑删除功能而设计的。逻辑删除意味着当您想要“删除”一条记录时,不是从数据库中物理地删除它,而是通过更新该记录中的特定列(通常称为deleted、is_deleted或类似的列)将该记录标记为已删除。原创 2024-05-04 16:21:33 · 861 阅读 · 0 评论 -
GZIPOutputStream JSON压缩
GZIPOutputStream是一个用于压缩数据输出的流类,通过它,我们可以轻松地将字符串或其他数据类型的数据进行GZIP格式的压缩,从而减小数据的大小,便于存储和传输。原创 2024-05-01 14:22:03 · 479 阅读 · 1 评论 -
自定义注解+AOP环绕通知(炸裂效果,1+1大于2)
自定义注解与AOP环绕通知,实现炸裂般的编程体验!通过自定义注解,我们能够为代码添加丰富的元数据信息,而AOP环绕通知则能够在不侵入原有代码逻辑的情况下,对特定方法进行拦截和增强。两者结合,将带来前所未有的编程灵活性和效率,让你的代码如同炸裂般精彩!原创 2024-04-13 19:01:47 · 361 阅读 · 0 评论 -
Spring ApplicationEvent 事件处理--不用引入中间件
Spring的ApplicationEvent机制提供了一种灵活且强大的方式来处理应用程序中的事件驱动场景。通过定义自定义事件、监听器和发布事件接口,可以方便地实现各种业务逻辑和流程。原创 2024-04-13 18:12:48 · 475 阅读 · 2 评论 -
403跨域,什么是跨域,如何解决。(CROS)
当请求的协议、域名、端口,任一不相同时就会出现跨域。当前URL被请求URL是否跨域原因否同源(协议、域名、端口都相同)是协议不同(http/https)是域名不同(www.abc.com/www.def.com)是端口不同(8080/8181)原创 2022-09-22 10:30:45 · 3767 阅读 · 1 评论 -
Spring Cloud Contract简单入门
Spring Cloud Contract 是一个包含解决方案的总括项目,可帮助用户成功实施消费者驱动的合同方法。目前 Spring Cloud Contract 由 Spring Cloud Contract Verifier 项目组成。Spring Cloud Contract Verifier 是一种工具,它支持基于 JVM 的应用程序的消费者驱动契约 (CDC) 开发。它附带了用 Groovy 或 YAML 编写的合同定义语言 (DSL)。原创 2022-09-14 14:56:06 · 1771 阅读 · 1 评论 -
提交代码必备,避免被同事嫌弃
feat: 新功能(feature)fix: 修补bugdocs: 文档(documentation)style: 格式(不影响代码运行的变动)refactor: 重构(即不是新增功能,也不是修改bug的代码变动)chore: 构建过程或辅助工具的变动revert: 撤销,版本回退perf: 性能优化test:测试improvement: 改进build: 打包ci: 持续集成...原创 2022-09-01 11:33:24 · 353 阅读 · 0 评论 -
hibernates使用雪花算法生成id
有一天接到一个开发任务,实现简单的CRUD,实现完自测一下,看到数据库中的id,很别扭。看了一下代码,马上决定着手修改。原创 2022-09-01 11:22:32 · 827 阅读 · 0 评论 -
BigDecimal 的常用加减乘除、比较大小
一、背景。在涉及金额或其他重要数据的计算建议使用BigDecimal,在这里就不延伸。BigDecimal 类型的计算和比较大小,和其他常用数据类型long、int不一样。二、正文加减乘除BigDecimal b1 = new BigDecimal("100"); BigDecimal b2 = new BigDecimal("10"); //加法BigDecimal add = b1.add(b2); System.out.println(add);//减法 Bi原创 2021-09-15 15:00:41 · 394 阅读 · 0 评论 -
controller入参异常 No primary or default constructor found for class
一、记一次的常见报错java.lang.IllegalStateException: No primary or default constructor found for class java.time.LocalDateTime错误写法:@GetMappingpublic String query(LocalDate start,LocalDate end) { return "开始时间:"+start+" 结束时间:"+end;}该写法springMVC会默认根据参数名称“原创 2021-03-22 14:31:06 · 7713 阅读 · 0 评论 -
Netty实战流程(服务提供者)
一、配置文件application.properties添加配置#netty配置server.ip=127.0.0.1server.ip.port=6060二、创建NettyServer类@Slf4j@Componentpublic class NettyServer { @Autowired private ServerChannelInitializer serverInit; private final EventLoopGroup parentGroup =.原创 2021-03-18 16:07:53 · 356 阅读 · 0 评论 -
23种设计模式通俗理解
虽然有点污,但印象深刻。01 工厂方法追 MM 少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是 MM 爱吃的东西,虽然口味有所不同,但不管你带 MM 去麦当劳或肯德基,只管向服务员说「来四个鸡翅」就行了。麦当劳和肯德基就是生产鸡翅的 Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。02 建造者模式MM 最爱听的就是「我爱你」这句话了,见转载 2021-03-15 19:01:38 · 141 阅读 · 0 评论 -
nginx将post请求被转换为get请求
一、背景我的一个post请求在本地没问题,到线上一直出现调用失败。查看相关的日志也没什么发现,判断请求根本就没有进入到系统。边调用接口边看控制日志,一直提示“Request method 'GET' not supported”。百度了一下,很多人说将“location”和“proxy_pass”地址后的“/”去掉就可以,我平常配置都是有对应“/”,是没问题的。二、解决该请求方法是配置在“443”端口下的。于是将接口请求改为https,果然没问题了。其他很多博客都说去掉“location原创 2021-03-15 14:58:13 · 1643 阅读 · 0 评论 -
Redis分布式锁的实现
分布式锁应用场景秒杀活动如果没有分布式锁,可能会出详细超买的情况。即使在方法中使用了synchronized,在分布式的系统中还是会出现超卖,只有使用分布式锁才可以解决该问题。简单版分布式锁,存在缺陷超时时间不好设置。 @Autowired private StringRedisTemplate stringRedisTemplate; /** * 利用redis实现最简单的分布式锁(功能不够完善) * @return */ @RequestMapping("原创 2021-03-11 00:48:36 · 161 阅读 · 0 评论 -
spring aop实现接口请求记录
一、背景接到一个需求,记录每个用户,在系统进行的修改、添加和删除的操作记录。二、具体实现日志记录,与主业务没有直接联系,不进行业务处理,故符合spring aop面向切面的编程思想。所以采用aop,来完成这一任务。废话少说,直接上代码,代码参考了其他博主的文章,并结合自己的项目的实际情况进行修改。@Aspect@Component@Slf4j@Order(value = 3)//项目启动自动执行顺序public class ThirdApiRequestLogAspect{原创 2021-02-17 18:05:56 · 265 阅读 · 0 评论 -
根据数据库表名生成对应的bean及其相关接口、实现类、Mapper xml
一、背景项目开发中,经常会根据数据库表,创建对应的bean及其相关接口、实现类、Mapper xml。都是一个固定的格式,所以不如将其写成一个固定程序,每次生成执行一次即可。二、实现示例如下:public class Generator { /** * <p> * 读取控制台内容 * </p> */ public static String scanner(String tip) { S原创 2021-02-17 17:11:30 · 626 阅读 · 0 评论 -
springboot启动报错 Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded 。。
一、错误如下二、错误的原因项目启动是出现该错误的原因,SpringBoot@SpringBootApplication该注释会有数据库的自动配置,但在项目配置文件中没有找到相关的配置导致的。三、解决方法如果是配置错误修改配置就可以,如果是项目本身不需要数据库可以在@SpringBootApplication,加上exclude=DataSourceAutoConfiguration.class,排除数据库的自动配置类就可以了 ,如下所示:...原创 2020-10-22 14:59:59 · 372 阅读 · 0 评论 -
项目启动报java.lang.NoSuchMethodError:....Ljava/util/List;
出现该错误的原因为,所传的值类型与接收的类型不符合。例如:mybatis中的xml中参数类型与传递参数不付合。原创 2019-04-22 09:00:11 · 2064 阅读 · 0 评论 -
java项目请求报错PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
报错:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certifi...原创 2019-04-30 15:57:05 · 1132 阅读 · 0 评论 -
项目启动时报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
根据报错可以明显地看出,该错误的获取MySQL数据连接报错,该报错是未找到MySQL数据库驱动导致的。1、先检查pom文件中的是否少了对应的引入。2、如果pom文件中的有对应的引入,检查项目中下载的包是否完整(对应的包不熟悉的同学可以先将pom文件中的引入删除后重新添加,并刷新)。3、检查配置中是否多了空格或特殊符号等。...原创 2019-04-23 16:32:45 · 627 阅读 · 0 评论 -
java使用hutool工具包实现发送邮件功能
一、背景检测项目运行状态,出现异常时,向项目负责人发送通知邮件。二、采用技术主要使用java的mail工具类和hutool工具包三、具体实现1、邮箱配置小编这个采用的是QQ邮箱,以QQ邮箱为例,设置大同小异。登录网页版的QQ邮箱后,点击设置点击账户找到相应的服务并开启,开启后会有对应授权码,后面代码实现会使用到,两种的授权码任选一种即可。2、引入对应的jar <!-- hutool工具包 --> <dependency&g.原创 2020-10-21 09:35:07 · 3278 阅读 · 2 评论 -
记一次dubbo超时设置踩坑
1、dubbo指定设置一个的方法的超时时间service注解必须是“com.alibaba.dubbo.config.annotation.Service”。getAllUser 和 getType 这两方法指定设置超时时间为3000毫秒,重试次数为0。很多大佬的博客中都有推荐这种做法,当我使用的dubbo版本为dubbo-2.6.2.jar时,却无法成功。启动就会报以下错误...原创 2020-10-12 12:46:21 · 473 阅读 · 0 评论 -
java生成Excel方法
一、引入对应的包 <!-- poi读写Excel工具类 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency> <dependency> <原创 2020-10-08 13:02:38 · 291 阅读 · 0 评论 -
如何获取controller下的所有请求,进行权限管控
一、背景前端管控的权限,可以通过设置菜单是否可见进行权限管控。后端该如何动态管控接口的权限,通过该问题,从网上搜索了一下,并通过自己的设计思路,出了一套方案。方案不是很成熟,希望各位大佬能给予指正。二、具体实现1、系统启动,zhd...原创 2020-09-29 11:23:57 · 1172 阅读 · 2 评论 -
spring、springboot项目启动自动执行方法
一、背景为什么会有这个问题,是因为有些项目的配置,需要在启动项目的时候就需要配置好,例如一些配置初始化的到Redis或数据库。二、实现网上有很多的解决的方法,这里整理一种我个人觉得比较实用的方法。实现接口ApplicationRunner,在代码中实现接口的run方法,并在run方法中编写逻辑代码。该方法可以通过@order(value= 数字) 来控制执行顺序,顺序是依次从小到大执行@Slf4j@Order(value = 3)@Componentpublic class原创 2020-09-29 10:13:57 · 519 阅读 · 0 评论 -
java项目日志打印设置logback.xml
一、准备工作引入相关jar<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>org.proj原创 2020-09-26 17:12:28 · 463 阅读 · 0 评论