将博客搬家到以下地址,欢迎访问。
1. 同源策略☐ 两个url是否同源,取决于三个方面:协议 + 域名 + 端口 都相同的url,就算做同源的。☐ 如果两个url不同源,则不会相互访问对方的资源。☐ 浏览器是遵守同源策略。(postman,apipost测试工具不用遵守同源策略)2. Access-Control-Allow-Origin☐ Access-Control-Allow-Origin响应头,用于指定哪个外域url可以访
1. Spring元数据Metadata元数据:描述数据的数据。Spring中元数据相关的类,其类结构图大致如下:1.1 ClassMetadataClass代表一个类,ClassMetadata就是一个类的元数据,也就是说,ClassMetadata是用来描述一个类的方方面面的信息的。有一个Person类,如下,注意在Person类上添加@ComponentScan注解仅仅是为了测试,并不是为了
1. Webpack集成Bootstrap1.1 下载bootstrap3npm i bootstrap3 -S1.2 在index.js中引入bootstrap3import $ from 'jquery'import 'bootstrap3/dist/css/bootstrap.min.css'$(function() {});1.3 在index.html中使用bootstrap3中的样式&
1. SpringBoot集成Swagger以前,是由后端渲染页面的。现在,前后端的需求越来高,前端需要灵活、炫丽的页面。后端对高并发、高可用、高性能的要求也越来越苛刻。所以前后端自然分道扬镳,各自专注于自己的领域,精益求精!在这样的前后端分离的形态之下,已经变为完全由前端渲染页面了,前端和后端唯一的联系,就是api接口的对接了。api文档变成了前后端开发人员联系的纽带。1.1 API文档下面我们
1. SpringBoot Web配置作为springboot web环境的配置类,必须要实现WebMvcConfigurer接口,且必须将@Configuration注解添加到类配置类上1.1 配置拦截器创建拦截器@Componentpublic class MyInterceptor implements HandlerInterceptor { @Override public boolea
1. SpringBoot简介1.1 SpringBoot是什么SpringBoot不是什么新的框架,它仅仅对众多框架做好了默认的配置。 SpringBoot可以简化配置。1.2 SpringBoot主要特性a. 可以创建独立的spring应用(spring-boot-starter-web依赖中有内置的tomcat)b. 提供“starter”依赖以简化应用的依赖配置c. 自动配置d. 不需要x
在分布式中使用Spring Security@Componentpublic class MySecurityMetadataSource implements FilterInvocationSecurityMetadataSource { @Autowired private RedisTemplate redisTemplate; @Override public Collection<
1. 密码加密实际项目中我们不会在数据库中存放明文密码。SpringSecurity框架中使用的PasswordEncoder要求数据库中的密码格式为:{id}password 。它会根据id得知密码的加密方式。而我们一般不会采用这种方式。所以就将PasswordEncoder替换为BCryptPasswordEncoder。只要把BCryptPasswordEncoder对象存入IOC容器中,S
1. 通过数据库进行认证和授权1.1 准备工作之前进行认证操作时,总是拿着用户提交的账户密码与内存中存放的账户密码比较,我们可以将认证的流程设计为如下图所示的过程:接下来,我们将通过数据库进行认证,如下图所示,其中蓝色部分就是要改造的部分,也就是让用户提供自定义的UserDetailsService实现类,以代替原本的InMemoryUserDetailsManager:pom.xml<pa
1. 认证和授权☐ 认证(Authentication):通过认证,可以进入系统,并且获得身份。☐ 授权(Authorization):拿着认证通过之后的身份,进一步可以获取对应的角色和权限。并进行授权:who 对 what 可以进行 how 的操作2. 搭建web环境pom.xml<?xml version="1.0" encoding="UTF-8"?><project xm
1. 项目背景近几年来人口出生率、新生人口数量总体呈下滑态势,但由于人口基数较大,我国0-3岁婴幼儿群体数量依然处于较高水平。预计随着“三胎”政策的不断落实,婴幼儿群体数量将有所扩大。随着我国三胎政策的放开,中国小学生数量呈几何式增长。据不完全统计:中国拥有 3 亿适龄儿童,中等规模城市中3-6岁学前儿童有近3-5万人,7-12岁小学生约5-8万人,年人均业余教育支出约为3000元,其中90%以上
1、前往Gitee下载页面(https://gitee.com/y_project/RuoYi-Cloud下载解压到工作目录2、导入idea,等待依赖下载完毕3、创建数据库ry-cloud并导入数据脚本ry_2023xxxx.sql(必须),quartz.sql(可选) 4、创建数据库ry-config并导入数据脚本ry_config_2023xxxx.sql(必须)5、配置nacos持久化,修改
1. 链路追踪介绍在分布式系统中,一个系统被拆分成了许多模块。这些模块负责不同的功能,组合成系统,最终可以提供丰富的功能。在这种架构中,一次请求往往需要涉及到多个微服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发,可能使用不同的编程语言来实现,有可能分布在几千台服务器上,横跨多个不同的数据中心。这意味着一些问题:如果某个请求发生了问题,比如失败、耗时太久等等如何快速
1 分布式事务 在学习分布式事务之前,务必要知道,分布式事务不可能100%完美解决问题!只能尽量提高成功概率!让这个成功概率尽量接近99.999%,为了达到这个目的,甚至加入人工。 1.1 问题star-product,IProductService,添加deductStock方法public interface IProductService { Product findByPid(Intege
6 配置中心 6.1 配置中心介绍微服务架构下,关于配置文件的问题:配置文件相对分散。在一个微服务架构下,配置文件会随着微服务数量的增加而增加,且众多的配置文件是分散在各个独立的微服务中的,这样不好管理。配置文件无法区分环境。微服务项目可能会有多个环境,如:测试环境、开发环境、生产环境。每一个环境所使用的配置理论上都是不同的,一旦需要修改,就需要我们手动地在各个微服务中进行配置,维护起来很困难。配
5 微服务认证理论5.1 JWT5.1.1 JWT是什么 JWT的全称是JSON Web Token,也就是说,JWT是一种(自包含的)令牌技术。提到令牌,无非就是在令牌有效的时候,可以达到一些目的。一旦令牌失效,则无法达到目的。5.1.2 JWT的结构JSON Web Token由三部分组成,它们之间用圆点(.)连接。这三部分分别是:Header Payload Signature因此,一个典型
4 服务网关我们已经知道,在微服务架构中,有很多个微服务,每个微服务都有不同的url地址,那么作为客户端(前端应用)要如何去调用这么多的微服务呢?看起来就像这样:在这样的情况之下,是有很多问题的,如下:用户请求不同的微服务时,必须记住每一个不同的微服务的url认证复杂,每个服务都需要独立的认证机制存在跨域请求的问题,处理起来比较复杂以上的问题,可以使用API网关来解决。所谓的网关,就是系统的统一入
2. 服务治理介绍2.1 目前的问题经过第一章的学习,我们已经可以实现微服务之间的调用了。但是我们把服务提供者的ip地址和端口硬编码到了服务消费者中。这种做法有这样几个问题:☐ 如果服务提供者地址发生变化,就需要手工修改服务消费者的代码。☐ 如果服务提供者进行横向扩展,这种硬编码的方式要实现负载均衡的功能,将会很麻烦。☐ 如果服务提供者的集群中的某个节点不可用了,这种硬编码的方式不能动态地将不可用
1. 欢迎迈入云世界1.1 什么是微服务微服务的概念逐步形成之前,绝大部分基于Web的应用都是使用单体架构的风格来进行构建的。在单体架构中,应用程序作为单个可部署的软件制品交付,所有的UI、业务、数据库访问逻辑都被打包在一个应用程序制品中并部署在一个应用程序服务器上。例如,有一个客户关系管理(CRM)应用,它涉及多个团队之间的合作,包括UI团队、客户主团队、数据仓库团队以及共同基金团队。下图展示了
redis主从复制当今互联网的“三高”架构:高并发、高性能、高可用。 可用性计算公式:可用性=1年内服务器的可用时间/1年的总时间 业界的目标就是保证服务的高可用,即可用性能达到99.999%。 单机redis的问题单机redis的问题很明显,如果当前的redis服务宕机了,则系统的整个缓存系统瘫痪,导致灾难性的后果。另外单机redis也有内存容量瓶颈。redis主从复制一个master可以有多个
redis持久化所谓持久化,就是将数据保存到永久性存储介质上,在特定的时间将保存的数据进行恢复的机制。为什么要进行持久化因为Redis把数据是存放在内存中的,一旦断电,内存中的数据就会丢失,为了防止数据的意外丢失,保证数据是安全的,才需要持久化!证明redis持久化的存在 redis为了追求高效的读写速度,默认情况下所有的增删改,都是在内存中进行的,断电以后redis的数据会丢失,丢失的数据是保存
redis删除策略:当一个key设置了过期时间,且该key也确实过期了,该key是不是就立即被删除了呢?不一定,到底何时被删除,取决于redis的删除策略!删除策略是针对于那些已经到期,并且还占用内存的key的清理。1. 定时删除,创建一个定时器,当key设置有过期时间,且过期时间到达时,由定时器任务立即删除该key。优点:节约内存缺点:CPU压力很大,无论CPU此时负载有多大,只要key到期就要
Redis基础数据类型Redis存放的是key-value形式的数据,其中key总是string类型,而value则分为5种类型,如下:☐ string☐ hash☐ list☐ set☐ zsetRedis通用命令通用命令适用于所有redis类型, 其实通用命令,是专门操作key的。# 心跳命令ping# 查看数据库中的key-value数量dbsize# 切换数据库select 2# 移动键值
关系型数据库的短板关系型数据库是以二维表的形式存放数据。且数据之间是有关系的(外键)。class_idclass_nameclass_room1火箭班1教室2蜗牛班2教室student_idstudent_namestudent_genderclass_id(外键)1郭靖男12黄蓉女13陈玄风男24梅超风女2SQL就是专门用来操作关系型数据库的标准。关系型数据库被认为是用于构建应用程序最常见的数据
1. RabbitMQ事务如何知道生产者投递的消息是否成功抵达RabbitMQ Broker呢?RabbitMQ提供了两种方式来确认☐ 事务机制☐ 发布者确认机制RabbitMQ客户端中与事务机制相关的方法有三个:☐ channel.txSelect:用于将当前的信道设置成事务模式(也可以理解为开启事务)☐ channel.txCommit:用于提交事务☐ channel.txRollback:用
1. 信道和连接 无论是生产者还是消费者都是RabbitMQ的客户端,都需要和RabbitMQ Broker建立连接,这个连接就是一个TCP连接(Connection)。一旦TCP连接被建立起来,客户端紧接着会在Connection之上创建一个信道(Channel),之后RabbitMQ处理的每个步骤都是通过信道来完成的。问题是,有了Connection,为什么还要引入Channel呢?原因如下:
1. MQ介绍1.1 MQ是什么MQ(Message Queue),消息队列。是进程级别的 生产者 和 消费者 模型。 1.2 MQ的作用异步处理(异步通信)应用解耦(平台无关)流量削峰(秒杀,主要作用)日志处理给客户端快速响应1.3 MQ使用场景在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的响应时间,从而提高了系统的吞吐量。比如这样的场
1. Nginx.conf配置文件先备份一下nginx.conf配置文件cp nginx.conf nginx.conf.bakNginx配置文件语法规则:a. Nginx的配置文件由指令与指令块构成b. 每条指令以“;”结尾,指令与参数之间以空格分隔c. 指令块以"{ }"将多条指令组织在一起d. 使用#来添加注释user nginx;worker_processes auto;error_lo
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号