自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(228)
  • 收藏
  • 关注

转载 Mac M1安装Homebrew教程

网上一堆安装教程结果各种报错信息;最后发现一个靠谱文章:https://blog.csdn.net/fgx_123456/article/details/109529180MacOS系统使用Homebrew官方地址时,报错:Mac:~ jc$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"curl: (35) LibreSSL SSL_connect

2022-05-30 01:27:27 538

原创 Redis阻塞的几种原因

客户端最先感知阻塞等Redis超时行为,应用方会收到大量Redis超时异常,比如Jedis客户端会抛出JedisConnectionException异常。加入日志监控报警工具可快速定位阻塞问题,同时需要对Redis进程和机器做全面监控。导致阻塞问题的场景大致分为内在原因和外在原因:1)内在原因包括:1.1、数据集中过期Redis的主动过期的定时任务,也是在Redis主线程中执行的,如果出现了需要大量删除过期key的情况,那么主线程会出现阻塞(最大25s)。而且这个访问延迟的情况,不会记录在

2022-01-18 17:14:42 6276

原创 一文解析TOP命令

top命令是用户监视 Linux 上的进程和系统资源使用情况是最常用到的命令根据上图内容,我们来慢慢逐行解读;(1)top - 14:54:08 up 954 days, 3:44, 1 user, load average: 13.57, 15.63, 16.76top:当前时间up:机器运行了多少时间users:当前有多少用户Load Average平均负载:过去 1 分钟、5 分钟和 15 分钟内的平均负载。平均负载其实就是平均活跃进程数,直观上的理解就是单位...

2021-08-27 15:57:21 627

原创 双缓冲机制

在看HDFS Editlog写机制中提到了双缓冲机制针对写入本地磁盘文件,大量客户端同时写会导致写入本地磁盘文件时出现多线程安全问题,HDFS如何保证安全呢?两个方面对每个写入的edits log分配一个全局顺序递增的transactionid(txid),基于这个序号可以标识每个edits log的先后顺序。 针对txid,要保证全局顺序一致,就要加锁保证安全,也就是每个修改元数据的线程都要先拿到锁然后生成txid才能写入edits log流程:其他使用场景(1)逻辑处..

2021-08-25 15:55:16 752

原创 五种方案解决幂等问题

方案一:数据库唯一主键实现幂等性缺点:无法使用change buffer,InnoDB为了进行唯一性检查,必须有一次磁盘IO读页方案二:业务状态校验业务上根据业务ID的唯一性和业务处理的结果去做判断,但是这部分判断的逻辑需要考虑原子性。否则会因为并发问题导致幂等失效。解决途径一就是加锁,根据当前的服务环境选择单机或分布式锁。二是可采用现成方案Tomato,通过滑动窗口或者固定窗口拦截控制时间内的请求方案三:数据库乐观锁实现幂等性缺点:操作业务前,需要先查询出当前的versio

2021-08-11 16:51:39 7162

原创 Linux排查命令

2021-06-16 15:53:08 98

原创 Hbase架构与读写

Hbase架构图client Client包含了访问HBase的接口 维护对应的cache加速HBase的访问,比如caceh的.META元数据信息 zookeeper 实现HMaster的高可用 保存了hbase的元数据信息,是所有的hbase表的寻址入口 对HMaster和HRegionServer实现了监控 HMaster 负责启动的时候分配Region到具体的RegionServer,执行行各种管理操作,比如Region的分割和合并。

2021-06-16 15:51:01 142

转载 详解tomcat的连接数与线程池

前言在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章详解Tomcat配置文件server.xml中写到过:Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine(也就是Servlet容器)来处理这个请求,并把产生的Request和Response对象传给Engine。当Engine处理完请求后,也会通过Conne...

2021-05-31 22:42:04 382

转载 零拷贝(mmap+write、sendfile)

传统读操作JAVA用传统方式进行读操作时,整体流程如上图,具体如下:1、应用程序发起读数据操作,JVM会发起read()系统调用。2、这时操作系统OS会进行一次上下文切换(把用户空间切换到内核空间)3、通过磁盘控制器把数据copy到内核缓冲区中,这里的就发生了一次DMACopy4、然后内核将数据copy到用户空间的应用缓冲区中,发生了一次CPU Copy5、read调用返回后,会再进行一次上下文切换(把内核空间切换到用户空间)我们看一下一个读操作,发了2次上下文切换,和2次数据cop

2021-04-09 11:40:22 1480 3

原创 大数据入门

大数据概念基本介绍Hadoop介绍Hadoop是一个基于java开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop包括一系列的类shell的命令,可直接操作HDFS以及其他Hadoop支持的文件系统(官方链接:https://hadoop.apache.org/docs/r1.0.4/cn/commands_manual.html)下图为Hadoop生态圈的一些组件Hadoop的核心是MapReduc.

2021-03-31 17:22:31 161 3

转载 线程池线程复用源码解析

先说说使用线程池的好处,比如可以控制线程的数量,节省反复创建线程和销毁线程的开销等,在开发中的使用,一般来说任务量肯定是大于线程数量的,而为了防止出现OOM,都是建议设置相对应业务的合适线程数量。那是在线程池中线程就只有那些,肯定是要做到线程的重复利用,才能执行超过线程的任务量的,那么线程池是怎么做到"线程复用"的呢?从源码开始逐步分析,从execute()方法开始//原子变量private final AtomicInteger ctl = new AtomicInteger(ctlOf(RU

2021-03-26 16:54:59 173

转载 内存与地址

物理地址和物理内存物理内存不需要我多解释,无非是真实的可见的物理存储器件,就像下面所画的一样,硬件电路通过总线能够依次查找到对应存储单元的值,物理上是高低电位,对应0/1表示。————————————————-————————————————| | | | | | | | | A————————————————-————————————————| | | | | | | | | B————————————————-——

2021-03-18 15:46:49 836

转载 信号量与管程

1、信号量# 信号量机制: 概念:其实就是一个变量,可以用一个信号量来表示系统中某种资源的数量、 用户进程通过使用操作系统提供的一对原语来对信号量进行操作,从而方便的实现了进程互斥。 这里的一对原语是指wait(S)和signal(S),也简写为P(S)和V(S),即申请和释放资源。P、V操作必须成对出现。 整数型信号量: 用一个整数作为信号量,数值表示某种资源数。 对信号量的操作只有三种:初始化、P操作、V操作。 不满足让权

2021-03-17 21:51:58 788 1

转载 MapReduce源码解析

MapReduce编程刨析:Mapmap函数是对一些独立元素组成的概念列表(如单词计数中每行数据形成的列表)的每一个元素进行指定的操作(如把每行数据拆分成不同单词,并把每个单词计数为1),用户可以自定义一个把数据拆分成不同单词并把单词计数为1的映射map函数),事实上每个元素都是被独立操作的,而原始列表没有被修改,因为这里创建了一个新的列表来保存新的答案。 1 2 3 4 5 6 7 8 9 10 11

2021-03-09 16:41:30 680

转载 MapReduce 流程解析

map 阶段对我们的数据进行分开计算,第二是 reduce 阶段,对 map 阶段计算产生的结果再进行汇总。还写了一个非常经典的,类似于Java 中 HelloWorld 一样的 WordCount 代码。今天我们就根据这个代码来阐述整个 MapReduce 的运行过程。先苦口婆心的告诉你,这个知识点是非常非常非常之重要,之前面的 5 家公司,有 3 家公司都问了这个过程,另外两家问了 Yarn 的运行机制,这是后面会去讲的内容,你必须得懂大体的流程是怎么样子,如果能去研究搞清楚每个细节,那当然最好

2021-03-08 14:32:15 610

原创 CMS调优参数

-XX:CMSInitiatingOccupancyFraction和-XX:+UseCMSInitiatingOccupancyOnly由于CMS收集器不是独占式的回收器,在CMS回收过程中,应用程序仍然在不停地工作。在应用程序工作过程中,又会不断产生垃圾。这些新垃圾在当前CMS回收过程中是无法清除的。同时,因为应用程序没有中断,所以在CMS回收过程中,还应该确保应用程序由足够的内存可用。因此,CMS回收器不会等待堆内存饱和时才进行垃圾回收,而是当堆内存使用率达到某一阈值时便开始进行回收,以确保应用程

2021-02-19 17:14:16 1183

转载 性能分析 -- 各种毛刺

前言大家在观察压测&日常线上请求的平响、cpu使用时通常都能见到n多的毛刺,有的毛刺凸显并且有规律可循,有的杂乱无章,这些毛刺到底是因为什么产生的,对应的解决解决套路是怎么样的?排队和并发说毛刺之间先来看一下cpu工作的模式:排队和并发,并发指的是我们在某一时刻同时处理多个任务,而排队是指对于cpu而言任务调度处理的机制。这两者直接决定了任务处理的时延,落到用层面也就是我们的用户体验。认知cpu底层性能的工具和方法有很多种,如果之前没有相对清晰的认知可以看下这篇文章:https://z

2021-01-26 01:35:14 2977

原创 Redis升降配后Redisson出错:Unable to send command!

出现问题最近在公司开发环境发现一个问题,是这样的,开发环境的机器不断打日志,由于日志的定时清理不及时,导致磁盘满了,然后redis由于没法持久化,所以就连不上了,这个时候发现之后我们重启了redis,然后就回家了。第二天应用在使用redisson的分布式锁的时候就发现错误:org.redisson.client.WriteRedisConnectionException: Unable to send command!,就是分布式锁的命令无法执行,导致许多业务都出现问题。一开始以为是redis出

2020-11-28 10:09:57 14298 2

原创 jdk版本和垃圾收集器对应关系

1. 使用jcmd假设java进程id为1000# Linuxjcmd 1000 PerfCounter.print |grep gc.collector.*name# Windowsjcmd 1000 PerfCounter.print |findstr gc.collector.*name1 2 3 4以串行收集器(-XX:+UseSerialGC )为例,返回信息如下:sun.gc.collector.0.name="Copy"sun.gc.collector.1

2020-11-28 10:05:21 1185 1

转载 MySQL优化——force index

不啰嗦,直接入正题。问题是这样的。请问下面的sql语句,要想加快查询速度,该怎么创建索引?以下,以mysql数据库为准。select * from test where a=? and b>? order by c limit 0,100结果可能会出乎你的意料。我们首先准备一下运行环境,然后按照最左前缀原则和explain关键字来进行验证。结果真是颠覆了xjjdog多年的认知。准备阶段为了进行验证,我们创建一个简单的数据表。里面有a、b、c三个简单的int字段。CREATE T

2020-11-26 16:51:47 1640

原创 spring是如何解决循环依赖的【面试总结版】

场景一:成员变量引入即A依赖B,B依赖A1. 在finishBeanFactoryInitialization中,开始初始化A,毋庸置疑通过反射2. 之后【非完美对象】开始设置属性字段,此时发现需要一个B的对象。同时已标记A处于正在初始化阶段3. 显然接下来,开始去初始化B的对象,同样的手法,到设置属性阶段,发现需要A对象4. 于是乎,spring又开始去初始化对象A的依赖,此时先从缓存singletonObjects去取,没有再去看是否正处于初始阶段,是则再从缓存earlySingletonObj

2020-11-24 16:30:55 457

原创 顺网面经

object中equal重写一般什么时候用到?在equal重写时需要注意什么?String的源码有看过吗?为什么是不可变的?在字节码中是如何的?switch现在支持字符串判断,为什么不允许switch null?synchronized是如何实现锁的?在字节码中是怎么表现的?锁升级过程是怎么样的?项目中有用到反射吗?是怎么用的?JVM中内存模型了解吗?为什么要在方法中使用栈这个结构(虚拟机栈为什么是栈)?内存逃逸和栈内分配了解吗?spring的源码有看过吗?如何解决循环依赖的?...

2020-11-24 10:53:35 175 1

原创 JVM面试题——持续更新中

java内存区域划分在java8,将方法区替代为元空间(由于方法区主要存储类的相关信息,所以对于动态生成类的情况比较容易出现永久代的内存溢出。最典型的场景就是,在 jsp 页面比较多的情况,容易出现永久代内存溢出)发生fullgc的情况有哪些 发生oom的情况有哪些?哪些区域可能会发生oom new对象时会在哪个区域分配 方法区在什么情况下会发生oom,碰到过oom吗?怎么排查的?...

2020-11-13 11:53:15 75

转载 JAVA线上故障排查全

线上故障主要会包括cpu、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的,基本上出问题就是df、free、top 三连,然后依次jstack、jmap伺候,具体问题具体分析即可。CPU一般来讲我们首先会排查cpu方面的问题。cpu异常往往还是比较好定位的。原因包括业务逻辑问题(死循环)、频繁gc以及上下文切换过多。而最常见的往往是业务逻辑(或者框架逻辑)导致的,可以使用jsta

2020-10-22 14:58:52 114 1

原创 redis几个重要的结构体

redisServerstruct redisServer { /* General */ // 配置文件的绝对路径 char *configfile; /* Absolute config file path, or NULL */ // serverCron() 每秒调用的次数 int hz; /* serverCron() calls frequency in hertz */ ..

2020-09-03 16:58:54 438

原创 redis的底层数据结构

SDS字符串结构与C语言字符串不同的是:redis字符串结构中有记录字符长度的字段,一是获取长度是复杂度只需要O(1),二是杜绝缓冲区溢出,在修改某个value时,先去校验分配的长度是否足够,不够的话自动扩展空间,这样不会覆盖到相邻空间的value值。三是减少修改时带来的内存空间重分配,C语言没有记录字符长度,每次修改都需要重新分配内存,避免缓冲区溢出或内存泄露linkedlist链表:双向,无环,带表头指针带表尾指针,带链表长度计数器,多态(通过为链表设置不同的类型特定画数, Redis 的链表.

2020-09-03 15:23:56 225

转载 普通索引与唯一性索引

想象这样一个场景,在设计一张用户表时,每人的身份证号是唯一的,需要搜索。但由于身份证号字段较大,不好将其作为主键。在业务代码已经保证插入身份证唯一的情况下,可以选择建立唯一索引和普通普通索引,这时该如何选择呢?接下来,将从查询和更新的执行过程进行分析。Top查询过程假设 k 是表 t 上的索引,在搜索 select id from t where k=5 时,会先从 k 这棵 B+ 的树根开始,按层搜索叶子节点,找到 k=5 的数据页,然后在数据页内容进行二分法定位。对于普通索引,找到 k=

2020-09-01 09:34:20 1270

原创 记一次请求暴增导致的线上问题

过程:Linux连接数爆了tomcat连接数爆了部分接口导致mysql出现压力,读写分离的从库经不住读的压力,cpu100%tcp降下来了 redis压力正常 走缓存的页面加载还是慢 原因不明前期mq消费能力差导致消息积压 ,自动应答导致错误消息一直积压...

2020-08-03 15:56:37 358

转载 spring及springboot源码教程收录

Spring源码1:初始化SpringApplication实例https://www.jianshu.com/p/6888c2949e1fSpring源码2:发布启动事件ApplicationStartingEventhttps://www.jianshu.com/p/08256c09188dSpring源码3:封装命令行参数DefaultApplicationArguments...

2020-06-08 14:28:57 206

原创 JVM 参数(JDK8)

JVM参数https://blog.csdn.net/liyongbing1122/article/details/88716400

2020-06-08 14:17:46 744

转载 Linux加解锁文件

chattr:加锁文件,无修改,无删除权限常用参数:+a:可给文件追加内容,但无法删除+i:加锁文件(文件不能被删除、改名、设定链接关系,同时不能写入或追加内容)-i:解锁文件(与+i相反)常用参数用法: 加锁:chattr +i 文件 查看加锁: lsattr 文件+i 加锁文件chattr +i /etc/passwd...

2020-06-08 14:09:26 419 1

转载 JProfiler使用

https://blog.csdn.net/liyantianmin/article/details/86534544

2020-06-08 13:44:54 166

转载 git版本回退

https://blog.csdn.net/tsq292978891/article/details/78965693

2020-04-30 15:16:34 96

原创 redis笔记

Redis为什么是单线程、及高并发快的大原因详解https://blog.csdn.net/u011663149/article/details/85307615图解Redis通信协议https://www.jianshu.com/p/f670dfc9409bRedis持久化-RDB和AOFhttps://segmentfault.com/a/1190000016021217...

2020-03-31 16:30:48 187

转载 JVM工具文档

第一章无第二章jdk8工具集https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.htmlTroubleshootinghttps://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/jpshttps://docs.oracle.com/ja...

2020-03-17 12:00:11 206

原创 spring添加独立子事务

最近业务碰到for循环事务,每个for循环中的代码要单独回滚单独提交,不能影响外部代码环境,研究过之后,记录开发过程 @Transactional(rollbackFor = Exception.class) public void aaa(List<String> toDoIds){ for (String toDoId : toDoIds) {...

2020-01-13 16:14:03 2462

原创 tx-lcn手动回滚

一些异常在被调用者那边catch之后,在调用者这边无法自动回滚异常。加上手动回滚错误示范 @LcnTransaction @Transactional(rollbackFor = {Exception.class}) public boolean test() { B_file b = new B_file(); ...

2020-01-13 11:44:28 498

原创 使用Wkhtmltopdf进行html转pdf

使用itext转换出现pdf格式丢失的,可以换成Wkhtmltopdf前期准备官网:https://wkhtmltopdf.org/centos安装Wkhtmltopdfhttps://segmentfault.com/a/1190000017552056?utm_source=tag-newest安装遇到的问题https://13ua.com:44490/blog/...

2019-12-19 19:57:25 332 1

原创 linux 线程查看 (proc命令)与Jvm栈线程ID(jstack命令)

一、proc查看进程和线程该方法是个人最为推荐,也最喜欢的一种方法。进程文件下,有几种方式可以获取目前进程开启的进程数。查看status文件:# cat /proc/5877/statusName: mysqldState: S (sleeping)Tgid: 5877Pid: 5877PPid: 1……………………省略Threads: 107……………………省略...

2019-11-18 20:58:12 2726

原创 linux 通过pid 寻找程序路径的最简单命令(pwdx)

在linux实际操作命令中,查看pid的方式有很多种,通过pid找程序路径的方式也有好几个,但是可能大家都忽略的一个很简单也是很实用的命令:pwdx.比如要查找某个java编写的程序运行情况可通过jps命令查看,然后可以通过显示的pid进行程序定位如下图,红色框框为jps命令和pwdx命令,一目了然:...

2019-11-18 20:32:58 1152 1

空空如也

空空如也

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

TA关注的人

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