自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计账户模块时,我是怎么写方案、讲清楚、并落地的

能力体现需求沟通和客服、产品确认清楚,避免返工文档编写设计文档结构清晰,评审一次通过方案讲解设计图,让技术负责人快速理解风险预判提前考虑Redis故障、网络超时,有应急预案落地能力编码+测试+发布,完整闭环。

2026-05-26 23:33:47 328

原创 ITIL 4 学习笔记:技术支持岗核心实践整理

ITIL不是某个软件,是一套IT服务管理的最佳实践框架。简单说:怎么接工单、怎么分级、怎么排查、怎么变更、怎么防止再犯,全有标准方法。

2026-05-19 15:52:50 434

原创 第三方接口慢,前端怎么做到“秒开

用户反馈签章页面转圈圈,5-8秒没反应,以为系统崩了!我查了下,不是系统崩了。SkyWalking链路一看,瓶颈在第三方签章接口——我们要把Minio里的PDF文件发到第三方签章,对方签完返回新文件。文件多、体积大的时候,平均5-8秒,高峰期直接超时。更糟的是:用户以为卡死了,疯狂点提交,结果。

2026-05-15 18:00:52 247

原创 Maven 从入门到企业实战 (一):基础配置、依赖管理与仓库全解

pom.xml是 Maven 项目的核心配置文件,全称是 Project Object Model(项目对象模型)。Maven 对项目的依赖管理、编译、打包、测试、部署等所有构建行为,都基于该文件中的配置执行,可以理解为 Maven 项目的 “指挥中心”。我们通过 Maven 命令自动生成的项目,自带一个最基础、最标准的pom.xml<project>:pom.xml 文件的根标签(顶层元素),所有配置都必须包裹在该标签内部,是整个文件的入口。:指定当前 POM 模型的版本号,Maven 2/3 版本中。

2026-05-14 15:44:38 523

原创 从硬件级别再谈volatile和synchronized

MESI 协议是一种缓存一致性协议读操作:多个处理器可以并发读取同一个共享变量,此时各缓存中的副本处于共享状态。写操作:同一时间只允许一个处理器对共享变量进行写操作,通过排他机制确保写入的原子性。MESI 协议的核心是一套总线消息机制:各处理器在操作内存数据时,会通过系统总线发送消息,同时持续监听(嗅探)总线上的消息,以此实现多核之间的缓存状态同步。本文从硬件层面出发,沿着高速缓存 → MESI 协议 → 写缓冲器/无效队列 → 内存屏障的技术演进路线,深入剖析了 Java 并发编程中volatile。

2026-05-12 14:01:23 425

原创 万字详解 ClickHouse:从原理、部署、引擎到调优实战(OLAP 神器全覆盖)

ClickHouse 是 Yandex 2016 年开源、C++ 编写的列式存储分析型 DBMS,主打OLAP 在线分析处理,支持 SQL 实时查询、动态生成分析报表。ClickHouse 适用什么场景?不适用什么场景?MergeTree 分区、主键、排序键区别?ReplacingMergeTree 去重原理、能否跨分区?SummingMergeTree 聚合机制?Prewhere 和 Where 区别与优化原理?副本与分片集群原理?Distributed 引擎作用?

2026-05-12 11:46:38 2489

原创 深入理解JVM之——CMS垃圾收集器的工作原理解析

1、CMS垃圾回收的基本原理一般老年代选用的垃圾收集器是CMS,它采用的是标记清除算法。标记清除算法就是标记出哪些是垃圾对象,然后把这些对象清理掉,标记清除有个最大的问题就是会产生内存碎片。CMS垃圾收集器采取的是垃圾收集线程和系统工作线程尽量同时执行的模式来进行垃圾回收的,这样就能减少Stop the World的时间。CMS进行一次垃圾回收的过程分为4个阶段:1、初始标记2、并发标记...

2020-04-08 12:28:13 4118

原创 数据结构与算法:跳表的实现

我们知道Redis、LevelDB 都是著名的 Key-Value 数据库,Redis中 的 SortedSet以及LevelDB 中的 MemTable 都用到了跳表,那么什么是跳表呢?跳表又是如何实现的呢?1、有序链表说跳表之前,先说说有序链表:一个有序链表搜索、添加、删除的平均时间复杂度是都是O(n)。有序数组的随机访问时间复杂度为O(1),在查询某个特定的元素的时候能够进行二分搜索...

2020-04-04 13:46:16 1191

原创 sysbench压测MySQL数据库

一般情况下,在企业中我们申请了一台数据库服务器,不是直接开发使用,而是先进行压测,这样就能心里有数,这台数据库服务器的负载压力如何,性能表现如何,每秒能抗住多少个请求。1、测试机器2 vCPU 4 GiB (I/O优化) ecs.t6-c1m2.large]2、数据库压测工具sysbench是非常好用的数据库压测工具,这个工具可以自动帮你在数据库里构造出来大量的数据,你想要多少数据,他就自...

2020-03-31 12:41:46 1719

原创 谈谈分布式锁

1、为什么要使用分布式锁使用分布式锁的目的,无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作。根据锁的用途还可以细分为以下两类:允许多个客户端操作共享资源这种情况下,对共享资源的操作一定是幂等性操作,无论你操作多少次都不会出现不同结果。在这里使用锁,无外乎就是为了避免重复操作共享资源从而提高效率。只允许一个客户端操作共享资源这种情况下,对共享资源的操作一般是非幂等性操作。在...

2020-03-29 23:08:43 1012 1

原创 写入redis中的数据为什么不见了

我们有时候会遇到这样的事情,当想redis写入一些数据后,再次查询发现数据不见了,这是怎么回事呢?数据明明过期了,怎么还占用着内存?我们知道redis 主要是基于内存来进行高性能、高并发的读写操作的。然而内存是有限的,比如 redis 就只能用 10G,你要是往里面写了 20G 的数据,会咋办?当然会干掉 10G 的数据,然后就保留 10G 的数据了。那干掉哪些数据?保留哪些数据?这就要根据设...

2020-03-29 21:50:37 2095

原创 谈谈系统安全

我们知道多年前微博收到了XSS攻击,用于自动关注了一个病毒用户,然后病毒用户自动发布病毒微博,大量的人点击后,再度扩散,导致曾经很多重要的网站都遭受了攻击,致使成百上千万的用户数据遭泄露。知道现在有事后大家还会听到某某网站、某某APP用户数据泄露的问题。所以系统安全问题一直是一个非常重要的系统架构设计的话题。

2020-03-29 21:21:59 1100

原创 JDK1.8中的HashMap源码分析

前面写了JDK1.7中的HashMap源码分析,本篇将对JDK1.8中的HashMap源码进行简单的分析。一、HashMap底层数据结构JDK7:数组+链表JDK8: 数组+链表+红黑树二、HashMap重要属性 /** * 数组默认的初始化容量为16 */ static final int DEFAULT_INITIAL_CAPACITY = 1 <...

2020-03-29 15:34:55 190

原创 并发编程中的CAS

在Java中,锁在鬓发处理中占据了一席之地,但是使用锁有一个不好的地方,就是当一个线程获取不到锁时会被阻塞挂起,这会导致线程上下文的切换和重新调度开销。Java提供了非阻塞的volatile关键字来解决共享变量的可见性问题,这在一定程度上弥补了锁带来的开销问题,但是volatile只能保证共享变量的可见性,不能解决读——改——写等的原子性问题。CAS即Compare and Swap,是JDK提供...

2020-01-22 11:19:49 1730

原创 JDK1.7中的HashMap源码分析

我们以jdk1.7.0_80为例,对其中的HashMap源码进行分析。目录一、源码分析1.1 HashMap重要属性1.2 解析PUT方法1.3 解析resize(扩容)方法1.4 解析GET方法二、问题总结2.1 roundUpToPowerOf2(toSize)方法是怎样实现 找到一个大于等于toSize的2的幂次方数的?2.2 为什么数组初始化容量或者扩容的容量一定是2的幂次方数呢?2....

2020-01-20 17:39:47 458

原创 synchronized 关键字解析

在jdk1.6之前,synchronized是重量级锁,在jdk1.6级以后jvm对锁的实现进行了优化,如使用偏向锁、轻量级锁等技术来减少锁操作的开销。锁主要存在四中状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态,他们会随着竞争的激烈而逐渐升级。

2020-01-04 11:15:49 932

原创 深入理解JAVA线程池

1、 什么是线程池线程池,就是一个池子,任务提交的到线程池后,线程池会在池子里边找有没有空闲的线程,如果没有,就会进入等待状态,有就会分配一个空闲的线程来接受这个任务,当服务执行完,从新放回到线程池,不需要销毁。在这种模式下,系统大大减少了创建线程个销毁线程的资源开销,而且一个线程可以用来执行多个任务,我们可以根据系统的配置灵活调整线程池的大小,从而更高效的执行任务。2、 为什么要用线程池多...

2019-12-26 11:22:26 562

原创 Spring 源码中的扩展点分析

Spring作为开源的框架目前正被互联网行业广泛的使用,在我们在面试的过程中也经常会被问到。这篇博客记录了我在学习spring的IOC容器中遇到的一些琐碎的知识点,并对相关文档进行参考,把它记录下来,巩固和学习,如有错误,欢迎指正。我们经常会被问 什么是spring? 其实很多人都认为spring就是IOC和AOP,其实不然,spring是产品,里面包含很多技术,包括springclou...

2019-12-25 10:21:48 2879 2

原创 记录spring AOP的一些知识

上篇博客我们简单的了解了SpringIOC的一些知识点,接下来让我们再学习一下AOP相关的知识点。一、什么是AOP AOP相对于OOP而言,是面向切面(Aspect Oriented Programming)的,传统的OOP开发中的代码逻辑是至上而下的,在这些至上而下的过程中会产生一些横切性的问题,这些横切性的问题和我们的主业务逻辑关系不大,会散落在代码的各个地方,造成...

2019-02-14 13:36:50 352

空空如也

空空如也

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

TA关注的人

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