自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

愿你慢慢变强的博客

希望自己可以坚持下去

原创 假如生产环境出现CPU占用过高,谈谈分析思路和定位

???? 结合 Linux 和 JDK 命令一块分析 ???? 案例步骤 ????1、先用 top 命令找出CPU占比最高的 ????2、ps -ef 或者 jps 进一步定位,得知是一个怎么样的一个后台程序给我们惹事 ????3、定位到具体线程或者代码 ⏳ ps -mp 进程 -o THRE...

2020-03-09 14:11:55

阅读数 29

评论数 0

原创 生产环境服务器变慢,谈谈诊断思路和性能评估
原力计划

???? 整机:top ???? uptime,系统性能命令的精简版 ???? CPU:vmstat ???? 查看 CPU(包含不限于) vmstat -n 2 3 一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数单位是秒,第二个参数是采样的次数 procs...

2020-03-09 09:34:22

阅读数 62

评论数 0

原创 G1 垃圾收集器

???? 以前收集器特点 ???? G1 是什么 ???? 底层原理 ????

2020-03-07 21:45:34

阅读数 126

评论数 0

原创 怎么查看服务器默认的垃圾收集器是哪个?生产上如何配置垃圾收集器的?谈谈对垃圾收集器的理解?

???? 怎么查看默认的垃圾收集器是哪个? JVM 参数:java -XX:+PrintCommandLineFlags -version 下图红色就是默认垃圾收集器 ???? 默认的垃圾收集器有哪些? java 的 gc 回收的类型主要有几种: UseSerialGC,UseParallelG...

2020-03-06 14:25:54

阅读数 46

评论数 0

原创 GC 垃圾回收算法和垃圾收集器的关系?

???? GC 算法(引用计数 / 复制 / 标清 / 标整)是内存回收的方法论,垃圾收集器就是算法落地实现。 ???? 因为目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集 ???? 四种主要垃圾收集器 ???? 串行垃圾回收器(Serial)...

2020-03-06 14:25:32

阅读数 27

评论数 0

原创 谈谈对 OOM 的认识

???? java.lang.StackOverflowError package com.brian.interview.study.jvm.oom; /** * Copyright (c) 2020 ZJU All Rights Reserved * <p> * Proje...

2020-03-05 10:50:04

阅读数 33

评论数 0

原创 强引用、软引用、弱引用、虚引用分别是什么?
原力计划

???? 整体架构 ???? 强引用(默认支持模式) 当内存不足,JVM 开始垃圾回收,对于强引用的对象,就算是出现了 OOM 也不会对该对象进行回收,死都不收。 强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还 “活着”,垃圾收集器不会碰到这种对象。在 Java 中...

2020-03-05 10:49:08

阅读数 223

评论数 0

原创 JVM 常用基本配置参数有哪些

????基础知识 long totalMemory = Runtime.getRuntime().totalMemory(); // 返回 Java 虚拟机中的内存总量 long maxMemory = Runtime.getRuntime().maxMemory(); // 返回 Java...

2020-03-04 09:37:34

阅读数 23

评论数 0

原创 JVM 调优和参数配置,如何盘点查看 JVM 系统默认值

????JVM 的参数类型 ????标配参数 -version -help java -showversion 在 jdk 各个版本之间稳定,很少有大的变化 ???? x 参数(了解) -Xint: 解释执行 -Xcomp: 第一次使用就编译成本地代码 -Xmixed: 混合模式 ??...

2020-03-04 09:26:34

阅读数 26

评论数 0

原创 JVM 垃圾回收的时候如何确定垃圾?谈谈什么是 GC Roots

????什么是垃圾 简单的说就是内存中已经不再被使用到的空间就是垃圾 ????要进行垃圾回收,如何判断一个对象是否可以被回收? ????引用计数法 Java中,引用和对象是有关联的。如果要操作对象则必须要引用进行。 因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,给对象...

2020-03-03 14:00:32

阅读数 43

评论数 0

原创 JVM 和 GC 的基础知识

JVM 内存结构 JVM 体系概述 Java8 以后的 JVM GC 的作用域 常见的垃圾回收算法 引用计数 复制 Java 堆从 GC 的角度还可以细化为:新生代(Eden区、From Survivor区和To Survivor区)和老年代。 MinorGC 的过程(复制 ->...

2020-03-03 09:42:17

阅读数 29

评论数 0

原创 死锁编码及定位分析

是什么 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。 产生死锁主要原因 系统资源不足 进程运行推进的顺序不合适 资...

2020-03-02 21:31:50

阅读数 15

评论数 0

原创 线程池在生产上如何设置合理参数

谈谈线程池的拒绝策略 是什么 等待队列也已经满了,再也塞不下新任务了 同时, 线程池中的 max 线程也达到了,无法继续为新任务服务。 这时候我们就需要拒绝策略机制合理的处理这个问题。 JDK内置的拒绝策略 AbortPolicy(默认):直接抛出 RejectedExecutionExcept...

2020-03-02 13:58:37

阅读数 72

评论数 0

原创 谈谈线程池,谈谈对ThreadPoolExecutor的理解

为什么用线程池,优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等待,等其它线程执行完毕,再从队列中取出任务来执行。 他的主要特点为:线程复用;控制最大并发数;管理线程。 第一:降低资源消耗。通过重...

2020-03-02 09:06:55

阅读数 112

评论数 0

原创 谈谈阻塞队列

队列 + 阻塞队列 阻塞队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示: 当阻塞队列是空时,从队列中获取元素的操作将会被阻塞。 当阻塞队列是满时,往队列里添加元素的操作将会被阻塞。 试图从空的阻塞队列中获取元素的线程将会被阻塞,直到其他的线程往空的队列插入新...

2020-03-02 09:00:22

阅读数 34

评论数 0

原创 CountDownLatch / CyclicBarrier / Semaphore 的介绍

CountDownLatch 让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒 package com.brian.interview.study.thread; import com.brian.interview.enums.CountryEnum; import java.util....

2020-03-01 17:53:37

阅读数 37

评论数 0

原创 谈对公平锁/非公平锁/可重入锁/递归锁/自旋锁的理解?请手写一个自旋锁

公平和非公平锁 是什么 公平锁: 是指多个线程按照申请锁的顺序来获取锁, 类似排队打饭, 先来后到。 非公平锁: 是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下, 有可能会造成优先级反转或者饥饿现象 两者的区别 公平锁 / 非公平锁 ...

2020-03-01 09:46:21

阅读数 247

评论数 0

原创 synchronized 和 lock 有什么区别?用新的 lock 有什么好处?
原力计划

1、原始构成 synchronized 是关键字属于 JVM 层面,            monitorenter(底层是通过 monitor 对象来完成, 其实 wait/notify...

2020-02-29 15:38:48

阅读数 372

评论数 0

原创 我们知道ArrayList是线程不安全,请编码写一个不安全的案例并给出解决方案。

解决方案 1 package com.brian.interview.study.thread; /** * Copyright (c) 2020 ZJU All Rights Reserved * <p> * Project: JavaSomeDemo * Package:...

2020-02-28 23:26:54

阅读数 79

评论数 0

原创 谈谈原子类AtomicInteger的ABA问题?原子更新引用知道吗?

ABA 问题怎么产生的 CAS会导致"ABA问题"。 CAS算法实现一个重要前提需要取出内存中某时刻的数据并在当下时刻比较并替换,那么在这个时间差类会导致数据的变化。 比如说一个线程one从内存位置V中取出A,这时候另一个线程two也从内存中取出A,并且线程two进行了一些操作...

2020-02-28 22:39:25

阅读数 104

评论数 4

原创 CAS你知道吗?
原力计划

CAS 是什么??? 1、比较并交换(CompareAndSet)通过简单的Demo来看 package com.brian.interview.study.thread; /** * Copyright (c) 2020 ZJU All Rights Reserved * <p>...

2020-02-28 21:52:48

阅读数 83

评论数 0

原创 关于 volatile 你知多少???

谈谈你对 volatile 的理解 1、volatile 是 Java 虚拟机提供的轻量级的同步机制 保证可见性 不保证原子性 禁止指令重排 2、谈谈JMM(Java 内存模型) JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的...

2020-02-28 19:58:36

阅读数 2129

评论数 0

原创 剑指Offer——面试题68:树中两个结点的最低公共祖先

面试题68:树中两个结点的最低公共祖先 题目:输入两个树结点,求它们的最低公共祖先。 一:若树为二叉搜索树 #include<iostream> #include<algorithm> #include<vector> using namespace std;...

2020-02-27 15:16:28

阅读数 62

评论数 0

原创 剑指Offer——面试题67:把字符串转换成整数

面试题67:把字符串转换成整数 题目:请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不能使用atoi或者其他类似的库函数。 #include<iostream> #include<algorithm> #include<vector> ...

2020-02-27 12:14:59

阅读数 57

评论数 0

原创 剑指Offer——面试题66:构建乘积数组

面试题66:构建乘积数组 题目:给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其中B中的元素B[i] =A[0]×A[1]×… ×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。 #include<iostream> #inclu...

2020-02-27 11:00:25

阅读数 45

评论数 0

原创 剑指Offer——面试题65:不用加减乘除做加法

面试题65:不用加减乘除做加法 题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。 #include<iostream> #include<algorithm> using namespace std; int Add(int num1,...

2020-02-26 13:33:23

阅读数 51

评论数 0

原创 剑指Offer——面试题64:求1+2+…+n

面试题64:求1+2+…+n 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句(A?B:C)。 ????‍????解法一:利用构造函数求解 #include<iostream> #include<alg...

2020-02-26 12:11:59

阅读数 43

评论数 0

原创 剑指Offer——面试题63:股票的最大利润

面试题63:股票的最大利润 题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖交易该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为{9, 11, 8, 5, 7, 12, 16, 14}。如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。 #in...

2020-02-26 11:41:02

阅读数 43

评论数 0

原创 剑指Offer——面试题62:圆圈中最后剩下的数字

面试题62:圆圈中最后剩下的数字 题目:0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0,1,2,3,4 这5个数字组成一个圆圈,从数字 0 开始每次删除第 3 个数字,则删除的前 4 个数字依次是 2、0、4、...

2020-02-26 10:51:38

阅读数 59

评论数 0

原创 剑指Offer——面试题61:扑克牌的顺子

面试题61:扑克牌的顺子 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。 #include<iostream> #include<algorithm> usin...

2020-02-26 09:37:54

阅读数 44

评论数 0

原创 剑指Offer——面试题60:n个骰子的点数

面试题60:n个骰子的点数 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 ????‍????解法一:基于递归求骰子点数,时间效率不够高 #include<iostream> #include<algorithm> #i...

2020-02-25 16:22:46

阅读数 46

评论数 0

原创 剑指Offer——面试题59:队列的最大值

题目一:滑动窗口的最大值 题目:给定一个数组和滑动窗口的大小,请找出所有滑动窗口里的最大值。例如,如果输入数组{2, 3, 4, 2, 6, 2, 5, 1}及滑动窗口的大小3,那么一共存在6个滑动窗口,它们的最大值分别为{4, 4, 6, 6, 6, 5}。 解决思路:利用双端队列 步骤...

2020-02-25 15:03:26

阅读数 103

评论数 0

原创 剑指Offer——面试题58:翻转字符串

题目一:翻转单词顺序 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。 #include<iostream> ...

2020-02-25 12:25:35

阅读数 72

评论数 0

原创 剑指Offer——面试题57:和为 s 的数字

题目一:和为s的两个数字 题目:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,输出任意一对即可。 #include<iostream> #include<algorithm> #include<set>...

2020-02-25 11:44:58

阅读数 38

评论数 0

原创 剑指Offer——面试题56:数组中数字出现的次数

题目一:数组数组中只出现一次的两个数字 题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 #include<iostream> #include<algorithm> #inc...

2020-02-25 11:07:29

阅读数 72

评论数 0

翻译 【论文翻译】知识图谱论文中英对照翻译----(KnowLife:a versatile approach ... )

【论文题目】KnowLife: a versatile approach for constructing a large knowledge graph for biomedical sciences 【论文题目对应中文】KnowLife:一种用于构建生物医学大知识图的通用方法 【论文链接】ht...

2020-02-24 18:28:33

阅读数 116

评论数 0

原创 剑指Offer——面试题55:二叉树的深度

题目一:二叉树的深度 题目:输入一棵二叉树的根结点,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 #include<iostream> using namespace std; struct BinaryTreeNode{ ...

2020-02-24 16:29:37

阅读数 41

评论数 0

原创 剑指Offer——面试题54:二叉搜索树的第k个结点

面试题54:二叉搜索树的第k个结点 题目:给定一棵二叉搜索树,请找出其中的第k大的结点。 #include<iostream> using namespace std; struct BinaryTreeNode{ int value; BinaryTreeNode* left;...

2020-02-24 15:55:42

阅读数 57

评论数 0

原创 剑指Offer——面试题53:在排序数组中查找数字

题目一:数字在排序数组中出现的次数 题目:统计一个数字在排序数组中出现的次数。例如输入排序数组{1, 2, 3, 3, 3, 3, 4, 5}和数字3,由于3在这个数组中出现了4次,因此输出4。 #include<iostream> #include<algorithm> ...

2020-02-24 15:38:01

阅读数 39

评论数 0

原创 剑指Offer——面试题52:两个链表的第一个公共结点

面试题52:两个链表的第一个公共结点 题目:输入两个链表,找出它们的第一个公共结点。 解决思路: 方法一:利用栈的特性,分别把两个链表的节点放入两个栈里,这样两个链表的尾节点就位于两个栈的栈顶,接下来比较两个栈顶的节点是否相同。如果相同,则把栈顶弹出接着比较下一个栈顶,直到找到最后一个相同的节点...

2020-02-24 11:55:06

阅读数 45

评论数 0

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