07 2020 档案
摘要:常见的分布式解决方案 1、两阶段提交协议(2PC) 解决分布式系统的数据一致性问题出现了两阶段提交协议(2 Phase Commitment Protocol), 两阶段提交由协调者和参与者组成,共经过两个阶段和三个操作,部分关系数据库如Oracle、MySQL支持两阶段提交协议。 说到2pc就不得
阅读全文
摘要:转载:https://www.cnblogs.com/qdhxhz/p/9594521.html 一、什么是路由网关 网关是系统的唯一对外的入口,介于客户端和服务器端之间的中间层,处理非业务功能 提供路由请求、鉴权、监控、缓存、限流等功能。 它将"1对N"问题转换成了"1对1”问题。 通过服务路由的
阅读全文
摘要:微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小, 因此系统中会出现大量的服务,由于每个服务都需要必要的配置信息才能运行, 所以一套集中式的、动态的配置管理是必不可少的。Spring Cloud 提供了 ConfigServer 来解决这个问题。 Spring Cloud
阅读全文
摘要:1、简单数据类型的参数采用的restFull的方式,发送Get请求 服务提供方的controller: //类名加了窄化请求:@RequestMapping(path = "house",produces = "application/json;charset=utf-8")@GetMapping(
阅读全文
摘要:Hystrix实现服务降级 实现服务降级的条件:1、线程池已满 2、超时 一、使用@HystrixCommand(fallbackMethod = "备选方法名")在服务使用方添加 备选方法写在Controller类中, 违背了类单一原则, 不推荐 1、导入Hystrix依赖 <!-- hystri
阅读全文
摘要:什么是缓存穿透? 发生场景 缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。 发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。 这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存
阅读全文
摘要:使用Spring Cloud 中的 Ribbon 和 Feign 实现负载均衡机制。但是有个问题需要注意下: 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又在调用其他的微服务,这就是所谓的“扇出”。 如果扇出的链路上某个微服务的调用响应时间过长或者不可用,那么对微
阅读全文
摘要:在微服务体系中,后端微服务经常会存在多个项目,但这些项目中往往会有很多公共的配置和工具等, 这时候我们就需要一个common项目同时为多个后端项目服务,这样可以减少许多重复代码和重复配置后端项目的时间。 1、新建SpringBoot jar项目,取名为commons 2、将公共的类、依赖、配置存放于
阅读全文
摘要:Feign:假装、伪装的意思 Feign可以把HTTP 的请求进行隐藏,伪装成类似 SpringMVC 的 Controller一样。你不用再自己拼接 url,拼接参数等等操作,一切都交给 Feign 去做。 提供一个接口, 封装服务提供方的服务接口(url),便于Controller的调用, 谁需
阅读全文
摘要:Spring Cloud Ribbon是一个基于Http和TCP的客户端负载均衡工具 ,Ribbon主要 解决集群服务中,多个服务高效率访问的问题。 负载均衡在系统架构中是一个非常重要,并且是不得不去实施的内容。因为负载均衡是对系统的高可用、网络压力的缓解和处理能力扩容的重要手段之一。 目标 理解R
阅读全文
摘要:我们之前搭建的是一个简单的注册中心,而且这个注册中心是一个单点的,那么我们的系统就会存在一个风险, 一旦我们这个注册中心故障了,则整个服务都不可用,那我们可以对注册中心进行集群部署, 这样我们不会担心因为某一台注册中心出现故障,而影响到整个服务.也就实现了注册中心的高可用。 分布式和集群这两个概念:
阅读全文
摘要:一、首页显示的微服务名 Eureka 首页显示的微服务名默认为:机器主机名:应用名称:应用端口,也就是: ${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id}:${se
阅读全文
摘要:一、创建一个maven的pom的父包继承SpringBoot-parent 子项目--继承-->父项目 --> 继承 -->springBoot-parent 1、添加相关依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=
阅读全文
摘要:SpringCloud的版本名 官网中会看到如下的版本名:Dalston、Edgware、Finchley、Greenwich、Hoxton. 开发代号看似没有什么规律,但实际上首字母是有顺序的,比如:Dalston版本,我们可以简称 D 版本, 对应的 Edgware 版本我们可以简称 E 版本。
阅读全文
摘要:SpringCloud介绍 Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发, 如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot 的开发风格做到一键启动和部署。 Spr
阅读全文
摘要:微服务的定义 微服务的流行,离不开Martin Fowler,他的博客(https://www.martinfowler.com/articles/microservices.html), 对微服务进行的概括,如果英文不行,可以查看翻译版(http://blog.cuicc.com/blog/201
阅读全文
摘要:转载:https://blog.csdn.net/weixin_42236404/article/details/90758737 由于Springboot使用的是内置的tomcat,因此我们需要创建如下一个配置类,继承WebMvcConfigurer,重写其方法 addResourceHandle
阅读全文
摘要:1、导入相关依赖 (PageHelper自带了mybatis、mybatis-spring,不排除会报错) <!-- pagehelper分页插件依赖 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>page
阅读全文
摘要:1、导入相关依赖 <!--使用PageHelper分页插件--> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.0</version> </
阅读全文
摘要:设置一个结束时间,到规定的endTime之后自动结束,所以就需要我在项目中设定定时任务,在规定时间获取到到期的任务并将它们的状态设定为结束. 定时任务的几种实现方式 1、Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务, 使用这种方式可以
阅读全文
摘要:SpringBoot整合redis 1、导入依赖, redis相关依赖 <!-- 配置使用redis启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-dat
阅读全文
摘要:1、加载依赖: MybatisPlus的依赖 (将mybatis、mybatis-spring的依赖去除) <!-- mybatisPlus的相关依赖, 不需要加载 mybatis-spring-boot-starter --> <dependency> <groupId>com.baomidou<
阅读全文
摘要:1、 导入mybatis相关依赖 <!-- spring-boot mabatis依赖 不要使用1.0.0版本,因为1.0.0版本还不支持拦截器插件 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>myb
阅读全文
摘要:SpringBoot 声明式事务管理, 提供两个注解: @EnableTransactionManagement: 表示是否开启事务管理,( 默认开启事务管理, 不加) @Transactional: 表示某个方法是否进行事务管理,加在业务层的方法上, 这个方法出现异常(默认情况: 运行时异常进行回
阅读全文
摘要:Spring提供了spring-jdbc: 对jdbc的轻量级的封装, 提供一个一个JdbcTemplate类操作数据 1、导入jdbc启动器 starter <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s
阅读全文
摘要:1、要求打包方式一定为war包 2、要求jsp页面放在webapp目录下, war才有, jar 没有 3、导入jsp相关的依赖 <!-- jsp相关的依赖: jstl, jsp, tomcat --> <dependency> <groupId>jstl</groupId> <artifactId
阅读全文
摘要:过滤器是拦截所有请求 拦截器是拦截在进入到前端控制器之后的请求 过滤器 第一种方式: 利用Servlet3.0的WebFilter注解配置(推荐) @WebFilter是Servlet3.0新增加的注解,在servlet3.0之前,我们需要在web.xml文件中进行过滤器的配置, 而现在可以通过此注
阅读全文
摘要:SpringBoot默认使用的 commons-logging 日志框架, 默认的日志输出级别: info 使用commons-logging 配置文件对日志的配置: //只需要在配置文件中更改默认值 //设置日志输出级别为debug Debug=true //日志文件名,比如:suke.log,或
阅读全文
摘要:thymeleaf官网:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#introducing-thymeleaf thymeleaf介绍 Thymeleaf是一个跟Velocity,FreeMarker类似的模板引擎,
阅读全文
摘要:互斥同步锁(悲观锁)、非互斥同步锁(乐观锁) 乐观锁 : 故名思意十分乐观,它总是认为不会出现问题,无论干什么不去上锁!如果出现了问题, 再次更新值测试 悲观锁:故名思意十分悲观,它总是认为总是出现问题,无论干什么都会上锁!再去操作! 问题:悲观锁有哪些劣势? 1、阻塞、唤醒性能劣势 2、永久阻塞(
阅读全文
摘要:转载:https://blog.csdn.net/xielong0509/article/details/83722153 .html()用为读取和修改元素的HTML标签 对应js中的innerHTML。html()方法使用在多个元素上时,只读取第一个元素。 浏览器会识别插入进去的标签 .text(
阅读全文
摘要:转载:https://blog.csdn.net/zhuwentao2150/article/details/51713565 数组转换成list集合(推荐asList()) 方法一:通过add把数组中的数据循环添加到List集合中 List<String> mlist = new ArrayLis
阅读全文
摘要:dao、pojo、service、controller都给我自己去编写完成! AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、 Mapper、Mapper XML、Service、Controller 等各个模块的
阅读全文
摘要:Users.java实体类 @Data @AllArgsConstructor @NoArgsConstructor //对应数据库表中的自增系列名 @KeySequence(value = "seqhouse" ) public class Users implements Serializabl
阅读全文
摘要:我们写一些复杂的sql就可以使用它来替代! 1、测试一: 查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12 @Test void contextLoads() { // 查询name不为空的用户,并且邮箱不为空的用户,年龄大于等于12 QueryWrapper<User> wrapp
阅读全文
摘要:官网:https://mp.baomidou.com/ MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 1、加载依赖 <!--mybatisPlus --> <dependency> <groupId
阅读全文
摘要:项目开发中的dev、test、prod是什么意思 开发环境(dev):开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告。 测试环境(test):一般是克隆一份生产环境的配置,一个程序在测试环境工作不正常,那么肯定不能把它发布到生产机上。 生产环境(pr
阅读全文
摘要:1、热部署 修改完代码,想让SpringBoot自动加载我们修改的内容(pom.xml添加依赖) <!-- spring-boot的开发工具,可以在修改代码时,不需要手动重启服务器 --> <dependency> <groupId>org.springframework.boot</groupId
阅读全文
摘要:SpringBoot启动类: @SpringBootApplication public class SpringBootDemo1Application { public static void main(String[] args) { SpringApplication.run(SpringB
阅读全文
摘要:Spring-tool-suite的下载:https://spring.io/tools SpringBoot简介 SpringBoot是整个Spring技术栈的整合,来简化Spring应用开发,约定大于配置,去繁从简,just run 就能创建一个独立的,产品级别的应用。 解决: "Spring全
阅读全文
摘要:确保手机号正确,利用短信网关接口发送验证码,判断验证码一致 步骤: 1、导入HttpClient的依赖:httpclient4.5.5.jar 2、reg页面的js(判断手机号是否为空,手机号的正确性,ajax发送phone的value异步请求,返回json是否符合) 3、controller层编写
阅读全文
摘要:centos7的mini版没有wget命令, 我们可以使用yum在线安装,普通版可以正常使用wget命令 1、下载在线安装的wget命令 yum -y install wget 2、安装nginx 创建一个nginx的文件夹: [root@localhost ~]# mkdir /usr/nginx
阅读全文
摘要:1、 下载tomcat的linux安装包 https://tomcat.apache.org/download-70.cgi 2、在usr目录下创建一个tomcat文件夹 [root@localhost ~]# mkdir /usr/tomcat [root@localhost ~]# cd /us
阅读全文
摘要:安装JDK 1、使用SecureCRT连接上远程linux服务器 SecureCRT的下载(https://blog.csdn.net/qq_39052513/article/details/100272502) 2、下载jdk的linux版本 linux的jdb8:https://www.orac
阅读全文
摘要:Linux简介: Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。 Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能
阅读全文
摘要:终端输入显示情况: 管理员: [root@localhost ~]# 普通用户:[user@localhost ~]$ 语法: //root:表示当前登录的用户名 //@:等同于英文的”at”在 //Localhost:表示连接的是那一台linux服务器的IP地址,localhost表示本地 //~
阅读全文
摘要:在Spring的配置文件,有时候为了分模块的更加清晰的进行相关实体类的配置。 比如:现在有mybatis、tx事务、redis等 的配置 如果全放在applicationContext.xml中,会特别的长,不方便查看与修改 使用 import resource 标签 将每个模块的配置抽离: app
阅读全文