- 博客(282)
- 收藏
- 关注

原创 JVM第一讲:JVM相关知识体系详解+面试(P6熟练 P7精通)
面试时常常被面试官问到JVM相关的问题。本系列将给大家构建JVM核心知识点全局知识体系,本文是JVM第一讲,JVM相关知识体系详解和相关面试题梳理。
2023-10-10 14:57:51
1665
4

原创 JUC第一讲:Java并发知识体系详解 + 面试题汇总(P6熟练 P7精通)
面试时常常被面试官问到这个问题,Java并发包含实际业务开发中的方方面面。本篇文章是JUC第1讲,作为开篇,讲解Java 并发相关知识体系,包含理论基础,线程基础,synchronized,volatile,final关键字,JUC框架等内容。
2023-09-17 16:45:17
884
1

原创 Redis第一讲:Redis知识体系详解+原理+应用+面试(P6精通)
本系列主要对Redis知识体系进行详解。本篇文章作为Redis第1讲,开篇会站在知识体系的视角,介绍总体知识点,包括入门、数据结构、监控、性能调优、项目实战、源码解析等。
2023-08-17 09:00:00
342

原创 SpringBoot第27讲:SpringBoot集成MySQL - MyBatis 多个数据源
本文是Springboot第27讲,主要讲解哪些场景会使用多个数据源以及哪些场景会需要多个数据源的动态切换呢?本文主要介绍上述场景及SpringBoot+MyBatis实现多个数据源的方案和示例
2023-06-17 18:18:13
3803
1

原创 ElasticSearch第一讲:ElasticSearch从入门到精通
ES构建于Lucene之上,近实时搜索、分析文档,并且支持结构化、非结构化文档结构化:有固定的数据格式、以及长度,通常见于数据库非结构化:数据结构不固定,不定长ES具有分布式、高可用、可伸缩的特性支持更快的检索性能。
2022-11-12 22:32:40
1530

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

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

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

原创 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
数据结构和算法入门《大话数据结构 程杰》《算法图解》《数据结构与算法分析:Java语言描述》(大学课本 伪代码)《剑指offer》《编程珠玑》(对大数据量处理的算法)《编程之美》(超级难)《算法导论》(很厚很无聊)《算法第四版》(推荐 本书没有动态规划) LeetCode 王争google 《算法帝国》《数学之美》《算法之美》(闲暇阅读) https://github.com/wan...
2020-02-27 15:05:30
8361

原创 MySQL第一讲:程序员必须精通的MySQL索引规范
1、类型(三种)主键索引名为 pk_字段名; 唯一索引名为 uk_字段名; 普通索引名则为 idx_字段名 。说明: pk_ 即 primary key; uk_ 即 unique key2、规范(10余条)序号规范说明例子1【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽.........
2019-12-15 23:39:08
7217
1
原创 项目实战第52讲:领域驱动开发在服务开放平台OpenApi的实践
软件核心的复杂性,并不是来源于庞大的软件体量或者复杂的业务流程,而是来自于项目长期迭代过程中不断冒出的超出当初设计之外的不确定性。本文为项目实战第52讲,搭建服务开放平台,向互联网开放企业内部核心业务能力。通过服务开放平台迭代的三个不同实现版本,逐步体会DDD解决了哪些软件核心复杂性问题。DDD并不是万能的银弹,映射到具体的业务场景时,DDD的理论系统也需要由模糊到清晰。
2025-02-23 23:45:26
58
原创 DDD领域驱动开发第2讲:领域驱动开发在货代订单业务的实践
本文是DDD领域驱动开发第2讲,先讲解当前业务存在的问题,什么是DDD,为啥需要使用DDD解决现有业务问题,DDD让技术主动理解业务,通过领域模型将可以描述各个业务领域之间的关系,最后讲解领域驱动开发在货代订单的实践。
2025-02-19 13:22:59
127
原创 ShardingSphere第10讲:ShardingJDBC 在网络货运项目中的使用
本文是ShardingSphere第10讲,主要讲解网络货运项目订单表目前遇到的问题,然后对ShardingJDBC简介,以及如何使用ShardingJDBC解决该业务遇到的痛点,最后实战了货运平台订单分库分表,通过该方案,解决了MySQL写操作缓慢问题。在1亿订单量的情况下,基本上也能做到20毫秒之内响应。
2024-12-19 21:32:50
145
原创 ElasticSearch第28讲:MySQL数据同步ES的常用思路及在网络货运项目中的使用
在实际项目开发中,我们经常将MySQL作为业务数据库,ES作为查询数据库,用来实现读写分离,缓解MySQL数据库的查询压力,应对海量数据的复杂查询。这其中有一个很重要的问题,就是如何实现MySQL数据库和ES的数据同步,本文是ElasticSearch第28讲,和大家聊聊MySQL和ES数据同步的各种方案以及在网络货运项目中的使用。在实际项目中,使用ES支持复杂查询,并使用canal解除业务系统和ES的耦合。
2024-12-03 00:29:46
586
原创 区块链应用第1讲:基于区块链的智慧货运平台
由单一的权威机构进行管理和控制的,现在互联网上的大多数身份还是中心化身份。重点集中在去中心化上,通过授权和许可进行身份数据的共享,例如OpenID。数字身份标识-DID(去中心化身份标识)DID标识去中心化:使用分布式储存技术身份标识:在分布式系统中为用户身份生成唯一的编号Identifier 一般为用户地址DID文档保存了与DID验证相关的密钥信息和验证方法// 里面是个数组,对应多个公钥}]......可验证声明(VC DID的生态技术 主要包含3大角色和3大要素)
2024-11-08 11:18:15
1538
原创 JUC第23讲:Java线程池最佳实践
本文是JUC第23讲,先介绍为什么使用线程池;然后结合实际业务,讲解如何使用线程池,以及使用过程中踩过的坑。
2024-09-25 09:07:24
1235
1
原创 Google Guava第五讲:本地缓存实战及踩坑
如下图,是一次最基本的网络请求。用户请求从界面(浏览器或 App 界面)到网络转发、应用服务再到存储(数据库或文件系统),然后返回到界面呈现内容。随着互联网的普及,内容信息越来越复杂,用户数和访问量越来越大,我们的应用需要支撑更多的并发量,同时我们的应用服务器和数据库服务器所做的计算也越来越多。但是往往我们的应用服务器资源是有限的,数据库每秒能接受的请求次数也是有限的。如何能够有效利用有限的资源来提供尽可能大的吞吐量?是每个开发同学绕不开的课题。一个有效的办法就是引入缓存,打破标准流程,
2024-04-15 11:20:18
694
原创 JVM第八讲:GC - Java 垃圾回收基础知识
本文是JVM第八讲, Java 垃圾回收基础知识。垃圾收集主要是针对堆和方法区进行;程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。
2024-03-21 12:04:56
1253
1
原创 开发工具篇第32讲:阿里云短信&推送服务的接入和踩坑
近期由于业务需求,新项目采用了阿里云短信和推送功能,极大地降低了开发成本,借助这类工具,让开发者最有效地与用户保持连接,从而提高用户活跃度、提高应用的留存率。本文是开发工具篇第32讲,讲解阿里云短信&推送服务的接入和踩坑
2024-03-12 20:43:48
277
原创 项目实战第四十九讲:如何设计一个应用发布平台-思维能力是关键
想让程序员写的代码部署到服务器,首先需要使用gitlab管理代码,然后通过jenkins来构建、部署项目,最后将生成的jar包部署到服务器,此过程中可以接入钉钉审批,方便控制风险。针对这件事,各家公司都有自己的应用发布平台。那么该如何设计一个应用发布平台呢,分为这几步:1、基础服务能力(jenkins提供任务构建能力,gitlab提供分支校验,merge能力,钉钉提供消息通知,审批能力,底层还需提供应用管理,ecs管理能力) 2、应用管理:负责应用的创建、查看详情 3、发布管理:提供代码构建
2024-03-07 18:16:39
221
原创 开发工具篇第36讲:如何使用Typora+Gitee+PicGo+OSS+Idea创建属于自己的云笔记
好记性不如烂笔头,记笔记是一个好习惯,本人习惯通过Typora软件记录markdown笔记,但是遇到了多设备同步笔记的问题,本文是开发工具篇第36讲,介绍通过Typora+PicGo+Gitee搭建个人云笔记平台,使得多设备都能看到最新笔记,云笔记搭建教程详见下文!
2024-02-26 20:54:02
400
2
原创 代码质量管理: Sonarlint插件+ Sonarqube可视化页面
Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量。Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具不同,Sonar 并不是简单地把不同的代码检查工具结果直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理
2024-02-01 15:34:03
670
原创 项目实战第四十八讲:对账系统开发
支付、账户、三方支付机构、银行等;涉及到各方的信息流(账、余额、流水、运单状态等信息)和资金流匹配的问题是一个涉及交易的系统中**用户最关心的问题**;**对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线**。做对账系统的主要目的是为了实现对企业的交易数据进行实时对账,以确保企业的交易记录符合规定,提高企业的管理效率,降低企业的风险。
2024-01-30 22:08:03
356
原创 SpringBoot第52讲:SpringBoot定时任务 - 分布式xxl-job及在项目中的使用
xxl-job在很多中小公司有着应用,虽然其代码和设计等质量并不太高,License不够开放,有着个人主义色彩,但是其具体开箱使用的便捷性和功能相对完善性,这是中小团队采用的主要原因;XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。本文是SpringBoot第52讲,介绍XXL-JOB以及与SpringBoot的集成及在项目中的使用。
2024-01-25 15:02:38
465
原创 MySQL第一讲:MySQL知识体系详解(P6精通)
MySQL不论在实践还是面试中,都是频率最高的。本系列主要对MySQL知识体系梳理,将给大家构建JVM核心知识点全局知识体系,本文是MySQL第一讲,MySQL知识体系详解。
2024-01-07 12:09:59
1283
2
原创 开发工具篇第二十一讲:详解业务日志监控工具Grafana
本文是开发工具篇第21讲:对业务日志监控工具Grafana实战进行详解。grafana监控用于对业务日志的监控,统计业务日志某个字段的个数或者比例进行钉钉或者电话报警。
2023-12-22 12:15:52
1507
原创 项目实战第四十七讲:易宝支付对接详解(保姆级教程)
本文是项目实战第四十七讲,易宝支付对接详解。1、xxl_job 接入fix;2、支付接口,将thirdOrderNo赋初始值,并将数据库中third_Order_No设置为非空;3、性能提效:将深拷贝改为字符赋值,提升程序性能;先不改动。
2023-12-11 22:46:54
1696
原创 SpringBoot第56讲:SpringBoot集成文件 - 集成EasyExcel之Excel导入导出
EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。它能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。它是基于POI来封装实现的,主要解决其易用性,封装性和性能问题。本文是SpringBoot第56讲,主要介绍通过SpringBoot集成Excel实现Excel的导入,导出和填充模板等功能。
2023-11-30 18:49:06
1291
原创 Java基础知识第四讲:Java 基础 - 深入理解泛型机制
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。引入泛型的意义在于:适用于多种数据类型执行相同的代码
2023-11-12 22:21:54
360
原创 JVM第二十三讲:Java动态调试技术原理
本文是JVM第二十三讲,Java动态调试技术原理。转载自 美团技术团队胡健的Java 动态调试技术原理及实践,通过学习java agent方式进行动态调试,了解目前很多大厂开源的一些基于此的调试工具 (例如来自阿里开源的Arthas)。
2023-10-29 18:23:42
671
原创 JVM第十八讲:调试排错 - Java 问题排查之工具单
程序员想要有更好的发展,排查问题的能力一定得加强。举个例子:cpu100% 怎么排查,线上接口逐渐变慢了该怎么排查?慢查询该如何治理?你的思路是啥?本文是JVM第十八讲, Java 问题调试排错。Java 在线问题排查主要分两篇:本文是第二篇,通过java调试/排查工具进行问题定位。
2023-10-22 12:18:45
403
原创 JVM第十七讲:调试排错 - Java 问题排查之Linux命令
本文是JVM第十七讲, Java 问题调试排错。Java 在线问题排查主要分两篇:本文是第一篇,通过linux常用命令排查。
2023-10-21 23:08:33
1321
1
原创 JVM第十六讲:调试排错 - Java 线程分析之线程Dump分析
本文是JVM第十六讲,Java 线程分析之线程Dump分析。Thread Dump是非常有用的诊断Java应用问题的工具。
2023-10-20 23:56:55
798
原创 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
971
原创 JVM第十三讲:调试排错 - JVM 调优参数
本文是JVM第十三讲,调试排错 - JVM 调优参数。对JVM涉及的常见的调优参数和垃圾回收参数进行阐述。
2023-10-18 23:08:21
534
原创 JVM第十四讲:调试排错 - Java 内存分析之堆内存和MetaSpace内存
本文是JVM第十四讲,以两个简单的例子(`堆内存溢出`和`MetaSpace (元数据) 内存溢出`)解释Java 内存溢出的分析过程。
2023-10-17 23:47:49
1532
原创 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
360
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人