自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jet_qi的博客

技术分享/交流(并发包/分布式/高并发/高可用/微服务/消息队列)

  • 博客(275)
  • 收藏
  • 关注

原创 JVM第一讲:JVM相关知识体系详解+面试(P6熟练 P7精通)

面试时常常被面试官问到JVM相关的问题。本系列将给大家构建JVM核心知识点全局知识体系,本文是JVM第一讲,JVM相关知识体系详解和相关面试题梳理。

2023-10-10 14:57:51 1409 4

原创 JUC第一讲:Java并发知识体系详解 + 面试题汇总(P6熟练 P7精通)

面试时常常被面试官问到这个问题,Java并发包含实际业务开发中的方方面面。本篇文章是JUC第1讲,作为开篇,讲解Java 并发相关知识体系,包含理论基础,线程基础,synchronized,volatile,final关键字,JUC框架等内容。

2023-09-17 16:45:17 329 1

原创 Redis第一讲:Redis知识体系详解+原理+应用+面试(P6精通)

本系列主要对Redis知识体系进行详解。本篇文章作为Redis第1讲,开篇会站在知识体系的视角,介绍总体知识点,包括入门、数据结构、监控、性能调优、项目实战、源码解析等。

2023-08-17 09:00:00 152

原创 SpringBoot第27讲:SpringBoot集成MySQL - MyBatis 多个数据源

本文是Springboot第27讲,主要讲解哪些场景会使用多个数据源以及哪些场景会需要多个数据源的动态切换呢?本文主要介绍上述场景及SpringBoot+MyBatis实现多个数据源的方案和示例

2023-06-17 18:18:13 3260 1

原创 ElasticSearch第一讲:ElasticSearch从入门到精通

ES构建于Lucene之上,近实时搜索、分析文档,并且支持结构化、非结构化文档结构化:有固定的数据格式、以及长度,通常见于数据库非结构化:数据结构不固定,不定长ES具有分布式、高可用、可伸缩的特性支持更快的检索性能。

2022-11-12 22:32:40 1304

原创 开发工具篇第七讲:阿里云日志查询与分析

公司使用的是阿里云日志服务。

2022-08-09 20:08:02 5154

原创 标准中心项目实战第一讲:如何优雅地记录操作日志

本文是项目实战的第一讲,如何优雅地记录操作日志。操作日志几乎存在于每个系统中,而这些系统都有记录操作日志的一套 API。操作日志和系统日志不一样,操作日志必须要做到简单易懂。所以如何让操作日志不跟业务逻辑耦合,如何让操作日志的内容易于理解,如何让操作日志的接入更加简单?上面这些都是本文要回答的问题。我们主要围绕着如何“优雅”地记录操作日志展开描述,希望对从事相关工作的同学能够有所帮助或者启发。文章目录1、操作日志使用场景2、实现方式3、使用AOP生成日志4、代码实现5、总结参考资料1、操作日志使用场.

2022-02-27 00:25:44 2934 6

原创 Google guava第一讲:guava缓存实战/使用场景/缓存清理/最佳实践/caffeine实战

Guava缓存实战及使用场景摘要:本文先介绍了Guava Cache囊括的基本使用方法,然后结合体系类图和LocalCache的数据结构对典型的几个方法源码进行流程分析。重点 缓存的命中率,缓存的失效时间,缓存的OOM,缓存的统计数据等。文章目录Guava缓存实战及使用场景1 为什么使用本地缓存1.1 适用场景2 如何使用Guava缓存(缓存容量/超时时间/移除监听器/缓存加载器)2.1 ......

2020-04-15 16:34:03 5043

原创 计算机网络基础面试题汇总

计算机网络基础面试题汇总网络协议和网络编程 重难点 参考资料来源于 netty权威指南(高性能的服务端开发) netty实战 Unix网络编程 AIO 鸟哥的linux私房菜 《刘超的趣谈网络协议》 《图解http》文章目录计算机网络基础面试题汇总1. 计算机网络体系知识1.1 计算机网络体系结构1.2 OSI与TCP/IP各层的结构与功能,都有哪些协议?1.3 TCP 三次握手...

2020-03-08 00:04:48 7158 10

原创 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

数据结构和算法入门《大话数据结构 程杰》《算法图解》《数据结构与算法分析:Java语言描述》(大学课本 伪代码)《剑指offer》《编程珠玑》(对大数据量处理的算法)《编程之美》(超级难)《算法导论》(很厚很无聊)《算法第四版》(推荐 本书没有动态规划) LeetCode 王争google 《算法帝国》《数学之美》《算法之美》(闲暇阅读) https://github.com/wan...

2020-02-27 15:05:30 7007

原创 MySQL第一讲:程序员必须精通的MySQL索引规范

1、类型(三种)主键索引名为 pk_字段名; 唯一索引名为 uk_字段名; 普通索引名则为 idx_字段名 。说明: pk_ 即 primary key; uk_ 即 unique key2、规范(10余条)序号规范说明例子1【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽.........

2019-12-15 23:39:08 6698 1

原创 Google Guava第五讲:本地缓存实战及踩坑

如下图,是一次最基本的网络请求。用户请求从界面(浏览器或 App 界面)到网络转发、应用服务再到存储(数据库或文件系统),然后返回到界面呈现内容。随着互联网的普及,内容信息越来越复杂,用户数和访问量越来越大,我们的应用需要支撑更多的并发量,同时我们的应用服务器和数据库服务器所做的计算也越来越多。但是往往我们的应用服务器资源是有限的,数据库每秒能接受的请求次数也是有限的。如何能够有效利用有限的资源来提供尽可能大的吞吐量?是每个开发同学绕不开的课题。一个有效的办法就是引入缓存,打破标准流程,

2024-04-15 11:20:18 95

原创 JVM第八讲:GC - Java 垃圾回收基础知识

本文是JVM第八讲, Java 垃圾回收基础知识。垃圾收集主要是针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。

2024-03-21 12:04:56 969 1

原创 开发工具篇第32讲:阿里云短信&推送服务的接入和踩坑

近期由于业务需求,新项目采用了阿里云短信和推送功能,极大地降低了开发成本,借助这类工具,让开发者最有效地与用户保持连接,从而提高用户活跃度、提高应用的留存率。本文是开发工具篇第32讲,讲解阿里云短信&推送服务的接入和踩坑

2024-03-12 20:43:48 44

原创 项目实战第四十九讲:如何设计一个应用发布平台-思维能力是关键

想让程序员写的代码部署到服务器,首先需要使用gitlab管理代码,然后通过jenkins来构建、部署项目,最后将生成的jar包部署到服务器,此过程中可以接入钉钉审批,方便控制风险。针对这件事,各家公司都有自己的应用发布平台。那么该如何设计一个应用发布平台呢,分为这几步:1、基础服务能力(jenkins提供任务构建能力,gitlab提供分支校验,merge能力,钉钉提供消息通知,审批能力,底层还需提供应用管理,ecs管理能力) 2、应用管理:负责应用的创建、查看详情 3、发布管理:提供代码构建

2024-03-07 18:16:39 63

原创 开发工具篇第36讲:如何使用Typora+Gitee+PicGo+OSS+Idea创建属于自己的云笔记

好记性不如烂笔头,记笔记是一个好习惯,本人习惯通过Typora软件记录markdown笔记,但是遇到了多设备同步笔记的问题,本文是开发工具篇第36讲,介绍通过Typora+PicGo+Gitee搭建个人云笔记平台,使得多设备都能看到最新笔记,云笔记搭建教程详见下文!

2024-02-26 20:54:02 211 2

原创 代码质量管理: Sonarlint插件+ Sonarqube可视化页面

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量。Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具不同,Sonar 并不是简单地把不同的代码检查工具结果直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理

2024-02-01 15:34:03 116

原创 项目实战第四十八讲:对账系统开发

支付、账户、三方支付机构、银行等;涉及到各方的信息流(账、余额、流水、运单状态等信息)和资金流匹配的问题是一个涉及交易的系统中**用户最关心的问题**;**对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线**。做对账系统的主要目的是为了实现对企业的交易数据进行实时对账,以确保企业的交易记录符合规定,提高企业的管理效率,降低企业的风险。

2024-01-30 22:08:03 107

原创 SpringBoot第52讲:SpringBoot定时任务 - 分布式xxl-job及在项目中的使用

xxl-job在很多中小公司有着应用,虽然其代码和设计等质量并不太高,License不够开放,有着个人主义色彩,但是其具体开箱使用的便捷性和功能相对完善性,这是中小团队采用的主要原因;XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。本文是SpringBoot第52讲,介绍XXL-JOB以及与SpringBoot的集成及在项目中的使用。

2024-01-25 15:02:38 350

原创 MySQL第一讲:MySQL知识体系详解(P6精通)

MySQL不论在实践还是面试中,都是频率最高的。本系列主要对MySQL知识体系梳理,将给大家构建JVM核心知识点全局知识体系,本文是MySQL第一讲,MySQL知识体系详解。

2024-01-07 12:09:59 1147 2

原创 开发工具篇第二十一讲:详解业务日志监控工具Grafana

本文是开发工具篇第21讲:对业务日志监控工具Grafana实战进行详解。grafana监控用于对业务日志的监控,统计业务日志某个字段的个数或者比例进行钉钉或者电话报警。

2023-12-22 12:15:52 1377

原创 项目实战第四十七讲:易宝支付对接详解(保姆级教程)

本文是项目实战第四十七讲,易宝支付对接详解。1、xxl_job 接入fix;2、支付接口,将thirdOrderNo赋初始值,并将数据库中third_Order_No设置为非空;3、性能提效:将深拷贝改为字符赋值,提升程序性能;先不改动。

2023-12-11 22:46:54 1010

原创 SpringBoot第56讲:SpringBoot集成文件 - 集成EasyExcel之Excel导入导出

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。它能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。它是基于POI来封装实现的,主要解决其易用性,封装性和性能问题。本文是SpringBoot第56讲,主要介绍通过SpringBoot集成Excel实现Excel的导入,导出和填充模板等功能。

2023-11-30 18:49:06 1191

原创 Java基础知识第四讲:Java 基础 - 深入理解泛型机制

泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。引入泛型的意义在于:适用于多种数据类型执行相同的代码

2023-11-12 22:21:54 296

原创 JVM第二十三讲:Java动态调试技术原理

本文是JVM第二十三讲,Java动态调试技术原理。转载自 美团技术团队胡健的Java 动态调试技术原理及实践,通过学习java agent方式进行动态调试,了解目前很多大厂开源的一些基于此的调试工具 (例如来自阿里开源的Arthas)。

2023-10-29 18:23:42 569

原创 JVM第十八讲:调试排错 - Java 问题排查之工具单

程序员想要有更好的发展,排查问题的能力一定得加强。举个例子:cpu100% 怎么排查,线上接口逐渐变慢了该怎么排查?慢查询该如何治理?你的思路是啥?本文是JVM第十八讲, Java 问题调试排错。Java 在线问题排查主要分两篇:本文是第二篇,通过java调试/排查工具进行问题定位。

2023-10-22 12:18:45 322

原创 JVM第十七讲:调试排错 - Java 问题排查之Linux命令

本文是JVM第十七讲, Java 问题调试排错。Java 在线问题排查主要分两篇:本文是第一篇,通过linux常用命令排查。

2023-10-21 23:08:33 1222 1

原创 JVM第十六讲:调试排错 - Java 线程分析之线程Dump分析

本文是JVM第十六讲,Java 线程分析之线程Dump分析。Thread Dump是非常有用的诊断Java应用问题的工具。

2023-10-20 23:56:55 554

原创 JVM第十五讲:调试排错 - Java 内存分析之堆外内存

本文是JVM第十五讲,Java 内存分析之堆外内存调试排错。Java 堆外内存分析相对来说是复杂的,美团技术团队的[Spring Boot引起的“堆外内存泄漏”排查及经验总结](https://tech.meituan.com/2019/01/03/spring-boot-native-memory-leak.html)可以为很多Native Code内存泄漏/占用提供方向性指引。

2023-10-19 21:12:09 631

原创 JVM第十三讲:调试排错 - JVM 调优参数

本文是JVM第十三讲,调试排错 - JVM 调优参数。对JVM涉及的常见的调优参数和垃圾回收参数进行阐述。

2023-10-18 23:08:21 470

原创 JVM第十四讲:调试排错 - Java 内存分析之堆内存和MetaSpace内存

本文是JVM第十四讲,以两个简单的例子(`堆内存溢出`和`MetaSpace (元数据) 内存溢出`)解释Java 内存溢出的分析过程。

2023-10-17 23:47:49 1097

原创 JVM第七讲:JVM 基础 - Java 内存模型详解

本文是JVM第七讲,JVM 基础 - Java 内存模型详解。主要转载自 Info 上[深入理解Java内存模型](https://www.infoq.cn/article/java_memory_model/), 作者程晓明。这篇文章对JMM讲的很清楚了,大致分三部分:1、重排序与顺序一致性;2、三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现;3、java 内存模型的设计,及其与处理器内存模型和顺序一致性内存模型的关系。

2023-10-16 15:38:57 322

原创 JUC第三十讲:JUC工具类:Exchanger详解

本文是JUC第三十讲,JUC工具类: Exchanger详解。Exchanger是用于线程协作的工具类,主要用于两个线程之间的数据交换。

2023-10-15 23:53:50 220

原创 JUC第二十九讲:JUC工具类: Phaser详解

本文是JUC第二十九讲,JUC工具类:Phaser详解。Phaser是JDK 7新增的一个同步辅助类,它可以实现 CyclicBarrier 和CountDownLatch 类似的功能,而且它支持对任务的动态调整,并支持分层结构来达到更高的吞吐量。

2023-10-14 22:29:24 217

原创 JUC第二十八讲:JUC工具类: Semaphore详解

本文是JUC第二十八讲,JUC工具类: Semaphore详解。Semaphore底层是基于AbstractQueuedSynchronizer来实现的。Semaphore称为计数信号量,它允许n个任务同时访问某个资源,可以将信号量看做是在向外分发使用资源的许可证,只有成功获取许可证,才能使用资源。

2023-10-13 15:47:34 132

原创 JVM第六讲:JVM 基础 - Java 内存模型引入

很多人都无法区分Java内存模型和JVM内存结构,以及Java内存模型与物理内存之间的关系。本文是JVM第六讲,从堆栈角度引入JMM,然后介绍JMM和物理内存之间的关系, 为后面`JMM详解`, `JVM 内存结构详解`, `Java 对象模型详解`等做铺垫

2023-10-13 15:34:46 937

原创 JVM第三讲:JVM 基础-字节码的增强技术详解

本文是JVM第三讲,JVM 基础-字节码的增强技术。在上文中,着重介绍了字节码的结构,这为我们了解字节码增强技术的实现打下了基础。字节码增强技术就是一类对现有字节码进行修改或者动态生成全新字节码文件的技术。接下来,我们将从最直接操纵字节码的实现方式开始深入进行剖析。

2023-10-12 15:54:56 527

原创 JUC第二十五讲:JUC线程池-CompletableFuture 实现原理与实践

CompletableFuture由 Java 8 提供,是实现异步化的工具类,上手难度较低,且功能强大,支持通过函数式编程的方式对各类操作进行组合编排。相比于ListenableFuture,CompletableFuture有效提升了代码的可读性,解决了“回调地狱”的问题。本文是JUC第二十五讲,主要讲述CompletableFuture 的原理与实践。

2023-10-12 14:50:08 274

原创 JVM第二讲:JVM 基础 - 字节码详解

本文是JVM第二讲,JVM 基础-字节码详解。源代码通过编译器编译为字节码,再通过类加载子系统进行加载到JVM中运行。

2023-10-11 12:06:23 513 1

原创 JUC第二十七讲:JUC工具类: CyclicBarrier详解

本文是JUC第二十七讲,JUC工具类: CyclicBarrier详解。CyclicBarrier中文名为:循环栅栏,底层是基于 ReentrantLock 和 AbstractQueuedSynchronizer 来实现的,在理解的时候最好和 CountDownLatch 放在一起理解。

2023-10-11 08:29:49 149

空空如也

空空如也

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

TA关注的人

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