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

在pytorch中自定义dataset读取数据

这篇是我对哔哩哔哩up主 @霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享

有关我们数据读取预训练

以及如何将它打包成一个一个batch输入我们的网络的

首先我们来看一下之前我们在讲resnet网络时所使用的源码

我们去使用了官方实现的image folder去读取我们的图像数据

然后再使用官方提供的data loader去对我们读取的数据进行一个打包

大家有没有想过这个image folder它的内部到底实现了哪些功能呢

那么我们今天为什么要讲这个dataset呢

因为在之前我们讲分类网络时

有很多小伙伴私信问我

如果我的图片不是rgb图像

是灰度图像或者是雷达图像

深度图像等等

就是非rgb的图像时

我该如何去载入并预处理我的图像

那么如果你直接通过官方提供的这个方法呢

其实它是有一定的局限性的

而且比如如果你想去设计一个比较独特的网络

比如说你设计的网络

它有多个输入

那么这种情况呢官方所提供的这些方法都是无法满足你的需求的

所以本节课我们来讲一下如何去实现我们自己的一个data set

以及进一步去讲解我们的data loader是如何利用我们data set所生成的数据

打包成一批一批的数据输入网络的

那么本节课所讲的一个代码呢

我已经提前上传到我的github上了

在pytourh classification模块下的custom dataset这个文件夹当中

然后这三个文件呢就是我们今天主要要讲的内容了

那么这个内容呢也是我们在后面讲利用多gpu训练时

所使用到的一个数据读取

以及预处理的部分

那么我们接下来就进入到我们的代码当中

首先呢我们看一下我们的main这个脚本

首先呢我们这里所使用的数据集

还是我之前所说的划分类数据集

之前也有小伙伴在问我数据在哪下载呀

我该如何去划分训练集以及验证集

那么今天呢我在这里就详细地将整个流程仔细的讲一遍

并且呢我这里写了一个新的关于划分数据集的一个脚本

相比原来那个脚本呢使用起来会更加的方便

不需要再将训练集以及验证集单独划分到不同的文件夹当中了

首先呢如果你想使用之前我们所说的花分类数据集

那么大家可以自己去在这个链接当中去下载

下载完之后呢

你会得到一个点tgz的一个压缩文件

然后解压之后呢

我们可以看到都有个flower photos

在这个文件夹下呢主要有这五个子文件夹

每个文件夹呢它对应的一种花的类型

比如说我们看这个daisy

这个daisy呢它对应的就是雏菊

也就是说在这个文件夹下面的所有图片都是关于雏菊这个类别

那么我们下载完之后呢

我们这里的root这个变量就指向我们的flower photos

那么我这里就已经设置好了

就保存在我所给定的这个路径下

然后呢我们就进入到我们这个main函数

接下来呢我们就使用我们的read split data

这个方法来划分我们的训练集一验证集

那么这个方法呢我们只需要传入一个root这个参数就可以了

然后我们来仔细的看一下这个方法

进入这个方法之后呢

我们可以看到有两个参数

第一个是root

就是我们刚刚所说指向我们解压后的文件夹的路径

然后这个rate它是我们划分验证集所占所有样本的一个比例

我们这里将我们引入的random这个随机的这个包

设置一个随机种子设置为零

这里为什么要设计随机种子呢

就在于能够保证随机结果是可以复现的

也就是说只要我们将这个random的种子设置为零之后

无论是在你的电脑上

我的电脑上还是其他人电脑上

我们待会儿通过随机函数所随机划分的数据都是一模一样的

也就是都是可复现的

这样呢就能够保证大家划分的数据集都是一模一样的

然后接下来呢我们来判断一下我们所传入的这个路径

它是否存在

如果不存在

我们就会报出一个错误

接下来我们再通过os库的例子

第二来便利我们所给的那个路径下的所有的文件

那么它它变的文件呢可能就包含有文件夹以及我们普通的文件

然后这里呢我们就通过一个for循环来遍历它所编辑得到的

每一个文件夹或文件

接下来我们再判断

如果我们的这个路径它所对应的是个文件夹的话

那么我们就将它进行保存

如果不是文件夹的话

那我们就将它丢弃

那么这样我们得到的flower class就应该有五个值

初始化几个空列表

那么这里呢我再多说一句

我们这里为什么要使用PIL的image这个库

而不去使用open cv

因为在touch它所提供的这一系列预处理方法

其实它主要还是针对pl库所读入的images

比如我们随机看一个预处理方法

那么在他预处理方法的计划当中呢

他写的就是针对一个PIL的image进行一个处理的

然后这里我再多说一句

就是有时候我们在调试过程当中可能会遇到这种情况

就是我想看一下变量的一个信息

但是我设置断点之后

我们在debug这个信息当中呢

看到每个变量一直在显示正在载入数据

然后一直看不到

那么这个问题要怎么解决呢

那么这里呢大家可以点击这个file

然后在设置当中

然后在我们的build execution deployment

然后在这个地方呢大家可以勾选一下这个

然后再点ok

这样的话你在调试过程当中

每一个变量它的参数值就会很快的载入进来了

那么通过stack方法之后呢

它会增加一个新的维度

那么这个新维度是在dimension等于零的位置上

那么拼接之后我们可以来看一下我们所得到的shape

那接下来我们再将我们的labels也转化成tensor形式

因为刚在我们item的方法当中呢

我们通过transform方法将我们的image已经转换成tensor格式了

但我们label它并不是tender格式

所以这里我们要通过touch as tensor这个方法

我们label也转换成tensor

然后我们所得到的labels呢

它就是一个tensor变量了

然后我们再通过return

就可以将我们打包好的图片以及标签信息进行一个返回

那么接下来我们再停止我们的一个调试过程

我们再回到我们的main函数当中

那么这里我们讲了这么多

我说的这些到底是不是对的呢

我们接下来再通过我们所得到的这个train data loader

应该读取它的图片以及标签信息

看是否是正确的

那么这里我又实现了个plot data loader image这个方法

那我们来看一下这个方法

这个方法当中呢

首先我们获取一下我们这个data load的batchsize

然后我们这个json pass就指向我们刚刚生成的这个json文件

然后我们这里判断一下存存在

如果不存在就报错

然后我们再打开这个计算文件

然后载入它就得到了我们的一个字典

然后通过transport方法来调整它的一个通道顺序

原来通道顺序是channel

高度宽度

那么通过transpose之后

我们就还原成了高度宽度以及channel

然后在我们刚刚预处理过程当中呢

首先我们这个Totensor会将我们的数据范围从0~255

缩放到0~1之间

然后呢通过这个normalize这个方法

将我们数据rgb 个通道的数值分别减去这三个均值

然后再除以这三个标准差

得到我们标准化之后的数据

那么现在我们读入的数据就是标准化之后的数据

如果我们要绘制它呢

我们就需要将它转化回去

所以呢我们这里就对我们的rgb 通道首先乘以这三个数值

然后再加上这三个数值

然后再乘以255

我们就可以还原回原来的一个图像了

那么我们这里绘制的一个图像当中一共有1个行,plot number个列

我们这里呢由于我们刚刚进行了一系列操作之后呢

它是一个float类型

我们这里将它转化成一个int 类型然后再show

相关文章:

在pytorch中自定义dataset读取数据

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 有关我们数据读取预训练 以及如何将它打包成一个一个batch输入我们的网络的 首先我们来看一下之前我们在讲resnet网络时所使用的源码 我们去使用了官方实现的image folder去读取我们的图像数据 然…...

ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders

1.关于稀疏卷积的解释:https://zhuanlan.zhihu.com/p/382365889 2. 答案: 在深度学习领域,尤其是计算机视觉任务中,遮蔽图像建模(Masked Image Modeling, MIM)是一种自监督学习策略,其基本思想…...

Java后端的登录、注册接口是怎么实现的

目录 Java后端的登录、注册接口是怎么实现的 Java后端的登录接口是怎么实现的 Java后端的注册接口怎么实现? 如何防止SQL注入攻击? Java后端的登录、注册接口是怎么实现的 Java后端的登录接口是怎么实现的 Java后端的登录接口的实现方式有很多种&a…...

TCP Keepalive 和 HTTP Keep-Aliv

HTTP的Keep-Alive 在http1.0的版本中,它是基于请求-应答模型和TCP协议的,也就是在建立TCP连接后,客户端发送一次请求并且接收到响应后,就会立马断开TCP连接,称为HTTP短连接,这种方式比较耗费时间以及浪费资…...

操作系统 复习笔记

操作系统的目标和作用 操作系统的目标 1.方便性 2.有效性 3.可扩展性 4.开放性 操作系统的作用 1.OS作为用户与计算机硬件系统之间的接口 2.OS作为计算机系统资源的管理者 3.OS实现了对计算机系统资源的抽象 推动操作系统发展的主要动力 1.不断提高计算机系统资源的…...

Java中实现单例模式的方式

1. 使用静态内部类实现单例模式 在Java中,使用静态内部类实现单例模式是一种常见而又有效的方式。这种方式被称为“静态内部类单例模式”或者“Holder模式”。这种实现方式有以下优点: 懒加载(Lazy Initialization):静…...

Vue3-01-创建项目

环境准备 1.需要用到 16.0 以及更高版本的 node.js 2.使用vscode编辑器进行项目开发可以在命令行中查看node的版本号: node -v创建项目 1.准备一个目录 例如,我创建项目的时候是在该目录下进行的;D:\projectsTest\vue3project2.执行创建命令(*&#x…...

Go 语言中的反射机制

欢迎大家到我的博客浏览&#xff0c;更好的阅读体验请点击 反射 | YinKais Blog 反射在大多数的应用和服务中并不常见&#xff0c;但是很多框架都依赖 Go 语言的反射机制简化代码。<!--more-->因为 Go 语言的语法元素很少、设计简单&#xff0c;所以它没有特别强的表达能…...

[leetcode 前缀和]

525. 连续数组 M :::details 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组&#xff0c;并返回该子数组的长度。 示例 1: 输入: nums [0,1] 输出: 2 说明: [0, 1] 是具有相同数量 0 和 1 的最长连续子数组。示例 2: 输入: nums [0,1,0] 输出: …...

Python与ArcGIS系列(十五)根据距离抓取字段

目录 0 简述1 实例需求2 arcpy开发脚本0 简述 在处理gis数据的时候,会遇到这种需求:将一个图层与另一个图层中相近的要素进行字段赋值。本篇将介绍如何利用arcpy及arcgis的工具箱实现这个功能。 1 实例需求 为了介绍这个功能的实现,我们需要有一个特定的功能需求。在这里选…...

YOLOv8分割训练及分割半自动标注

YOLOv8是基于目标检测算法YOLOv5的改进版,它在YOLOv5的基础上进行了优化和改进,加入了一些新的特性和技术,如切片注意力机制、骨干网络的选择等。 本文以yolov8-seg为基准,主要整理分割训练流程及使用v8分割模型进行半自动标注的过程。 一、v8-seg训练 1.1 环境配置 github…...

jsp页面通过class或者id获取a标签上的属性的值

要通过class和id两种方式获取a标签上的某个属性的值&#xff0c;或者给其赋值&#xff0c;可以使用JavaScript。以下是两种方法的示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&q…...

题目:美丽的区间(蓝桥OJ 1372)

题目描述&#xff1a; 解题思路&#xff1a; 采用双指针的快慢指针。 图解 可以采用前缀和&#xff0c;但会相较麻烦。 题解&#xff1a; #include<bits/stdc.h> using namespace std;const int N 1e5 9; int a[N];// 因为是连续区间&#xff08;连续区间&#xff1…...

解决:During handling of the above exception, another exception occurred

解决&#xff1a;During handling of the above exception, another exception occurred 文章目录 解决&#xff1a;During handling of the above exception, another exception occurred背景报错问题报错翻译报错位置代码报错原因解决方法参考内容&#xff1a;今天的分享就到…...

计算机基础知识65

cookie和session的使用 # 概念&#xff1a;cookie 是客户端浏览器上的键值对 # 目的&#xff1a;为了做会话保持 # 来源&#xff1a;服务端写入的&#xff0c;服务端再返回的响应头中写入&#xff0c;浏览器会自动取出来 存起来是以key value 形式&#xff0c;有过期时间、path…...

Python开发运维:Python垃圾回收机制

目录 一、理论 1.Python垃圾回收机制 一、理论 1.Python垃圾回收机制 &#xff08;1&#xff09;引⽤计数器 1&#xff09;环状双向链表 refchain 在python程序中创建的任何对象都会放在refchain链表中。 name "david" age 20 hobby ["篮球",游泳…...

ros2/ros安装ros-dep||rosdep init错误

第一个错误的做法&#xff1a; sudo apt-get install python3-pip sudo pip3 install 6-rosdep sudo 6-rosdep 如果使用上述代码将会摧毁整个系统&#xff0c;不重装系统反正我是搞不定啊&#xff0c;因为我不知道那个写软件的人到底做了什么。因为这个我安装的版本是humble&…...

《深入理解计算机系统》学习笔记 - 第四课 - 机器级别的程序

Lecture 05 Machine Level Programming I Basics 机器级别的程序 文章目录 Lecture 05 Machine Level Programming I Basics 机器级别的程序intel 处理器的历史和体系结构芯片的构成AMD 公司(Advanced Micro Devices&#xff0c;先进的微型设备) C, 汇编, 机器代码定义汇编/机器…...

云原生(Cloud Native)——概念,技术,背景,优缺点,实践例子

云原生&#xff08;Cloud Native&#xff09;是一种构建和运行应用程序的方法&#xff0c;这些应用程序充分利用云计算的优势。云原生应用程序通常设计为在现代、动态的环境中运行&#xff0c;如公共云、私有云和混合云。这种方法强调微服务架构、容器化、自动化、易于管理和可…...

ElasticSearch之线程池

ElasticSearch节点可用的CPU核的数量&#xff0c;通常可以交给ElasticSearch来自行检测和判定&#xff0c;另外可以在elasticsearch.yml中显式指定。样例如下&#xff1a; node.processors: 2如下表格中的processors即CPU核的数量。 线程池的列表 线程池名称类型线程数量队列…...

StoneDB-8.0-V2.2.0 企业版正式发布!性能优化,稳定性提升,持续公测中!

​ 11月&#xff0c;StoneDB 新版本如期而至&#xff0c;这一个月来我们的研发同学加班加点&#xff0c;持续迭代&#xff1a;在 2.2.0 版本中&#xff0c;我们针对用户提出的需求和做出了重量级更新&#xff0c;修复了一些已知和用户反馈的 Bug&#xff0c;同时对部分代码进行…...

【数据结构 — 排序 — 插入排序】

数据结构 — 排序 — 插入排序 一.排序1.1.排序的概念及其运用1.1.1排序的概念1.1.2排序运用1.1.3 常见的排序算法 二.插入排序2.1.直接插入排序2.1.1.算法讲解2.1.2.代码实现2.1.2.1.函数定义2.1.2.2.算法接口实现2.1.2.3.测试代码实现2.1.2.4.测试展示 2.2.希尔排序2.2.1.算法…...

物联网后端个人第十四周总结

物联网方面进度 1.登陆超时是因为后端运行的端口和前端监听的接口不一样&#xff0c;所以后端也没有报错&#xff0c;将二者修改一致即可 2.登录之后会进行平台的初始化&#xff0c;但是初始化的时候会卡住,此时只需要将路径的IP端口后边的内容去掉即可 3.阅读并完成了jetlinks…...

在uniapp中,可以使用那些预定义的样式类

u-flex&#xff1a;设置元素为弹性布局。u-flex-v&#xff1a;设置元素为纵向弹性布局。u-flex-h&#xff1a;设置元素为横向弹性布局。u-p-10&#xff1a;设置元素的上下左右边距为10rpx。u-p-t-10&#xff1a;设置元素的上边距为10rpx。u-p-b-10&#xff1a;设置元素的下边距…...

mybatis的数据库连接池

直接看原文 原文链接:【MyBatis】 连接池技术_mybatis自带连接池-CSDN博客 本文先不说springBoot整合mybatis后的 本文讲的是没有被springBoot整合前的mybatis自己的默认的连接池 --------------------------------------------------------------------------------------…...

Vue 的 el-select 下拉选项中,只有当文字超出时才显示提示框,未超出的则不显示

Vue 的 el-select 下拉选项中&#xff0c;只有当文字超出时才显示提示框&#xff0c;未超出的则不显示 <template><div><el-select v-model"selected" placeholder"请选择"><el-optionv-for"item in options":key"it…...

【Python】pptx文件转pdf

要将PPTX文件转换为PDF格式&#xff0c;你可以使用Python的python-pptx库来读取PPTX文件&#xff0c;然后使用comtypes库在Windows上或unoconv在Linux上来进行转换。但是&#xff0c;需要注意的是&#xff0c;comtypes依赖于Microsoft Office&#xff0c;而unoconv依赖于LibreO…...

response应用及重定向和request转发

请求和转发&#xff1a; response说明一、response文件下载二、response验证码实现1.前置知识&#xff1a;2.具体实现&#xff1a;3.知识总结 三、response重定向四、request转发五、重定向和转发的区别 response说明 response是指HttpServletResponse,该响应有很多的应用&…...

CentOS常用基础命令大全(linux命令)2

CentOS常用基础命令大全&#xff08;linux命令&#xff09; 1.关机 (系统的关机、重启以及登出 ) 的命令 shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 sh…...

分析阿里巴巴的微服务依赖图和性能

论文对阿里巴巴集群中部署的大规模微服务进行了全面的研究。他们分析了 7 天内 20,000 多个微服务的行为&#xff0c;并根据收集的 100 亿条调用跟踪来分析它们的特征。该论文获得SOCC 2021最佳论文奖。 他们发现&#xff1a; 微服务图在运行时是动态的 大多数图形像树一样分…...

Linux——基本指令(一)

写在前面&#xff1a; 我们云服务器搭建的Linux系统&#xff0c;使用的镜像版本CentOS 7.6,使用的Xshell远程连接云服务器 前面我们使用超级管理员root账号登录&#xff0c;一般我们使用普通用户登录&#xff0c;那么如何创建新用户呢&#xff1f; 1.创建新用户 &#xff08…...

虚幻学习笔记10—C++函数与蓝图的通信

一、前言 除了上一章C变量与蓝图通信讲的变量能与蓝图通信外&#xff0c;还有函数和枚举也可以和蓝图通信。函数的关键字为”UFUNCTION“、枚举的关键字为”UENUM“。 二、实现 2.1、BlueprintCallable蓝图中调用 该函数时带执行的&#xff0c;带入如下。编译成功后在蓝图中输…...

无重复字符的最长子串(LeetCode 3)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一&#xff1a;暴力法方法二&#xff1a;滑动窗口 参考文献 1.问题描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的最长子串的长度。 s 由英文字母、数字、符号和空格组成。 示例 1&#xff1a; 输…...

交付《啤酒游戏经营决策沙盘》的项目

感谢首富客户连续两年的邀请&#xff0c;交付《啤酒游戏经营决策沙盘》的项目&#xff0c;下周一JSTO首席学习官Luna想让我分享下系统思考与投资理财&#xff0c;想到曾经看过的一本书《深度思维》&#xff0c;看到一些结构来预判未来。不仅仅可以应用在企业经营和组织发展上&a…...

油猴(Tampermonkey)浏览器插件简单自定义脚本开发

介绍 浏览器插件&#xff0c;包括油猴插件和其他插件&#xff0c;通过它们可以实现浏览器网页的定制化与功能增强。 其他插件一般只有某种具体的功能&#xff0c;且已经写死而不能更改&#xff0c;比如Adblock插件只用于去广告。 油猴插件是一款用于管理用户脚本的插件&…...

BGP综合

1、使用PreVal策略&#xff0c;确保R4通过R2到达192.168.10.0/24。 2、使用AS_Path策略&#xff0c;确保R4迪过R3到达192.168.11.0/24。 3、配置MED策略&#xff0c;确保R4通过R3到达192.168.12.0/24。 4、使用Local Preference策略&#xff0c;确保R1通过R2到达192.168.1.0…...

库函数qsort的使用及利用冒泡排序模拟实现qsort

文章目录 &#x1f680;前言&#x1f680;void*类型指针&#x1f680;库函数qsort的使用&#x1f680;利用冒泡排序实现库函数qsort() &#x1f680;前言 今天阿辉将为大家介绍库函数qsort的使用&#xff0c;还包括利用冒泡排序模拟实现qsort以及void*类型的指针&#xff0c;关…...

mybatis和mybatisplus中对 同namespace 中id重复处理逻辑源码解析

一、背景 同事在同一个mapper.xml &#xff08;namespace相同&#xff09;&#xff0c;复制了一个sql没有修改id&#xff0c;正常启动项目。但是我以前使用mybatis的时候如果在namespace相同情况下&#xff0c;id重复&#xff0c;项目会报错无法正常启动&#xff0c;后来看代码…...

linux下部署frp客户端服务端-内网穿透

简介 部署在公司内部局域网虚拟机上的服务需要在外网能够访问到&#xff0c;这不就是内网穿透的需求吗&#xff0c;之前通过路由器实现过&#xff0c;现在公司这块路由器不具备这个功能了&#xff0c;目前市面上一些主流的内网穿透工具有&#xff1a;Ngrok&#xff0c;Natapp&…...

Markdown to write

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...

ResNeXt(2017)

文章目录 Abstract1. Introductionformer workour work 2. Related Work多分支卷积网络分组卷积压缩卷积网络Ensembling 3. Method3.1. Template3.2. Revisiting Simple Neurons3.3. Aggregated Transformations3.4. Model Capacity 4. Experiment 原文地址 源代码 Abstract 我…...

DreamPlace 的下载安装与使用

DreamPlace 是一款芯片放置工具&#xff0c;用于宏单元&#xff08;macro&#xff09;和标准单元&#xff08;Standard Cell&#xff09;的放置以及布线&#xff0c;并计算 HPWL、Overlap 等用于衡量芯片性能的参数。 一、环境 1. 系统环境&#xff1a;Ubuntu 20.04 DreamPla…...

FPGA模块——SPI协议(读写FLASH)

FPGA模块——SPI协议&#xff08;读写FLASH&#xff09; &#xff08;1&#xff09;FLASH芯片 W25Q16BV&#xff08;2&#xff09;SPI协议&#xff08;3&#xff09;芯片部分命令1.Write Enable&#xff08;06h&#xff09;2.Chip Erase (C7h / 60h)3.写指令&#xff08;02h&am…...

SQL自学通之表达式条件语句与运算

目录 一、目标 二、表达式条件语句 1、表达式&#xff1a; 2、条件 2.1、WHERE 子句 三、运算 1、数值型运算: 1.1、加法() 1.2、减法 (-) 1.3、除法&#xff08;/&#xff09; 1.4、乘法 &#xff08;*&#xff09; 1.5、取模 &#xff08;%&#xff09; 优先级别…...

公网域名如何解析到内网IP服务器——快解析域名映射外网访问

在本地搭建主机应用后&#xff0c;由于没有公网IP或没有公网路由权限&#xff0c;在需要发布互联网时&#xff0c;就需要用到外网访问内网的一些方案。由于内网IP在外网不能直接访问&#xff0c;通常就用通过外网域名来访问内网的方法。那么&#xff0c;公网域名如何解析到内网…...

线程安全与并发区别

在并发编程中&#xff0c;"线程安全 "和 "并发 "是相关的概念&#xff0c;但它们有着不同的含义。 线程安全 如果一个类或方法可以同时被多个线程使用&#xff0c;而不会导致数据损坏或意外行为&#xff0c;那么这个类或方法就被认为是线程安全的。即使多…...

SEO优化是什么,如何进行SEO优化

SEO&#xff08;Search Engine Optimization&#xff09;是指通过对网站进行优化&#xff0c;提高其在搜索引擎中的排名&#xff0c;从而增加有机流量和改善用户体验的一系列技术和方法。 进行SEO优化可以帮助网站获得更多的有机搜索流量&#xff0c;并提升网站的曝光度和可见…...

nodejs发起http或https请求

前言&#xff1a;使用node内置模块http、https http请求 const express require(express) const http require(http)const app express()const loginConfig (token) > {return {hostname: api.test.com,port: 80,path: /test?access_token${token},method: GET} }app.…...

举例C#使用特性排除某些类成员不参与XML序列化和反序列化

在C#中&#xff0c;可以使用 [XmlIgnore] 特性来排除某些类成员不参与XML序列化和反序列化。这个特性告诉XML序列化器忽略被标记的成员。 以下是一个使用 [XmlIgnore] 特性的示例&#xff1a; using System; using System.IO; using System.Xml.Serialization;public class P…...

PHP基础 - 输入输出

在 PHP 中,有多种方法可以用来输出内容。下面是其中的几种: 1、echo: 这是最常见的输出语句之一,可以输出一个或多个字符串。它是一个语言结构,可以省略括号。使用示例如下: <?php // 使用 echo 语句输出一个字符串 echo "Hello, world!\n";// 可以使用…...