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

GDAL C++ API 学习之路 (2) GDALRasterBand篇 代码示例 翻译 自学

GDALRasterBand  Class        <gdal_priv.h>

GDALRasterBand是GDAL中用于表示栅格数据集中一个波段的类。栅格数据集通常由多个波段组成,每个波段包含了特定的数据信息,例如高程、红、绿、蓝色等,

用于表示影像的不同特征。提供了许多功能来访问和操作波段的像素数据以及相关信息。它是GDAL C++ API中处理栅格数据的核心类之一,为栅格数据处理和分析提供了强大的功能和灵活性。

 

Public Functions

GetLockedBlockRef

GDALRasterBlock *GetLockedBlockRef(int nXBlockOff, int nYBlockOff, int bJustInitialize = FALSE)

获取指向内部缓存栅格块的指针

参数:

  • nXBlockOff -- 水平块偏移量,零表示最左边的块,1 表示下一个块,依此类推。

  • nYBlockOff -- 垂直块偏移量,零表示最上面的块,1 表示下一个块,依此类推。

  • bJustInitialize -- 如果为 TRUE,则将分配和初始化块,但实际上不会从源读取。当它只是完全设置并写回时,这很有用。

返回:  指向块对象的指针,或失败时为 NULL

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 定义要锁定的数据块的左上角坐标int blockXOff = 0;  // 数据块的起始列int blockYOff = 0;  // 数据块的起始行// 获取锁定的数据块的引用GDALRasterBlock* block = band->GetLockedBlockRef(blockXOff, blockYOff);

TryGetLockedBlockRef

GDALRasterBlock *TryGetLockedBlockRef(int nXBlockOff, int nYBlockYOff)

尝试获取块引用

参数:

  • nXBlockOff -- 水平块偏移量,零表示最左边的块,1 表示下一个块,依此类推。

  • nYBlockOff -- 垂直块偏移量,零表示最上面的块,1 表示下一个块,依此类推。

返回:  如果块不可用,则为 NULL,或锁定的块指针

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 定义要锁定的数据块的左上角坐标int blockXOff = 0;  // 数据块的起始列int blockYOff = 0;  // 数据块的起始行// 尝试获取锁定的数据块的引用GDALRasterBlock* block = band->TryGetLockedBlockRef(blockXOff, blockYOff);
  1. TryGetLockedBlockRef: 这个函数尝试获取指定位置的锁定数据块的引用,但不会阻塞其他线程或过程对数据块的访问。如果无法立即获取锁定的数据块引用,它将立即返回空指针(nullptr)。这样,其他线程或过程可以继续执行,而不需要等待数据块的可用性。这个函数适用于在多线程环境中使用,以避免等待和竞争条件。

  2. GetLockedBlockRef: 这个函数也是用于获取指定位置的锁定数据块的引用,但它是一个阻塞调用。如果无法立即获取锁定的数据块引用,它将等待数据块的可用性,并一直阻塞到数据块可用为止。这意味着其他线程或过程在获取锁定数据块引用之前会被阻塞。因此,这个函数应该在单线程环境或确保不会导致竞争条件的情况下使用。

总结而言,TryGetLockedBlockRef 是一个非阻塞函数,它会立即返回数据块引用(如果可用),而 GetLockedBlockRef 是一个阻塞函数,它会等待数据块的可用性。您应该根据具体的应用场景选择使用哪个函数。在多线程环境下,建议使用 TryGetLockedBlockRef 来避免阻塞其他线程。在单线程环境下,可以使用 GetLockedBlockRef

FlushBlock

CPLErr FlushBlock(int, int, int bWriteDirtyBlock = TRUE)

从块缓存中清除块

参数:

  • nXBlockOff -- 块 x 偏移量

  • nYBlockOff -- 块状偏移

  • bWriteDirtyBlock -- 如果块脏,是否应该写入磁盘。

返回:   CE_None,如果成功,否则为错误代码

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 定义要写入数据块的左上角坐标int blockXOff = 0;  // 数据块的起始列int blockYOff = 0;  // 数据块的起始行// 获取锁定的数据块的引用GDALRasterBlock* block = band->GetLockedBlockRef(blockXOff, blockYOff);if (block != nullptr){// 在此处处理锁定的数据块// 例如,可以修改数据块的像素值// 将修改后的数据块写入数据集CPLErr err = band->FlushBlock(blockXOff, blockYOff, TRUE);if (err != CE_None){std::cout << "Error writing raster block." << std::endl;}else{std::cout << "Data block written successfully." << std::endl;}// 释放数据块的引用band->DropLock(blockXOff, blockYOff);}

GetIndexColorTranslationTo

unsigned char *GetIndexColorTranslationTo(GDALRasterBand *poReferenceBand, unsigned char *pTranslationTable = nullptr, int *pApproxMatch = nullptr)

计算颜色表的转换表

参数:

  • poReferenceBand -- 栅格波段

  • pTranslationTable -- 一个已经分配的转换表(至少 256 个字节),或 NULL,让方法分配它

  • pApproxMatch -- 指向在匹配是近似时设置的标志的指针。可能为空。

返回:   如果两个波段是调色板索引并且它们不匹配,则为转换表,在其他情况下为 NULL。如果为 pTranslationTable 传递了 NULL,则必须使用 CPLFree 释放该表

    // 获取第一个波段和参考波段(假设参考波段索引为 2)GDALRasterBand* band = dataset->GetRasterBand(1);GDALRasterBand* referenceBand = dataset->GetRasterBand(2);// 获取当前波段的颜色索引到参考波段的颜色索引的转换表int colorTableSize = band->GetColorTable()->GetColorEntryCount(); // 获取颜色表的大小unsigned char* translationTable = new unsigned char[colorTableSize];int approxMatch;band->GetIndexColorTranslationTo(referenceBand, translationTable, &approxMatch);

FlushCache

virtual CPLErr FlushCache(bool bAtClosing = false)

刷新栅格数据缓存        此调用将恢复用于缓存此栅格波段的数据块的内存,并确保将新请求引用到基础驱动程序

参数:

bAtClosing -- 这是否从 GDALDataset 析构函数调用

返回:  CE_None成功

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 读取数据块或执行其他操作,导致波段的缓存被更新// 刷新波段的缓存,将缓存中的数据写入数据集CPLErr err = band->FlushCache();

GetCategoryNames

virtual char **GetCategoryNames()

获取此栅格的类别名称列表

返回:  名称列表,如果没有,则为 NULL

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 获取波段的分类名称char** categoryNames = band->GetCategoryNames();

GetNoDataValue

virtual double GetNoDataValue(int *pbSuccess = nullptr)

获取此波段的无数据值

参数:

pbSuccess -- 指向布尔值的指针,用于指示值是否实际与此层相关联。可能为 NULL(默认值)。

返回:  此波段的无数据值

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 获取波段的无数据值int pbSuccess;double noDataValue = band->GetNoDataValue(&pbSuccess);if (pbSuccess){std::cout << "NoData Value: " << noDataValue << std::endl;}else{std::cout << "No NoData Value found for the band." << std::endl;}

GetNoDataValueAsInt64

virtual int64_t GetNoDataValueAsInt64(int *pbSuccess = nullptr)

获取此波段的无数据值        此方法应仅在数据类型为 GDT_Int64 的栅格上调用

参数:

pbSuccess -- 指向布尔值的指针,用于指示值是否实际与此层相关联。可能为 NULL(默认值)。

返回:  此波段的无数据值

GetNoDataValueAsUInt64

virtual uint64_t GetNoDataValueAsUInt64(int *pbSuccess = nullptr)

获取此波段的无数据值。  仅应在数据类型为 GDT_UInt64 的栅格上调用此方法

GetMinimum

virtual double GetMinimum(int *pbSuccess = nullptr)

获取此波段的最小值

参数:

pbSuccess -- 指向布尔值的指针,用于指示返回值是否为紧最小值。可能为 NULL(默认值)。

返回:  最小栅格值(不包括无数据像素)

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 获取波段的最小值int pbSuccess;double minValue = band->GetMinimum(&pbSuccess);if (pbSuccess){std::cout << "Minimum Value: " << minValue << std::endl;}else{std::cout << "Failed to get the minimum value for the band." << std::endl;}

GetMaximum

virtual double GetMaximum(int *pbSuccess = nullptr)

获取此波段的最大值

参数:

pbSuccess -- 指向布尔值的指针,用于指示返回值是否为紧最小值。可能为 NULL(默认值)。

返回:  最小栅格值(不包括无数据像素)

GetOffset

virtual double GetOffset(int *pbSuccess = nullptr)

获取栅格值偏移       

参数:

pbSuccess -- 指向布尔值的指针,用于指示返回值是否有意义。可能为 NULL(默认值)。

返回:  栅格偏移

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 获取波段的数据偏移值int pbSuccess;double offset = band->GetOffset(&pbSuccess);if (pbSuccess){std::cout << "Offset Value: " << offset << std::endl;}else{std::cout << "Failed to get the offset value for the band." << std::endl;}

GetScale

virtual double GetScale(int *pbSuccess = nullptr)

获取栅格值比例         单位值 =(原始值 * 比例)+ 偏移量

参数:

pbSuccess -- 指向布尔值的指针,用于指示返回值是否有意义。可能为 NULL(默认值)。

返回:  栅格比例

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 获取波段的数据比例尺int pbSuccess;double scale = band->GetScale(&pbSuccess);if (pbSuccess){std::cout << "Scale Value: " << scale << std::endl;}else{std::cout << "Failed to get the scale value for the band." << std::endl;}
  1. 遥感影像数据:

    • 灰度影像:通常使用一个常数比例尺,例如 0.1 表示每个像素值乘以 0.1 后得到实际测量值。
    • 无单位浮点影像:通常使用一个常数比例尺,例如 0.01 表示每个像素值乘以 0.01 后得到实际物理量值(例如辐射亮度)。
    • 有单位浮点影像:通常使用一个常数比例尺,例如 0.001 表示每个像素值乘以 0.001 后得到实际物理量值(例如温度)。
  2. GIS 矢量数据:

    • 点数据:比例尺通常用于将地理坐标(经纬度或投影坐标)转换为实际长度(例如米)。
    • 线数据和多边形数据:比例尺用于将地理坐标转换为实际长度。

GetUnitType

virtual const char *GetUnitType()

返回栅格单位类型

返回: 设备名称字符串

GetUnitType() 是用于获取数据单位类型的函数,

GetRasterDataType() 是用于获取像素值的数据类型的函数

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 获取波段的单位类型const char* unitType = band->GetUnitType();

GetColorInterpretation

virtual GDALColorInterp GetColorInterpretation()

这条带应该如何解释为颜色

当格式对颜色解释一无所知时,将返回GCI_Undefined

返回: 波段的颜色解释值

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 获取波段的颜色解释方式GDALColorInterp colorInterp = band->GetColorInterpretation();switch (colorInterp){case GCI_Undefined:std::cout << "Color Interpretation: Undefined" << std::endl;break;case GCI_GrayIndex:std::cout << "Color Interpretation: Gray Index" << std::endl;break;case GCI_PaletteIndex:std::cout << "Color Interpretation: Palette Index" << std::endl;break;case GCI_RedBand:std::cout << "Color Interpretation: Red Band" << std::endl;break;case GCI_GreenBand:std::cout << "Color Interpretation: Green Band" << std::endl;break;case GCI_BlueBand:std::cout << "Color Interpretation: Blue Band" << std::endl;break;// 其他颜色解释方式可以继续添加在这里default:std::cout << "Color Interpretation: Unknown" << std::endl;break;}

    GCI_Undefined = 0,      // 未定义颜色解释方式
    GCI_GrayIndex = 1,      // 灰度图像
    GCI_PaletteIndex = 2,   // 调色板索引图像
    GCI_RedBand = 3,        // 红色波段
    GCI_GreenBand = 4,      // 绿色波段
    GCI_BlueBand = 5,       // 蓝色波段
    GCI_AlphaBand = 6,      // 透明度(Alpha)波段
    GCI_HueBand = 7,        // 色调(Hue)波段
    GCI_SaturationBand = 8, // 饱和度(Saturation)波段
    GCI_LightnessBand = 9,  // 亮度(Lightness)波段
    GCI_CyanBand = 10,      // 青色(Cyan)波段
    GCI_MagentaBand = 11,   // 品红色(Magenta)波段
    GCI_YellowBand = 12,    // 黄色(Yellow)波段
    GCI_BlackBand = 13,     // 黑色(Black)波段
    GCI_YCbCr_YBand = 14,   // YCbCr 颜色空间的 Y 波段
    GCI_YCbCr_CbBand = 15,  // YCbCr 颜色空间的 Cb 波段
    GCI_YCbCr_CrBand = 16   // YCbCr 颜色空间的 Cr 波段

GetColorTable

virtual GDALColorTable *GetColorTable()

获取与波段关联的颜色表

如果没有关联的颜色表,则返回结果为 NULL

返回:  内部颜色表,或 NULL

    // 获取第一个波段GDALRasterBand* band = dataset->GetRasterBand(1);// 获取波段的颜色表GDALColorTable* colorTable = band->GetColorTable();if (colorTable != nullptr){int numColors = colorTable->GetColorEntryCount();std::cout << "Number of Colors in Color Table: " << numColors << std::endl;// 输出颜色表中的颜色for (int i = 0; i < numColors; ++i){GDALColorEntry colorEntry;colorTable->GetColorEntryAsRGB(i, &colorEntry);std::cout << "Color " << i << ": R=" << static_cast<int>(colorEntry.c1) << ", "<< "G=" << static_cast<int>(colorEntry.c2) << ", "<< "B=" << static_cast<int>(colorEntry.c3) << std::endl;}}else{std::cout << "No color table found for the band." << std::endl;}

相关文章:

GDAL C++ API 学习之路 (2) GDALRasterBand篇 代码示例 翻译 自学

GDALRasterBand Class <gdal_priv.h> GDALRasterBand是GDAL中用于表示栅格数据集中一个波段的类。栅格数据集通常由多个波段组成&#xff0c;每个波段包含了特定的数据信息&#xff0c;例如高程、红、绿、蓝色等&#xff0c; 用于表示影像的不同特征。提供了许…...

springboot对静态资源的支持

1、spring boot默认静态路径支持 Spring Boot 默认将 / 所有访问映射到以下目录&#xff1a;** classpath:/static classpath:/public classpath:/resources classpath:/META-INF/resources也就是说什么也不用配置&#xff0c;通过浏览器可以直接访问这几个目录下的文件。 1…...

WPF实战学习笔记27-全局通知

新建消息事件 添加文件&#xff1a;Mytodo.Common.Events.MessageModel.cs using Prism.Events; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Diagnostics;namespace Mytod…...

openSUSE安装虚拟化 qemu kvm

1) 第一种&#xff1a;图形界面yast安装虚拟化 左下角开始菜单搜索yast 点一下就能安装&#xff0c;是不是很简单呢 2&#xff09;第二种&#xff1a; 命令行安装 网上关于openSUSE安装qemu kvm的教程比较少&#xff0c;可以搜索centos7 安装qemu kvm的教程&#xff0c;然后…...

基于linux下的高并发服务器开发(第四章)- 多进程实现并发服务器(回射服务器)

1. socket // 套接字通信分两部分&#xff1a; - 服务器端&#xff1a;被动接受连接&#xff0c;一般不会主动发起连接 - 客户端&#xff1a;主动向服务器发起连接 2.字节序转换函数 当格式化的数据在两台使用不同字节序的主机之间直接传递时&#xff0c;接收端必然错误…...

【程序分析】符号执行

符号执行入门 参考&#xff1a;https://zhuanlan.zhihu.com/p/26927127 给定一个结果&#xff0c;求解对应的程序输入。 经典符号执行与动态符号执行 参考&#xff1a;https://p1kk.github.io/2021/04/04/others/%E7%AC%A6%E5%8F%B7%E6%89%A7%E8%A1%8C&%E6%B1%A1%E7%82…...

实验笔记之——Windows下的Android环境开发搭建

好久一段时间没有进行Android开发了&#xff0c;最新在用的电脑也没有了Android studio了。为此&#xff0c;本博文记录一下最近重新搭建Android开发的过程。本博文仅为本人学习记录用&#xff08;**别看&#xff09; 之前博客也对配置Android做过记录 Android学习笔记之——A…...

#rust taur运行报错#

场景:在window11系统上运行 tauri桌面莹应用&#xff0c;提示错误。 Visual Studio 2022 生成工具 安装的sdk11 , rust运行模式是stable-x86_64-pc-window-gnu&#xff0c; 运行npm run tauir dev 一致失败&#xff0c;失败信息如下 原因&#xff1a;1&#xff1a;在window11系…...

学习购药系统源码:从前端到后端的技术探索

本文将带领读者探索购药系统源码&#xff0c;从前端到后端逐步深入&#xff0c;了解其核心功能和实现方式。我们将使用常见的Web技术&#xff0c;包括HTML、CSS、JavaScript、以及Python的Django框架&#xff0c;展示购药系统的技术奥秘。 前端技术探索 HTML结构搭建 购药系…...

第九次CCF计算机软件认证

第一题&#xff1a;中间数 在一个整数序列 a1,a2,…,an 中&#xff0c;如果存在某个数&#xff0c;大于它的整数数量等于小于它的整数数量&#xff0c;则称其为中间数。 在一个序列中&#xff0c;可能存在多个下标不相同的中间数&#xff0c;这些中间数的值是相同的。 给定一个…...

【计算机网络】传输层协议 -- TCP协议

文章目录 1. TCP协议的引入2. TCP协议的特点3. TCP协议格式3.1 序号与确认序号3.2 发送缓冲区与接收缓冲区3.3 窗口大小3.4 六个标志位 4. 确认应答机制5. 超时重传机制6. 连接管理机制6.1 三次握手6.2 四次挥手 7. 流量控制8. 滑动窗口9. 拥塞控制10. 延迟应答11. 捎带应答12.…...

Mac上命令

1. block端口&#xff1a; sudo cp /etc/pf.conf /etc/pf443.conf 编辑pf443.conf&#xff0c;vim /etc/pf443.conf&#xff0c;如 block on en0 proto udp from any to any port 9000 # block UDP port 9000 block on en0 proto tcp from any to any port 5004 # bloc…...

软件安全测试和渗透测试的区别在哪?安全测试报告有什么作用?

软件安全测试和渗透测试在软件开发过程中扮演着不同的角色&#xff0c;同时也有不同的特点和目标。了解这些区别对于软件开发和测试人员来说非常重要。本文将介绍软件安全测试和渗透测试的区别&#xff0c;以及安全测试报告在软件开发和测试过程中的作用。 一、 软件安全测试和…...

Android 从LibVLC-android到自编译ijkplayer播放H265 RTSP

概述 ijkplayer: Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support. 官方的描述就这么简单的一句话&#xff0c;但丝毫都不影响它的强大。 从LibVLC 到 ijkplayer 截止到2023.7.20 LibVLC-Android 最大的问题在与OOM&#xff0c;测试了…...

如何提升等保水平,减少数据泄露率

如何提升等保水平&#xff0c;减少数据泄露率&#xff1f;随着互联网的发展和数据的普及&#xff0c;数据泄露已经成为了企业面临的重要安全风险之一。为了保障企业的数据安全&#xff0c;国家制定了《网络安全法》和《信息安全等级保护管理办法》&#xff0c;要求企业提升等保…...

蓝桥云课ROS机器人旧版实验报告-07外设

项目名称 实验七 ROS[Kinetic/Melodic/Noetic]外设 成绩 内容&#xff1a;使用游戏手柄、使用RGBD传感器&#xff0c;ROS[Kinetic/Melodic/Noetic]摄像头驱动、ROS[Kinetic/Melodic/Noetic]与OpenCV库、标定摄像头、视觉里程计&#xff0c;点云库、可视化点云、滤波和缩…...

sql入门基础-2

Dml语句 对数据的增删改查 关键字 Insert增 Update删 Delete改 添加数据 给指定字段添加数据 Insert into 表明 (字段名1&#xff0c;字段名2) values&#xff08;值1&#xff0c;值2&#xff09;; 给全部字段添加数据--(根据位置对应添加到字段下) Insert into 表名 values…...

uni-app:实现表格多选及数据获取

效果&#xff1a; 代码&#xff1a; <template><view><scroll-view scroll-x"true" style"overflow-x: scroll; white-space: nowrap;"><view class"table"><view class"table-tr"><view class&quo…...

【图论】树上差分(点差分)

一.题目 输入样例&#xff1a; 5 10 3 4 1 5 4 2 5 4 5 4 5 4 3 5 4 3 4 3 1 3 3 5 5 4 1 5 3 4 输出样例&#xff1a;9 二 .分析 我们可以先建一棵树 但我们发现&#xff0c;这样会超时。 所以&#xff0c;我们想到树上差分 三.代码 /* 5 10 3 4 1 5 4 2 5 4 5 4 5 4 3 5 …...

【wrk2】轻量级性能测试工具

1、背景 wrk/wrk2是针对http协议的基准测试工具,特点是在单击多核CPU的前提下,通过系统自带的高性能I/O机制【epoll、kqueue等】,以多线程和事件模式,在指定的时间和请求范围下对目标机器产生负载。特点如下: 优势劣势1、安装简单、容易上手 2、基于系统自身的高性能机制…...

华为云低代码平台Astro Canvas 搭建汽车展示大屏——实验指导手册

实验背景 大屏应用Astro Canvas是华为云低代码平台Astro的子服务之一&#xff0c;是以数据可视化为核心&#xff0c;以屏幕轻松编排&#xff0c;多屏适配可视为基础&#xff0c;用户可通过图形化界面轻松搭建专业水准的数据可视化大屏。例如汽车展示大屏、监控大屏、项目开发大…...

Nodejs 第七章(发布npm包)

发布npm的包的好处是什么 方便团队或者跨团队共享代码&#xff0c;使用npm包就可以方便的管理&#xff0c;并且还可以进行版本控制做开源造轮子必备技术&#xff0c;否则你做完的轮子如何让别人使用难道是U盘拷贝&#xff1f;面试题我面字节的时候就问到了这个增加个人IP 让更…...

Spring?Boot项目如何优雅实现Excel导入与导出功能

目录 背景EasyExcel 问题分析与解决Spring Boot Excel 导入与导出 依赖引入Excel 导入 基本导入功能进阶导入功能Excel 导出 Excel 导入参数校验 开启校验 校验规则定义 Bean Validation 定义校验规则ExcelValidator 接口定义校验规则校验结果接收 异常捕获接收校验结果contro…...

lable 某个名称换行 \n /n /br axisLabel换行 文字换行 echarts

axisLabel: {interval: 0,textStyle: {color: #D9D9D9,fontSize: fontChart(0.2),lineHeight:12,},formatter: function (params) {// 交通运输、仓储和邮政业, 制造业, 科学研究和技术服务业if (params 交通运输、仓储和邮政业) { return 交通运输、\n仓储和邮政业 }else if …...

025 - max()函数

MAX() 函数: MAX 函数返回一列中的最大值。NULL 值不包括在计算中。 SQL MAX() 语法: SELECT MAX(column_name) FROM table_name; 注释&#xff1a;MAX 也可用于文本列&#xff0c;以获得按字母顺序排列的最高或最低值。 -- 实际操作&#xff08;查询salary的最大值&#x…...

JDK 8.x 微服务启动JVM参数调优实战

微服务启动JVM参数调优实战 1.1 配置JVM启动参数1.2 解释1.3 JVM参数优化思路1.3.1 调整堆内存大小1.3.2 年轻代大小1.3.3 Metaspace 大小1.3.4 栈大小1.3.5 垃圾回收器选择1.3.6 垃圾回收参数1.3.7 预分配内存 1.3.8 禁用 ResizePLAB2. 常用JVM参数 1.1 配置JVM启动参数 服务…...

Web与HTTP

目录 DNS与域名 DNS解析的方式 过程 注册域名 html 名词解释 html的语法 web web2.0 静态页面特点 动态页面 动态页面特点 http协议 工作流程 http的请求方式 get post 状态码 常用状态码 通信套接字 套接字调用的端口 DNS与域名 网络是基于tcp/ip协议进…...

算法刷题Day 56两个字符串的删除操作+编辑距离

Day 56 动态规划 583. 两个字符串的删除操作 class Solution { public:int minDistance(string word1, string word2) {int m word1.size(), n word2.size();vector<vector<int>> dp(m 1, vector<int>(n 1, 0));for (int i 0; i < m; i){dp[i][0] …...

Flutter中Dart语言常用知识

目录 1. 变量和数据类型2. 函数3. 类4. 异常处理5. 泛型6. 变量声明和类型推断&#xff1a;7. 函数定义&#xff1a;8. 类定义和实例化&#xff1a;9. 接口定义&#xff1a;10. 抽象类定义&#xff1a;11. 混合类型列表&#xff1a;12. Flutter 中的 UI 组件&#xff1a;13.Dar…...

11万多英藏对照词典英藏翻译ACCESS\EXCEL数据库

今天继续发一个藏文藏语相关的翻译数据库&#xff0c;即英藏对照词典&#xff0c;加上《5万6千多藏文词典解释ACCESS数据库》以及昨天发的《近13万汉藏对照词典汉藏翻译ACCESS\EXCEL数据库》藏文类的数据就算较全了。 截图下方有显示“共有记录数”&#xff0c;截图包含了表的所…...