自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL主从复制

MySQL主从复制主库设置:vi /etc/my.cnfmy.cnf修改内容:log_bin=mysql-bin 设置开启binlogserver-id=1 指定唯一serverIDsync-binlog=1 同步磁盘binlog-ignore-db=performance_schema 同步忽略库binlog-ignore-db=information_schemabinlog-ignore-db=sys重启mysql:systemctl restart mysqld进入mysql

2021-09-26 16:18:16 203

原创 Mysql-5.7安装步骤

Mysql-5.7安装步骤下载链接:https://pan.baidu.com/s/1x0wPAAJ9vwUC1IkjUVeT4g 提取码:zo2v第一步:解压:tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar第二步:检查是否有mariadb-libs-5.5.60-1.el7_5.x86_64,执行命令:rpm -qa|grep mariadb如果存在需要删除:执行命令rpm -e mariadb-libs-5.5.60-1.el7_5.x86_

2021-09-26 16:15:37 538

原创 手撸Java工厂模式

Java工厂模式1、 手写简单工厂(抽象类)2、 手写工厂模式(接口类)3、 手写抽象工厂模式手写简单工厂:定义抽象类abstract,同时定义抽象方法/** * 面条的抽象类 * @Description: * @Date: 2021/9/23 0023 下午 14:11 * @Version: 1.0 */public abstract class INoodler { //该类描述了面条的品类 public abstract String getDes();

2021-09-23 16:05:43 1108

原创 必会手撸代码单例模式

必会手撸代码单例模式饿汉模式/** * 单列--饿汉式 * 优点: 写法简单 缺点:如果该类未被使用,会一直存在 浪费内存空间 * @Date: 2021/9/18 0018 下午 17:17 * @Version: 1.0 */public class SingleHungry { private static SingleHungry single = new SingleHungry(); private SingleHungry() { }

2021-09-18 17:58:07 154

原创 spring bean 生命周期

spring bean 生命周期:描述:spring bean 生命周期1、spring 启动是会加载spring管理的bean,并对bean进行实列化(默认实列化 单例模式)2、对实列化bean进行属性设置3、检查aware相关方法以及设置相关依赖(1)实现beanNameAware接口,将bean的id设置到setBeanName()方法(2)实现beanFactoryAware接口,spring将调用setBeanFactory方法,将beanFactory实列传进来(3)实现bea

2021-09-18 17:06:30 76

原创 nacos持久化连接MySQL报错Nacos Server did not start because dumpservice bean construction failure : No Data

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dumpService': Invocation of init method failed; nested exception is java.lang.RuntimeException: Nacos Server did not start because dumpservice bean construct

2021-09-12 21:06:29 6861

原创 基于课上自定义RPC代码中做如下功能实现客户端集成spring boot客户端提供Controller层,在浏览器发起用户查询功能服务端提供2个或2个以上的服务客户端完成对服务端的负载

解题思路:客户端需要集成spring-boot-starter-web<!--集成springboot--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>创建UserController实现get查询 服务端...

2021-08-06 12:43:03 386

原创 springboot监控Acturator和springbootAdmin

Acturator是spring boot的一个附加功能,可以帮助我们在应用程序中生产环境时监视和管理应用程序,可以通过HTTP的各种请求来监管、审计、收集应用的运行情况,spring boot actuator提供了对单个spring boot的监控,监控信息包含:应用状态、内存、线程、堆栈,可以监控到spring boot应用的整个生命周期。actuator监控分为两类:原生端点和用户自定义端点。Actuator配置:actuator 暴露的监控接口的安全性,需要添加安全控制的依赖.

2021-07-13 21:40:41 723 1

原创 spring boot缓存

spring boot缓存我们不得不提到一个规范(JSR-107),其实就是Java提供得一种处理缓存得接口规范。JSR-107规范定义了5个核心接口,分别为CachingProvider,CacheManager、Cache、Entry、ExpiryCachingProvider(缓存提供者):创建、配置、获取、管理和控制多个CacheManager;CacheManager(缓存管理器):创建、配置、获取、管理和控制多个唯一命名得Cache,cache存在于...

2021-07-12 20:36:41 218 1

原创 springboot自定义注解实现

自定义注解的实现其实就是通过动态代理或者aop的思想去实现,这里用的是aop的方法引入aop的jar<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>在抒写 自定义注解;这个需要注意的地方是target中的类型:如..

2021-07-11 19:05:53 209

原创 SpringBootApplication初始化

问题:在执行main方法,也就是run得时候,执行了哪些初始化动作?根据源码可以发现,run方法其实就是newSpringApplication()bug跟踪可以发现:第一个:初始化servlet环境第二个:初始化classpath下得META-INf/spring.factory中已经配置好的applicationContextInitializer第三个:初始化配置applicationListener第四个:调用栈,判断main方法得类名...

2021-07-08 20:55:29 187

原创 自动配置@EnableAutoConfiguration

在spring中有很多Enable开头的注解,作用就是@Import来收集并注册特定的场景相关的bean,并且加入到IOC容器。@EnableAutoConfiguration就是借助@Import来收集所有符合自动配置条件的bean定义,并加载到IOC容器中。在这里可能会好奇的是为什么@SpringBootApplication必须跟业务包放在同一级路劲上,这里需要了解的一个注解是:@AutoConfigurationPackage在Registrar.class类中.

2021-07-08 16:25:39 4393

原创 springboot简单基础

什么是springboot ?它是由privotal团队在2014年发布的轻量级开源框架,基于spring4.0设计的,springboot通过解决依赖包的版本冲突,采用启步依赖来解决springboot的特性:1、springboot starter(起步依赖),就是源具备功能的坐标打包到一起,并且提供一些摸默认功能2、编码变得简单,springboot采用javaconfig的方法对spring进行配置,提供大量的注解,提高工作效率3、自动配置,利用spring对条件化配置的支持,合

2021-07-06 14:55:22 134

原创 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

问题:在手写SSM的时候org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):出现这问题是idea问问题正确的在启动test的时候我们在我们target下的编译文件应该是这样的所以,我们在idea用 recourse下创建directory 要一个一个的创建如果采用com.edu会被认为这个是一个包名而不是创建2个包...

2021-06-30 20:06:41 95 1

翻译 Spring MVC 请求处理流程

流程说明:第一步:用户发送请求到前端控制器DispatcherServlet第二步:DispatcherServlet收到请求调用HandlerMapper处理器映射器第三步:处理器映射器根据请求URL找到具体的handler(后端控制器),生成处理器对象以及处理器拦截器一起生成的处理器执行链返回到DispatcherServlet第四步:DispatcherServlet调⽤HandlerAdapter处理器适配器去调⽤Handler第五步:处理器适配器执⾏Handler第六步:H

2021-06-23 21:41:33 1452

原创 BeanFactory和ApplicationContext区别

BeanFactory是spring框架中ioc容器的顶层接口,它定义了一些基础功能以及基础规范,applicationContext是beanFactory的子集接口,ApplicationContext是具备着beanFactory的全部功能;BeanFactory为springioc基础容器,applicationContext是容器的高级接口,beanfactory具备更多的功能,比如国际化支持和资源访问(xml、Java配置)我们从上面的截图可以看出,beanFactory是spring的

2021-06-23 16:12:58 2045 1

原创 Springcloud 核心组件关系

在微服务架构的应用中, Feign、Hystrix,Ribbon三者都是必不可少的。Feign介绍在Spring Cloud微服务中用于实现微服务之间的声明式调用。Feign 可以定义请求到其他服务的接口,用于微服务间的调用,不用自己再写http请求,在客户端实现,调用此接口就像远程调用其他服务一样,当请求出错时可以调用接口的实现类来返回,Spring Cloud为Feign添加了Spring MVC的注解支持,并整合了Ribbon和Eureka来为使用Feign时提供负载均衡。Ribbon介绍Ri

2020-12-30 10:17:37 155

原创 Spring Cloud中Hystrix实现断路器原理

多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又在调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,那么对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,这就是所谓的“雪崩效应”。1. HystrixHystrix 是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多服务无法避免会调用失败,比如超时、异常等等,Hystrix能够保证在一个服务出现问题的情况下,不会导致整体服务的失败,避免级联故障,以

2020-12-29 17:42:33 320

原创 SpringCloud之Ribbon负载均衡

什么是Ribbon?因为Eureka中已经集成了Ribbon,所以我们无需引入新的依赖Ribbon是一个客户端负载均衡器,我们可以在配置文件中Load Balancer后面的所有机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。Ribbon工作时分为两步:第一步选择Eureka Server,它优先选择在同一个Zone且负载较少的Server;第二步再根据用户指定的策略,再从Server取到的服务注册列表中选

2020-12-29 14:34:46 160

原创 分析Eureka缓存

Eureka Server 数据存储Eureka Server 的数据存储分了二层:数据层和缓存层数据层记录的是注册到Eureka Server 上的服务信息,缓存层记录包装以后的数据,可以直接在 Eureka Client 调用时返回。Eureka Server 的数据层是二层 ConcurrentHashMap, ConcurrentHashMap 是线程安全高效的 Map 集合。第一层的 ConcurrentHashMap 的 key=spring.application.name也就是客户端

2020-12-29 09:55:36 369

原创 SpringCloud微服务核心组件Eureka

一 Eureka服务治理体系服务治理==服务注册+服务发现服务治理实现:1.1 服务治理服务治理是微服务架构中最核心和基础的模块,主要用来实现各个微服务实例的自动化注册和发现,Eureka服务治理体系如下:1.2 服务注册在服务治理的框架中,会创建一个注册中心,每个服务单元都向服务中心注册自己的服务,包括服务的ip和端口号、服务版本号、通讯协议等,注册中心按照服务名组织服务清单,同时还要使用心跳检测,去检测服务清单中是否有可用服务,如果出现不可用的服务就进行清除,1.3 服务发现在服务治

2020-12-25 17:28:57 151

原创 Eureka 集群是怎么保持数据一致的?

服务注册中心不可能是单点的,一定会有一个集群,那么集群中的服务注册信息如何在集群中保持一致的呢?首先要明确的是 Eureka 是弱数据一致性的。下面从2个方面来说明:什么是弱数据一致性Eureka 是如何同步数据的1. 弱数据一致性我们知道 ZooKeeper 也可以实现数据中心,ZooKeeper 就是强一致性的。分布式系统中有一个重要理论:CAP。Consistency 数据一致性分布式系统中,数据会存在多个副本中,有一些问题会导致写入数据时,一部分副本成功、一部分副本失败,造成数

2020-12-25 15:59:15 3974 1

原创 springcloud-getway搭建并且实现redisRequestRateLimiter限流

在搭建前,我们需要了解一下springcloud-getway限流的策略:有计算器算法、漏桶算法、令牌桶算法;Spring Cloud Gateway限流我搭建了两台服务器,一台是getway 一台是demo,我的想法是通过getway去调用demo服务器getway 服务器搭建:引入getway jar<parent> <groupId>org.springframework.boot</groupId> <arti

2020-12-25 10:41:14 1332

原创 springCloud网关Zuul和GateWay区别

getway和zuul在zuul没有进行参数调优的时候,getway的性能会远高于zuul。分析,在空负载的时候,SpringCloud Gateway比zuul 1 性能高50%左右,在模拟处理50ms业务后,,SpringCloud Gateway比zuul 1 性能高9倍左右。但是考虑到zuul使用默认配置,结果可能不准,上网查找zuul生产优化配置调优后再次进行50ms业务处理压测。而SpringCloud Gateway查阅资料后暂无需优化。zuul优化参数参考如下:性能比较结论在实

2020-12-24 15:09:09 21431 5

原创 springboot有哪些常用注解?

springboot中的常用注解有:1、SpringBootApplication;2、Repository;3、Service;4、RestController;5、ResponseBody;6、Component等1、@SpringBootApplication这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。实际上这个注解是@Configuration,@EnableAuto

2020-12-21 16:32:02 4230

原创 springboot和springmvc的区别

面试题:你知道springboot和springmvc的区别是什么?springMVC解答要从两个方面来看:一、spring的核心中IOC和AOP,IOC就是控制反转(就是将原本由程序代码直接操作的对象调用权交付给容器),目的是为了降低计算机代码耦合度。创建一个对象需要显式的new出来,但是控制反转是在容器初始化(或者某个指定时间节点)时通过反射机制创建好对象,在使用时去容器中获取。将对象的控制权反过来交给容器管理,所以称之为“控制反转”。IOC容器是怎么实现的呢?IOC容器的底层实现其实是工厂

2020-12-20 16:08:22 20128 5

原创 java分布式事务的解决方案

1.什么是分布式事务在分布式系统中一次操作由多个系统协同完成,这种一次事务操作涉及多个系统通过网络协同完成的过程称为分布式事务,(强调的是多个系统通过网络协议同时完成一个事务过程)2.分布式事务的产生的原因2.1 数据库分表分库当数据库的数据比较大的时候达到成千上万的数据的时候,我们就需要对数据库进行分表分库处理来实现对服务器的压力,这时候如何保证数据的一致性,就需要引入分布式事务;2.2 应用SOA化所谓的SOA化就是把服务器进行拆分,单台服务器拆分为多台服务(根据业务型进行划分为多台服务)

2020-12-18 14:44:54 1221

原创 TCC-Hmily 实现高性能?

Hmily支持嵌套事务(Nested transaction support).采用disruptor框架进行事务日志的异步读写,与RPC框架的性能毫无差别支持SpringBoot-starter 项目启动,使用简单RPC框架支持 : dubbo,motan,springcloud。本地事务存储支持 : redis,mongodb,zookeeper,file,mysql事务日志序列化支持 :java,hessian,kryo,protostuff。采用Aspect AOP 切面思想与Spr

2020-12-13 16:45:12 178

原创 分布式事务TCC(Hmily)

1 什么是TCC事务?TCC是Try、Confirm、Cancel三个词语,TCC分布式事务的三个操作:预处理Try、确认Confirm、撤销Cancel。Try操作业务检查以及资源预留,Confirm做业务确认操作,Cancel实现一个月try相反的操作即为回滚操作。Try操作全部成功,TM将会发起所有分支事务的Confirm操作,如Confirm/Cancel操作失败,TM进行重试。分支事务失败的情况:TCC分了三个阶段:(1)Try阶段是做业务检查以及资源预留,此阶段仅是一个初步操作,它和

2020-12-13 16:15:14 1189

原创 搭建分布式事务 tcc(hmily)启动报错,求大神指导

2020-12-10 20:46:00.939 INFO 8880 --- [ main] io.undertow.servlet : Initializing Spring embedded WebApplicationContext2020-12-10 20:46:00.939 INFO 8880 --- [ main] w.s.c.ServletWebServerApplicationContext : Root

2020-12-10 20:49:12 674 1

原创 SpringBoot在使用tk.mybatis.mapper报错

springboot项目引入通用mapper(tk.mybatis.mapper)的时候踩的坑:报错信息:java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class看到这个错误信息,需要查看我们引用的mybatis的配置文件:第一步查看MyMapper:package com.mybatis;import tk.myb

2020-12-09 19:18:50 3933 2

原创 MySQL大总结

一张表,里面id是自增主键,当插入17条数据以后,在删除15-17的数据,这时候把MySQL给重启,在insert一条数据,这时候主键id是15还是18?答:如果是myisam引擎,那么就是18,理由:myisam表会把自增主键记录存储在数据文件中,MySQL引擎重启以后,数据文件是不会丢失的。innodb引擎,就是15,理由:innodb把自增长ID记录存放入内存中,在重启数据库或者对表进行optimize操作,都会导致最大ID丢失Heap表是什么?heap表存在于内存中,用于临时高速存储的。.

2020-12-08 14:01:11 104

原创 MySQL常问锁的面试题

什么是锁?锁(lock)在多人处理同一个数据的时候,保证每次只有一个人可以操作。MySQL提供了页锁(全局锁)、行锁、表锁。其中innodb采用的是行锁和表锁,myisam只支持表锁。什么是死锁是指二个或者二个以上的进程在执行时候,因为争夺资源造成相互等待的现象,进程一直处于等待中,无法得到释放,这种状态就叫做死锁,死锁出现的案列批量入库,存在则更新,不存在则插入,insert into tab(xx,xx) on duplicate key update xx=‘xx’。如何处理死锁?1:通

2020-12-07 15:03:27 455

原创 java高并发如何保证数据安全

我们在项目开发的时候经常出现线程安全的问题,那么我们面对数据库MySQL的安全,如何解决呢?大部分人会说可以使用锁,利用数据库自带的锁机制可以解决问题,但是在高并发的情况下,MySQL自带的锁已经无法实现了;我们在一些营销活动中,最怕的就是出现超发,如果我们的程序没有做好这方面的控制,很容易就会出现超发的问题;超发的问题如何出现的?在并发的情况下,多用户抢购到库存量不为0的时候进行交易,然而实际库存量只有一个,被多个用户拿到,最终导致超发的情况。解决的办法:第一种:悲观锁的引入,在用户修改数据的

2020-12-05 16:11:24 2097

原创 数据库缓存如何实现数据一致性

在项目开发的时候,我们会经常发现,首页或者热门的数据都 存放在缓存中而不是直接请求数据库,并发情况下直接请求数据库,会增加数据库的服务压力,这时候就需要引入缓存,缓存目前用的比较多的是(redis,memcache 一个是单线程一个是多线程),在数据库被更新的时候就存在缓存数据没有被更新,导致缓存和数据库的数据不一致的问题。解决方案一:通过key的过期时间控制,MySQL更新,缓存不更新,但两者数据不一致的时间过长的话。在并发较高的情况下,过期时间过长,会产生很多长期的脏数据;不足点:完全依赖过期时

2020-12-04 18:54:12 345

原创 缓存异常场景深入分析

缓存异常场景1. 缓存穿透2. 缓存击穿3. 缓存雪崩4. 缓存预热5. 缓存降级缓存穿透:缓存穿透是指缓存和数据库都没数据,而用户不断发起请求,这时的用户很可能就是攻击者,攻击会导致数据库过大的压力解决方案:1.设置缓存空对象;2.布隆过滤器缓存击穿:缓存击穿是指缓存中没有但是数据库中有(一般是缓存时间到期),这时由于并发用户请求比较多,同时读缓存没有读到数据,又同时去数据库读取数据,引起数据库压力瞬间增大;解决方案:1.设置热点数据永不过期;2.使用互斥锁排队;3.缓存屏障;缓存雪崩

2020-12-04 14:44:35 131

原创 面试题 innodb中MVCC如何实现?

在理解MVCC,我们需要先理解其他的知识点(1)数据库为什么需要用事务?为了保证数据存储过程中数据的最终一致性(2)事务包含几种特征?原子性、一致性、隔离性、持久性(3)事务并发会存在哪些问题?事务并发会出现脏读、不可重复读、幻读(4)如何解决事务并发出现的问题?设置事务隔离级别,读未提交,读提交,重复读,序列化(5)事务通过什么实现事务的隔离性?加锁(6)加锁会带来哪些问题?读的时候无法写,写的时候无法读,同时降低了数据库的性能(7)数据库是如何实现加锁以后带来的性能问题?使用

2020-12-03 18:40:05 769

原创 MySQL解析MVCC

什么是MVCC?MVCC全称 multi-version concurrency control,即多版本并发控制。MVCC是一种并发控制方法,在数据库管理中,实现对数据库的并发访问。MVCC在MySQL innodb中实现主要是为了提高数据库并发性能,使用更好的方法去处理读-写的操作,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。什么是当前读和快照读?当前读:像select lock in share mode(共享锁), select for update ; update, insert

2020-12-03 16:18:40 144

原创 MySQL实现事务的提交和回滚

什么是事务?事务是数据库中一系列的访问和更新组成的逻辑执行单元,事务的逻辑单元中可以是一条SQL语句,也可以是一段SQL逻辑,这段逻辑要么全部执行成功,要么全部执行失败。也就是说事务就是用来保证一系列操作的原子性,数据库为了保证事务的原子性和持久性,引入了redo log 和 undo logredo logredo log是重做日志,是物理日志,记录的是物理数据页的修改,它用来恢复叫后的物理数据页,redo log 分为两部分:内存中的redo log buffer是日志缓冲区,这部分

2020-12-02 16:46:42 1584

原创 MySQL datetime和timestamp区别

dataTime和timestamp的相同点:二者都是用来表示时间的 YY-MM-DD HH:MM:SS不同点:对于timestamp,它会把客户端插入的时间转化为UTC进行存储,查询时将其转化为时间输出;对于datatime,它是原样输入原样输出。二者存储的时间范围也是不一样的:timestamp所能存储的时间范围:‘1970-01-01 00:00:01’ 到 ‘2038-01-19 03:14:07.999999’datatime所能存储的时间访问:‘1000-01-01 00:00:0

2020-12-02 14:20:45 148

空空如也

空空如也

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

TA关注的人

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