- 博客(50)
- 收藏
- 关注
原创 zookeeper相关面试题
leader保证顺序写,即所有的写请求在follower上是保持一致的,但是由于任何follower节点都可以实现读请求,有可能会读到leader已经commit的数据,但是follower节点还没有来得及完成commit数据,因此可能读取到旧的数据,我们可以在客户端读取数据(getData)之前调用sync方法,sync方法会使连接的follower节点在读取数据之前,先完成和leader的数据同步。zookeeper会保证整个事务中的操作要么都成功,要么都不成功,从而保证原子性。
2024-09-08 23:02:01
775
1
原创 分布式锁 redis与zookeeper
watch dog机制(Redisson底层就是基于watch dog机制来实现分布式锁的自动续期,当未设置过期时间时,会默认设置30秒,并起一个看门狗线程,每十秒去检测一次,如果当前线程仍然在执行,就自动续期,当然,如果手动设置了过期时间,就不会自动续期了)。获取锁和设置过期时间是2个命令,两次网络IO和redis交互,不具备原子性,可能出现获取锁成功之后 设置过期时间之前服务器宕机,导致其他线程永远都获取不到锁的现象。当前仍存在锁时间达到了过期时间,但是线程没执行完的问题。
2024-08-25 23:51:03
605
原创 离线安装docker镜像
大致分为以下几步,我们以nginx镜像为例(其他自定义的镜像操作类似)3. 通过USB或其他介质将tar文件拷贝到目标服务器上。当我们想离线安装docker镜像时,需要怎么操作呢?4. 在目标服务器上执行命令加载镜像文件。2. 将docker镜像转成tar包。6. 访问nginx。
2024-08-11 12:03:43
694
原创 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
1215
原创 将本地微服务发布到docker镜像
编写Dockerfile文件,为了方便,请将Dockerfile文件与jar包保持同一目录,Dockerfile文件内容如下所示。先本地idea创建一个简单的springboot服务,不需要连接数据库相关操作,只包含简单的接口功能做验证。将本地springboot微服务发布到docker镜像中并启动容器。如下所示,执行package,将我们的服务打成jar包。上一步取到jar包之后,将jar包上传到服务器上。构建完成之后查看我们的镜像文件。相关测试代码如下所示。
2024-08-03 15:23:14
422
1
原创 elasticsearch 进行模糊查询时,不同方式的差异性
众所周知,目前使用elasticsearch进行模糊搜索时,主要有2种方式第一种:使用wildcard 关键字 + 未分词的字段进行搜索第二种:使用match_phrase + 分词的方式进行搜索对于这两种搜索,效率和性能上有什么区别呢?我们通过jmeter来压测下性能。测试的服务器指标: 1C 2G1、创建es的index自定义一个分词器(分词器将一个文本分割成单个字符),并且一个字段(address)使用自定义分词器分词,一个字段(addressNoAnalysis)不分词,分词的字段用来校
2022-05-24 23:57:49
1004
原创 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
2505
原创 Mysql之排序优化-fileSort问题
最近看了下《高性能Mysql》,结合最近工作时经常碰到排序优化的情况,特此记录下现象:1. 高性能MySQL 文档如下Mysql有两种方式可以生成有序的结果,1、通过排序操作;2、按索引顺序扫描,如果EXPLAIN出来的type值为"index",则说明MySQL使用了索引扫描来做排序(不要和Extra列的Using index 混淆)扫描索引本身是很快的,因为只需要从一条索引记录移动到紧接着的下一条记录,但是如果索引不能覆盖查询所需要的全部列,就不得不每扫描一条记录回表查询一次对应的行,这基本上是随
2021-08-29 22:55:33
778
原创 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
640
原创 shardingjdbc配置多数据源,解决shardingjdbc对部分写法的不支持
问题: 使用过shardingjdbc的一般都知道,shardingjdbc有一些限制,并不支持一些sql,具体可登陆sharding官网查看;DataSource接口不支持timeout相关操作Connection接口不支持存储过程,函数,游标的操作不支持执行native的SQL不支持savepoint相关操作不支持Schema/Catalog的操作不支持自定义类型映射Statement和PreparedStatement接口不支持返回多结果集的语句(即存储过程,非SELEC
2020-12-13 22:50:56
11811
11
原创 http和https的区别(面试题)
超文本传输协议http是明文传输,所以当请求被拦截时,用户输入的信息可能会被泄露,比如说银行卡号和密码;安全套接字层超文本传输协议为了保证数据安全的传输,https在http的基础上加了SSL/TLS的协议,SSL/TLS依靠证书验证服务器的身份,并未浏览器和服务器之间的通信加密;https的作用主要有两种,一种是建立一个信息安全通道,保证数据的安全性,第二种是确认网站的真实性;客户端在使用HTTPS与web服务器之间通信的步骤:用户使用https的URL与web服务器建立SSL连接;web服务
2020-06-23 09:09:21
708
2
原创 Dubbo相关面试题
一、Dubbo服务注册和发现的流程?1、容器启动;2、服务提供者连接注册中心,将接口信息保存到注册中心中;3、服务消费者从注册中心订阅所需要的服务并缓存本地,4、服务提供方有变更时,注册中心将提供一份新的列表给消费者并缓存在消费者端;5、消费者根据接口地址调用服务提供者;6、监听器定时监听接口的调用次数和调用时长;二、dubbo支持哪些协议?dubbo:dubbo默认推荐的协议,单一长连接和NIO异步通讯,适用于高并发小数据量的请求,以及消费者远大于提供者,tcp传输协议,Hessian
2020-06-09 15:57:28
242
原创 ElasticSearch面试题
一、elasticsearch的写入过程?当es介绍到一个写请求时,es的请求会发送到协调节点上,协调节点根据该条记录的_id通过一个路由算法计算出我们该条记录被分配到哪一条shard上,当数据保存到对应的primary shard和replica shard上之后,返回响应到协调节点,协调节点返回成功的响应到客户端;二、elasticsearch的写入是实时搜索的不?非实时的,elasticsearch是一个近实时的搜索系统,写入的时候,现将文档写入到内存缓冲区中和translog里面,通过refr
2020-06-05 16:54:22
298
原创 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
29913
1
原创 Mysql面试题
一、事务的四大基本特征?原子性:事务中的操作要么全成功,要么全失败,若事务执行到一半发现报错了,就会回滚该事务中之前做的操作,回到事务开始前的状态;一致性:在执行事务之前,数据库是一致的,在执行事务之后,数据库也还是一致的;持久性:事务提交之后,就会持久化到数据库;隔离性:多个事务之间,彼此独立,互不影响;二、事务的隔离级别?1、读未提交(Read Uncommitted):所有事务都可以看到其他事务未提交的内容,解决不了任何并发问题;2、读已提交(Read committed):所有事务只能
2020-05-28 12:37:08
176
原创 JUC java并发面试题
1、synchronized的底层原理java虚拟机里面的同步是基于进入和退出monitor对象实现的,无论是显式同步(同步代码块)还是隐式同步都是如此,同步方法并不是由monitorenter和monitorexit指令来实现同步的,而是由方法调用指令读取运行时常量池中的表结构的ACC_SYNCHRONIZED标志来隐式实现的;同步代码块:monitorenter插入到同步代码块开始位置,monitorexit指令插入到同步代码块结束的位置,任何对象都有一个monitor与之关联,当且一个monito
2020-05-28 12:36:31
4276
原创 java、spring线程池面试题
一、线程池的好处?1.通过new Thread来创建线程池会比较耗时,性能差,当我们在通过线程的时候,有可能会出现(创建线程+销毁线程)的时长>线程执行(业务逻辑)的时长;2.线程缺乏统一管理,可能会出现无限制的创建线程,线程之间相互竞争,争夺资源而导致系统崩溃;3.缺乏更多的管理功能,比如定时执行、定期执行、线程中断;相比较于new Thread,创建线程的好处在于:1.重用已存在的线程,避免线程新建和消亡产生的开销。2.可以控制最大并发数,避免同时多个线程执行,争夺资源,导致系统崩溃;
2020-05-23 20:08:42
891
原创 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
460
原创 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
173
原创 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
4803
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
2150
2
原创 从零开始搭建springboot项目(二)、整合mybatis,搭建数据访问层框架
本次创建项目分成下面几个步骤介绍(1)创建springboot项目;(2)整合mybatis,搭建数据访问层框架(3)整合shiro搭建权限验证框架;(4)自动生成代码;(5)整合logger搭建日志框架上一篇我们介绍了如何创建springboot项目,这一篇我们将介绍如何整和mybatis,搭建数据访问层框架;整合mybatis准备工作:第一步:pom文件准备:pom文件引入m...
2020-03-29 17:40:21
1056
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
3336
原创 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
321
原创 springboot杂谈(三)配置addResourceHandler和addResourceLocations映射静态资源地址
自定义资源映射addResourceHandlers:在springboot中,我们可以通过重写addResourceHandlers方法来映射静态资源目录;具体做法:编写类继承WebMvcConfigurerAdapter类,重写该类的addResourceHandlers方法;其中addResourceHandler指向映射路径,addResourceLocations指向资源文件路径;资...
2020-03-26 13:05:13
8795
原创 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
1342
原创 springboot杂记(一)
一、注解的使用@ComponentScan:如果我们的包都在使用了@SpringBootApplication注解的main所在的包及其下级包,则我们什么都不用做,SpringBoot会自动帮我们将其他的包扫描了;但是如果我们有一些bean的包不在main所在包下的,我们需要手动加@ComponentScan注解并制定那个bean所在的包。比如下面这么做扫描的范围扩大到了父包com.twop...
2020-03-23 22:19:54
226
原创 ant+maven spring项目一键打包(三)
上一遍地址:https://blog.youkuaiyun.com/qq_36317804/article/details/105025592上一篇我们讲解了如何使用ant+maven来打包spring项目,这一篇我们来讲解一下我们在管理端是如何实现一键打包的。先说说我们管理端的逻辑:我们需要为公司各个金融子系统提供不同的分析报表或者数据分析的接口,分析报表的结构是一套固定的表结构(表结构会在管理端配置...
2020-03-22 17:02:16
392
原创 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
913
原创 ant+maven spring项目一键打包(一)
最近做了一个需求,通过后台管理端配置来给公司其他平台生成接口包。本人一开始考虑的是完全依靠ant来做,后来在做的过程中,发现ant打包的时候并不是那么顺利,后续就通过maven插件来打包项目了,话不多说,下面来介绍一下步骤。一、首先我们服务器上需要安装java,maven和ant安装java就不提了,想必大家应该都已经安装了,本人安装的是jdk1.8接下来就是安装ant下载网址:http...
2020-03-20 23:15:10
698
原创 ElasticSearch实例磁盘占用率高 排查及解决方案(monitoring-es-6-2019.11.27)
最近发现磁盘的占用率趋高,打开可视化工具head查看了之后发现,es实例中生成了好多类似monitoring-es-6-2019.11.27这个的节点。##查询集群总的磁盘使用情况curl -u elastic -XGET 'localhost:9200/_cat/allocation?v'##查询集群中各索引的磁盘占用情况curl -u elastic -XGET 'localhost...
2019-11-28 14:32:42
6656
原创 elasticsearch和head 配置x-pack访问登录控制
下载安装X-PACK因为我们使用的es是6.0版本,所以我们下载的x-pack也是6.0版本。点击下载x-pack下载之后解压缩,然后进入到elasticsearch目录下安装x-pack./bin/elasticsearch-plugin install x-pack他会有两次确认,我们输入y同意即可-> Downloading x-pack from elastic[==...
2019-11-27 16:45:44
2086
原创 ElasticSearch6.0 结构化查询语句详解
match_all 查询使用match_all查询可以查询到所有文档,是没有查询条件下的默认语句{ "query": { "match_all": {} }}类似于mysql当中的 select * from einterfacematch查询match查询是一个标准查询,不管你需要全文本查询还是精确查询基本上都要用到它。如果我们使用match查询一个全文本字段,...
2019-11-26 19:06:14
708
1
原创 elasticsearch复合类型——数组类型新建,插入,查询
多值字段,在一般开发情况下,我们想让某个字段包含多个字段,我们可以通过一个标签数组来代替单一字符串,{“tags”:[“boy”, “monitor”]};对于数组不需要特殊的映射,任何一个字段可以包括零个、一个或者多个值,对于全文字段而言将被解析成多个词。数组里面的值的类型必须是同样的,es将使用数组的第一个词类型来确定这个字段的类型下面贴上es的字段类型图和数组类型的使用实例。首先 ...
2019-11-11 20:19:22
4092
原创 oracle 查询返回布尔类型Boolean的解决方法 select true
oracle中是没有boolean类型的(我用的是PLSQL,其他工具不确定)。select true from dual 也是不行的 会报错:标识符无效。解决办法:代码里面用Boolean类型来接受sql使用 select ‘1’ 表示true,'0’表示false,mybatis会自己转的。下面贴几张图,应该就知道如何使用了。至此就大功告成啦,good lucky!!...
2019-09-19 18:29:47
9098
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人