- 博客(34)
- 问答 (4)
- 收藏
- 关注
原创 Mybatis-Plus被恶意CVE一事
Mybatis-Plus框架在2024年5月被人在CVE网络安全漏洞库上提交了漏洞,该漏洞可笑无比,但是有趣的是竟然还是被CVE审核确认为了SQL注入漏洞;
2024-06-07 00:33:16 1118
原创 编译字符串中的代码
在对接各种语音平台,小米,华为,小度…时,发现需要进行定制化模板返参的转换。但是每个平台的每种类型的设备返回参都由差异,并且由代码去写死返回参数也太不 科学了。于是就有了上述执行字符串代码的方案版权声明:本站原创文章,于2023-12-18,乐云一发表转载请注明:https://leyunone.com/
2024-06-04 00:20:41 726
原创 v1.2.70-FastJson的AutoType机制研究
FastJson的漏洞与更新几乎都是围绕着checkAutoType进行,因为一款JSON化的工具,再本身性能难以再度突破的前提下,保证使用者的安全体验是衡量各个工具之间的重中之重。但由由于FastJson在国内广泛的使用,而不管目前如何去更新,总有漏洞会为版本买单。所以很多人也在Git上发起issues抗议这些问题:讨论度也非常高,也有人不懂@type的存在意义。了解的人能知道,这也是无奈之举,像jackson中也引入了类型的@Class关键字大伙也需要给开源者,开源项目更多耐心;
2024-06-04 00:17:58 1135
原创 Git存储库的推送保护
昨天有一个提交一直提示:Push rejected起初在网络上找各种解决办法,先列举以下找到的各类方法以上是随手找的解决push rejected的办法及原因,不过本篇要提的则是因为 Git 的机制导致push rejected。
2024-06-04 00:16:35 797
原创 completefuture造成的rpc重试事故
最近经历了一个由于的使用,导致RPC重试机制触发而引起的重复写入异常的生产bug。复盘下来,并非是错误的使用了completefuture,而是一些开发时很难意识到的坑。
2024-06-04 00:11:49 1067
原创 规则引擎-Easy rule
如其名,定义规则的执行引擎,是一套解决业务代码与执行其业务规则分离的解决方案或组件;举个例子:有一个功能为,当用户输入A时,将用户的信息更新为B//更新System.out.println("更新B");可以直观的感受到,怎么使用了规则引擎之后代码变多了而且变复杂了?且慢,让我们认真缕一缕;现在我们需要添加一个新逻辑,当用户输入B时,将信息更新为C;继续往后叠If-else或者使用switch使用策略模式,将输入的内容作为策略key;
2024-06-04 00:10:26 983
原创 OAuth2.0授权码模式对接与开发记录
因为云云接入平台的原因,无论是作为客户端还是作为服务端都完成了OAuth2.0授权码模式的一条龙开发;在过程中不难免需要接收来自网络各式各样的OAuth2.0的时序图拆解,发现很少有一篇会从开发的角度上从时序图出发再到具体需要几个接口、设计几个缓存、刷新于授权机制等等;因此本篇作为唤醒未来的我记录而谱写创作;
2024-06-04 00:07:28 707
原创 消息队列的选型
现时代中可供我们选择的消息队列组件不少也不多,在国内环境中,大多数企业需要考虑的组件往往只需要在RabbitMQRocketMQKafka中选择;为此针对以上三者在何种系统何种业务下是最佳选型,此篇记录;
2024-06-04 00:05:59 892 1
原创 物联网云云接入转换通用平台
问:这是什么?答:对接各大产商云如小度天猫精灵小爱同学Alexa等智能语音技能的云云接入协议,是一个全平台通用的中间层物联网设备模型转化平台。问:有什么用?答自带完整体系的小度、小米、Alexa、Google等主流物联网平台云云接入协议,拆箱即用产商云与开发者云的模型转化被数据库配置化,可由页面进行可视化配置他方云模型与我方云模型的转化关系。是物联网云云接入协议技能平台的一个完整(从架构功能,授权到可视化页面)流程的解决方案问:定位是什么?答:以天猫精灵官网的结构图为例:本项目平台介于天猫精灵。
2024-06-02 23:44:38 987
原创 Vue+Java+Oss创建自己的云盘
一个项目是一篇文章无法解释全的,因此本篇仅简述分片上传部分;不过一个简单的云盘,有分片上传,暂停功能,续点上传,就可以搭建出来用作自己的网盘了。不过以上的前端和后台项目,大伙可以直接拉取使用;版权声明:本站原创文章,于2024-05-19,乐云一发表转载请注明:https://leyunone.com/
2024-05-24 00:29:27 743
原创 Java8-Arrays.sort
Java8-Arrays.sortArrays.sort是我们常用来排序数组的方法,不止如此,其实Collections.sort方法中也是直接拿到集合中的元素数组作为入参直接调用Arrays.sort方法的。所以作为JDK中的常驻API,底层中对排序的各个场景是做了对应的优化算法的,使Arrays.sort在默认使用的前置下,有着最高的性能功率。Sort由于Java泛型、多数据类型的原因,sort方法在Arrays类中有多重重载场景。下面我们以两部分,基本类型数组、对象类型数组,进行源码跟踪。
2022-05-31 02:27:29 924
原创 JAVA探针机制—Agent(一)
JAVA探针机制—Agent(一)agent机制首次出现在JDK5版本,在JDK6版本得到升级并且正式被官方定义为agent原理。首先要明确JavaAgent是一个JVM层面的插件,他可以利用JDK中的Instrumenttation类,实现对类字节码文件的修改。而Agent在功能上的实现有两种情况:在main方法执行前,调用premain方法。在main方法执行后,监控JVM虚拟机的同时,调用agentmain方法。目前市场上很多日志、热部署、性能监控等等插件功能,都是基于探针中agent
2022-05-26 01:08:21 4089
原创 Nacos源码阅读—服务注册与发现
Nacos源码阅读—服务注册与发现本文各功能呢的源码入口通过源码阅读经验以及官方文档找到,不详细说明。服务注册所有的服务注册的体系原理都离不开:客户端发起注册->服务端接收->服务端进行客户端信息注册所以要了解Nacos的服务注册,则需要从客户端出发。NacosServiceRegistryAutoConfiguration看版本,有一些版本在该类中所有注入的类是在NacosDiscoveryAutoConfiguration配置的。在其注入的NacosAutoServiceRe
2022-05-22 22:51:36 745
原创 SpringCloud源码阅读—负载均衡
SpringCloud源码阅读—负载均衡SpringCloud的负载均衡由Ribbon组件完成,Ribbon组件在实际开发中很难直接接触,因为我们大多都是直接使用了**@FeignClient**客户端注释,直接使用默认的所有配置去调用已经注册的服务。所以SpringCloud的负载均衡流程需要由我们自己去探索发现。LoadBalancerAutoConfiguration配置均衡的自动配置类,我们以此为入口,看看负载均衡具体关联了哪些重要类。loadBalancerRequestFactory
2022-05-19 00:32:47 347
原创 Lambda表达式的特殊序列化
Lambda的特殊序列化Lambada作为JDK8的新特性,无论在框架或是工具中已经越来越发普及。所以在自定义一些工具或是框架时,发现Lambada表达式作为入参的很多特殊使用以及特殊机制场景。重要的是,这些特殊使用由于JDK源码中的所有注释由英文组成,所以很多地方都晦涩难懂。以下就Lambada表达式的特殊序列化进行一些解读,以及相关应用。序列化大伙都知道,一个对象实现序列化的手法,实现Serializable接口,虚拟机解析类时,则会将实现Serializable接口的类进行标注。而实际序
2022-05-17 01:43:18 714
原创 Zookeeper分布式锁的实现方案
Zookeeper实现分布式锁在分布式场景中,虽然可以用Redis实现分布式锁的概念,但是Redis在实现的过程中需要考虑到客户端锁释放以及客户端挂掉的种种情况发生。但是Zookeeper由于是基于临时节点实现的锁,所以当客户端挂掉的时候,会自动释放锁。所以我们只需要关注用锁,释放锁的流程就行。{{{width=“100” height=“100”}}}实现方案目前有两种,一是使用JDK的API底层实现、二是使用市场上已经成熟的Zookeeper分布式锁框架 CURATOR。JDK先直接贴上代码
2022-05-04 23:49:02 703
原创 Dubbo源码阅读-扩展机制SPI
Dubbo源码阅读-可扩展机制Dubbo在高性能的同时,依靠其特殊的SPI、自适应、包装、激活机制,提供了可扩展的机制。SPISPI面向接口编程,依靠在配置文件中指定的接口实现类,直接创建出对应接口实例。JDK SPIJDK的SPI依靠ServiceLoader首先根据ServiceLoader的源码可以看到一个关键字META-INF/services文件夹,首先关注在ServiceLoader中哪里使用到了它。 private boolean hasNextServic
2022-05-04 00:03:47 313
原创 浅谈Vue-Simple-Upload
Vue-Simple-Upload第一次写前端的使用笔记,也是因为这个工具没有很正式的官方文档。所以为防止之后还有可能用到,最好是做一次记录!这是什么是一个基于Vue的上传文件组件,只需要引入其对应依赖,就可以直接使用 <uploader :options="options" class="uploader-example"> <uploader-unsupport></u
2022-04-27 10:37:06 5201 7
原创 JAVA 分片上传、断点下载场景
高效上传下载文件-后端处理模式之前有做一个网盘,采取的是非常原始的基于File-response,文件流形式一对一传输的模式。所以导致在传输一些大文件时,无法实时看到进度,并且总会有各种意外发生:断网、手抖关掉页面等,所以总要想办法解决这个大麻烦嘛😰文件传输文件传输在一个简单的Client-Server中,由以下行程完成:包装MultipartFile发送给Server。Server接收,包装Server侧保存文件路径MultipartFile通过IO流形式,写到Server侧结束如
2022-04-22 00:39:32 1169
原创 JAVA 解读HttpServletResponse的常见使用
解读HttpServletResponse场景因为最近在回传文件,包装请求头这块,被一些API和属性给卡住了,所以好好的研究了一下HttpServletResponse设置返回头以及属性的知识😎获得方式Response的获得方式完全就像是框架的进化史一样。目前主流的是通过Spring由自动配置的Http拦截器去拦截获取本次响应的HttpServletResponse,并且放入到当前次的IOC容器中。所以我们可以根据: @Resource private HttpServletR
2022-04-21 00:08:15 6659
原创 JAVA中List集合去重的方案,通过Function函数接口自定义一个UniqueSet
Function<T, R>函数接口自定义一个UniqueSet在开发中,有很多地方需要实现:一个List中Person对象,根据Person对象中的age年龄去重,留下年龄不重复的集合。实现方案一:也是最传统最简单的:{{{width=“50” height=“50”}}} List<Person> list = new ArrayList(); //将list转成TreeSet 自定义一个比较器compartor Set b
2022-04-17 21:37:28 928
原创 Redis的死知识,理论的头大
自拟!Redis死知识!!!Redis基础使用概念redis是基于内存存储的数据库,读写速度十分之快,所以多用于缓存方向。但在分布式业务中,也可用于分布式锁,或作为消息队列存储,进行消耗和接受。此外,redis可存储很多中数据类型,又因为key - value Hash对、set、zset、list,存储String的原因,使其数据结构很丰富。指令包括set、get、exists、decrease、setex等等127.0.0.1:6379> set key value #设置 key
2022-04-01 15:56:51 646
原创 记录了数据库理论的知识[略提],基本覆盖了能说出来的。
数据库死知识因为数据库方面有很多地方的知识其实实际开发中很少会去在意,但这些冷知识也非常有必要去了解或深入,所以本章记录数据库知识中普通开发不会在意的事。数据库基本概念键属性主键,外键。主键一般确实是会用自动生成的id,但业务中很少会关注主键值。业务中的驱动主键才是数据库结构的核心,所以主键在开发中很多时候都是便于selectByid查询这样的简单操作,而多用做标识的是与主键组合的业务主键。而外键在数据库设计中其实是提倡少设置的,因为一旦设计了外键,那么该字段的值将与子表深度绑定。以至于在业
2022-03-31 21:32:07 450
原创 排序算法----》插入排序
插入排序是一个非常非常重要的排序算法,因为很多的应用场景都可以基于插入排序实现。不过这里将的是普通插入排序的一种优化方案普通的插入排序 public static int [] sort(int [] array){ for(int i=1;i<array.length;i++){ //拿第二个开始插入 int temp=array[i]; // int pre=i-1; // 当前数字前一个开始遍历判断插入位置
2021-03-05 23:30:04 54
原创 排序算法----》选择排序
选择排序是我认为最垃圾的一个排序算法,因为他时间复杂度和冒泡一样n^2 ,最关键的是他的不稳定性,当然选择排序也是一个最简单直观的排序算法 public static void sort(int [] a){ for(int i=a.length-1;i>0;i--){ int minindex=0; for(int j=1;j<=i;j++){ if(a[minindex]>a[j]){
2021-03-05 23:19:45 82
原创 排序算法--->冒泡两优化
普通冒泡: for(int i=0;i<a.length;i++){ for(int j=1;j<a.length-i;j++){ if(a[j]<a[j-1]){ int temp=a[j]; a[j]=a[j-1]; a[j-1]=temp; } }
2021-03-05 23:15:21 67
原创 JAVA:初级项目之 基于Swing界面的仿QQ(二)
模块进度登录√注册√信息交互√在上一章中已经完成了上述操作,若有问题的可以私聊一起研究。在完成了登录操作后,通过信息的交互,成功进入到了主界面。这时候就面临了几个问题。1:好友的显示2:个人资料的显示3:群的显示4:群下用户的显示5:添加好友的显示解决这几个问题,就是本项目的第二个难点,社交系统的完整。不过好在,java的面向对象思想...
2019-12-27 19:53:18 545
原创 JAVA: 初级项目之基于Swing界面的仿QQ(一)
在学完Swing,socket,线程,等等知识后,急需要一个项目练手。但是XX管理系统肯定不能满足,所以在了解了json的皮毛之后,就着手作了这个伪QQ完整代码已上传到github上,地址:https://github.com/LeYunone/19.12.25。有需要的可以自取。作为一个伪QQ,代码中我实现了他的发送表情、文件、点对点,点对多。社交系统。实时在线更新,离线消息,个人资料上...
2019-12-27 19:52:54 997
原创 JAVA 文件迭代查询
package uitility;import java.io.File;/** * 文件迭代查询 * @author * */public class TestFile { public static void main(String[] args) { File file=new File("D://新建文件夹 (2)"); //放置文件目录 showF...
2019-05-23 20:41:19 709
原创 java判断邮箱格式的正确 String类方法的运用
/** * * 简单的邮箱格式判断,只是判断之间的内容有否 * ------------------------------------------------------------ * * @author 清风理辛 * */public class emals { public static void main(String[] args) { java.uti...
2019-05-10 20:46:05 3345
原创 java显示系统时间及判断时间段
在这里插入代码片import java.text.SimpleDateFormat;public class ex_4 { public static void main(String[] args) { String time3; SimpleDateFormat time2=new SimpleDateFormat("HH"); //提取系统中的小时 i...
2019-05-10 17:56:26 1320
空空如也
求个Lucene 自定义分词器 把一个单词分成从头开始一个一个增加的字符-
2022-02-23
怎么通过反射 拿到一个类中 对象属性里的所有属性名
2022-02-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人