自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

愿你慢慢变强的博客

希望自己可以坚持下去

  • 博客(92)
  • 资源 (1)
  • 收藏
  • 关注

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

???? 结合 Linux 和 JDK 命令一块分析???? 案例步骤????1、先用 top 命令找出CPU占比最高的????2、ps -ef 或者 jps 进一步定位,得知是一个怎么样的一个后台程序给我们惹事????3、定位到具体线程或者代码⏳ ps -mp 进程 -o THREAD,tid,time⏳ 参数解释-m 显示所有的线程-p pid 进程使用cpu的时间-o 该参数后是用户自定义格式...

2020-03-09 14:11:55 288

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

???? 整机:top???? uptime,系统性能命令的精简版???? CPU:vmstat???? 查看 CPU(包含不限于)vmstat -n 2 3一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数单位是秒,第二个参数是采样的次数procsr:运行和等待CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不能超过总核数的2倍,否则代...

2020-03-09 09:34:22 428

原创 G1 垃圾收集器------你了解多少

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

2020-03-07 21:45:34 675

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

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

2020-03-06 14:25:54 548

原创 GC 垃圾回收算法和垃圾收集器的关系?-----你应该了解的

???? GC 算法(引用计数 / 复制 / 标清 / 标整)是内存回收的方法论,垃圾收集器就是算法落地实现。???? 因为目前为止还没有完美的收集器出现,更加没有万能的收集器,只是针对具体应用最合适的收集器,进行分代收集???? 四种主要垃圾收集器???? 串行垃圾回收器(Serial)它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程。所以不适合服务器环境???? 并行垃圾回收器(Parall...

2020-03-06 14:25:32 226

原创 谈谈对 OOM 的认识

???? java.lang.StackOverflowErrorpackage com.brian.interview.study.jvm.oom;/** * Copyright (c) 2020 ZJU All Rights Reserved * <p> * Project: JavaSomeDemo * Package: com.brian.interview.study...

2020-03-05 10:50:04 767

原创 强引用、软引用、弱引用、虚引用分别是什么?------你应该了解的

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

2020-03-05 10:49:08 463

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

????基础知识long totalMemory = Runtime.getRuntime().totalMemory(); // 返回 Java 虚拟机中的内存总量long maxMemory = Runtime.getRuntime().maxMemory(); // 返回 Java 虚拟机视图使用的最大内存量System.out.println("TOTAL_MEMORY(-Xms) ...

2020-03-04 09:37:34 190

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

????JVM 的参数类型????标配参数-version-helpjava -showversion在 jdk 各个版本之间稳定,很少有大的变化???? x 参数(了解)-Xint: 解释执行-Xcomp: 第一次使用就编译成本地代码-Xmixed: 混合模式???? xx 参数⏳ Boolean 类型公式:-XX:+ 或者 - 某个属性值(+表示开启 -表示关闭)Case:是否...

2020-03-04 09:26:34 417

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

????什么是垃圾简单的说就是内存中已经不再被使用到的空间就是垃圾????要进行垃圾回收,如何判断一个对象是否可以被回收?????引用计数法Java中,引用和对象是有关联的。如果要操作对象则必须要引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,给对象中添加一个引用计数器,每当有一个地方引用它,计数器值加1,每当有一个引用失效时,计数器值减1。任何时刻计数器值为零...

2020-03-03 14:00:32 260

原创 JVM 和 GC 的基础知识

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

2020-03-03 09:42:17 404

原创 死锁编码及定位分析-----你应该了解的

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

2020-03-02 21:31:50 146

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

谈谈线程池的拒绝策略是什么等待队列也已经满了,再也塞不下新任务了同时,线程池中的 max 线程也达到了,无法继续为新任务服务。这时候我们就需要拒绝策略机制合理的处理这个问题。JDK内置的拒绝策略AbortPolicy(默认):直接抛出 RejectedExecutionException 异常阻止系统正常运行。CallerRunsPolicy:“调用者运行”一种调节机制,该策略既...

2020-03-02 13:58:37 1224

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

为什么用线程池,优势线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等待,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等...

2020-03-02 09:06:55 518

原创 谈谈阻塞队列

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

2020-03-02 09:00:22 206

原创 CountDownLatch / CyclicBarrier / Semaphore 的介绍

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

2020-03-01 17:53:37 111

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

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

2020-03-01 09:46:21 468

原创 synchronized 和 lock 有什么区别?用新的 lock 有什么好处?-----你应该了解的

1、原始构成synchronized 是关键字属于 JVM 层面,           monitorenter(底层是通过 monitor 对象来完成, 其实 wait/notify 等方法也依赖于 monitor 对象只有在同步块或方法中才能调 wait/notify 等方法)&...

2020-02-29 15:38:48 576

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

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

2020-02-28 23:26:54 355

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

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

2020-02-28 22:39:25 843 5

原创 CAS你知道吗?

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

2020-02-28 21:52:48 219

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

谈谈你对 volatile 的理解1、volatile 是 Java 虚拟机提供的轻量级的同步机制保证可见性不保证原子性禁止指令重排2、谈谈JMM(Java 内存模型)JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问...

2020-02-28 19:58:36 2536

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

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

2020-02-27 15:16:28 172

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

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

2020-02-27 12:14:59 179

原创 剑指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>#include<algorithm>#include<vector> using n...

2020-02-27 11:00:25 139

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

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

2020-02-26 13:33:23 148

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

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

2020-02-26 12:11:59 164

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

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

2020-02-26 11:41:02 195

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

面试题62:圆圈中最后剩下的数字题目:0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0,1,2,3,4 这5个数字组成一个圆圈,从数字 0 开始每次删除第 3 个数字,则删除的前 4 个数字依次是 2、0、4、1,因此最后剩下的数字是3。(有名的约瑟夫环问题)????‍????经典的解法,用环形链表模拟圆圈#incl...

2020-02-26 10:51:38 222

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

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

2020-02-26 09:37:54 158

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

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

2020-02-25 16:22:46 181

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

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

2020-02-25 15:03:26 294

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

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

2020-02-25 12:25:35 261

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

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

2020-02-25 11:44:58 134

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

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

2020-02-25 11:07:29 181

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

【论文题目】KnowLife: a versatile approach for constructing a large knowledge graph for biomedical sciences【论文题目对应中文】KnowLife:一种用于构建生物医学大知识图的通用方法【论文链接】https://link.springer.com/content/pdf/10.1186%2Fs1285...

2020-02-24 18:28:33 5156 1

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

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

2020-02-24 16:29:37 127

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

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

2020-02-24 15:55:42 159

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

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

2020-02-24 15:38:01 193

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

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

2020-02-24 11:55:06 146

neo4j-community-3.5.14.zip

neo4j-community-3.5.14.zip 有需要的自取,Neo4J使用原生的图存储,以高度自由且规范的方式管理和存储数据。它可以明快地显示数据每个相关部分之间的链接,也可以在数据库查询中忽略不必要的细节。对比非原生图解决方案中,随着信息量的增加,使用面向对象的数据库存储数据库使数据操作变得越来越慢。

2020-02-09

空空如也

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

TA关注的人

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