- 博客(2207)
- 资源 (32)
- 收藏
- 关注
转载 SpringBoot 实现数据加密脱敏(注解 + 反射 + AOP)
傻瓜式编程不是说傻,而是相当于切入式编程,傻瓜式编程需要对用户信息相关的所有接口进行加密,解密脱敏的逻辑处理,这里改动的地方就比较多,风险高,重复操作相同的逻辑,工作量大,后期不好维护;切入式编程只需要对用户信息字段添加注解,对有注解的字段统一进行加密,解密脱敏逻辑处理,操作方便,高聚合,易维护;使用AOP,项目启动后,只要调用切入点对应的方法,就会根据切入点来形成一个切面,进行统一的逻辑增强;将项目中关于用户信息实体类的字段,比如姓名,手机号,身份证,地址等,在新增进数据库之前,对数据进行加密处理;
2024-05-20 08:31:55 6
转载 Jackson 用起来!
Gson是Google开发的一个Java库,用于将Java对象转换为JSON表示以及将JSON字符串转换为等效的Java对象。:Moshi是Square公司开发的一个现代化的JSON库,具有简单易用的API和良好的性能。:JSON-java库,也称为org.json库,是一个非常轻量级的JSON处理库。在实际项目中,你可能需要比较这些库的性能、功能、易用性等方面的差异,以找到最适合你的解决方案。在使用Jackson之前,你需要创建一个Java对象模型,该模型表示你要序列化和反序列化的JSON数据。
2024-05-20 08:30:57 6
转载 maven中多个子模块的构建顺序
如果A依赖B,B又依赖A,这样就产生了循环依赖,Maven会报错。maven按照次序读取pom,如果该pom没有依赖其他子模块,就构建该模块,否则就构建其依赖的模块,如果该依赖模块还依赖于其他的模块,那么就进一步构建依赖的依赖。在示例中,A模块依赖B,而B模块又依赖C,因此要先构建C,再构建B,然后才能构建A。在实际的项目开发中,为了更好的组织项目代码,会采用分层架构的方式,这就会使用到maven的多模块特性。假设项目分为A、B、C、D四层,在父模块的pom.xml中,一般这样来对子模块进行聚合。
2024-05-16 15:39:54 5
转载 从0到1,百亿级任务调度平台的架构与实现
百亿级海量任务调度平台,一定是一个超级牛掰的简历亮点项目,黄金项目,稍微晚点把全量的架构方案和视频进行发布。这个项目写入简历,面试的时候如果大家能对答如流,如数家珍,基本上 面试官会被你 震惊到、吸引到。最终,让面试官爱到 “不能自已、口水直流”。offer, 也就来了。在面试之前,建议大家系统化的刷一波 5000页《尼恩Java面试宝典》V174,在刷题过程中,如果有啥问题,大家可以来 找 40岁老架构师尼恩交流。另外,如果没有面试机会,可以找尼恩来帮扶、领路。
2024-05-16 08:41:20 11
转载 SpringBoot 快速实现 api 加密!
该项目使用RSA加密方式对API接口返回的数据加密,让API数据更加安全。别人无法对提供的数据进行破解。Spring Boot接口加密,可以对返回值、参数值通过注解的方式自动加解密。首先我们当然是了解RSA加密RSA加密是一种非对称加密。可以在不直接传递密钥的情况下,完成解密。这能够确保信息的安全性,避免了直接传递密钥所造成的被破解的风险。是由一对密钥来进行加解密的过程,分别称为公钥和私钥。两者之间有数学相关,该加密算法的原理就是对一极大整数做因数分解的困难性来保证安全性。
2024-05-16 08:38:10 8
转载 字节三面:如何设计一个高性能短链系统?
比如将 https://flowus.cn/veal/share/3306b991-e1e3-4c92-9105-95abf086ae4e 缩短为 https://sourl.cn/aY95qu,点击后面的短链接将会重定向到前面的长链接。短链的好处如下:链接变短,在对内容长度有限制的平台发文,可编辑的文字就变多了。比如微博限定了只能发 140 个字,如果一串长链直接复制上去就没地方再写其他文字了。
2024-05-16 08:36:24 3
转载 JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案
这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。DES/ECB/PKCS7Padding加密算法:在Java开发中,用到的DES的ECB加密模式、PKCS7Padding填充方式,Java目前仅支持PKCS5Padding填充模式,
2024-05-03 13:24:36 116 1
转载 记Java中AES加密踩的坑 Cannot find any provider supporting AES/CBC/PKCS7Padding
JAVA——DES/ECB/PKCS7Padding加密算法[Cannot find any provider supporting DESEDE/CBC/PKCS7Padding]解决方案-CSDN博客。//被加密的数据 import org.apache.tomcat.util.codec.binary.Base64;原文链接:https://blog.csdn.net/weixin_52814995/article/details/134690961。//PKCS7Padding的解密方式。
2024-05-03 13:23:54 91
转载 项目自从用了接口请求合并,效率直接加倍!
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。
2024-05-01 20:51:48 56
转载 蚂蚁面试:Springcloud核心组件的底层原理,你知道多少?
说在最后:有问题找老架构取经与Eureka 、Zookeeper集群不同Nacos 既能支持AP,又能支持 CP。Nacos 支持 CP+AP 模式,这意味着 Nacos 可以根据配置识别为 CP 模式或 AP 模式,默认情况下为 AP 模式。如果注册到Nacos的client节点注册时ephemeral=true,那么Nacos集群对这个client节点的效果就是AP,采用distro协议实现;
2024-04-30 09:05:01 52
转载 SpringBoot自定义注解+反射实现 excel 导入的数据组装及字段校验
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。(PS:上面提到的特殊格式的校验,这里没有做实现,需要的增加一个字段保存正则表达式即可)但是呢,我实际去看的时候发现,好家伙,表里竟然一百多个字段,全部是需要导入的。校验成功则做插入的操作。在前段时间的开发工作中,接手了一个很简单,很普通的开发任务。
2024-04-30 09:01:57 66
转载 一文带你彻底玩转EasyExcel:导入导出excel数据起飞
在日常的开发工作中,Excel 文件的读取和写入是非常常见的需求,特别是在后台管理系统中更为频繁,基于传统的方式操作excel通常比较繁琐,EasyExcel 库的出现为我们带来了更简单、更高效的解决方案。本文将介绍 EasyExcel 库的基本用法和一些常见应用场景,帮助开发者更好地利用 EasyExcel 提高工作效率。官网地址:https://github.com/alibaba/easyexcel青出于蓝而胜于蓝Java解析、生成Excel比较有名的框架有Apache poi、jxl。
2024-04-30 09:01:02 157
转载 数据脱敏实现:“想在哪脱就在哪脱,想脱谁就脱谁! ! !“
以上全部就是本期关于数据脱敏知识点的总结介绍啦。首先介绍了数据脱敏需求的背景、概念和重要性,紧接着我们逐步探讨实现方案,权衡利弊了相关实现选择,最终选择的自带的jackson自定义序列化实现,它的实现原来其实就是在json进行序列化渲染给前端时,进行脱敏,这样可以有效降低性能损耗,并且也不会侵入系统业务层逻辑这样可以保证我们的业务逻辑不会因为数据脱敏出现逻辑错误。与此同时也强调了动态灵活可配置的脱敏信息配置,我们通过拦截器实现脱敏信息上下文设置,在上面思路我们进行代码实现剖析和实操,借助于Hutool。
2024-04-30 08:58:34 51
转载 SpringBoot接口防抖(防重复提交)的一些实现方案
key分隔符是用来将多个参数合并在一起的,比如userName是张三,userPhone是123456,那么完整的key就是"张三&123456",最后再加上redis锁前缀,就组成了一个唯一key。从测试的结果上看,防抖是做到了,但是随着缓存消失、锁失效,还是可以发起同样的请求,所以要真正做到接口幂等性,还需要业务代码的判断、设置数据库表的UK索引等操作。专注原创,Java后端,大数据,架构设计,消息队列,Python技术,面试题,数据结构与算法,职场经验分享,致力打造一个有营养的公众号。
2024-04-30 08:57:55 57
转载 Java 8 Stream 之 collect() 的奇技淫巧
本身我是一个比较偏向少使用Stream的人,因为调试比较不方便。但是, 不得不说,stream确实会给我们编码带来便捷。所以还是忍不住想分享一些奇技淫巧。
2024-04-30 08:57:22 42
转载 三方接口就要这样设计,非常优雅!
1.API密钥生成: 为每个三方应用生成唯一的API密钥对(AK/SK),其中AK用于标识应用,SK用于进行签名和加密。AK:Access Key Id,用于标示用户。SK:Secret Access Key,是用户用于加密认证字符串和用来验证认证字符串的密钥,其中SK必须保密。通过使用Access Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。2.接口鉴权: 在进行接口调用时,客户端需要使用AK和请求参数生成签名,并将其放入请求头或参数中以进行身份验证。
2024-04-28 08:44:31 106
转载 14 个 SpringBoot 优化小妙招,写代码像写诗
其实优化这个事情说简单也简单,说复杂也可以很复杂,但是我觉得最重要的就是要有一个良好的编码习惯,代码"屎山”并非一朝一夕形成的,往往是经过了日积月累;因此,培养一个好的习惯,可以让我们的代码变的更加优雅、易维护,系统变的更加健壮;像我们这种工作年限少的程序员,我觉得要多学习自己认知之外的知识,不能每天crud,有机会就多用用有点难度的知识,没有机会(项目较传统),可以自己下班多些相关demo练习。在写业务代码的时候,经常会根据不同的结果返回不同的信息,尽量减少返回,会显得代码比较乱。
2024-04-26 09:04:13 76
转载 字节面试:5000w+ 的大表如何拆分?
综合考虑时间成本和对线上数据库的影响,团队决定采用两种方案结合的方式:交易时间为三个月前的冷数据,由于更新几率不大,采用代码的方式迁移,人为控制每次迁移数量,少量多次,蚂蚁搬家;经过与ES维护团队的两轮讨论,发现公司提供的ES服务对于我们的业务场景并不匹配(见表),经过反复考量,最终我们放弃了引入ES的计划,直接从数据库查询数据,采用每张表设置一个查询线程的方式提升查询效率。跟踪代码发现,该表是用于存储资金流水的表格,关联着众多功能点,同时也有众多的下游系统在使用这张表的数据。用户较多且功能重要。
2024-04-24 08:58:22 74
转载 看看人家的在线学习系统,确实清新优雅!
PlayEdu 是一套完整的开源培训系统解决方案(遵循 Apache2.0 开源协议),支持部门管理、学员管理、课程管理、学员进度追踪等功能。并且,开源版的基础上还提供了企业版,企业版支持更多进阶功能,例如第三方登录(企业微信、飞书、钉钉)、视频云端存储、视频加密、音频学习、试卷生成、试题库管理、定制培训任务计划。
2024-04-22 10:31:32 76
转载 你见过哪些目瞪口呆的 Java 代码技巧?
Java 是一个大体系,今天讨论并未涉及框架和架构相关知识,只是讨论如何写好代码。本文从写 Java 程序的小方面一直写到大方面,来阐述了如何才能写好 Java 程序,并告诉读者们如何才能提高自身的编码水平。我希望看到这篇文章的各位都能做一个优秀的 Java 程序员来源:juejin.cn/post/6844903954308939784—END—
2024-04-22 10:30:59 79
转载 求求你们了,Spring Boot 项目别再用 Date 作为入参了!
如果要转换request传来的参数到我们指定的类型,根据入参注解要进行区分:如果是RequestBody,那么通过配置ObjectMapper(这个玩意儿会注入到Jackson的HttpMessagConverter里面,即中)来实现Json格式数据的序列化和反序列化;如果是RequestParam或者PathVariable类型的参数,通过配置Converter实现参数转换(这些Converter会注入到ConversionService中)。最后说一句(求关注!别白嫖!woniuxgg。
2024-04-22 10:28:27 77
转载 如果策略模式的代码有段位,你的是白银?黄金?还是王者?
在软件开发中,我们经常会遇到一些场景,其中业务流程大致相同,但具体的操作步骤或算法却可能因为某些条件的不同而有所变化。为了应对这种情况,设计模式中的“策略模式”提供了一种优雅的解决方案。本文将探讨策略模式的概念、应用场景、以及不同的实现方式,希望这个分享能节省大家的开发时间,这样可以有更多的时间来做更多想做的事,譬如陪陪家人。
2024-04-22 10:27:41 53
转载 公司来了个大神,三方接口调用方案设计的真优雅~~
为每个三方应用生成唯一的API密钥对(AK/SK),其中AK用于标识应用,SK用于进行签名和加密。AK:Access Key Id,用于标示用户。SK:Secret Access Key,是用户用于加密认证字符串和用来验证认证字符串的密钥,其中SK必须保密。通过使用Access Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。在进行接口调用时,客户端需要使用AK和请求参数生成签名,并将其放入请求头或参数中以进行身份验证。
2024-04-22 10:26:42 91
转载 Spring Boot + 事务钩子函数,打造高效支付系统!
java复制代码/***/if (!这里又使用到了synchronizations线程变量,我们在判断是否存在事务时,就是判断这个线程变量内部是否有值。那我们现在想在事务提交后触发自定义逻辑和这个有什么关系呢?java复制代码TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {@Override// 事务提交后,再异步发送消息给kafka。
2024-04-18 09:00:03 70
转载 提高系统吞吐量的一把利器:DeferredResult 到底有多强?
还有一个成员变量为taskId,是用于自动生成任务id的,并且在加入任务的方法中实现自增,以确保每个任务的id唯一性。其中,对queue的操作,分别用了offer和poll,这样是实现一个非阻塞的操作,并且在队列为空和队列已满的情况下不会抛出异常。,很显然,这是一个获得长度为len的随机串的方法,访问限定为private,为类中其他方法服务的。平时我们用的最普遍的还是阻塞调用,通常请求的处理时间较短,在并发量较小的情况下,使用阻塞调用问题也不是很大。的随机数,并让线程sleep相应的秒数。
2024-04-16 09:01:49 92
转载 ThreadLocal学习圣经:一文穿透TL、 ITL、TTL、FTL,穿透ThreadLocal 内存泄漏
在Java的多线程并发执行过程中,为保证多个线程对变量的安全访问,可以将变量放到ThreadLocal类型的对象中,使变量在每个线程中都有独立值,不会出现一个线程读取变量时而被另一个线程修改的现象。ThreadLocal类通常被翻译为“线程本地变量” ,或者“线程局部变量ThreadLocal的英文字面翻译为“线程本地”,实质上ThreadLocal代表的是线程本地变量,可能将其命名为会更加容易让人理解。以下来至官网的解释简单翻译如下:此类提供线程局部变量。
2024-04-16 09:00:46 101
转载 SpringBoot 接口加密解密,新姿势!
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。接口相应数据的时候,返回的是加密之后的数据 接口入参的时候,接收的是解密之后的数据,但是在进入接口之前,会自动解密,取得对应的数据。提供了优雅的参数校验,入参都是实体类,在实体类字段上加上对应注解,就可以在进入方法之前,进行参数校验,如果参数错误,会抛出错误。如果是继承了统一父类。
2024-04-15 08:56:45 91
转载 SpringBoot 中的日志原来是这么工作的
有些时候,使用包提供的LoggersEndpoint来热更新日志打印器级别,是有点不方便的,因为想要热更新日志级别而引入包,大部分时候这个操作都有点重,而通过上面的分析,我们发现其实热更新日志打印器级别的原理特别简单,就是通过LoggingSystem来操作Logger,所以我们可以自己提供一个接口,通过这个接口来操作Logger的级别。// 省略getter和setter通过调用上述接口使用LoggingSystem就能够完成指定日志打印器的级别热更新。
2024-04-15 08:55:10 52
转载 Spring Boot + Lua = 王炸!
Lua脚本允许你在Redis中执行更复杂的操作,而无需进行多次的网络通信,从而提高性能和可伸缩性,同时确保数据的一致性和原子性。通过适当的错误处理和安全措施,你可以确保Lua脚本在与Redis交互时不会引入潜在的问题,并提高应用程序的稳定性和安全性。Lua脚本的执行是原子的,这意味着在Lua脚本执行期间,没有其他客户端可以插入其他操作。通过遵循这些最佳实践和建议,你可以更安全、高效地使用Lua脚本来实现Redis功能,并确保你的Spring Boot项目与Redis的交互是可靠和可维护的。
2024-04-15 08:53:54 58
转载 Open API 授权&鉴权机制设计
基于 OAuth2 建设 Open API 平台授权机制,通过安全标准的方式授权给外部,保证部门应用数据的安全性。OAuth2 定义了4种授权方式,但目前只需要供客户端在后台调用即可,所以仅考虑凭证式授权方式。oauth2_registered_client:spring-security-oauth2-authorization-server 组件依赖的表,记录已注册了的客户端凭证。
2024-04-15 08:50:55 136
转载 使用Spring Boot 3.x结合Redis实现在线教育平台交互功能
原创 路条编程北京在线教育平台已经成为新时代教育的重点。为提供更为优质的在线教育服务,本文将详细讲解如何采用 Spring Boot 3.x 结合 Redis 技术实现在线教育平台系统。
2024-04-15 08:47:58 61
转载 基于TTL 解决线程池中 ThreadLocal 线程无法共享的问题
原创 派大星辽宁身处外企,是一名技术工作者。作为InfoQ、阿里云等技术平台签约作者,致力于打造您专属的编程个人笔记(无广告)。216篇原创内容公众号在Java的并发编程领域中,ThreadLocal被广泛运用来解决线程安全困境,它巧妙地为每个线程提供独立的变量副本,有效规避了线程间数据共享的问题。不过,在使用线程池时,传递线程局部变量在父子线程之间并非易事。这是因为ThreadLocal的设计初衷仅在于线程内的数据隔离,无法支持跨线程间的数据传递。
2024-04-09 10:02:57 121
转载 实现百万级数据从Excel导入到数据库的方式
原创 派大星辽宁身处外企,是一名技术工作者。作为InfoQ、阿里云等技术平台签约作者,致力于打造您专属的编程个人笔记(无广告)。216篇原创内容公众号。
2024-04-09 10:01:37 163
转载 面试官:在项目中用过责任链模式吗?
山东责任链模式,简而言之,就是将多个操作组装成一条链路进行处理。请求在链路上传递,链路上的每一个节点就是一个处理器,每个处理器都可以对请求进行处理,或者传递给链路上的下一个处理器处理。
2024-04-08 13:59:43 60
转载 阿里面试:解释一下高并发的核心性能指标QPS、TPS、RT、并发数、吞吐量
原创 架构师汤师爷浙江点击下方,关注我,记得星标哟~后台回复【架构】,免费领取架构学习大礼包。关注我,一起学习企业级SaaS业务与架构知识,为企业数字化转型添砖加瓦。关于我,10+年互联网经验,现任某SaaS公司TL+架构师,目前关注新零售业务 、企业架构、中台架构、领域驱动设计、技术领导力等领域。34篇原创内容公众号当系统面对海量并发请求时,高并发性能指标是我们用来衡量一个系统表现如何的关键指标。
2024-04-08 13:57:19 160
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关注的人