Java
文章平均质量分 50
wanglei727
学习不再三更五鼓,功只怕一曝十寒
展开
-
服务雪崩问题
服务链路重构引起的服务雪崩问题原创 2023-03-25 10:43:10 · 407 阅读 · 0 评论 -
centos安装docket
参考菜鸟教程命令安装CentOS Docker 安装 | 菜鸟教程原创 2022-04-20 21:16:20 · 143 阅读 · 0 评论 -
Linux服务器安装nginx步骤详解
1、nginx官网下载tar包到本地2、将本地jar包通过ftp方式传到Linux系统上3、进行解压 tar -zvxf4、安装 安装过程中会遇到一些问题./configrure --prefix=/data/programmake && make installyun install...原创 2022-04-02 17:51:43 · 1667 阅读 · 2 评论 -
full gc排查思路
清楚排查问题时能使用哪些工具公司的监控系统:大部分公司都会有,可全方位监控JVM的各项指标。JDK的自带工具,包括jmap、jstat等常用命令:查看堆内存各区域的使用率以及GC情况jstat -gcutil -h20 pid 1000查看堆内存中的存活对象,并按空间排序jmap -histo pid | head -n20dump堆内存文件jmap -dump:format=b,file=heap pid...原创 2021-05-12 14:29:40 · 3832 阅读 · 0 评论 -
线程安全性背后的本质之volatile
可见性的例子外层加了值得变化但是线程没有发现原创 2021-04-17 17:39:55 · 53 阅读 · 0 评论 -
CPU飙高排查方案与思路
命令查找出java进程IDjps -l找出进程中消耗最多的线程top -H -p pidps -mp pid -o THREAD,tid,time线程ID转为16进制printf “%x\n” tid打印出线程的堆栈信息jstack pid |grep tid -A 30原创 2021-02-17 21:26:17 · 418 阅读 · 1 评论 -
linux搭建网站教程详解
最近想自己搭建一个网站,总结了一下搭建网站过程中遇到的问题与解决办法。搭建网站的第一步肯定是申请域名,通过域名可以访问自己的网站,有了域名之后要有网站运行的环境,就需要申请服务器,这一套流程大家到阿里云官网进行域名申请与服务器租用,域名申请之后需要进行备案,有需要的话可以提前申请。服务器安装环境Tomcatwget http://mirrors.cnnic.cn/apache/tomcat/tomcat-8/v8.5.61/bin/apache-tomcat-8.5.61.tar.gz获得mav原创 2021-02-16 12:46:48 · 7919 阅读 · 2 评论 -
idea下载源码问题
当我们调式一些开源框架的源码时 我们可以用如下命令来强制拉下源码mvn dependency:resolve -Dclassifier=sources原创 2020-11-02 17:19:11 · 170 阅读 · 0 评论 -
Semaphore信号量的一点理解
先来一个简单demo,知道这个东西怎么用的,我们再来分析原理信号量,整体思路也是实现了AQS state在这里的意义就是线程个数,之前我们说countDownLatch里的state含义是什么了的?我们再来看下Semaphore里面的两个静态内部类是不是很熟悉,之前我们说ReentrantLock的时候也会有这两个公平锁和非公平锁的意思主要还是两个方法。...原创 2020-06-02 16:20:07 · 276 阅读 · 0 评论 -
线程池的4中拒绝策略的一点理解
线程池一共有4中拒绝策略,这四种拒绝策略在ThreadPoolExecutor中以静态内部类的形式展示,Java源码里有好多类的设计都包含了静态内部类,我们也可以借鉴下,在实际的项目中使用,静态内部类跟内部类相比方便使用,属于类相关,静态内部类可以访问外外部类中的类属性,同时内部类的作用也是跟当前类业务相关的,值在当前类使用,所以我们建成内部类,同时也是一种类内数据封装的一种体现。...原创 2020-06-01 17:13:56 · 254 阅读 · 0 评论 -
ArrayBlockingQueue和LinkedBlockingQueue的整体区别的一点理解
1.队列大小有所不同,ArrayBlockingQueue是有界的初始化必须指定大小,而LinkedBlockingQueue可以是有界的也可以是无界的(Integer.MAX_VALUE),对于后者而言,当添加速度大于移除速度时,在无界的情况下,可能会造成内存溢出等问题。2.数据存储容器不同,ArrayBlockingQueue采用的是数组作为数据存储容器,而LinkedBlockingQueue采用的则是以Node节点作为连接对象的链表。3.由于ArrayBlockingQueue采用的是数组的原创 2020-06-01 16:01:49 · 329 阅读 · 0 评论 -
ArrayBlockingQueue一点理解
老规矩来个类图 方便大家理解先来看一下put方法具体的入队方法在看看下peek是如何实现的peek 的方法比较简单直接返回对应位置的元素,不对队列中的元素有任何的污染接下来看下pool到这里我们似乎恍然大悟了,take方法和pool方法共用的是一个出队的方法,所以他们的处理类似,最终都是将当前的takeIndex加1,相当于一个出队的过程,那么下次再取的时候其实也拿不到这个元素了。而peek方法则比较简单,直接根据对应的小标进行返回。...原创 2020-06-01 15:51:45 · 162 阅读 · 0 评论 -
LinkedBlockingQueue的一点理解
fdsfs原创 2020-06-01 11:17:45 · 237 阅读 · 0 评论 -
lock锁通过condition阻塞的一点理解
先来看下await这个方法,这个方法涵盖了阻塞的大部分逻辑,我们通过这个方法入口逐层去揭开conditon.await这个阻塞函数的神秘面纱原创 2020-05-29 17:39:45 · 554 阅读 · 0 评论 -
随笔transaction
事物拦截器原创 2020-05-29 15:30:40 · 122 阅读 · 0 评论 -
随笔aop
通过拦截器链工厂拿到拦截器链原创 2020-05-28 14:26:35 · 160 阅读 · 0 评论 -
github上传项目的一点理解
对于程序员来说熟悉github已经是一项必备的基本技能,今天我们就来一步一步的讲解,如何将自己本地的项目上传到github,这样原创 2020-03-15 17:49:14 · 134 阅读 · 0 评论 -
TCP协议的一点理解
原创 2020-02-25 17:51:41 · 99 阅读 · 0 评论 -
ThreadLocal的学习和理解
今天我们来分析下ThreadLocal的理解先从threadLocal.put()方法进行分析。原创 2020-02-23 17:13:29 · 135 阅读 · 0 评论 -
leetcode三数之和的一点理解
整体的思路就是排序加上双指针时间复杂度为n方没有用到额外的存储空间 所以空间复杂度是O(1)题目的难点就是去掉重复元素吧这样通过双指针来去除重复的元素。很有思想。...原创 2020-02-21 20:42:48 · 229 阅读 · 0 评论 -
leetcode两数之和的一点理解
两数之和第一种方法我们可以使用暴力求解法,但是时间复杂度为N方所以我们是额外的存储空间hashMap来存储每个元素这样时间复杂度为O(n)原创 2020-02-18 20:03:52 · 111 阅读 · 0 评论 -
CountDownLatch的一点理解
今天我们来看下CountDownLatch这个工具类的原理。我们还是从两个方法入手await方法和countDown方法。我们先从await方法看下我们会发现这个代码很熟悉,AQS中有些类似这样的代码,唯一的不同就是我画红框中的代码。以上为awai方法,接下来我们看下countDown方法。...原创 2020-02-13 14:31:44 · 135 阅读 · 0 评论 -
ReentrantLock的一点理解
java里提供了两种锁一种是synchronize一个是ReentrantLock今天我们来说一下ReentrantLock这个锁。原创 2020-02-13 12:04:16 · 141 阅读 · 0 评论 -
Collections.sort()方法的一点理解
今天我们来了解一下jdk中Collections.sort()方法的原理以及源代码。排序在我们开发中是很长见的,特别是针对List,接下来我们以ArrayList为例,探寻一下Collections.sort()方法内部的奥秘。...原创 2020-02-08 10:38:47 · 801 阅读 · 0 评论 -
求二叉树深度的一点理解
递归方式求解深度。层次遍历方式求解深度。原创 2020-02-07 18:31:41 · 140 阅读 · 0 评论 -
二叉树非递归遍历的一点理解
二叉树是我们必须要了解的一个数据结构,针对这个数据结构我们可以衍生出好多知识。原创 2020-02-05 19:34:13 · 432 阅读 · 0 评论 -
堆排序的一点理解
先画一个建堆的图方便大家理解原创 2020-02-03 12:00:59 · 316 阅读 · 0 评论 -
快速排序的一个理解
快速排序的思想就是分治法,取任意一个数为基数,从左或者从右边开始比较,从左边比的话就是比基数小,从右边比的话就是比基础大,这样一分为二,最终就是基数左边的比基数小,右边的比基数大,依次在去分解左边的数据和右边的数据,基于这个思想,写了以下快速排序代码。...原创 2020-02-02 15:55:21 · 163 阅读 · 0 评论 -
选择排序的一点理解
选择排序的思想就是从N个元素中选出最小的一个放在第一个位置,在剩下的N-1个元素选出第二个最小的放在第二个位置,在剩下的N-2 个元素选出第三个最小的元素放在第三个位置,依次类推。根据这个思想 写了一下如下的选择排序。...原创 2020-02-02 12:23:38 · 203 阅读 · 0 评论 -
冒泡排序的一点理解
冒泡排序的思想实际上就是两两比较,每次挑选出最大的的值或者最小的值放到最后,就想冒泡一样的往上走,所以是冒泡排序。根据这个思想,自己写了一下。...原创 2020-02-02 11:18:36 · 146 阅读 · 0 评论 -
插入排序的一点理解
插入排序跟我们平常打扑克是差不多,我们每次抓一张牌的时候总会按照一定顺序插入到适当的位置,插入排序也是这个道理,我们会将每个元素插入到已经排好序的列表里,根据这个思想,自己写了一个插入排序。...原创 2020-02-02 10:57:44 · 112 阅读 · 0 评论 -
JDK1.8 ConcurrentHashMap的一点理解
只是都是相通的,当我们了解了ConcurrentHashMap的实现原理以及各个方法的实现机制,我们对于其他的hash类型实现也能快速的理解,今天我们就来通过源码来一点一点的分析下ConcurrentHashMap的实现。首先我们来看一下put方法接下来我们看一下刚才整个流程中我们没有介绍过的方法,具体内部都做了什么。首先会初始化table。当桶中节点个数大于等于8时我们看下会发生...原创 2020-01-26 14:30:55 · 243 阅读 · 0 评论 -
线程池的一点理解
首先我们先来了解下线程池中的一个重要的基础属性ctl执行方法入口原创 2020-01-17 17:58:32 · 151 阅读 · 0 评论