学习笔记
文章平均质量分 95
小小辉先生
这个作者很懒,什么都没留下…
展开
-
redis的常用五大数据类型
Key-ValueKV键值对若设置重复的key,那么对应的value将被覆盖常用命令keys * 返回当前数据库的所以有key的集合exists key 判断key是否存在move key db 移动key到其他数据库expire key 秒 为key设置过期时间ttl key 查看key还有都少秒过期 -1永不过期 -2过期 返回的数字为多少秒过期type key...原创 2020-04-13 14:28:23 · 121 阅读 · 0 评论 -
springboot之切换日志框架
可以按照slf4j的日志适配图,进行相关的切换;slf4j+log4j的方式;<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring‐boot‐starter‐web</artifactId> <exclusions> <exclusion> <artifactId>logback‐classic<原创 2020-06-29 17:19:25 · 186 阅读 · 0 评论 -
springboot日志文件配置
默认配置使用示例//记录器 Logger logger = LoggerFactory.getLogger(getClass()); @Test public void contextLoads() { //System.out.println(); //日志的级别; //由低到高 trace<debug<info<warn<error //可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效 logger.trace("这是trace日原创 2020-06-29 17:07:35 · 605 阅读 · 0 评论 -
springboot日志关系
文章目录日志依赖底层实现日志依赖<dependency> <artifactId>spring-boot-starter-logging</artifactId> <groupId>org.springframework.boot</groupId></dependency>底层实现总结:1)、SpringBoot底层也是使用slf4j+logback的方式进行日志记录2)、SpringBoot也把其他的日志都替原创 2020-06-24 17:27:07 · 146 阅读 · 0 评论 -
SLF4J官方选择
文章目录使用关系图小问题使用关系图最下面是提示1.日志门面(抽象)2.日志实现3.适配器小问题在实际开发中会依赖各种框架,使用的日志各不相同,可以同一使用日志么?可以的 SLF4J给我们了一个解决方案,使用中间的一个包替换,原理其实就是适配器模式如何让系统中所有的日志都统一到slf4j?1、将系统中其他日志框架先排除出去;2、用中间包来替换原有的日志框架;3、我们导入slf4j其他的实现参考资料:尚硅谷springboot课程本文若有错误请指正,互相学习,加油!...原创 2020-06-24 17:19:57 · 308 阅读 · 1 评论 -
日志框架分类和选择
文章目录市面上的日志框架;日志抽象日志实现如何选择?市面上的日志框架;JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…日志抽象JCL Apache下的jakarta小组开发SLF4jjboss logging日志实现Log4jJULLog4j2Logback如何选择?jboss logging使用场景少JCl最后一次更新时间为2014年日志抽象层选择SLF4jLog4j没有Logback先进,性能还没Logback好JUL(原创 2020-06-24 13:26:36 · 184 阅读 · 0 评论 -
springboot之@Conditional派生注解(Spring注解版原生的@Conditional作用)
看源代码发现的,所以就去找了找所有的这些注解原创 2020-06-24 11:40:53 · 193 阅读 · 0 评论 -
springboot核心技术之自动配置原理
自动配置原理1.加载主配置类,开启了自动配置注解@EnableAutoConfiguration@EnableAutoConfiguration作用按住Ctrl+鼠标左键发现有这个注解,导入了这个组件@Import({EnableAutoConfigurationImportSelector.class})它的父类 AutoConfigurationImportSelectorpublic class EnableAutoConfigurationImportSelector extends原创 2020-06-24 11:36:18 · 130 阅读 · 0 评论 -
springboot之外部配置加载顺序
文章目录SpringBoot也可以从以下位置加载配置; 优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会 形成互补配置1.命令行参数 所有的配置都可以在命令行上进行指定2.来自java:comp/env的JNDI属性3.Java系统属性(System.getProperties())4.操作系统环境变量5.RandomValuePropertySource配置的random.*属性值 由jar包外向jar包内进行寻找; 优先加载带profile6.jar包外部的application-{pro原创 2020-06-21 09:59:51 · 261 阅读 · 0 评论 -
springboot之配置文件加载位置
配置文件位置1.–file:./config/2–file:./3–classpath:/config/4–classpath:/加载顺序及机制优先级由高到底,高优先级的配置会覆盖低优先级的配置;SpringBoot会从这四个位置全部加载主配置文件;互补配置;改变加载的默认文件配置使用命令行改变spring.config.location项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默 认加载的这些配置文件共同起作用形成互补配置;j原创 2020-06-21 09:28:40 · 142 阅读 · 0 评论 -
springboot之Profile
文章目录为什么使用使用多个Profile文件yml支持多文档快激活指定profile为什么使用实际生产中常常会使用不同的环境来保证数据的稳定性、安全性且不易丢失使用创建对应环境的文件1.application-dev.properties内容server.port=80822.application-prod.properties内容server.port=803.application.yml内容server: port: 8081spring: profiles原创 2020-06-20 19:57:21 · 118 阅读 · 0 评论 -
Redis之概念
概念Redis:REmote DIctionary Server(远程字典服务器)完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key/Value)分布式内存数据库,基于内存运行并支持持久化的NoSql服务器,是当前最热门的NoSql服务器之一,也被人们称为数据结构服务器特点Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用R...原创 2020-04-11 10:36:49 · 88 阅读 · 0 评论 -
CAP原理+BASE
CAPC:Consistency(强一致性)A:Availability(可用性)P:Partition tolerance(分区容错型)关系型数据库可以满足传统的关系ACID非关系型数据库只可以满足两种特性CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间...原创 2020-04-11 10:21:20 · 154 阅读 · 0 评论 -
NoSql数据库四大分类及比较
KV键值对使用KV的大厂新浪:BerKeleyDB+redis美团:redis+tair阿里百度:memcache+redis文档数据库(bson)CacheDBMongoDBMongoDB介绍:MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的...原创 2020-04-10 14:46:27 · 1335 阅读 · 0 评论 -
RDBMS vs NoSQL
RDBMS高度组织化结构化数据结构化查询语言(SQL)数据和关系都存储在单独的表中。数据操纵语言,数据定义语言严格的一致性基础事务NoSQL代表着不仅仅是SQL没有声明性查询语言没有预定义的模式-键 - 值对存储,列存储,文档存储,图形数据库最终一致性,而非ACID属性非结构化和不可预知的数据CAP定理高性能,高可用性和可伸缩性...原创 2020-04-09 20:31:03 · 145 阅读 · 0 评论 -
多线程面试题
synchronized锁定的是什么?对象的锁只有一个,线程1拿到,其他线程就无法操作这个对象。进入阻塞状态,直到synchronized(){}执行结束.synchronized(this)、synchronized(.class)、synchronized(任意对象)区别synchronized (this)代码块是锁定当前对象,所得是用一个对象synchronized(任意...原创 2020-03-24 10:22:36 · 221 阅读 · 0 评论 -
线程安全的单例模式
使用内部类ublic class Singleton { public Singleton() { super(); System.out.println("single"); } private static class Inner{ private static Singleton s=new Singleton();...原创 2020-03-21 09:21:15 · 90 阅读 · 0 评论 -
Spring Cloud组件config之使用
概述config包括服务器和客户端,还需要git和一个远程http仓库客户端读取配置,服务器从http远程仓库读取配置,此文件用于项目来使用,十几个配置文件可以交给远程仓库来管理更新配置,可以使用git向远程http仓库上传配置文件使用1.注册gitee账号,建立远程仓库.将远程仓库下拉到本地 使用 git clone https/ssh地址上传配置文件到远程仓库git add 文...原创 2020-03-14 20:59:40 · 134 阅读 · 0 评论 -
Spring Cloud典型面试题
1.什么是微服务?微服务的核心技术就是将传统的一站式应用,根据业务拆分成一个一个的服务彻底的耦合,每一个微服务提供单一业务功能的服务,一个服务做一件事。从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库2.微服务之间是如何建立通讯的?3.Spring Cloud和Dubbo有哪些区别?Dubbo的通信是通过rpc建立的,SpringClou...原创 2020-03-14 20:17:53 · 559 阅读 · 0 评论 -
Spring Cloud组件Config之概述
前言微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。可以想想,上百个配置文件,给开发人员和运维人员带来的巨大压力可想而知概述spring cloud想到了这个问题,为我们提供了分布式配置中心Config这个分布式配置中心是什么呢?Spri...原创 2020-03-11 15:04:47 · 144 阅读 · 0 评论 -
Zuul
概念官网:github官网在微服务架构中,Zuul就是网关的守门员,保安Zuul包含了对请求的路由和过滤两个最主要的功能:其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其...原创 2020-03-09 22:02:15 · 126 阅读 · 0 评论 -
Hystrix之服务监控
概述分布式的架构微服务需要实时监控,及时查看资源Hystrix提供了这一监控功能(Hystrix Dashboard),Hystrix会持续地记录所有通过Hystrix发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求多少成功,多少失败等。Netflix通过hystrix-metrics-event-stream项目实现了对以上指标的监控。Spring Cloud也...原创 2020-03-09 20:17:28 · 209 阅读 · 0 评论 -
Hystrix之服务降级
概念整体资源快不够了,忍痛将某些服务先关掉,待渡过难关,再开启回来。服务降级处理是在客户端完成,与服务端无关所有的RESTful风格的接口都需要做服务降级的处理,为了降低耦合度,使用Hystrix的FallbackFactory返回通知使用1.修改api工程在com.yan.cloudapi.service包下新建实现了FallbackFactory的接口,实现功能接口是DeptCli...原创 2020-03-09 14:08:56 · 159 阅读 · 0 评论 -
Hystrix之服务熔断
概念服务熔断熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回"错误"的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断...原创 2020-03-07 22:01:41 · 175 阅读 · 0 评论 -
Hystrix之概述
痛点分布式系统面临的问题复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。可能会出现服务雪崩服务雪崩多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩...原创 2020-03-07 20:11:24 · 135 阅读 · 0 评论 -
Fegin之使用
使用1.新建工程,此工程为服务器的消费者端口可以参考之前写的consumer80工程全部copy过来pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2...原创 2020-03-06 18:27:38 · 259 阅读 · 0 评论 -
Fegin之概述
概述官方解释:github官网描述看不懂英文的,我将重要部分翻译Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和Htt...原创 2020-03-06 15:13:57 · 419 阅读 · 0 评论 -
Ribbon之自定义算法
自定义算法在实际需求中为了测试服务器的性能和能力,或者其他需求需要我们使用自定义算法必备知识官方文档明确给出了警告:这个自定义配置类不能放在@ComponentScan所扫描的当前包下以及子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是说我们达不到特殊化定制的目的了。@ComponentScan是在@SpringBootApplication的注解里面...原创 2020-03-05 22:18:28 · 336 阅读 · 0 评论 -
Ribbon核心组件IRule
概述IRule是负载均衡的核心算法类,若未定义是用什么算法,默认使用轮询RoundRobinRule里面包括7种算法提供使用(若不想使用这7种算法,可以自定义算法)算法1.RoundRobinRule 轮询2.RandomRule 随机3.AvailabilityFilteringRule先过滤掉由于故障处于断路器跳闸状态的服务,还有并发连接超过阈值的服务,然后对剩余的服务列表进行轮...原创 2020-03-05 21:37:40 · 285 阅读 · 0 评论 -
Ribbon之负载均衡
负载均衡Ribbon在工作时分成两步第一步先选择 EurekaServer ,它优先选择在同一个区域内负载较少的server.第二步再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址。其中Ribbon提供了多种策略:比如轮询、随机和根据响应时间加权。使用为了模拟多个微服务的使用 多个微服务各自使用独立的数据库照着之前做好的8001,复制做出8002和8003,且有...原创 2020-03-05 14:53:20 · 264 阅读 · 0 评论 -
Ribbon初步配置
概述1.是什么?Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具。简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称...原创 2020-03-04 20:52:51 · 323 阅读 · 0 评论 -
Eureka
前言微服务的服务与注册发现的功能非常重要,SpringCloud中的Eureka很方便的实现了这一功能Eureka的主要功能:主要用来实现各个微服务实例的自动化注册与发现必备知识服务注册:在服务治理框架中,通常都会构建一个注册中心,每个服务单元向注册中心登记自己提供的服务,将主机与端口号、版本号、通信协议等一些附加信息告知注册中心,注册中心按照服务名分类组织服务清单,服务注册中心还需要以心...原创 2020-03-03 19:14:48 · 186 阅读 · 0 评论 -
Eureka与Zookeeper
必备知识1.传统的ACID分别是什么A(atomlcity):原子性C(Consistency):一致性I(Isolation):独立性D(Durability):持久性2.CAPC(Consistency):强一致性A(Availability):可用性P(Partltion tolerance):分区容错性比较作为服务注册中心,Eureka比Zookeeper的区别在哪里...原创 2020-03-03 17:19:08 · 152 阅读 · 0 评论 -
Eureka的自我保护
自我保护1.什么是自我保护模式?默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。Eureka通过“自我保护模式”来解决这个问题——当Eureka...原创 2020-03-03 15:28:36 · 130 阅读 · 0 评论 -
RestTemplate
前言为什么使用?我们经常做的事情是生产者做的事情,而一个系统中使用消费者的RestTemplie是发送远程http请求,作为消费者来使用使用官网:https://docs.spring.io/spring-framework/docs/4.3.7.RELEASE/javadoc-api/org/springframework/web/client/RestTemplate.html由于...原创 2020-03-01 21:46:14 · 212 阅读 · 0 评论 -
Dubbo与Spring Cloud
活跃度对比Dubbo社区官网最近更新是在2019年4月 收藏12个 且只有一个用户发布 现已不在维护Spring Cloud社区官网最近更新是在2020年2月28日 多用户发布文章(分页显示),收藏次数最多的有2200多对比表格服务功能DubboSpring Cloud服务注册中心ZookeeperSpring Cloud Neflix Eureka服务...原创 2020-02-28 15:20:29 · 164 阅读 · 0 评论 -
Spring Cloud与Spring Boot的关系
SpringBoot专注于快速方便的开发单个个体微服务。SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务SpringBoot可以离开SpringCloud独立使用开发项目,但是SpringCloud离不开Sp...原创 2020-02-28 14:42:59 · 83 阅读 · 0 评论 -
Spring Cloud是什么?
官网查询总结Spring Cloud官网 SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现,配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。SpringCloud利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,SpringCloud为...原创 2020-02-28 14:42:23 · 103 阅读 · 0 评论 -
为什么用Spring Cloud
选取依据1.拥有整体解决方案和框架成熟度较高2.社区热度高3.可维护性较强4.学习难度中等使用案例当前各大IT公司的微服务架构有哪些?阿里 Dubbo/HSF京东 JSF新浪微博 Motan当当网 DubboX各微服务框架比较功能点/微服务框架Neflix/Spring CloudMotangRPCThriftDubbp/DubboX功能定位...原创 2020-02-28 14:10:46 · 103 阅读 · 0 评论 -
微服务和微服务架构
微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一问题/提供落地对应服务的一个服务应用,狭义的看,可以看做Eclipse里面的一个个微服务工程/Module微服务架构微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务,服务之间相互协调,互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级的通信机制互相协作(HTTPPAII的RESTfu...原创 2020-02-28 10:59:47 · 139 阅读 · 0 评论