自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM 的分代模型

我们知道在Java虚拟机中,当对象被创建出来后,是放在堆内存中的,那么在堆内存里面,对象又是怎么存储的呢?是所有对象都放在一起吗?我们先做一个假设,假设堆内存没有做任何区分,所有对象的从创建到销毁都是在放在一起。这回引起什么问题呢?思考一个问题,,当对象不在被使用了,GC在要去清理的时候,它怎么知道自己要清理那些对象呢?所有GC每次执行的时候都将堆内存所有对象全部扫描吗?

2023-08-28 10:00:00 236

原创 Jvm 的内存模型

本地内存是所有线程都共享的一部分内存,

2023-08-16 10:00:00 145

原创 Dockerfile

Dockerfile其实就是我们用来构建Docker镜像的源码,跟编程源码不同,它本质上一些命令的集合,有自己的逻辑和语法格式。Dockerfile可以让用户个性化定制Docker镜像满足实际的需求。总结下来主要是以下三点Dockerfile 是 Docker 中用于定义镜像自动化构建流程的配置文件在 Dockerfile 中,包含了构建镜像过程中需要执行的命令和其他操作Dockerfile 可以明确设定 Docker 镜像的制作过程,帮助我们在容器体系下能够完成自动构构建。

2023-04-26 23:09:46 168 1

原创 Docker私服

Docker 官方的Docker Hub是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像到本地,也可以把我们自己的镜像推送上去。但是,如果我们的服务器无法访问互联网,或者需要使用自己的自己私有镜像,此时我们就需要搭建自己的私有仓库,来存储和管理自己的镜像。官方私服企业私服一般我们个人用不到这个,而在企业应用中官方显得不是很友好,没有界面,所以一般都是使用的企业私服。

2023-03-31 08:15:00 956

原创 Docker三剑客之Docker-compose

在实际的生产中,一般都是使用一个docker容器部署一个应用进程,这种情况下,当部署多个不同应用或者一个应用部署多个实例的时候,就要运行多个容器。多个容器协同工作需要一个管理者来管理他们,定义这些容器如何相互关联。compose 就是做这件事的。compose、machine 和 swarm 是docker 原生提供的三大编排工具。简称docker三剑客。

2023-01-08 22:18:38 372

原创 Docker数据卷

我们在运行一个docker容器的时候,会产生一系列的数据文件,这些数据文件在我们删除docker容器的时候也会被删除,如果当我们希望把这些数据留下来当做其他的用途的时候,就需要将docker的文件持久化下来,实现数据共享,那么这个数据怎么共享呢。

2022-12-31 12:06:42 602

原创 从根本上理解Synchronized的加锁过程

从上面的描述无论是修饰代码块还是修饰方法,都要获取一个Monitor锁,那么什么是Monitor锁呢?Monitor即监视器,可以理解为一个同步工具或一种同步机制,通常被描述为一个对象。每一个Java对象就有一把看不见的锁,称为内部锁或者Monitor锁。任何一个对象都有一个Monitor与之关联,当且一个Monitor被持有后,它将处于锁定状态。Synchronized在JVM中基于进入和退出Monitor对象,通过成对的MonitorEnter和MonitorExit指令来实现方法同步和代码块同步。

2022-12-25 23:05:26 1135

原创 一篇ThreadLocal走天下

在面试的时候经常会有人文ThreadLocal是啥,首先明确的一点是:虽然ThreadLocal提供了一种解决多线程环境下成员变量的问题,但是ThreadLocal与线程同步无关,它解决的也不是多线程共享变量的问题。那么ThreadLocal到底是什么,又解决了什么问题呢?

2022-12-18 22:10:49 508

原创 并发基础(五):ThreadPoolExecutor源码解析

线程池将【创建出来的线程】都封装为 Worker,以Worker的形式维护线程运行任务的中断控制状态, 线程池模型的本质是生产者-消费者模型,生产者不断地往 workQueue 中丢 task, workQueue 负责源源不断地输送着任务,而 worker(线程) 不断地从workQueue获取任务来执行。

2022-12-11 22:03:29 509

原创 并发基础(四):线程池

线程池技术是一种多线程处理形式,将任务添加到队列中,通过线程池中创建出来的现成执行这些任务,省去了创建线程和销毁线程的消耗,我认为有点类似JAVA中Spring托管对象的思想在里面。

2022-11-26 23:33:06 839

原创 并发基础(三):线程

进程是资源分配的最小单位,线程是CPU处理器调度的最小单位进程有独立的地址空间,且进程之间互不影响,线程没有独立的地址空间,属于同一进程的多个线程共享同一块地址空间进程切换的开销比线程切换大线程的在同一时刻只会处于一种状态,这些状态【属于是虚拟机状态】,不反映任何操作系统线程的状态。

2022-11-12 11:52:31 468

原创 并发基础(二):CPU多级缓存与缓存一致性

为了解决CPU处理器与内存之间的读写效率的问题,在CPU和内存之间加入了高速缓存。那么这个缓存是如何解决它们之间的问题的呢?又带来了什么问题呢?通过这篇文章来了解一下这些问题

2022-11-01 10:00:00 990

原创 并发基础(一):并发理论

线程安全在进程中有多个线程同时运行同一段代码时,线程安全就是通过同步机制保证各个线程都可以正常且正确的执行,运行结果与预期是一致的。线程不安全不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。

2022-09-19 23:21:39 207

原创 分布式集群:分布式事物解决⽅案

什么是分布式系统部署在不同结点上的系统通过网络交互来完成协同工作的系统比如:充值加积分的业务,用户在充值系统向自己的账户充钱,在积分系统中自己积分相应的增加。

2022-08-26 14:31:52 399

原创 MySQL十九:分库分表实践

分库分表其实很好理解,顾名思义,即把存于一个库的数据分散到多个库中,把存于一个表的数据分散到多个表中。但是需要明确一点,分库分表不是一件事,而是三件事,也就是分库分表的三种方案只分库不分表只分表不分库既分库又分表。...

2022-08-13 13:42:00 2378

原创 MySQL十八:写语句的执行过程

当我们需要修改一个记录时,数据库会先根据条件找到要修改的数据,然后执行修改写入操作,因此我们再分析写操作的执行过程时,其实是包含读语句的执行过程的。

2022-08-07 17:31:49 270

原创 MySQL十七:Change Buffer

在中介绍了buffer pool会缓存热的数据页和索引页,减少磁盘读操作,而对于磁盘的写操作,innoDB同样也有类似的策略,即通过change buffer缓解磁盘写操作产生的磁盘IO。

2022-08-04 13:41:39 2695

转载 在VMware中安装CentOS7(超详细的图文教程)

在VMware中安装CentOS7(超详细的图文教程)

2022-07-27 23:00:19 23130 9

原创 MySQL十六:36张图理解Buffer Pool

BufferPool即【缓冲池,简称BP】,BP以Page页为单位,缓存最热的数据页(datapage)与索引页(indexpage),Page页默认大小16K,BP的底层采用链表数据结构管理Page。上图描述了BufferPool在innoDB中的位置,通过它所在的位置我们可以大概知道它的工作流程所有数据页的读写操作都需要通过bufferpool进行,innodb读操作,先从buffer_pool中查看数据的数据页是否存在,如果不存在,则将page从磁盘读取到bufferpool中。...

2022-07-22 14:00:03 859 2

原创 分布式集群:分布式ID解决⽅案

在业务开发中,大量场景需要唯一 ID 来进行标识:用户需要唯一身份标识、商品需要唯一标识、消息需要唯一标识、事件需要唯一标识等,都需要全局唯一ID,尤其是复杂的分布式业务场景中全局唯一 ID 更为重要。...

2022-07-20 10:00:00 310

原创 MySQL十五:InnoDB为什么不使用跳表而是B+Tree

跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。

2022-07-18 10:00:00 929

原创 分布式集群:Spring Session源码分析

项目中有用到Spring Session作为分布式集群中Session的共享机制,它的原理很简单,但是其底层源码具体是怎么实现的呢

2022-07-09 11:06:18 388

原创 MySQL十四:单表最大2000W行数据

在互联网技术圈中有一个说法:MySQL 单表数据量大于 2000 W行,性能会明显下降。网传这个说法最早由百度传出,真假不得而知。但是却成为了行业内一个默认的标准。

2022-07-05 10:00:00 9192 8

原创 MySQL(十三):小一万字+14张图读懂锁机制

MySQL中的锁有很多种,各种锁应用在不同的地方。MySQL依靠锁机制可以让多个事务更新一行数据的时候串行化。

2022-06-16 20:20:45 470

原创 MySQL(十二):索引分析

数据库优化是一个很常见的面试题,下面就针对这一问题详细聊聊如何进行索引与sql的分析与优化。

2022-06-13 10:00:00 760

原创 MySQL(十一):索引基本原理

聊聊B-Tree索引、Hash索引、B+Tree索引的结构以及在实际存储引擎中的使用情况

2022-06-06 22:23:35 337

原创 MySQL(十):索引基础知识回顾

索引是对数据库表中一列或多列的值进行排序的一种结构,可以大大提高MySQL的检索速度。索引在MySQL中也叫做key,当表中的数据量越来越大时,索引对于查询性能的影响非常大。

2022-06-01 10:00:00 206

原创 MySQL(九):MVCC能否解决幻读问题

面试必问。聊聊MVCC到底能否解决幻读问题

2022-05-28 10:50:05 11635 21

原创 MySQL(八):读懂MVCC多版本并发控制

MVCC能否解决幻读问题

2022-05-21 13:40:05 779 1

原创 MySQL(七):六大日志

六大日志支撑MySQL服务的实现与运行

2022-05-17 22:57:41 1695

原创 MySQL(六):InnoDB数据文件

InnoDB是怎么存数据的呢?

2022-05-11 10:15:00 1565

原创 MySQL(五):InnoDB线程模型

InnoDB线程模型

2022-05-06 10:15:00 757

原创 MySQL(四):InnoDB的存储结构

MySQL存储引擎最大的特点就是【插件化】,可以根据自己的需求使用不同的存储引擎,innodb存储引擎支持行级锁以及事务特性,也是多种场合使用较多的存储引擎。

2022-04-30 11:00:00 992

原创 MySQL(三):存储引擎

数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引、锁等功能。许多数据库管理系统都支持多种不同的数据引擎。

2022-04-24 22:15:13 641

原创 MySQL(二):SQL运行机制

尺有所短,寸有所长;不忘初心,方得始终。请关注公众号:星河之码我们一般都不会去操作数据库本身,而是通过SQL语句调用MySQL,由MySQL处理并返回执行结果。那么SQL语句是如何执行sql语句的呢?Sql语句执行过程图解:从图中可以看出sql的执行基本上分为五步:建立连接(Connectors&Connection Pool)查询缓存(Cache&Buffer)解析器(Parser)预处理器(preprocessor)查询优化器(Optimizer)操作引擎执行.

2022-04-08 10:15:00 726

原创 MySQL(一):架构体系

来聊聊MySQL的基础架构体系

2022-04-05 18:53:49 655

原创 Kafka工作原理

Kafka工作原理与过程KafKa核心概念补充Consumer Groupconsumer group是kafka提供的可扩展且具有容错性的消费者机制。组内有多个消费者共享一个公共的group ID。组内的所有消费者会协调在一起平均消费订阅主题的所有分区。Kafka Consumer Group 的特点一个partition中的消息只能被同一个consumer group中的一个consumer消费一个partition中的消息可以同时被多个consumer group消费一个组内cons

2021-09-26 21:28:45 190

原创 Redis 哨兵模式之实现原理篇

由经验而得的智慧,胜于学习而得的智慧。个人文章精选合集更多文章分享请关注微信公众号 星河之码Redis 哨兵集群实现高可用哨兵的介绍哨兵(sentinel)是Redis的高可用性(High Availability)的解决方案。主要有以下功能:集群监控:负责监控 redis master 和 slave 进程是否正常工作。消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员。故障转移:如果 master node 挂掉了,会自动转移到 slave nod.

2021-08-04 11:25:23 190

原创 Redis 主从复制

Redis 主从复制由经验而得的智慧,胜于学习而得的智慧。个人文章精选合集更多文章分享请关注微信公众号 星河之码Redis高可用的方案包括持久化、主从复制(及读写分离)、哨兵和集群。持久化侧重解决的是Redis数据的单机备份问题(从内存到硬盘的备份)而主从复制则侧重解决数据的多机热备。此外,主从复制还可以实现负载均衡和故障恢复。一、什么是主从复制主从复制指将一台Redis服务器(master)的数据其他的Redis服务器(slave)的过程。数据的复制是单向的,只能由主节点到从节

2021-07-30 11:12:29 291

原创 Redis性能解析--Redis为什么那么快

面试过程中经常会被问到「Redis 为什么快?」因为它是基于内存实现和单线程模型。很多人仅仅只是知道基于内存实现,其他核心的原因模凌两可。Redis 为了高性能,从各方各面都进行了优化, Redis 性能为什么如此高,不仅仅只是因为单线程和内存存储。Redis常用的数据类型常用的 5 种数据类型和应用场景如下:String: 缓存、计数器、分布式锁等。List: 链表、队列、微博关注人时间轴列表等。Hash: 用户信息、Hash 表等。Set: 去重、赞、踩、共同好友等。Zset:

2021-07-24 16:31:33 639

空空如也

空空如也

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

TA关注的人

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