什么是RPC? 优点:将功能解耦,性能稍高,可扩展性和可维护性,高可用(负载均衡,自动重试)缺点:复杂,运维难度大,跨平台/语言调用麻烦 代码目录结构: GreetingSe...
什么是RPC? 优点:将功能解耦,性能稍高,可扩展性和可维护性,高可用(负载均衡,自动重试)缺点:复杂,运维难度大,跨平台/语言调用麻烦 代码目录结构: GreetingSe...
双重检测为什么加volatile关键字:主要作用是为了防止指令重排序。新生成一个对象的正确顺序:1、分配对象内存 2、内存中初始化一个对象 3、将对象指针指向内存指令重排序后...
Java源码中给出了5中状态: New:新new出的一个线程对象,还没有调用run方法; Runnable: 可运行状态,线程可能在运行,也可能在等待CPU资源; Block...
因为在很多并发代码里看到下面这种形式的代码,对join方法理解不是很清晰,所以在讲解线程池之前先对join方法进行一个简单的记录: 先看一下join方法的源码注释 因此,可以...
HashMap 哈希桶+链表+数据结构(红黑树,Java8以后)O(1)的平均插入,查找,删除时间复杂度致命缺陷是hash碰撞哈希算法:先计算hashCode,再映射到索引 ...
首先,我们回顾一下Java Collection体系的核心约定: equals: 自发的,对称的,传递的,一致性的(不会一会相等一会不相等) hashCode: 终生不变性;...
fail-fast机制:Iterator的concurrentModifiedException 在迭代器生成后一边读取一边修改就会出现这个问题 ArrayList 数组做为...
类加载的过程: 加载,链接(验证,准备,解析),初始化loadClass只做到了加载。 Java中的类加载器包括四类: BootstrapClassLoader:加载java...
forName() forName() 是Class类的方法 Returns the {@code Class} object associated with the cla...
Semaphore实现生产者消费者模式 acquire方法:获取信号量的许可,并把信号量的值减1 release方法:释放一个许可,将信号量的值加1 Exchanger实现生...
提供put方法和take方法自动实现等待 put方法源码 如果空间不足够的时候就会等待 take方法源码 移走队头元素,队空时等待
Lock与Synchronized相比的优势: 相比于Synchronized, Lock更加灵活,可以关联不同的Condition; Lock中的RenentrantLoc...
用Java原生的 wait() notify() notifyAll() 来实现 Java的wait() notify() notifyAll() 是用来实现协同的,因此要与...
打牌问题 牌有 A,1,2,3,4,5,6,7,8,9 一共10种不同的数值。每一个数值的牌有四种不同的花色。牌可以按照如下的规则打出: 单牌打出;(比如,A) 成对打出;(...
搭建 IDEA + Maven + Tomcat环境 编写index.jsp原始结构 运行项目运行.png 浏览器打开地址 http://localhost:8081/网页....
JVM的垃圾回收机制指的是对堆中的垃圾对象进行回收。那么我将从三个方面来进行学习和整理,即: 对象被判定为垃圾的标准; 垃圾回收算法; 年轻代和老年代中常见的垃圾收集器 对象...
我们都知道,计算机中所有程序都是再内存中运行的,在程序运行的过程中,需要不断的将内存的逻辑地址和物理地址进行映射,找到相应的命令和数据。作为操作系统进程,Java也会面临内存...