![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java面试
赫点茶
主不在乎
展开
-
01_微服务概述/关于SpringCloud各组件的停更/升级/替换
代码地址:https://gitee.com/SuperVITA/cloud2021.git1、微服务架构概述1.1什么是微服务微服务架构是种架构模式,它提倡将单一应用程序划分成组小的服务,服务之间互相协调、互相配合, 为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTfulAPI)。每个服务都围绕着具本业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外,应当尽量避免统一的、集中式的服务管理机制,对具体的七个服务而原创 2021-07-06 22:36:34 · 439 阅读 · 0 评论 -
使用cls命令清除Idea中的Terminal控制台
cls命令清除Idea中的Terminal控制台以及清除cmd命令窗口原创 2021-05-27 13:43:58 · 1774 阅读 · 0 评论 -
那些对象可以当做GC Roots对象呢?(试讲)
那些对象可以当做GC Roots对象呢?(试讲)1、虚拟机栈(栈帧中的局部变量区,也叫做局部变量表)中的引用对象2、方法区中的类静态属性引用的对象3、方法区中常量引用的对象4、本地方法栈中的JNI(Native方法)的引用对象1、方法区中的类静态属性引用的对象private static GCRootDemo2 t2;2、方法区中的常量引用,GC Roots 也会以这个为起点,进行遍历private static final GCRootDemo3 t3 = new GCRootDemo3原创 2021-05-27 12:16:40 · 296 阅读 · 0 评论 -
死锁的产生和定位分析:jps和jstack找到死锁查看
死锁的产生和定位分析Linux ps -ef|grep XXXX ls -lWindows 下的java运行程序 也有类似的ps的查看进程的命令,但是目前我们需要查看的只是java jps = java ps jps -l死锁的定位分析方法:jps命令定位进程号jstack找到死锁查看本地jdk1.8 binm目录下的两组参数命令死锁:死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一.种 互相等待的现象,若无外力干涉那它们都将无法推进下去pa原创 2021-05-27 10:17:36 · 422 阅读 · 0 评论 -
获取CPU核数
获取CPU核数System.out.println(Runtime.getRuntime().availableProcessors()); 获取CPU核数代码原创 2021-05-26 20:27:34 · 167 阅读 · 0 评论 -
阻塞队列SynchronousQueue代码演示
SynchronousQueue:不存储元素的阻塞队列,也即单个元素的队列生产一个,消费一个,不存储元素,不消费不生产package com.youliao.thread;import java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;import java.util.concurrent.TimeUnit;/** * @Author Dali * @Date 2021/5/24原创 2021-05-24 18:25:59 · 85 阅读 · 0 评论 -
SpinLockDemo代码案例分析
原来提到的比较并交换(CAS),底层使用的就是自旋,自旋就是多次尝试,多次访问,不会阻塞的状态就是自旋。自旋锁:spinlock,是指尝试获取锁的线程不会立即阻塞,而是采用循环的方式去尝试获取锁自旋锁的优缺点:好处:减少线程上下文切换的消耗, 循环比较获取直到成功为止,没有类似于wait的阻塞缺点:循环会消耗CPU, 当不断自旋的线程越来越多的时候,会因为执行while循环不断的消耗CPU资源package com.youliao.thread;import com.youliao.java.原创 2021-05-23 15:18:57 · 128 阅读 · 0 评论 -
验证ReentrantLock/Synchronized 为什么是一个典型的可重入锁( 可重入锁就是递归锁)
可重入锁就是递归锁指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取到该锁的代码,在同一线程在外层方法获取锁的时候,在进入内层方法会自动获取锁也就是说:线程可以进入任何一个它已经拥有的锁所同步的代码块ReentrantLock【美 /rɪˈentrənt lɑːk/】 / Synchronized 就是一个典型的可重入锁package com.youliao.thread;import java.util.concurrent.TimeUnit;import java.util.con原创 2021-05-23 12:59:35 · 88 阅读 · 0 评论 -
HashSet线程不安全,1、 使用JUC中的CopyOnWriteArraySet底层还是使用CopyOnWriteArrayList进行实例化 2、使用工具类中的Collections.synch
private static void setNotSafe() { // Set<String> set = new HashSet<>(); //原始测试// Set<String> set = Collections.synchronizedSet(new HashSet<>()); //解决java.util.ConcurrentModificationException 方法1 ...原创 2021-05-22 18:13:36 · 188 阅读 · 4 评论 -
HashMap线程不安全:解决办法:1、使用Collections.synchronizedMap(new HashMap<>());2、使用 ConcurrentHashMap
HashMap线程不安全:解决办法:1、使用Collections.synchronizedMap(new HashMap<>());2、使用 ConcurrentHashMap public static void main(String[] args) { //listNotSafe(); //setNotSafe();// Map<String, String> map = new HashMap<>();//原原创 2021-05-22 18:10:52 · 333 阅读 · 0 评论 -
并发修改异常三个解决方案比较对比:1、Vector;2、Collections.synchronized();3、采用JUC里面的方法
package com.youliao.thread;import java.util.*;import java.util.concurrent.CopyOnWriteArrayList;/** * @Author Dali * @Date 2021/5/22 12:43 * @Version 1.0 * @Description : 集合类不安全的问题 * 1、ArrayList */public class ContainerNotSafeDemo { public s原创 2021-05-22 17:20:30 · 114 阅读 · 2 评论 -
Arrays和ArrayList不同写法比较
public static void main(String[] args) { //new ArrayList<Integer>().add(1); //写法1: List<String> list1 = Arrays.asList("a","b","c"); list1.forEach(System.out::println); //写法2: List<S..原创 2021-05-22 13:02:31 · 93 阅读 · 0 评论 -
ABA问题的产生/解决——AtomicStampedReference(原子标记参考)
ABA问题的解决package com.youliao.thread;import java.sql.Time;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicReference;import java.util.concurrent.atomic.AtomicStampedReference;/** * @Author Dali * @Date 2021/5/22 11:54原创 2021-05-22 12:36:30 · 138 阅读 · 0 评论 -
atomicReference原子引用
package com.youliao.thread;import jdk.nashorn.internal.objects.annotations.Getter;import lombok.AllArgsConstructor;import lombok.ToString;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.atomic.AtomicReference;/** * @A原创 2021-05-22 11:48:17 · 96 阅读 · 0 评论 -
河南中科江南面试题!!!
原创 2021-05-16 23:13:48 · 270 阅读 · 0 评论 -
volatile不保证原子性问题解决:使用AtomicInteger或synchronized解决原子性问题!!!!
项目结构:引用jdk1.8_API文档:一个int可能原子更新的值。 有关原子变量属性的描述,请参阅java.util.concurrent.atomic包规范。 一个AtomicInteger用于诸如原子增量计数器的应用程序中,不能用作Integer的替代品 。 但是,这个类确实扩展了Number以允许通过处理基于数字类的工具和实用程序的统一访问。package jvm;import java.sql.Time;import java.util.concurrent.TimeUni原创 2021-05-14 20:15:24 · 228 阅读 · 9 评论 -
验证volatile的可见性,volatile增强了 主内存和各线程之间的可见性验证!!!
项目结构:package jvm;import java.sql.Time;import java.util.concurrent.TimeUnit;/** * @Author Dali * @Date 2021/5/14 15:42 * @Version 1.0 * @Description :验证volatile的可见性 */class MyData { //int number = 0; 测试用 volatile int number = 0; //原创 2021-05-14 16:25:56 · 97 阅读 · 0 评论