自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 聊聊 Kafka:如何避免消费组的 Rebalance

一、前言我们上一篇聊了 Rebalance 机制,相信你对消费组的重平衡有个整体的认识。这里再简单回顾一下,Rebalance 就是让一个 Consumer Group 下所有的 Consumer 实例就如何消费订阅主题的所有分区达成共识的过程。在 Rebalance 过程中,Consumer Group 下所有的 Consumer 实例共同参与,在 Coordinator 协调者组件的帮助下,完成订阅主题分区的分配。但是,在整个过程中,所有实例都不能消费任何消息,因此它对 Consumer 的 TPS

2022-01-16 22:43:33 6258 1

原创 聊聊 Kafka:编译 Kafka 源码并搭建源码环境

一、前言老周这里编译 Kafka 的版本是 2.7,为啥采用这个版本来搭建源码的阅读环境呢?因为该版本相对来说比较新。而我为啥不用 2.7 后的版本呢?比如 2.8,这是因为去掉了 ZooKeeper,还不太稳定,生产环境也不太建议使用,所以以 2.7 版本进行源码搭建并研究。二、环境准备JDK:1.8.0_241Scala:2.13.6Gradle:5.6.3三、环境搭建3.1 JDK 环境搭建这个就不用我说了吧,搞 Java 的本机都有 JDK 环境。3.2 Scala 环境搭建

2021-10-10 23:08:59 1957 3

原创 聊聊 Kafka: 在 Linux 环境上搭建 Kafka

一、环境准备jdk下载地址链接:jdk 1.8,提取码: dv5hzookeeper下载地址链接:zookeeper3.4.14 ,提取码: 3dchkafka下载地址链接:kafka2.12,提取码: 61bc1.1 Java环境为前提1.1.1 上传jdk-8u261-linux-x64.rpm到服务器并安装# 安装命令rpm -ivh jdk-8u261-linux-x64.rpm 1.1.2 配置环境变量# 编辑配置文件,jdk的bin目录到/etc/profile文件,对所有

2021-08-18 00:31:31 3911 13

原创 聊聊 Kafka: Kafka 的基础架构

一、我与快递小哥的故事一个很正常的一个工作日,老周正在忙着啪啪啪的敲代码,办公司好像安静的只剩敲代码的声音。突然,我的电话铃声响起了,顿时打破了这种安静。我:喂,哪位?快递小哥:我是顺丰快递的,你有个包裹,请问你现在在家吗?我:哦,我现在不在家,晚上你再帮我送过来吧。快递小哥:要不我帮你放在菜鸟驿站吧?我:可以可以,谢谢了。还好有菜鸟驿站,不然工作日加班到很晚才回家,晚上快递小哥又下班了,得等到周末我在家快递小哥才能帮我送了。如果没有菜鸟驿站的话,我们来看下快递小哥与我的交互图:要是有

2021-08-09 00:29:33 4439 25

原创 一文读懂物联网 MQTT 协议之实战篇

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言上一篇我们介绍了 MQTT 协议格式以及相关的特性:一文读懂物联网 MQTT 协议之基础特性篇,这一篇我们就来实战一番,理论得与实践结合,方能吃透 MQTT。我的那个读者还提到了讲一下 Mosquitto,这是一款开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌.

2021-08-02 00:41:43 7830 23

原创 一文读懂 Spring Bean 的生命周期

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言今天我们来说一说 Spring Bean 的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象。因为 Spring Bean 的生命周期是除了 IoC、AOP 几个核心概念之外最重要概念,大家务必拿下。可 Spring 源代码又比较复杂,跟着跟着就不知道跟到哪里去了,不太好拿下呀。这倒是真的,而且网上一上来就各种贴流程源码,对初学者来说是真的一脸懵逼,就像字.

2021-07-18 23:52:34 120482 111

原创 深入浅出 MyBatis 的一级、二级缓存机制

一、MyBatis 缓存缓存就是内存中的数据,常常来自对数据库查询结果的保存。使用缓存,我们可以避免频繁与数据库进行交互,从而提高响应速度。MyBatis 也提供了对缓存的支持,分为一级缓存和二级缓存,来看下下面这张图:一级缓存是 SqlSession 级别的缓存。在操作数据库时需要构造 SqlSession 对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的是 SqlSession 之间的缓存数据区(HashMap)是互相不影响。二级缓存是 Mapper 级别的缓存,多个 S

2021-07-12 21:14:25 1111 8

原创 阿里二面:JVM 的三色标记算法你了解吗?

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言不得不说阿里的面试还是挺有质量的,这个问题直接问到了 JVM 的底层算法实现。在说 JVM 的三色标记算法之前,我们先来说下 JVM 对于常见对象存活判定算法与垃圾收集算法。常见对象存活判定算法有引用计数算法和可达性分析算法。 引用计数法会产生循环引用问题,JVM 默认是通过可达性分析算法来判断对象是否存活的。而那些垃圾收集算法:标记-清除、标记-复制、标记-.

2021-06-30 00:03:59 1449 18

原创 阿里二面:Redis 中的 AOF 文件太大了怎么办?

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题。不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF。但老周这里盲猜面试的过程肯定也是先从持久化方式问起,然后循循渐进的问到 AOF 文件太大了怎么办?本着知其然知其所以然的态度,老周这里会带你从 RDB 和 AOF 的实现原理、各自的触发方.

2021-06-03 00:07:51 8015 17

原创 我惊了!!!ThreadLocal 源码存在内存泄露的 Bug!!!

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言写这篇文章的目的是因为现在网上很多关于 ThreadLocal 的文章,很大一部分都不太准确。比如说:ThreadLocal 内部有个 map,键为线程对象;ThreadLocal 的数据结构是个数组;还有说 ThreadLocal 存在内存泄露,但里面的 get、set 以及 remove 方法能防止 ThreadLocal 内存泄露问题。都是.

2021-05-27 01:17:27 2262 41

原创 Redis中ZSet的底层数据结构跳跃表skiplist,你真的了解吗?

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言老周写这篇文章的初衷是这样的,之前项目中有大量使用 Redis 的 ZSet 数据结构来实现各种排行榜的功能。老周以前也写过关于跳表的数据结构,但那是纯数据结构方面来分析的,今天我们就来从跳跃表在 Redis 中的底层实现方向来分析。我们都知道 Redis 有五种常用的数据结构:String、Hash、List、Set 以及 ZSet,其中 ZSet 是 Re.

2021-05-17 01:56:51 4456 42

原创 一文读懂线程池的实现原理

欢迎大家关注我的微信公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。一、前言上个月底群里的一个好朋友向老周提出啥时候分享 ThreadPoolExecutor 解析大全,我说后面会提上日程;然后前些天有读者也反馈说在面试中有被问到线程池,问我啥时候出一篇线程池相关的文章。今天老周就来安排一波线程池,现在很多公司都喜欢问线程池相关的面试题,为什么面试官这么热衷于问线程池相关的面试题呢?因为这是多线程的基础,ThreadPoolExecu.

2021-04-20 01:27:47 11398 34

原创 2w 字长文爆肝 JVM 经典面试题!太顶了!

如果你是中高级程序员,那我相信你一定被面试官问过JVM。下次再被问到JVM,你直接把老周的这篇文章丢给他吧!话不多说,让我们直接进入主题吧。JVM内存结构,常见异常,调优参数,调优工具和命令JVM的理解JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么要分为Eden和Survivor。Minor GC ,Full GC 触发条件如何确定某个对象是“垃圾”?典型的垃圾收集算法常用的垃圾回收器有哪些, 特点是什么当出现了内存溢出,你怎么排错你们线上应用的JVM参数有哪些什么是内存泄

2021-04-12 22:06:32 3314 42

原创 远程调用 Dubbo 与 Feign 的区别

一、相同点Dubbo 与 Feign 都依赖注册中心、负载均衡。二、区别1、协议Dubbo:支持多传输协议(Dubbo、Rmi、http、redis等等),可以根据业务场景选择最佳的方式。非常灵活。默认的Dubbo协议:利用Netty,TCP传输,单一、异步、长连接,适合数据量小、高并发和服务提供者远远少于消费者的场景。Feign:基于Http传输协议,短连接,不适合高并发的访问。2、负载均衡Dubbo:支持4种算法(随机、轮询、活跃度、Hash一致性),而且算法里面引入权重的概

2020-09-23 22:02:21 34652 15

原创 史上最全 SpringBoot 注解详解

一、注解(annotations)列表1、@SpringBootApplication包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让Spring Boot扫描到Configuration类并把它加入到程序上下文。2、@ComponentScan组件扫描,可自动发现和装配一些Bean...

2020-04-20 22:41:45 7975 9

原创 史上最全 Lombok Features 注解详解

文章目录一、@Getter and @Setter二、@ToString三、@EqualsAndHashCode四、@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor五、@Data六、@Value七、@Builder八、@Accessors九、@Slf4j and @Log4j十、@NonNull十一、@Sync...

2020-04-08 00:39:55 4401 4

原创 spring的controller是单例还是多例,怎么保证并发的安全。

答案:controller默认是单例的,不要使用非静态的成员变量,否则会发生数据逻辑混乱。正因为单例所以不是线程安全的。我们下面来简单的验证下:package com.riemann.springbootdemo.controller;import org.springframework.context.annotation.Scope;import org.springframew...

2019-07-29 23:48:06 28017 28

原创 Proxyee-down的下载与安装教程

这个工具的名字是 proxyee-down,是在 GitHub 上发现的,工具的地址是:https://github.com/proxyee-down-org/proxyee-down下载安装教程下wiki有:https://github.com/proxyee-down-org/proxyee-down/wiki/软件下载与运行本博客Proxyee-down版本为:2.54Proxy...

2019-04-13 00:04:23 25845 24

原创 史上最全BATJ面试题精选附答案

目录JAVA基础JVM知识开源框架知识操作系统多线程TCP与HTTP架构设计与分布式数据结构与算法数据库知识消息队列缓存搜索JAVA基础String,Stringbuffer,StringBuilder的区。ArrayList和LinkedList有什么区别。什么是HashMap?用过哪些Map类,都有什么区别JAVA8的ConcurrentHashMap...

2019-01-17 21:51:03 2200 6

原创 DeepSeek技术架构解析:MLA多头潜在注意力

我们上一篇已经讲了 DeepSeek技术架构解析:MoE混合专家模型这一篇我们来说一说DeepSeek的创新之一:MLA多头潜在注意力。MLA主要通过优化KV-cache来减少显存占用,从而提升推理性能。我们知道这个结论之前,老周带大家一起梳理一下从MHA、MQA、GQA到MLA的演变历程,并着重介绍一下MLA的设计思路。DeepSeek这次的破圈,主要的创新之一:Multi-head Latent Attention架构(MLA),作为对Grouped-Query Attention(GQA)的颠覆性升级

2025-04-01 23:40:57 833

原创 DeepSeek技术架构解析:MoE混合专家模型

2025年初,DeepSeek V3以557万美元的研发成本(仅为GPT-4的1/14)和开源模型第一的排名,在全球AI领域掀起波澜。其核心创新之一——混合专家模型(Mixture of Experts, MoE)的优化设计,不仅突破了传统大模型的算力瓶颈,更以37B激活参数实现671B总参数规模的性能输出,成为开源社区与工业界关注的焦点。本文将从技术原理、工程创新、应用潜力及争议四个维度,深度解析这一架构的设计逻辑与行业意义。

2025-03-23 21:47:41 948

原创 华为OD招聘舞弊风波:一场企业反腐的“雷霆行动”

华为此次“自曝家丑”,展现了企业对舞弊的零容忍态度,但也暴露出大厂在高速扩张中管理链条的脆弱性。公平的职场环境,既需要企业的制度铁腕,也依赖每一个从业者的道德坚守。“人才是企业的核心资产”,而诚信,永远是这场博弈中不可逾越的底线。

2025-03-11 22:51:52 499

原创 本地部署DeepSeek R1满血版大模型

这种方案即不要求电脑配置,还能用上满血版的DeepSeek-R1,回答速度还很快,算是目前最优方案了,免费的真香。当然,这个方案是备选方案,官网能使用的情况下还是推荐直接官网使用,不过最近DeepSeek经常提示服务器繁忙,让你想用的时候没得用,没关系,老周这本地部署DeepSeek R1满血版大模型也很香,速度也算快关键免费不吃你的硬件资源。

2025-02-25 22:40:26 499

原创 本地部署DeepSeek R1大模型

下载完成后,你已经可以直接使用Deepseek R1这个大模型了。不过,为了让大家有更好的体验,我特别推荐使用Cherry Studio这个工具。它不仅能调用你本地下载的模型,还可以连接各种云端模型服务,使用起来非常便捷。然后在聊天界面,选择你所要对话的大模型,就可以直接对话了。打开终端(Mac OS)或运行(Windows,可以用win键+r快捷键弹出),粘贴刚刚复制的代码(ollama run deepseek-r1:8b)根据自己电脑的配置选择不同参数的模型,根据自己电脑的配置选择不同参数的模型。

2025-02-21 23:30:41 1200

原创 深度学习实战——卷积神经网络CNN在图片识别中的应用以及原理

随着人工智能和深度学习技术的迅猛发展,卷积神经网络(Convolutional Neural Networks,CNN)已经成为计算机视觉领域中最为重要的工具之一。无论是在图像分类、目标检测,还是在人脸识别、自动驾驶等应用中,CNN都展现出了其卓越的表现和广泛的应用前景。本文旨在通过深入的实战案例,带领读者一步步理解并掌握CNN的核心原理及其在图片识别中的应用。我们将通过实际操作和代码演示,帮助读者将理论与实践相结合,全面提升在深度学习方向上的技能,为解决复杂的图像处理问题打下坚实的基础。

2025-02-17 21:26:19 1181

原创 MAC使用MPS进行GPU深度模型训练(MPS替代CUDA)

随着深度学习的广泛应用,硬件加速成为了模型训练的重要因素。GPU凭借其强大的并行计算能力,已经成为深度学习训练的首选设备。然而,在不同的操作系统上,由于硬件厂商和软件生态的差异,GPU加速的实现方式也各有不同。在Windows和Linux系统中,CUDA(Compute Unified Device Architecture)是由NVIDIA提供的GPU计算框架,得益于NVIDIA显卡的广泛使用和成熟的软件生态,CUDA已经成为深度学习领域事实上的标准。

2025-01-11 16:47:43 1423 1

原创 老周的 2024 年终总结

转眼间,时光的指针即将拨到 2025 年了,不知道你对 2024 年的自己是否满意呢?满意或不满意都不重要了,2024 已成为过去式了,让我们用新的姿态来拥抱 2025 吧。如果说2023年,被誉为AI元年,那么2024年就是AI各种应用井喷的一年。各行各业都在搞大模型,各大峰会分享的东西都要和大模型扯点关系,好像咱不扯点大模型,就回到大清了。这一年太魔幻了,各行各业都很卷,各行各业都在裁员,今年我们公司裁员都上了脉脉热搜第一。

2024-12-31 19:09:27 704

原创 聊聊Flink:Flink的状态管理

一、Flink的状态是什么?我们知道,Flink的一个算子可能会有多个子任务,每个子任务可能分布在不同的实例(即slot)上,我们可以把Flink的状态理解为某个算子的子任务在其当前实例上的一个变量,该变量记录了流过当前实例算子的历史记录产生的结果。当新数据记录流入时,我们需要结合该结果(即状态,State)来进行计算。实际上,Flink的状态是由算子的子任务来创建和管理的。一个状态的更新和获取的流程如下图所示,一个算子子任务接收输入流,获取对应的状态,根据新的计算结果更新状态。一个简单的例子是对一个时

2024-12-22 22:45:11 806

原创 RocksDb手动合并文件导致数据库hang住

我先来说下背景,应用启动的时候,起了一个下载download线程,并且是守护线程,去离线拉取云端的数据到本地的RocksDb数据库进行存储,其中呢有个open方法,它是用来打开RocksDb数据库的,download线程下载数据的时候进程存库的时候会先去调用open方法打开数据库,然后再去执行put操作也就是保存数据的操作。简单的说,RocksDb只有5个文件,每个文件只有1M,当合并的时候到达5个文件的时候就会根据底层设置的淘汰策略把旧的淘汰掉。用于设置 RocksDB 保留的日志文件的最大数量。

2024-12-08 13:58:49 544

原创 聊聊Flink:Flink水印的生成策略

在Flink 1.11之前的版本中,提供了两种生成水印(Watermark)的策略,分别是AssignerWithPunctuatedWatermarks和AssignerWithPeriodicWatermarks,这两个接口都继承自TimestampAssigner接口。用户想使用不同的水印生成方式,则需要实现不同的接口,但是这样引发了一个问题,对于想给水印添加一些通用的、公共的功能则变得复杂,因为我们需要给这两个接口都同时添加新的功能,这样还造成了代码的重复。

2024-12-04 22:24:38 1124

原创 聊聊Flink:这次把Flink的触发器(Trigger)、移除器(Evictor)讲透

Trigger 决定了一个窗口(由 window assigner 定义)何时可以被 window function 处理。每个 WindowAssigner 都有一个默认的 Trigger。如果默认 trigger 无法满足你的需要,你可以在 trigger(…) 调用中指定自定义的 trigger。窗口的计算触发依赖于窗口触发器,每种类型的窗口都有对应的窗口触发机制,都有一个默认的窗口触发器,触发器的作用就是去控制什么时候来触发计算。

2024-11-27 22:44:27 1535

原创 聊聊Flink:这次把Flink的window分类(滚动、滑动、会话、全局)、窗口函数讲透

那么窗口的起止时间将变为[0:15:00.000~1:14:59.999),这样你将得到起始时间在0:15:00,1:15:00,2:15:00的窗口。例如,在没有偏移的情况下,时间窗口会做一个对齐,那么1小时窗口的起止时间可以是[0:00:00.000~0:59:59.999)。ProcessWindowFunction是全量计算函数,如果需要依赖窗口中的所有数据或需要获取窗口中的状态数据和窗口元数据(窗口开始时间、窗口结束时间等),就需要使用ProcessWindowFunction。

2024-11-24 21:11:17 1053

原创 聊聊Flink:Flink中的时间语义和Watermark详解

该篇主要讲Flink中的时间语义、Flink 水印机制以及Flink对乱序数据的三重保障。

2024-11-18 22:21:36 1024

原创 聊聊Flink:Flink的分区机制

flink任务在执行过程中,一个流(stream)包含一个或多个分区(Stream partition)。TaskManager中的一个slot的subtask就是一个stream partition(流分区),一个Job的流(stream)分布在多个不同的Slot上执行。每一个算子可以包含一个或多个子任务(subtask),这些subtask执行在不同的分区中,本质是在不同的线程、不同的物理机或不同的容器中彼此互不依赖地执行。1.1 Flink数据传输组件之间的通信消息传输。

2024-11-15 23:48:40 1224

原创 聊聊Flink:Flink的运行时架构

从Flink 1.6版本开始,将主节点上的进程名称改为了StandaloneSessionClusterEntrypoint,从节点的进程名称改为了TaskManagerRunner,在这里为了方便使用,仍然沿用之前版本的称呼,即JobManager和TaskManager。YARN中资源分配的基本单位,封装了CPU和内存资源的一个容器,相当于一个Task运行环境的抽象。默认情况下,Flink 允许 subtask 共享 slot,即便它们是不同的 task 的 subtask,只要是来自于同一作业即可。

2024-11-12 21:49:11 1268

原创 聊聊Flink:Flink的基础架构

哈喽,大家好,我是微信公众号【老周聊架构】的作者老周,老周这次给大家分享下Flink系列的知识。作为Flink系列的开篇之作,我脑海中想着有没有一种很好的方式来让大家通俗易懂的了解Flink。因为你一上来就介绍Flink的一些概念和核心思想,初学的小伙伴不是那么容易接受这么生疏的东西。

2024-11-10 21:40:14 842

原创 聊聊Flink:Docker搭建Flink

现在,可以通过Flink Web界面提交和管理Flink作业。首先,将一个Flink作业的JAR文件上传到Flink Web界面。其中,<jobmanager_container_id>是Flink集群中jobmanager容器的ID,/path/to/job.jar是Flink作业的JAR文件路径。jobmanager用于管理Flink作业,taskmanager用于执行Flink作业的任务。注意:上面的提交是旧的方式,笔者这里用的Flink 1.18版本,上面的命令行已经舍弃了。

2024-04-28 22:55:07 1615 1

原创 MongoDB 的集群架构与设计

MongoDB 有三种集群架构模式,分别为主从复制副本集(Replica Set)和分片(Sharding)模式。Master-Slaver 是一种主从复制的模式,目前已经不推荐使用。Replica Set 模式取代了 Master-Slaver 模式,是一种互为主从的关系。Replica Set 将数据复制多份保存,不同服务器保存同一份数据,在出现故障时自动切换,实现故障转移,在实际生产中非常实用。

2023-10-24 23:44:55 2288

原创 新一代通信协议—— RSocket

RSocket 是一种二进制字节流传输协议,位于 OSI 模型中的5~6层,底层可以依赖 TCP、WebSocket、Aeron 协议。最初由 Netflix 开发,支持 Reactive Streams。其开发背后的动机是用开销更少的协议取代超文本传输协议(HTTP),HTTP 协议对于许多任务(如微服务通信)来说效率低下。

2023-02-28 23:21:37 3335

原创 响应式流的核心机制——背压机制

采用背压机制,消费者会根据自身的处理能力来请求数据,而生产者也会根据消费者的能力来生产数据,从而在两者之间达成一种动态的平衡,确保系统的即时响应性。

2023-01-16 22:57:17 1180

空空如也

空空如也

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

TA关注的人

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