自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 rabbitmq之基于插件的延时队列(六)

文章目录前言rabbitmq之基于插件的延时队列安装延时队列插件流程图代码演示前言基于死信的延时队列文章链接在上一篇rabbitmq基于死信的延时队列中提到了,通过rabbitmq的消息过期机制实现的延时队列,RabbitMQ 只会检查第一个消息是否过期,如果过期则丢到死信队列,如果第一个消息的延时时长很长,而第二个消息的延时时长很短,第二个消息并不会优先得到执行。rabbitmq之基于插件的延时队列针对这一问题我们就可以通过rabbitmq_delayed_message_exchange插件实

2021-09-04 21:10:13 250 1

原创 rabbitmq交换机之fanout丶direct丶Topic(三)

文章目录ExchangesExchanges 的类型绑定fanout模式代码演示direct模式代码演示Topic模式ExchangesRabbitMQ 消息传递模型的核心思想是: 生产者生产的消息从不会直接发送到队列。生产者只能将消息发送到交换机(exchange),交换机工作的就是接收来自生产者的消息,另一方面将它们推入队列。因此交换机必须确切知道如何处理收到的消息。是应该把这些消息放到特定队列还是说把消息推到许多队列中还是说应该丢弃它们,这就的由交换机的类型来决定。Exchanges 的类型总

2021-08-31 00:27:37 335

原创 redis主从复制及哨兵模式

概念主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Maste似写为主,Slave以读为主。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从复制的作用主要包括1、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务分担服务器负载;

2021-08-11 22:37:31 344 1

原创 redis事务与乐观锁

redis事务的本质其实就是一组redis命令的集合,其特点如下redis事务是一个泛原子操作(ps:某些情况redis的事务不是原子性的,比如多条命令中有一条命令属于运行时异常,那么该异常不会影响其他命令的执行)redis事务没有隔离级别的概念,每个事务都是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断redis中的单条命令存在原子性redis中的事务为间接执行,执行过程multi:事务开启,标记下面输入的redis命令

2021-07-12 15:59:20 91

原创 Linux下nginx平滑升级版本

我的升级环境:旧版本nginx:1.9.15新版本nginx:1.20.11.新版本安装包下载https://nginx.org/en/download.html根据上面的官方下载地址,选择较新的版本下载到本地,然后移动到linux服务器中。(我选择的是稳定版本)2.检查当前nginx版本2.1首先使用 find / -name nginx找到nginx安装目录,我的目录是/usr/local/nginx/sbin/nginx2.2执行/usr/local/nginx/sbin/nginx

2021-05-28 16:01:31 2206

原创 基于security+oauth2权限模块搭建总结

说明: 本系统采用security+oauth2作为安全框架主要完成了登陆认证丶权限分配丶url的拦截。一丶oauth2登陆及请求说明系统测试登陆账号:admin系统测试登陆密码:12345登陆url: http://localhost:8120/oauth/token指定参数:username,password,grant_type,scope,client_id,clie...

2020-03-16 17:02:45 1131

原创 spring boot拦截器配置拦截登陆之web项目

一丶,新建WebConfigurer1,如图,新建的 config 包,用来装初始化文件,在配置之下新建 WebConfigurer。2,WebConfigurer需要实现 WebMvcConfigurer 这个接口,并实现里面的两个方法。(在老版本的 spring-boot 中使用的是WebMvcConfigurerAdapter,新版本中已过时!!!还有不能通过继承 WebMvcConf...

2019-05-08 10:33:16 1584

原创 引入mybatis-plus后出现java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory

使用httpClient 模拟post请求上传图片:public class HttpFileUpload { //url:请求路经 //filePath:需要上传的文件路径 public static JSONObject fileUpload(String url,String filePath){ CloseableHttpClient httpclient = HttpCli...

2019-04-30 14:53:47 3871

原创 InnoDB存储结构的原理以及索引的原理

windows下配置nginx访问本地图片

2019-04-19 23:07:40 3635

原创 mysql总结

索引是什么?索引(INDEX)是帮助MySQL高效获取数据的数据结果。索引是排好序的快速查找数据结构。索引的目的在于提高查询效率,可以类比字典的目录。如果要查mysql这个这个单词,我们肯定要先定位到m字母,然后从上往下找y字母,再找剩下的sql。如果没有索引,那么可能需要a---z,这样全字典扫描,如果我想找Java开头的单词呢?如果我想找Oracle开头的单词呢???重点:索引会影响到MySQL查找(WHERE的查询条件)和排序(ORDER BY)两大功能!

2024-04-24 18:05:08 960

转载 MySQL 单表数据最大不要超过多少行?为什么?

所以,在保持相同的层级(相似查询性能)的情况下,在行数据大小不同的情况下,其实这个最大建议值也是不同的,而且影响查询性能的还有很多其他因素,比如,数据库版本,服务器配置,sql 的编写等等,MySQL 为了提高性能,会将表的索引装载到内存中。这个过程的图示如下。在 mysql 中索引的数据结构和刚刚描述的页几乎是一模一样的,而且大小也是 16K, 但是在索引页中记录的是页 (数据页,索引页) 的最小主键 id 和页号,以及在索引页中增加了层级的信息,从 0 开始往上算,所以页与页之间就有了上下层级的概念。

2023-06-13 13:53:09 521

转载 18 个Java8 高效率日期处理

18个java8的高效率日期处理

2022-09-02 15:05:13 626

原创 mysql limit优化

分析其实对于我们的MySQL查询语句来说,整体效率还是可以的,该有的联表查询优化都有,该简略的查询内容也有,关键条件字段和排序字段该有的索引也都在,问题在于他一页一页的分页去查询,查到越后面的页数,扫描到的数据越多,也就越慢。我们在查看前几页的时候,发现速度非常快,比如 limit 200,25,瞬间就出来了。但是越往后,速度就越慢,特别是百万条之后,卡到不行,那这个是什么原理呢。先看一下我们翻页翻到后面时,查询的sql是怎样的:select * from t_name where c_name1=

2022-01-06 15:47:42 2781

转载 mysql索引覆盖与回表

select id,name where name=‘shenjian’select id,name,sex where name='shenjian’多查询了一个属性,为何检索过程完全不同?什么是回表查询?什么是索引覆盖?如何实现索引覆盖?哪些场景,可以利用索引覆盖来优化SQL?这些,这是今天要分享的内容。画外音:本文试验基于MySQL5.6-InnoDB。一、什么是回表查询?这先要从InnoDB的索引实现说起,InnoDB有两大类索引:聚集索引(clustered index)普

2022-01-05 18:21:21 534

转载 Java不可重入锁和可重入锁原理

最近正在阅读Java ReentrantLock源码,始终对可重入和不可重入概念理解不透彻,进行学习后记录在这里。基础知识Java多线程的wait()方法和notify()方法这两个方法是成对出现和使用的,要执行这两个方法,有一个前提就是,当前线程必须获其对象的monitor(俗称“锁”),否则会抛出IllegalMonitorStateException异常,所以这两个方法必须在同步块代码里面调用。wait():阻塞当前线程notify():唤起被wait()阻塞的线程不可重入锁所谓不可重入

2021-11-04 09:42:39 340

转载 java读写锁(ReentrantReadWriteLock)的实现原理

前言前面介绍了java中排它锁,共享锁的底层实现机制,本篇再进一步,学习非常有用的读写锁。鉴于读写锁比其他的锁要复杂,不想堆一大波的文字,本篇会试图图解式说明,把读写锁的机制用另外一种方式阐述,鉴于本人水平有限,如果哪里有误,请不吝赐教。公平读写锁ReentrantReadWriteLock的锁策略有两种,分为公平策略和非公平策略,两者有些小区别,为便于理解,本小节将以示例的形式来说明多线程下,使用公平策略的读写锁是如何处理的。首先看一下即将出场的伙伴们,我们一共会出场几个线程,还有用于实现读写机制

2021-11-04 09:33:56 1071

转载 浅谈 高并发 处理方案

select底层采用数组来管理套接字描述符,同时管理的数量有上限,一般不超过几千个,epoll使用树和链表来管理,同时管理数量可以很大。select不会告诉你到底哪个套接字来了消息,你需要一个个去询问。epoll直接告诉你谁来了消息,不用轮询。select进行系统调用时还需要把套接字列表在用户空间和内核空间来回拷贝,循环中调用select时简直浪费。epoll统一在内核管理套接字描述符,无需来回拷贝。

2021-09-29 17:56:20 162

转载 互联网三高架构之高并发和高性能的理解

转载文章原文链接:https://blog.csdn.net/shengqianfeng/article/details/81273604互联网三高架构:高并发、高性能、高可用,简称三高(3H)互联网应用系统开发肯定经常会看到高并发和高性能这两个词,可谓是耳熟能详,而具体的含义和关系真的如你所想的,真正的理解了吗?先来看一个例子:一个蓄水池,是1m1m1m=1立方米大小,有一个出水口,出水口每秒钟流出0.1立方米,那么这个蓄水池的并发量是1立方米,出水速度是0.1立方米/秒。如果增加一个出水口,

2021-09-19 10:57:52 599

原创 rabbitmq优先级队列(八)

优级队列在队列中默认都是先进先出,但每个消息都会伴随一个默认的优先级,如果需要提高某个消息的被处理的优先级,那么就可以通过优级队列来实现。代码实现添加配置文件spring.rabbitmq.host=192.168.136.128spring.rabbitmq.port=5672spring.rabbitmq.username=adminspring.rabbitmq.password=admin引入rabbitmq的依赖<dependency> <groupI

2021-09-14 17:17:53 299

原创 rabbitmq之发布确认进阶(七)

概述消息确认基础篇的链接在我的另一篇确认发布基础篇讲了,如何应对队列在发送消息给消费者的过程中出现了问题导致消费者无法消费,那么生产者发送消息给交换机的过程中出现了问题,以及交换机发送消息给队列的过程中出现了问题,应该如何应对?在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢? 特别是在这样比较极端的情况,RabbitMQ 集群不可用

2021-09-05 23:04:29 376

原创 rabbitmq之延时队列(五)

概念延时队列,队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理。简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列。延迟队列与死信队列的区别通过之前的篇章,我们知道死信队列其实和普通队列没有什么区别,死信队列就是保存没有被消费者正常消费的消息的一个队列,而延迟队列其实就是利用了消息ttl过期后会加入到死信队列中的特性,从而达到延迟处理的一个机制。(这里保存ttl过期的消息的队列就可以称之为延迟队列)延迟队列使用场景(举5个例

2021-09-04 17:09:18 300

原创 rabbitmq之死信队列(四)

概念死信队列,顾名思义就是无法被消费的消息,,某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,加入到私信队列中。私信的来源消息 TTL 过期队列达到最大长度(队列满了,无法再添加数据到 mq 中)消息被拒绝(basic.reject 或 basic.nack)并且 requeue=false...

2021-09-02 11:13:29 212

原创 rabbitmq之消息确认(二)

概念确认发布就是用来保证生产者在发送消息到mq的过程中防止消息丢失的一种机制。发送方发消息给接受方一旦接收方接到消息后通知发送方,如果发送方设置了持久化那么接受方会在消息成功持久化后在通知发送方。消息确认的策略消息的确认做有很多法,其中包括单条确认、批量确认、异步确认等。单条确认:它是一种同步确认发布的方式,也就是发布一个消息之后只有它被确认发布,后续的消息才能继续发布,waitForConfirmsOrDie(long)这个方法只有在消息被确认的时候才返回,如果在指定时间范围内这个消息没有被确认

2021-08-29 22:10:17 455

原创 rabbitmq之工作队列(一)

文章目录概念1.轮训分发消息1.1代码举例1.2观察结果2.消息应答2.1自动消息应答2.1.1 优缺点2.2手动消息应答2.2.1 优缺点2.2.2 手动消息应答的方法2.2.3 Multiple 的解释2.3消息重新入队列2.4手动消息应答代码测试2.4.1观察结果3.持久化3.1队列持久化3.2消息持久化4.不公平分发5.预取值6.确认发布概念工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台

2021-08-29 20:16:05 380

原创 java httpClient上传图片

RDB简介RDB是Redis默认用来进行持久化的一种方式,是把当前内存中的数据集以快照的方式写入到磁盘中并生成一个.rdb文件,文件默认叫做dump.rdb,并且是redis默认的持久化机制。恢复数据时也是通过解析dump.rdb中的数据到内存中。持久化触发条件RDB持久化的触发分为手动触发和自动触发两种。1)手动触发save命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在Redis服务器阻塞期间,服务器不能处理任何命令请求。(基本已废弃,效率太慢)bgsave命令会创建一个子进

2021-07-21 15:21:44 1599

原创 redis持久化RDB与AOF

问题说明,依赖冲突,循环依赖

2021-07-02 10:11:15 154

原创 idea git合并某个分支下的指定文件

场景:现在所在分支A,需求将B分支的指定文件的合并到A分支下。1.显示与工作树的差异点击指定分支,选择Show Diff with Work Tree2.选择指定文件点击Get from Branch即可将该分拣合并到所在分支下。...

2020-10-23 10:48:41 4886 1

原创 java 实现文件下载进度条

计算不同用户的下载进度import java.io.*;import java.math.BigDecimal;import java.util.ArrayList;import java.util.HashMap;public class ProgressBarThread implements Runnable { private ArrayList<Integer> proList = new ArrayList<Integer>(); priva

2020-09-02 17:16:09 5057

原创 java 读取word文档的内容

首先在pom中添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.0.0</version> </dependency> <dependency>

2020-09-01 15:13:55 6516 1

原创 git冲突的根本原因及解决冲突

简单来说就是本地修改的文件和目标远程库的同一个文件都有修改。这时无论是pull丶push丶merge时都会产生冲突。举例:1.不同分支下的merge比如在不同分支下进行分支合并时,我们在本地修改了a文件并把a文件的修改push到了test分支下,接着我们切换到master分支下将test分支上的修改合并到当前master分支下时,如果master分支下的a文件也有修改的话,这时在进行merge也会产生冲突。(因为这个两个分支是不同步的,两个分支下的同一个文件都有修改)2.同一个分支下的pull或pu

2020-07-06 11:12:25 4494

原创 spirng boot过滤器修改request和response

1.重写request,否则request只能被消费一次import javax.servlet.ReadListener;import javax.servlet.ServletInputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import java.io.*;public class RequestWrapper exte

2020-06-28 10:24:07 446

原创 group by配合max()查询每组某列最大值得全部信息。

设有学生表字段id,name,age,score,course_name假设数据有:1,张三,男,77,语文2,李四,男,87,语文3,王五,男,67,语文4,张三,男,66,数学5,李四,男,78,数学6,王五,男,99,数学需求查询各科分数最高学生的全部信息正确写法select s0.*from student s0inner join (select course_name,max(score) as scorefrom studentgruop by course_na

2020-05-12 14:50:31 666

原创 spring boot使用junit

废话少说!直接开始使用流程1.首先在pom文件中添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test&...

2020-04-10 13:40:56 368

原创 windows下配置nginx访问本地图片

InnoDB存储原理首先我们有一个表tI,tI中有a,b,c,d4个字段,其中a为主键。a intb intc intd varchar此时我们需要向t1中插入4条数据INSERT INTO t1 VALUES(4,5,2,'u');INSERT INTO t1 VALUES(2,44,2,'u');INSERT INTO t1 VALUES(1,2,3,'u');INSERT...

2020-03-22 17:53:03 611

原创 java list按照指定字段去重

/** * 按照指定字段给list去重 * @param list * @return */ public static List<DataModel> niqueList(List<DataModel> list){ //去重,根据code字段 List<DataModel> uniqueList = list...

2019-10-25 18:09:13 888

原创 Could not get any response 请求没有反应

请求接口时出现Could not get any response,或者请求接口没有出发时有可能是因为请求方式的不同!一般请求的地址是域名时要用https

2019-08-29 18:23:30 1095

原创 oauth2 跨域 cors

问题描述:在使用oauth2时访问/oauth/token时出现401的问题!如果项目中包含 Spring Security 就会有 401 的问题,Spring Security 本身是通过 Filter 实现的,如果没有对其单独做 CORS 的处理,在 Web Security 报错 401 的时候是不会返回相应的 CORS 的字段的。这会导致出现的 401 错误成为了一个无法进行跨域的错误...

2019-08-29 18:20:00 1398

原创 spring boot设置默认访问网页

第一步引入依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version>...

2019-07-23 16:58:35 466

原创 mybatis-generatorConfiguration自动生成映射文件

在pom文件中添加generator插件和代码生成的配置文件<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5<...

2019-06-11 11:18:31 7391

原创 jsonObject自动将对象中key的首字母转为大写

在编码过程中因为各种各样的情况,有时我们必须在创建类的时候将属性改为首字母大写!(尽管这并不符合java的命名规范)但是在使用json将该对象后传递到前台后,json会自动将属性的首字母大写转为小写。解决方法:在类的属性名上方增加@JsonProperty,在set()丶get()方法上方增加@JsonIgnore...

2019-04-30 10:10:17 5551

rabbitmq-rpm压缩文件.rar

64位centos7,rabbitmq安装包

2021-08-30

erlang压缩包.rar

centos7-64位erlang环境

2021-08-30

空空如也

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

TA关注的人

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