- 博客(26)
- 资源 (3)
- 收藏
- 关注
原创 LinkedList 与 ArrayList 的区别及使用场景
根据具体操作类型(读 vs 写、头部 vs 尾部)和数据规模综合评估。接口的实现类,但底层实现和性能特点截然不同。基于双向链表,内存分散,插入/删除更高效(但需先遍历到位置)。每个节点需额外存储两个指针(前驱和后继),内存开销更大。需要频繁在中间插入/删除的场景(如编辑器的撤销操作链表)。用户列表的存储与展示(按索引快速访问)。实时消息系统(频繁在头部插入新消息)。(例如实现栈、队列或实时任务列表)。缓存数据(需频繁读取,较少修改)。(存储大量数据时更节省空间)。(例如按索引查询、遍历)。
2025-05-23 18:23:49
542
原创 Java常用数据结构底层实现原理及应用场景
,重新哈希(JDK 8 优化:元素位置为原位置或原位置+旧容量)。,通过双向链表维护插入顺序或访问顺序(LRU 实现基础)。,多线程下可能死循环(JDK 7 链表头插法导致)。未设置初始容量导致频繁扩容),并合理选择数据结构。)基于泊松分布统计,冲突概率极低时避免过度优化。堆顶元素为最小(默认小顶堆)或最大(通过。双端队列(队头/队尾均可操作)。更高效(内存连续,缓存友好)。),插入/删除慢(需移动元素,节点,包含前驱、后继指针)。:红黑树(自平衡二叉搜索树)。,但需先遍历到位置,实际为。
2025-05-23 18:16:16
896
原创 Mysql事务基础知识
事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失。
2025-05-23 18:03:53
501
原创 mysql语句执行流程
通过理解MySQL语句执行流程,可系统化定位性能瓶颈(如锁竞争、磁盘I/O过高),并制定针对性优化策略。执行引擎根据优化器的计划,调用存储引擎(如InnoDB)的接口读写数据。连接成功后,服务器为客户端分配一个线程(由线程池管理),处理后续请求。:根据MySQL语法规则生成抽象语法树(AST),验证语句结构合法性。客户端解析并展示结果(如命令行表格或应用程序数据结构)。,则计算查询的哈希值,检查缓存中是否存在匹配结果。若结果集较大,可能分批次传输(避免内存溢出)。:若涉及视图,将其替换为底层表的查询逻辑。
2025-05-23 17:27:55
361
原创 TCP与UDP区别及应用场景详解
TCP(传输控制协议)和UDP(用户数据报协议)是互联网中两种主要的传输层协议,它们在设计目标、工作机制和应用场景上有显著区别。可容忍部分丢失时选UDP(如实时视频)。在不可靠网络(如无线网络)中,UDP需应用层处理丢包;小数据高频发送(如心跳包)适合UDP。:在UDP上实现类似TCP的可靠性,同时减少握手延迟。:适合对实时性要求高、可容忍少量数据丢失的场景。:适合对数据准确性要求高、允许一定延迟的场景。:周期性发送小数据包(如温度传感器)。:容忍少量丢包,但要求低延迟。:保证文件数据不丢失或损坏。
2025-05-23 17:22:54
490
原创 Mysql慢查询分析
分析慢 SQL 查询需要系统化的方法,结合数据库的执行计划(EXPLAIN)和性能关键指标。使用或监控工具(如 Prometheus)检查当前 SQL 执行状态。通过慢查询日志()定位具体 SQL(需提前开启)。使用EXPLAIN或(MySQL 8.0+)查看 SQL 执行路径。重点关注访问类型(type)、索引使用(key)、扫描行数(rows)等字段。确认 WHERE、JOIN、ORDER BY 等子句是否用到了合适的索引。检查索引选择性(重复值比例)和覆盖索引(检查表的数据量(
2025-05-23 17:04:50
829
原创 Mysql索引的数据结构
索引(Index)是帮助MySQL高效获取数据的数据结构。索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法。索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型,同时,存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。有些存储引擎支持更多的索引个数和更大的索引长度。
2025-05-23 15:56:11
744
原创 Mysql逻辑架构
以某些系统函数举例,可能同样的函数的两次调用会产生不一样的结果,比如函数 NOW ,每次调用都会产生最新的当前时间,如果在一个查询请求中调用了这个函数,那即使查询请求的文本信息都一样,那不同时间的两次查询也应该得到不同的结果,如果在第一次查询时就缓存了,那第二次查询的时候直接使用第一次查询的结果就是错误的!需要说明的是,在 MySQL 中的查询缓存,不是缓存查询计划,而是查询对应的结果。所有的数据,数据库、表的定义,表的每一行的内容,索引,都是存在文件系统上,以文件的方式存在的,并完成与存储引擎的交互。
2025-05-23 15:54:39
692
原创 Mysql的数据目录
在MySQL5.6.6以及之后的版本中,InnoDB并不会默认的把各个表的数据存储到系统表空间中,而是为 一个表建立一个独立表空间 ,也就是说我们创建了多少个表,就有多少个独立表空间。MySQL 系统自带的数据库,这个数据库保存着MySQL服务器维护的所有其他数据库的信息 ,比如有哪些表、哪些视图、哪些触发器、哪些列、哪些索引。MySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。
2025-05-23 15:53:18
505
原创 Linux下MySQL的安装与使用
举例:我在创建一个表时,该表中有一个字段为 name,给 name 设置的字段类型为 char(10) ,如果我在插入数据的时候,其中 name 这个字段对应的有一条数据的长度超过了10 ,例如'1234567890abc',超过了设定的字段长度10,那么不会报错,并且取前10个字符存上,也就是说这个数据被存为了'1234567890',而'abc'就没有了。但是,我们给的这条数据是错误的,因为超过了字段长度,但是并没有报错,并且mysql自行处理并接受了,这就是宽松模式的效果。0/LOW:只检查长度。
2025-05-23 15:51:29
922
原创 数据库三范式详解与应用建议
数据库三范式(Normalization)是关系型数据库设计的核心原则,旨在减少数据冗余、提高数据一致性,并避免插入、更新和删除异常。通过遵循三范式,可以设计出结构清晰、高效且易于维护的数据库。(非主键字段不能依赖于其他非主键字段)。不是原子值,包含多个电话号码。(非主键字段必须完全依赖主键)。(主键的一部分),而非整个主键(的(不可再分的最小数据单元)。:在满足1NF的基础上,消除。:在满足2NF的基础上,消除。存储了多个电话号码(如。:确保表中每列的值是。
2025-05-23 15:24:46
348
原创 1.数据仓库概述
目录1.1 数据仓库概念1.2 数据仓库核心架构1.1 数据仓库概念数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策。同时,随着时间的推移,数据仓库中积累的大量历史数据对于数据科学家和业务分析师也是十分宝贵的。1.2 数据仓库核心架构...
2022-04-01 10:12:49
585
原创 3.维度建模之事实表
事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计。其包含与业务过程有关的维度引用(维度表外键)以及该业务过程的度量(通常是可累加的数字类型字段)。事实表特点事实表通常比较“细长”,即列较少,但行较多,且行的增速快。事实表分类事实表有三种类型:分别是事务事实表、周期快照事实表和累积快照事实表,每种事实表都具有不同的特点和使用场景,下面逐个介绍。...
2022-03-29 11:25:32
2324
原创 ClickHouse安装部署
ClickHouse支持运行在主流64位CPU架构(X86、AArch和PowerPC)的Linux操作系统之上,可以通过源码编译、预编译压缩包、Docker镜像和RPM等多种方法进行安装。本文着重讲解离线RPM的安装方法。环境准备1.下载RPM安装包需要下载三个安装包:clickhouse-client-20.8.7.15-2.noarch.rpmclickhouse-server-20.8.7.15-2.noarch.rpmclickhouse-common-static-20.
2021-06-28 15:23:45
981
转载 Flink流计算可视化平台
github 地址 https://github.com/zhp8341/flink-streaming-platform-web (建议)国内 gitee 地址 https://gitee.com/zhuhuipei/flink-streaming-platform-web一、简介flink-streaming-platform-web 系统是基于Apache Flink 封装的一个可视化的、轻量级的 flink web 客户端系统,用户只需在 web 界面进
2021-04-08 17:35:15
5366
原创 数据仓库的分层结构
为什么要分层?分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:数据结构清晰,每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。 方便数据血缘追踪,简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。 减少重复开发,规...
2020-05-06 11:14:48
2948
原创 星型模型与雪花模型的区别、分别有哪些优缺点
概念根据事实表和维度表的关系,可将常见的模型分为星型模型和雪花模型。在数据仓库的建设中,一般都会围绕着这两种模型来设计表关系或者结构。那么什么是事实表和维度表呢?在维度建模中,将度量称为“事实” ,将环境描述为“维度”。维度是用于分析事实所需要的多样环境。例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。事实则紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来...
2020-05-05 11:06:40
25496
原创 数据回流表情符问题处理
问题:sqoop导入数据到mysql时,emoji表情符无法导入mysql问题。异常:Caused by: java.io.IOException: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x86\x95' for column 'address' at row 61 表情符回流条件表情符回流需满足以下条件:...
2020-04-15 20:46:31
575
2
翻译 Apache Flink v1.9(基本概念-术语)
Flink Application Cluster(Flink应用程序集群)Flink应用程序集群是专用的Flink集群,它仅执行一个独立的Flink作业。Flink集群的生命周期与Flink任务是绑定的。在job模式下,以前的Flink应用程序集群也称为Flink集群。与Flink Session Cluster对应。Flink Cluster(Flink集群)一种分布式系统...
2019-10-14 20:57:55
401
原创 数据回流upsert模式
背景现有的数据回流方案中,为避免数据重复,有一些前置操作(delete/truncate)。在回流之前执行这些操作会对查询造成一些瞬时影响。针对这种场景我们需要做一些优化(update or insert)。适用场景准实时项目回流(数据回流频繁) 数据累加型计算 无需删除之前计算结果要求数据加工表中包含唯一业务字段。实现方式原回流方式#删除目标表当天数据,避...
2019-10-11 18:03:01
3449
翻译 Apache Flink v1.9(应用开发-Flink DataStream API编程指南-概述)
目录容错控制延迟本地执行环境收集数据源迭代器数据接收器Flink中的DataStream程序是实现数据流转换的常规程序(例如,过滤,更新状态,定义窗口,聚合)。最初从各种源(例如,消息队列,套接字流,文件)创建数据流。结果通过接收器返回,接收器可以将数据写入文件或者执行标准输出(例如命令行终端)。Flink程序可以在各种环境中运行,独立运行或嵌入其他程序中。执行器可以在本地...
2019-07-01 20:19:28
839
翻译 Apache Flink v1.9(教程-设置教程)
本地安装教程只需几个简单的步骤即可启动并运行Flink示例程序。设置:下载并启动FlinkFlink可在Linux,Mac OS X和Windows上运行。为了能够运行Flink,唯一的要求是安装一个有效的Java 8.x环境。 Windows用户,请查看Windows上的Flink指南,该指南介绍了如何在Windows上运行Flink以进行本地设置。您可以通过发出以下命令来检查Java正...
2019-05-30 13:05:20
1721
翻译 Apache Flink v1.8(首页)
本文档适用于Apache Flink 1.8版本。 这些页面的建立时间为:05/27/19, 01:02:09 AM UTC.。Apache Flink是一个用于分布式流和批处理数据处理的开源平台。Flink的核心是流数据流引擎,为数据流上的分布式计算提供数据分发,通信和容错。Flink在流引擎之上构建批处理,覆盖本机迭代支持,托管内存和程序优化。...
2019-05-29 19:51:40
340
Spark快速大数据分析(清晰文字版)
2018-04-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人