- 博客(2180)
- 资源 (32)
- 收藏
- 关注
转载 提高系统吞吐量的一把利器:DeferredResult 到底有多强?
还有一个成员变量为taskId,是用于自动生成任务id的,并且在加入任务的方法中实现自增,以确保每个任务的id唯一性。其中,对queue的操作,分别用了offer和poll,这样是实现一个非阻塞的操作,并且在队列为空和队列已满的情况下不会抛出异常。,很显然,这是一个获得长度为len的随机串的方法,访问限定为private,为类中其他方法服务的。平时我们用的最普遍的还是阻塞调用,通常请求的处理时间较短,在并发量较小的情况下,使用阻塞调用问题也不是很大。的随机数,并让线程sleep相应的秒数。
2024-04-16 09:01:49 19
转载 ThreadLocal学习圣经:一文穿透TL、 ITL、TTL、FTL,穿透ThreadLocal 内存泄漏
在Java的多线程并发执行过程中,为保证多个线程对变量的安全访问,可以将变量放到ThreadLocal类型的对象中,使变量在每个线程中都有独立值,不会出现一个线程读取变量时而被另一个线程修改的现象。ThreadLocal类通常被翻译为“线程本地变量” ,或者“线程局部变量ThreadLocal的英文字面翻译为“线程本地”,实质上ThreadLocal代表的是线程本地变量,可能将其命名为会更加容易让人理解。以下来至官网的解释简单翻译如下:此类提供线程局部变量。
2024-04-16 09:00:46 21
转载 SpringBoot 接口加密解密,新姿势!
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。接口相应数据的时候,返回的是加密之后的数据 接口入参的时候,接收的是解密之后的数据,但是在进入接口之前,会自动解密,取得对应的数据。提供了优雅的参数校验,入参都是实体类,在实体类字段上加上对应注解,就可以在进入方法之前,进行参数校验,如果参数错误,会抛出错误。如果是继承了统一父类。
2024-04-15 08:56:45 17
转载 SpringBoot 中的日志原来是这么工作的
有些时候,使用包提供的LoggersEndpoint来热更新日志打印器级别,是有点不方便的,因为想要热更新日志级别而引入包,大部分时候这个操作都有点重,而通过上面的分析,我们发现其实热更新日志打印器级别的原理特别简单,就是通过LoggingSystem来操作Logger,所以我们可以自己提供一个接口,通过这个接口来操作Logger的级别。// 省略getter和setter通过调用上述接口使用LoggingSystem就能够完成指定日志打印器的级别热更新。
2024-04-15 08:55:10 14
转载 Spring Boot + Lua = 王炸!
Lua脚本允许你在Redis中执行更复杂的操作,而无需进行多次的网络通信,从而提高性能和可伸缩性,同时确保数据的一致性和原子性。通过适当的错误处理和安全措施,你可以确保Lua脚本在与Redis交互时不会引入潜在的问题,并提高应用程序的稳定性和安全性。Lua脚本的执行是原子的,这意味着在Lua脚本执行期间,没有其他客户端可以插入其他操作。通过遵循这些最佳实践和建议,你可以更安全、高效地使用Lua脚本来实现Redis功能,并确保你的Spring Boot项目与Redis的交互是可靠和可维护的。
2024-04-15 08:53:54 12
转载 Open API 授权&鉴权机制设计
基于 OAuth2 建设 Open API 平台授权机制,通过安全标准的方式授权给外部,保证部门应用数据的安全性。OAuth2 定义了4种授权方式,但目前只需要供客户端在后台调用即可,所以仅考虑凭证式授权方式。oauth2_registered_client:spring-security-oauth2-authorization-server 组件依赖的表,记录已注册了的客户端凭证。
2024-04-15 08:50:55 12
转载 使用Spring Boot 3.x结合Redis实现在线教育平台交互功能
原创 路条编程北京在线教育平台已经成为新时代教育的重点。为提供更为优质的在线教育服务,本文将详细讲解如何采用 Spring Boot 3.x 结合 Redis 技术实现在线教育平台系统。
2024-04-15 08:47:58 14
转载 基于TTL 解决线程池中 ThreadLocal 线程无法共享的问题
原创 派大星辽宁身处外企,是一名技术工作者。作为InfoQ、阿里云等技术平台签约作者,致力于打造您专属的编程个人笔记(无广告)。216篇原创内容公众号在Java的并发编程领域中,ThreadLocal被广泛运用来解决线程安全困境,它巧妙地为每个线程提供独立的变量副本,有效规避了线程间数据共享的问题。不过,在使用线程池时,传递线程局部变量在父子线程之间并非易事。这是因为ThreadLocal的设计初衷仅在于线程内的数据隔离,无法支持跨线程间的数据传递。
2024-04-09 10:02:57 35
转载 实现百万级数据从Excel导入到数据库的方式
原创 派大星辽宁身处外企,是一名技术工作者。作为InfoQ、阿里云等技术平台签约作者,致力于打造您专属的编程个人笔记(无广告)。216篇原创内容公众号。
2024-04-09 10:01:37 43
转载 面试官:在项目中用过责任链模式吗?
山东责任链模式,简而言之,就是将多个操作组装成一条链路进行处理。请求在链路上传递,链路上的每一个节点就是一个处理器,每个处理器都可以对请求进行处理,或者传递给链路上的下一个处理器处理。
2024-04-08 13:59:43 41
转载 阿里面试:解释一下高并发的核心性能指标QPS、TPS、RT、并发数、吞吐量
原创 架构师汤师爷浙江点击下方,关注我,记得星标哟~后台回复【架构】,免费领取架构学习大礼包。关注我,一起学习企业级SaaS业务与架构知识,为企业数字化转型添砖加瓦。关于我,10+年互联网经验,现任某SaaS公司TL+架构师,目前关注新零售业务 、企业架构、中台架构、领域驱动设计、技术领导力等领域。34篇原创内容公众号当系统面对海量并发请求时,高并发性能指标是我们用来衡量一个系统表现如何的关键指标。
2024-04-08 13:57:19 50
转载 如何设计一个通用的 Excel 导入导出功能?
失败的面 老炮说Java 2024-04-07 14:00 山西老炮说Java十年老炮程序员带你玩技术公众号以JSON配置的方式去实现通用性和动态调整,当然,这个通用仍然存在一定的局限性,每个项目的代码风格都不同,想要写出一个适合所有项目的通用性模块并不容易,这里的通用局限于其所在项目,所以该功能代码如果不适用于自己的项目,希望可以以此为参考,稍作修改。那么现在来分析一下,我们会需要哪些JSON配置项。先从最简单的导出开始,被导出数据应该支持通过业务层查出,如:,这是大前提,然后为了支持显示导出进度,业务层
2024-04-08 13:56:20 39
转载 2.4k!这是我见过最强的在线学习系统!
PlayEdu 是一套完整的开源培训系统解决方案(遵循 Apache2.0 开源协议),支持部门管理、学员管理、课程管理、学员进度追踪等功能。并且,开源版的基础上还提供了企业版,企业版支持更多进阶功能,例如第三方登录(企业微信、飞书、钉钉)、视频云端存储、视频加密、音频学习、试卷生成、试题库管理、定制培训任务计划。
2024-04-08 13:55:12 47
转载 代码质量与技术债系列分享之一—如何做好CodeReview
理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树的结构,转换完成后将通过表达式引擎解析表达式并取得正确的值,通过事件解析引擎解析用户自定义事件并完成事件的绑定,完成解析赋值以及事件绑定后进行视图的渲染,最终将目标页面展示到屏幕。--- 《编程原则》可以看到第一段代码,没有规律,阅读成本高,第1行, 第5行出现了重复引用。看到下面这段代码,大概能够想象 newValidate 出现的原因,为了文章阅读体验, 删除部分代码。
2024-04-08 13:52:34 33
转载 SpringBoot实现电子文件签字+合同系统!
目前市面上的电子签章产品也是多样化,但是不管是哪个厂家的产品,在线签章简单易用,同时也能保证签章的有效性,防篡改,防伪造,稳定,可靠就是好产品。PageOffice产品只提供文档在线处理的功能,包括:打开、编辑、保存、动态填充、文档合并、套红、留痕、盖章等上百项功能(详细请参考PageOffice产品开发包中的示例),不提供流程控制功能,所以不管开发什么样的Web系统,只要是需要在线处理Office文档,都可以根据自己的项目需要,调用PageOffice产品相应的功能即可。
2024-04-08 13:50:25 41
转载 阿里的同事,写的代码真 TMD 优雅!
北京互联网架构师,后台回复通过这篇文章你将了解到整洁的代码对项目、公司和你的重要性,以及如何书写整洁的代码.通过命名、类、函数、测试这四个章节,使我们的代码变得整洁.不整洁的代码随着时间的增加而增加时,生产力会随之降低.导致的结果就是:代码不易扩展或扩展容易引发其他问题程序崩溃加班增加公司成本(加人)甚至可能造成公司倒闭一图胜千言。
2024-04-08 13:48:41 22
转载 手写超级好用的rabbitmq-spring-boot-start启动器
原创 Java大飞哥 Java大飞哥 2024-03-13 13:10 云南由于springBoot官方提供的默认的rabbitMq自动装配不是那么好用,一个项目中只能配置使用一个rabbitMq的服务器,队列也需要编码的方式定义,这种繁杂且不易使用,用一次需要写一次硬编码,之前有一个想法是,能不能使用springBoot官方提供的自动装配实现一个多rabbitMq多队列配置并且支持多种延迟队列的这种多对多关系的实现,但是左思右想,springBoot官方提供的这个rabbitMq自动装配不能满足我的需求,
2024-04-08 13:47:51 42
转载 从LocalDateTime序列化来看全局一致性序列化
代码中注释那一块也是做一个序列化转换,如果你的项目中用到了比较长的LONG类型数字,可能会导致JS拿不到完全的数字,因为java中的long类型要比JS的number类型长一点,这个时候你必须要转换成String给前台,它才能拿到正确的数字,如果你有需要可以打开这一段。只是一个缩影,哪怕对于字符串,不同的序列化配置也是有着不同的影响,字符串里面可能会有转义字符,有引号,不同的方案出来的结果可能是不一样的,但是如果这里的序列化用了其他方案,可能这个序列化结果会是不一样的体验,在我的项目中我也采用了。
2024-04-08 13:45:25 43
转载 妙用Java 8中的 Function接口,消灭if...else(非常新颖的写法)
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro。项目地址:https://github.com/YunaiV/ruoyi-vue-pro。的表现形式为不接受参数、只返回数据。的方法,方法的返回值为刚才定义的。
2024-04-08 13:44:30 40
转载 RocketMQ 消费者源码解读:消费过程、负载原理、顺序消费原理
看完上面的源码你最少可以回答下面几个问题RocketMQ消费的流程是怎么样的为什么消费者大于queue的时候,消费者就没用了顺序消费如何保证顺序的。
2024-04-08 13:36:58 43
转载 Resilience4j 源码解析(3):限流模块 RateLimiter 与 常见限流算法
比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开始的时候,我们可以设置一个计数器counter,每当一个请求过来的时候,counter就加1,如果counter的值大于100并且该请求与第一个请求的间隔时间还在1分钟之内,那么说明请求数过多;直观上,漏斗和令牌桶算法很相似,不过,漏桶算法稍微不同与令牌桶算法的一点是:对于取令牌的频率也有限制,要按照 t/n 固定的速度来取令牌,所以可以看出漏桶算法对流量的整形效果更加好,流量更加平滑,任何突发流量都会被限流。
2024-04-03 16:55:38 72
转载 Resilience4j 源码解析(2):浅析框架设计原理
其实同类组件的对比,能很好的反应我们要研究的框架的特性,特别是开源框架,并不是功能越多越好,功能越多意味着定制性更强,使用的时候未必更好,特别是对于中小团队,可能一年的年都够不上淘宝双十一半天的量。在后面的源码分析里,除了它优雅的函数式编程风格和严格的模块组织外,最让人印象深刻的就是他的设计者规范的实现了基于事件驱动的架构设计,这是非常值得学习的地方之一。这组数据怎么看都是阿里的组件更好,但是我们也能看到 Resilience4j 有很大的二次开发的价值,很适合喜欢创新的团队去自研,支持更多功能。
2024-04-03 16:54:56 49
转载 Resilience4j 源码解析(1):简介及调试环境搭建
文章简要介绍了 Resilience4j 框架,并完成了调试环境的搭建,在运行过程中遇见了一个小问题,并着手解决。然后,从代码模块结构入手,做好源码分析的前期准备工作。因为一旦深入就会发现,框架里大量的使用了Java 8的「函数编程特性」来编码,代码是精简了,但是读起来会有点费劲。可能你以前配置过JMH,也不会报这个错,虽然这是个小错,但是充分证明了再开始源码研究前,运行一次是很有必要。注意:如果是在test目录,可以使用testCompile,如果是在主目录,则需要使用compile。
2024-04-03 16:54:09 56
转载 得物面试:10wqps高并发,如何防止重复下单?
现在问题来了, 什么是重复下单?用户在下单页面进行下单时,由于用户点击下单按钮 多次 、或者 重试策略 导致在订单服务中接收到了 两次同样 的下单请求。所谓幂等性,就是一次操作和多次操作同一个资源,所产生的影响均与一次操作的影响相同。"幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。
2024-04-03 13:45:10 84
转载 如何设计一个通用的 Excel 导入导出功能?
程序员蜗牛g 2024-04-03 12:02 江苏以JSON配置的方式去实现通用性和动态调整,当然,这个通用仍然存在一定的局限性,每个项目的代码风格都不同。想要写出一个适合所有项目的通用性模块并不容易,这里的通用局限于其所在项目,所以该功能代码如果不适用于自己的项目,希望可以以此为参考,稍作修改。那么现在来分析一下,我们会需要哪些JSON配置项。先从最简单的导出开始,被导出数据应该支持通过业务层查出,如:,这是大前提,然后为了支持显示导出进度,业务层还需要提供数量查询方法,如:,否则无法实现导出进度。最后
2024-04-03 13:43:15 33
转载 SpringBoot自定义Starter(@EnableXXX和META-INF的SPI自动添加)
再在src\main\resources\META-INF\spring\org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中,添加RobotAutoConfiguration配置类的全类名。1.2.6 添加方式三:实现RobotAutoConfiguration配置类 + META-INF的imports文件。实现RobotAutoConfiguration配置类,给IOC容器导入Robot功能要用的所有组件。
2024-04-03 09:55:05 50
转载 【方向盘】Spring Boot 2.7.0正式发布,弃用OkHttp 3、弃用spring.factories机制
通过spring.factories加载自动配置类的方式成为过去式(弃用从spring.factories加载自动配置类),采用全新的方式加载自动配置类:需要被自动加载的类写在META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件里,每一行是配置类的全类名。其中自动配置四个字被说出来的次数最多,是的,这是Spring Boot最大的特点之一,甚至没有之一。GraphQL 最大的优势是查询图状数据。
2024-04-02 15:59:29 60
转载 IDEA中使用org.springframework.boot.autoconfigure.AutoConfiguration.imports没有被识别
在SpringBoot2.7.x版本之后,慢慢不支持META-INF/spring.factories文件了,需要导入的自动配置类可以放在/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中,可以看下spring-boot-autoconfigure-2.7.7.jar下的这个文件。所以正确的操作是先创建META-INF目录,然后在其下面创建spring目录,然后把这个文件放进去即可。
2024-04-02 15:43:40 55
转载 一起来学阿里巴巴Java开发手册(八)
目前正在出一个阿里巴巴Java开发手册系列教程, 篇幅会较多, 喜欢的话,给个关注❤️ ~在日常开发中,好的编码习惯和代码规范有助于提高代码可读性,提升团队协作效率,还利于维护与扩展,在某些情况下还有利于优化性能。今天就带着大家一起学习下手册中的内容,学习下Java开发中的编码规范。程序员皮卡秋一个喜欢写教程的Java博主~166篇原创内容公众号好了, 废话不多说直接开整吧~
2024-04-02 10:09:01 40
转载 DIY 3 种分库分表分片算法,自己写的轮子才吊!
本文是《ShardingSphere5.x分库分表原理与实战》系列的第六篇,书接上文实现三种自定义分片算法。通过自定义算法,可以根据特定业务需求定制分片策略,以满足不同场景下的性能、扩展性或数据处理需求。同时,可以优化分片算法以提升系统性能,规避数据倾斜等问题。在这里,自定义分片算法的类型(Type)统一为strategySTANDARDCOMPLEXHINT;表示自定义分片算法的实现类路径。此外,还可以向算法类内传入自定义属性。要实现自定义STANDARD标准算法,需要实现。
2024-04-02 09:47:19 43
转载 一套万能通用的异步处理方案
良好的系统设计必须要做到开闭原则,随着业务的不断迭代更新,核心代码也会被不断改动,出错的概率也会大大增加。但是大部分增加的功能都是在扩展原有的功能,既要保证性能又要保证质量,我们往往都会使用异步线程池来处理,然而却增加了很多不确定性因素。由此我设计了一套通用的异步处理SDK,可以很轻松的实现各种异步处理。
2024-04-02 09:46:27 34
转载 如何设计一个排行榜?
大家好,我是田螺。最近有位星球粉丝问:田螺哥,如何设计一个排行榜?日常开发中,我们经常需要涉及设计排行榜的需求,如礼物排行榜、微信运动排行、王者荣耀段位排行榜等等。今天我带大家聊聊,排行榜如何设计。
2024-04-02 09:43:44 33
转载 一套万能通用的异步处理方案
良好的系统设计必须要做到开闭原则,随着业务的不断迭代更新,核心代码也会被不断改动,出错的概率也会大大增加。但是大部分增加的功能都是在扩展原有的功能,既要保证性能又要保证质量,我们往往都会使用异步线程池来处理,然而却增加了很多不确定性因素。由此我设计了一套通用的异步处理SDK,可以很轻松的实现各种异步处理。
2024-04-01 09:25:05 26
转载 如何设计一个排行榜?
大家好,我是田螺。最近有位星球粉丝问:田螺哥,如何设计一个排行榜?日常开发中,我们经常需要涉及设计排行榜的需求,如礼物排行榜、微信运动排行、王者荣耀段位排行榜等等。今天我带大家聊聊,排行榜如何设计。
2024-04-01 09:22:37 48
springmvc+mybatis+mysql+log4j.xml+logjdbc+maven+nexus+dubbo
2017-05-10
springmvc+mybatis+mysql+log4jdbc+excel 实现sql日志输出和excel导出
2017-05-09
权限管理系统
2013-03-23
航空订票系统(jsp+java+sqlserver+spring+servlet+strut)
2011-07-12
新闻发布系统(jsp+ajax+oracle+java+javascript)
2011-07-10
物流信息网(jsp+sqlserver+servlet+strut)
2011-07-09
企业电子商城系统(jsp+servlet +strut+sqlserver)
2011-07-09
购物系统(shopping)用到的技术有(jsp+servlet+java+sqlerver+strut)
2011-07-09
网上书店系统(java+sqlserver+jsp+servlet+strut+spring)
2011-07-09
火车站售票系统.(java+oracle+jsp+javascript)
2011-07-09
接口的详解,是你很容易学习接口
2011-03-08
interface使用
2011-02-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人