前言

自上一篇Claas文件结构,我们了解Java代码编译成的字节码存储的具体细节。

本篇文章,我们需要理解虚拟机加载Class文件的过程。

环境:

操作系统:win10

JDK版本:1.8.0_291

本文所有内容都是基于以上环境的,如果有异议的地方欢迎邮件交流。

阅读全文 »

​ 随着业务发展,系统的越来越复杂,几乎每个公司的系统都会从单体转向分布式,随之而来绕不开的问题就是分布式事务,下面来探讨几种主流的分布式事务解决方案

阅读全文 »

前言

我们常说Java是跨平台的语言,主要原因是有JVM。可以说,只要有能运行JVM的平台,Java代码基本可以无缝移植,而跨平台的基石便是Class文件。

本文旨在解析Class文件数据结构,加深对jvm的理解。

环境:

操作系统:win10

JDK版本:1.8.0_291

本文所有内容都是基于以上环境的,如果有异议的地方欢迎邮件交流。

阅读全文 »

前言

本文主要介绍InnoDB高并发性能关键技术,MVCC(Muti-Version Concurrency Control)多版本并发控制,意思是基于多版本的并发控制协议,通过版本号机制,避免同一数据在不同事务的锁竞争,而提高读并发。

环境:

操作系统:macos

数据库版本:mysql 8.0.23 innodb引擎

本文所有内容都是基于以上环境的,如果有异议的地方欢迎邮件交流。

阅读全文 »

前言

本文主要介绍InnoDB的锁,主要是什么了解锁的种类,已经为后续研究InnoDB事务打好基础。

环境:

操作系统:macos

数据库版本:mysql 8.0.23 innodb引擎

本文所有内容都是基于以上环境的,如果有异议的地方欢迎邮件交流。

阅读全文 »

前言

我们项目是一个电商项目,我被分配到商品模块的开发任务。其中,涉及到创建商品这个功能,第一个版本比较简单就只有单纯的商品,我的实现也非常简单,直接new一个对象然后设置值就行。但是,后来因为业务需求,各个种类的商品,各个功能的商品逐渐加入到版本迭代中,如果还是这么简单粗暴的处理方式其实也行,但是由于不断修改原始代码增加了犯错的几率,也让测试小伙伴多次重复测试,降低效率。

这个时候,我就意识到了问题的严重性,决定重构代码。

阅读全文 »

InnoDB索引详解

环境:

操作系统:macos

数据库版本:mysql 8.0.23 innodb引擎

本文所有内容都是基于以上环境的,如果有异议的地方欢迎邮件交流。

阅读全文 »

记一次sql排序后union all导致的排序错乱

环境介绍

操作系统:macOS

Mysql:8

问题重现

业务中需要对查询结果进行时间倒序排列,然后将几个查询子集合并,sql如下:

select distinct tmp.user_id          as userId,
                tmp.real_name        as realName,
                tmp.mobile           as mobile,
                tmp.register_time,
                tmp.source
from ((select user_id, real_name, mobile, register_time, '直属粉丝' as source from user where superior_id = ?1)
      union all
      (select user_id, real_name, mobile, register_time, '间推粉丝' as source
       from user
       where superior_id in (select user_id from user where superior_id = ?1)) ) as tmp
阅读全文 »

SpringBoot应用整合ELK实现日志收集

摘要

ELK即Elasticsearch(后面简称ES)、Logstash、Kibana这三个组件,这三个组件配合起来可以搭建线上的日志系统,本文主要讲述如何使用ELK来收集springboot项目的日志

ELK各个组件的作用

  • Elasticsearch:用于存储收集的日志
  • Logstash:用于收集日志,SpringBoot应用整合了Logstash以后会把日志发送给Logstash,Logstash再把日志转发给Elasticsearch
  • Kibana:通过提供web端可视化界面来查看日志
阅读全文 »

分布式ID是什么?

就像我们每个人都有一个生份证来标识我是我,每条数据也需要一个唯一标识方便后续查找。在单库单表应用中用自增的id来标识数据,但是,这种方式在数据过大进行分库分表之后就会有id冲突的问题。所以,我们需要引入分布式的id(即为每条数据生成全局唯一的id)来解决冲突的问题。

阅读全文 »