- 博客(86)
- 收藏
- 关注
原创 Redis面试题
Redis 支持哪几种数据类型?String、List、Set、Sorted Set、hashesRedis 主要消耗什么物理资源?内存。Redis 有哪几种数据淘汰策略?noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大 部分的写入指令,但 DEL 和几个例外)allkeys-lru: 尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。volatile-lru: 尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得新添加的数据 有空
2020-05-10 17:24:31
245
原创 Mysql面试题
简单说一下数据库的三范式?第一范式:数据库表的每一个字段都是不可分割的第二范式:数据库表中的非主属性只依赖于主键第三范式:不存在非主属性对关键字的传递函数依赖关系事务什么是事务(事务是恢复和并发控制的基本单位) 就是被绑定在一起作为一个逻辑工作单元的 SQL 语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过 ACID 测试,即原子性,一致性,隔离性和持久性。
2020-05-10 16:39:22
366
原创 Mybatis面试题
MyBatis中使用#和$书写占位符有什么区别?#将传入的数据都当成一个字符串,会对传入的数据自动加上引号;将传入的数据直接显示生成在SQL中。注意:使用将传入的数据直接显示生成在SQL中。 注意:使用将传入的数据直接显示生成在SQL中。注意:使用占位符可能会导致SQL注射攻击,能用#的地方就不要使用,写orderby子句的时候应该用,写order by子句的时候应该用,写orderby子句的时候应该用而不是#。解释一下MyBatis中命名空间(namespace)的作用。 在
2020-05-08 22:05:36
238
原创 Springmvc面试题
什么是 SpringMvc?Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。springmvc的核心是什么,请求的流程是怎么处理的,控制反转怎么实现的请求处理流程:1、首先用户发送请求到前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前
2020-05-08 21:56:01
660
原创 spring常见面试题
Spring谈谈你对Spring的理解 1.Spring是实现了工厂模式的工厂类(在这里有必要解释清楚什么是工厂模式),这个类名为BeanFactory(实际上是一个接口),在程序中通常BeanFactory的子类ApplicationContext。Spring相当于一个大的工厂类,在其配置文件中通过元素配置用于创建实例对象的类名和实例对象的属性。 2. Spring提供了对IOC良好支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦,IOC也称为D
2020-05-08 21:47:58
389
原创 优雅的参数校验
添加依赖如果使用的是Springboot就不需要手动添加依赖了。Springboot已经依赖了。<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId></dependency>参数检验的使...
2020-04-19 14:26:32
233
原创 Linux安装mongodb
下载mongodbhttps://www.mongodb.com/download-center/community安装mongodbtar -zxvf mongodb-linux-x86_64-4.0.17.tgz mv mongodb-linux-x86_64-4.0.17 mongodbcd mongodbmkdir datamkdir logstouch log# 创...
2020-04-12 22:21:26
130
原创 Redis缓存的雪崩、穿透、击穿
缓存雪崩-产生原因我们都知道Redis不可能把所有的数据都缓存起来,所以Redis需要对数据设置过期时间,并采用的是惰性删除(放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,那就返回该键)+定期删除两种策略对过期键删除。如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删光了。这就会导致在这段时间内,这些缓存同时失...
2020-04-12 16:57:22
182
原创 Redsi的持久化机制
RDB简介RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。两种触发方式手动触发save:该命令会阻塞redis,在sava期间,不能执行其他命令,直到持久化完成。bgsave:该命令不会阻塞redis,在后台进行的。该触发方式会fork一个子进程,由子进程负责持久化,因此阻...
2020-04-12 16:43:18
558
原创 Redis的主从复制和哨兵模式
搭建主从复制简介主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,mester以写为主,slaver以读为主。原则上是配从不配主。搭建主从复制新建三个文件夹:redis8000、redis8001、redis8002将redis.conf复制到redis8000配置redis.conf 1.bind 192.168.100.110 ...
2020-04-12 15:56:07
199
原创 SpringBoot+Redis
Jedis和LettuceSpringboot2.x之后连接Redis默认使用的是Lettuce,2.x之前默认使用的是Jedis。JedisJedis在实现上是直接连接的Redis Server,如果在多线程环境下是非线程安全的。每个线程都去拿自己的 Jedis 实例,当连接数量增多时,资源消耗阶梯式增大,连接成本就较高了。需要使用连接池,为每个Jedis实例增加物理连接。Let...
2020-04-12 13:35:36
150
原创 Redis基础入门
简介完全开源免费的,用C语言编写的,是一个高性能的(key/value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库。优势性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。原子 – R...
2020-04-11 18:49:15
117
原创 多线程:Join的理解
多线程Join的理解 开发中使用多线程也非常少,之前因为有一个调取两个摄像头获取每帧进行活体检测时候,有人给了思路说到Join这个关键字,我才仔细的研究了一下这个。以前理解的意思是:使用join关键字,就是相当于调用join的线程如果没有执行完毕,其他线程都处于等待状态。这就相当是把线程串起来了一样。看了很多的博客,后面理解的是:那个线程等待挂起,取决与在那个线程上面调用XX.join,并不...
2020-04-11 15:16:29
263
原创 RabbitMq死信队列
死信队列的作用死信交换机有什么用呢? 在创建队列的时候 可以给这个队列附带一个交换机, 那么这个队列作废的消息就会被重新发到附带的交换机,然后让这个交换机重新路由这条消息。死信消息产生的来源消息被拒绝(basic.reject或basic.nack)并且requeue=false消息TTL过期队列达到最大长度(队列满了,无法再添加数据到mq中)死信队列处理的方式丢弃,如果不是很...
2020-04-10 15:51:43
2043
原创 SpringBoot+RabbitMq
代码整合maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </depen...
2020-04-10 15:29:22
239
原创 kafka的一些概念
基本概念Broker :和AMQP里协议的概念一样, 就是消息中间件所在的服务器Topic(主题) :每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据而不必关心数据存于何处)Partition(分区) :Partitio...
2020-04-10 10:59:15
252
原创 RabbitMQ学习(二):RabbitMQ的基本概念
RabbitMQ相关概念RabbitMQ是一个Erlang开发的AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的开源实现。是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在。主要特征可靠性:持久化、传输确认、发布确认等机制来保证可靠性。扩展性:支持动态扩展集群中的节...
2020-04-09 07:56:54
224
原创 RabbitMQ学习(一):RabbitMQ的安装
一、安装软件准备RabbitMq下载地址Erlang下载地址RabbitMq和Erlang版本关联地址二、windows环境下的安装安装Erlang安装RabbitMQ启动Rabbitmq点击输入命令:rabbitmq-plugins enable rabbitmq_management在浏览器中输入地址查看:http://127.0.0.1:156...
2020-04-09 07:56:47
208
原创 kafka集群搭建
一、kafka优点高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。可扩展性:kafka集群支持热扩展持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)高...
2020-04-09 07:56:40
141
原创 kafka-node的学习使用
kafka-node地址:下面代码只是消费信息的const kafka = require("kafka-node");const Client = kafka.KafkaClient;const Offset = kafka.Offset;const Consumer = kafka.Consumer;function toKafka() { const client = ne...
2020-04-09 07:56:34
1739
原创 kafka的安装和简单使用
一 下载kafka下载地址:记住 千万不能下载源码,下载编译过的二 安装kafka将kafka上传到 Linux里面并解压,kafka需要JDK的环境。解压kafkatar -zxvf kafka_2.12-2.2.0.tgz重命名mv kafka_2.12-2.2.0 kafka配置config下面的server.properties文件broker.id=1 改...
2020-04-09 07:56:28
253
原创 SpringCloud学习第七篇:Config学习(Greenwich-SR1版本)
一、Config简介在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。市面上开源的配置中心有很多。如:360的QConf、淘宝的diamond、百度的disconf都是解决这类问题。国外也有很多开源的配置中心Apache的Apache Commons Configuration、owner、cfg4j等等。在Spring Cloud中,有分布式...
2020-04-09 07:56:15
309
原创 SpringCloud学习第六篇:Zuul学习(Hoxton.SR4)
一、什么是ZuulZuul作为微服务系统的网关组件。所有从设备或网站来的请求都会经过Zuul到达后端,用于构建边界服务,致力于动态路由、过滤、监控、弹性伸缩和安全。Zuul底层利用各种filter来实现如:认证和安全、性能检测、动态路由、压力测试、负载均衡、静态资源处理。二、Zuul和Nginx的区别相同点Zuul和Nginx都可以实现负载均衡、反向代理(隐藏真实ip地址),过滤请求,实...
2020-04-09 07:56:01
233
原创 SpringCloud学习第五篇:Hystrix熔断器(Hoxton.SR4)
一、Feign是什么?Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单,它的使用方法就是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可插拔式的编码器和解码器。SpringCloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters,并整合了R...
2020-04-09 07:55:52
314
原创 SpringCloud学习第四篇:Feign学习(Hoxton.SR4)
一、Hystrix介绍Hystrix是一个延迟容错库。在分布式环境中,许多服务依赖项中的一些不可避免地会失败。如果这时候有大量的请求请求这个故障的服务,由于服务之间的依赖关系,故障会进行蔓延,这时候会导致调用服务自身也出现不可用的情况,使用Hystrix可以解决这个问题。当某个服务发生故障(类似用电器发生短路)之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个错误响应,而不是长时间的...
2020-04-09 07:55:45
1103
原创 SpringCloud学习第三篇:Ribbon负载均衡(Hoxton.SR4)
一、负载均衡是什么?在以前,项目访问量非常大的时候,往往一台服务器无法承载这么大的压力。一般采用的是服务器集群来缓解服务器压力。但是多个服务器又这么连接那?这时候就可以通过负载均衡来实现。负载均衡:就是通过一个代理服务器,代理服务器在通过算法来访问服务器集群中的一台服务器。最初我们实现负载均衡的方式是使用Nginx,但是SpringCloud组件中提供了SpringCloud Netflix R...
2020-04-09 07:55:32
667
原创 SpringCloud学习第二篇:使用Consul注册中心(Greenwich-SR1版本)
一、Consul的安装与配置https://www.cnblogs.com/yangk1996/p/10742911.html二、服务的注册引入Maven依赖 <parent> <groupId>com.yk</groupId> <artifactId>cloud-parent</artifactId...
2020-04-09 07:55:25
186
原创 SpringCloud学习第一篇:服务的注册与发现Eureka(Hoxton.SR4)
一、Eureka服务端引入maven依赖<parent> <groupId>com.yk</groupId> <artifactId>cloud-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <...
2020-04-09 07:55:18
624
原创 SpringBoot+Mycat+APO实现读写分离
Mycat环境搭建Mycat下载地址Mycat文档接着前面已经搭建好的Mysql主从复制开始# 解压tar -zxvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz#启动./bin/mycat start#关闭./bin/mycat stop#启动日志tail -f logs/wrapper.log#运行日...
2020-04-08 22:30:45
261
原创 SpringBoot+activeMq
整合SpringBootMaven<!--消息队列连接池--> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> ...
2020-04-08 22:28:32
164
原创 docker基础学习三
一、Dockerfile学习由一系列的参数和命令构成的脚本。这些命令应用于基础镜像并最终创建一个新的镜像。基础镜像就是操作系统级别的镜像。常用命令FROM image_name:tag定义了使用哪个基础镜像启动构建流程MAINTAINER user_name声明镜像的创建者ENV key value设置环境变量 (可以写多条)RUN command是...
2020-04-08 08:24:41
286
原创 docker基础学习二
一 部署Mysql搜索镜像docker search mysql拉取镜像docker pull centos/mysql-57-centos7创建Mysql 容器docker run -di --name=docker_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos733306是宿主...
2020-04-08 08:18:52
114
原创 docker基础学习一
一 docker是什么?docker是目前比较火的容器引擎,开发者可以打包应用以及依赖到可移植的容器中,然后发布到任何流行的Linux容器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口。二 安装dockeryum包更新到最新sudo yum update安装需要的软件包 yum-util提供yum-config-manager功能 ,另外两个是devicemapp...
2020-04-08 08:16:53
157
原创 ELK简单学习
ELK下载https://www.elastic.co/cn/downloads/Elasticsearch搭建Elasticsearch集群Logstash搭建因为没有真实的环境的,我就手动上传了两个log日志文件做测试使用在Logstash/config下面新增一个配置文件config-log-1.confinput { # 从文件读取日志信息 输送到控制台 f...
2020-04-08 08:13:39
129
原创 Elasticsearch入门学习(四):使用javaAPI学习ES
一、Maven依赖 <!--刚开始少这个包创建索引失败 Validation Failed: 1: type is missing; 官方文档并没有给这个提示--> <dependency> <groupId>org.elasticsearch</groupId> <artifactId...
2020-04-08 08:12:59
434
原创 Elasticsearch入门学习(三):集群的搭建
一、集群的一些概念集群一个集群cluster由一个或者多个节点组成,具有相同的cluster.name,协同工作,分项数据和负载。当有新的节点加入或者删除了一个节点时,集群回感知到并能够平衡数据。ElasticSearch中可以监控很多信息,有一个最重要的就是集群健康。集群健康有三个状态:green(所有主要分片和复制分片都可用),yellow(所有主要分片可用,但不是所有复制分片都可用),r...
2020-04-08 08:11:46
238
原创 Elasticsearch入门学习(二):简单的入门学习
一、ES一些概念索引_inde,文档存储的地方,类似于关系型数据中的数据库。事实上,数据被存储和索引在分片中,索引仅仅是一个把一个或者多个分片分组在一起的逻辑空间。 索引名字必须是全部小写,不允许以下划线开头,不能包含逗号。文档文档id是一个字符串,与_index组合时,就可以在ElasticSearch中唯一标识一个文档。创建文档时,可以自定义_id,也可以让ES帮助自动生成。二、使...
2020-04-08 08:10:48
156
原创 Elasticsearch入门学习(一):安装ES7.0.1
一、Elasticsearch介绍之前有学习使用过Solr。Elasticsearch也是基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Ja...
2020-04-08 08:08:07
896
原创 Lucene7-4学习和简单使用
简述前面从新回顾学习了Solr,正好也借此机会顺便学习一下Lucene。一、什么是Lucene?全文检索的一个实现方式,也是非结构化数据查询的方法。应用场景:在数据量大,数据结构不固定的时候,采用Lucene,比如百度、Google等搜索引擎,网站的站内搜索,电商平台的商品检索等。二、Lucene实现全文检索的流程原始文档原始文档是指要索引和搜索的内容。原始内容包括互联网上的网页、...
2020-04-08 08:07:06
288
原创 Solr7-4的学习与使用
学习的原因:17年的时候有学习使用过lucene和solr,但是后来也遗忘了,最近公司有个项目需要使用到全文检索,正好也顺便跟着学习一下,使用的版本是Solr7.4的,solr解压之后的目录结构:各文件夹里面的内容:solr从5版本之后不再需要tomcat,使用内置的jetty启动。下面开始正式开始学习使用Solr:启动solr因为现在solr使用的内置服务器,我们只需要通过...
2020-04-08 08:04:22
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人