- 博客(161)
- 资源 (7)
- 收藏
- 关注
原创 Hive SQL与SQL不同处
:官方文档:(Hive内建了不少函数使用show functions查看当下可用的所有函数;通过describe function extended funcname来查看函数的使用方式。
2026-01-01 19:12:22
304
原创 python虚拟环境
pip是Python的包管理器,就像手机的"应用商店"可以管理Python版本(venv只能用现有的Python)可以安装非Python包(如C++库)有conda-forge等丰富的软件源每个项目独立的venv - 项目隔离,避免包冲突pip下载包到venv - 包管理器,安装第三方库到当前环境conda创建和管理环境 - 另一种环境管理工具,功能更强大(base)- Conda的基础环境(系统级环境)(.venv)- 当前激活的虚拟环境(您的项目环境)
2026-01-01 17:58:42
100
原创 MySQL面试题
并发事务会带来问题:脏读(读到另一个事务还没提交的数据),不可重复读(一个事务连读两次,数据不一样),幻读(查询没有,插入又说有。undo log:记录数据被修改前的信息,一致性,原子性,作用包括:回滚(插入),mvcc(更新,删除)慢查询的原因:聚合查询,多表查询,表数据量过大查询,深度分页查询。回表查询:先通过二级索引找到主键,再到聚集索引里找到整行的数据,使用了两次索引查询。覆盖索引:查询用了索引,在一个索引里就能找到想要的所有数据,就使用了一次索引。解决慢查询:1,在查询语句前加explain2,
2026-01-01 17:57:01
339
原创 Hive分桶表:大数据开发的性能优化利器
分桶表是Hive的高级优化技术,虽然学习成本稍高,但在处理大数据关联查询时能带来数量级的性能提升。对于影视飓风这样数据量大、分析需求复杂的场景,合理使用分桶表是必须掌握的技能。面试时可以说"分桶表是Hive的查询性能优化技术,通过哈希算法将数据均匀分布到固定数量的文件中。它能大幅提升JOIN性能,支持高效数据抽样。在实际工作中,我会根据数据特性和查询模式,合理选择分桶字段和分桶数,通常与分区、ORC格式结合使用,实现最佳查询性能。
2025-12-30 16:44:04
577
原创 Hive 3小时面试速成指南(大数据开发必备)
/ 1. 继承UDF类// 2. 实现evaluate方法if (title.contains("教程")) return "教学";if (title.contains("VLOG")) return "生活";if (title.contains("测评")) return "评测";return "其他";// 3. 在Hive中使用Hive是数据仓库工具,不是数据库,适合离线分析外部表+分区+ORC格式是企业标配SQL转MapReduce/Spark任务是核心原理。
2025-12-29 22:23:04
741
原创 软链接的作用和用途
在 Linux 中创建软链接(符号链接)就像 Windows 中的快捷方式。创建了一个指向实际 hadoop 目录的快捷方式。软链接的权限是 777(lrwxrwxrwx):升级 Hadoop 时只需改软链接。:脚本中引用固定路径,不受版本影响。:可安装多个版本,通过软链接切换。删除软链接不需要原文件的写权限。仍可访问(只要有硬链接)实际访问权限由原文件决定。这就是软链接的强大之处!快捷方式,存的是路径。同一个文件的多个入口。链接失效(悬空链接)
2025-12-28 23:25:18
232
原创 Hadoop和Hive的关系:一分钟彻底搞懂
│ 数据分析师/大数据开发 ││ 写SQL查询 │↓│ Hive ││ 把SQL翻译成分布式计算任务 ││ │ Metastore: 知道数据在哪、什么结构 │ ││ │ HiveQL: SQL方言 │ ││ │ 驱动层: 解析-优化-执行 │ │↓│ Hadoop ││ │ HDFS: 实际存储数据文件 │ ││ │ YARN: 分配CPU/内存资源 │ ││ │ MapReduce/Spark: 执行计算任务 │ │简单说Hadoop是地基和钢筋,Hive是精装修的房子。
2025-12-28 22:10:53
661
原创 Hadoop 4小时速成指南(大数据开发面试必备)
Hadoop是"存算分离"的鼻祖,HDFS存数据,YARN管资源,现在计算多用Spark替代MapReduce,但思想一脉相承。最后,针对影视飓风这类内容公司的大数据场景建议存储场景:HDFS存储海量视频文件、用户行为日志计算场景:用Spark分析用户观看偏好、视频热度趋势数据仓库:用Hive做离线报表(如每日播放量统计)实时分析:用Flink做实时推荐(视频流处理)面试时可以说:"虽然Hadoop MapReduce现在用得少了,但理解它的思想对掌握Spark等现代框架很有帮助。
2025-12-28 21:53:37
720
原创 怎么配置主机名映射?
格式:IP地址 主机名(如 127.0.0.1 example.com)2,内部 DNS 服务器:在路由器或局域网 DNS 中配置,对所有设备生效。
2025-12-28 13:10:53
422
原创 服务超时排查指南(全链路实战)
超时排查 = 快速定位范围 + 分层排查 + 工具辅助 + 经验判断最可能的问题排序数据库慢查询(索引、SQL优化)外部依赖超时(第三方接口、中间件)资源不足(CPU、内存、连接数)网络问题(DNS、带宽、延迟)配置问题(超时时间、连接池)先看监控,再查日志,从外向里,从简单到复杂。
2025-12-25 22:33:37
328
原创 Redis分布式锁解决优惠券超卖
用户领取优惠券时,先生成一个锁的key,比如:`coupon:lock:1001`- 用`SET lock_key user_id NX EX 10`命令尝试获取锁。Redis 是一个开源的内存数据结构存储,它是一个独立的数据库/缓存服务。- 这个命令是原子的,保证设置值和过期时间一起完成。- NX:只有锁不存在时才能设置(互斥)- 用Lua脚本保证原子性,只删除自己的锁。- 启动一个看门狗线程,每隔几秒给锁续期。- 保证业务执行时间不会超过锁的过期时间。- 业务完成后,删除这个key释放锁。
2025-12-25 21:41:15
174
原创 死信队列(Dead Letter Queue)详解(从零开始)
死信队列 = 消息的"最后避难所"作用兜底:所有处理失败的消息最终归宿不丢:保证消息不丢失,有处可查可管:可以监控、处理、重新发送隔离:失败消息不阻塞正常消息记住死信队列不是垃圾桶,而是急救室。 需要认真监控和处理,否则就失去了意义。
2025-12-23 15:52:08
284
原创 RocketMQ刷盘机制 + 死信队列(深度解析)
场景:用户下单消息,消费失败第一次重试:1秒后第二次重试:5秒后...第十六次重试:2小时后如果16次都失败 → 进入死信队列死信队列 = 消息的"太平间"// 实现自定义重试@Service// 最大重试次数@Overridetry {// 处理消息if (!success) {// 业务逻辑失败// 超过最大重试,直接进入死信} else {// 需要重试// 异常处理// 超过最大重试} else {// 需要重试。
2025-12-23 15:26:42
153
原创 RabbitMQ详解(从入门到实战)
RabbitMQ = 邮局系统 + 灵活路由 + 企业级可靠核心是交换器模型Direct:精确送快递Topic:模式订阅Fanout:小区广播Headers:属性匹配适用场景:需要灵活路由、复杂消息模式、与企业系统集成、快速开发的场景。
2025-12-23 13:51:59
344
原创 Redis三大问题:穿透、击穿、雪崩(实战解析)
/ 场景:一个热点key在缓存过期瞬间// 大量并发请求同时来查这个key// 问题代码:// 缓存刚好过期// 大量请求同时到达这里!// 都会去查数据库// 重新缓存// 结果:瞬间大量请求打到数据库,可能压垮数据库// 场景:大量缓存key在同一时间过期// 导致所有请求都打到数据库// 问题代码:// 初始化缓存,设置相同过期时间i <= 10000;i++) {// 都1小时后过期// 1小时后,所有缓存同时过期。
2025-12-21 16:44:41
415
原创 Redis与MySQL双写一致性(实战解决方案)
Component@Autowired/*** 通用的Cache Aside读模板*/// 1. 读缓存if (value!= null) {// 2. 读数据库// 缓存空值,防止缓存穿透// 3. 写缓存/*** 通用的Cache Aside写模板*/// 1. 更新数据库// 2. 删除缓存// 使用模板@Service@Autowiredkey,5,});读多写少 → Cache Aside Pattern。
2025-12-21 15:58:50
370
原创 JUC并发编程锁机制(保姆级教程)
public class 可重入锁示例 {private ReentrantLock 锁 = new ReentrantLock();public void 方法A() {锁.lock();try {System.out.println("进入方法A");方法B();// 在锁内调用另一个需要锁的方法锁.unlock();public void 方法B() {锁.lock();// 同一个线程可以再次获取锁!try {System.out.println("进入方法B");
2025-12-21 15:44:58
393
原创 RocketMQ消息中间件详解
RocketMQ = 高可用消息总线 + 顺序存储 + 事务消息 + 延时队列适用场景系统解耦:订单→库存→物流流量削峰:秒杀、大促数据同步:DB→ES→缓存分布式事务:事务消息定时任务:延时消息。
2025-12-21 15:21:40
289
原创 Redis数据结构大全(从基础到实战)
数据结构底层实现特性常用场景StringSDS(简单动态字符串)二进制安全,可修改缓存、计数器、分布式锁List双向链表/压缩列表有序,可重复消息队列、最新列表Hash哈希表/压缩哈希表键值对集合对象存储、购物车Set哈希表/整数集合无序,不重复标签、共同好友ZSet跳表+哈希表有序,不重复排行榜、延迟队列BitmapString的位操作位操作用户签到、活跃统计特定算法基数估算UV统计GEOZSet封装地理位置附近的人、摇一摇。
2025-12-20 23:17:21
253
原创 MySQL InnoDB内存结构,增删改查时怎么运行的
增删改查在InnoDB内部SELECT = 找缓存 → 读磁盘 → MVCC判断INSERT = 写日志 → 加锁 → 写内存 → 更索引UPDATE = 找行 → 加锁 → 记旧版 → 写新版DELETE = 找行 → 加锁 → 标记删除 → 等清理COMMIT = 日志刷盘 → 释放锁记住核心先日志,后数据;先内存,后磁盘;有版本,有锁控。
2025-12-20 23:11:16
796
原创 布隆过滤器详解
用户插入数据时,经过布隆过滤器,布隆过滤器对其key进行三次哈希计算模与数组长度,得到三个数组下标,将数组中的三处0改为1。这样就标记了这个数据在数据库中存在当用户查询时,同样经过布隆过滤器对其key进行三次哈希计算模与数组长度,得到三个数组下标,检查这三处是否全为1,全1则说明该数据存在,否则不存在,则拒绝查询。
2025-12-19 20:31:45
147
原创 java泛型详解
泛型就是,让类、接口、方法能够处理多种数据类型,而不需要为每种类型都写一份代码。泛型就像是Java的"万能模板",一份代码,多种用途,既安全又高效。
2025-12-19 19:35:25
289
原创 一个Java的main方法在JVM中的执行流程
:你执行。Java编译器将源代码编译成JVM能理解的字节码,存储在文件中。这个文件包含了一个,里面有各种符号引用,比如这个字符串的字面量、Systemoutprintln等类名、方法名和字段名。:你执行。操作系统会启动JVM进程。:JVM通过 来加载HelloWorld类。:首先,启动类加载器会去加载JAVA_HOME/lib下的核心类库,如java.lang包(包括ObjectStringSystem等)。:然后,应用程序类加载器开始工作,它在你的CLASSPATH。
2025-09-07 18:22:08
894
1
原创 HTTP协议和API设计规范
HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的。以上就是我对HTTP协议和API设计规范的详细介绍。将API版本号嵌入URL或HTTP头信息,以便未来进行不兼容的更新时不影响旧客户端。基于HTTP协议的API设计,我们通常遵循REST架构风格,即 。方法定义了应对资源执行的操作类型,这是RESTful设计的核心。对同一资源的不同操作,使用不同的HTTP方法。),应提供这些参数来限制和整理结果。它是万维网数据通信的基础。
2025-09-07 15:31:57
743
原创 React useState基本使用
useState就是用来创建这种特殊的变量的count是状态变量,setCount是函数,用来修改count。
2025-08-30 21:16:07
218
原创 react组件
一个组件就是用户界面的一部分,它可以有自己的逻辑和外观,组件之间可以相互嵌套,也可以复用多次。定义组件(只要是个函数就可以,不管是什么形式,首字母大写就可以)App函数里使用组件(渲染组件),可以使用自闭和标签和成对标签。,内部存放了组件的逻辑和视图UI,渲染组件只需要把组件。在react中,一个组件就是。
2025-08-30 20:52:59
308
原创 浏览器检查使用方法
禁用缓存:没有勾选:会缓存一些页面资源,避免重复加载。如果有请求没获取到,那就设置保留日志、持续记录。UserAgent:表示客户端信息。Cookie:表示用户鉴权的信息。:服务器刚给我们回复的消息。对于抓到的报文如何搜索过滤。过滤表达式,指定过滤条件。一般post都带请求体。
2025-08-28 16:00:50
176
原创 redis作为缓存,MySQL的数据怎么和Redis保持一致呢?(双写一致)
就说我最近做的这个项目,里面有xxxx(根据自己的简历上写)的功能,需要让数据库与redis高度保持一致,因为要求时效性比较高。它是读写、读读都互斥,这样就能保证在写数据的同时,是不会让其他线程读数据的,避免了脏数据。就说我最近做的这个项目,里面有xxxx(根据自己的简历上写)的功能。当mysql数据更新以后,Canal会读取binlog数据,然后再通过Canal的客户端获取到数据,并更新缓存即可。:延迟双删,如果是写操作,我们先把缓存中的数据删除,然后更新数据库,最后再延时删除缓存中的数据。
2025-08-22 08:28:29
277
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅