【后端】
后端实战总结
Jing-Kathy
最大的敌人是自己
展开
-
JAVA中的协变和逆变
协变逆变的概念可变性是以一种类型安全的方式,将一个对象当做另一个对象来使用。如果不能将一个类型替换成为另一个类型,那么这个类型就称之为:不变量。协变:如果某个返回的类型可以由其派生类替换,那么这个类型就是支持协变的。逆变:如果某个参数类型可以由其基类替换,那么这个类就是支持逆变的。如Function, 在这里R 作为函数的返回值, 所以这个泛型要协变, 而T用在函数的参数上所以要用逆变Function<? super Dog,? extends Animal> f1;协变如:L原创 2020-12-27 21:18:04 · 2514 阅读 · 2 评论 -
一致性Hash
目的一致性Hash是一种特殊的Hash算法,解决了简单Hash算法在分布式Hash表中存在的动态伸缩问题。栗子redis做数据分布式存储(高并发,海量数据)方法演进1、Hash算法hash(节点属性name)=200200 % 3 = 2新增一个节点200 % 4 = 0问题:新增节点后,缓存失效,造成缓存雪崩。2、一致性Hash用hash的非负整数值范围做一个圆环对集群的节点的某个属性(比如节点名)求hash值,放在环上对数据key求hash值,也放在环上,按顺时针方向找到原创 2020-12-09 20:12:08 · 235 阅读 · 0 评论 -
IOC
IOC英文:Inverse of control控制翻转,又被称之为依赖注入,是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由Spring框架来管理。IOC在其他语言上也有应用,并非Spring特有。IOC容器是Spring用来实现IOC的载体,IOC容器实际上就是一个Map(key,value),Map中存放的是各种对象。将对象之间的相互依赖的关系交给IOC容器来管理,并由IOC容器完成对象的注入。我们完全不用考虑对象是如何被创建出来的,这样可以很大程度上简化应用的开发,把应用从复杂的依原创 2020-12-09 20:09:40 · 315 阅读 · 0 评论 -
你一定会了解的灰度发布
什么是灰度发布?在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。为了解决这些问题,人们研究出了多种发布策略,下面我们一一介绍蓝绿部署如图:所谓蓝绿部署,是指同时运行两个版本的应用,如上图所示,蓝绿部署的时候,并不停止掉老版本,而是直接部署一套新版本,等新版.原创 2020-07-23 19:50:57 · 286 阅读 · 0 评论 -
java 可变参数 T...
T…(T是某种类型,…可变,所有T…就是某有类型的可变参数的意思)常见数组操作 String[] values= new String[]{"jingyuejiao","caoxueliang"};可变数组操作 private static <T> T[] of(T...values){ return values; } String[] values1=of("jingyuejiao","caoxueliao","yuanr原创 2020-06-24 10:05:28 · 1808 阅读 · 0 评论 -
ZuulFilter过滤器
文章目录1、过滤器1.1 ZuulFilter1.2 过滤器执行生命周期1.3 使用场景2、自定义过滤器2.1 定义过滤器类2.2 测试Zuul作为网关的其中一个重要功能,就是实现请求的鉴权。而这个动作我们往往是通过Zuul提供的过滤器来实现的。1、过滤器1.1 ZuulFilterZuulFilter是过滤器的顶级父类。在这里我们看一下其中定义的4个最重要的方法:public ab...原创 2020-04-06 23:33:23 · 1968 阅读 · 0 评论 -
SpringCloud-Zuul网关实践
文章目录1 zuul网关1.1 新建工程1.2 编写配置1.3 编写引导类1.4 编写路由规则1.5 启动测试2. 面向服务的路由3 简化的路由配置4 默认的路由规则5 路由前缀1 zuul网关1.1 新建工程填写基本信息:添加Zuul依赖1.2 编写配置server: port: 10010 #服务端口spring: application: name: a...原创 2020-04-06 11:13:10 · 253 阅读 · 0 评论 -
SpringCloud-Zuul网关入门
文章目录Zuul的引入过程1. 未引入前2. 不足3. 问题解决Zuul简介Zuul加入后的架构Zuul的引入过程1. 未引入前通过前面的学习,使用Spring Cloud实现微服务的架构基本成型,大致是这样的:我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及均衡负载。为了使得服务...原创 2020-04-05 16:39:46 · 127 阅读 · 0 评论 -
SpringCloud-Feign入门
文章目录引言简介1.导入依赖2.开启Feign功能3.Feign的客户端总结引言在前面的学习中,我们使用了Ribbon的负载均衡功能,大大简化了远程调用时的代码:String user = this.restTemplate.getForObject("http://service-provider/user/" + id, String.class);如果就学到这里,你可能以后需要编写...原创 2020-04-05 11:53:21 · 339 阅读 · 0 评论 -
Hystrix-服务熔断
一、熔断原理熔断器,也叫断路器,其英文单词为:Circuit Breaker熔断状态机3个状态:Closed:关闭状态,所有请求都正常访问。Open:打开状态,所有请求都会被降级。Hystix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,断路器会完全打开。默认失败比例的阈值是50%,请求次数最少不低于20次。Half Open:半开状态,open状态不是永久的,打...原创 2020-04-03 17:39:02 · 242 阅读 · 0 评论 -
Hystrix-线程隔离,服务降级
一、线程隔离示意图:解读:Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理,什么是服务降级?服务降级:优先保证核心服务,而非核心服务不可用或弱可用用户的请求故障时,不会被阻塞,更不会无休止的等待或者看...原创 2020-04-03 17:20:12 · 327 阅读 · 0 评论 -
SpringCloud-雪崩问题的解决方法
文章目录一、雪崩产生的原因二、Hystix解决雪崩问题三、降级和熔断一、雪崩产生的原因微服务中,服务间调用关系错综复杂,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路:如图,一次业务请求,需要调用A、P、H、I四个服务,这四个服务又可能调用其它服务。如果此时,某个服务出现异常:例如微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,...原创 2020-04-03 16:47:00 · 1910 阅读 · 0 评论 -
反向代理负载均衡模式的优缺点-nginx
反向代理反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。负载均衡反向代理负载均衡技术是把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。...原创 2020-03-16 15:23:03 · 674 阅读 · 0 评论 -
EF框架,认识一下!
操作系统考完了!操作系统考完了!操作系统考完了!操作系统考完了!操作系统考完了!操作系统考完了!开心不?开心!开心开心!开心开心开心!开心开心开心开心!开心开心开心开心开心!开心开心开心开心开心开心!...原创 2019-04-14 21:04:55 · 1253 阅读 · 22 评论 -
zuul启动报错:com.netflix.zuul.exception.ZuulException: Forwarding error
报错给SpringClout项目搭了一个Zuul网关,结果启动之后,一访问就报错,最直接的信息就是:1、com.netflix.zuul.exception.ZuulException: Forwarding error2、Caused by: com.netflix.client.ClientException: Load balancer does not have available ...原创 2020-03-26 11:43:48 · 20105 阅读 · 2 评论 -
Eureka服务注册与获取
文章目录一、Eureka服务注册1、pom.xml2、application.yml3、引导类 4、重启项目,访问Eureka监控页面查看二、Eureka服务获取1、修改UserController代码一、Eureka服务注册注册服务,就是在服务上添加Eureka的客户端依赖,客户端代码会自动把服务注册到EurekaServer中。修改itcast-service-provider工程在...原创 2020-03-23 21:51:10 · 962 阅读 · 0 评论 -
EurekaServer搭建
文章目录1、完整的Pom文件:2、编写application.yml配置:3、修改引导类,在类上添加@EnableEurekaServer注解:4、启动服务,并访问:http://127.0.0.1:100861、完整的Pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apach...原创 2020-03-23 21:22:27 · 145 阅读 · 0 评论 -
Eureka注册中心简介
EurekaEureka百度百科为什么要用Eureka?Eureka做什么?原理图Eureka百度百科Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,主要用于定位运行在AWS域中的中间层服务,以达到负载均衡和中间层服务故障转移的目的。SpringCloud将它集成在其子项目spring-cloud-netflix中,以实现SpringCloud的服务发现功能。...原创 2020-03-23 16:27:04 · 426 阅读 · 0 评论 -
RPC和HTTP对比
文章目录1、 OSI七层网络模型2、优缺点3、总结无论是微服务还是SOA(面向服务的架构),都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?常见的远程调用方式有以下2种:RPC和Http。其中Http大家很熟悉不多说,RPC是什么呢?RPC基础概念RPC就是远程过程调用协议,其作用就是客户端与服务端之间的远程调用,就像本地自己调用一样,让服务端进行服务化1、 OSI七层网络模...原创 2020-03-23 11:10:17 · 4131 阅读 · 3 评论 -
HTTP 请求工具类-RestTemplate
RestTemplate什么是RestTemplate?一个简单的例子手动指定转换器(HttpMessageConverter)什么是RestTemplate?传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate。一个简单的例子定义一个简单...原创 2020-03-22 13:19:46 · 930 阅读 · 0 评论 -
解释@Bean 和@Autowired
搜索全网,这是我看到的最简单的对@Bean 和@Autowired的解释:@Bean 和 @Autowired 做了两件完全不同的事情:@Bean 告诉 Spring:“这是这个类的一个实例,请保留它,并在我请求时将它还给我”。@Autowired 说:“请给我一个这个类的实例,例如,一个我之前用@Bean注释创建的实例”。...原创 2020-03-22 00:01:22 · 1601 阅读 · 2 评论 -
idea代码格式美化快捷键
做项目经常会遇到代码格式混乱的情况,Ctrl+Alt+L 快捷键就可以解决这个问题,如果不管用,可能是因为热键占用的问题,试一试 Ctrl+Shift+Alt+L,帮你的代码重归整洁。...原创 2020-03-20 16:22:12 · 21301 阅读 · 2 评论 -
什么是RESTful?
RESTful一、概念百度百科REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。总之rest就是一种设计风格 , 而不是一种深奥的技术!!!,满足这些约束条件和原则的...原创 2020-03-10 17:22:09 · 239 阅读 · 0 评论 -
SpringMVC-整合连接池
整合连接池1、在pom.xml中引入jdbc的启动器:2、application.properties文件中写入参数jdbc连接池是spring配置中的重要一环,在SpringBoot中该如何处理呢?1、在pom.xml中引入jdbc的启动器:<!--jdbc的启动器,默认使用HikariCP连接池--><dependency> <groupId>...原创 2020-03-04 19:32:28 · 998 阅读 · 0 评论 -
SpringMVC-添加拦截器
添加拦截器1、MyInterceptor-定义一个拦截器2、WebMvcConfiguration-定义配置类,注册拦截器拦截器不是一个普通属性,而是一个类,所以就要用到java配置方式了。在SpringBoot官方文档中有这么一段说明:如果你想要保持Spring Boot 的一些默认MVC特征,同时又想自定义一些MVC配置(包括:拦截器,格式化器, 视图控制器、消息转换器 等等),你应该让...原创 2020-03-04 19:14:12 · 878 阅读 · 0 评论 -
SpringMVC-访问静态资源
当我们的项目是一个jar工程,那么就没有webapp,我们的静态资源该放哪里呢?在源码中有一个叫做ResourceProperties的类,里面就定义了静态资源的默认查找路径:默认的静态资源路径为:classpath:/META-INF/resources/classpath:/resources/classpath:/static/classpath:/public/只要静态资...原创 2020-03-04 18:44:55 · 293 阅读 · 0 评论 -
SpringMVC-修改端口
修改端口1、添加全局配置文件:application.properties![在这里插入图片描述](https://img-blog.csdnimg.cn/2020030417125933.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x...原创 2020-03-04 17:16:34 · 8220 阅读 · 3 评论 -
springboot四种属性注入方式
文章目录一、文件1、application.properties文件2、JdbcProperties文件3、JdbcConfiguration文件二、在JdbcConfiguration类中注入JdbcProperties四种方式1、@Autowired注入2、构造函数注入3、@Bean方法的参数注入4、更优雅的注入在上篇博文中,我们以连接池配置的例子实践了spring框架中java配置方式的属...原创 2020-03-04 11:40:16 · 2318 阅读 · 0 评论 -
spring中的属性注入
文章目录一、java配置常用注解二、我们接下来用java配置来尝试实现连接池配置1、引入依赖2、添加jdbc.properties3、配置数据源三、测试成功!在Spring3.0开始,Spring官方就已经开始推荐使用java配置来代替传统的xml配置了。一、java配置常用注解java配置主要靠java类和一些注解来达到和xml配置一样的效果,比较常用的注解有:@Configurati...原创 2020-03-03 16:53:50 · 180 阅读 · 0 评论 -
springboot项目启动三大关键
文章目录1、引入依赖2、添加引导类3、编写HelloControllerHello everyone!我们创建过大大小小很多个springboot框架的项目,在我们创建完一个Maven工程之后,需要完成关键的三步,就可以启动项目了1、引入依赖我们知道springboot框架的优点主要有两点:解决复杂的配置问题;解决混乱的依赖管理问题。 那怎么解决了依赖管理的问题呢?SpringB...原创 2020-03-03 16:23:25 · 226 阅读 · 0 评论 -
SpringBoot中.yml文件的使用
文章目录一、.yml 文件与其他配置文件的关系二、.yml 的创建三、.yml 文件书写规范示例四、.yml 文件的简单使用一、.yml 文件与其他配置文件的关系我们都在SpringBoot框架中见到过.yml 配置文件,我们通知把系统的很多配置信息放到这个配置文件中。但是除了.yml 文件,我们也见到过很多其他的配置文件,例如:.xml文件,.properties文件等,那他们之间有什么区别...原创 2019-12-18 13:55:13 · 2418 阅读 · 4 评论 -
IDEA 配置 SpringBoot 启动端口的两种方式
目录一、properties文件配置 SpringBoot 启动端口二、 IDEA 本身的配置来指定启动端口三、IDEA 本身的配置来指定启动端口>properties文件配置 SpringBoot 启动端口一、properties文件配置 SpringBoot 启动端口新建一个.properties文件,在此文件中配置启动端口号,如图运行结果:启动端口8081二、 IDEA...原创 2019-12-16 21:42:47 · 16070 阅读 · 1 评论 -
枚举实现工厂方法更简单
一般的工程方法://抽象产品interface Car{};//具体产品类class FordCar implements Car{};//具体具体产品类class BuickCar implements Car{};//工厂类class CarFactory{//生产汽车public static Car createCar(Class<? exten...原创 2019-12-08 21:28:29 · 506 阅读 · 2 评论 -
工厂方法
一般创建类的方式缺点:违背了对扩展开发,对修改关闭的原则。这时候需要我们将变化的部分和不变化的部分拆分开,也就是将实例化对象的部分从主程序中拿出来放在一个工厂类中,这样对这个项目的扩展和维护是有利的简单工厂模式定义了一个创建对象的类,由这个类封装实例化对象的行为。这样的话这个实例化对象的类,就不会再变化了,唯一变化的就是工厂类和类族了。...原创 2019-12-01 22:06:26 · 403 阅读 · 0 评论 -
idea中新建package包
新建package包没有选项办法:点击Show Options Menu去掉此处对勾,即可!原创 2019-11-17 20:43:15 · 271 阅读 · 3 评论 -
8080端口被占用
文章目录1. win+r,cmd2. 输入: netstat -ano 找到被占用的8080端口对应的号3. 再到任务管理器中,结束被占用的端口4. 或者直接用命令杀死该进程1. win+r,cmd2. 输入: netstat -ano 找到被占用的8080端口对应的号3. 再到任务管理器中,结束被占用的端口4. 或者直接用命令杀死该进程8080端口被占用处理方法...原创 2019-11-04 21:41:47 · 242 阅读 · 4 评论 -
Tomcat 输入http://localhost:8080网页打不开
文章目录1. 问题截图2. 解决办法3. 成功1. 问题截图Tomcat 安装配置后输入http://localhost:8080网页打不开2. 解决办法电脑必须安装了JDK,如果你的电脑安装了多个版本JDK,则必须配置环境变量JAVA_HOME 的值为(C:\Program Files\Java\jdk1.6.0_11)即你安装的JDK安装路径。查看tomcat配置是否正确...原创 2019-11-04 21:29:29 · 30977 阅读 · 15 评论 -
Tomcat安装与配置
文章目录1. 进入官网2.选择版本下载3.解压到4.环境变量配置1. 进入官网Tomcat官网2.选择版本下载注意有zip和exe两种格式的,zip 是免安装版的,exe Windows Service installer是安装版。同时观察自己的电脑是64位系统还是32位系统。3.解压到注意解压的路径不能出现中文,Tomcat和java的一些特性,如果有中文以后开发会出现一些奇怪的...原创 2019-11-04 20:59:23 · 9634 阅读 · 9 评论 -
maven工程依赖下载不下来
这里写自定义目录标题问题思考jar包来源没有连接到私服?服务器挂了?问题创建了一个maven工程,添加的依赖多数标红,首先排除了代码问题,又确定了中央仓库里也有这个版本,那为什么就是下载不下来jar包呢?思考jar包来源先根据坐标寻找本地仓库有没有这个jar包,没有就去远程仓库下载到本地仓库,远程仓库又分为私服和中央仓库或者其他仓库。没有连接到私服?查询配置maven配置文件sett...原创 2019-11-03 21:31:32 · 2799 阅读 · 2 评论 -
信息的表示与存储
一、进位计数制及转换进位计数制 各种信息进入计算机,都要转换成0 和1 的二进制形式,计算机采用二进制的原因是: 1. 物理上容易实现,可靠性高 2. 运算简单,通用性强 3. 便于表示也进行路基运算进位计数制的特点 1. 采用进位的方法进行计数 2. 使用位置表示法 二、数据在计算机中的表示1.整数在计算机中的表示由...原创 2018-07-21 09:33:18 · 1512 阅读 · 21 评论