自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring八股文

Spring八股文

2023-03-12 17:51:09 3420 8

原创 SpringIOC

2.ApplicationContext创建Bean默认采用立即加载,ApplicationContext继承了BeanFactory。1.BeanFactory创建bean采用延迟加载形式,也就是说你需要getBean()才会加载。作用:使用构造方法的形式为bean提供资源,兼容早期遗留系统的升级工作。归属:property标签或constructor-arg标签。名称:array,list,set,map,props。名称:constructor-arg。作用:注入集合数据类型属性。

2023-02-27 23:09:13 237

原创 Sentine

Sentinel第1章 Sentinel概述1.1 Sentinel下载地址以及官方文档下载地址:https://github.com/alibaba/Sentinel/releases官方文档:https://github.com/alibaba/Sentinel1.2 Sentinel主要特征1.3 Sentinel的作用防止服务雪崩服务降级服务熔断服务限流1.4 Sentinel的两个部分核心库(Java客户端)不依赖任何框架/库,能够运行于Java所有运行时环境,

2020-10-29 11:20:21 350 1

原创 Nacos服务注册和配置中心

Nacos服务注册和配置中心###第1章 Nacos简介1.1 什么是Nacos?官方术语:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台个人理解:Nacos就是注册中心+配置中心的组合(Nacos=Eureka+Config+Bus)1.2 Nacos能干什么?替代Eureka做服务注册中心替代Config做服务配置中心1.3下载地址以及官方文档下载地址:https://github.com/alibaba/Nacos官方文档:https://nacos.io/zh

2020-10-28 15:51:09 508 1

原创 HBase简介

HBase简介HBase的三个特点大:一张表可以存储上亿行,上百万列面向列:面向列族的存储和权限控制,列族独立检索稀疏:对于为空的列,并不占用存储空间,表可以设计得非常稀疏逻辑结构逻辑上,HBase的数据同关系型数据库类似,数据存储在表中有行有列。但实际上HBase的底层物理存储结构是key-value的形式。列列是可以动态增加的竖向切割的每一个点叫做列族Row key行键(Row key)是有序的,是根据字典序来排序要求行键(Row key)唯一Region横

2020-10-12 21:56:45 598

原创 分布式事务

分布式事务解决方案在扣减库存和保存订单是在两个服务中存在的,如果扣减了库存,但是保存订单失败时,事务没有回滚,这样就造成了数据不一致的情况,这就是分布式事务的问题。事务事务拥有四个特征:原子型一个事务要么同时成功,要么同时失败一致性一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态持久性事务一旦提交了,就应该永久性的保存到数据库中隔离性隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每

2020-10-01 20:32:59 115

原创 Oauth2入门

Oauth2有以下授权模式:授权码模式(Authorization Code)隐式授权模式(Implicit)密码模式(Resource Owner Password Credentials)客户端模式(Client Credentials)其中授权码模式和密码模式应用较多授权码模式授权码授权流程:客户端请求第三方授权认证服务器生成用户授权协议,用户同意授权,认证服务器将协议唯一号(授权码)响应给客户端客户端获得授权码, 然后请求认证服务器申请令牌认证服务器生成令牌后向客户端响应

2020-09-20 17:28:16 1022 1

原创 RabbitMQ消息过期TTL

TTLTTL全称Time To Live(存活时间/过期时间),当背息到达存活时间后,还没有被裆费,会被自动清除。RabbitMQ可以对消息设置过期时间,也可以对整个队列(Queue)设置过期时间。队列统一过期设置 <!--ttl--> <rabbit:queue name="test_queue_ttl" id="test_queue_ttl"> <!--设置queue的参数--> <rabbit:queue-

2020-09-15 21:52:57 681

原创 RabbitMQ消费端限流

消费端限流Consumer 限流机制确保ack机制为手动确认。listener-container配置属性perfetch = 1000,表示消费端每次从mq拉取1000条消息来消费,直到手动确认消费完毕后,才会继续拉去下1000条消息。 <!--定义监听器容器--> <rabbit:listener-container connection-factory="connectionFactory" acknowledge="manual" prefet

2020-09-15 21:04:44 544

原创 docker上安装es、ik分词器、kibana

docker上安装es拉取镜像docker pull elasticsearch:7.6.2创建容器docker run -d -e ES_JAVA_POTS="-Xms512m -Xmx512m" --name c_es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2然后docker ps -a 查看启动成功没有,logs查看日志 等待一会 去浏览器访问一下9200docker上安

2020-09-15 20:46:11 162

原创 RabbitMQ消息的可靠性

消息可靠投递在使用RabbitMQ的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ为我们提供了两种方式用来控制消息的投递可靠性模式。confirm 确认模式return 退回模式rabbitmq整个消息投递的路径为:producer—>rabbitmq broker—> exchange—>queue—>consumer消息从producer 到exchange则会返回一个confirmCallback 。·消息从exchange–&g

2020-09-15 20:29:28 220

原创 lua缓存预热和缓存读取

缓存预热(将mysql数据查询出来存放到redis)实现思路:定义请求:用于查询数据库中的数据更新到redis中先链接mysql,按照广告分类ID读取广告列表,转换为json字符链接redis,将广告列表json字符串存入redis定义请求:请求: /ad_update参数: position ‐‐指定广告位置返回值: json在/root/lua目录下创建ad_load.lua ,实现连接mysql 查询数据 并存储到redis中.--代表当前要进行jso

2020-09-14 23:32:21 1252 1

原创 Docker上安装RabbitMQ

搜索镜像docker search rabbit拉取镜像docker pull rabbitmq:3-management创建容器docker run -i -p 5672:5672 -p 15672:15672 --name=c_rabbitmq rabbitmq:3-management

2020-09-14 23:23:44 85

原创 SpringBoot整合RabbitMQ

生产者步骤:创建Springboot工程导入依赖<dependency> <groupld>org.springframework.boot</groupld> <artifactld>spring-boot-starter-amqp</artifactld></dependency>编写yml配置spring: rabbitmq: host: 192.168.200.128 #

2020-09-14 23:19:24 134

原创 分布式ID生成解决方案

分布式ID生成解决方案为什么要生成分布式ID?答:如果一张表的数据过多,会影响性能,那么就会进行分表。但是分表会导致ID重复,那么以前的id就不能使用了,所以我们需要使用分布式生成IDUUID常见的方式。可以利用数据库也可以利用程序生成,一般来说全球唯一。优点:简单,代码方便生成ID性能非常好,基本不会有性能问题全球唯一,在遇见数据迁移,系统数据合并,或者数据库变更等情况下,可以从容应对缺点:没有排序,无法保证趋势递增UUID往往是使用字符串存储,查询的效率比较低存

2020-09-11 16:17:43 116

原创 微服务鉴权实现

微服务鉴权实现实现流程:用户进入网关进行登录,网关过滤器进行判断,如果是登录请求,则通过路由到后台管理微服务进行登录登录成功后,后台管理微服务签发JWT TOKEN信息返回给用户用户再次进入网关开发访问,网关过滤器接收用户携带的TOKEN网关过滤器解析TOKEN,判断是否有权限,如果有,则放行,没有则返回来签发JWT TOKEN信息返回给用户 @PostMapping("/login") public Result login(@RequestBody Ad

2020-09-11 14:53:09 824 1

原创 微服务鉴权

微服务鉴权一般微服务鉴权都是放在网关里JWT令牌JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递可靠的消息一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名头部(Header)头部用于描述关于该JWT的最基本信息,例如其类型以及签名所用的算法等。这也可以被表示成一个JSNO对象{"type":"JWT","alg":"HS256"}载荷(playload)载荷就是存放有效信息的地方定义一个pla

2020-09-11 11:31:15 1210

原创 加密与解密

Bcrypt密码加密在用户模块,平时我们都会对密码进行加密,然后存放到数据库中。在用户进行登录的时候,将其输入的密码进行加密然后与数据库中的密文进行比较,以验证用户密码是否正确。目前MD5和Bcrypt比较流行,相对来说Bcrypt比MD5更加的安全,因为其内部加入了盐的机制。包导入import org.springframework.security.crypto.bcrypt.BCrypt;作用:用于加密生成内容特点:生成的加密内容不可逆常用方法:genslat:生成盐

2020-09-10 23:14:52 478

原创 RabbitMQ工作模式

RabbitMQ工作模式Work queues工作队列模式Work Queues:与入门程序的简单模式相比,多了一个或一些消费端,多个消费端共同消费同一个队列的消息应用场景:对于任务过重或任务较多情况使用工作队列可以提高任务处理的速度在一个队列中如果有多个消费者,那么消费者之间对于同一个消息的关系是竞争的关系Pub/Sub订阅模式在订阅模式中,多了一个Exchange角色,而且过程略有变化:P:生产者,也就是要发送消息的程序,但是不在发送到队列中,而是发给X(交换机)

2020-09-09 21:03:58 278

原创 RabbitMQ介绍

RabbitMQ介绍AMQPRabbitMQ基于AMQP,即Advanced Message Queuing protocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。2006年,AMQP规范发布。类比HTTP。RabbitMQ简介2007年,Rabbit技术公司基于AMQP标准开发的RabbitMQ1.0发布。RabbitMQ采用Erlang语言开发。

2020-09-09 17:25:06 140

原创 MQ介绍

MQMQ概述RabbitMQ全称Message Queue(消息队列),是在消息的传输过程中保存消息的容器。多用于分布式系统之间进行通信。分布式系统通信分为两种方式:直接远程调用和借助第三方完成间接通信。发送方称为生产者,接收方称为消费者MQ的优势和劣势优势应用解耦(提升容错性和可维护性性)异步提速(提升用户体验和系统吞吐量)削峰填谷(提高系统稳定性)使用MQ之后,限制消费消息的速度为1000,这样一来,高峰期产生的数据势必会被挤压在MQ中,高峰就

2020-09-09 15:07:52 359

原创 Spring Cloud Config分布式配置中心

Spring Cloud Config分布式配置中心Config概述SpringCloud Config解决了在分布式场景下多环境配置文件的管理和维护使用SpringCloud Config的好处:集中管理配置文件不同环境不同配置,动态化的配置更新配置信息改变时,不需要重启即可更新配置信息到服务Config快速入门config server服务端搭建步骤:使用gitee创建远程仓库,上传配置文件搭建config server模块导入config-server依

2020-09-06 18:33:06 114

原创 Gateway网关

Gateway网关网关概述网关指在微服务架构提供一种简单而有效的统一的API路由管理方式。在微服务架构中,不同的微服务有不同的网络地址,各个微服务之间通过互相调用完成用户请求,客户端可能通过调用N个微服务的接口完成一个用户请求。存在问题:客户端多次请求不同的微服务,增加客户端的复杂性。认证复杂,每个服务都要进行认证。http请求不同服务次数增加,性能不高。网关就是系统的入口,封装了应用程序的内部结构,为客户提供统一服务,一些业务本身功能无关的公共逻辑可以在这里实现,诸如认证、

2020-09-06 16:16:06 284

原创 Hystrix熔断器

Hystrix熔断器Hystrix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败(雪崩)雪崩:一个服务失败,导致整条链路的服务都失败的情形Hystrix主要功能隔离线程池隔离信号量隔离降级:异常、超时熔断限流提供方降级Hystrix降级:当服务发生异常或调用超时,返回默认数据步骤:在服务提供方导入hystrix依赖 <!--hystrix-->

2020-09-06 11:39:56 179

原创 Feign声明式服务调用

Feign声明式服务调用Feign是一个声明式的REST客户端,它用了基于接口的注解方式,很方便实现客户端配置Feign最初由Netflix公司提供,但不支持SpringMVC注解,后由SpringCloud对其封装,支持了SpringMVC注解Feign快速入门步骤:在消费端引入open-feign依赖 <dependency> <groupId>org.springframework.cloud</groupId&g

2020-09-06 10:06:15 142

原创 Ribbon负载均衡

Ribbon负载均衡什么是Ribbon?Ribbon是Netflix提供的一个基于HTTP和TCP的客户端负载均衡工具导入Eureka依赖后无需再导入Ribbon的依赖Ribbon的主要两个功能简化远程调用负载均衡服务端负载均衡负载均衡算法在服务端由负载均衡维护服务地址列表客户端负载均衡负载均衡算法在客户端客户端维护服务地址列表简化RestTemplate远程调用步骤:在声明restTemplate的Bean时候,需要添加一个注解:@Lo

2020-09-03 17:08:30 86

原创 SpringBoot自动配置

SpringBoot自动配置ConditionCondition是在Spring4.0增加的条件判断功能,通过这个功能可以实现选择性的创建Bean操作。问题SpringBoot是如何知道创建哪个Bean的?比如SpringBoot是如何知道要创建RedisTemplate的?答案:SpringBoot会判断当前环境里有没有Redis里对应的字节码文件,实现Condition接口,然后重写matches方法,在matches方法中进行逻辑判断,返回一个boolean值,当bollean值为true时

2020-09-02 20:33:41 107

原创 Spring Cloud服务治理(Eureka)

Spring Cloud服务治理(Eureka)EurekaEureka是Netflix公司开源的一个服务注册与发现的组件(注册中心)Eureka和其他Netflix公司的服务组件(例如负载均衡、熔断器、网关等)一起,被SpringCloud社区整合为Spring-Cloud-NetFlix模块Eureka包含两个组件:Eureka Server(注册中心)和Eureka Client(服务提供者、服务消费者)Eureka-Server服务方搭建父工程导入依赖 &

2020-08-31 20:22:32 93

原创 Spring Cloud与Dubbo

Spring Cloud与Dubbo什么是微服务微服务就是将项目的各个模块拆分为可独立运行、部署、测试的架构设计风格。什么是Spring CloudSpring Cloud是一系列框架的有序集合,Spring公司将其他公司中微服务架构常用的组件集合起来,并使用SpringBoot简化开发、配置,称为Spring Cloud。Spring Cloud 与 Dubbo对比DubboSpring Cloud服务注册中心ZookeeperSpring Cloud Netflix

2020-08-29 19:53:24 75

原创 docker命令

docker命令服务相关命令启动docker:systemctl start docer停止docker:systemctl stop docker查看docker启动状态:systemctl status docker重启docker:systemctl restart docker设置开机自动启动docker:systemctl enable docker镜像相关命令查看镜像:docker images搜索镜像:docker search 镜像名称下载镜像(拉取):docke

2020-08-24 20:19:35 107

原创 Zookeeper常用操作

ZookeeperZookeeper命令操作Zookeeper服务端命令启动Zookeeper服务:./zkServer.sh start查看Zookeeper服务状态:./zkServer.sh status停止Zookeeper服务:./zkServer.sh stop重启Zookeeper服务:./zkServer.sh restartZookeeper客户端命令连接:./zkCli.sh -server localhost:2181 (./zk

2020-07-29 09:40:53 207

原创 Spring注解开发

Spring注解开发什么是注解驱动注解启动时使用注解的形式替代xml配置,将繁杂的Spring配置文件从工程中彻底消除掉,简化书写注解驱动的弊端为了达成注解驱动的目的,可能会将原先很简单的书写变得更加复杂XML中配置第三方开发的资源是很方便的,但使用注解驱动无法在第三方开发的资源中进行编辑,因此会增大开发工作量常用注解扫包,开启注解@ComponentScan(“com.spring”)定义bean@Component、@Controller、@Service、@Repo

2020-07-24 23:46:06 155

原创 Git

Git什么是Git?定义:是一个开源的分布式版本控制工具功能:代码备份版本控制团队开发代码追溯场景:团队协同开发项目原理:使用(15个命令):命令行命令作用git init初始化,创建git仓库git status查看git状态(文件是否进行了添加、提交)git add添加,将文件添加至暂存区git commit提交文件,将暂存区里的文件提交至远程仓库git log查看日志(git提交的历史

2020-07-24 20:28:48 90

原创 Spring-IOC

Spring的IOC配置什么是IOC?IOC(Inversion Of Control)控制翻转,Spring反向控制应用程序所需要使用的外部资源Bean名称:bean类型:标签归属:beans标签作用:定义spring中的资源,受此标签定义的资源将受到spring控制(就是把被定义的资源放入容器中)格式:<beans <bean> ... </bean></beans>基本属性: &

2020-07-23 22:56:02 95

原创 JavaScript进阶

面向对象万物皆对象,在JavaScript中同样也有面向对象,思想类似。####类的定义和使用定义格式class 类名{ constructor(变量列表){ 变量赋值; } 方法名(参数列表){ 方法体; return 返回值; }}使用格式let 对象名 = new 类名(实际变量值);对象名.方法名();字面量类定义和使用定义格式let 对象名={ 变量名:变量值, 变量名:变量值, ... 方法名:fun

2020-07-23 20:17:23 96

原创 SSM整合

SSM整合1.导入依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven

2020-07-23 19:44:14 126

原创 Spring注解开发和配置文件开发

SpringSpring的XML<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

2020-07-23 19:05:50 396

原创 MyBatis注解开发以及搭建SQL

MyBatis高级注解开发除了用映射配置文件来操作外,我们还可以通过注解的形式来操作常用注解:@Select(“查询的sql语句”):执行查询数据操作的注解@Insert(“新增的sql语句”):执行新增数据操作的注解@Update(“修改的sql语句”):执行修改数据操作的注解@Delete(“删除的sql语句”):执行删除数据操作的注解@Param:给映射器方法中的每个参数来取一个名字对比配置文件方式的不同sql编写的位置不同核心配置文件如何加载mapper的

2020-06-28 15:44:30 240

原创 JavaScript基础

JavaScript基础弹出窗口函数alert(“文本内容”);js引入方式外部文件引入<script src="../js/myjs.js"></script>直接四种输入输出语句prompt(“输入提示内容”)alert(“弹出窗口显示内容”)控制台打印: console.log(“具体内容”)F12打开调试界面选择Console窗口document.write(“内容”)js中变量的定义就是中定义变量无需进行变量类

2020-06-28 15:20:02 99

原创 Linux基础操作命令

ls(显示文件夹)ls -l(显示详细信息)ls -als -al(当前文件夹隐藏和非隐藏全部文件夹显示出来)d表示目录-表示文件带.表示为隐藏文件pwd(显示当前所在目录)cd目的地:相对路径:不是以/开始的路径就是相对路径./可以省略…/后退一个目录绝对路径:以/开始的路径就是绝对路径cd/(切换到根目录)cd home(切换到当前目录的home)cd -(回到上一次的目录)创建目录mkdir 目录名(创建单级目录)mkdir -p 目录名/目录名(创建多级目

2020-06-22 20:28:31 164

空空如也

空空如也

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

TA关注的人

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