自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Redis分布式锁

随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题。分布式锁主流的实现方案...

2022-06-04 16:26:04 188

原创 Redis缓存穿透、击穿、雪崩问题

缓存穿透当系统中引入redis缓存后,一个请求进来后,会先从redis缓存中查询,缓存有就直接返回,缓存中没有就去db中查询,db中如果有就会将其丢到缓存中,但是有些key对应更多数据在db中并不存在,每次针对此次key的请求从缓存中取不到,请求都会压到db,从而可能压垮db。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用大量此类攻击可能压垮数据库。解决方案(1)对空值缓存如果一个查询返回的数据为空(不管数据库是否存在),我们仍然把这个结果(null)进行缓存,给其设

2022-06-04 16:03:02 1060

原创 Redis发布与订阅

1、什么是发布和订阅redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发布消息,订阅者(sub)接收消息。2、redis的发布和订阅客户端可以订阅频道如下图当给这个频道发布消息后,消息就会发送给订阅的客户端发布和订阅的命令行实现subscribe channel1 channel2 … ,可以订阅多个频道。publish channel 消息 ,返回值表示有几个订阅者。subscribe:订阅一个或者多个频道publish:发布消息到指定的频道psubscr

2022-05-31 15:24:28 169

原创 Redis有序集合zset

redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分是可以重复的。因为元素是有序的,所以你可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合中的中间元素也是非常快的,因为你能够使用有序集合作为一个没有重复成员你的智能列表。zadd:添加元素zrange:s

2022-05-31 14:39:27 945

原创 Redis基础用法(四)

redis哈希(Hash)Redis hash是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。类似于java里面的Map<String,Object>Hash类型对应的数据结构是2中:ziplist(压缩列表),hashtable(哈希表)。当field-value长度较短个数较少时,使用ziplist,否则使用hashtable。常用命令hset:设置多个field的值将哈希表 key 中的域 fiel

2022-05-28 21:48:14 222

原创 Redis基础用法(三)

简介redis set对外提供的功与list类似,是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择。redis的set是string类型的无序集合,他的底层实际是一个value为null的hash表,收益添加,删除,查找复杂度都是O(1)。数据结构set数据结构是字典,字典是用hash表实现的。Java中的HashSet的内部实现使用HashMap,只不过所有的value都指向同一个对象。Redis的set结构也是一样

2022-05-28 19:36:34 1214

原创 Redis基础用法(二)

redis列表(List)简介单键多值redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层实际上是使用双向链表实现的,对两端的操作性能很高,通过索引下标操作中间节点性能会较差。lpush/rpush:从左边或者右边插入一个或多个值lrange:从列表左边获取指定范围内的值127.0.0.1:6379> flushdb OK127.0.0.1:6379> rpush course java c c++ php js

2022-05-23 22:00:04 372

原创 Redis基础用法(一)

Redis是一个开源的使用C语言编写的key-value的单线程的存储系统,是跨平台的非关系型数据库。特征:速度快,多种数据结构,持久化,功能丰富,高可用,多语言支持;02.Redis基本数据类型内部编码基础数据结构字符串String有2种编码哈希Hash2种编码列表List2种编码集合Set2种编码有序集合Zset2种编码...

2022-05-23 20:44:51 1079

原创 RocketMQ在Windows的安装与测试

添加环境变量1、在桌面上,右键单击计算机图标。2、从上下文菜单中选择属性。3、单击高级系统设置链接。4、单击环境变量。5、然后添加或更改环境变量。ROCKETMQ_HOME="D:\rocketmq"NAMESRV_ADDR="localhost:9876"启动名称服务器设置正确的环境变量后,打开新的 powershell 窗口。然后将目录更改为rocketmq类型并运行:.\bin\mqnamesrv.cmd启动代理设置正确的环境变量后,打开新的 powershell 窗口。然

2022-05-10 16:27:49 487

原创 零基础学算法——算法系列(二)(链表、队列、栈)

今天我们来聊聊单节点和双向节点的一些知识吧!我们在刷算法题的时候,由于力扣等网站已经给我们写好了节点类的定义,但是我们还是要明白它是怎么定义的。例如,在单向节点中是这样的:public static class Node{ public int value; public Node next; public Node(int data){ value = data; } }在双向节点又是这样定义的:

2022-05-08 14:15:43 305

原创 零基础学算法——算法系列(一)

初入算法的殿堂,我们先从简单的选择排序说起: public static void main(String[] args) { int[] arr = {1,2,5,9,3,4}; selectionSort(arr); for(int a :arr){ System.out.println(a); } } public static void selectionSort(int[] arr){

2022-05-07 15:41:56 538

原创 深入理解HashMap

一、快速使用首先我们先来了解一下HashMap的基本使用:public static void mian(String[] args){ Map<String,String> map = new HashMap<>(); map.put("key","value"); System.out.println(map.get("key"));}二、技术的本质hashmap的数据结构是由:数组、链表组成的;1、数组:采用一段连续的存储单元来存储数据。特点:数组查询快,

2022-04-24 11:20:10 666

原创 对txt文件进行处理

在做数据集的时候,由于有一万多条数据,作为程序猿的我,就想偷懒了。首先我们来介绍一下,两个.txt文件拼装在一起,每行各取一个,代码如下:public static void showFileContent3(String fileName1,String fileName2) throws IOException { File file1 = new File(fileName1); File file2 = new File(fileName2); t

2022-04-22 21:56:19 974

原创 垃圾回收器

Serial:单CPU效率最高,虚拟机时Client模式的默认垃圾回收器,工作于新生代。Serial Old:工作于老年代Parallel Scavenge:工作于新生代(相比于serial来说使用多线程)parallel old:工作于老年代三色标记算法:不一定是没有引用的对象,然后被重新引用也可能是黑的引用先指向白色对象,然后灰色引用消失第二种情况:CMS方案:Incremental UpdateCMS方案:并发标记,产生漏标G1方案:SATB Snapshot At

2022-04-11 10:48:03 74

原创 垃圾回收常用的三种算法

Mark-Sweep标记清除:优点:算法相对简单,存活对象比较多的情况下效率较高缺点:两遍扫描效率偏低,容易产生碎片,后面新往里头分配的对象可能分配不下,空间浪费。Copycopy算法优点:适用于存活对象较少的情况,只扫描一次,效率提高没有碎片。缺点:空间浪费,移动复制对象,需要调整对象引用。Mark-Compact标记压缩(标记整理)优点: 不会产生碎片,方便对象分配,不会产生内存减半缺点: 扫描两次,需要移动对象,效率偏低...

2022-04-10 20:34:41 353

原创 Autowired注解实现

首先先定义一个Autowired的注解类import java.lang.annotation.*;//@Retention元注解在这里表示该注解保留到运行时期。@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@Inherited@Documentedpublic @interface Autowired {}定义一个Service类public class Service {}定义一个Controller

2022-04-08 17:14:11 294

原创 Feature Pyramid Networks for Object Detection

(a) 使用图像金字塔构建特征金字塔。特征是在每个图像尺度上独立计算的,这很慢。(b) 在图b中,类似与Fast-RCNN的流程,而且对小目标检测的效果并不是很好。最近的检测系统选择仅使用单尺度特征来加快检测速度。©在图c中,与ssd算法较为类似。 将一张图片输入给backbone,然后在backbone正向传播中得到的不同特征图上分别的进行预测。另一种方法是重用由 ConvNet 计算的金字塔特征层次结构,就好像它是一个特征化的图像金字塔一样。(d) 在图d中,并不是简单的在backbone正向

2022-04-06 20:51:02 3331

转载 ReadWriteLock 读写之间互斥吗?(面试精华)

开发中遇到并发的问题一般会用到锁,Synchronized存在明显的一个性能问题就是读与读之间互斥;ReadWriteLock是JDK5中提供的读写分离锁。读写分离锁可以有效地帮助减少锁竞争,以提升系统的性能。ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。Java并发库中ReetrantReadWriteLock实现了ReadWriteLock接口并添加了可重入的特性。而读写锁ReentrantReadWriteLock:读读共享,读写互斥,写写互斥;读写锁维护了一对锁,一个读锁,

2022-03-16 09:37:08 420

转载 Thread.sleep(0)到底有什么用?

我们可能经常会用到 Thread.Sleep 函数来吧使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2022-3-12 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2022-3-12 12:00:01.000 的时候,这个线程会不会被唤醒?某人的代码中用了一句看似莫明其妙的话:Thread.Sleep(0) 。既然是 Sleep 0 毫秒,那么他跟去掉这句代码相比,有啥区别么?我们先回顾一下操作系统原理。操作系

2022-03-12 15:49:20 553

原创 Springboot与Shiro整合

首先我们需要在pom中导入有关shiro的包 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.7.0</version> </dependency>在config包中,我们首先需要创建一个UserRealm的类public cl

2022-03-11 15:11:45 639

原创 Springboot与Redis整合

首先我们需要在pom中导入有关redis的包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> <version>1.4.7.RELEASE</version>

2022-03-11 14:44:11 1513

原创 yolv系列(2)

yolov5yolov5是一种但阶段目标检测算法,该算法在Yolov4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。yolov5性能测试图网络结构图yolov5还是分为输入端、BackBone、Neck、Prediction四个部分(1)输入端:Mosaic数据增强、自适应锚框计算Mosaic数据增强在Yolo4的输入端也采用。随即缩放,随即裁剪、随机排布的方式进行拼接。在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框groundtruth进行比对,计算

2022-03-10 10:46:18 3721

原创 Yolo系列(1)

Yolo3yolo3是Yolo系列中非常经典的算法。网络结构图Yolov3使用Darknet-53作为整个网络的分类骨干部分。backbone部分由Yolov2时期的Darknet-19进化至Darknet-53,加深了网络层数,引入了Resnet中的跨层加和操作。CBL:Yolov3网络结构中的最小组件,由Conv+Bn+Leaky_relu激活函数三者组成。Res_unit:借鉴Resnet网络中的残差结构,让网络可以构建的更深。ResX:由一个CBL和X个残差组件构成,是Yolov3

2022-03-10 00:57:34 1000

鸟类的数据集鸟类的数据集鸟类的数据集

鸟类的数据集鸟类的数据集鸟类的数据集

2022-08-13

鸟类的数据集鸟类的数据集鸟类的数据集

鸟类的数据集鸟类的数据集鸟类的数据集

2022-08-13

鸟类的数据集鸟类的数据集鸟类的数据集

鸟类的数据集鸟类的数据集鸟类的数据集

2022-08-13

鸟类的数据集鸟类的数据集鸟类的数据集

鸟类的数据集鸟类的数据集鸟类的数据集

2022-08-13

鸟类的数据集鸟类的数据集鸟类的数据集

鸟类的数据集鸟类的数据集鸟类的数据集

2022-08-13

birdandworm

birdandworm

2022-08-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除