自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mysql第三关之事务、锁、高可用

本章较深入探索Mysql核心机制,Innodb引擎架构,MVCC多版本并发控制、事务支撑、各种级别的锁、Mysql高可用设计等概括梳理。

2024-02-22 09:11:08 357

原创 Redis第一关之常规用法

Redis不用多说,已经火了很多年了,也用了很多年了。现在做一些归纳总结。这篇文章主要介绍Redis的常规知识及用法,包括数据结构、使用场景、特性、过期机制、持久化机制。

2024-02-19 21:07:20 953

原创 分库分表浅析

对于任何系统而言,都会设计到数据库随着时间增长而累积越来越多的数据,系统也因为越来越多的需求变迁导致原有的设计不再满足现状,为了解决这些问题,分库分表就会走进视野,带着几个问题走入分库分表。什么是分库分表为什么要分库分表怎样分库分表分库分表后如何处理事务问题分库分表是一种技术方案,为了解决单机数据块随着时间增长,数据量越来越大引起的数据库性能逐渐下滑。在上述定义中,分库分表主要是为了解决数据库性能下降产生的一种技术方案。引起数据库性能下降的原因有很多,但不一定都需要通过分库分表来解决。

2024-02-18 16:50:37 376

原创 Mysql第二关之存储引擎

所有关于Mysql数据库优化的介绍仿佛都有存储引擎的身影。本文介绍Mysql常用的有MyISAM存储引擎和Innodb存储引擎,还有常见的索引。Mysql有两种常见的存储引擎,MyISAM和Innodb,它们各有优劣,经过多次优化和迭代,现在常用的一般是Innodb引擎,因此MyISAM仅作基本介绍。

2024-02-17 11:22:02 1042

原创 Mysql第一关之常规用法

介绍Mysql常规概念,用法。包括DDL、DCL、DML、DQL,关键字、分组、连表、函数、排序、分页等。

2024-02-15 15:10:14 983

原创 OpenVPN简记

导入到windows的conf文件夹目录中,点击客户端连接。

2024-02-08 18:03:06 650

原创 SpringCloud Gateway网关梳理

在中大型系统中,Gateway网关发挥着关键的作用,Gateway可以运用在许多应用场景,如接口限流、日志监控、授权认证等等。下面对过往的Gateway知识做一个归纳与总结。

2023-10-17 11:10:29 224 2

原创 Spring AOP归纳与总结

AOP的核心思想是面向切面编程。AOP规范定义了多种概念,常用的aop框架有spring aop和AspectJ,两者功能和性能差异较大,现在默认的AOP框架是AspectJ,下面逐渐归纳其相关概念、功能及实现原理。切点是由一个或者多个条件组成的,这里面有两个元素:条件表达式和条件逻辑连接条件的逻辑连接及常用的与&& 、 或|| 、非!,可以通过括号()等来确定。不同类型的条件表达式可以通过逻辑符号连接。

2023-10-16 13:41:24 153

原创 SpringMVC归纳与总结

Spring的核心是IOC,一种依赖反转的解耦思想。MVC是一种处理Web请求的架构模式,当两者的作用结合,就形成了SpringMVC。

2023-08-18 16:01:19 405

原创 Maven + Nexus 私有仓库搭建 + 项目推送 + 其他项目拉取(简记)

Maven Nexus

2023-04-14 09:40:58 1037

原创 一般IO模型讨论

常见的同步、异步、阻塞和非阻塞概念及产生的IO处理模型

2022-07-16 18:13:06 994

原创 JVM内存模型结构浅析

前言Java的平台无关性Java之所以能一次开发,多处部署,实现平台无关性,就是因为JVM底层实现了与操作系统交互的相关操作,从而让Java开发者不再关心会放在上面系统上运行。Java的内存自动管理Java相比较C++, 之所以不需要手动释放内存,就是因为JVM实现了内存自动回收机制。从而让Java开发者不需要关心内存问题,专注的开发具体业务。构成...

2022-06-01 13:32:19 153

原创 记录一次线上Mysql数据库迁移方案制定与实施

前言系统运行有很多年了。数据库服务器也运行很多年了,性能比较老旧,SSD硬盘容量只有250G,在各种需求下,当前服务器的磁盘即将不足。所以开启了本次数据库的迁移行动。需求迁移的数据量高达120多G,数据累计千万上亿条。不能影响线上正常运行保证迁移前后的数据安全与精确还原。实施......

2022-05-04 19:46:27 1449

原创 多线程——FutureTask源码分析

前言FutureTask是多线程编程中经常用到的一个类,在线程池中,它常常以 executor.submit() 方法调用中的形式隐式存在。它返回了一个Future对象,从而实现了多线程编程中获取异步结果的一种途径。FutureTask是一个封装了任务的类,可以理解成是Runnable/Callable的包装类。原生的Runnable/Callable都是同步执行,FutureTask像是一个单独的容器,通过持有任务的成员变量,并获取执行该任务的线程,让任务在这FutureTask中运行,然后将运行结果

2021-10-16 16:23:23 281

原创 序列化Serializable、transient和ObjectInputStream、ObjectOutputStream

前言在IO体系中,ByteArrayInputStream可以将所有能转为byte[]的对象作为流缓存在内存里。那么如果要持久化一个对象应该怎么操作呢?序列化与反序列化是针对java对象怎么持久化的一套操作,涉及到的知识点除了IO体系中的ObjectInputStream、ObjectOutputStream,还有序列化接口Serializable、序列化版本变量serialVersionUID、序列化禁用关键字transient、一些特有的异常等等。所以为了形成一个整体,我在这篇文章中将它涉及到的内

2021-09-28 12:27:27 199

原创 IO体系——ByteArrayInputStream源码解析

前言IO体系可以分为节点流和包装流,节点流有发生在硬盘上的,如FileInputStream,其原始数据来源于硬盘上,而ByteArrayInutStream也属于一种节点流,其原始数据来源于内存中。这是一个内存中的流。ByteArrayInputStream从字面意思可以看出,其内部肯定有byte[]数组,它是一个底层由byte[]数组构成的流对象。其内部构造和BufferInputStream很像。不同的是BufferInputStream内部固定了8字节缓存数组。而ByteArrayInput

2021-09-21 11:41:38 381

原创 IO体系——FileInputStream详解和BufferInputStream真的可以提高效率吗?

前言作为操作文件IO流最基本的类,应该是每个学习Java的人必知必会的。以前只是会用,不能理解什么是流,不能理解为什么用完必须要close(),更不能理解为什么用了BufferInputStream、BufferOutputStream后速度更快一点,对于这一点,虽然网上很多博客都说这是Buffer包装流带来的功能,但是真相真的是这样吗?本章将会揭开这一系列问题神秘的面纱,寻找真相。节点流在BIO体系中,可以分为节点流和处理流,节点流是指从一个节点开始流向另一个地方的流,在我的理解当中,节点流是一个

2021-09-16 14:15:26 1329

原创 IO体系——InputStream、OutputStream特性研究

前言BIO是IO模型中最简单的一种,中文意思是阻塞式输入输出接口。也是比较原始的模式。它是计算机早期IO的运行模式。在这种模式下,计算机一次读取数据过程是这样的。 以文件IO为例:假如我们用Java写了一个进程P,进程P相对于操作系统来说属于外部进程。进程P发出要读取D盘中一个文件的命令请求,由于系统文件只能由操作系统来操作,CPU接收到程序P的命令后,由用户态转换为内核态,然后调度设备读取该文件,在读取文件过程中是由其他设备完成,CPU处于阻塞状态。等到数据读取到系统内存后,再由系统内存复制到进程P

2021-08-02 16:10:48 569

原创 Springboot + Quartz分布式集群配置

前言由于最近要解决一个问题,在nginx转发请求的集群部署的情况下,用户创建一个任务并运行在某台服务器上,当用户取消任务时,如何优雅的找到那台服务器并关闭该任务。我想了一些办法,虽然也能够解决问题,比如广播,消息队列,redis缓存轮询等等,但都感觉不是很优雅。实现方法比较笨拙并且不容易管理,增加了代码的复杂度。通过不停的在论坛上找方案,找到了Quartz,一个成熟优秀的分布式集群任务管理框架。建表set global innodb_large_prefix = ON;set global in

2021-07-27 12:59:27 1319

原创 第二十二章 线程池之ScheduledThreadPoolExecutor理解

前言ScheduledThreadPoolExecutor 继承于ThreadPoolExecutor,还实现了ScheduledExecutorService。因此这个类是两种父类的合并。ThreadPoolExecutor解决了线程创建与销毁的开销问题,

2021-03-17 17:32:03 896

原创 记录一次句柄泄漏排查经历(too many open files)

今天元宵节,新年即将结束,年前由于每天在观察服务器日志和维护,没有出现过什么大问题。但是在过年放假期间,出现了日志过大的情况。平时每天产生1M的日志是正常的,但是年中有一天我查看服务器的时候,发现已经有42G日志了,线上功能也有些不正常,暗自心中一紧,迅速开启了这次排查之旅。一、 备份服务器异常日志,恢复线上功能使用linux系统cp命令,将异常日志复制备份。cp [OPTION]... SOURCE... DIRECTORY重启服务器进程,功能恢复正常。二、 查看日志,初步定位功能恢复以后,

2021-02-26 10:16:13 1812

原创 第二十一章 对ThreadPoolExecutor源码的理解及原理探究

前言最近一段时间都没有空闲阅读和学习Java基础核心知识,主要是最近换了工作稍微忙了一点。工作节奏也需要一段时间来适应,不过随着工作渐渐熟悉和稳定,工作和学习还是会慢慢回到正常节奏上来。本章将会了解Java的线程池原理及1. 线程池的好处与坏处3. 线程池的分类...

2020-11-04 13:02:08 114

原创 第十九章 Java线程之Thread源码分析

前言

2020-06-30 21:57:30 203

原创 第十八章 Java线程之ThreadLocal源码分析

古语有云不积跬步,无以至千里。不积小流,无以成江海。尽管我们感觉现在的时代生活越来越不容易,尽管世界充满着:“还在相信只要努力就会成功吗?”。从历史的长河来看,我们如今的时代不过是沧海中的一粟。那些经过上千年沉淀和传承下来的智慧依然是人生中正确的导向。大家好,我是中国茫茫几百万程序员大军中的一员,也是非计算机专业大专IT培训出生的程序员,在迷惘和失落的时候,心中依然坚信着老祖宗传下来的智慧:契而舍之,朽木不折。锲而不舍,金石可镂。前言在做一篇文章分析之前,总会做大量的功课。这篇文章也是一样

2020-06-16 16:15:34 185

原创 第十七章 Java线程之ThreadGroup源码分析

前言ThreadGroup,顾名思义,它是一组线程。但这是一个对象,所以可以理解为这是一个拥有一组线程的管理员。ThreadGroup这个管理员提供了一些管理方法,类似一栋楼的宿舍需要一个宿舍管理员。这样的好处是对某一些功能方便管理。比如,现在疫情发生了,每个人都是一个线程,防疫员如果挨个挨个的去测量体温,肯定吃不消,于是他通知宿管所:“你去负责这栋楼的体温测量”。所以,ThreadGroup就是这样一个统一管理的作用。解析从变量入手变量成员如下:private final ThreadGroup

2020-06-01 21:57:26 126

原创 Java web 的核心HttpServletRequest 和 HttpServletResponse

前言Java从诞生之初到现在,仅仅20多年的时间,我有幸在它发展的初级阶段结实了这门语言。因为我相信,随着Java生态的越来越活跃,以及Java的设计思想越来越被时代所认可,Java的开发者越来越多,它就会像一家公司一样不断壮大,不断汲取新鲜血液以及不断的创新发展,直至30年、50年甚至100年。Java的诞生是为了在不同的硬件设备上做应用,比如电视、冰箱、洗衣机等等,因此才设计了JVM用来屏蔽不同的底层系统,然而它并没有发展成想象中那样,而是误打误撞的和互联网结下了深厚的渊源,因此才有了Java we

2020-05-31 22:27:46 278

原创 程序员的后浪

危机意识java刚毕业的时候,我们用的spring boot。过了一年了,我们仍然在用spring boot。而现在java毕业的同学,已经开始用spring cloud 了。如果没有危机意识,如果没有经常浏览圈内博客,可能就会在无尽的业务中不停的html,不停的crud,直到被后浪们冲上岸,永远停留在那里。程序员的觉醒我思考着长期的职业生涯应该是不断的在更新技术,每年都要提高技术底线,了解和学习新技术的出现,以及新技术出现后能够解决的问题。寻找法宝在程序员这条路上,还没有找到什么练习法宝,

2020-05-18 15:20:50 160

原创 第十六章 Java线程之初步认识

前言

2020-05-06 16:13:50 113

原创 数据库之Oralce ADG 搭建使用(搭建流程、个人理解、出现问题、解决方案)

前言最近为了实现系统的高可用性,准备搭建oracle adg 主从实现技术,从最初连 shutdown immediate 是什么意思,mount、nomount是什么都不知道的情况下,历时5天终于初步搭建并实现了oracle adg技术并掌握了一些原理。是不是太菜? /哭笑免费是最贵的,这句话可能是真的。搭建过程中不断的查询搜索引擎,总是会出现一模一样的抄袭文章,文章质量参差不齐,有些命令...

2020-04-24 11:30:37 18890 18

原创 第十一章 Java的集合之LinkedHashMap源码分析

前言

2020-04-09 15:38:27 91

原创 第十章 Java的集合之从设计思想分析HashMap源码

前言

2020-04-08 21:51:30 139

原创 第九章 Java的集合之Vector 与 栈 Stack 源码分析

前言

2020-04-03 14:09:43 186

原创 第八章 ArrayList 与 LinkedList 的使用选择分析

前言面试官常问的一个问题是ArrayList 和 LinkedList 的区别是什么?百度:ArrayList 和 LinkedList 的区别是什么? 也会出现一大堆。这是一个老生常谈,白谈不厌的问题。本章作为学习的一章,将来分析这个话题。ArrayList 与 LinkedList 之 我 见。...

2020-04-02 15:05:37 124

原创 第七章 Java的集合之LinkedList源码分析

前言计算机作为数据处理的工具,其内部需要做许多的数据处理。数据与数据之间存在的关系,称为数据结构。在计算机发展过程中,有很多种数据结构诞生,线性表是最基本的数据结构之一。它代表具有相同性质的某一类数据的有序集合 L = (a1, a2, …, ai,ai+1 ,…, an)线性结构在物理内存上,又分为物理连续和逻辑连续。物理连续是指:数据的逻辑顺序是根据在内存地址上的分布来决定的,称为顺...

2020-03-24 14:15:26 120

原创 第六章 Java的集合之ArrayList源码分析

前言从这一章开始,将会进入JAVA集合部分的分析,包含了大部分集合大家族,如常用的ArrayList、LinkedList、HashSet、HashMap、TreeSet、TreeMap等等,还有它们的迭代器,如Iterator、listIterator、Collections工具类,然后可能还有对不常用的集合做简要分析,集合之间对比分析优点、缺点。这样,才能够让我们对Java的集合部分有了全面...

2020-03-10 15:03:50 160

原创 第五章 Java的基础类之String、StringBuffer、StringBuilder(下)

前言在现实世界中,既有独居动物,也有群居动物。人作为一种高等动物,是一种群居动物。群居动物都离不开家族,String类上篇中已经详细分析了它的源码实现,几乎涵盖了大部分的源码。作为一个优秀的类,它是怎样产生的呢?它的家族、派系是怎样的?为了以后编码过程中更加清晰明白,不被混淆,这篇文章来对比分析一下String、StringBufffer、StringBuilder、AbstractString...

2020-03-08 12:18:14 160

原创 第四章 Java的基础类之String源码分析(上)

前言现实世界中,人们的生活总是离不开电。作为人类活动、机械运转等各种各样最基本的一样东西,在整个世界运转中发挥着重大作用。在Java的世界里,也有它自己的电,几乎在绝大部分地方都能看到它的身影。它就是String 类。String 类由于使用频率高,内容点多,将其分为上下篇做介绍。上篇做源码分解,下篇做常用疑难点分析。数据结构在数据结构中,有一种叫‘串’的数据结构,它的底层由数组构成。你可以...

2020-03-04 15:47:40 166

原创 第三章 Java的包装类之Byte、Short、Long源码分析

前言物以类聚,人以群分。相似性是世界万物演化的规则之一。java作为一个世界,其内部也充斥着许许多多的相似性。如果能把具有相似性的类放在一起,剥离出它们的公共特点,将这些公共特点重新组成一个新的类,那么这个类就是抽象类。狗按照不同的特点,可以分为很多种类。 按色泽分类: 纯色狗、花色狗。按大小分类:小狗、大狗。按品种分类:田园犬、贵宾犬。不论按什么特点分类,它们的公共特点都是四条腿、狗...

2020-02-28 10:07:06 170

原创 第二章 Java的包装类之Integer源码分析

前言第一章详细分析了java的类型转换,不同数据类型之间的强转和隐转。本来第二章应该分析面向对象的基础知识的,但是发现这种只有理论的知识分析起来很枯燥,并且也不容易理解。所以从第二章开始,将逐渐在文中阐述自己对面向对象的一些认识和理解。如果有不对的地方还望能多多帮忙斧正。这一章基于JDK1.8版本,分析JAVA的包装类之Integer,因为这个类是经常用到的类,基础中的基础,所以分析透彻是非...

2020-02-23 22:37:07 198

原创 第一章 Java的数据类型转换

本章开始,将从java基础模块开始分析知识点。包括基本数据类型,包装类,String,IO,异常,线程,集合等等分析或原码分析。我打算从这篇文章开始,逐步研习java的基础知识点,自己也在不断学习中,如果文章中出现不正确的描述,希望能多多斧正。JAVA的类型转换是平时在coding中经常接触到的东西,我觉得如果不深入了解其原理,总有一天会掉入大坑中。所以本章将介绍java不同数据类型的类型转换...

2020-01-09 17:07:04 364

空空如也

空空如也

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

TA关注的人

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