自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(201)
  • 资源 (3)
  • 收藏
  • 关注

原创 接口隔离原则在Java中的实际应用

阅读本文大概需要 5分钟 前言 1.接口隔离原则概述 1.1. 定制服务 1.2.接口污染 2.接口隔离原则的实际应用 2.1. 备忘录模式中的体现 前言1. 接口隔离原则概述接口隔离原则前面也讲过就是对接口的隔离,那么为什么要对接口隔离呢?主要因为对外暴露接口时有时并不需要暴暴露所有的接口,只需要暴露一定的接口,因此需要对接口进行一定的隔离,将不需要隔离的接口进行隔离...

2021-02-21 15:22:17 565

原创 依赖倒转原则在工厂模式与模板方法模式中的体现

​阅读本文大概需要 8分钟 前言 1.依赖倒转概述 1.1. 变量的静态类型和真实类型 1.2...

2021-02-16 22:29:35 362 2

原创 里氏代换原则在Java以及设计模式中的体现

​里氏代换原则在Java中的体现前面说了里氏代换原则,那么现在说一下里氏代换原则在Java中的使用。里氏代换原则要求父类类型可以使用的,那么子类一定可以适用。因此子类必须具有基类的全部接口,并且可能更广。如果Java程序破坏了这个条件,那么编译器就会出错。这里以接口为例:在接口中规定了所有的方法都必须是public,这其实就是一种对里氏代换原则的体现,因为接口被其它类所实现,那么接口就是父类,这个父类的类型如果不是public,那么就无法被其它子类调用,就违反了前面说的父类类型...

2021-02-15 22:06:08 265 2

原创 带你认识六种设计原则(开闭原则、里氏代换原则、依赖倒转原则....)

前言 1. 设计原则 1.1. 开-闭原则 1.2.里氏代换原则 1.3. 依赖倒转原则 1.4. 接口隔离原则 1.5.合成/聚合原则 1.6.迪米特法则 前言学习设计模式之前先要了解其中的设计原则,因为一个系统的设计需要遵守一定的原则,通过这些原则实现具体的设计模式。设计原则有以下几种: 开-闭原则 里氏代换原则 依赖倒转原则 ...

2021-02-14 17:10:05 1246

原创 七张图搞懂UML中的类图

​类图概念与解析 类图的构造,类图由四部分构成,分别为:类名、属性层、方法层、性质层,其中除了类名必须存在,其它层可以省略。 类图中的类名如果是正体则说明该类是具体的,如果是斜体字,则表明类是抽象的 类图的第二层是属性层,属性可以是public、private、protected,如果一个属性的左边是加号(+)则该属性是public,左边如果是减号(-)则该类是private,左边如果是井号(#)则该属性是protected。 第三层是方法层,...

2021-02-14 16:44:32 1820

原创 通过具体业务场景学习工厂模式与策略模式

入职新公司后熟悉业务过程中收到一个需求,优化一部分代码逻辑,优化时考虑业务的复杂性于是就想到使用设计模式优化这部分逻辑,将原来强耦合的逻辑拆分,便于以后的维护,分析之后确定使用工厂模式与策略模式。先说下具体业务逻辑:首先业务逻辑中对象分为三个维度,分别为单票、大包、批次,每个维度需要执行不同的逻辑,执行逻辑就需要不同的策略来判断;这里策略有两种情况,分别为首次和重算,最后执行的逻辑则是请求其它服务的具体实现。基于这种场景,首先考虑就是对于维度的拆分,单票、大包、批次都有不同的枚举状态来判断,..

2021-02-05 08:31:02 167

原创 九个月的腾讯外包体验总结

话说一入外包深似海,我却不这么认为,那就以我的体验说下自己的外包之旅。先说下我的出身,19年二本毕业,20年三月份入职的鹅厂外包,毕业前在一个小公司实习一年,大学没什么突出的地方,一直混着过来的,到了大三才晓得找实习公司。以上就是自己的出身,这也是为什么自己不能去大厂只能在外包的原因。基础差,大学名声不够,眼界低…我接触的外包并没有网上说的那么不堪,这反而对我来说是一份不可多得的体验和经历,让我成长了很多很多。1、关于技术九个月的外包并没有做多少项目,一开始做的也是比较简单的SpringBoot+

2021-01-06 22:22:02 6657 4

原创 记录一次腾讯面试经历

腾讯面试定在了晚上七点,并且腾讯会议视频面试,自己在周三接到的面试邀请,面试官添加了微信联系定了时间。初定周四,后续因面试官有事改到周五,面试官交流很客气。这次面试自己也有问题, 没有调试好自己的电脑,因此当说到面试过程中如何写代码时我就知道需要考察算法代码的。但是可能面试官也不想再麻烦直接就开始了。1、自我介绍自我介绍自己按照工作经历以及离职原因、所掌握技术栈、工作之余的兴趣三个方面说了下。这里面试官问了我第二份工作的地点,如实回答外包。2、String、StringBuffer、String

2020-11-25 12:48:32 3099 4

原创 Java Agent与ASM字节码介绍

Java AgentJava Agent是jdk1.5以后引入的,也叫做Java代理。javaAgent是运行方法之前的拦截器。我们利用javaAgent和ASM字节码技术,在JVM加载class二进制文件的时候,利用ASM动态的修改加载的class文件,在监控的方法前后添加计时器功能,用于计算监控方法耗时,同时将方法耗时及内部调用情况放入处理器,处理器利用栈先进后出的特点对方法调用先后顺序做处理,当一个请求处理结束后,将耗时方法轨迹和入参map输出到文件中,然后根据map中相应参数或耗时方法轨迹中的关

2020-11-18 18:36:45 3136

原创 Apache Druid初识

角色OverloadOverload是MiddleManager的master节点,负责索引任务管理MiddleManager索引节点。负责处理索引任务(数据导入)将数据转换为列式存储,负责实时segement的查询。CoodinatorCoodinator是Historical的master节点,负责负载混哼,确保Segement在历史节点之间尽量均衡。Historical历史节点,负责将Segemt加载到本地,负责历史Segement的查询Broker查询节点,负责接受Client查

2020-11-18 18:28:20 344

原创 学习Netty的基本组件及实现流程

一、通信组件在Netty中有网络通信层负责网络之间的通信,在Netty中的网络通信层中存在Bootstrap以及ServerBootstrap两个组件。1.1、ServerBootstrapServerBootstrap用于服务端,会绑定两个EventLoopGroup,分别为BossEventLoopGroup以及WorkerEventLoopGroup,Boss用于接收新的客户端,Worker用户处理连接。EventLoopGroup boss = new NioEventLoopGroup

2020-11-06 16:50:35 172

原创 失效策略:缓存淘汰策略有哪些?

说到失效策略就要知道失效的是什么以及通过什么方式失效?本文涉及知识比较浅,能让你知道什么是LRU以及类似的共享策略,最后用代码具体实现了LRU策略。首先我们知道在计算机中内存是有限的,这就导致了我们存储数据时会出现内存过载的情况,那么此时就需要通过一定的策略将在内存中的数据剔除一部分,空出的部分储存新数据,这就用到了失效策略。对于失效策略我们平时也会接触,比如1、FIFO(First In First Out):先进先出策略,这个就是队列中最长被记住的,先进入的数据先被淘汰。2、LFU.

2020-11-06 16:42:31 617

原创 Elasticsearch的分布式存储与分片内部原理

1、文档如何存储1.1、分片与路由当索引一个文档的时候,文档会被存储到一个主分片中。 Elasticsearch 如何知道一个文档应该存放到哪个分片中呢?当我们创建文档时,它如何决定这个文档应当被存储在分片 1 还是分片 2 中呢?首先这肯定不会是随机的,否则将来要获取文档的时候我们就不知道从何处寻找了。实际上,这个过程是根据下面这个公式决定的shard = hash(routing) % number_of_primary_shardsrouting 是一个可变值,默认是文档的 _id ,也可以

2020-11-06 16:34:20 950

原创 Redis知识点全面汇总

系列文章目录文章目录系列文章目录前言一、数据结构1.字符串2.链表3.字典4.跳跃表5.整数二、持久化机制1.RDB2.AOF三、主从复制旧版:SYNC1、同步2、命令传播新版:PSYNC1、完整重同步2、部分重同步四、哨兵概念:实现:五、集群过程:六、事务实现方法过程WATCH命令实现七、缓存三大问题缓存雪崩缓存穿透缓存击穿八、分布式锁总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学

2020-09-17 17:36:34 351

原创 还不懂Redis事务?看看我的总结应该就懂了

Redis事务原理分析文章目录Redis事务原理分析前言二、事务的分析三、事务的实现3.1、事务的开始3.2、命令入队3.3、事务队列3.4、执行事务四、WATCH命令的实现4.1、使用WATCH命令监视数据库键4.2、监视机制的触发4.3、判断事务是否安全五、总结5.1、错误命令问题5.2、执行过程中发生错误问题5.3、服务器停机问题前言最近一直在看书,但是看书自己也依然是个菜鸡(我好难),我也想成为大佬。# 一、事务事务是一种特性,可以理解为将多个命令打包为一个事务执行的情况

2020-09-04 23:04:44 150

原创 面试问我HashMap原理,我从源码详细分析hashMap的实现原理

**Map、AbstractMap、HashMap对应关系:**

2020-09-02 21:56:25 159

原创 Elasticsearch如何使用模糊查询

系列文章目录了解如何操作Elasticsearch的模糊查询文章目录系列文章目录前言一、模糊查询二、模糊匹配查询总结前言实验的Elasticsearch环境为7.9提示:以下是本篇文章正文内容,下面案例可供参考一、模糊查询fuzzy 查询是 term 查询的模糊等价。 也许你很少直接使用它,但是理解它是如何工作的,可以帮助你在更高级别的 match 查询中使用模糊性。示例:POST /my_index/my_type/_bulk{ "index": { "_id": 1 }}

2020-08-26 21:46:22 4214

原创 从ReentrantLock的实现看AQS的原理

从ReentrantLock的实现看AQS的原理及应用文章目录从ReentrantLock的实现看AQS的原理及应用前言一、ReentrantLock二、AQS三、源码分析1.void lock方法(获取锁)非公平锁代码实现:公平锁代码实现:2.addWaiter方法(线程加入同步队列操作)3.boolean trylock()方法(尝试获取锁)4.void unlock方法(释放锁)5.cancelAcquire方法(取消节点)总结参考资料前言一、ReentrantLockReen

2020-08-26 11:24:58 253

原创 还不懂如何操作Elasticsearch中的索引?总结全部操作给你看

Elasticsearch中对索引的操作总结文章目录Elasticsearch中对索引的操作总结前言一、创建索引二、删除索引三、获取索引四、查询索引是否存在五、关闭索引六、打开索引七、收缩索引八、分割索引九、克隆索引十、过渡索引十一、冻结索引十二、解冻索引十三、解析索引十四、更新索引设置十五、获取索引设置十六、索引恢复十七、分析索引十八、索引分片存储总结前言本文使用的Elasticsearch环境为7.8版本一、创建索引操作语句:PUT /<index>示例:PU

2020-08-25 22:59:01 291

原创 二本毕业一年聊聊自己在鹅厂的外包经历

先说下自己的情况,不知名二本毕业,毕业在小公司干了半年,后因为女朋友原因需要到广东这边发展,于是在二三月份开始了自己的面试。期间面了十几家基本就收到了四个offer,三个小公司的和一个外包鹅厂的,最后考虑再三来了鹅厂(一部分原因是这边的薪资高,另一部分就是其它三个小公司主营方面自己是在觉得没啥可以学习的,所以最后还是来了大深圳的外包。)然后说下自己目前的经历吧,现在已经入职五个月了,入职五个月基本没加过班你们敢信???(一方面是自己负责的项目不是很赶,另一方面就是自己撸代码真的有点快!手动狗头),所.

2020-08-24 22:10:27 1862 3

原创 还不会Elasticsearch的结构化查询(精确、组合、范围、Null值的查询操作),看完这篇就会了

Elasticsearch的结构化查询文章目录Elasticsearch的结构化查询前言一、精确值查询1.内部过滤器的操作二、组合过滤器查询1.组合bool过滤器三、多个精确值查询四、范围查询五、处理Null值1.存在查询2.缺失查询总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。一、精确值查询在Es中实现精确查询一般通过term实现。可以用term查询处理数字(

2020-08-24 21:59:33 802

原创 《Java后端知识体系》之Redis哨兵学习(二)

Redis哨兵学习文章目录Redis哨兵学习前言一、实现过程1.启动初始化Sentinel2.获取主服务器信息3.获取从服务器信息4.向主服务器和从服务器发送信息5.接收来自主服务器和从服务器的频道信息6.检测主观下线状态7.检查客观下线状态8.选举领头Sentinel9.故障转移总结前言学习Redis哨兵是如何实现的一、实现过程1.启动初始化Sentinel在Redis中启动Sentinel可以使用命令来启动,命令如下:代码如下(示例):redis-sentinel /pat

2020-08-23 22:28:20 84

原创 《Java后端知识体系》之Redis集群的实现原理

Redis集群学习文章目录Redis集群学习前言一、基本介绍?二、节点1.概念2.如何使用3.如何启动节点?4.节点结构是咋样的?5.CLUSER MEET命令的具体实现?总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、基本介绍?Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)来进

2020-08-23 22:15:00 166

原创 《后端知识体系系列》之分布式系统中的CAP理论

最近看了分布式是相关知识,所以边看边总结吧!分布式系统的特点随着互联网技术的发展,产生的数据量越来越大,对系统的要求更高,这就要求系统需要支持高并发和海量数据处理。分布式系统技术就是用来解决集中式架构的性能瓶颈问题。以上图为例,系统中实现了登录、订单、支付模块,这些模块都只通过一个系统来承载,那么当大量的请求过来时,这个系统就会存在一定的性能问题,就是所谓的集中式架构的性能瓶颈。分布式系统的核心是可扩展性,通过对服务、存储的扩展,来提高系统的处理能力,通过对多台服务器协同工作,来完成单台服务.

2020-08-16 21:14:47 356

原创 《深入理解Java虚拟机》一书总结(干货满满)

看完《深入理解Java虚拟机》一书,做了一些简单总结,其中复杂的部分自己也没有搞懂,所以就不发表任何总结!1、概念1.1、首先说何为Java虚拟机?Java虚拟机从字面意思直接理解就是运行Java的虚拟机器,既然是虚拟的,那么就是从物理层面来说是不存在于实际的一个机器,它不像电脑这种机器,是实际存在的,而是人们想象的一个机器,因为它能像机器一样做机器可以做的事情。1.2、为什么要使用Java虚拟机我们都知道Java语言是一种高级语言,我们可以从Java语言的特性中进行分析,Java特性包括面向.

2020-08-13 22:47:02 400

原创 《Java后端体系系列》之网络通信框架Netty学习(一)

学习网络通信框架Netty总结1、BIO1.1、概念BIO是同步阻塞模型,服务实现模式为一个连接一个线程。即客户端有连接请求时服务器就会启动一个线程进行处理。即使这个连接不做任何事,也会保持连接状态。这样的情况会造成不必要的线程开销。1.2、场景BIO方式适用于连接数较少且固定的架构,这种方式对服务器资源要求较高,并发局限于应用中,JDK1.4之前唯一的选择。1.3、实现流程工作原理图:1)服务端启动一个ServerSocket2)客户端启动启动Socket对服务器进行通信,默认情况.

2020-08-11 22:09:58 408

原创 《Java后端知识体系》之Redis的哨兵(Sentinel)分析(一)

一、介绍Sentinel(哨兵、哨岗)是Redis的高可用性的解决方案,由一个或多个Sentinel实例(instance)组成的Sentinel系统可以监视多个主服务器,以及这些主服务器下的所有从服务器。Sentinel监视的主服务器下线(断开连接)时,可以自动将该主服务器下的某个从服务器设置为新的主服务器,然后由新的主服务器代替断开连接的主服务器处理命令请求。Sentinel系统监视服务器的例子如下:该图中server1表示主服务器,server2、server3、server4表示主服务器下

2020-08-07 23:34:39 177

原创 《Java后端知识体系》之Redis如何实现主从复制还不懂?看完这篇就全懂了!!!

前面介绍了Redis的持久化机制,那么现在就开始学习Redis的主从复制的功能,学习Redis的主从复制的底层实现原理,那么以后面试也可以多说说这部分知识了!!在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,我们称被复制的服务器为主服务器(master),而对主服务器进行复制的服务器为从服务器(slave)。例如:现在有两个Redis服务器,地址分别为127.0.0.1:6379和127.0.0.1:6377,如果.

2020-08-05 22:14:28 182

原创 《Java后端知识体系系列》之Redis持久化AOF(二)

上一节中知道了AOF是如何进行持久化保存的(保存操作Redis的写命令),还可以通过设置appendfsync来进行不同的持久化行为(always、everysec、no)三个行为不同的持久化结果。1、AOF文件的载入与数据还原因为AOF文件里面包含了重建数据库所需要的所有写命令,所以服务器只要读入重新执行一遍AOF文件里面的命令,就可以还原服务器关闭之前的数据库状态。Redis读取AOF文件并还原数据库的详细步骤如下:创建一个不带网络连接的伪客户端(fake client):因为Redis的命

2020-08-04 22:07:38 203

原创 《Java后端知识体系系列》之Redis持久化AOF(一)

最近一直在看《Redis的设计与实现》一书,做的一些总结吧,以便以后自己复习Redis的知识。一、介绍除了RDB持久化功能之外,Redis还提供了AOF(Append Only File)持久化功能。与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库状态的。例如:redis>SET msg "hello"OKredis>SADD fruits "apple" "banana" "cherry"OKred.

2020-08-03 21:51:14 182

原创 《Java后端知识体系系列》之Redis的RDB持久化(二)

一、间隔性保存1.1 配置在上一节中知道了SAVE和BGSAVE两个命令的区别:SAVE命令由服务器进程执行保存工作,BGSAVE命令由子进程执行保存工作,所以SAVE命令会阻塞服务器,BGSAVE命令则不会。因为BGSAVE命令可以在不阻塞服务器进程的情况下执行,所以Redis允许用户通过设置服务器配置的save选项,让服务器每隔一段时间自动执行依次BGSAVE命令。通过save选项设置多个保存条件,但是只要其中一个条件被满足,服务器就会执行BGSAVE命令。例如,想服务器中提供了三种save选

2020-08-02 19:24:31 121

原创 《Java后端知识体系系列》之Redis的RDB持久化(一)

1.介绍1.1什么是数据库状态Redis是一个键值对数据库服务器,服务器中包含任意个非空数据库,而每个非空数据库中又包含任意个键值对,为了方便起见我们将服务器中的非空数据库以及他们的键值对统称为数据库状态。1.2为什么要进行持久化?Redis是内存数据库,它的数据都保存在内存中,所以如果不将内存中的数据保存到磁盘中,那么一旦Redis进程退出,那么内存中保存的数据也会丢失,所以Redis提供了RDB持久化功能。1.3什么是RDB?RDB是Redis提供的持久化功能,这个功能可以将Redis在内存

2020-07-30 21:32:31 164

原创 《Java后端体系系列》之Redis跳跃表是如何跳的

原文发布在语雀一、定义跳跃表是一种有序的数据结构,它通过在每个节点中维持多个指向其它节点的指针来达到快速访问节点的目的。如下图:节点1有指向节点2、节点3、节点4的指针,这样如果要访问节点4的数据,节点1可以直接通过指向节点4的指针来快速查询节点4的数据,而不需要依次遍历所有的节点。跳跃表的时间复杂度平均位OlogN,最坏为O(N)。在大多数情况下跳跃表的效率可以和平衡树相媲美,并且跳跃表的实现比平衡树更加简单。下图中实现了两个数据结构,平衡树和跳跃表(跳跃表中的数据是顺序存储)如果要

2020-07-29 13:08:38 121

原创 《Java后端知识体系》之Redis的整数集合底层实现

1.整数集合简述整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。例如当我们创建只包含五个元素的集合键,并且集合键中所有元素都是整数值,那么这个集合键的底层实现就会是整数集合:redis>SADD 1 2 3 4 6(integer) 5reids>OBJECT ENCODING numbers"intset"2.整数集合的实现整数集合是Redis用于保存整数值的集合抽象数据结构,它可以保

2020-07-27 14:44:38 116

原创 《Java后端知识体系》之理解Restful架构

知之为知之,不知为不知,是知也!Restful架构一、什么是Restful来自百度百科RESTFUL是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。二、起源REST全程是Representational State Transfer的缩写,翻译过来就是表现层状态转换(摘自),如果一个应用程序应用了该架构,那.

2020-07-26 22:37:21 221

原创 《Java后端知识体系》之带你初识什么是zookeeper及其它的选举过程

知之为知之,不知为不知,是知也!Zookeeper角色Leader:主要负责处理事务相关的操作,负责给Follower发布命令,处理Follower的反馈信息负责同步消息,将消息同步到Follower中可以保证事务处理的顺序性负责投票的发起以及更新系统的状态Follower:负责参与投票选举Leader参与事务的Proposal请求的投票将事务的执行结果反馈给LeaderObserver:作为观察者不参与Leader的选举负责将客户端的写请求转发给Leader.

2020-07-25 23:48:37 150

原创 《Java后端知识体系》之带你认识Paxo算法是如何选举的?

知之为知之,不知为不知,是知也!今天学习zookeeper涉及到了其中的paxos算法,抽空研究了一下paxos算法是如何进行选举的!角色Proposer提议者:负责提出议案,也就是value(vaue是paxos协议中将操作统一抽象为value)。Acceptor批准者:负责处理proposer提出的议案,proposer提出的议案必须获得半数以上的acceptor的批准才能通过。Learner学习者:不参与选举,主要参数相关的状态同步流程。选举流程流程图如下:具.

2020-07-24 22:45:04 257

原创 什么对象可以作为GC Root对象

知之为知之,不知为不知,是知也!Java虚拟机中判断对象是否可回收有两种方式:引用计数法可达性分析法对于可达性分析法,我们知道需要存在一个GC Root的对象作为起点,从这个节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象倒GC Roots没有任何引用链相连(就是从GC Roots到对象不可达)时,则证明此对象是不可用的。那么什么对象可以作为GC Root对象呢?虚拟机栈中的引用对象方法区中类静态属性引用的对象方法区中常量引用对象本地方法栈中JNI引用对象接下来就通过代.

2020-07-23 22:27:33 953

原创 《Java后端知识体系》系列之从源码让你明白Spring是如何解决循环依赖的?

怎么出现循环依赖的异常呢?写了一个例子来实现?@Componentpublic class ModelA { private ModelB modelB; @Autowired public ModelA(ModelB modelB){ this.modelB = modelB; }}@Componentpublic class ModelB { private ModelA modelA; @Autowired publi

2020-07-22 18:58:42 93

原创 相比synchronized,ReentrantLock新增的三个高级功能

Java在保证线程安全问题上可以从两个层面来保证线程安全:1、JVM层面,JVM层面保证线程安全是通过synchronized来实现的2、Java API,Java API方面可以通过JUC并发包中的ReentrantLock来实现在JDK1.5之前synchronized的性能是弱于ReentrantLock的,但是在JDK1.5之后,对synchrnized进行了一些优化,使得synchronized跟ReentantLock在性能上差别不大,JDK1.5之后主要对synchrnized的优化

2020-07-20 21:38:58 439

RedisDesktopManager.zip

redis的可视化工具,可以连接远程redis数据库。无需其它安装程序,windows版本都适用。操作简便,查看数据明了

2020-01-02

javax.jws-3.1.1-b01.jar

项目中缺少jws的jar包可以通过导入jar包的方式进行使用,下载该jar包导入到项目中。积分是csdn设置的太高了,如果想要直接私信我,我发你。

2019-08-27

springcloud-demo-master.zip

该项目整合了springcloud,是springcloud的脚手架,其中包含Ribbon,Netflix Zuul,Eureka,都是独立的模块,便于理解,同时可以在此基础上进行改进。

2019-08-22

空空如也

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

TA关注的人

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