自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spark

Shuffle指的是集群范围内跨节点、跨进程的数据分发。之前学的几个算子比如map,filter,mapPartition,flatmap都是用于RDD内部的数据转换,不会引入Shuffle计算而groupByKey,sortByKey,reduceByKey,aggregateByKey都会引入Shuffle计算,并且这些算子只可以作用在paired(KV)RDD上。这是最核心的瓶颈。Map 端必须将中间结果写入磁盘以保证容错,而 Reduce 端又必须从磁盘读取这些文件。

2025-12-04 13:35:19 802

原创 数据仓库教程

层级就像做菜…如果没有这一层…ODS刚买回来的带泥土豆数据错了没法回溯,只能去 MySQL 生产库查,会被运维打死。DWD洗净削皮切好的土豆丝每个人都要自己写代码去解析“分转元”、去解析 JSON,重复造轮子。DWS半成品预制菜(土豆肉丝)每次查报表都要把几亿张订单和用户表 Join 一次,集群资源瞬间耗尽。APP端上桌的成品菜报表加载速度极慢,老板点开页面要等 5 分钟。维度表iPhone 15, Apple, 黑色(描述信息,用于筛选)。事实表(ID 和数字,用于计算)。

2025-12-04 13:34:29 1165

原创 Hive教程

记得加EXTERNAL,记得定义分隔符ROW FORMAT,最重要的是一定要加。忘掉,使用LOAD DATA(搬文件) 或(洗数据)。永远带着。遇到要警惕,尝试用GROUP BY替代。ORMAT,最重要的是**一定要加**。2. **写入 (Insert):** 忘掉,使用LOAD DATA(搬文件) 或(洗数据)。3. **查询 (Select):** 永远带着。遇到要警惕,尝试用GROUP BY` 替代。

2025-12-04 13:33:48 740

原创 hadoop

他们通过共享 EditLog(写操作日志)来保证数据一致,并且DataNode会同时向两个NameNode汇报最新信息,来及时更新block情况,当Active挂了后,Standby会变成新的Active来保证高可用。👉 早期 Hadoop 自带的 MapReduce 既负责调度又负责计算,后来为了让其他计算框架(不仅仅是 MR)也能用 Hadoop 集群的资源,就把。Combiner的流程是在merge中,主要目的是减少内存写入磁盘的IO以及之后reduce拉取数据的网络传输。

2025-12-04 13:32:18 1336

原创 计算机网络

是整个。

2025-08-24 15:27:28 944

原创 JDK版本报错

你可能遇到很多次这种情况你可以想想,项目中pom.xml文件里的JDK版本,Maven里的JDK版本,project structure里的JDK版本,到底是什么关系。

2025-08-24 15:26:40 341

原创 MySQL

熟练掌握 MySQL 基础,理解MySQL基本架构、索引、、日志、锁、MVCC,具备一定的SQL调优能力。

2025-08-05 20:11:56 1030

原创 Redis

思路分析:当用户开始查询redis时,判断是否命中,如果没有命中则直接返回空数据,不查询数据库,而一旦命中后,将value取出,判断value中的过期时间是否满足,如果没有过期,则直接返回redis中的数据,如果过期,则在开启独立线程后直接返回之前的数据,独立线程去重构数据,重构完成后释放互斥锁。进行校验 缓存穿透的一个原因是有大量的恶意请求访问不存在的数据,所以我们用正则表达式进行合法性检测,把恶意的请求(例如请求参数不合理、请求参数是非法值、请求字段不存在)直接过滤掉,不让它们访问后端缓存和数据库。

2025-08-05 20:11:10 2114

原创 RabbitMQ

解耦:在不同系统之间,把原来通过网络传输换为MQ进行消息的异步通信。只要该操作不需要同步,就可以换成MQ,这样项目间不存在耦合。异步:一个操作可能需要好几个步骤,比如说用户创建一个订单,之后还需要更新库存等步骤,这样可能会需要大量时间,这样客户是无法接受的,而后面的几个操作其实不需要同步进行,我们就可以将其放入消息队列中去异步操作,加快系统的访问速度,提供更好的客户体验。

2025-08-05 20:09:51 918

原创 K8S教程

原来我们的应用程序需要访问数据库的话,一般的做法是将数据库的地址和端口等连接信息写到配置文件或者环境变量中,然后在应用程序中读取这些配置信息,这样配置信息就和应用程序耦合在一起了,当数据库的地址或者端口发生变化,我们就得修改应用程序的配置信息然后重新编译部署,这样不仅麻烦,而且对于一些需要不间断运行的服务来说是不能接受的(比如你深夜肚子饿了想点外卖而服务器却在重新编译部署)。将配置信息和应用程序的镜像内容分离开,当数据库的地址和端口发生变化的时候,只需要修改 ConfigMap对象中的配置信息,

2025-07-26 20:23:46 1133

原创 日志怎么写

以上都是使用默认的配置。一个上线了的程序的日志可能还让你在控制台上查看嘛?难道不是在Linux里的文件里看日志嘛,那怎么实现呢???日志就永远往一个日志文件里写嘛,不可能的吧,那怎么每天插件一个新的日志文件呢日志前面的怎么写,如何靠自定义配置快速定位到位置我们只需要在resource下写一个即可(不要求你会写,你得给我读懂吧)> <!--明确字符集版本--> < configuration debug = " false " > <!

2025-07-15 19:30:15 1064

原创 如何进行测试

之后进入你想测试的方法的类中,按alt+insert,点击test是 Spring Boot 提供的一个注解,用于启动 Spring Boot 的测试上下文框架。它会加载 Spring Boot 的配置,并启动一个完整的 Spring 应用程序上下文,以便在测试中使用 Spring 的各种功能,例如依赖注入、自动配置等。比如你想想,为什么可以单独测试一个方法呢,不用像postman那样全流程呢,就是这个的功劳。@BeforeEach就是在@Test之前执行的,注意这里是成员变量,Test方法里可以调用。

2025-07-15 19:27:57 2133

原创 Git的使用

首先IDEA会提醒你冲突了,让你先update下来,这是update也会提醒冲突了,你之后就要手动决定哪些逻辑要的,哪些逻辑是不要的(你可以交流下,并且你都是修改这个逻辑的话你肯定是看得懂代码的),图我忘记截屏了,画下吧。你右键master,点击checkout即可,但是,但是,在你切换之前请确保当前(feature3.0)已经commit了。,如果你要push到远程master,那就对本地的master进行操作。上面那个箭头指的是一个粉笔样的图标,这说明你正在操作该分支,那么你push到的远程分支就是。

2025-07-15 19:23:25 777

原创 leetcode-hot100 双指针

总结:每次left++或right++后,需要立刻进行判断,所以把++放在最后。想想为啥报出数组越界,为啥下面没有报数组越界。这下面是两个相同逻辑但不同写法。

2025-07-15 19:18:53 460

原创 leetcode-hot100 普通数组

前缀和+贪心算法动态规划。

2025-07-15 19:18:20 380

原创 leetcode-hot100 链表

总会相等的,要么在相交节点,要么在。

2025-07-15 19:17:41 308

原创 leetcode-hot100 矩阵

原索引位置 → 旋转后索引位置。下次看一看怎么直接用list。l和1太像了,下次换了。

2025-07-15 19:17:08 413

原创 leetcode-hot100 滑动窗口

什么情况下会想到滑动窗口法:任何题目如果没有思路其实都可以想一下暴力解法。暴力法的复杂度为O(n^2)。显然不高效。可以发现第二步其实做了很多不必要的操作,例如[i, j]和[i+1, j+1]两个子串在暴力法第二步中,需要各遍历一次,完全没必要。其实[i+1, j+1]完全可以在[i, j]的基础上做判断,也就是去掉头部的字符(i位置),加上尾部的字符(j+1位置)。这样第一步的复杂度可以降到O(1)。整体复杂度降到O(n)。已经得到信息不重复使用就浪费了,没必要重新搜集近乎相同的信息。

2025-07-15 19:16:28 400

原创 leetcode-hot100 子串

这个前缀和后的hashmap操作有点难想到。

2025-07-15 19:15:32 303

原创 Git的使用

首先IDEA会提醒你冲突了,让你先update下来,这是update也会提醒冲突了,你之后就要手动决定哪些逻辑要的,哪些逻辑是不要的(你可以交流下,并且你都是修改这个逻辑的话你肯定是看得懂代码的),图我忘记截屏了,画下吧。你右键master,点击checkout即可,但是,但是,在你切换之前请确保当前(feature3.0)已经commit了。,如果你要push到远程master,那就对本地的master进行操作。上面那个箭头指的是一个粉笔样的图标,这说明你正在操作该分支,那么你push到的远程分支就是。

2025-07-05 09:26:54 849

原创 Maven

如果我们要引用一个第三方组件,比如okhttp,如何确切地获得它的groupIdartifactId和version?方法是通过。

2025-07-01 20:19:52 1007

原创 Docker

问题:为什么这个程序在我的电脑上可用运行,在另一台电脑上无法运行?Java程序必须安装JDK才可以编译运行,如果另一台电脑没有JDK就无法运行了那有什么办法可以解决这个呢?项目可以带上环境(镜像)安装打包,这样就可以避免这个问题Docker是基于go语言开发的官方操作文档:https://docs.docker.com/build-cloud/仓库:https://hub.docker.com/(类似GitHub,可以从DockerHub上拉取别人的镜像)

2025-06-26 20:19:14 1161

原创 机器学习基础

机器学习基础

2025-06-06 20:22:01 2008

原创 力扣hot100 - 哈希篇

【代码】力扣hot100 - 哈希篇。

2025-06-02 12:02:47 182

原创 Typora

本文分享了Typora常用的快捷键操作,分为四大类: 段落操作:包括标题、表格、列表等格式快捷键,如Ctrl+T创建表格 文本操作:如加粗(Ctrl+B)、添加链接(Ctrl+K)等文本样式快捷键 文件操作:新建/打开文件(Ctrl+N/O)等文件管理快捷键 视图操作:侧边栏控制、全屏等视图切换快捷键 文末附有Typora官方文档链接和个人网站地址,方便读者查阅更多详细内容。

2025-06-01 20:39:56 418

原创 设计模式-单例模式

摘要:单例模式确保类只有一个实例并提供全局访问点。常见实现方式包括饿汉式(类加载时创建实例)、懒汉式(内部类或双重检查锁)和枚举(天然单例)。饿汉式简单但可能浪费资源;懒汉式通过延迟加载提高效率,双重检查锁优化并发性能;枚举实现简洁且线程安全。重点在于私有化构造方法、静态实例和全局访问方法,避免资源浪费和并发问题。

2025-05-30 21:34:35 795

空空如也

空空如也

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

TA关注的人

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