- 博客(24)
- 问答 (2)
- 收藏
- 关注
原创 Nacos原理刨析
什么是Nacos?nacos是一款CP(强一致性)的统一管理配置中心、服务注册与发现的中间件Nacos服务注册需要具备的能力服务提供者把自己的协议地址注册到Nacos server服务消费者需要从Nacos Server上查询服务提供者的地址,根据服务名称Nacos Server需要感知到服务提供者的上下线 的状态变化服务消费者需要动态感知到Nacos Server端服务地址的变化Nacos的实现原理通过一张图来了解一下Nacos的实现原理图中的流程与eureka很像,不同的是在Na
2021-03-11 20:03:54 3708 1
原创 dubbo学习之应用
为什么要用dubbo远程通信的背景技术架构的发展从单体到分布式,是一种顺势而为的架构演进,也是一种被逼无奈的技术变革。架构的复杂度能够体现公司的业务的复杂度,也能从侧面体现公司的产品的发展势头是向上的。和传统的单体架构相比,分布式多了一个远程服务之间的通信,不管是soa还是微服务,他们本质上都是对于业务服务的提炼和复用。那么远程服务之间的调用才是实现分布式的关键因素而在远程通信这个领域,其实有很多的技术,比如Java的RMI、WebService、Hessian、Dubbo、Thrift等RPC框架
2021-03-10 15:03:14 128
原创 SpringCloud组件原理刨析之Ribbon
什么是RibbonRibbon是一个提供在客户端的负载均衡的组件,相对于nginx会较轻量级。Ribbon的本质其实就是一个拦截器。相信大家都知道在使用Ribbon的时候,会和RestTemplate一起使用,在使用RestTempplate的时候,但此时的URL是一个htpp://servername/method的一个形式,所以Ribbon会在调用前,进行拦截,将Url解析成,http://ip+port的的形式,然后在进行负载均衡相关算法来分发HTTP请求。解析基于配置中的服务器列表基于负载均
2021-03-10 12:24:49 166
原创 JVM学习
初始JVM什么是JVMJVM它是Java Virtual Machine的缩写,主要是通过在实际计算机模仿各种计算机功能来实现的,组成部分包括堆、方法区、栈、本地方法栈、程序计算器等部分组成的,其中方法回收堆和方法区是共享区,也就是谁都可以使用,而栈和程序计算器,本地方法栈区是归JVM的。Java能够被称为“一次编译,到处运行”的原因就是Java屏蔽了很多的操作系统平台相关信息,使得Java只需要生成在JVM虚拟机运行的目标代码也就是所说的字节码,就可以在多种平台运行了解JRE、JVM、JDK三者的
2020-07-20 17:06:46 431
原创 zookeeper应用及其原理学习
认识zookeeperApache ZooKeepe是一个高可靠的分布式协调中间件。它是Google Chubby的一个开源实现,那么它主要是用来解决,分布式一致性问题的组件,同时,也是粗粒度的分布式锁服务分布式一致性问题什么是分布式一致性问题?简单来说,就是izai一个分布式系统中,有多个节点,每个节点都会提出一个请求,但在所有节点中只能确定一个请求被通过。而这个通过是需要所有节点达成一致的结果,所以所谓的一致性就是在提出的所有请求中能够选出最终一个确定请求。并且这个请求选出来以后,所有的节点都要
2020-07-06 17:10:34 556
原创 mysql之事务与锁机制
什么是事务事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个特性,通常简称为事务的ACID属性。原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。在mysql里面有个undo.log日志,是用来让数据回滚的,从而来保证操作的原子性。一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确
2020-06-12 09:14:43 178
原创 MySQL之索引
什么是索引索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构可以理解为“排好序的快速查找数据结构”。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引索引的优劣势优势:类似大学图书馆建书目索引,提高数据检索效率,降低数据库的IO成本通过索引对数据进行排序,降低数据排序的成本,降低了CPU的消耗劣势:实际上索引也是一张表,该表保存了主键
2020-06-05 09:50:11 82
原创 分布式之远程通信协议
HTTP协议通信原理说到通信,就一定会提起tcp和upd这两种通信协议,以及建立连接的握手过程。而http协议的通信时基于tcp/ip协议之上的一个应用层协议,应用层协议除了http还是有FTP,DNS,SMTP,Telnet等。涉及到网络协议,我们一定需要知道OSI七层网络模型和TCP/IP四层概念模型,OSI七层网络模型包含(应用层,表示层,会话层,传输层,网络层,数据链路层,物理层)。TCP/IP四层概念模型包含(应用层,传输层,网络层,数据链路层)。请求发起过程,在tcp/ip四层网络模型
2020-05-22 17:58:15 453
原创 Java多线程并发编程(五)之线程池
什么是线程池在Java中,如果每个请求到达就创建一个新线程,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。如果在一个JVM里创建太多的线程,可能会使系统由于过度消耗内存或CPU切换过度,而导致系统资源不足。为了解决这个问题,就有了线程池的概念,线程池的核心逻辑就是提前创建好若干个线程放在一个容器中。如果有任务需要处理,则将任务直接分配给线程池中的线程任务来执行,任务处理完以后这个线程不会被销毁,而是等待后续分配任务。同时通过线程池来重复管理线程
2020-05-21 15:11:33 400 2
原创 Java多线程并发编程(五)之Condition
ConditionSynchroized实现线程通信的方式是通过,wait/notify。那么JUC里面是如何实现线程通信的呢?今天来学习一下ConditionCondition是一个多线程协调通信,它可以让某些线程一起等待某个条件,只有满足条件时,线程才会被唤醒Condition的基本使用Condition一般都是通过condition.await()让当前对象进入等待状态并且释放锁和condition.signal()唤醒等待队列里面的线程,配合使用。看代码:public class Cond
2020-05-13 16:04:35 462
原创 Java多线程并发编程(四)之AQS
J.U.C简介Java.util.concurrent是并发编程中常用的工具包里面包含很多用在来并发场景中使用的组件。比如线程池,阻塞队列,计时器,同步器并发集合等等。LockLock在JUC中是最核心的组件,前面说过在synchronized的时候说过,锁最重要的特性就是解决并发安全问题。这里主要利用Lock作为切入点,去了解AQS,因为Lock在绝大部组件中都有使用到。Lock简介在Lock接口出现之前,Java中的应用程序只能基于sychronized关键字来解决并发安全性问题。但是sync
2020-05-12 16:24:10 279
原创 Java多线程并发编程(三)之volatile关键字
初识Volatile关键字首先通过一段代码来看看Volatile的效果public class VolatileDemo { public /*volatile*/ static boolean a = false; public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(()->{ try {
2020-05-09 11:14:21 294
原创 Java多线程并发编程基础二之synchronized关键字
多线程带来的问题线程的合理使用会使得我们的程序性能大大的提高。一般通过两种方式来提高我们自己的程序,第一种是利用多核 cpu 以及超线程技术来实现线程的并行执行,第二种是线程的异步化执行相比于同步执行来说,异步执行能够很好的优化程序的处理性能提升并发吞吐量。凡事都会有利有弊,利用多线程技术确实会为我们来提高程序的性能,但它也会来相关的问题。比如:多线程对于共享数据的访问带来的安全性问题,例如一个...
2020-05-07 21:46:20 197
原创 Java多线程并发编程基础之一
线程的生命周期如图,线程的生命周期总共分为五步:新建状态:创建线程。一般创建线程有三种方式:1.实现Runnable接口 2.继承Thread对象 3.实现Callable接口通过FutureTask包装器来创建Thread线程 4.使用ExecutorService、Callable、Future实现有返回结果的多线程就绪状态:通过调用star()方法,可以让线程进入就绪状...
2020-05-07 15:41:25 243
原创 设计模式之建造者模式
建造者模式(Builder Pattern)定义:是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示特征:用户只需要指定需要建造的类型就可以获得对象,建造过程及细节不需要了解。 (把建造的步骤交给用户,把建造的结果交给自己)优点:封装性好,创建和使用分离。扩展性好,建造类之间独立,一定程度上解耦缺点:产生多余的Builder对象。产品内部发送变化,建造者都要修...
2020-04-01 10:41:59 66
原创 设计模式之原型模式
原型模式(Prototype Pattern)定义:是指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的绣有。(原型模式的核心就是拷贝)调用者不需要知道任何创建细节,不调用构造函数。(类似工厂模式和单例模式)属于创建者模式使用场景:类初始化消耗资源较多new产生的一个对象需要非常繁琐的过程(数据准备,访问权限等)构造函数比较复杂循环体重生产大量对象时优点:性能...
2020-03-31 16:45:22 118
原创 设计模式之单例模式
单例模式(Singleton Pattern)定义:是指确保一个类在任何情况下都绝对只有一个实例,并且提供一个全局访问点。隐藏其所有的构造方法。属于创建型模式使用场景:确保任何情况都绝对只有一个实例。例如:ServletContext,ServletConfig,ApplicationContext,DBPool单例模式的常见写法:饿汉式单例懒汉式单例注册式单例ThreadLoca...
2020-03-30 19:10:51 122
原创 设计模式之委派模式
委派模式(Delegate pattern)定义:委派模式又叫委托模式。它的基本作用就是负责任务的调度和任务的分派,将任务的分配和执行分离开来。可以看做是一种特殊情况瞎的静态代理的全权代理。不属于GOF 23种设计模式之一。属于行为型模式使用场景:委派对象本身不知道如何处理一个任务或请求,把请求交给其他对象来处理。实现程序的解耦优点:通过任务委派能够讲一个大型的任务细化,然后通过统一管理这些...
2020-03-29 20:04:02 111
原创 设计模式之工厂模式
工厂模式 (factory pattern)简单工厂模式(simple factory pattern) 是产品的工厂定义:是指由一个工厂对象决定创建出哪一种产品类的实例,属于创建型模式,但它不属于GOF 23种设计模式使用场景:工厂类负责创建的对象较少。客户端只需要传入工厂类的参数,对于如何创建对象的逻辑不需要关心优点:使用方式简单,只需要传一个正确的参数,而不需要关注对象的创建逻辑...
2020-03-27 15:15:15 69
原创 org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
最近在搭建springcloud项目时,启动项目时,由于外网无法访问搭建在阿里云服务器的kafka队列,从而报org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.百度了各种资料,什么修改kafka外网配置,服务器kafka与项目的kafka版本不兼容及其相关的东西都无法...
2019-08-03 15:24:52 4280
原创 SpringCloud学习
Spring Cloud 是什么?Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。Spring Cloud 并不重复造轮子,而是将市面上开发得比较好的模块集成进去,进行封装,从而减少了各模块的开发成本。换句话说:Spring Cloud 提供了构建分布式系统所需的“全家桶”。Sp...
2019-07-25 17:23:33 150
原创 Java并发编程了解及学习
并发介绍线程的优点: 1.提供资源的利用率 2.提高程序性能线程的风险: 1. 死锁 2. 上下文切换 3. 线程安全多线程的实现方式Thread类Runnable接口Callablefuture当多个线程同一时间运行同一段代码,线程会竞争,成员变量就会产生问题。那么如何解决这类问题呢?给方法加 synchronized(同步锁),建议给关键代码加 syn...
2019-07-18 18:12:46 107
原创 redis高速缓存学习
为什么要用缓存运行在内存中,加载速度非常快,缺点:不能持久化,重启就丢失了数据。三大缓存插件:EHcache 轻量级缓存 它是运行在单机内存里的,方便简易。 缺点:容量非常有限,应用场合主要是单机应用。Memcache 存储类型单一 ,只能存储字符串。redis 存储类型多样化 性能非常高 可靠性很高 使用场景非常多redis缓存是什么东西redis 是一种n...
2019-07-17 09:55:51 248
转载 java网络编程
初学网络编程1.计算机网络概述2.网络编程概述3.网络通讯方式4.网络编程技术客户端服务器端客户端服务器端服务器端代码线程逻辑网络协议1.计算机网络概述网络编程的实质就是两个或者多个计算机互相沟通,传输数据。既然是多个计算机互相沟通,那么如何找到自己需要对话的哪台计算机则成为了关键。于是就引入了ip地址这个概念,在计算机网络中,现在命名IP地址的规定是IPv4协议,该协议规定每个IP地址由4...
2019-07-02 11:24:45 108
空空如也
最近开发,发现数据库时不时的会出现一些重复的数据,还望大佬指点
2019-07-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人