当前位置: 首页 > news >正文

二十五年后,Microsoft终于移除了FAT32的32GB分区限制——一个从草稿到现实的故事

二十五年后,Microsoft终于移除了FAT32的32GB分区限制——一个从草稿到现实的故事

你可能不知道,FAT32文件系统的32GB分区限制是怎么来的。这个限制其实是1994年Windows前开发者Dave Plummer无心插柳的结果,也是"草台班子"式开发的一个典型案例。所谓"草台班子",是指在缺乏完整规划和严格管理的情况下,仓促搭建起来的临时性组织或方案。这个术语经常被用来描述那些看似临时但却长期存在的解决方案。

草稿变成了长期方案

当时,Plummer负责将Windows 95的用户界面移植到Windows NT,他需要设计一个文件系统格式化工具。在设计过程中,Plummer发现,随着FAT32分区容量的增加,系统会自动增加每个集群(Cluster)的大小。而每个文件在FAT32中的最小存储单位就是一个集群,集群越大,存储小文件时浪费的空间就越多。

于是,Plummer凭借经验和直觉,随手设定了一个32GB的上限,认为这对普通用户来说已经足够了。他当时的想法是,这只是一个草稿,后续的开发团队会进行更深入的研究和调整。这种做法正是"草台班子"的典型表现:临时性的解决方案,期待未来会有更好的替代。

然而,**这个"草稿"**竟然没有被任何人再调整或修改,直接沿用了下来。从Windows 2000开始,一直到Windows XP、7、8、10,甚至最新的Windows 11都维持着这个"临时"设计。这种现象在软件开发中并不罕见,临时方案往往因为各种原因(如时间压力、资源限制或simply忘记了)而变成长期存在的"遗留问题"。

25年后的转折

终于在2024年,微软在Windows 11的最新Canary测试版中移除了这一限制。现在,用户可以通过命令行使用format命令来格式化高达2TB的FAT32分区。这标志着这一历史遗留问题终于得到了解决,尽管它仍然没有反映到图形用户界面中。用户仍然需要通过命令行才能实现这一功能。

这次更新不仅为那些坚持使用FAT32的用户提供了更大的灵活性,也揭示了在开发过程中意外决定可能会对未来产生的长期影响。它同时也反映了大型软件项目中"技术债务"的问题:那些为了快速解决当前问题而采取的权宜之计,最终可能会成为系统的长期负担。

FAT32的现状与未来

尽管如此,FAT32文件系统仍然有一些局限性,比如它依然只支持最大4GB的单个文件大小限制。考虑到如今有许多更现代化的文件系统可供选择,FAT32的使用场景已经相对较少,但它仍然在一些老设备或特定场合中发挥作用。

这个案例也提醒我们,在软件开发中,应该尽量避免"草台班子"式的临时解决方案。即使在紧急情况下不得不采用临时方案,也应该及时进行代码审查和重构,以防止临时方案变成长期负担。

希望在未来的Windows更新中,我们能够看到更多这样的遗留问题被一一解决,使操作系统变得更加现代化和易用。

关键点:

  • 1994年,Plummer在设计FAT32格式化工具时,随手设定了32GB的限制,这是典型的"草台班子"式解决方案。
  • 这一临时决定竟然在接下来的二十五年间未被修改,一直沿用至今,反映了软件开发中"技术债务"的问题。
  • 2024年,微软终于在Windows 11中通过命令行移除了这一限制,标志着这个历史遗留问题得到解决。
  • 这个案例提醒我们在软件开发中要谨慎使用临时方案,并及时进行代码审查和重构。
[备忘]小学学而思全套:
[https://pan.quark.cn/s/236468dddffb](https://pan.quark.cn/s/236468dddffb) 提取码:p3p4

在未来,随着更多历史遗留问题的逐步解决,Windows操作系统将更加现代化和易用。同时,这也为我们提供了一个思考软件开发流程和长期维护策略的机会。

相关文章:

二十五年后,Microsoft终于移除了FAT32的32GB分区限制——一个从草稿到现实的故事

二十五年后,Microsoft终于移除了FAT32的32GB分区限制——一个从草稿到现实的故事 你可能不知道,FAT32文件系统的32GB分区限制是怎么来的。这个限制其实是1994年Windows前开发者Dave Plummer无心插柳的结果,也是"草台班子"式开发的…...

Java二十三种设计模式-命令模式(18/23)

命令模式:将请求封装为对象的策略 概要 本文全面探讨了命令模式,从基础概念到实现细节,再到使用场景、优缺点分析,以及与其他设计模式的比较,并提供了最佳实践和替代方案,旨在帮助读者深入理解命令模式并…...

Kafka系列之:Dead Letter Queue死信队列DLQ

Kafka系列之:Dead Letter Queue死信队列DLQ 一、死信队列二、参数errors.tolerance三、创建死信队列主题四、在启用安全性的情况下使用死信队列更多内容请阅读博主这篇博客: Kafka系列之:Kafka Connect深入探讨 - 错误处理和死信队列一、死信队列 死信队列(DLQ)仅适用于接…...

Fragment学习笔记

静态加载 <fragment android:name"com.example.serviceapplication.fragment.TestFragment"android:layout_width"match_parent"android:layout_height"wrap_content"app:layout_constraintStart_toStartOf"parent"app:layout_cons…...

NGINX 基础参数与功能

章节 1 NGINX 的源码安装 2 NGINX 核心配置详解 3 NGINX 之 location 匹配优先级 4 NGINX 基础参数与功能 目录 1 实现 Nginx 账户认证功能 1.1 创建htpasswd 认证文件 1.2 创建数据目录 1.3 指定认证文件路径 1.4 测试效果 2 定义重定向错误日志 2.1 指定错误日志访问路…...

css设置元素居中显示

CSS中实现居中显示可以通过不同的属性来实现&#xff0c;取决于你是要水平居中还是垂直居中&#xff0c;或者两者都要。以下是一些常用的居中方法&#xff1a; 1.水平居中 - 行内元素或文本 .center-text {text-align: center; } 2.水平居中 - 块级元素 .center-block {mar…...

js判断一个任意值为空包括数组和对象

在JavaScript中&#xff0c;判断一个变量是否为空可以考虑以下几种情况&#xff1a; 如果变量可能是null或undefined&#xff0c;可以直接判断。 对于数组&#xff0c;如果想要判断数组为空&#xff08;长度为0&#xff09;&#xff0c;可以检查其length属性。 对于对象&…...

EmguCV学习笔记 VB.Net和C# 下的OpenCv开发

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 笔者的博客网址&#xff1a;https://blog.csdn.net/uruseibest 本教程将分为VB.Net和C#两个版本分别进行发布。 教程VB.net版本请…...

“TCP粘包”不是TCP的问题!

前言 写RPC用了Netty。涉及到粘包拆包问题。想复习一下。发现网上博客多是概念模糊不清。没有触及本质或者没有讲清楚。 遂决定自己写一篇 “TCP粘包”是谁的问题&#xff1f; 首先我们要明确TCP是面向字节流的协议。也就是说我们在应用层想使用TCP来传输数据时&#xff0c;…...

Electron项目依赖管理:最佳实践与常见错误

问题一 问题描述: 输入命令 pnpm add electron 后&#xff0c; electron 包在执行 postinstall 脚本时&#xff0c;尝试从网络上下载 Electron 二进制文件&#xff0c;但由于网络问题&#xff08;如连接超时或代理设置问题&#xff09;&#xff0c;导致下载失败。 λ pnpm a…...

华为数通路由交换HCIP/HCNP

2017-2022年软考高级网络规划设计师真题解析视频&#xff01;软考复习一定要多做历年真题&#xff01; 2022年软考网络规划设计师真题解析_哔哩哔哩_bilibili 2024年5月软考网络工程师真题解析合集&#xff0c;考后估分版【综合知识案例分析】 2024年5月软考网络工程师真题解…...

搜索面试题

1、目前怎么构建样本的&#xff1f;如果排序中第5个被点了&#xff0c;前面的作为负样本&#xff0c;后面的不要怎么样&#xff1b;为什么不好&#xff0c;为什么好。 点击作为负样本&#xff0c;曝光未点击作为负样本&#xff1b; 可以这样理解。您提到的排序中第5个被点的对…...

WPF学习(8) --Windows API函数的使用

一、API函数的介绍 1.FindWindow函数 [DllImport("user32.dll", CharSet CharSet.Auto)]public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 功能: FindWindow函数用于根据窗口的类名和窗口名称查找窗口的句柄&#xff08;IntPtr…...

Linux系统-用户账号文件

文章目录 文件一&#xff08;passwd&#xff09; 文件二&#xff08;shadow&#xff09; 加密密码部分 举例理解 文件三&#xff08;gshadow&#xff09; 文件四&#xff08;group&#xff09; 文件五&#xff08;skel&#xff09; 文件六&#xff08;login.defs&#…...

docker配置国内镜像加速

docker配置国内镜像加速 由于国内使用docker拉取镜像时&#xff0c;会经常出现连接超时的网络问题&#xff0c;所以配置Docker 加速来使用国内 的镜像加速服务&#xff0c;以提高拉取 Docker 镜像的速度。 1、备份docker配置文件 cp /etc/docker/daemon.json /etc/docker/da…...

C语言实现排序之堆排序算法

一、堆排序算法 基本思想 堆排序是一种比较有效的排序方法&#xff0c;其基本思想是&#xff1a; 构建最大堆&#xff1a;首先将待排序的数组构建成一个最大堆&#xff0c;即对于每个非叶子节点&#xff0c;它的值都大于或等于其子节点的值。排序&#xff1a;然后将堆顶元素…...

【STM32 Blue Pill编程】-外部中断配置及使用

外部中断配置及使用 文章目录 外部中断配置及使用1、中断介绍2、STM32中的中断3、硬件准备及接线4、GPIO配置5、代码实现在本文中,我们将介绍如何使用 STM32Cube IDE 中的 HAL 库配置和处理外部中断。 我们将通过一个带有按钮和 LED 的示例来演示这一点。 读完本文后,您将能够…...

MySQL 安装与配置教程:单机、主从复制与集群模式

目录 MySQL 简介MySQL 安装MySQL 基础配置MySQL 主从复制配置MySQL 集群配置总结 1. MySQL 简介 MySQL 是一个广泛使用的关系型数据库管理系统&#xff0c;具有高性能、高可靠性和易用性等特点。它支持多种部署模式&#xff0c;包括单机模式、主从复制模式&#xff08;用于高…...

JavaEE 的相关知识点(一)

一、过滤器 过滤器&#xff08;Filter&#xff09;是一个用于对请求和响应进行预处理的组件。过滤器可以在 Java Servlet 规范中使用&#xff0c;通常用于执行一些通用的任务 1、过滤器的作用 过滤器是一种javaEE规范中定义的一种技术&#xff0c;可以让请求达到目标servlet之…...

使用Python实现深度学习模型:智能医疗影像识别与诊断

介绍 智能医疗影像识别与诊断是现代医疗技术的重要应用,通过深度学习模型,可以自动分析和识别医疗影像,提高诊断的准确性和效率。本文将介绍如何使用Python和深度学习技术来实现智能医疗影像识别与诊断。 环境准备 首先,我们需要安装一些必要的Python库: pip install …...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 &#xff08;一&#xff09;实时滤波与参数调整 基础滤波操作 60Hz 工频滤波&#xff1a;勾选界面右侧 “60Hz” 复选框&#xff0c;可有效抑制电网干扰&#xff08;适用于北美地区&#xff0c;欧洲用户可调整为 50Hz&#xff09;。 平滑处理&…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...