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

亿级核心表如何优雅扩展字段

1 导语

亿级数据的核心表新增一个字段,远不止一句简单的“ALTER TABLE”,锁表风险、页分裂、索引性能衰减……每一个问题都可能引发线上事故。如何在不影响业务的前提下,只需简单的配置,即可实现字段的动态扩展?本文将带你揭秘中台团队的实战解决方案。

2 背景

软件行业中,唯一不变的因素就是“变化”。一个新项目上线后,业务需要对现有功能做一些改动或升级,而实现这个功能必须要新增字段。新增字段乍一看无所谓,但如果加上一些前提条件,这张表是一张数亿级数据的表,而且是公司的核心热点表,你还能随心所欲地加么。抛开加字段过程中的锁表问题不说,后续随着字段和数据的不断增多,还会引发MySQL的页分裂、碎片化、索引性能衰减等一系列问题。

如何处理这个问题呢?我们最直接能想到的就是两种方式,扩展字段和扩展表。当然也有人可能会想到用非关系型数据库解决。而数据库选型往往是在项目初期时考虑,如果是老项目,实现起来就有不小的难度和风险,并且非关系型数据库也有自己无能为力的方面。所以其他方式我们暂且先按下不表,下面我们主要讨论怎么基于现有条件更优雅地解决这个问题。

3 扩展字段

扩展字段是最容易想到的解决方案,在表中增加一个扩展字段,以JSON格式存储数据。这也是我们之前一直采用的方式,我们的使用方式是这样的:

表结构:

order_id

extend

111

{"uid":1,"name":"张三"}

222

{"uid":2,"name":"李四"}

...

...

伪代码:

public class Order {private Long orderId;private String extend;/*** 为扩展字段extend建一个内部类*/@Datapublic static class ExtendObj implements Serializable {private Long uId;private String name;...}/*** 扩展字段的get、set方法*/public void setExtendObj(ExtendObj extendObj) {// 为展示方便,省略判空等逻辑this.extend = JSON.toJSONString(extendObj);}public ExtendObj getExtendObj() {// 为展示方便,省略判空等逻辑return JSON.parseObject(extend, ExtendObj.class);}
}

如代码所示,为了便于管理字段,我们为扩展字段创建了内部类,并实现get、set方法,以便于使用。如果你是独立部门,你的数据存储只服务于自己的系统,在表设计之初可以根据经验预留一些备用字段,再配合扩展字段,基本上可以做到很少添加字段了。但这个方案也存在一些问题:

  1. 不可索引。extend里的字段无法建立索引进行检索。这里有经验的读者可能会提出,MySQL 5.7.8版本支持JSON数据类型,可以为扩展字段中的某一个或一部分字段建立索引。是的没错,但如果你之前用的是更老的版本,就需要升级,MySQL版本升级也不是说升就能升的,懂的都懂,这里就不展开说了。

  2. 并发覆盖。当对extend并发更新的时候,会出现覆盖问题。这里我们采用了CAS更新的方式去避免,但是随着extend中的字段不断增多,冲突问题越来越频繁,CAS策略就影响到了接口成功率。

  3. 重复工作。每次新增字段都需要为内部类增加属性,拉分支,重新打包上线。

如果你是中台部门,除了上面的硬伤,还有一些更伤脑筋的问题在等着你:

  1. 数据膨胀。你不可能基于当前的扩展字段,来者不拒地存,字段总有一天会超长,就像一柄达摩克利斯之剑。当然,你拥有的剑还不止一柄,你同样需要担心字段不断膨胀之后的数据库性能。
    然而你也不能来者皆拒,业务部门因为你的拒绝,需要为一两个字段去自己新建一张表存储维护,成也很高,于是你陷入了两难。

  2. 维护黑洞。随着业务迭代,你的维护成本会越来越高,面对几百个扩展字段,你无法快速知道这些字段具体是哪个业务、什么场景在用,当前还有没有在使用、可不可以被下掉。

4 扩展表

另一种方案是扩展表。扩展表将扩展字段中的每个字段转成一行,存储到另外一张表中:

order_id

key

value

111

uId

1

111

name

张三

222

uId

2

222

name

李四

如果后续新增了age属性,数据就变为:

order_id

key

value

111

uId

1

111

name

张三

222

uId

2

222

name

李四

111

age

26

222

age

38

扩展表解决了扩展字段无法索引的问题,由于把字段拆开了存,也很大程度上缓解了并发问题。同时,由于扩展数据不在主表存储了,也释放了主表的压力,让加字段更从容一些。但也引进来一个新问题:本来一条记录的许多属性,变成了多条记录,行数成倍增加了。为解决这个问题,我们基于主表现有的分库分表逻辑,对扩展表也进行了分库和分表。

扩展表方案貌似解决了扩展字段方案的大部分问题,可索引、没有并发覆盖问题、不影响主表性能。但还是没有解决字段维护问题,你还是不知道哪些字段场景在用什么字段,哪些字段可以下线。并且在实践中,我们还归纳出其他一些使用场景:

场景1:有些业务期望将数据存储在订单中台后,在订单的后续某个节点传递给下游服务。

场景2:有些业务期望扩展字段中的某些字段与主表上的某些字段一起进行检索。

这两个场景实现起来比较机械,我们也不希望每次都去开发。

5 现在的方案

为了满足上面两种使用场景,并且实现只需简单的配置,即可实现字段的动态扩展的愿景,最终,我们将整个系统拆分为三部分:数据管理、数据存储、数据检索。数据管理部分用于管理动态字段准入、接口透传信息、检索要求、归属以及其他基本信息,数据存储部分核心还是采用扩展表的方案,数据检索采用ES集群及自研ES管理系统ECP。

descript

现在,我们来看看当前的系统能做什么:

  • 首先,有了管理系统之后,字段的归属、作用域、场景都很清晰,不再是一个黑盒,生效状态也可以进行标记,被标记失效的字段后续就可以逐步下线。

  • 对于场景1,业务可以将数据通过下单接口(或其他节点接口)传入订单系统,并保存到数据库。当订单流转到对应节点,需要调用相关接口时,会检查参数透传信息,搜集需要透传到当前接口的所有参数数据,然后根据参数路径,将之前保存的值设置到对应请求参数中透传下去。

  • 对于场景2,为了规避连表查询,我们还是借助了ES,通过ES合并主表和扩展表数据进行检索。

至此,业务方再提出新增字段诉求,只需要在数据管理后台进行配置上线,使用者即可通过指定接口,或接口的指定参数将数据传入,实现数据的存储、传递、检索能力,全程无需开发介入。

6 结语

在大数据量表上的动态扩展字段,本质上是灵活性与稳定性的博弈,既要支撑业务快速迭代,又要规避“野蛮生长”的技术风险。基于分治思想,我们将核心数据与扩展数据分离;在系统设计上,对数据管理、数据存储、数据检索三部分进行解耦,把问题拆解,降低每一部分的设计难度;而在具体实践上,我们也将整个系统功能进行了封装,以便其他有同样困境的系统能够快速扩展该项能力。

相关文章:

亿级核心表如何优雅扩展字段

1 导语 亿级数据的核心表新增一个字段,远不止一句简单的“ALTER TABLE”,锁表风险、页分裂、索引性能衰减……每一个问题都可能引发线上事故。如何在不影响业务的前提下,只需简单的配置,即可实现字段的动态扩展?本文将…...

单端传输通道也会有奇偶模现象喔

奇模(Odd mode)与偶模(Even mode)对差动对是很关键的要素,其会影响奇/偶模阻抗与相位速度,设计不良甚会让共模噪声引入整个差动对使讯号质量下降。 然而对单端信号系统而言呢? 如果说一对side b…...

VUE3 中的 ResizeObserver 警告彻底解决方案

问题背景 今天在使用 Vue 3 Ant Design Vue 开发后台管理系统时,在页面频繁触发 元素尺寸变化(如表格滚动、窗口缩放) 的时候,控制台频繁出现如下警告: ResizeObserver loop completed with undelivered notificati…...

IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS

目录 Windows的准备 1. 将与Linux上版本相同的hadoop压缩包解压到本地 ​编辑2.设置$HADOOP HOME环境变量指向:E:\hadoop-3.3.4 3.下载hadoop.dll和winutils.exe文件 4.将hadoop.dll和winutils.exe放入$HADOOP HOME/bin中 IDEA中操作 1.下载Big Data Tools插件 2.添加并连…...

Gas优化利器:Merkle 树如何助力链上数据效率革命

目录 前言原理Merkle树示意图实战演示:构建 Merkle 树并在合约中验证离线构建 Merkle 树(手动计算Merkle树、生成mermaid示意图)编写Merkle.js脚本执行Merkle.js脚本执行结果展示mermaid流程图展示离线构建 Merkle 树(merkletreejs计算Merkle树、验证哈希路径)编写Merkle.…...

R语言空间分析实战:地理加权回归联合主成份与判别分析破解空间异质性难题

在自然和社会科学领域有大量与地理或空间有关的数据,这一类数据一般具有严重的空间异质性,而通常的统计学方法并不能处理空间异质性,因而对此类型的数据无能为力。以地理加权回归为基础的一系列方法:经典地理加权回归,…...

kafka入门(二)

Java客户端访问Kafka 引入maven依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka‐clients</artifactId> <version>2.4.1</version> </dependency> 消息发送端代码 package com.tuling.kafka.ka…...

学习日记-day11-5.20

完成目标&#xff1a; comment.java package com.zcr.pojo; import org.hibernate.annotations.GenericGenerator;import javax.persistence.*; //JPA操作表中数据&#xff0c;可以将对应的实体类映射到一张表上Entity(name "t_comment")//表示当前的实体类与哪张表…...

手淘不易被清洗销量的4个成交入口

在淘宝运营中&#xff0c;销量是店铺权重的重要指标之一&#xff0c;但平台对虚假交易的打击力度越来越大&#xff0c;许多商家因销量被清洗而损失惨重。那么&#xff0c;通过什么样的手淘成交入口稳定不易清洗呢&#xff1f;经过实测&#xff0c;我们总结了以下手淘4个不易被清…...

【Linux】Linux 多线程

目录 1. Linux线程概念2. 重谈进程地址空间---页表2.1 如何由虚拟地址转化为物理地址的 3. pthread库调用接口3.1 线程的创建---pthread_create3.2 线程等待---pthread_join3.3 线程的退出3.4 分离线程 4. 线程库5. 线程ID6. Linux线程互斥6.1 锁6.2 锁的接口6.2.1 互斥量的初始…...

DAY31

知识点回顾 规范的文件命名规范的文件夹管理机器学习项目的拆分编码格式和类型注解 作业&#xff1a;尝试针对之前的心脏病项目&#xff0c;准备拆分的项目文件&#xff0c;思考下哪些部分可以未来复用。 浙大疏锦行...

大模型应用开发“扫盲”——基于市场某款智能问数产品的技术架构进行解析与学习

本文将从一款问数产品相关技术架构&#xff0c;针对大模型应用开发中的基础知识进行“扫盲”式科普&#xff0c;文章比较适合新手小白&#xff0c;属于是我的学习笔记整理&#xff0c;大佬可以划走啦~产品关键信息已经进行模糊处理&#xff0c;如有侵权请联系删除。 文章目录 前…...

List优雅分组

一、前言 最近小永哥发现&#xff0c;在开发过程中&#xff0c;经常会遇到需要对list进行分组&#xff0c;就是假如有一个RecordTest对象集合&#xff0c;RecordTest对象都有一个type的属性&#xff0c;需要将这个集合按type属性进行分组&#xff0c;转换为一个以type为key&…...

打破建筑与制造数据壁垒:Revit 到 STP 格式转换全攻略(含插件应用 + 迪威模型实战)

引言 在建筑信息模型&#xff08;BIM&#xff09;与计算机辅助设计&#xff08;CAD&#xff09;领域&#xff0c;数据在不同软件和系统间的高效流转至关重要。Revit 作为 BIM 技术应用的主流软件&#xff0c;常用于建筑设计、施工和运维管理&#xff1b;而 STP&#xff08;STE…...

RISC-V 开发板 MUSE Pi Pro USB 测试(3.0 U盘,2.0 UVC摄像头)

视频讲解&#xff1a; RISC-V 开发板 MUSE Pi Pro USB 测试&#xff08;3.0 U盘&#xff0c;2.0 UVC摄像头&#xff09; 总共开发板有4个USB的A口&#xff0c;1个USB的TypeC口&#xff0c;我们插上两个USB3.0的U盘和一个USB2.0的UVC摄像头来进行测试 lsusb -tv 可以看到有3个US…...

驱动相关基础

一、驱动分类与区别 字符设备驱动 一个字节一个字节进行读写操作的设备&#xff0c;以字符流的形式进行数据传输&#xff08;如鼠标、键盘、串口&#xff09;。 块设备驱动 以块为单位进行读写操作的设备&#xff0c;块的大小通常为 512 字节、1024 字节。 块设备驱动主…...

【node.js】核心进阶

个人主页&#xff1a;Guiat 归属专栏&#xff1a;node.js 文章目录 1. Node.js高级异步编程1.1 Promise深入理解1.1.1 创建和使用Promise1.1.2 Promise组合模式 1.2 Async/Await高级模式1.2.1 基本使用1.2.2 并行执行1.2.3 顺序执行与错误处理 1.3 事件循环高级概念1.3.1 事件循…...

高频Java面试题深度拆解:String/StringBuilder/StringBuffer三剑客对决(万字长文预警)

文章目录 一、这道题的隐藏考点你Get到了吗&#xff1f;二、内存模型里的暗战&#xff08;图解警告&#xff09;2.1 String的不可变性之谜2.2 可变双雄的内存游戏 三、线程安全背后的修罗场3.1 StringBuffer的同步真相3.2 StringBuilder的裸奔哲学 四、性能对决&#xff1a;用数…...

量子计算的曙光:从理论奇点到 IT 世界的颠覆力量

在信息技术&#xff08;IT&#xff09;的飞速发展中&#xff0c;一项前沿技术正以耀眼的光芒照亮未来——量子计算&#xff08;Quantum Computing&#xff09;。2025 年&#xff0c;随着量子硬件的突破、算法的优化以及企业对超算能力的渴求&#xff0c;量子计算从科幻梦想逐步…...

c++使用protocol buffers

在 C 里使用 Protocol Buffer&#xff0c;要先定义消息结构&#xff0c;接着生成 C 代码&#xff0c;最后在程序里使用这些生成的代码。 定义消息结构 首先要创建一个.proto文件&#xff0c;在其中定义消息类型和字段。 // person.proto syntax "proto3"; // 指…...

AI驱动发展——高能受邀参加华为2025广东新质生产力创新峰会

当AI浪潮席卷全球产业版图&#xff0c;一场以"智变"驱动"质变"的变革正在发生。5月15日&#xff0c;华为中国行2025广东新质生产力创新峰会璀璨启幕&#xff0c;作为华为生态战略合作伙伴&#xff0c;高能计算机与行业领军者同台论道&#xff0c;共同解码A…...

怎样解决photoshop闪退问题

检查系统资源&#xff1a;在启动 Photoshop 之前&#xff0c;打开任务管理器检查 CPU 和内存的使用情况。如果发现资源占用过高&#xff0c;尝试关闭不必要的程序或重启计算机以释放资源。更新 Photoshop 版本&#xff1a;确保 Photoshop 是最新版本。Adobe 经常发布更新以修复…...

AWS CodePipeline+ Elastic Beanstalk(AWS中国云CI/CD)

问题 最近需要利用AWS云上面的CI/CD部署Spring应用。 一图胜千言 步骤 打开CodePipeline网页&#xff0c;开始管道创建&#xff0c;如下图&#xff1a; 管道设置&#xff0c;如下图&#xff1a; 这里主要设置管道名称&#xff0c;至于服务角色&#xff0c;直接让codepipel…...

人工智能核心知识:AI Agent 的四种关键设计模式

人工智能核心知识&#xff1a;AI Agent 的四种关键设计模式 一、引言 在人工智能领域&#xff0c;AI Agent&#xff08;人工智能代理&#xff09;是实现智能行为和决策的核心实体。它能够感知环境、做出决策并采取行动以完成特定任务。为了设计高效、灵活且适应性强的 AI Age…...

Electron+vite+vue3 从0到1搭建项目,开发Win、Mac客户端

随着前端技术的发展&#xff0c;出现了所谓的大前端。 大前端则是指基于前端技术延伸出来的各种终端平台及应用场景&#xff0c;包括APP、桌面端、手表终端、服务端等。 本篇文章主要是和大家一起学习一下使用Electron 如何打包出 Windows 和 Mac 所使用的客户端APP&#xff…...

GitLab部署

学git Git最新最新详细教程、安装&#xff08;从入门到精通&#xff01;&#xff01;&#xff01;&#xff01;企业级实战&#xff01;&#xff01;&#xff01;工作必备&#xff01;&#xff01;&#xff01;结合IDEA、Github、Gitee实战&#xff01;&#xff01;&#xff01…...

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析技术

在自然和社会科学领域&#xff0c;存在大量与地理或空间相关的数据&#xff0c;这些数据通常具有显著的空间异质性。传统的统计学方法在处理这类数据时往往力不从心。基于R语言的一系列空间异质性数据分析方法&#xff0c;如地理加权回归&#xff08;GWR&#xff09;、地理加权…...

指针深入理解(二)

volatile关键字 防止优化指向内存地址&#xff0c; typedef 指针可以指向C语言所有资源 typedef 就是起一个外号。 指针运算符加减标签操作 指针加的是地址&#xff0c;并且增加的是该指针类型的一个单位&#xff0c;指针变量的步长可以用sizeof(p[0]) 这两个的p1是不一样…...

django回忆录(Python的一些基本概念, pycharm和Anaconda的配置, 以及配合MySQL实现基础功能, 适合初学者了解)

django 说实在的, 如果是有些Python基础或者编程基础, 使用django开发本地网站的速度还是很快的, 特别是配合ai进行使用. 本人使用该框架作业的一个主要原因就是因为要做数据库大作业, 哥们想速通, 结果由于我一开始没有接触过这些方面的知识, 其实也不算快, 而且现在我也没有…...

leetcode hot100刷题日记——5.无重复字符的最长字串

解答&#xff1a;滑动窗口思想&#xff08;见官方题解&#xff09; //方法1 class Solution { public:int lengthOfLongestSubstring(string s) {//哈希表记录是否有重复字符unordered_set<char>c;int maxlength0;int ns.size();//右指针初始化为-1&#xff0c;可以假设…...

一文讲清python、anaconda的安装以及pycharm创建工程

软件下载 Pycharm下载地址&#xff1a; https://download-cdn.jetbrains.com.cn/python/pycharm-community-2024.1.1.exe?_gl1*1xfh3l8*_gcl_au*MTg1NjU2NjA0OC4xNzQ3MTg3Mzg1*FPAU*MTg1NjU2NjA0OC4xNzQ3MTg3Mzg1*_ga*MTA2NzE5ODc1NS4xNzI1MzM0Mjc2*_ga_9J976DJZ68*czE3NDczMD…...

[每日一题] 3355. 零数组变换 i

文章目录 1. 题目链接2. 题目描述3. 题目示例4. 解题思路5. 题解代码6. 复杂度分析 1. 题目链接 3355. 零数组变换 I - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 给定一个长度为 n 的整数数组 nums 和一个二维数组 queries&#xff0c;其中 queries[i] [li, ri]。…...

【笔记】与PyCharm官方沟通解决开发环境问题

#工作记录 2025年5月20日 星期二 背景 在此前的笔记中&#xff0c;我们提到了向PyCharm官方反馈了几个关于Conda环境自动激活、远程解释器在社区版中的同步问题以及Shell脚本执行时遇到的问题。这些问题对日常开发流程产生了一定影响&#xff0c;因此决定联系官方支持寻求解…...

mariadb-cenots8安装

更新系统&#xff1a;安装完成 CentOS 8 后&#xff0c;连接到互联网&#xff0c;打开终端并运行以下命令来更新系统&#xff0c;以获取最新的软件包和安全补丁。 bash sudo yum update -y安装 MariaDB&#xff1a;运行以下命令来安装 MariaDB。 bash sudo yum install mariadb…...

Python实现VTK - 自学笔记(4):用Widgets实现三维交互控制

核心知识点 ​​交互器样式(vtkInteractorStyle)​​:自定义鼠标/键盘交互逻辑​​三维控件(3D Widgets)​​:使用预制控件实现复杂交互​​回调机制​​:实现动态数据更新​​参数化控制​​:通过控件调整算法参数import vtk# 1. 创建圆锥体数据源 cone = vtk.vtkConeSour…...

在tp6模版中加减法

实际项目中&#xff0c;我们经常需要标签变量加减运算的操作。但是&#xff0c;在ThinkPHP中&#xff0c;并不支持模板变量直接运算的操作。幸运的是&#xff0c;它提供了自定义函数的方法&#xff0c;我们可以利用自定义函数解决&#xff1a;ThinkPHP模板自定义函数语法如下&a…...

Linux:库与链接

库是预先编译好、可执⾏的⼆进制码&#xff0c;可以被操作系统加载到内存中执⾏。 库有两种&#xff1a; 静态库&#xff1a;.a(Linux)、.lib(Windows) 动态库&#xff1a;.so(Linux)、.dil(Windows) 静态库 1.程序在链接时把库的代码链接到可执⾏⽂件中&#xff0c;运⾏时…...

T008-网络管理常用命令:ping,ipconfig,nslookup,route,netstat

ipconfig&#xff1a;网络诊断命令&#xff0c;显示 IP 地址、掩码、网关信息&#xff0c;清除/显示 DNS 缓存信息&#xff1b; route&#xff1a;主要用于管理路由表&#xff0c;确定数据包如何从源主机通过网络到达目的主机 nslookup&#xff1a;用于查询域名到IP地址&…...

Qt文件:XML文件

XML文件 1. XML文件结构1.1 基本结构1.2 XML 格式规则1.3 XML vs HTML 2. XML文件操作2.1 DOM 方式&#xff08;QDomDocument&#xff09;读取 XML写入XML 2.2 SAX 方式&#xff08;QXmlStreamReader/QXmlStreamWriter&#xff09;读取XML写入XML 2.3 对比分析 3. 使用场景3.1 …...

MySQL 8.0 OCP 英文题库解析(六)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题41~50 试题4…...

微软开放代理网络愿景

&#x1f310; Microsoft的开放式智能代理网络愿景 2025年05月20日 | AI日报 ![](https://i-blog.csdnimg.cn/direct/e7838b88f17f40c9a435f6dc48d26c59.jpeg#pic_center) 欢迎各位人工智能爱好者 微软刚刚在Build 2025大会上开启了备受期待的AI周活动&#xff0c;通过发布大…...

阿尔泰科技助力电厂——520为爱发电!

当城市的霓虹在暮色中亮起&#xff0c;当千万个家庭在温暖中共享天伦&#xff0c;总有一群默默的 "光明守护者" 在幕后坚守 —— 它们是为城市输送能量的电厂&#xff0c;更是以科技赋能电力行业的阿尔泰科技。值此 520 爱意满满的日子&#xff0c;阿尔泰科技用硬核技…...

微软账户无密码化的取证影响

五月初&#xff0c;微软正式宣布&#xff0c;新创建的微软账户现在将默认为无密码&#xff0c;以实现“更简单、更安全的登录”。这一变化延续了Windows 11所设定的方向&#xff0c;即逐步淘汰传统密码&#xff0c;转而采用更安全、更方便用户的身份验证方法&#xff0c;如PIN码…...

idea部署本地仓库和连接放送远程仓库

1.下载git&#xff0c;安装好后任意地方又键会出现两个带git的东西 2.点击bash here的那个&#xff0c;召唤出git的小黑窗&#xff0c;输入 git config --global user.name "你自己取名" git config --global user.email "你自己输入你的邮箱" 3.打开id…...

4大AI智能体平台,你更适合哪一个呐?

好记忆不如烂笔头&#xff0c;能记下点东西&#xff0c;就记下点&#xff0c;有时间拿出来看看&#xff0c;也会发觉不一样的感受. AI的火热程度&#xff0c;应该说是今年IT行业内最热的话题了&#xff0c;以下是根据我对各个智能体平台的了解和熟悉&#xff0c;按照 平台特点、…...

Pandas:Series和DataFrame的概念、常用属性和方法

本文目录&#xff1a; 一、Series和Dataframe的概念二、创建Series对象三、创建Dataframe对象&#xff08;一&#xff09;Series1.Series的常用属性总结如下&#xff1a;2.Series的常用方法总结如下&#xff1a; &#xff08;二&#xff09;Dataframe1.Dataframe的常用属性2.Da…...

Index-AniSora论文速读:探索Sora时代动画视频生成的前沿

AniSora: Exploring the Frontiers of Animation Video Generation in the Sora Era 一、引言 论文开篇指出动画产业近年来的显著增长&#xff0c;动画内容的需求不断攀升&#xff0c;但传统动画制作流程存在劳动密集和耗时的问题&#xff0c;如故事板创建、关键帧生成和中间…...

扫盲笔记之NPM

简介 npm&#xff0c;全名 node package manger。 NPM&#xff08;Node Package Manager&#xff09;是一个 JavaScript 包管理工具&#xff0c;也是 Node.js 的默认包管理器。 NPM 允许开发者轻松地下载、安装、共享、管理项目的依赖库和工具。网址&#xff1a;https://www…...

【Go-2】基本语法与数据类型

基本语法与数据类型 Go语言作为一种静态类型、编译型语言&#xff0c;拥有简洁且高效的语法结构。本章将深入介绍Go的基本语法和数据类型&#xff0c;帮助你建立扎实的编程基础。 2.1 第一个 Go 程序 编写第一个Go程序是学习任何编程语言的传统步骤。通过一个简单的“Hello,…...

Varlet UI-Material Design风格Vue 3框架移动端组件库

#Varlet UI是什么 在现代Web开发中&#xff0c;Vue 3以其强大的组件系统特性&#xff0c;成为了构建可复用、模块化应用界面的首选框架。而在Vue 3的生态系统中&#xff0c;Varlet UI开源组件库以其高效、一致和可维护的设计&#xff0c;为开发者提供了丰富的工具和资源。本文将…...