- 博客(23)
- 收藏
- 关注
原创 Redis分布式锁
随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力,为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题。分布式锁主流的实现方案...
2022-06-04 16:26:04
249
原创 Redis缓存穿透、击穿、雪崩问题
缓存穿透当系统中引入redis缓存后,一个请求进来后,会先从redis缓存中查询,缓存有就直接返回,缓存中没有就去db中查询,db中如果有就会将其丢到缓存中,但是有些key对应更多数据在db中并不存在,每次针对此次key的请求从缓存中取不到,请求都会压到db,从而可能压垮db。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用大量此类攻击可能压垮数据库。解决方案(1)对空值缓存如果一个查询返回的数据为空(不管数据库是否存在),我们仍然把这个结果(null)进行缓存,给其设
2022-06-04 16:03:02
1108
原创 Redis发布与订阅
1、什么是发布和订阅redis发布订阅(pub/sub)是一种消息通信模式:发布者(pub)发布消息,订阅者(sub)接收消息。2、redis的发布和订阅客户端可以订阅频道如下图当给这个频道发布消息后,消息就会发送给订阅的客户端发布和订阅的命令行实现subscribe channel1 channel2 … ,可以订阅多个频道。publish channel 消息 ,返回值表示有几个订阅者。subscribe:订阅一个或者多个频道publish:发布消息到指定的频道psubscr
2022-05-31 15:24:28
221
原创 Redis有序集合zset
redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分是可以重复的。因为元素是有序的,所以你可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合中的中间元素也是非常快的,因为你能够使用有序集合作为一个没有重复成员你的智能列表。zadd:添加元素zrange:s
2022-05-31 14:39:27
1133
原创 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
255
原创 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
1460
原创 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
532
原创 Redis基础用法(一)
Redis是一个开源的使用C语言编写的key-value的单线程的存储系统,是跨平台的非关系型数据库。特征:速度快,多种数据结构,持久化,功能丰富,高可用,多语言支持;02.Redis基本数据类型内部编码基础数据结构字符串String有2种编码哈希Hash2种编码列表List2种编码集合Set2种编码有序集合Zset2种编码...
2022-05-23 20:44:51
1211
原创 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
540
原创 零基础学算法——算法系列(二)(链表、队列、栈)
今天我们来聊聊单节点和双向节点的一些知识吧!我们在刷算法题的时候,由于力扣等网站已经给我们写好了节点类的定义,但是我们还是要明白它是怎么定义的。例如,在单向节点中是这样的:public static class Node{ public int value; public Node next; public Node(int data){ value = data; } }在双向节点又是这样定义的:
2022-05-08 14:15:43
338
原创 零基础学算法——算法系列(一)
初入算法的殿堂,我们先从简单的选择排序说起: 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
625
原创 深入理解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
777
原创 对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
1028
原创 垃圾回收器
Serial:单CPU效率最高,虚拟机时Client模式的默认垃圾回收器,工作于新生代。Serial Old:工作于老年代Parallel Scavenge:工作于新生代(相比于serial来说使用多线程)parallel old:工作于老年代三色标记算法:不一定是没有引用的对象,然后被重新引用也可能是黑的引用先指向白色对象,然后灰色引用消失第二种情况:CMS方案:Incremental UpdateCMS方案:并发标记,产生漏标G1方案:SATB Snapshot At
2022-04-11 10:48:03
108
原创 垃圾回收常用的三种算法
Mark-Sweep标记清除:优点:算法相对简单,存活对象比较多的情况下效率较高缺点:两遍扫描效率偏低,容易产生碎片,后面新往里头分配的对象可能分配不下,空间浪费。Copycopy算法优点:适用于存活对象较少的情况,只扫描一次,效率提高没有碎片。缺点:空间浪费,移动复制对象,需要调整对象引用。Mark-Compact标记压缩(标记整理)优点: 不会产生碎片,方便对象分配,不会产生内存减半缺点: 扫描两次,需要移动对象,效率偏低...
2022-04-10 20:34:41
385
原创 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
331
原创 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
3402
转载 ReadWriteLock 读写之间互斥吗?(面试精华)
开发中遇到并发的问题一般会用到锁,Synchronized存在明显的一个性能问题就是读与读之间互斥;ReadWriteLock是JDK5中提供的读写分离锁。读写分离锁可以有效地帮助减少锁竞争,以提升系统的性能。ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。Java并发库中ReetrantReadWriteLock实现了ReadWriteLock接口并添加了可重入的特性。而读写锁ReentrantReadWriteLock:读读共享,读写互斥,写写互斥;读写锁维护了一对锁,一个读锁,
2022-03-16 09:37:08
486
转载 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
592
原创 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
675
原创 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
1576
原创 yolv系列(2)
yolov5yolov5是一种但阶段目标检测算法,该算法在Yolov4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升。yolov5性能测试图网络结构图yolov5还是分为输入端、BackBone、Neck、Prediction四个部分(1)输入端:Mosaic数据增强、自适应锚框计算Mosaic数据增强在Yolo4的输入端也采用。随即缩放,随即裁剪、随机排布的方式进行拼接。在网络训练中,网络在初始锚框的基础上输出预测框,进而和真实框groundtruth进行比对,计算
2022-03-10 10:46:18
3780
原创 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
1091
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人