热门 最新 精选 话题 上榜
平时工作的踩坑记录
推荐 原创 6天前
194阅读
购物车的实现(未登录时也可以使用)
复杂业务场景下,如何优雅的使用设计模式来优化代码?
推荐 原创 10天前
204阅读
yyds干货盘点
复杂业务场景下,如何优雅的使用设计模式来优化代码?
<font color="red">正月初九,开工大吉!</font> <font color="red">2024年,更上一层楼!</font> 写在开头 其实在List的继承关系中,除了ArrayList和LinkedList之外,还有另外一个集合类stack(栈),它继承自vector,线程安全,先进
推荐 原创 27天前
307阅读
2点赞
Java集合篇之逐渐被遗忘的Stack,手写一个栈你会吗?
MyBatis-Plus整合SpringBoot及使用
大任务拆分,让并行嗨起来!
前言在使用框架日常开发中需要在controller中进行一些异步操作减少请求时间,但是发现在使用@Anysc注解后会出现Request对象无法获取的情况,本文就此情况给出完整的解决方案原因分析@Anysc注解会开启一个新的线程,主线程的Request和子线程是不共享的,所以获取为null在使用springboot的自定带的线程共享后,代码如下,Request不为null,但是偶发的其中body/h
推荐 原创 28天前
327阅读
1点赞
接了个变态需求:生成 Excel + PDF 导出,用 Java 怎么实现?
通过自定义注解+mybaits拦截器,实现在不更改xml内容的情况下,动态添加权限语句来实现权限过滤
推荐 原创 29天前
312阅读
1 问题描述系统从圣诞节晚开始,每晚固定十点多到十一点多时段,大概瘫痪1h,过这时段系统自动恢复。系统瘫痪现象就是,网页和App都打不开,请求超时。系统架构:整个系统托管在公有云,Nginx前置网关承接前端所有请求,后端按业务划微服务。数据保存在MySQL,部分数据Memcached前置缓存。数据并没按微服务最佳实践要求,做严格划分和隔离,而是为方便,存一起。这对一个业务变化极快的创业公司合理。因
推荐 原创 29天前
193阅读
yyds干货盘点
访问数据库超时问题排障
Java实现基于清除后分配规则的垃圾回收器及其实现原理
优雅的实现接口防刷,最强方案来了~!
RecursiveAction是Java中一个强大的工具,它允许将复杂任务分解为更小的子任务,这些子任务可以并行执行,从而提高整体性能,其主要优点在于能够有效地利用多核处理器,减少任务执行时间,并简化并行编程的复杂性。
推荐 原创 1月前
975阅读
1点赞
【揭秘】RecursiveAction全面解析
ForkJoinTask的显著优点在于其高效的并行处理能力,它能够将复杂任务拆分成多个子任务,并利用多核处理器同时执行,从而显著提升计算性能,此外,ForkJoinTask还提供了简洁的API和强大的任务管理机制,使得开发者能够更轻松地编写并行化代码,高效地利用系统资源。
推荐 原创 1月前
921阅读
1点赞
【揭秘】ForkJoinTask全面解析
在Feign中,默认使用了Spring MVC的编解码器来处理请求和响应。但有时候,咱们可能需要对这些编解码器进行定制,比如使用不同的JSON解析库,或者处理一些特殊的数据格式。这时,咱们可以自定义编解码器。@Bean在这个例子中,继承了,并使用了来处理HTTP消息。然后,在配置类中注册这个自定义的解码器。Feign也允许咱们添加自定义的拦截器,这在处理一些如身份验证、日志记录等横切关注点时非常有用。自定义拦截器可以在发送请求之前或之后执行一些逻辑。@Override。
推荐 原创 1月前
896阅读
Caffeine是一个开源的Java缓存库,它的设计初衷就是替代Guava缓存,提供更加高效的缓存解决方案。为什么要替代Guava呢?因为Guava虽好,但在处理高并发和大数据量时,性能就显得有点吃力。Caffeine的特点可以用三个词概括:快、简单、强大。它的API设计得非常直观,让小黑们使用起来轻松自如。.build();这段代码创建了一个最大容量为10000的缓存,数据写入后5分钟过期。咱们看,是不是挺简单的?但别看Caffeine简单,它的内部实现可是非常巧妙和复杂的。
推荐 原创 1月前
1508阅读
支付宝:多线程事务怎么回滚?说用 @Transactional 可以回去等通知了!
前言学习SpringBoot,绝对避不开自动装配这个概念,这也是SpringBoot的关键之一本人也是SpringBoot的初学者,下面的一些总结都是结合个人理解和实践得出的,如果有错误或者疏漏,请一定一定一定(不是欢迎,是一定)帮我指出,在评论区回复即可,一起学习!篇幅较长,希望你可以有耐心.如果只关心SpringBoot装配过程,可以直接跳到第7部分想要理解spring自动装配,需要明确两个含
推荐 原创 1月前
984阅读
spring自动装配的原理解析
RocketMQ中的消费者组扮演着关键角色,主要有两种使用场景。首先,一个topic只被一个消费者组订阅,确保每条消息都被处理,同时通过负载均衡提高处理效率和可靠性。其次,多个消费者组可以独立完整地消费同一个topic,支持不同的消费逻辑和业务处理流程。
推荐 原创 1月前
265阅读
【揭秘】RocketMQ消费者组:如何优化你的分布式系统?
1 背景用户第一次点击下单操作时,会弹出支付页面待支付。但可能存在用户在支付时发现账户金额不够,后续选择:其他渠道支付(如微信支付转为支付宝支付)或采用不同终端来支付(如由电脑端支付转为app端支付)这时就面临二次支付场景。2 方案1由于用户支付的时候的支付页面是html文件或是一个支付二维码,可将支付页面先存储一份在数据库中,用户二次支付时通过查询数据库来重新返回用户原来的支付页面。2.1 缺点
事务Transactional失效的这10个场景,你一定得知道!
推荐 原创 1月前
1256阅读
1点赞
yyds干货盘点
事务Transactional失效的这10个场景,你一定得知道!
在Java编程中,动态代理的应用非常广泛。它被广泛应用于Spring AOP框架、Hibernate数据查询、测试框架的后端mock、RPC以及Java注解对象获取等领域。
推荐 原创 1月前
1143阅读
1点赞
yyds干货盘点
精彩推荐 |【Java技术专题】「重塑技术功底」攻破Java技术盲点之剖析动态代理的实现原理和开发指南(上)
干掉过多的 if else,让你的代码更优雅学习改变命运,技术铸就辉煌。大家好,我是銘,全栈开发程序员。写代码时候,有时候条件过多,会有很多 if else ,代码看起来很乱,不够优雅,那如何让代码更优雅呢,如何让代码可读性更强呢,那銘哥就来教你怎么做。注意啊,是过的 if-else ,如果只是三四个,那就没必要优化了。写这篇文章之前,我看网上很多说用 switch case 啊,首先不比较 if
推荐 原创 1月前
1260阅读
干掉过多的 if else,让你的代码更优雅
? 业务场景提交订单评价时需要对评价内容进行判断,如果出现敏感词则提示修改?这不就是写一个敏感词的校验工具类吗,小问题,说干就干?️业务梳理将敏感词存入数据库或者文件中读取文件或数据库中敏感词,循环遍历敏感词,判断评价内容中是否包含敏感词,包含则提示报错?小技巧读取文件时不需要每次都读取,用一个静态代码块坐初始化,读取完毕后放入jvm缓存//敏感词库 通过jvm缓存 private sta
推荐 原创 1月前
1981阅读
工作四年,关于过滤敏感词,我准备这样干
中介者模式通过引入中介类降低对象间耦合度,在电商平台中,卖家、买家、物流公司和支付平台原本需复杂交互,在引入“交易中介”类后,各角色只需与中介交互,由中介协调各方操作,从而简化了交互流程,降低了类间依赖,使系统更灵活可维护。
推荐 原创 1月前
331阅读
程序员必知!中介者模式的实战应用与案例分析
明明有十多个结果,怎么只能返回5个? 当管理员在后台界面重置用户的密码的时候,居然报错了?
Mybatis主要思想是将程序中大量的 SQL 语句剥离出来,配置在配置文件中,以实现 SQL 的灵活配置。在所有 ORM 框架中都有一个非常重要的媒介——PO(持久化对象),PO 的作用就是完成持久化操作,通过该对象对数据库执行增删改的操作,以面向对象的方式操作数据库。
推荐 原创 1月前
761阅读
1点赞
yyds干货盘点
【Spring技术专题】「实战开发系列」保姆级教你SpringBoot整合Mybatis框架实现多数据源的静态数据源和动态数据源配置落地
Java 运行时环境包含一个内置的垃圾回收 (GC)进程。在许多其他编程语言中,开发人员需要手动分配和释放内存区域,以便可以重用释放的内存。另一方面,Java 应用程序只需要分配内存。每当内存中的特定空间不再使用时,称为垃圾收集的单独进程会为它们清除内存。垃圾收集手册中更详细地解释了 GC 如何检测内存的特定部分,但您可以相信 GC 能很好地完成它的工作。在GC开销超过极限:java.lang.O
推荐 原创 1月前
762阅读
1点赞
常见OOM问题之GC overhead limit exceeded 问题详解
Redis 的持久化功能是区别于 Memcached 显著特性,数据持久化可以保证系统在发生宕机和重启后数据不会丢失,对于 redis 这种存储在内存中的数据库显得尤为重要。 在 Redis 4.0 以前数据持久化的方式主要有两种AOF和RDB
推荐 原创 1月前
973阅读
1点赞
Redis 中的 RDB 和 AOF 持久化机制
组合模式是一种设计模式,允许将对象组合成树形结构并像单个对象一样使用它们,这种模式在处理类似公司组织结构这样的树形数据时非常有用,通过组合模式,我们可以将公司和部门视为同一类型的对象,从而以统一的方式处理发送给不同层级的请求或任务,叶节点是没有子节点的对象,而复合节点则包含子节点,客户端可以与这些节点进行交互,无需知道它们的具体类型。组合模式提供了表示层次结构的灵活方式,并统一了客户端的交互方式。
推荐 原创 1月前
432阅读
程序员必知!组合模式的实战应用与案例分析
物流的分拣业务在某些分拣场地只有一个数据源,因为数据量比较大,将所有数据存在一张表内查询速度慢,也为了做不同设备数据的分库管理,便在这个数据源内创建了多个不同库名但表完全相同的数据库,如下图所示:现在需要上线报表服务来查询所有数据库中的数据进行统计,那么现在的问题来了,该如何满足在配置一个数据源的情况下来查询该数据源下不同数据库的数据呢,借助搜索引擎查到的分库实现大多是借助 Sharding-JD
推荐 原创 1月前
563阅读
Mybatis 拦截器实现单数据源内多数据库切换 | 京东物流技术团队