自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis多路复用IO模型 以及 6.0引入的多线程模型

IO多路复用指的是,Redis采用linux的Epoll机制,实现内核中同时存在多个监听中的套接字和已监听的套接字,内核会一直监听这些套接字,一但有请求到达时,就会放到事件队列中,redis的主线程会不断从事件队列中取事件去消费。如果把网络读写交给线程组实现,会带来很大的方便,多线程只用在网络的读写和协议解析,执行redis命令的仍然是主线程,也不会带来资源竞争等问题。redis在6.0版本引入了多线程,其实不仅仅实在6.0,在6.0版本之前,redis也有其他线程在工作,比如rdb文件备份。

2025-05-08 23:30:44 406

原创 Redis的内存淘汰机制

Redis的内存淘汰机制和过期策略是2个完全不同的机制,过期策略指的是使用那种策略来删除过期键,Redis的内存淘汰机制是指:当Redis的运行内存已经超过设置的最大运行内存时,采用什么策略来删除符合条件的键值对,以此来保障redis的高效运行。

2025-05-05 22:04:52 317

原创 Redis的过期设置和策略

Redis设置过期时间主要有以下几个配置方式。

2025-05-05 15:51:02 931

原创 Redis事务

Redis中的事务是指提供一种将多个命令打包到一起,一次性按照顺序执行的机制。Redis在执行事务期间,不会接收处理其他操作命令。

2025-05-05 00:03:03 285

原创 redis的持久化

redis的持久化主要包括以下几种。

2025-05-04 12:28:44 1114

原创 rabbitMQ如何确保消息不会丢失

rabbitmq消息丢失的三种情况。

2025-05-02 21:57:12 811

原创 消息队列的作用

消息队列是分布式系统中被广泛使用的中间件技术,它主要是用来提升分布式系统的性能和可靠性,解决系统间通信的复杂性。

2025-05-02 15:54:19 997

原创 zookeeper相关面试题

leader保证顺序写,即所有的写请求在follower上是保持一致的,但是由于任何follower节点都可以实现读请求,有可能会读到leader已经commit的数据,但是follower节点还没有来得及完成commit数据,因此可能读取到旧的数据,我们可以在客户端读取数据(getData)之前调用sync方法,sync方法会使连接的follower节点在读取数据之前,先完成和leader的数据同步。zookeeper会保证整个事务中的操作要么都成功,要么都不成功,从而保证原子性。

2024-09-08 23:02:01 808 1

原创 分布式锁 redis与zookeeper

watch dog机制(Redisson底层就是基于watch dog机制来实现分布式锁的自动续期,当未设置过期时间时,会默认设置30秒,并起一个看门狗线程,每十秒去检测一次,如果当前线程仍然在执行,就自动续期,当然,如果手动设置了过期时间,就不会自动续期了)。获取锁和设置过期时间是2个命令,两次网络IO和redis交互,不具备原子性,可能出现获取锁成功之后 设置过期时间之前服务器宕机,导致其他线程永远都获取不到锁的现象。当前仍存在锁时间达到了过期时间,但是线程没执行完的问题。

2024-08-25 23:51:03 633

原创 离线安装docker镜像

大致分为以下几步,我们以nginx镜像为例(其他自定义的镜像操作类似)3. 通过USB或其他介质将tar文件拷贝到目标服务器上。当我们想离线安装docker镜像时,需要怎么操作呢?4. 在目标服务器上执行命令加载镜像文件。2. 将docker镜像转成tar包。6. 访问nginx。

2024-08-11 12:03:43 726

原创 将本地微服务发布到docker镜像二:

redis、mysql、springboot微服务分开部署打到同一个镜像中。

2024-08-03 23:58:06 317 1

原创 docker网络介绍net

首先我们先关闭并删除对应的容器(c1、c2、c3)创建自定义docker网络创建容器c1、c2、c3在c3中分别ping c2 和 c1的容器可以发现都可以ping的通。当我们c2容器先关闭在启动,ip发生变更之后。在c3容器中访问c2,观察是否可以正常访问可以发现虽然c2的ip从172.21.0.3变更成172.21.0.5,但是我们通过容器名称仍然可以正常访问成功。自定义网络本身就维护好了主机名和IP的对应关系,也就是IP和域名都能联通。

2024-08-03 20:28:42 1234

原创 将本地微服务发布到docker镜像

编写Dockerfile文件,为了方便,请将Dockerfile文件与jar包保持同一目录,Dockerfile文件内容如下所示。先本地idea创建一个简单的springboot服务,不需要连接数据库相关操作,只包含简单的接口功能做验证。将本地springboot微服务发布到docker镜像中并启动容器。如下所示,执行package,将我们的服务打成jar包。上一步取到jar包之后,将jar包上传到服务器上。构建完成之后查看我们的镜像文件。相关测试代码如下所示。

2024-08-03 15:23:14 439 1

原创 rabbitmq的集群

rabbit集群的搭建方式

2022-06-13 22:52:23 1070

原创 elasticsearch 进行模糊查询时,不同方式的差异性

众所周知,目前使用elasticsearch进行模糊搜索时,主要有2种方式第一种:使用wildcard 关键字 + 未分词的字段进行搜索第二种:使用match_phrase + 分词的方式进行搜索对于这两种搜索,效率和性能上有什么区别呢?我们通过jmeter来压测下性能。测试的服务器指标: 1C 2G1、创建es的index自定义一个分词器(分词器将一个文本分割成单个字符),并且一个字段(address)使用自定义分词器分词,一个字段(addressNoAnalysis)不分词,分词的字段用来校

2022-05-24 23:57:49 1017

原创 elasticsearchTemplate 批量插入数据时,报错es节点拒绝插入。

错误信息:org.springframework.data.elasticsearch.ElasticsearchException: Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages [{970893=RemoteTransportException[[node-1][127.0.0.1:9300][indices:data/write/bulk[s][p]]

2022-05-15 12:59:04 2532

原创 Mysql之排序优化-fileSort问题

最近看了下《高性能Mysql》,结合最近工作时经常碰到排序优化的情况,特此记录下现象:1. 高性能MySQL 文档如下Mysql有两种方式可以生成有序的结果,1、通过排序操作;2、按索引顺序扫描,如果EXPLAIN出来的type值为"index",则说明MySQL使用了索引扫描来做排序(不要和Extra列的Using index 混淆)扫描索引本身是很快的,因为只需要从一条索引记录移动到紧接着的下一条记录,但是如果索引不能覆盖查询所需要的全部列,就不得不每扫描一条记录回表查询一次对应的行,这基本上是随

2021-08-29 22:55:33 799

原创 springboot项目启动过程中碰到的问题

异常信息:java.lang.IllegalStateException: Failed to introspect Class [com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure] from ClassLoader [sun.misc.Launcher$AppClassLoader@18b4aac2] at org.springframework.util.ReflectionUtils.getDeclar

2021-02-19 17:44:12 653

原创 shardingjdbc配置多数据源,解决shardingjdbc对部分写法的不支持

问题: 使用过shardingjdbc的一般都知道,shardingjdbc有一些限制,并不支持一些sql,具体可登陆sharding官网查看;DataSource接口不支持timeout相关操作Connection接口不支持存储过程,函数,游标的操作不支持执行native的SQL不支持savepoint相关操作不支持Schema/Catalog的操作不支持自定义类型映射Statement和PreparedStatement接口不支持返回多结果集的语句(即存储过程,非SELEC

2020-12-13 22:50:56 11877 11

原创 http和https的区别(面试题)

超文本传输协议http是明文传输,所以当请求被拦截时,用户输入的信息可能会被泄露,比如说银行卡号和密码;安全套接字层超文本传输协议为了保证数据安全的传输,https在http的基础上加了SSL/TLS的协议,SSL/TLS依靠证书验证服务器的身份,并未浏览器和服务器之间的通信加密;https的作用主要有两种,一种是建立一个信息安全通道,保证数据的安全性,第二种是确认网站的真实性;客户端在使用HTTPS与web服务器之间通信的步骤:用户使用https的URL与web服务器建立SSL连接;web服务

2020-06-23 09:09:21 728 2

原创 Dubbo相关面试题

一、Dubbo服务注册和发现的流程?1、容器启动;2、服务提供者连接注册中心,将接口信息保存到注册中心中;3、服务消费者从注册中心订阅所需要的服务并缓存本地,4、服务提供方有变更时,注册中心将提供一份新的列表给消费者并缓存在消费者端;5、消费者根据接口地址调用服务提供者;6、监听器定时监听接口的调用次数和调用时长;二、dubbo支持哪些协议?dubbo:dubbo默认推荐的协议,单一长连接和NIO异步通讯,适用于高并发小数据量的请求,以及消费者远大于提供者,tcp传输协议,Hessian

2020-06-09 15:57:28 249

原创 ElasticSearch面试题

一、elasticsearch的写入过程?当es介绍到一个写请求时,es的请求会发送到协调节点上,协调节点根据该条记录的_id通过一个路由算法计算出我们该条记录被分配到哪一条shard上,当数据保存到对应的primary shard和replica shard上之后,返回响应到协调节点,协调节点返回成功的响应到客户端;二、elasticsearch的写入是实时搜索的不?非实时的,elasticsearch是一个近实时的搜索系统,写入的时候,现将文档写入到内存缓冲区中和translog里面,通过refr

2020-06-05 16:54:22 311

原创 面试-Spring面试题

一、Bean的生命周期?

2020-06-02 14:23:34 340

原创 JAVA日期格式校验正则表达式方法,yyyy年MM月,yyyy-MM-dd格式等

今天校验了日期格式,故记录下;一、校验yyyy年MM月; /**yyyy年MM月 或者 yyyy年M月**/ private static final String MONTH_REGEX = "^([1-9]\\d{3}年)(([0]{0,1}[1-9]月)|([1][0-2]月))$"; /*** * @desc 校验月份的格式,格式如下,yyyy年MM月或者yyyy年M月 * 如:2020年10月 或者 2020年09月 或者 2020年9

2020-05-28 19:18:30 30080 1

原创 Mysql面试题

一、事务的四大基本特征?原子性:事务中的操作要么全成功,要么全失败,若事务执行到一半发现报错了,就会回滚该事务中之前做的操作,回到事务开始前的状态;一致性:在执行事务之前,数据库是一致的,在执行事务之后,数据库也还是一致的;持久性:事务提交之后,就会持久化到数据库;隔离性:多个事务之间,彼此独立,互不影响;二、事务的隔离级别?1、读未提交(Read Uncommitted):所有事务都可以看到其他事务未提交的内容,解决不了任何并发问题;2、读已提交(Read committed):所有事务只能

2020-05-28 12:37:08 183

原创 JUC java并发面试题

1、synchronized的底层原理java虚拟机里面的同步是基于进入和退出monitor对象实现的,无论是显式同步(同步代码块)还是隐式同步都是如此,同步方法并不是由monitorenter和monitorexit指令来实现同步的,而是由方法调用指令读取运行时常量池中的表结构的ACC_SYNCHRONIZED标志来隐式实现的;同步代码块:monitorenter插入到同步代码块开始位置,monitorexit指令插入到同步代码块结束的位置,任何对象都有一个monitor与之关联,当且一个monito

2020-05-28 12:36:31 4286

原创 java、spring线程池面试题

一、线程池的好处?1.通过new Thread来创建线程池会比较耗时,性能差,当我们在通过线程的时候,有可能会出现(创建线程+销毁线程)的时长>线程执行(业务逻辑)的时长;2.线程缺乏统一管理,可能会出现无限制的创建线程,线程之间相互竞争,争夺资源而导致系统崩溃;3.缺乏更多的管理功能,比如定时执行、定期执行、线程中断;相比较于new Thread,创建线程的好处在于:1.重用已存在的线程,避免线程新建和消亡产生的开销。2.可以控制最大并发数,避免同时多个线程执行,争夺资源,导致系统崩溃;

2020-05-23 20:08:42 900

原创 redis主从配置

本文记录下redis的主从配置我们在一个实例上启动两个redis,其中一个作为master,另一个作为slave第一步:我们的redis是安装在/usr/loca下,生成一个redis的文件夹,文件夹中包含了我们redis的bin目录和启动文件redis.conf,然后将redis的文件复制一份,命名为slave_redis,作为slave的配置路径mkdir slave_rediscd slave_rediscp -r ../redis/. ./第二步:修改master节点的配置(redis

2020-05-21 19:24:28 470

原创 Redis面试题

一、Redis对比memcached有哪些优势?redis的类型有5大类,分别是string、list、set、sorted set、hash,而memcached只有string一种类型redis数据存储在内存,但是可以持久化,可通过RDB或者AOF的方式持久化数据,RDB方式持久化会生成一个压缩过的二进制文件,它将所有的内存中的数据都保存在该文件中,redis.conf文件提供了RDB方式的三种同步机制,save 900 1save 300 10save 60 10000分别表示当在900

2020-05-21 13:04:15 182

原创 zookeeper: Connection reset by peer

WARN 1927 — [ad(slave1:2181)] org.apache.zookeeper.ClientCnxn : Session 0x0 for server slave1/xx.xx.xx.xx:2181, unexpected error, closing socket connection and attempting reconnectjava.io.IO...

2020-05-05 13:43:32 4837 1

原创 从零开始搭建springboot项目(四)、自动生成代码(model、mapper、service、serviceimpl、controller)

本次创建项目分成下面几个步骤介绍(1)创建springboot项目;(2)整合mybatis,搭建数据访问层框架(3)整合shiro搭建权限验证框架;(4)自动生成代码;(5)整合logger搭建日志框架上一篇我们介绍了如何整合shiro,搭建权限验证框架,这一篇我们介绍如何根据数据库表结构自动创建数据访问层、业务层和控制层代码。准备工作:我们先建一张表作为用例DROP TABLE...

2020-04-19 17:55:26 2165 2

原创 从零开始搭建springboot项目(三)、整合shiro搭建权限验证框架

aa

2020-04-06 23:09:17 769 2

原创 从零开始搭建springboot项目(二)、整合mybatis,搭建数据访问层框架

本次创建项目分成下面几个步骤介绍(1)创建springboot项目;(2)整合mybatis,搭建数据访问层框架(3)整合shiro搭建权限验证框架;(4)自动生成代码;(5)整合logger搭建日志框架上一篇我们介绍了如何创建springboot项目,这一篇我们将介绍如何整和mybatis,搭建数据访问层框架;整合mybatis准备工作:第一步:pom文件准备:pom文件引入m...

2020-03-29 17:40:21 1072 3

原创 从零开始搭建springboot项目(一)、创建springboot项目

本次创建项目分成下面几个步骤介绍(1)创建springboot项目;(2)整合mybatis,搭建数据访问层框架(3)整合shiro搭建权限验证框架;(4)自动生成代码;(5)整合logger搭建日志框架创建springboot项目准备环境1、jdk1.8及以上;2、maven 3.6.1;3、开发工具:本人使用的是idea,也可以使用eclipse;开始搭建(一)、打开f...

2020-03-29 15:21:09 3365

原创 springboot杂谈(四)springboot+ehcache实现缓存

一、添加依赖首先编辑项目的 pom.xml 文件,添加 spring-boot-starter-cache 依赖以及 Ehcache 依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache&l...

2020-03-27 12:23:58 329

原创 springboot杂谈(三)配置addResourceHandler和addResourceLocations映射静态资源地址

自定义资源映射addResourceHandlers:在springboot中,我们可以通过重写addResourceHandlers方法来映射静态资源目录;具体做法:编写类继承WebMvcConfigurerAdapter类,重写该类的addResourceHandlers方法;其中addResourceHandler指向映射路径,addResourceLocations指向资源文件路径;资...

2020-03-26 13:05:13 8847

原创 springboot杂记(二):使用 spring.profiles.active来区分配置

springboot允许我们通过命名约定按照一定的格式((application-{profile}.properties)来定义多个配置文件,然后在application.properties中通过属性spring.profiles.active来指定一个或多个配置文件,如果没有没有指定任何profile的配置文件的话,spring boot默认会启动application-default.pr...

2020-03-25 20:19:49 1358

原创 springboot杂记(一)

一、注解的使用@ComponentScan:如果我们的包都在使用了@SpringBootApplication注解的main所在的包及其下级包,则我们什么都不用做,SpringBoot会自动帮我们将其他的包扫描了;但是如果我们有一些bean的包不在main所在包下的,我们需要手动加@ComponentScan注解并制定那个bean所在的包。比如下面这么做扫描的范围扩大到了父包com.twop...

2020-03-23 22:19:54 250

原创 ant+maven spring项目一键打包(三)

上一遍地址:https://blog.youkuaiyun.com/qq_36317804/article/details/105025592上一篇我们讲解了如何使用ant+maven来打包spring项目,这一篇我们来讲解一下我们在管理端是如何实现一键打包的。先说说我们管理端的逻辑:我们需要为公司各个金融子系统提供不同的分析报表或者数据分析的接口,分析报表的结构是一套固定的表结构(表结构会在管理端配置...

2020-03-22 17:02:16 399

原创 ant+maven spring项目一键打包(二)

接上一篇继续,上一篇地址:https://blog.youkuaiyun.com/qq_36317804/article/details/104999969上一篇我们已经安装了ant+maven了,这一篇我们讲讲如何项目里面一键打包;a)、第一步:我们通过ant在svn上拉取项目,将项目最新的源码拉取到服务器上;b)、第二步:根据我们配置的参数,将spring项目的数据库配置文件动态替换掉;c)、第三...

2020-03-22 14:38:56 937

空空如也

空空如也

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

TA关注的人

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