invest线性单位投影问题:提示数据集必须以线性单位投影...如何解决?
🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。
📌特别说明:
文中问题案例来源于真实生产环境与公开技术社区,并结合多位一线资深工程师与架构师的长期实践经验,经过人工筛选与AI系统化智能整理后输出。文中的解决方案并非唯一“标准答案”,而是兼顾可行性、可复现性与思路启发性的实践参考,供你在实际项目中灵活运用与演进。
欢迎订阅本专栏,一次订阅后,专栏内所有文章可永久免费阅读,后续更新内容皆不用再次订阅,持续更新中。
📢 问题描述
详细问题描述如下:invest线性单位投影问题
在invest中所有数据都显示没有线性单位投影:但是我用的就是投影坐标系,只是这个投影坐标系是我用自定义投影坐标系转换的,从WGS1984转到CGCS2000,但是确实是投影坐标系啊。如何解决这个问题?
全文目录:
- 📢 问题描述
- 📣 请知悉:如下方案不保证一定适配你的问题!
- ✅️问题理解
- 第一类:投影信息是“自定义的”,但 InVEST/GDAL 不认
- 第二类:你可能做的是“定义投影(Define Projection)”,不是“真正重投影(Project / Project Raster)”
- 第三类:GeoTIFF / Shapefile 的坐标系元数据没有被标准写入
- 第四类:不是只有投影问题,你还有一个独立的 CSV 字段问题
- ✅️问题解决方案
- 🟢方案 A:最稳妥、最推荐的方案 —— 全部数据重新投影到“标准 EPSG 投影坐标系”,并重新导出
- 一、你应该怎么选目标坐标系?
- 二、所有空间数据都要统一处理
- 三、ArcGIS 中的推荐操作步骤
- 1)矢量数据:使用 `Project`
- 2)栅格数据:使用 `Project Raster`
- 3)重新输出成全新的文件
- 四、QGIS 中的推荐操作步骤
- 栅格
- 矢量
- 五、为什么这个方案最有效?
- 🟡方案 B:确认数据其实已经是米制投影,只是 CRS 元数据写得不标准 —— 重新“嵌入标准 CRS 元数据”
- 一、先判断“坐标值是否已经真的投影了”
- 二、可用方法
- 方法 1:用 QGIS 重新另存为
- 方法 2:用 GDAL 明确写入标准 SRS
- 三、这个方案的风险
- 🔵方案 C:用命令行 / GDAL 做一次彻底、可审计的标准化预处理
- 一、先检查每个输入文件
- 二、重投影命令示意
- 栅格
- 矢量
- 三、再做对齐处理
- 四、推荐的标准化流程图
- 🟣方案 D:单独解决 `lucode` 报错 —— 这是另一个必须同时修复的问题
- 一、`lucode` 是什么?
- 二、你现在的错误说明什么?
- 三、正确做法
- 四、建议你顺手做一次值域核对
- 🔴方案 E:排查 ArcGIS “看得到投影、文件却不标准”的典型陷阱
- 1. 不要只看 ArcGIS 的图层属性
- 2. 不要只做 Define Projection
- 3. 不要混用多个看起来“差不多”的坐标系
- 4. 不要忽略栅格对齐
- 5. 路径和文件命名尽量简单
- ✅️问题延伸
- “软件里显示正确” ≠ “底层空间元数据标准合规”
- 1. ArcGIS 视角 vs InVEST 视角
- 2. 自定义投影坐标系在建模软件里天然风险更高
- 3. 分类栅格和连续栅格的处理原则不一样
- 4. InVEST 对输入“规整性”的要求,通常比普通 GIS 显示更严
- ✅️问题预测
- 预测 1:栅格未对齐
- 预测 2:土地利用值和 CSV 不匹配
- 预测 3:NoData 值设置混乱
- 预测 4:连续变量单位不统一
- 预测 5:坐标系统一了,但 datum transformation 选错
- 预测 6:CSV 编码或表头隐含字符问题
- ✅️小结
- 🌹 结语 & 互动说明
- 🧧 文末福利:技术成长加速包 🧧
- 🫵 Who am I?
📣 请知悉:如下方案不保证一定适配你的问题!
如下是针对上述问题进行专业角度剖析答疑,不喜勿喷,仅供参考:
✅️问题理解
你这个问题,本质上不是“数据到底是不是投影坐标系”,而是:
InVEST 没有把你的数据识别成“可用的、标准的、带线性单位的投影坐标系”。
从你给的截图看,有几个非常关键的信息:
ArcGIS 图层属性里已经显示:
XY 坐标系:CGCS2000_3_Degree_GK_Zone_35线性单位:MeterCentral_Meridian = 105False_Easting = 35500000
这说明从 ArcGIS 的视角看,这个栅格确实已经是投影坐标系,而且单位也是米。
也就是说,“数学意义上没投影”这个判断大概率不成立。
但是 InVEST 仍然提示:
数据集必须以线性单位投影。
这类情况在 GIS 工作流里非常典型,通常不是因为数据没投影,而是因为下面几类原因之一:
第一类:投影信息是“自定义的”,但 InVEST/GDAL 不认
很多时候,ArcGIS 能显示自定义坐标系,是因为它会读取:
- 图层内部坐标信息;
.aux.xml辅助文件;- ESRI 风格 WKT;
- 工程里定义的坐标系缓存。
但InVEST 底层依赖的是 GDAL / pygeoprocessing / PROJ 这一套识别链条。
它认的是标准、可解析、最好带 EPSG 标识的投影定义。
所以会出现一个经典现象:
- ArcGIS 里看着“有投影”
- InVEST 里却说“没有线性单位投影”
这不是你看错了,而是两个软件对 CRS 元数据的识别标准不完全一样。
第二类:你可能做的是“定义投影(Define Projection)”,不是“真正重投影(Project / Project Raster)”
虽然你说你“转换了”,但这里必须严谨地区分两件事:
Define Projection / 定义投影
只是给数据“贴标签”,告诉软件“这是什么坐标系”;
不会改变坐标值本身。Project / Project Raster / 重投影
才会真的把坐标从 WGS84 经纬度转换成 CGCS2000 高斯投影坐标。
你这张图里坐标值已经是 3553xxxx、2950xxx 这种米制坐标,看起来像是真做过投影,所以我判断你大概率不是只做了 Define Projection。
但仍然建议复核处理链,避免有些图层只是被“赋坐标”,并未真正变换。
第三类:GeoTIFF / Shapefile 的坐标系元数据没有被标准写入
尤其是你提到“自定义投影坐标系转换”,这很像一种情况:
- ArcGIS 在工程内能识别;
- 但输出到
.tif/.shp后,写入的是 ESRI 风格的自定义 WKT; - 或者部分信息写在
.aux.xml、.prj、旁侧文件里; - InVEST 读取时没有正确识别成一个标准投影 CRS。
换句话说:数据“看起来有投影”,但文件里的 CRS 元数据“不够标准”。
第四类:不是只有投影问题,你还有一个独立的 CSV 字段问题
你的截图底部还有一条错误:
期待 column "lucode",但没有找到
这个错误和投影问题不是一回事。
它说明 InVEST 在读取你的生物物理参数表(或转换表)时,要求有一列名字叫:
lucode但你当前的 CSV 文件里没有这个字段,或者字段名拼错了,或者有空格、大小写、编码问题。
所以你现在实际遇到的是两个并行问题:
- 问题 A:空间数据 CRS 不被 InVEST 识别
- 问题 B:CSV 缺少
lucode字段
这两个都要解决,模型才会过校验。🙂
✅️问题解决方案
🟢方案 A:最稳妥、最推荐的方案 —— 全部数据重新投影到“标准 EPSG 投影坐标系”,并重新导出
这是我最推荐的方案,成功率最高,也最符合 InVEST 的预期。
核心原则就一句话:
不要再用“自定义投影坐标系”的输出结果直接跑 InVEST。
请把所有输入统一转换到一个官方、标准、可被 GDAL/PROJ 直接识别的投影坐标系。
一、你应该怎么选目标坐标系?
你已经用了:
CGCS2000_3_Degree_GK_Zone_35- 中央经线
105
这本身没问题。
问题不在“这个投影不对”,而在“它是不是一个标准可识别的 CRS 定义”。
所以建议:
- 在 ArcGIS / QGIS 的坐标系数据库里,直接搜索官方的 CGCS2000 3 度带高斯投影坐标系;
- 选择系统自带、带 EPSG 标识的那个;
- 不要使用你自己新建的“Custom / 自定义坐标系定义”。
也就是说:
- 保留 CGCS2000 高斯投影这个思路
- 放弃自定义坐标系描述
- 改用官方 CRS 库里的标准条目
二、所有空间数据都要统一处理
你截图里至少涉及这些输入:
pre\2000\2000.tifPET\2000\2000.tifdepth\yjqy.tifyxhsl\hsl.tiftd_yjqy\2000\td_2000.tif
这些都必须满足:
- 同一投影坐标系
- 线性单位是米
- 最好都使用标准 EPSG 定义
- 栅格像元大小一致
- 范围尽量一致
- NoData 设置清晰
- 分类栅格与连续栅格采用正确重采样方式
三、ArcGIS 中的推荐操作步骤
1)矢量数据:使用Project
对于 AOI、流域边界、行政边界等矢量:
- 打开 ArcToolbox
Data Management ToolsProjections and TransformationsFeatureProject
重点:
Input Coordinate System确保原始坐标系正确Output Coordinate System选择官方标准 CGCS2000 投影 CRS- 不要手动写自定义参数
2)栅格数据:使用Project Raster
对所有.tif:
- ArcToolbox
Data Management ToolsProjections and TransformationsRasterProject Raster
关键参数建议:
输出坐标系:统一为标准官方 CRS
重采样方法:
- 土地利用/土地覆盖(分类栅格):
Nearest - 降雨、PET、土壤深度、可利用含水量等连续变量:
Bilinear或Cubic
- 土地利用/土地覆盖(分类栅格):
输出像元大小:统一指定
地理变换:如果软件提示需要 datum transformation,再按原始数据坐标系设置
3)重新输出成全新的文件
不要覆盖原文件。
建议输出到一个全新的目录,比如:
E:\bijie\invest\SYHY\prepared\文件命名可以这样:
precip_2000_proj.tif pet_2000_proj.tif depth_proj.tif pawc_proj.tif lulc_2000_proj.tif watershed_proj.shp这样做的好处是:
- 你能清楚区分“原始数据”和“InVEST 专用预处理数据”
- 排错时非常方便
- 不会被 ArcGIS 工程缓存误导
四、QGIS 中的推荐操作步骤
如果你用 QGIS,建议:
栅格
- 右键栅格图层
导出另存为...- CRS 直接选择官方标准 CRS
- 输出新 tif
矢量
- 右键图层
导出另存为...- CRS 选择同一个目标坐标系
注意:不要只在工程里“设置图层 CRS”或者“设置项目 CRS”。
那只是显示层面的事,不等于文件真的被重投影了。
五、为什么这个方案最有效?
因为它绕开了所有“自定义投影”可能引发的兼容性问题:
- ESRI 自定义 WKT 被 InVEST/GDAL 识别失败
.aux.xml被 ArcGIS 认、InVEST 不认.prj不规范- CRS 缺少 AUTHORITY/EPSG 标识
- WKT1/WKT2 风格兼容性问题
你直接把所有数据“洗”成标准 CRS,问题通常就消失了。
🟡方案 B:确认数据其实已经是米制投影,只是 CRS 元数据写得不标准 —— 重新“嵌入标准 CRS 元数据”
这个方案适合下面这种情况:
- 你的坐标值已经明显是投影米坐标;
- 空间位置也正确;
- 只是 InVEST 不认 CRS;
- 你不想再做一次完整重采样。
这时可以做“重写 CRS 元数据”。
但注意:
这个方案只适用于“坐标已经正确,只是元数据不规范”的情况。
如果你实际还没真正投影,这样做会把数据搞错。⚠️
一、先判断“坐标值是否已经真的投影了”
你当前截图显示:
- X 大约 35534025
- Y 大约 2950668
- False Easting 35500000
这很像高斯投影坐标,说明坐标本体很可能没问题。
也就是说,你的数据“几何位置”大概率已经是投影坐标,只是“文件声明”不够标准。
二、可用方法
方法 1:用 QGIS 重新另存为
这是最安全的“轻量重写元数据”方式。
- 加载栅格
- 右键
导出 -> 另存为- CRS 选择官方标准 CRS
- 重新保存成新 tif
这往往会比 ArcGIS 的某些工程缓存更“干净”。
方法 2:用 GDAL 明确写入标准 SRS
可以先检查:
gdalinfo E:\bijie\invest\SYHY\pre\2000\2000.tif重点看:
Coordinate System is:- 是否显示为标准
PROJCS/PROJCRS - 是否能明确看到 meter unit
- 是否有标准 authority 信息
如果坐标已经对,只是元数据需要修正,可以使用:
gdal_edit.py-a_srsEPSG:xxxx input.tif或者:
gdal_translate-a_srsEPSG:xxxx input.tif output.tif这里的EPSG:xxxx要换成你那个官方标准 CGCS2000 3 度带投影的正确 EPSG 代码。
三、这个方案的风险
这个方案不是不能用,而是前提必须严谨确认:
- 数据坐标值已经是目标投影坐标
- 不是经纬度
- 不是“只是被定义成了投影”
否则你会出现一种最危险的错误:
看起来投影对了,实际上空间位置全错。
所以如果你不能 100% 确认,还是回到方案 A,重新真正做一次标准投影最稳。
🔵方案 C:用命令行 / GDAL 做一次彻底、可审计的标准化预处理
这个方案最适合你想把流程做得可复现、可批处理、可长期稳定复用。
一、先检查每个输入文件
对每个栅格执行:
gdalinfo your_file.tif对矢量执行:
ogrinfo your_vector.shp-so-al你要重点确认:
- 是否有
Coordinate System is - 是否是投影坐标系而不是 Geographic
- 单位是否是 meter
- 像元大小是否也是米级
- 是否所有输入都一致
二、重投影命令示意
栅格
gdalwarp-t_srsEPSG:xxxx-rbilinear input.tif output_proj.tif对于分类栅格(如土地利用):
gdalwarp-t_srsEPSG:xxxx-rnear input_lulc.tif output_lulc_proj.tif矢量
ogr2ogr-t_srsEPSG:xxxx output_proj.shp input.shp三、再做对齐处理
InVEST 很多模型虽然提示先卡在“投影”,但投影过了以后,马上还会遇到:
- 栅格像元大小不一致
- 范围不一致
- 对齐不一致
- NoData 不一致
所以建议你把所有栅格再统一一次:
- 同 CRS
- 同分辨率
- 同范围
- 同像元对齐
这一步可以用:
- ArcGIS 的
Resample+Snap Raster - QGIS 的 Warp/Reproject
- 或者 GDAL 的
gdalwarp
四、推荐的标准化流程图
🟣方案 D:单独解决lucode报错 —— 这是另一个必须同时修复的问题
这个问题和投影无关,但你不修它,InVEST 一样跑不过去。
一、lucode是什么?
lucode一般表示:
土地利用/土地覆盖栅格中的分类编码
例如你的土地利用栅格里像元值可能有:
- 1 = 耕地
- 2 = 林地
- 3 = 草地
- 4 = 水域
- 5 = 建设用地
那么 CSV 里必须有一列:
lucode,root_depth,kc,.... 1,.... 2,.... 3,....InVEST 会拿土地利用栅格的像元值,去 CSV 里按lucode匹配属性参数。
二、你现在的错误说明什么?
说明当前swwlb.csv里:
没有
lucode这一列;或者列名写成了别的,比如:
LUCODElu_codecode土地利用编码lucode(尾部空格)
或者 CSV 有 BOM / 编码异常 / 分隔符不对
或者表头第一行没被正确识别
三、正确做法
打开 CSV,第一行表头明确写成:
lucode,...例如:
lucode,description,root_depth,kc 1,cropland,1000,0.7 2,forest,3000,0.9 3,grassland,1500,0.6 4,water,0,1.0 5,builtup,0,0.2注意几点:
- 列名必须是
lucode - 最好全英文
- 不要有全角空格
- 不要有隐藏空格
- 分隔符最好是英文逗号
- 编码尽量用 UTF-8 或 ANSI,别搞复杂格式
- 土地利用栅格的值必须能在
lucode列里全部找到对应记录
四、建议你顺手做一次值域核对
比如用栅格唯一值统计,看土地利用栅格中有哪些值:
1, 2, 3, 4, 5, 6, 7那 CSV 里lucode就必须把这些值都覆盖。
少一个都可能在运行时继续报错。
🔴方案 E:排查 ArcGIS “看得到投影、文件却不标准”的典型陷阱
这个方案是“排雷清单”,非常重要。
1. 不要只看 ArcGIS 的图层属性
ArcGIS 能显示,不代表 InVEST 能识别。
ArcGIS 很可能读取了:
.aux.xml- 工程缓存
- ESRI 自定义 WKT
而 InVEST 并不一定吃这一套。
2. 不要只做 Define Projection
如果原始数据是 WGS84 经纬度栅格,而你只是“定义成了 CGCS2000 GK 投影”,那文件会变成:
- 名字上是投影
- 实际坐标值还是经纬度
这种数据在很多模型里会直接出严重问题。
3. 不要混用多个看起来“差不多”的坐标系
例如:
- 一部分是 WGS84 UTM
- 一部分是 CGCS2000 GK
- 一部分是西安80 GK
- 一部分是北京54
- 一部分是自定义本地投影
哪怕都“单位是米”,也不等于可以混用。
InVEST 最稳妥的要求是:
全部输入统一到同一个标准投影坐标系。
4. 不要忽略栅格对齐
InVEST 很多模型对齐要求很高。
就算投影过了,后面也很容易因为:
- cell size 不一致
- origin 不一致
- extent 不一致
导致结果异常或者隐性偏移。
5. 路径和文件命名尽量简单
虽然你当前路径大多是英文,但建议继续保持:
- 全英文目录
- 无空格
- 无中文
- 无特殊符号
例如:
E:\invest_data\prepared\这是工程化上的好习惯,能少掉很多莫名其妙的兼容问题。
✅️问题延伸
这个问题背后,其实反映的是一个非常重要的 GIS / 空间建模原则:
“软件里显示正确” ≠ “底层空间元数据标准合规”
这句话在 InVEST、GDAL、R、Python、PostGIS、GeoServer 等生态里都非常重要。
1. ArcGIS 视角 vs InVEST 视角
ArcGIS 更偏“桌面 GIS 显示和工程工作流”;
InVEST 更偏“程序化空间计算”。
因此它们关注点不同:
- ArcGIS:能显示、能叠加、看起来对
- InVEST:能不能被底层库严格解析成标准投影 CRS
所以你现在遇到的问题,实际上是:
桌面 GIS 语义正确,但程序计算语义不够标准。
2. 自定义投影坐标系在建模软件里天然风险更高
自定义 CRS 在制图、单机分析里未必有问题;
但在跨软件建模里风险很高,典型风险包括:
- 识别失败
- 单位识别失败
- datum transformation 不一致
- EPSG 缺失
- 坐标轴顺序歧义
- WKT 兼容性问题
所以做 InVEST、SWAT、HEC-HMS、RUSLE、Google Earth Engine 下游对接时,最好都用官方标准 CRS。
3. 分类栅格和连续栅格的处理原则不一样
这个也很容易被忽略:
- 土地利用分类栅格:重采样必须用
Nearest - 降雨、PET、深度、含水量等连续数据:一般用
Bilinear或Cubic
如果分类栅格误用了双线性插值,类别编码会被插坏,lucode匹配也会出问题。
4. InVEST 对输入“规整性”的要求,通常比普通 GIS 显示更严
InVEST 不只是要你“能打开”,而是希望你的输入是:
- 坐标系标准
- 单位明确
- 表字段规范
- 栅格对齐统一
- 值域合理
- NoData 清晰
所以你的这个报错,其实不是偶发 bug,更像是它在提醒你:
输入数据预处理链还不够标准化。
✅️问题预测
按你当前情况,我预计你即使把“线性单位投影”这一关过了,后面还很可能继续遇到下面这些问题。我提前帮你预判一下,避免你来回踩坑。🚧
预测 1:栅格未对齐
常见报错或隐性问题:
- 结果偏移
- 重采样异常
- 掩膜后错位
- 输出结果块状异常
建议:
- 统一一个基准栅格
- 其他全部向它对齐
- 保持同像元大小、同原点、同 CRS
预测 2:土地利用值和 CSV 不匹配
比如 LULC 栅格里有值:
11, 12, 21, 22, 31但 CSV 里写的是:
1, 2, 3, 4, 5这种就会继续报错或结果异常。
建议:
- 做一次唯一值统计
- 与
lucode全量比对
预测 3:NoData 值设置混乱
例如:
- 一个栅格用
-9999 - 一个栅格没定义 NoData
- 一个栅格用
0 - 而
0又恰好是有效值
这在水文生态模型里很容易出错。
建议:
- 明确每个栅格的 NoData
- 确保 NoData 不与有效值冲突
预测 4:连续变量单位不统一
例如:
- 降雨:mm/年
- PET:mm/月
- 深度:cm
- 模型参数却按 mm 或 m 理解
这类问题往往不会报错,但结果会严重失真。
建议:
- 建一个输入数据字典
- 明确每个变量单位、时段、空间分辨率
预测 5:坐标系统一了,但 datum transformation 选错
如果你的源数据来自不同基准面,比如:
- WGS84
- CGCS2000
- 西安80
即使目标都统一投影了,投影转换参数选错,也会出现几米到几十米误差。
建议:
- 统一检查原始 CRS 是否真的一致
- 投影转换时显式确认地理变换
预测 6:CSV 编码或表头隐含字符问题
这类问题非常隐蔽:
- 表头看着是
lucode - 实际是
\ufefflucode - 或者
lucode尾部带空格
建议:
- 用文本编辑器看原始 CSV
- 重新另存为标准 CSV
- 表头全部手打一遍最稳
✅️小结
你这个问题,我给你一个最直接的结论:
从你贴的图层属性看,数据大概率已经是“真正的投影坐标系”,并且单位也是米。
但 InVEST 报错的核心原因,极大概率是:它不认可你这个“自定义投影 CRS 的文件元数据表达方式”。
所以最靠谱的处理路径不是反复争论“我明明投影了”,而是直接按建模软件的规则来:
- 把所有空间输入重新输出为官方标准、带 EPSG 标识的投影坐标系
- 不要再用自定义 CRS 结果直接跑 InVEST
- 所有栅格统一投影、分辨率、范围、对齐和 NoData
- 单独修复 CSV 中缺少
lucode字段的问题
我给你的优先级建议是:
- 第一优先级:执行方案 A
- 第二优先级:修复
lucode - 第三优先级:统一栅格对齐
你现在这个问题,最像下面这个结论:
不是“数据没投影”,而是“投影元数据对 InVEST 来说不够标准”。
这个判断很关键。你接下来不要在“ArcGIS 能显示投影”这件事上打转了,要转向:
让 GDAL/InVEST 能标准识别。
🌹 结语 & 互动说明
希望以上分析与解决思路,能为你当前的问题提供一些有效线索或直接可用的操作路径。
若你按文中步骤执行后仍未解决:
- 不必焦虑或抱怨,这很常见——复杂问题往往由多重因素叠加引起;
- 欢迎你将最新报错信息、关键代码片段、环境说明等补充到评论区;
- 我会在力所能及的范围内,结合大家的反馈一起帮你继续定位 👀
💡如果你有更优或更通用的解法:
- 非常欢迎在评论区分享你的实践经验或改进方案;
- 你的这份补充,可能正好帮到更多正在被类似问题困扰的同学;
- 正所谓「赠人玫瑰,手有余香」,也算是为技术社区持续注入正向循环
🧧 文末福利:技术成长加速包 🧧
文中部分问题来自本人项目实践,部分来自读者反馈与公开社区案例,也有少量经由全网社区与智能问答平台整理而来。
若你尝试后仍没完全解决问题,还请多一点理解、少一点苛责——技术问题本就复杂多变,没有任何人能给出对所有场景都 100% 套用的方案。
如果你已经找到更适合自己项目现场的做法,非常建议你沉淀成文档或教程,这不仅是对他人的帮助,更是对自己认知的再升级。
如果你还在持续查 Bug、找方案,可以顺便逛逛我专门整理的 Bug 专栏👉《全栈 Bug 调优(实战版)》👈️
这里收录的都是在真实场景中踩过的坑,希望能帮你少走弯路,节省更多宝贵时间。
✍️如果这篇文章对你有一点点帮助:
- 欢迎给 bug菌 来个一键三连:关注 + 点赞 + 收藏
- 你的支持,是我持续输出高质量实战内容的最大动力。
同时也欢迎关注我的硬核公众号 「猿圈奇妙屋」:
获取第一时间更新的技术干货、BAT 等互联网公司最新面试真题、4000G+ 技术 PDF 电子书、简历 / PPT 模板、技术文章 Markdown 模板等资料,通通免费领取。
你能想到的绝大部分学习资料,我都尽量帮你准备齐全,剩下的只需要你愿意迈出那一步来拿。
🫵 Who am I?
我是 bug菌:
- 热活跃于 CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等技术社区;
- CSDN 博客之星 Top30、华为云多年度十佳博主/卓越贡献者、掘金多年度人气作者 Top40;
- 掘金、InfoQ、51CTO 等平台签约及优质作者;
- 全网粉丝累计30w+。
更多高质量技术内容及成长资料,可查看这个合集入口 👉 点击查看 👈️
硬核技术公众号「猿圈奇妙屋」期待你的加入,一起进阶、一起打怪升级。
- End -
