草庐IT

针对单一key加读写锁

一、什么是读写锁读写锁是JDK1.5提供的一个工具锁,适用于读多写少的场景,将读写分离,从而提高并发性。二、读写锁的特点读锁是共享锁,写锁是排他锁,读锁和写锁不能同时存在;读锁不能升级为写锁;写锁可以降级为读锁;三、锁的本质锁的本质就是锁住一块资源而不是一块代码.在常见的一些代码实现都是加一把大锁,将这一块代码资源统一加锁,无法针对资源进行精确进行锁控制.四、代码实现`importlombok.extern.slf4j.Slf4j;importjava.util.concurrent.ConcurrentHashMap;importjava.util.concurrent.locks.Read

针对单一key加读写锁

一、什么是读写锁读写锁是JDK1.5提供的一个工具锁,适用于读多写少的场景,将读写分离,从而提高并发性。二、读写锁的特点读锁是共享锁,写锁是排他锁,读锁和写锁不能同时存在;读锁不能升级为写锁;写锁可以降级为读锁;三、锁的本质锁的本质就是锁住一块资源而不是一块代码.在常见的一些代码实现都是加一把大锁,将这一块代码资源统一加锁,无法针对资源进行精确进行锁控制.四、代码实现`importlombok.extern.slf4j.Slf4j;importjava.util.concurrent.ConcurrentHashMap;importjava.util.concurrent.locks.Read

【目标检测】YOLOv5针对小目标检测的改进模型/添加帧率检测

问题背景众所周知,YOLOv5会对输入的图片进行放缩,并进行32倍下采样。对于一些分辨率很高的遥感/无人机图片,小目标难以被训练识别。本篇博文就来尝试这篇博文YOLOV5模型和代码修改——针对小目标识别所提到的一种改进方案。我所使用的是YOLOv5-5.0版本,数据集采用VisDrone数据集。检测头改进模型方面的修改:作者在模型上增加了一个更小的Anchor并添加了一个更小的检测头。yolov5l_modify.yaml#parametersnc:10#numberofclassesdepth_multiple:1.0#modeldepthmultiplewidth_multiple:1.0

【目标检测】YOLOv5针对小目标检测的改进模型/添加帧率检测

问题背景众所周知,YOLOv5会对输入的图片进行放缩,并进行32倍下采样。对于一些分辨率很高的遥感/无人机图片,小目标难以被训练识别。本篇博文就来尝试这篇博文YOLOV5模型和代码修改——针对小目标识别所提到的一种改进方案。我所使用的是YOLOv5-5.0版本,数据集采用VisDrone数据集。检测头改进模型方面的修改:作者在模型上增加了一个更小的Anchor并添加了一个更小的检测头。yolov5l_modify.yaml#parametersnc:10#numberofclassesdepth_multiple:1.0#modeldepthmultiplewidth_multiple:1.0

抓紧更新!多个勒索软件组织针对未更新的IBM文件传输软件

IBMAsperaFaspex是一个被企业广泛采用的文件传输应用程序,以能够安全和快速传输大型文件而广受青睐。安全专家警告说,IBM于2022年12月8日在软件中修补的一个漏洞(可用于回避身份验证和远程利用代码)正在被多组使用加密恶意软件的攻击者滥用。虽然该漏洞在12月被修补,但IBM并没有立即详细说明该漏洞随后便在更新中修复了漏洞。在1月26日的安全警报中,IBM表示,该漏洞被命名为CVE-2022-47986,CVSS基本评分为9.8,可允许远程攻击者在系统上执行任意代码。随后,恶意活动追踪组织Shadowserver在2月13日警告说,他们发现攻击者试图利用AsperaFaspex未更新

抓紧更新!多个勒索软件组织针对未更新的IBM文件传输软件

IBMAsperaFaspex是一个被企业广泛采用的文件传输应用程序,以能够安全和快速传输大型文件而广受青睐。安全专家警告说,IBM于2022年12月8日在软件中修补的一个漏洞(可用于回避身份验证和远程利用代码)正在被多组使用加密恶意软件的攻击者滥用。虽然该漏洞在12月被修补,但IBM并没有立即详细说明该漏洞随后便在更新中修复了漏洞。在1月26日的安全警报中,IBM表示,该漏洞被命名为CVE-2022-47986,CVSS基本评分为9.8,可允许远程攻击者在系统上执行任意代码。随后,恶意活动追踪组织Shadowserver在2月13日警告说,他们发现攻击者试图利用AsperaFaspex未更新

【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(下)

承接上文承接上一篇文章【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(上)】我们基本上对层级时间轮算法的基本原理有了一定的认识,本章节就从落地的角度进行分析和介绍如何通过Java进行实现一个属于我们自己的时间轮服务组件,最后,在告诉大家一下,其实时间轮的技术是来源于生活中的时钟。时间轮演示结构总览无序列表时间轮【无序列表时间轮】主要是由LinkedList链表和启动线程、终止线程实现。遍历定时器中所有节点,将剩余时间为0s的任务进行过期处理,在执行一个周期。无序链表:每一个延时任务都存储在该链表当中(无序存储)。启动线程:直

【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(下)

承接上文承接上一篇文章【算法数据结构专题】「延时队列算法」史上手把手教你针对层级时间轮(TimingWheel)实现延时队列的开发实战落地(上)】我们基本上对层级时间轮算法的基本原理有了一定的认识,本章节就从落地的角度进行分析和介绍如何通过Java进行实现一个属于我们自己的时间轮服务组件,最后,在告诉大家一下,其实时间轮的技术是来源于生活中的时钟。时间轮演示结构总览无序列表时间轮【无序列表时间轮】主要是由LinkedList链表和启动线程、终止线程实现。遍历定时器中所有节点,将剩余时间为0s的任务进行过期处理,在执行一个周期。无序链表:每一个延时任务都存储在该链表当中(无序存储)。启动线程:直

针对m3u8视频加密的一些尝试

前言:记得我开始之前发过一篇关于某网课的m3u8视频解密的文章,就是下面这篇。很多小伙伴就看到这篇文章,来到群里问我。我也看到了很多不同的加密(有些加密真变态啊!)。学到了很多。困难1比如play.js这个js就是在播放视频的时候加载,而且在play.js链接后面加上了时间戳,导致调试难度加大。每次断点都断不住,因为每次js链接都不一样。覆盖也无法覆盖困难2然后就是跟半天,key就是32位的arraybuffer,一直跟不到16位的。当然我是个小菜鸡。按照一般来说,AES128的key应该是16的。他应该会有个解密的,但是就是没跟到。困难3对开发者工具有检测其他还有一些小问题,比如清除控制台之

针对m3u8视频加密的一些尝试

前言:记得我开始之前发过一篇关于某网课的m3u8视频解密的文章,就是下面这篇。很多小伙伴就看到这篇文章,来到群里问我。我也看到了很多不同的加密(有些加密真变态啊!)。学到了很多。困难1比如play.js这个js就是在播放视频的时候加载,而且在play.js链接后面加上了时间戳,导致调试难度加大。每次断点都断不住,因为每次js链接都不一样。覆盖也无法覆盖困难2然后就是跟半天,key就是32位的arraybuffer,一直跟不到16位的。当然我是个小菜鸡。按照一般来说,AES128的key应该是16的。他应该会有个解密的,但是就是没跟到。困难3对开发者工具有检测其他还有一些小问题,比如清除控制台之