- 博客(2182)
- 资源 (32)
- 收藏
- 关注
转载 如何优雅的为开放平台设计一个安全好用的OpenApi?
在提到对于开放接口的安全设计时,一定少不了对于摘要算法的应用(MD5算法是其实现方式之一),在接口设计方面它可以帮助我们完成数据签名的功能,也就是说用来防止请求或者返回的数据被他人篡改。本节我们单从安全的角度出发,看看到底哪些场景下的需求可以借助MD5的方式来实现。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。
2024-01-25 09:06:39 59
转载 idea中不提示代码错误,引用,语法错误不提示的解决办法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。右键根目录的上层目录,选择 Mark Directory as — 选择Sources Root ,将整个包设为资源文件夹,就可以le。点击idea右下角的小人,如果箭头是指向Inspections,则把箭头调到Syntax,就可以了!今天开发中遇到了这个问题,不管我怎么尝试,都不显示代码错误。
2024-01-24 16:08:11 713 1
转载 如何优雅的为开放平台设计一个安全好用的OpenApi?
在提到对于开放接口的安全设计时,一定少不了对于摘要算法的应用(MD5算法是其实现方式之一),在接口设计方面它可以帮助我们完成数据签名的功能,也就是说用来防止请求或者返回的数据被他人篡改。本节我们单从安全的角度出发,看看到底哪些场景下的需求可以借助MD5的方式来实现。其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。
2024-01-24 10:32:06 32
转载 基于策略模式和简单工厂模式实现zip、tar、rar、7z四种压缩文件格式的解压
3、父级目录的名称,如果是根目录,则父级目录为空;定义一个解压策略的抽象接口,内部定义一个抽象方法,作用是执行解压操作,但是这里不提供具体实现,具体实现由不同格式的具体解压策略来实现,这个方法的输入参数采用java标准的输入流,方便与其他业务对象,输出参数则是一个List集合类型,集合内存储的是解压文件的FileObj对象;分别根据四种压缩文件格式,定义四个不同的解压策略实现类,这四个解压策略实现类来实现上面的解压策略抽象接口,重写接口的抽象方法,方法的业务逻辑是来执行具体格式的压缩文件的解压操作;
2024-01-24 09:24:30 18
转载 搞起来,使用 SpringBoot 框架徒手撸一个安全、可靠的本地缓存工具
我这里没有使用Redis作为缓存组件,直接使用的,有条件的同学可以替换成Redis,效果会更好。在继承之后,需要实现getSize四个方法,其中是该缓存处理器的基础信息,为了防止出现读写问题,我加了一个可重入锁。我在例子中没有连接数据库,实际上只要将的CACHE的数据从数据库读取就可以实现了。我这里只写了一个,实际业务中可以写很多个处理器,只要继承即可,不过要注意的名字不要重复了,不然只会取最新的一个。最后提醒大家一下,这个是本地缓存哈,不支持分布式的。最后说一句(求关注!别白嫖!
2024-01-24 09:20:25 20
转载 Stream 流式编程,写代码也可以很优雅
Stream(流)是 Java 8 引入的一个新的抽象概念,它代表着一种处理数据的序列。简单来说,Stream 是一系列元素的集合,这些元素可以是集合、数组、I/O 资源或者其他数据源。Stream API 提供了丰富的操作方法,可以对 Stream 中的元素进行各种转换、过滤、映射、聚合等操作,从而实现对数据的处理和操作。Stream API 的设计目标是提供一种高效、可扩展和易于使用的方式来处理大量的数据。Stream 可以基于不同类型的数据源创建,如集合、数组、I/O 资源等。
2024-01-23 14:26:04 19
转载 Stream 流式编程,写代码也可以很优雅
Stream(流)是 Java 8 引入的一个新的抽象概念,它代表着一种处理数据的序列。简单来说,Stream 是一系列元素的集合,这些元素可以是集合、数组、I/O 资源或者其他数据源。Stream API 提供了丰富的操作方法,可以对 Stream 中的元素进行各种转换、过滤、映射、聚合等操作,从而实现对数据的处理和操作。Stream API 的设计目标是提供一种高效、可扩展和易于使用的方式来处理大量的数据。Stream 可以基于不同类型的数据源创建,如集合、数组、I/O 资源等。
2024-01-23 14:23:21 20
转载 MySQL/Redis如何实现缓存一致
首先,你需要定义一个异步任务,这个任务负责在数据库更新后执行第二次删除Redis缓存的操作。这个任务可以是一个实现了特定接口或者继承了特定类的类,具体取决于你使用的编程语言和框架。
2024-01-23 14:21:46 21
转载 支付宝:多线程事务怎么回滚?说用 @Transactional 可以回去等通知了!
1,最近有一个大数据量插入的操作入库的业务场景,需要先做一些其他修改操作,然后在执行插入操作,由于插入数据可能会很多,用到多线程去拆分数据并行处理来提高响应时间,如果有一个线程执行失败,则全部回滚。注解去控制事务,使出现异常时会进行回滚,在多线程中,这个注解则不会生效,如果主线程需要先执行一些修改数据库的操作,当子线程在进行处理出现异常时,主线程修改的数据则不会回滚,导致数据错误。可以发现子线程组执行时,有一个线程执行失败,其他线程也会抛出异常,但是主线程中执行的删除操作,没有回滚,测试结果:抛出异常,
2024-01-23 14:20:42 13
转载 深入了解Java 8 新特性:Stream流的实践应用(二)
Stream是一个数据结构,它提供了一种方便的方式来处理和操作数据,Stream.collect() 方法则用于将 Stream 中的元素收集到指定的收集器(Collector)中,返回一个结果对象。这个比较函数可以是自定义的,例如比较两个字符串的长度、比较两个日期的日期值等,通过比较操作可以找出Stream中最大的元素。这个方法的功能作用是接收一个输入流并产生一个输出结果,即把Stream中的元素收集到某种类型的集合中,这里的某类类型集合可由用户以。因此,在进行类型转换时,需要确保转换的正确性。
2024-01-23 14:19:56 11
转载 1.4K+ Stars!开源的高性能敏感词工具
原创 小奇发表于北京大家都知道几乎每一个web应用或游戏设计中,都需要做敏感词的过滤以及转换。为了应对越来越多的敏感词,寻找一个高效率的敏感词过滤算法就摆在了各个程序员的面前。目前业内公认的效率最高的就是 DFA 算法。小编今天为大家分享这个开源项目也是基于DFA 算法实现:sensitive-word,用于过滤敏感词的 Java 库。一款高性能的敏感词过滤工具,词库共收录了 6w+ 内容,支持自定义敏感词、白名单、替换策略、数字常见形式的互换、忽略重复词等功能。
2024-01-23 14:19:09 119
转载 Spring Boot:基于WebUploader实现超大文件上传和断点续传
对于各种“大”的问题,很多的场景采用是分而治之的理念进行设计,而对于大文件上传来说,从这一理念出发,具体的方法就是把大文件分片上传,分片全部上传后再对分片进行合并。1、在分片文件上传接口中,分片上传成功后,会保存分片的相关信息,如:分片文件md5、文件md5、文件大小、分片存储位置、分片数据块的起始结束位置、总共分片数量等,这里使用redis缓存了这些分片信息,redis用到了hash数据结构,其中key为文件的md5,hashkey是“chunk_md5_”+分片索引,value就是分片文件的md5值;
2024-01-23 14:18:30 90
转载 edis最佳实践:7个维度+43条使用规范,带你彻底玩转Redis | 附实践清单
但如果你的 Redis OPS 比较高,那么在执行 MONITOR 会导致 Redis 输出缓冲区的内存持续增长,这会严重消耗 Redis 的内存资源,甚至会导致实例内存超过 maxmemory,引发数据淘汰,这种情况你需要格外注意。但随着业务的发展,你的业务存储在 Redis 中的数据就会越来越多。在开发业务时,你需要提前预估整个 Redis 中写入 key 的数量,如果 key 数量达到了百万级别,那么,过长的 key 名也会占用过多的内存空间。
2024-01-23 14:16:32 31
转载 Spring Boot实战:如何应对敏感字段的模糊查询需求?
这种方法的优点就是原理简单,实现起来也不复杂,但是有一定的局限性,算是一个对性能、业务相折中的一个方案,相比较之下,在能想的方法中,比较推荐这种方法,但是要特别注意的是,对模糊查询的关键字的长度,要在业务层面进行限制;这种方法的优点是,成本比较小,容易实现,但是缺点很明显,该字段无法通过数据库索引来优化查询,另外有一些数据库无法保证数据库的加解密算法与程序的加解密算法一致,可能会导致可以程序中加密,但是无法在数据库中解密的或者可以在数据库加密无法在程序中解密的问题,因此不推荐在生产中使用这种方法;
2024-01-23 14:11:19 19
转载 SQL中碰到的坑之GROUP BY
在上面的例子中,employee_name列没有被包含在聚合函数中,也没有在GROUP BY子句中列出,导致返回的employee_name并非每个部门的最大工资对应的员工。要解决这个问题,确保SELECT语句中的列要么是聚合函数的结果,要么在GROUP BY子句中列出。在上面的例子中,实际上有两个坑,一个是坑一中所说的,另外由于SELECT语句中列的顺序与GROUP BY子句中的不同,导致结果与预期不一致。在GROUP BY子句中,列的顺序并不重要,但在SELECT语句中,列的顺序会影响结果的显示顺序。
2024-01-22 13:49:44 49
转载 利用Redis实现每周热评,简直无敌
我获取了7天的文章。基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能。上面的命令可以帮我们记录一下7天的所有的评论数。上述的命令可以帮我们简单的实现了我们的想法,下面用代码来实现。这里的思路就比较简单了,把我们的数据从缓存中取出来就可以。这里需要一个Redis 的工具类,我在网上找到的,不是我写的。就可以把我们的数据库的数据先存到缓存中去了。
2024-01-22 13:49:13 18
转载 深入了解Java 8 新特性:Stream流的实践应用(一)
Stream.mapToInt()是Java8中Stream API 的一部分,mapToInt() 方法接受一个函数接口作为参数,可以用于将 Stream 中的元素映射为 int 类型,当调用 mapToInt() 方法时,Java 会遍历原始 Stream 中的每个元素,并将每个元素传递给指定的函数。与Stream#min方法类似,Stream#max用于找到 Stream 中元素的最大值,Stream#max方法接受一个比较器作为参数,可以根据特定的业务逻辑或数据类型自定义自己的比较逻辑。
2024-01-22 13:48:17 19
转载 我们放弃了Nacos作为配置中心,转而选择了这款神器~
Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
2024-01-22 09:33:56 61
转载 实现定时任务的六种策略
上图中,我们启动一个线程,该线程无限循环执行,每隔20毫秒执行业务代码。这种方式非常简单易用,在很多中间件中得到广泛应用。本文整理了实现定时任务的六种策略,我们需要根据实际场景选择合适的策略。同时,我们也需要考虑:是否需要任务应用集群部署;集群部署下假如出现并发执行,业务是否会出现异常;如何规避并发执行导致的业务异常。笔者将在接下来的文章里为大家详解定时任务的最佳实践,敬请期待。如果我的文章对你有所帮助,还请帮忙一下,你的支持会激励我输出更高质量。
2024-01-22 09:31:32 33
转载 建议收藏,Java 命名规范(非常全)
路人发表于上海Java充电社,专注分享Java技术干货,包括多线程、JVM、SpringBoot、SpringCloud、Dubbo、Zookeeper、Redis、架构设计、微服务、消息队列、Git、面试题、程序员攻略、最新动态等。28篇原创内容公众号在本文中,将从大到小,从外到内,总结Java编程中的命名规范。文中将会涉及到日常工作中常见的命名示例,如包命名,类命名,接口命名,方法命名,变量命名,常类命名,抽象类命名,异常类命名以及扩展类命名等。
2024-01-22 09:30:10 188
转载 8种接口重试机制,你选哪种?
如果说我们不想在项目里额外地引入一些重试的框架,自己定义一个重试工具类也是可以的,这是我在某个第三方提供的client-sdk里发现的一套重试工具类,比较轻量级,给大家分享一下。首先,定义一个实现了Callback抽象类的具体回调类,实现其中的方法来执行需要重试的逻辑。回调类的方法返回一个对象,表示重试的结果。然后,定义一个类,用于封装重试的结果。类包含一个isRetry属性表示是否需要进行重试,以及一个obj属性表示重试的结果对象。// 构造方法和getter方法省略最后,定义一个。
2024-01-22 09:25:59 101
转载 互联网工程实践:这套分布式IM即时通讯系统,是如何做到弹性扩缩容的?
为了能够让小伙伴们更好的理解分布式IM即时通讯系统的设计,我们站在架构师的角度,在充分了解系统需求,业务流程和技术流程后,从全局视角为系统设定方案目标,对技术方案进行选型,对系统进行总体架构设计和分层架构设计,并梳理清楚发送消息的交互链路、单聊和群聊的交互链路。以方便各位小伙伴将分布式IM即时通讯系统写到自己的简历中,增强自己的竞争力。
2024-01-22 09:17:24 29
转载 使用双异步后,从 191s 优化到 2s
发表于四川以下文章来源于哪吒编程 ,作者哪吒技术经验分享公众号大家好,我是苏三。在开发中,我们经常会遇到这样的需求,将Excel的数据导入数据库中。
2024-01-22 09:13:30 13
转载 实现一个基于注解的Excel万能导出模板
上次给大家分享了一个自己开发的基于注解Excel导出的小工具,不知道有没有人用,是针对复杂数据导出多个Sheet页的,那也是第一个版本。后来小编发现了很多问题:无法满足多复杂数据多行表头有那种一对一的数据也没有办法显示,而且得需要去做连表查询。开发太费劲。无法设置自己的样式或者企业规定的样式或字体。列宽无法自适应。
2024-01-22 09:02:50 15
转载 线程池最佳实践!这几个坑使用不当直接生产事故!!
关注公众号:woniuxgg,在公众号中回复:笔记 就可以获得蜗牛为你精心准备的java实战语雀笔记,回复面试、开发手册、有超赞的粉丝福利!
2024-01-22 09:01:13 24
转载 如何在Spring Boot中优雅地重试调用第三方API
未来怎么样,我不知道,但是我依然会追寻有激情的生活和事情,我相信坚持的力量,如果能把一件事坚持下去,真的可以打败99%的人。在实际应用中,我们可能会遇到不同类型的异常,有些异常是可以通过重试来解决的,而有些异常则需要特殊处理。在引入重试机制后,我们需要对系统的性能进行全面的测试和分析,以确保重试机制的引入不会影响系统的整体性能。在上述示例中,@Recover注解标记了fallback方法,当callThirdPartyApi方法的重试次数达到上限时,将执行fallback方法中的降级逻辑。
2024-01-22 09:00:03 23
转载 IDEA的天花板级别使用技巧,yyds!
发表于北京点击关注#互联网架构师公众号,领取都在这里IDEA 作为Java开发工具的后起之秀,几乎以碾压之势把其他对手甩在了身后,主要原因还是归功于:好用;虽然有点重,但依旧瑕不掩瑜,内置了非常多的功能,大大提高了日常的开发效率,下面汇总了常用的28个使用小技巧,学会之后,让你的撸码效率直接起飞...注意:不同idea版本菜单、目录可能有细微差别,自己稍加分析都能找到。
2024-01-21 11:20:57 19
转载 Spring Boot:基于Easyexcel实现不同场景的导出功能(二)
通过注解的形式来自定义导出表格的样式,和编程式的比较类似,明显的区别是一个需要通过在编写代码来定义样式并应用这个样式;前两种的样式定义方法,都比较固定,不能根据导出数据的规则来动态设置表格内单元格的样式,如导出员工信息表格里如果性别是女的员工数据行,则使用红色字体,如果是男性,则是使用蓝色;因为导出数据通常是从数据源里动态取出的,在导出前没办法确定哪些行是男性,哪些员工是女性,所以需要动态的设置导出表格的样式,自定义类型转换器就可以很好的解决这个问题。实现不同场景的导出功能的技术文章恰好符合你的需求。
2024-01-21 11:18:52 29
转载 MySQL性能调优实战:热点数据优化
原创 编程悟道 编程悟道 2024-01-20 10:33 发表于江苏性能调优,就像是给你的爱车做维护,让它跑得更快更稳。而优化热点数据,就像是在赛车比赛中,为最频繁使用的加速踏板涂上最好的润滑油,保证每次踩下去都能有最快的响应速度。热点数据,就是那些被频繁访问和修改的数据,它们就像是超市里最受欢迎的酸奶,总有一大堆人围着它转,每个人都想抢到一瓶。为了保证性能,我们需要对这些数据进行特别的照顾。缓存,就像是把热销的酸奶从后仓库搬到超市入口的冷柜,方便顾客快速拿取,减少了走来走去的时间。3. 数据
2024-01-21 00:10:08 44
转载 第24讲 -3 MySQL安全优化:数据脱敏和加密
原创 编程悟道 编程悟道 2024-01-20 11:00 发表于江苏欢迎回到MySQL安全优化的小课堂,今天我们的主题是数据脱敏和加密——这个话题就像是我们的隐私内衣,外人不可窥见,只能自己知道。现在,让我们一起探究如何确保我们的数据像穿上隐身斗篷一样,安全又隐秘!数据脱敏,就是将敏感信息转换成非敏感信息的过程。这就像是,你不希望别人知道你的真实体重,所以你在公共场合谈论体重时,只说“标准”而不是具体数字。比如在购物网站上,我们看到的订单信息,通常会隐藏部分手机号和地址信息,这样即便有人偷瞄到你的屏幕,也
2024-01-21 00:09:26 26
转载 性能调优实战:SQL和索引的再优化
性能调优不是一劳永逸的,它需要持续的关注和改进。随着数据量的增长和查询需求的变化,我们可能需要重新评估和调整现有的索引策略。现在,让我们拿起工具,把那只蜗牛紧紧地追赶,直到它变成了猎豹,愉快地在数据的草原上奔跑吧!🏎💨。
2024-01-21 00:08:40 15
转载 乖乖,咱不用BeanUtil.copy了,咱试试这款神级工具(超详细)
MapStruct是一个利用注解和编译时代码生成技术的Java Bean映射工具,通过在接口上定义映射规则并自动创建实现类,极大地简化了对象转换过程。相比于手动编写映射代码及运行时反射工具如Dozer,MapStruct提供了更高的性能、更好的可读性和易于维护性。它支持灵活的字段映射配置、自定义转换逻辑,并可通过组件模型适应不同框架,是提升开发效率与降低维护成本的理想对象映射解决方案。写在最后:可能大家觉得要防御性编程,但是咱可以把编译后实现类的代码CV到你的代码里面就可以了,这样免去了自己手写get。
2024-01-21 00:07:58 14
转载 基于Redis实现消息队列的实践
2、定义三个延迟队列BeforeQueue、RunningQueue、CompleteQueue,对队列的任务进行存取,BeforeQueue用于对待执行状态的任务的存取,Running用于对执行中状态的任务的存取,CompleteQueue用于对执行完成状态的任务的存取,在三个任务队列中,取出元素是阻塞的,即如果队列中没有新的任务,当前线程会一直阻塞等待,直到有新的任务进入;因为它是有序集合,有序集合的存储元素值是不能重复的,但分值可以重复,也就是说当消息值重复时,只能存储一条信息在 ZSet 中。
2024-01-21 00:02:49 20
转载 自己动手写一个JDK Stream,倍爽
River接口的实现主要都在类中, 以filter()为例,返回了一个新的River对象,典型的流式编程的实现方式。方法事情主要两个:new一个新的River的实现类。在accept()方法中实现wrapSink(),这个方法在后续构建SinkChain时候需要调用。//存储元素的spliterator对象引用.../*** 追加filter操作* 创建一个filter的{@link PipelineStage},然后将该stage追到到Pipeline的尾部。
2024-01-20 23:56:20 7
转载 了解Spring Boot的SmartInitializingSingleton:工作机制与实际应用
1、定义Dog类,以setter注入方式进行属性注入,同时Dog类实现SmartInitializingSingleton接口,重写afterSingletonsInstantiated(),并在方法内部打印日志,如果在实际业务开发过程中用到了这个扩展点,相关的扩展操作逻辑就是在这个方法内实现;关于Spring bean有七种作用域:默认singleton(单例)、prototype、request、session、globalSession、application、websocket;
2024-01-20 23:55:29 15
转载 面试官:什么是泛型擦除、泛型上界、泛型下界、PECS原则?
泛型的本质是 类型参数化,解决类型爆炸的问题。所谓泛型是指将类型参数化,以达到代码复用提高软件开发工作效率的一种数据类型。比如:如果我们的代码中存在很多的 食物类型, 继承关系如下然后我们要定义一个盘子 plate,注意这个盘子除了 装入食物food之外,还可以装其他的比如 小玩具。(1) 装水果的盘子 FruitPlate(2) 装肉的盘子 MeatPlate(3) 装苹果的盘子 ApplePlate(4) 装香蕉的盘子 BananaPlate.....
2024-01-20 23:52:39 23
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关注的人