自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MYSQL 数据库配置优化

1、skip_ssl开启HTTPS后会出现内存不足,那是因为,在开启HTTPS访问时会在Apache中新开了一个开放了443端口的虛拟机。为了性能,通常我们会禁用SSL,添加如下参数skip_ssl;查看是否开启SSL: SHOW VARIABLES LIKE ‘%ssl%’; (have openssl表示是否支持SSL)修改配置文件my.cnf,加入以下内容:# disable_sslskip_ssl重启MySQL: service mysqld restart2、max_allo

2022-04-15 14:01:40 8958

转载 JVM内存结构与垃圾回收器介绍

1、运行时数据区堆JVM管理的最大的一块内存区域,存放着对象的实例,是线程共享区。堆是垃圾收集器管理的主要区域,因此也被称为“GC堆”.JAVA堆的分类:从内存回收的角度上看,可分为新生代(Eden空间,From Survivor空间、To Survivor空间)及老年代(Tenured Gen);从内存分配的角度上看,为了解决分配内存时的线程安全性问题,线程共享的JAVA堆中可能划分出多个线程私有的分配缓冲区(TLAB)。JAVA堆可以处于物理上不连续的内存空间中,只要逻辑上是连

2021-05-21 16:09:49 226

原创 ArrayList 和 HashMap简述

1、ArrayListArrayList的底层数据结构就是一个数组,数组元素的类型为Object类型,对ArrayList的所有操作底层都是基于数组的。对ArrayList进行添加元素的操作的时候是分两个步骤进行的,即第一步先在object[size]的位置上存放需要添加的元素;第二步将size的值增加1。由于这个过程在多线程的环境下是不能保证具有原子性的,因此ArrayList在多线程的环境下是线程不安全的。数组进行扩容时,会将老数组中的元素重新拷贝一份到新的数组中,每次数组容量的增长

2021-05-20 18:16:59 1768

原创 Redis问题记录

1、Redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库;缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮;缓存雪崩:当缓存服务器重启或者大量

2021-05-20 17:23:59 170

原创 NIO介绍

一、NIO介绍1、定义NIO(Non-blocking I/O ,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。2、概叙NIO主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入

2021-02-18 12:20:23 4740 1

原创 java打印日志的几种方式

一、简单介绍五种最简单的方式,就是system.println.out(error) ,这样直接在控制台打印消息了;Java.util.logging ; 在JDK 1.4 版本之后,提供了日志的API ,可以往文件中写日志了;log4j , 最强大的记录日志的方式。 可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等;commons-logging, 最综合和常见的日志记录方式, 经常是和log4j 结合起来使用;logback是java的日志开源组件

2021-01-25 11:06:33 12082

原创 MySQL B+树索引和哈希索引的区别

一、B+树索引介绍B+树是一个平衡的多叉树。从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接;在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高。二、哈希索引介绍哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快;三、区别如果是等值查询,那么哈希索引明显有绝对优

2021-01-11 13:45:40 637

原创 分布式锁介绍

一、背景介绍为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用并发处理相关的功能进行互斥控制。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的应用并不能提供分布式锁的能力。为了解决这个问题就需要一种跨机器的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题!二、分布式锁应该具备哪些条件在分布式系统环境下,一个

2020-12-23 17:50:16 421

转载 MYSQL多条件查询索引为什么只用到一个

1、如果经常需要同时对两个字段进行AND查询,那么使用两个单独索引不如建立一个复合索引,因为两个单独索引通常数据库只能使用其中一个,而使用复合索引因为索引本身就对应到两个字段上的,效率会有很大提高。2、与其说是“数据库查询只能用到一个索引”,倒不是说是 和全表扫描/只使用一个索引的速度比起来,去分析两个索引二叉树更加耗费时间,所以绝大多数情况下数据库都是是用一个索引。3、我们来想象一下当数据库有N个索引并且查询中分别都要用上他们的情况:查询优化器(用大白话说就是生成执行计划的那个东西)需要进行N次主二

2020-12-21 18:01:54 1103

原创 Linux查看文件命令

1、tail命令备注tail date.log输出文件末尾的内容,默认10行tail -20 date.log输出最后20行的内容tail -n -20 date.log输出倒数第20行到文件末尾的内容tail -n +20 date.log输出第20行到文件末尾的内容tail -f date.log实时监控文件内容增加,默认10行2、head命令备注head date.log输出文件开头的内容,默认10行hea

2020-11-19 20:50:12 341

原创 Kafka Shell 基本命令

1、创建kafka topic./kafka-topics.sh --zookeeper ip:2181 --create --topic topicName --partitions 3 --replication-factor 2注: partitions指定topic分区数,replication-factor指定topic每个分区的副本数partitions分区数:partitions :分区数,控制topic将分片成多少个log。可以显示指定,如果不指定则会使用broker(se

2020-11-19 20:18:04 346

原创 加密算法简介

1、AES高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体加密流程如下如:2、RSARSA加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它是应用最广泛的非对称加密算法。非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。3、CRC循环冗余校验(Cyclic Redundancy Check

2020-10-22 20:26:50 1358 1

原创 空对象模式(Null Object Pattern)

一、空对象模式介绍1、定义一个空对象取代 NULL 对象实例的检查。Null 对象不是检查空值,而是反应一个不做任何动作的关系。这样的 Null 对象也可以在数据不可用的时候提供默认的行为。2、作用它可以加强系统的稳固性,能有有效地防止空指针报错对整个系统的影响,使系统更加稳定;它能够实现对空对象情况的定制化的控制,能够掌握处理空对象的主动权;它并不依靠Client来保证整个系统的稳定运行;它通过isNull对==null的替换,显得更加优雅,更加易懂;二、代码示例1、不用空对象模式情

2020-09-29 16:46:43 860

原创 状态模式(State Pattern)

一、状态模式介绍①定义当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。②如何使用代码中包含大量与对象状态有关的条件语句;③方法将各种具体的状态类抽象出来;④优点结构清晰,避免了过多的switch…case 或 if…else语句的使用;很好的体现了开闭原则和单一职责原则,想要增加状态就增加子类,想要修改状态就修改子类即可;封装性非常好,状态变化放置到了类的内部来实现,外部调用不需要知道类内部如何实现状态和行为的变换;⑤缺点子类会太多,也即类膨胀;⑥注意事

2020-09-24 20:54:51 172

原创 观察者模式(Observer Pattern)

一、观察者模式介绍①定义指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式;②优点降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。目标与观察者之间建立了一套触发机制。③缺点目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。当观察者对象很多时,通知的发布会花费很多时间,影响程序的效率。④模式的结构抽象主题(Subject)角色:也叫抽象

2020-09-24 20:12:46 108

原创 备忘录模式(Memento Pattern)

一、备忘录模式介绍①定义保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。②使用场景需要保存和恢复数据的相关场景;提供一个可回滚的操作,如ctrl+z、浏览器回退按钮、Backspace键等;需要监控的副本场景;③应用实例游戏存档;ctrl+z键、浏览器回退键等(撤销/还原);棋盘类游戏的悔棋;数据库事务的回滚;④优点给用户提供了一种可以恢复状态的机制,可以使用能够比较方便地回到某个历史的状态;实现了信息的封装,使得用户不需要关心状态的保存细节

2020-09-23 20:33:05 118

原创 中介者模式(Mediator Pattern)

一、中介者模式介绍①定义是用来降低多个对象和类之间的通信复杂性。这种模式提供一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。②设计原则高内聚、低耦合,使用中介者明显降低了对象之间的耦合;③应用场景当有多个对象彼此间相互交互的时候,自然就会想到对象间的耦合度过高,解决办法就是封装对象间的交互行为,因此就能想到中介者模式就是干这行的。④优点通过让对象彼此解耦,增加对象的复用性;通过将控制逻辑集中,可以简化系统维护;通过中介者使一对所变成一对

2020-09-22 20:47:42 131

原创 迭代器模式(Iterator Pattern)

一、迭代器模式介绍①定义迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又无需暴露该对象的内部实现,这样既可以做到不暴露集合的内部机构,又可让外部代码透明地访问几核内部的数据。②结构抽象容器角色(Aggregate):负责提供创建具体迭代器角色的接口,一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。具体容器角色(ConcreteAggregate):就是实现抽象容器的具体实现类,比如List接口的有序列表实现Ar

2020-09-22 20:01:09 93

原创 解释器模式(Interpreter Pattern)

一、解释器模式介绍①定义:给分析的对象定义一个语言,并定义该语言的文法表示,再设计一个解释器解释语言中的句子。也就是说,用编译语言的方式来分析应用中的实例;②优点:扩展性好:由于在解释器模式中使用类来表示语言的文法规则,因此可以通过继承等机制来改变或扩展文法。容易实现:在语法树中的每个表达式节点类都是相似的,所以实现其文法较为容易。③缺点执行效率较低。解释器模式中通常使用大量的循环和递归调用,当要解释的句子较复杂时,其运行速度很慢,且代码的调试过程也比较麻烦。会引起类膨胀。解释器模式中

2020-09-15 20:44:00 119

原创 命令模式(Command Pattern)

一、命令模式介绍1、定义是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令;命令模式属于对象的行为模式,命令模式又称为行动(Action)模式或交易(Transaction)模式;命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。2、优点降低了系统耦合度;新的命令可以很容易添加到系统中去。3、缺点使用命令模式可

2020-09-10 21:01:35 128

原创 责任链模式(Chain of Responsibility Pattern)

一、责任链模式介绍1、定义责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链,每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把请求传给下一个接收者,依此类推;责任链模式避免了请求的发送者和接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连成一条链,并且沿着这条链传递请求,直到有对象处理它为止。2、优点降低耦合度。它将请求的发送者和接收者解耦;简化了对象,使得对象不需要知道链的结构;增强给对象指派职

2020-09-10 19:59:57 83

原创 享元模式(Flyweight Pattern)

一、享元模式介绍①定义享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。属于结构型模式,提供了减少对象数量从而改善应用所需的对象结构的方式。②应用场景系统中有大量对象时;这些对象消耗大量内存时;这些对象的状态大部分可以外部化时;③优点大大减少了对象的创建,降低了程序内存的占用,提高效率;④缺点提高了系统的复杂度。需要分离出内部状态和外部状态,而外部状态具有固化特性,不应该随着内部状态的改变而改变;⑤方法用唯一标识码判断,如果在内存

2020-09-07 20:13:31 158

原创 装饰器模式(Decorator Pattern)

一、装饰器模式介绍①定义:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。②使用场景扩展一个类的功能。动态增加功能,动态撤销。③优缺点优点:饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。缺点:多层装饰比较复杂。④小结装饰模式用于动态地给一个对象增加一些额外的职责,是一种对象结构型模式。装饰模式包含四

2020-08-24 20:57:15 85

原创 组合模式(Composite Pattern)

一、组合模式介绍①定义组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。②使用场景当想表达对象的部分-整体的层次结构时;希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象时。③优点无需关系处理的单个对象,还是组合的对象容器,

2020-08-13 19:55:17 165

原创 过滤器模式(Filter Pattern)

一、定义过滤器模式(Filter Pattern)或标准模式(Criteria Pattern)是一种设计模式,这种模式允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。二、代码实现public class Person { private String name; private String gender; private String maritalStatus;

2020-08-13 19:35:52 480

转载 Shiro简单介绍

一、shiro介紹①简介Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。并且相对于其他安全框架,Shiro 要简单的多。本教程只介绍基本的 Shiro 使用,不会过多分析源码等,重在使用。相比较 Spring Security,Shiro 小巧的多。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。这不就是我们想要的嘛,而且 Shiro 的 API

2020-08-06 20:50:49 165

原创 桥接模式(Bridge Pattern)

一、桥接模式介绍①模式定义:将抽象化部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式。②模式结构Abstraction:抽象类;RefinedAbstraction:扩充抽象类;Implementor:实现类接口;ConcreteImplementor:具体实现类 。③模式分析抽象化:抽象化就是忽略一些信息,把不同的实体当作同样的实体对待。在面向对象中,将对象的共同性质抽取出来形

2020-07-30 20:54:07 237

原创 原型模式(Prototype Pattern)

一、原型模式介绍①定义:是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。②优缺点:优点:性能提高。逃避构造函数的约束。缺点:配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。必须实现 Cloneable 接口。③角色客户(Client)角色:客户类提出创建对象的请求;。抽象原型(Prototype)角色:此角

2020-07-29 20:47:19 100

原创 单例模式(Singleton Pattern)

一、单例模式介绍①定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。②特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点;③优缺点:优点:在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存);避免对资源的多重占用(比如写文件操作)。缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。④使用场景要求生产唯一序列号。

2020-07-28 19:50:46 82

原创 外观模式(Facade Pattern)

一、外观模式介绍①定义:是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。②模式的结构:外观(Facade)角色:为多个子系统对外提供一个共同的接口;子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它;客户(Client)角色:通过一个外观角色访问各个子系统的功能。③优缺点优点:降低了子系统与客户端之

2020-07-28 19:18:16 221

转载 适配器模式(Adapter Pattern)

一、适配器接口介绍①定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。②角色:Target(目标抽象类):目标抽象类定义客户所需接口,可以是一个抽象类或接口,也可以是具体类;Adapter(适配器类):适配器可以调用另一个接口,作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心,在对象适配器中,它通过继承Target并关联一个Adaptee对象使二者产生联系;Adaptee(适配者类):适配者即被适配的角

2020-07-21 20:52:51 137

原创 模板模式(Template Pattern)

一、模板方法介绍①、定义:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的重复代码全部在父类里面,不同业务的,抽取给子类进行实现。②、优点把不可改变的封装起来,把能够改变的扩展开来;他把很多类的共同操作给封装了起来,利于维护;其实我们发现,我们在定义行为时候都是由父类去定义,然后子类去实现即可。③、缺点缺点很简单,我们发现虽然我们把一些类的共同操作封装了起来,但是当这些类比较多时,效果就不好了,因为有一个拓展子类都需要继承它,子

2020-07-21 20:16:38 110

原创 建造者模式(Builder Pattern)

一、建造者模式介绍①定义:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的。②优点:各个具体的建造者相互独立,有利于系统的扩展。客户端不必知道产品内部组成的细节,便于控制细节风险。③缺点:产品的组成部分必须相同,这限制了其使用范围。如果产品的内部变化复杂,该模式会增加很多的建造者类。二、模式的结构

2020-07-21 20:01:10 89

原创 代理模式(Proxy Pattern)

一、定义1、由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。2、优点代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;代理对象可以扩展目标对象的功能;代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度;3、缺点在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢;增加了系统的复杂度;二、代理模式结构代理模式的主要角色如下。抽象主题(Subj

2020-07-20 18:04:43 100

原创 设计模式介绍

一、 软件设计模式的概念软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。二、学习设计模式的意义设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类

2020-07-20 16:48:57 127

转载 Java8新特性之三:Stream API

https://www.cnblogs.com/wuhenzhidu/p/10740091.html

2020-07-10 11:07:07 68

转载 Spring事物介绍

1、事务的特性原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受

2020-05-27 17:58:34 242

原创 Dubbo基本知识

1、什么是DubboDubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用,说白了就是个远程服务调用的分布式框架。告别Web Service模式中的wsdl,以服务者与消费者的方式在dubbo 上注册)。其核心部分包含:1.远程通讯,提供对多种基于长连接的NiO框架抽象封装,包括多种线程模型,序

2020-05-13 15:03:42 131

原创 Zookeeper基本知识介绍

1、什么是zookeeperZookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证

2020-05-12 16:10:13 180

原创 多线程介绍

一、多线程入门1、线程与进程区别:进程是所有线程的集合,每一个线程是进程中的一条执行路径;2、多线程优点:多线程的好处提高程序的效率;3、多线程创建方式:继承Thread类 重写run方法public class Main {public static void main(String[] args) {new MyThread().start();}}class MyT...

2020-02-24 14:37:36 95

空空如也

空空如也

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

TA关注的人

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