自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Redis 消息队列的三种方案(List、Streams、Pub/Sub)

目录标题:前言一、回顾消息队列二、Redis 实现消息队列2.1 List 实现消息队列2.1.1List 常用命令2.1.2即时消费问题2.1.3可靠队列模式 | ack 机制2.2 订阅与发布实现消息队列2.2.1Pub/Sub 常用命令:2.3 Streams 实现消息队列2.3.1Stream 常用命令2.3.2CRUD 工程师上线最后前言现如今的互联网应用大都是采用 分布式系统架构 设计的,所以 消息队列 已经逐渐成为企业应用系统 内部通信 的核心手段,它具有 低耦合、可靠投递、广播、流量控制

2021-01-29 14:06:48 353

原创 面试遇到Java中JVM的相关问题(二)

目录:1.Java内存结构2.什么时候会触发FullGC(1)旧生代空间不足(2)Permanet Generation空间满(3)CMS GC时出现promotion failed和concurrent mode failure(4)统计得到的Minor GC晋升到旧生代的平均大小大于旧生代的剩余空间3.类的生命周期4.垃圾收集算法5.调优命令有哪些?6.调优工具面试题解:1.Java内存结构方法区和对是所有线程共享的内存区域;而java栈、本地方法栈和程序员计数器是运行是线程私

2021-01-25 15:44:18 106 1

原创 面试遇到Java中JVM的相关问题(一)

目录:面试题解:1、知识点汇总2、知识点详解:(1)JVM内存模型:(2)栈:(3)本地方法栈(4)程序计数器(5)堆(6)方法区(7)JVM 内存可见性3、类加载与卸载加载过程(1)加载机制-双亲委派模式(2)分代回收(3)回收算法4、简述一下JVM的内存模型(1)JVM内存模型简介(2)线程私有区(3)线程共享区面试题解:1、知识点汇总JVM是Java运行基础,面试时一定会遇到JVM的有关问题,内容相对集中,但对只是深度要求较高.其中内存模型,类加载机制,GC是重点方面.性能调优部分更偏向应用

2021-01-21 14:50:44 140

原创 Java常见的面试题(三)

目录:面试题:1.a=a+b与a+=b有什么区别吗?2.try catch finally,try里有return,finally还执行么?3. 简述线程、程序、进程的基本概念。以及他们之间关系是什么?4.Java 序列化中如果有些字段不想进行序列化,怎么办?5.Java 中 IO 流面试题:1.a=a+b与a+=b有什么区别吗?+= 操作符会进行隐式自动类型转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类型,而a=a+b则不会自动进行类型转换.如:byte a = 127;byt

2021-01-20 14:23:41 105 1

原创 Java常见的面试题(二)

目录:1.Collection包结构,与Collections的区别2.Java的四种引用,强弱软虚(1)强引用(2)软引用(3)弱引用(4)虚引用3.泛型常用特点 (待补充)4.final有哪些用法?5.static都有哪些用法?面试题:1.Collection包结构,与Collections的区别Collection是集合类的上级接口,子接口有 Set、List、LinkedList、ArrayList、Vector、Stack、Set;Collections是集合类的一个帮助类

2021-01-19 13:54:31 62

原创 面试必备Java考题(一)

目录:1.instanceof 关键字的作用2.equals与==的区别3.String、String StringBuffer 和 StringBuilder 的区别是什么?4.ArrayList和linkedList的区别5.HashMap和HashTable的区别面试考题:1.instanceof 关键字的作用instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:boolean result = obj instanceof Clas

2021-01-18 14:08:38 116

原创 设计模式-合成复用原则-》面向对象设计原则

合成复用原则是面向对象设计原则的 7 条原则中剩下的最后一条,下面我们将对其进行详细地介绍。合成复用原则的定义合成复用原则(Composite Reuse Principle,CRP)又叫组合/聚合复用原则(Composition/Aggregate Reuse Principle,CARP)。它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。如果要使用继承关系,则必须严格遵循里氏替换原则。合成复用原则同里氏替换原则相辅相成的,两者都是开闭原则的具体实现规范。

2021-01-15 14:56:19 76

原创 设计模式-迪米特法则-》面向对象设计原则

迪米特法则的定义迪米特法则(Law of Demeter,LoD)又叫作最少知识原则(Least Knowledge Principle,LKP),产生于 1987 年美国东北大学(Northeastern University)的一个名为迪米特(Demeter)的研究项目,由伊恩·荷兰(Ian Holland)提出,被 UML 创始者之一的布奇(Booch)普及,后来又因为在经典著作《程序员修炼之道》(The Pragmatic Programmer)提及而广为人知。迪米特法则的定义是:只与你的直接朋

2021-01-14 09:49:14 73

原创 设计模式-接口隔离原则-》面向对象设计原则

接口隔离原则的定义接口隔离原则(Interface Segregation Principle,ISP)要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法。2002 年罗伯特·C.马丁给“接口隔离原则”的定义是:客户端不应该被迫依赖于它不使用的方法(Clients should not be forced to depend on methods they do not use)。该原则还有另外一个定义:一个类对另一个类的依赖应该建立在最小的接口上(The depe

2021-01-13 10:26:05 76

原创 设计模式-职责原则-》面向对象设计原则

单一职责原则的定义单一职责原则(Single Responsibility Principle,SRP)又称单一功能原则,由罗伯特·C.马丁(Robert C. Martin)于《敏捷软件开发:原则、模式和实践》一书中提出的。这里的职责是指类变化的原因,单一职责原则规定一个类应该有且仅有一个引起它变化的原因,否则类应该被拆分(There should never be more than one reason for a class to change)。该原则提出对象不应该承担太多职责,如果一个对象承

2021-01-12 11:28:09 51

原创 设计模式-依赖倒置原则-》面向对象设计原则

依赖倒置原则的定义依赖倒置原则(Dependence Inversion Principle,DIP)是 Object Mentor 公司总裁罗伯特·马丁(Robert C.Martin)于 1996 年在 C++ Report 上发表的文章。依赖倒置原则的原始定义为:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象(High level modules shouldnot depend upon low level modules.Both should depe

2021-01-11 10:39:41 66

原创 设计模式-里氏替换原则-》面向对象设计原则

里氏替换原则的定义里氏替换原则(Liskov Substitution Principle,LSP)由麻省理工学院计算机科学实验室的里斯科夫(Liskov)女士在 1987 年的“面向对象技术的高峰会议”(OOPSLA)上发表的一篇文章《数据抽象和层次》(Data Abstraction and Hierarchy)里提出来的,她提出:继承必须确保超类所拥有的性质在子类中仍然成立(Inheritance should ensure that any property proved about supert

2021-01-09 10:13:41 89

原创 设计模式-开闭原则-》面向对象设计原则

前言:在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据 7 条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。我们将在下面的几节中依次来介绍这 7 条原则,本节首先介绍开闭原则。开闭原则的定义开闭原则(Open Closed Principle,OCP)由勃兰特·梅耶(Bertrand Meyer)提出,他在 1988 年的著作《面向对象软件构造》(Object Oriented Software Construction)中提出:软件

2021-01-08 10:16:23 79

原创 lambda表达式你了解多少?(二)

今日主题:lambda表达式(二)简介lambda表达式是什么呢?是JDK8的一个新特性,他的优势有很多,可以简化很多操作,我们现在来讲讲吧!环境JDK8lambda表达式语法精简public class Syntax2 { public static void main(String[] args) { //语法精简 //1.参数 //由于在接口的抽象方法中,已经定义了参数的数量和类型,所以在lambda表达式中,参数的类型可以忽略 //备注:如果需要省略参数类型,则每一个参

2021-01-07 10:40:15 97

原创 lambda表达式你了解多少?(一)

今日主题:lambda表达式(一)简介:lambda表达式是什么呢?是JDK8的一个新特性,他的优势有很多,可以简化很多操作,我们现在来讲讲吧!环境:JDK8什么是lambda表达式Lambda是JAVA8添加的一个新的特性。说白了,Lambda就是一个匿名函数。为什么要用它使用Lambda表达式可以对一个接口进行非常简洁的实现。lambda对接口的要求虽然可以使用Lambda表达式对某些接口进行简单的实现,但是并不是所有的接口都可以用Lambda表达式来实现。要求接口中定义的必须要实现

2021-01-06 10:01:26 139

原创 你对CyclicBarrier(循环栅栏)的了解有多少

目录:1 CyclicBarrier 的应用场景2 CyclicBarrier 的使用示例3 CyclicBarrier 源码分析4 CyclicBarrier 和 CountDownLatch 的区别前言:CyclicBarrier 和 CountDownLatch 非常类似,它也可以实现线程间的技术等待,但是它的功能比CountDownLatch 更加复杂和强大。主要应用场景和 CountDownLatch 类似。CountDownLatch的实现是基于AQS的,而CycliBarrier

2021-01-05 11:35:01 75

原创 你真的懂CountDownLatch (倒计时器)吗?

前言:CountDownLatch允许 count 个线程阻塞在一个地方,直至所有线程的任务都执行完毕。在 Java 并发中,countdownlatch 的概念是一个常见的面试题,所以一定要确保你很好的理解了它。CountDownLatch是共享锁的一种实现,它默认构造 AQS 的 state 值为 count。当线程使用countDown方法时,其实使用了 tryReleaseShared 方法以CAS的操作来减少state,直至state为0就代表所有的线程都调用了countDown方法。当调用aw

2021-01-04 10:09:29 200

原创 允许多个线程同时访问的Semaphore(信号量)

synchronized 和 ReentrantLock 都是一次只允许一个线程访问某个资源,Semaphore(信号量)可以指定多个线程同时访问某个资源。示例代码如下:/**** @author Snailclimb* @date 2018年9月30日* @Description: 需要一次性拿一个许可的情况*/public class SemaphoreExample1 { // 请求的数量 private static final int threadCount =

2020-12-31 15:22:28 283

原创 带你了解了解AQS 及其中原理

目录:1 AQS 简单介绍2 AQS 原理(1)AQS 原理概览(2) AQS 对资源的共享方式(3)AQS 底层使用了模板方法模式内容:1 AQS 简单介绍AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 ReentrantLock,Semaphore,其他的诸如 Reentra

2020-12-30 16:56:53 249

原创 JVM必备面试题(二)

目录:1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?2.Java内存结构3.对象分配规则4.类的生命周期5.调优命令有哪些?面试题目:1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件

2020-12-29 17:41:32 81

原创 JVM必备面试题(一)

目录:1、知识点汇总2、知识点详解3、类加载与卸载4、堆和栈的区别5、什么时候会触发FullGC面试题目:1、知识点汇总JVM是Java运行基础,面试时一定会遇到JVM的有关问题,内容相对集中,但对只是深度要求较高.其中内存模型,类加载机制,GC是重点方面.性能调优部分更偏向应用,重点突出实践能力.编译器优化和执行模式部分偏向于理论基础,重点掌握知识点.需了解内存模型各部分作用,保存哪些数据.类加载双亲委派加载机制,常用加载器分别加载哪种类型的类.GC分代回收的思想和依据以及不同

2020-12-28 20:41:51 165 2

原创 Java必备面试题(二)

目录:1. Java的四种引用,强弱软虚2.a=a+b与a+=b有什么区别吗?3.try catch finally,try里有return,finally还执行么?4.Java 中 IO 流5.java反射的作用于原理*面试题目:1. Java的四种引用,强弱软虚(1)强引用强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收,使用方式:String str = new String("str");(2)软引用软引用在程序内存不足时,会被回收,使用方式:

2020-12-25 20:28:31 105

原创 Java必备面试题(一)

目录:1、 Java语言有哪些特点2、instanceof 关键字的作用3、 重载和重写的区别4、 equals与==的区别5、 Hashcode的作用6、 HashMap和HashTable的区别7、 Collection包结构,与Collections的区别8、Java创建对象有几种方式?9、深拷贝和浅拷贝的区别是什么?10、static都有哪些用法?面试题目:1、 Java语言有哪些特点(1)简单易学、有丰富的类库(2)面向对象(Java最重要的特性,让程序耦合度更低,内聚

2020-12-24 16:59:53 113

原创 JAVA 中AQS原理

目录:AQS 原理概览AQS 对资源的共享方式1)Exclusive(独占)2)Share(共享)前言:在面试中被问到并发知识的时候,大多都会被问到“请你说一下自己对于 AQS 原理的理解”。下面给大家一个示例供大家参考,面试不是背题,大家一定要加入自己的思想,即使加入不了自己的思想也要保证自己能够通俗的讲出来而不是背出来。下面大部分内容其实在 AQS 类注释上已经给出了,不过是英语看着比较吃力一点,感兴趣的话可以看看源码。1. AQS 原理概览AQS 核心思想是,如果被请求的共享资

2020-12-22 20:52:53 2880

空空如也

空空如也

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

TA关注的人

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