- 博客(16)
- 收藏
- 关注
原创 rabbitmq实现延迟队列
延迟队列延迟队列,顾名思义就是消息进入消息队列后不会被立即消费,而是等一段时间后消费,这个时间可以自己设定,比如用户登录5分钟后向其推送消息。rabbitmq并未提供延时队列的直接实现,但是rabbitmq提供了死信队列和TTL(消息过期时间)的实现方式,我们可以借助死信队列+TTL到达实现延迟队列的目的。下面先实现死信队列和TTL。实现TTL这里使用springboot实现TTL,通过ttl方法设置队列过期时间,配置类:@Configurationpublic class RabbitmqCo
2021-11-07 13:14:11
1543
原创 nginx常用配置
为了日后方便,这里记录一下nginx的常用配置,此处nginx使用docker 安装并配置数据卷:docker run -id --name c_nginx --net host -v ~/nginx/conf.d:/etc/nginx/conf.d -v ~/nginx/html:/usr/share/nginx/html nginx1. 绑定多个端口与tomact服务器不同,nginx可以同时开启多个端口,nginx绑定多个端口的方法如下:进入conf.d目录:cd ~/nginx/con
2021-10-30 09:51:15
2904
原创 spring-boot整合dubbo
1. dubbo简介Apache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。其中RPC(remote procedure call)为远程过程调用,PRC不是指一个具体的技术,而是值整个网络的调用过程,例如,服务器A和B,分别部署了一个应用,那么A服务器的应用肯定不能直接调用B服务器的应用,所以通过网络来表达调用的语义和传达调用的数据。Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均
2021-10-08 08:25:17
695
原创 虚拟机模拟redis集群
实践是检验真理的唯一标准,作为redis的初学者,在学习redis集群的时候,希望能够自己搭建一个redis集群,但只有一台电脑,所以想出使用虚拟机去模拟redis集群,相当于构建一个伪集群。(伪)集群搭建步骤1 搭建所需环境VM虚拟机(这里操作系统选用的是CentOs7)安装redies注:为避免权限问题,后期操作均使用root账户2 创建集群目录为方便对文件的管理,新建一个集群目录[root@centOSyangsensen redis]# mkdir redis-c
2021-07-26 21:51:00
490
原创 简单解析网络API接口数据
API数据接口-聚合数据 xml和 json 是现今互联网中常用的两种数据交换格式,两种格式都可以进行网络数据交换,数据存储,配置文件,但由于两种文件不同的优缺点,xml主要用于配置文件,json主要应用于网络数据交换。本文通过申请聚合API数据接口,分别使用xml和json的方式解析该API数据。申请方式可以进入聚合数据官方进行申请(聚合官方)。聚合数据提供了很多的网络API接口,很方便开发者使用。 我在聚合数据申请了一个手机号码归属地查询的接口,请求示例如下图:该
2021-05-23 14:34:38
1977
原创 Java中的四种线程池
文章目录线程池Executors线程池概述线程池的好处1. 缓存线程池2. 定长线程池3. 单线程线程池4. 周期定长线程池线程池Executors线程池概述 在进行多线程任务开发的时候,一个线程会经历如下四个阶段: 1. 创建线程 2. 创建任务 3. 执行任务 4. 关闭线程 如果一个线程的任务量很小,那么创建任务和执行任务将占整个流程的很少时间,多数时间用于创建线程和关闭线程,
2021-05-19 09:32:26
372
原创 常用类库String浅析
文章目录String常用方法StringBuffer和StringBuilder构造函数常用方法String 字符串是常量,它们一经创建就不能被修改。正因为字符串对象不变,所以可以共享它们。比如:String str1 = "abc";String str2 = "abc"; 上述代码并没有申请两块存储空间,str1和str2是同一块内存地址的引用。 在对一个字符串进行引用时,JVM首先会在常量池(永久代中,不会被GC回收)中
2021-05-18 13:01:08
133
原创 try catch中finally的理解(java)
理解在进行try catch进行异常处理时,不管是否抛出了异常,也不管在finally之前是否有return语句,finall均必然会被执行,除非程序被关闭(可能是电脑断电,关机,代码使其退出等非正常情况)。finally的执行finally之前无return的情况首先看一个简单的例子: public static void main(String[] args) { div(); } public static void div(){ int x,
2021-05-02 13:15:36
342
原创 opencv进行复数的乘除法运算
目录引言opencv中的复数表示复数乘法引言由于opencv自身不带有复数计算功能,但我又经常需要进行复数运算,所以我只能自己写两个函数来进行复数的乘除法运算。opencv中的复数表示复数包含了实部和虚部,在opencv中是使用一个二通道的Mat对象来存放一个复数数组,两个通道分别存储复数的实部和虚部,图像傅里叶变换的结果就是一个使用二通道数组存放的复数数组。比如一个复数:[0+0j0+j1+0j1+j]\begin{bmatrix}0+0j&0+j\\1+0j&1+j\e
2021-03-26 18:01:35
1221
原创 图像锐化
目录1. 图像锐化2. 空间域方法2.1. 梯度模算子1. 图像锐化图像锐化也称边缘增强。锐化技术用于加强图像中的边界和细节信息。由于边界和细节信息对应频域中的高频部分,所以在频域中通常对图像进行高通滤波,在空间域则进行微分处理。2. 空间域方法在进行频率域处理前,先简单介绍两种空间域的图像锐化算子。2.1. 梯度模算子由数学知识,我们知道方向导数取得最大值的方向是梯度方向,这个最大值便是梯度的模。在边界和细节部分进行梯度运算,得到的值较大,而在较平缓的地方,会得到较小的梯度。为了运算简便,梯度
2021-02-27 13:54:24
7780
2
原创 频域中图像平滑的方法
文章目录1. 频域中图像平滑流程2. 理想低通滤波器3. 巴特沃斯低通滤波器1. 频域中图像平滑流程在一副图像中,平滑的图像信号在频谱中贡献低频分量,而高频部分往往是图像的细节和边界,噪声也具有丰富的高频分量。所以对图像进行低通滤波可以消减噪声,但也可能使边界和图像细节变得模糊。频域中图像滤波的处理流层如下图:其中DFT为离散傅里叶变换,IDFT为离散傅里叶反变换,H(m,n)H(m,n)H(m,n)为滤波器的传递函数。滤波器的输出为:2. 理想低通滤波器二维理想低通滤波器(Ideal Lo
2021-02-20 09:44:28
3138
原创 opencv显示图像的频谱图(C++)
opencv显示图像的频谱图(C++)1. 图像傅里叶变换2. 幅度谱3.相位谱4. 测试1. 图像傅里叶变换图像的傅里叶变换是二维的傅里叶变换,二维离散傅里叶变换(discrete Fourier transform,DFT)定义式如下:在这里f(m,n)f(m,n)f(m,n)为图像在点(i,j)(i,j)(i,j)的像素值。二维离散傅里叶反变换为:在opencv中可以通过dft()函数实现二维离散傅里叶变换,代码如下:Mat DFT::dft2(Mat input){ if (in
2021-02-15 10:49:04
3921
3
原创 图像平滑算法
目录1.噪声1.噪声图像在获取的过程中一般会受到各种干扰而导致图像含有噪声。噪声的产生原因有很多,噪声产生的原因决定了噪声的分布特性。当噪声n(x,y)n(x,y)n(x,y)与图像信号g(x,y)g(x,y)g(x,y)无关时,含噪图像f(x,y)f(x,y)f(x,y)可以用下面的式子表示:f(x,y)=g(x,y)+n(x,y)f(x,y)=g(x,y)+n(x,y)f(x,y)=g(x,y)+n(x,y)这种噪声称作加性噪声。还有一种乘性噪声,即噪声和信号有关,含噪图像f(x,y)f(x
2021-02-13 18:23:05
3528
原创 修正直方图增强对比度
目录直方图(histogram)直方图均化直方图(histogram)设一副数字图像的像素总数为NNN,灰度级为LLL,第kkk个灰度级的灰度等级为rkr_krk,共有像素nkn_knk个,则第kkk个灰度级或者说rkr_krk出现的频率:hk=nk/Nh_k=n_k/Nhk=nk/N,其中k=0,1........(L−1)k=0,1........(L-1)k=0,1........(L−1)。以kkk为横坐标(或rkr_krk为横坐标),hkh_khk为纵坐标画出的柱状图,就成为了
2021-02-02 22:01:30
620
原创 对比度增强算法
目录一、简单线性变换二、分段线性变换一、简单线性变换如果原图像f(x,y)f(x,y)f(x,y)的灰度范围为[m,M][m,M][m,M],经过线性变换之后,我们希望变换后的图像g(x,y)g(x,y)g(x,y)的灰度范围是[n,N][n,N][n,N],那么经过下面的简单线性变换就可实现:g(x,y)=(N−n)/(M−m)[f(x,y)−m]+ng(x,y)=(N-n)/(M-m) [f(x,y)-m]+n g(x,y)=(N−n)/(M−m)[f(x,y)−m]+n令系数k=(N−n)/(
2021-01-28 18:36:05
6207
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人