自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 互联网面试题集

互联网面试题集Skip to content Why GitHub? Team Enterprise Explore Marketplace Pricing SigninSignupgsjqwyl/JavaInterviewWatch38 Star741 Fork226Code Issues1 Pull requests Actions Projects Security InsightsDismissJoin...

2020-07-30 16:39:26 2973 2

原创 jvm最全详解-06-JVM调优实战及常量池详解

jvm最全详解-06-JVM调优实战及常量池详解阿里巴巴Arthas详解Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,可以方便的定位和诊断线上程序运行问题。Arthas 官方文档十分详细,详见:https://alibaba.github.io/arthasArthas使用# github下载arthaswget https://alibaba.github.io/arthas/arthas-..

2020-07-30 16:24:04 562

原创 Spring Boot 干货总结

Spring Boot 干货总结(超详细,建议收藏)它们占据了本文的大部分内容:虽然它们之间可能没有太多的联系,但这些知识对于理解Spring Boot的核心原理至关重要,如果你对Spring框架烂熟于心,完全可以跳过这4个小节。正是因为这个系列的文章是由这些看似不相关的知识点组成,因此取名知识清单。在过去两三年的Spring生态圈,最让人兴奋的莫过于Spring Boot框架。或许从命名上就能看出这个框架的设计初衷:快速的启动Spring应用。因而Spring Boot应用本质上就是一个.

2020-07-30 16:16:32 167

原创 消息队列连环炮

消息队列连环炮 项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? kafka,activemq,rabbitmq,rocketmq 都有什么去呗? 如何保证消息队列高可用? 如何保证消息不被重复消费? 如何保证消息的可靠性传输? 如何保证消息的顺序性? 写一个消息队列架构设计? 消息队列技术选型解决的问题: 解耦 异步 削峰 不用 MQ 系统耦合场...

2020-07-30 16:12:27 187

原创 操作系统核心知识点

5万字、97 张图总结操作系统核心知识点这不是一篇教你如何创建一个操作系统的文章,相反,这是一篇指导性文章,教你从几个方面来理解操作系统。首先你需要知道你为什么要看这篇文章以及为什么要学习操作系统。搞清楚几个问题首先你要搞明白你学习操作系统的目的是什么?操作系统的重要性如何?学习操作系统会给我带来什么?下面我会从这几个方面为你回答下。操作系统也是一种软件,但是操作系统是一种非常复杂的软件。操作系统提供了几种抽象模型 文件:对 I/O 设备的抽象 虚拟内存:对程序存储.

2020-07-30 16:07:56 2758

原创 Linux命令大全详解

150个Linux命令 命令 功能说明 线上查询及帮助命令(2个) man 查看命令帮助,命令的词典,更复杂的还有info,但不常用。 help 查看Linux内置命令的帮助,比如cd命令。 文件和目录操作命令(18个) ls 全拼list,功能是列出目录的内容及其内容属性信息。 cd.

2020-07-30 16:01:16 237

原创 常见的 OOM 异常分析

常见的 OOM 异常分析(硬核干货)在《Java虚拟机规范》的规定里,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生 OutOfMemoryError 异常的可能。本篇主要包括如下 OOM 的介绍和示例: java.lang.StackOverflowError java.lang.OutOfMemoryError: Java heap space java.lang.OutOfMemoryError: GC overhead limit exceede.

2020-07-30 15:54:32 608

原创 jvm内存结构详解

2万字长文包教包会 JVM 内存结构直击面试反正我是带着这些问题往下读的 说一下 JVM 运行时数据区吧,都有哪些区?分别是干什么的? Java 8 的内存分代改进 举例栈溢出的情况? 调整栈大小,就能保存不出现溢出吗? 分配的栈内存越大越好吗? 垃圾回收是否会涉及到虚拟机栈? 方法中定义的局部变量是否线程安全? 运行时数据区内存是非常重要的系统资源,是硬盘和 CPU 的中间仓库及桥梁,承载着操作系统和应用程序的实..

2020-07-30 15:49:08 569

原创 HashMap 夺命二十一问,必看系列!

真题:HashMap 夺命二十一问,必看系列!1:HashMap 的数据结构?A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>\[\] table;2:HashMap 的工作原理?HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry接口)实现,HashMap 通过 put & get..

2020-07-30 15:46:51 311

原创 jvm最全详解-05-JVM调优工具详解及调优实战

jvm最全详解-05-JVM调优工具详解及调优实战前置启动程序事先启动一个web应用程序,用jps查看其进程id,接着用各种jdk自带命令优化应用Jmap此命令可以用来查看内存信息,实例个数以及占用内存大小jmap -histo 14660 #查看历史生成的实例jmap -histo:live 14660 #查看当前存活的实例,执行过程中可能会触发一次full gc打开log.txt,文件内容如下:num:序号 instances:实例数量 b..

2020-07-29 04:45:18 603

原创 jvm最全详解-04-JVM垃圾收集器详解

jvm最全详解-04-JVM垃圾收集器详解垃圾收集算法分代收集理论当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将java堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法。比如在新生代中,每次收集都会有大量对象(近99%)死去,所以可以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。而老年代的对象存活几率是比较高的,而且没有额外的空间对它进行分配担保,所以我们必须选择“标.

2020-07-29 04:43:45 233

原创 jvm最全详解-03-JVM内存分配机制与垃圾回收算法

jvm最全详解-03-JVM内存分配机制与垃圾回收算法对象的创建对象创建的主要流程:1.类加载检查虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。2.分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类 加载完成后便可完全..

2020-07-29 04:42:28 499

原创 jvm最全详解-02-JVM内存模型深度剖析

jvm最全详解-02-JVM内存模型深度剖析JDK体系结构Java语言的跨平台特性JVM整体结构及内存模型二、JVM内存参数设置Spring Boot程序的JVM参数设置格式(Tomcat启动直接加在bin目录下catalina.sh文件里):java -Xms2048M -Xmx2048M -Xmn1024M -Xss512K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -j...

2020-07-29 04:41:17 300

原创 redis最全详解-05-Redis缓存设计与性能优化

redis最全详解-05-Redis缓存设计与性能优化多级缓存架构缓存设计缓存穿透缓存穿透是指查询一个根本不存在的数据, 缓存层和存储层都不会命中, 通常出于容错的考虑, 如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询, 失去了缓存保护后端存储的意义。造成缓存穿透的基本原因有两个:第一, 自身业务代码或者数据出现问题。第二, 一些恶意攻击、 爬虫等造成大量空命中。缓存穿透问题解决方案:1、缓存空对象Strin.

2020-07-29 04:28:08 709

原创 redis最全详解--04-Redis高可用集群之水平扩展

redis最全详解--04-Redis高可用集群之水平扩展Redis3.0以后的版本虽然有了集群功能,提供了比之前版本的哨兵模式更高的性能与可用性,但是集群的水平扩展却比较麻烦,今天就来带大家看看redis高可用集群如何做水平扩展,原始集群(见下图)由6个节点组成,6个节点分布在三台机器上,采用三主三从的模式1、启动集群# 启动整个集群/usr/local/redis-5.0.3/src/redis-server /usr/local/redis-cluster/8001/red.

2020-07-29 04:25:47 362

原创 redis最全详解-03-Redis缓存高可用集群

redis最全详解-03-Redis缓存高可用集群1、Redis集群方案比较哨兵模式在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢.

2020-07-29 04:24:04 173

原创 redis最全详解-02-Redis持久化、主从与哨兵架构详解

redis最全详解-02-Redis持久化、主从与哨兵架构详解Redis持久化RDB快照(snapshot)在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。你可以对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动保存一次数据集。比如说, 以下设置会让 Redis 在满足“ 60 秒内有至少有 1000 个键被改动”这一条件时, 自动保存一次数据集:# save 60 1000关闭RDB只需要

2020-07-29 04:21:58 401

原创 redis最全详解-01-Redis核心数据结构与核心原理

redis最全详解-01-Redis核心数据结构与核心原理Redis安装下载地址:http://redis.io/download安装步骤:# 安装gccyum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压wget http://download.redis.io/releases/redis-5.0.3.tar.gztar xzf redis-5.0.3.tar.gzcd redis-

2020-07-29 04:18:50 264 1

原创 MySQL 138 张图!

138 张图!入门 MySQLSQL 基础使用MySQL 是一种关系型数据库,说到关系,那么就离不开表与表之间的关系,而最能体现这种关系的其实就是我们接下来需要介绍的主角SQL,SQL 的全称是Structure Query Language,结构化的查询语言,它是一种针对表关联关系所设计的一门语言,也就是说,学好 MySQL,SQL 是基础和重中之重。SQL 不只是 MySQL 中特有的一门语言,大多数关系型数据库都支持这门语言。下面我们就来一起学习一下这门非常重要的语言。查询...

2020-07-19 19:07:36 199

原创 Arthas - 定位处理监控工具

目录前言 1、Arthas 介绍 2、Arthas 使用场景 3、Arthas 怎么用 3.1 安装 3.2 运行 3.3 web console 3.4 常用命令 3.5 退出 4、Arthas 常用操作 4.1 全局监控 4.2 CPU 为什么起飞了 4.3 线程池线程状态 4.4 线程死锁 4.5 反编译 4.6 查看字段信息 4.7 查看方法信息 4.8 对变量的值很是好奇 4.9 程序有没有问题 4.9...

2020-07-10 18:52:25 1217 1

原创 高并发限流-漏桶算法和令牌桶算法

xuwc博客园首页新随笔联系订阅管理随笔- 58 评论- 19 文章- 0高并发系统限流-漏桶算法和令牌桶算法高并发系统限流-漏桶算法和令牌桶算法参考:http://www.cnblogs.com/LBSer/p/4083131.htmlhttps://blog.csdn.net/scorpio3k/article/details/53103239https://www.cnblogs.com/clds/p/5850070.htm...

2020-07-08 16:33:56 1504

原创 【死磕Java并发】—–J.U.C之线程池:ScheduledThreadPoolExecutor

【死磕Java并发】—–J.U.C之线程池:ScheduledThreadPoolExecutorScheduledThreadPoolExecutor解析我们知道Timer与TimerTask虽然可以实现线程的周期和延迟调度,但是Timer与TimerTask存在一些缺陷,所以对于这种定期、周期执行任务的调度策略,我们一般都是推荐ScheduledThreadPoolExecutor来实现。下面就深入分析ScheduledThreadPoolExecutor是如何来实现线程的周期...

2020-07-06 07:11:04 177

原创 【死磕 Java 集合】— LinkedList源码分析

【死磕 Java 集合】— LinkedList源码分析问题(1)LinkedList只是一个List吗?(2)LinkedList还有其它什么特性吗?(3)LinkedList为啥经常拿出来跟ArrayList比较?(4)我为什么把LinkedList放在最后一章来讲?简介LinkedList是一个以双向链表实现的List,它除了作为List使用,还可以作为队列或者栈来使用,它是怎么实现的呢?让我们一起来学习吧。继承体系通过继承体系,我们可以看到L...

2020-07-06 07:07:19 121

原创 【死磕 Java 集合】— ArrayDeque源码分析

【死磕 Java 集合】— ArrayDeque源码分析问题(1)什么是双端队列?(2)ArrayDeque是怎么实现双端队列的?(3)ArrayDeque是线程安全的吗?(4)ArrayDeque是有界的吗?简介双端队列是一种特殊的队列,它的两端都可以进出元素,故而得名双端队列。ArrayDeque是一种以数组方式实现的双端队列,它是非线程安全的。继承体系通过继承体系可以看,ArrayDeque实现了Deque接口,Deque接口继承自Queue接口...

2020-07-06 07:06:18 105

原创 【死磕 Java 集合】— DelayQueue源码分析

【死磕 Java 集合】— DelayQueue源码分析问题(1)DelayQueue是阻塞队列吗?(2)DelayQueue的实现方式?(3)DelayQueue主要用于什么场景?简介DelayQueue是java并发包下的延时阻塞队列,常用于实现定时任务。继承体系从继承体系可以看到,DelayQueue实现了BlockingQueue,所以它是一个阻塞队列。另外,DelayQueue还组合了一个叫做Delayed的接口,DelayQueue中存储...

2020-07-06 07:05:19 107

原创 【死磕 Java 集合】— ConcurrentLinkedQueue源码分析

【死磕 Java 集合】— ConcurrentLinkedQueue源码分析问题(1)ConcurrentLinkedQueue是阻塞队列吗?(2)ConcurrentLinkedQueue如何保证并发安全?(3)ConcurrentLinkedQueue能用于线程池吗?简介ConcurrentLinkedQueue只实现了Queue接口,并没有实现BlockingQueue接口,所以它不是阻塞队列,也不能用于线程池中,但是它是线程安全的,可用于多线程环境中。那...

2020-07-06 07:04:26 168

原创 【死磕 Java 集合】— LinkedTransferQueue源码分析

【死磕 Java 集合】— LinkedTransferQueue源码分析问题(1)LinkedTransferQueue是什么东东?(2)LinkedTransferQueue是怎么实现阻塞队列的?(3)LinkedTransferQueue是怎么控制并发安全的?(4)LinkedTransferQueue与SynchronousQueue有什么异同?简介LinkedTransferQueue是LinkedBlockingQueue、SynchronousQu...

2020-07-06 07:03:27 200

原创 【死磕 Java 集合】— PriorityBlockingQueue源码分析

【死磕 Java 集合】— PriorityBlockingQueue源码分析问题(1)PriorityBlockingQueue的实现方式?(2)PriorityBlockingQueue是否需要扩容?(3)PriorityBlockingQueue是怎么控制并发安全的?简介PriorityBlockingQueue是java并发包下的优先级阻塞队列,它是线程安全的,如果让你来实现你会怎么实现它呢?还记得我们前面介绍过的PriorityQueue吗?点击链接直...

2020-07-06 07:02:30 98

原创 【死磕 Java 集合】— SynchronousQueue源码分析

【死磕 Java 集合】— SynchronousQueue源码分析问题(1)SynchronousQueue的实现方式?(2)SynchronousQueue真的是无缓冲的吗?(3)SynchronousQueue在高并发情景下会有什么问题?简介SynchronousQueue是java并发包下无缓冲阻塞队列,它用来在两个线程之间移交元素,但是它有个很大的问题,你知道是什么吗?请看下面的分析。源码分析主要属性// CPU的数量static final i...

2020-07-06 07:01:32 146

原创 【死磕 Java 集合】— LinkedBlockingQueue源码分析

【死磕 Java 集合】— LinkedBlockingQueue源码分析问题(1)LinkedBlockingQueue的实现方式?(2)LinkedBlockingQueue是有界的还是无界的队列?(3)LinkedBlockingQueue相比ArrayBlockingQueue有什么改进?简介LinkedBlockingQueue是java并发包下一个以单链表实现的阻塞队列,它是线程安全的,至于它是不是有界的,请看下面的分析。源码分析主要属性/...

2020-07-06 07:00:37 124

原创 【死磕 Java 集合】— ArrayBlockingQueue源码分析

【死磕 Java 集合】— ArrayBlockingQueue源码分析问题(1)ArrayBlockingQueue的实现方式?(2)ArrayBlockingQueue是否需要扩容?(3)ArrayBlockingQueue有什么缺点?简介ArrayBlockingQueue是java并发包下一个以数组实现的阻塞队列,它是线程安全的,至于是否需要扩容,请看下面的分析。队列队列,是一种线性表,它的特点是先进先出,又叫FIFO,就像我们平常排队一样,先到先得...

2020-07-06 06:59:35 89

原创 分布式事务理论及解决方案

分布式事务理论及java解决方案前言 数据库事务 分布式理论 CAP定理 BASE理论 分布式事务 一、两阶段提交(2PC) java方案-Seata方案 具体使用 二、补偿事务(TCC) java方案-TCC框架Hmily 使用 三、本地消息表(异步确保) 举例: 四、MQ 事务消息 RocketMQ事务消息方案 使用: 以上各种分布式事务对比分析: 五、Sagas 事务模型

2020-07-05 08:14:04 541

原创 消息中间件:Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列 综合对比

消息中间件:Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列 综合对比大家都觉得分析得不错,有的人就说,但是我用的是ActiveMQ....好的,这次,我们从17个角度,分别详细对比下Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列的优劣。 一、资料文档 二、开发语言 三、支持的协议 四、消息存储 五、消息事务 六、负载均衡 七、集群方式 八、..

2020-07-05 08:04:05 14274

原创 消息中间件---选型分析

消息中间件选型分析——从Kafka与RabbitMQ的对比来看全局有很多网友留言:公司要做消息中间件选型,该如何选?你觉得哪个比较好?消息选型的确是一个大论题,实则说来话长的事情又如何长话短说。对此笔者专门撰稿一篇内功心法:如何看待消息中间件的选型,不过这篇只表其意未表其行,为了弥补这种缺陷,笔者最近特意重新撰稿一篇,以供参考。温馨提示:本文一万多字,建议先马(关注)后看。一、前言消息队列中间件(简称消息中间件)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通...

2020-07-05 08:01:31 442

原创 并发编程之AQS源码及原理分析

并发编程之AQS源码及原理分析上次的文章《并发编程的锁和内存模型》介绍了synchronize和各种锁(偏向锁,自旋锁,轻量级锁以及重量级锁),介绍了Java内存模型的三大特性,引入了volitile这个关键字,详细说明了它的作用和原理,另外介绍了JUC里很多地方用到的思想或叫算法:CAS(比较并交换),今天的重点是JUC里的难点AQS(I think),这块不得不看源码了。面试环节面试官:那我记得还有一个和CAS名字很像的叫AQS,你能说下吗?我:可以。1、AQS(Abstrac.

2020-07-05 07:53:45 157

原创 HashMap面试连环炮

HashMap面试连环问1.HashMap的底层数据结构是什么?底层数据结构是哈希表结构(链表散列:数组+单向链表),结合了数组和链表的优点,当链表长度超过8时,链表会转为红黑树。数组中的每一个元素都是链表。总结来说就是HashMap在JDK1.8之前底层是由数组+链表实现的,在JDK1.8开始底层是由数组+链表或者数组+红黑树实现的。追问:为什么在1.8中增加红黑树?当需要查找某个元素的时候,线性探索是最直白的方式,它会把所有数据遍历一遍直到找到你所查找的数据,对于数组和链表这种线性.

2020-07-05 07:51:23 679

空空如也

空空如也

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

TA关注的人

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