自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【从零开始学习Spark | 第一篇】:算子与持久化

【代码】【从零开始学习Spark | 第一篇】:算子与持久化。

2026-10-23 15:14:54 336

原创 Hive面试总结

第一步,写Java类,继承GenericUDF,重写initialize、evaluate、getDisplayString 三个方法,第二步,打成Jar包传到HDFS第三步,注册 CREATE FUNCTION scott.HELLO_UDF AS ‘com.yjxxt.hive.udf.HelloUDF’ USING JAR ‘hdfs:///bd/hive-demo-1.0-SNAPSHOT.jar’,默认注册到default库之后SQL里自定义函数就可以当系统函数直接用。

2026-10-20 20:43:05 224

原创 Hadoop-MapReduce&YARN面试总结

先看Map端,文件上传HDFS会切成Block,默认128M,然后有一个逻辑切片叫Split,它不改动存储,只是用来控制参与计算的节点数,一个切片就对应一个MapTask,Map任务从自己的切片里读数据,每次读一行,拼成KV,Key是偏移量,Value是一行内容。然后数据不是直接写磁盘,而是先写进内存里的环形缓冲区,默认100M,写到80%就触发溢写,写进去之前会先分区,默认是Key的哈希对Reduce数取模。缓冲区里的数据在溢写之前还会排个序,先按分区排,再按Key排,所以溢写出去的小文件内部是有序的。

2026-10-15 16:20:51 319

原创 HDFS面经总结

首先创建一个FileSystem对象,调用open方法,通过RPC请求NameNode打开文件。NameNode会检查权限、目录、文件在不在,检查通过就把结果返回。接着客户端拿到一个输入流,向NameNode问第一个块的所有副本在哪。返回的地址列表是按距离排好序的,离客户端近的排前面。客户端就挑最近的那个DataNode去连,然后在流里反复调read,把这个块读完。读完一块,关掉连接,再找下一块的最佳DataNode接着读。最后整个文件读完,调close,把读到的所有块拼成一个完整的文件。

2026-10-13 14:44:54 180

原创 ZooKeeper面经总结

面经记录

2026-10-13 10:50:51 308

原创 《从你点了一份外卖,到老板发现程序员是顶级牛马》一条外卖订单的大数据技术栈奇幻漂流

《从你点了一份外卖,到老板发现程序员是顶级牛马》

2026-09-29 17:58:45 181

原创 大数据修炼之路(五):Hive进阶

减少 Shuffle”和“避免数据倾斜”。理解了 MapReduce 的底层执行逻辑,就能在面对海量数据时,写出既优雅又高效的 SQL。从表设计到参数调优,每一层优化都在为大数据管道保驾护航。

2026-09-17 17:57:58 379

原创 大数据修炼之路(四):Hive基础

普通视图:只保存 SQL 定义,不存储实际数据。每次查询视图时,相当于重新执行一次定义好的 SQL。它能简化复杂查询、提高数据安全性,但不会提升查询速度。物化视图:会保存计算后的实际结果。查询时直接读取预计算的结果,速度极快,但占用存储空间,且需要配置刷新策略(增量或全量刷新)来保证数据一致性。Hive 内置函数虽然丰富,但无法覆盖所有业务逻辑,此时需要自定义函数(UDF)。分类:普通函数,一进一出(如UPPER:聚合函数,多进一出(如SUMCOUNT:表生成函数,一进多出(如EXPLODE。

2026-09-17 17:21:32 129

原创 大数据修炼之路(三):MapReduce & Yarn核心解析

MR 的核心思想是“分而治之”,其精髓在于。核心细节minSizemaxSizemap()reduce()reduce()

2026-09-17 09:55:10 189

原创 大数据修炼之路(二):HDFS 核心架构与面试详解

HDFS 本质上是一个‘一次写入、多次读取’的分布式文件系统。它的核心架构是主从结构,NameNode 只负责管理元数据,不存真实数据;DataNode 存数据块(默认 128MB),默认 3 副本。它的读写流程最核心的理念是**‘数据流与控制流分离’**。客户端只向 NameNode 要元数据,然后直接与 DataNode 建立 Pipeline 管道传输数据,避免了 NameNode 成为性能瓶颈。

2026-09-15 21:02:56 466

原创 MySQL底层探索(一):什么是脏页?什么是冷热分离?

内存(Buffer Pool)里的数据页被修改了,但还没有被写回磁盘,此时内存和磁盘数据不一致,这个内存页就叫。

2026-09-14 15:35:25 322

原创 大数据修炼之路(一): ZooKeeper学习

ZooKeeper 学习

2026-09-11 19:22:59 318

原创 Linux & Shell 实用干货

桥接(Bridged):虚拟机独立 IP,和宿主机平级,局域网内其他机器可直连。NAT:虚拟机共享宿主机 IP上网,宿主机和虚拟机互通,外网无法直接访问虚拟机(最常用)。Host-Only纯内网,只能与宿主机通信,不能上网(安全性高)。name="zhangsan" # 等号两边不能有空格!echo $name # 输出 zhangsanecho ${name} # 推荐加花括号,便于识别边界echo "My name is ${name}" # 双引号会解析变量。

2026-09-08 15:13:34 214

原创 微服务学习最终篇: Elasticsearch

Elasticsearch 之所以能在大数据量下实现毫秒级的全文搜索,核心秘密就在于它的底层数据结构——倒排索引(Inverted Index)。在传统关系型数据库(如 MySQL)中,搜索文本字段通常用,需要扫描每一行记录,效率极低。倒排索引的设计思路完全不同——它不存储“哪个文档包含了什么内容”,而是存储“这个关键词出现在了哪些文档中”。正排索引 vs 倒排索引正排索引(Forward Index):以文档为核心,文档 ID → 文档内容。这是存储原始数据的方式。

2026-09-07 17:23:46 491

原创 微服务学习(三):网关 + 配置管理 + RabbitMQ

在微服务架构中,网关(Gateway)负责统一流量入口,配置中心(Config Center)承担动态配置管理,而消息队列(MQ)则解决服务间的异步通信问题。

2026-09-07 11:47:26 450

原创 微服务学习(二):服务拆分 + 治理 + OpenFeign

知识点一句话总结服务拆分原则先单体验证可行性,再拆微服务减少风险纵向拆分按功能模块拆出独立服务横向拆分抽取公共能力形成通用服务注册中心服务的"通讯录",帮你找到想调的服务在哪服务发现 + 心跳自动感知实例变化,不用手动维护列表最基础的远程调用方式,适合入门,代码不太优雅OpenFeign声明式HTTP客户端,用起来像调本地方法连接池Feign生产环境必开,用连接池复用连接提升性能Feign抽取统一用公共模块管理,避免重复造轮子下一步。

2026-09-01 19:40:12 366

原创 微服务学习(一):Docker · 夯到爆的一个工具

创建网络# 启动容器时指定网络好处:同一个网络里的容器可以通过容器名互相访问,Docker 自带 DNS 解析。比如在myapp而不是写。

2026-09-01 08:36:06 228

原创 黑马点评·核心命门精炼焚诀

黑马点评学的是技术,面试时包装的是项目。让面试官觉得你做过、想过、踩过坑,比技术本身更重要。

2026-08-31 12:18:34 238

原创 苍穹外卖·核心命门精炼焚诀

这 8 个七寸问题,本质是互联网分布式架构的“八荣八耻”。面试官问的不是 JWT 怎么生成,而是你如何在状态爆炸的分布式世界里做取舍;问的不是 B+ 树结构,而是面对海量数据,你如何用数据结构对抗物理极限。把 STAR 讲熟,把 Trade-off 讲透,你就是他们要的那个人。

2026-08-31 12:04:51 319

原创 黑马点评(五) : 点赞 + Feed流 + BitMap + Geo + HLL

一句话:就是你刷抖音/朋友圈时,无限往下滑,永远有新内容的那种“沉浸式”体验。内容从哪来?→ 你关注的人发的动态。怎么让你看到?→ 三种模式:拉、推、推拉结合。一句话:BitMap 就是一个二进制数组,每个位(bit)只能存 0 或 1。在 Redis 里,它是 String 类型的一种特殊用法,一个 String 最大 512MB,可以存 2^32 个 bit(约 42.9 亿个位)。一句话:Redis 用来存经纬度的数据结构,支持按距离查询、范围查询。一句话:用来统计去重数量。

2026-08-29 11:40:31 341

原创 黑马点评(四):分布式锁 + 秒杀优化 + MQ

单体应用│├── synchronized 本地锁 → 一人一单│▼集群部署│├── SETNX 分布式锁 → 解决了跨 JVM 互斥├── UUID + Lua → 解决了锁误删和原子性├── Redisson → 解决了可重入、重试、续期、主从一致│▼秒杀优化│├── Lua 脚本前置校验(Redis)→ 数据库压力大减├── 异步下单 → 响应时间从秒级到毫秒级│▼消息队列│├── BlockingQueue → 有内存和持久化风险。

2026-08-28 20:34:15 333

原创 黑马点评(三)电商业务:优惠券秒杀

库存不能超卖,一人不能多买。全局唯一ID生成器—— 解决分库分表下的ID冲突与安全问题乐观锁扣减库存—— 用CAS思想解决超卖一人一单—— 用实现用户级并发控制。

2026-08-26 21:17:59 220

原创 黑马点评(二):商户缓存与Redis实战 —— 为什么说缓存是性能优化的第一把刀?

缓存就是数据的“临时副本”,放在读写速度极快的存储介质(如内存)中,用于加速数据访问。物理过期(你平时用的EXPIRE)是 Redis 在 TTL 到期后自动删除 Key。逻辑过期是:Key永远不过期(不设TTL),但在 Value 里存一个时间戳,由业务代码判断是否“逻辑过期”。用内存的高读写速度换取数据库的IO压力降低,代价是需要处理数据一致性问题。

2026-08-26 14:20:05 179

原创 黑马点评项目学习(一):短信登录模块 + 扩展(双token无感刷新)

知识点要点MySQL水平扩展读写分离扩展读能力,分库分表扩展写能力,但有代价正向/反向代理正向代理代理客户端,反向代理代理服务器,Nginx是反向代理每个线程独立的数据副本,用于请求链路中传递用户信息短信登录登录注册合二为一,通过手机号+验证码完成认证集群Session问题多台Tomcat不共享Session,用Redis统一存储解决两层拦截器第一层刷新Token有效期,第二层校验登录状态无感刷新通过拦截器自动续期Token,用户无感知。

2026-08-25 18:11:18 201

原创 AI 应用工程篇: 五个工程的前置认知铺垫

│↓ ↓单次交互 Agent System│ ││Harness│Loop│Graph怎么说 知道什么 怎么工作 怎么持续 怎么协同这五个词真正有价值的地方,并不是让我们多记五个 AI 黑话。AI 应用开发正在从“Prompt 开发”,逐渐走向“Agent 系统工程”。“这个 Prompt 怎么改得更好?“模型现在缺什么 Context?“它有哪些 Tool?“它的 Harness 怎么设计?“它怎么验证?“什么时候停止?“多个 Agent 怎么协同?

2026-08-22 09:47:20 352

原创 CRUD业务项目套路(二):用户登录鉴权、免登录与双Token无感刷新

如果 Refresh Token 使用 Redis 保存,还需要删除 Redis 中对应的 Token,使它立即失效。Refresh Token 不放到这个 VO 中返回给前端 JavaScript。生产环境中 Secret 应该放在环境变量或者配置中心,而不是直接写在代码中。Refresh Token 直接通过 Cookie 写入浏览器。Refresh Token 只通过 Cookie 保存。Access Token 有效期设置为 15 分钟。Refresh Token 有效期设置为 7 天。

2026-08-21 11:55:58 215

原创 CRUD业务项目套路总结(一)

本文针对 CRUD 业务项目中的常见模块进行整理和总结。该篇为第一篇 用户登录模块这些模块在很多业务项目中都会反复出现,需要做到。本文以为例,梳理一个完整业务从 React 前端到 Spring Boot 后端,再到 MyBatis 数据库查询的实现过程。

2026-08-19 20:43:09 235

原创 Redis 从入门到实战(一):基础篇

这篇学习记录涵盖了 Redis 的基础概念数据类型与操作Java 集成(Jedis + SpringDataRedis)主从复制与哨兵机制以及缓存三大经典问题(穿透/击穿/雪崩)。学完这些内容,就可以无缝衔接到黑马点评项目了。Redis 是一个开源(BSD 许可)、内存中的数据结构存储系统,可以用作数据库缓存和消息中间件。特性说明基于内存读写速度极快(读 11w/s,写 8.1w/s)持久化支持 RDB 和 AOF 两种持久化方式数据结构丰富。

2026-08-19 10:38:37 252

原创 零基础入门Linux运维部署:网络模式+常用命令+服务

学完以上内容,就打通了从零到服务部署物理机(Windows) → VMware虚拟机软件 → NAT/桥接网络配置 → CentOS操作系统 → 各类服务器软件部署(Nginx/MySQL/SSH等)这也是后端开发、运维工程师必备的基础技术体系,后续所有的项目部署、服务器维护、环境搭建,都是基于这套基础延伸。

2026-08-18 17:06:16 239

原创 Spring 学习笔记(五):SpringBoot进阶+实战

SpringBoot 启动时自动配置了 `DataSourceTransactionManager`,所以**不需要任何 XML**,直接在 Service 方法上加 `@Transactional` 即可。> 这种参数注入**只在 @Configuration 类的 @Bean 方法中有效**,普通类不行。前后端分离项目,接口文档是刚需。3. 每个自动配置类都有**条件注解**(`@ConditionalOnClass`、`@ConditionalOnMissingBean` 等),**按需生效**

2026-08-14 20:45:31 189

原创 Spring 学习笔记(四):SpringBoot极速入门

SpringBoot是Spring公司的一个顶级项目,本质上是对Spring框架的进一步封装,让我们使用Spring框架更加简单。SpringBoot并不是一个全新的技术,而是让Spring“开箱即用”的解决方案。💡注意:写简历时,技术栈写或,不要写,因为SpringBoot已经包含了Spring和SpringMVC,看到这样的简历,说明他根本就没有理解springboot。在中放入生成的ASCII字符图案。生成工具:http://patorjk.com/software/taag/

2026-08-14 09:27:03 176

原创 Spring 学习笔记(三):Spring JDBC 与事务控制

是 Spring 提供的一个模板类,封装了 JDBC 操作中的重复代码(如获取连接、处理异常、关闭资源),让我们只需要关注SQL 语句和参数本身。// ========== 添加 ==========// 返回受影响行数// 返回生成的主键// 批量添加// ========== 查询 ==========// 查询用户账户总数// 根据主键查询// 多条件查询// ========== 更新 ==========// 更新单条// 批量更新。

2026-08-11 12:00:14 171

原创 Spring学习笔记(二):吃透AOP核心思想,小白从零入门

Spring AOP核心概念与实战应用摘要 AOP(面向切面编程)是Spring核心思想之一,通过将重复性非业务代码(如日志、权限、事务等)抽离为切面,实现无侵入式的功能增强。其底层基于代理模式,Spring采用JDK动态代理(接口类)和CGLIB(非接口类)动态生成代理对象。 核心概念: 切点(Pointcut):定义拦截规则的表达式(如execution(* com.service.*.*(..))) 通知(Advice):增强逻辑,分为前置(@Before)、后置(@AfterReturning)、异

2026-08-11 08:57:42 233

原创 Spring学习笔记(一):吃透IOC核心思想,小白从零入门

记录spring的学习笔记

2026-08-10 15:24:47 148

原创 从 JS 的 `.call()` 到 Java 的“反射”:我是如何降维理解 Java 反射的

本文通过对比 Java 反射与 JavaScript 的 .call() 方法,揭示了两种语言在动态调用上的异同。作者作为前端开发者,在接触 Java AOP 时对 Method.invoke() 产生困惑,后发现其本质类似 JS 的 call(this):都是将方法绑定到指定对象执行。关键区别在于 Java 作为静态语言,需要通过 getClass() 获取运行时类型信息(反射机制)来绕过编译期类型检查。文章还演示了无参方法的反射调用方式,指出 Java 反射比 JS 多出的"照镜子"步骤正是静态类型语言

2026-07-17 14:54:16 214

原创 Java 底层思考系列:从 JVM 栈帧开始,我真正理解了Java 为什么设计抽象类

本文通过分析JVM栈帧结构,揭示了Java抽象类设计的底层原理。作者指出,动态链接机制实现了多态特性,使JVM能在运行时确定实际调用的方法。而抽象类的本质是"强制规范"而非"内存优化",它通过编译期检查确保子类必须实现特定方法,弥补了父类无法提供通用实现的缺陷。这种设计使程序结构更合理,错误更早暴露,扩展更自然。最终,文章将JVM机制与面向对象设计理念串联起来,说明Java每个语法特性背后都有其深层考量。

2026-07-07 10:58:33 232 2

原创 浏览器渲染原理-前端悟道系列

本文详细讲解了浏览器渲染页面的完整流程,包括HTML解析、样式计算、布局、分层、绘制、分块、光栅化和画等8个阶段,并分析了CSS和JavaScript对渲染的影响。特别指出transform效率高的原因在于它只影响合成线程的最后绘制阶段,而不会阻塞主线程。文章还解释了reflow和repaint的区别,以及优化渲染性能的关键点,为前端开发者提供了深入理解浏览器运行机制的重要知识。

2025-09-02 21:46:28 538

原创 事件循环原理以及与js异步的关系(涵盖相关面试题 理解完随便吊打面试官)

本文借鉴了袁老师的课程内容 看完之后你对事件循环和js异步的理解将达到降维打击的级别 吊打面试官 就这么自信这么狂。

2025-07-26 18:05:57 455

7022352744023811-源项目.zip

7022352744023811-源项目.zip

2024-06-19

空空如也

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

TA关注的人

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