go 的 net 包
目录
一、net包的基本功能
1.1 IP地址处理
1.2 网络协议支持
1.3 连接管理
二、net包的主要功能模块
2.1 IP地址处理
2.2 TCP协议
2.3 UDP协议
2.4 Listener和Conn接口
三、高级功能
3.1 超时设置
3.2 KeepAlive控制
3.3 获取连接信息
四、实际应用场景
4.1 Web服务器
4.2 实时通信
4.3 数据报送
Go语言的net
包是处理网络通信的核心库,它提供了底层的网络接口,包括TCP、UDP、IP等协议的支持。net
包的功能强大,使用灵活。
一、net包的基本功能
net
包主要用来处理网络通信,提供了包括IP地址处理、协议侦听、数据报送等功能。
1.1 IP地址处理
net
包中提供了IP
地址的解析、比较、检查等功能。IPAddress
接口定义了String()
、Netmask()
等方法,可以用来获取IP地址的字符串表示以及子网掩码。
1.2 网络协议支持
net
包支持多种网络协议,包括TCP、UDP、IP、Unix域套接字等。通过不同的协议,可以创建监听器(Listener)和连接(Conn)。例如,使用net.Listen("tcp", "localhost:8080")
可以创建一个TCP协议的监听器。
1.3 连接管理
net
包提供了Conn
接口,用来表示一个网络连接。通过Conn
接口可以进行数据的读写操作,同时也可以获取连接的本地和远程地址。
二、net包的主要功能模块
2.1 IP地址处理
net
包中IPAddress
接口提供了对IP地址的处理方法。例如,可以使用net.ParseIP()
函数解析一个IP地址字符串。
示例代码:
ip := net.ParseIP("192.168.1.1")
if ip != nil {fmt.Printf("IP address: %s\n", ip.String())
} else {fmt.Println("Invalid IP address")
}
2.2 TCP协议
TCP协议是面向连接的可靠协议,适合需要保证数据完整性的应用场景。net
包通过net/tcp
包提供了对TCP协议的支持。
TCP服务器示例:
listener, err := net.Listen("tcp", "localhost:8080")
if err != nil {log.Fatalf("Failed to listen: %v", err)
}for {conn, err := listener.Accept()if err != nil {log.Printf("Failed to accept connection: %v", err)continue}go handleConnection(conn)
}
TCP客户端示例:
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {log.Fatalf("Failed to dial: %v", err)
}
defer conn.Close()_, err = conn.Write([]byte("Hello, server!"))
if err != nil {log.Printf("Failed to write: %v", err)
}
2.3 UDP协议
UDP协议是无连接的不可靠协议,适合实时性要求高但对数据完整性不敏感的场景。net
包通过net/udp
包提供了对UDP协议的支持。
UDP服务器示例:
conn, err := net.ListenPacket("udp", ":8080")
if err != nil {log.Fatalf("Failed to listen: %v", err)
}
defer conn.Close()buf := make([]byte, 1024)
for {n, addr, err := conn.ReadFrom(buf)if err != nil {log.Printf("Failed to read: %v", err)continue}go handlePacket(buf[:n], addr)
}
UDP客户端示例:
conn, err := net.Dial("udp", "localhost:8080")
if err != nil {log.Fatalf("Failed to dial: %v", err)
}
defer conn.Close()_, err = conn.Write([]byte("Hello, server!"))
if err != nil {log.Printf("Failed to write: %v", err)
}
2.4 Listener和Conn接口
net
包中Listener
接口和Conn
接口是网络通信的核心接口。Listener
接口用于监听传入的连接,而Conn
接口则表示一个已建立的网络连接。
Listener接口方法:
Accept()
: 接受一个新的连接。Close()
: 关闭监听器。Addr()
: 获取监听器的地址。
Conn接口方法:
Read(b []byte)
: 从连接中读取数据。Write(b []byte)
: 向连接中写入数据。Close()
: 关闭连接。LocalAddr()
: 获取本地地址。RemoteAddr()
: 获取远程地址.
三、高级功能
3.1 超时设置
在网络通信中,超时设置用于防止因网络问题导致的长时间无响应。Go语言的net
包提供了多种方式设置超时。
示例代码:
// 设置连接超时
conn, err := net.DialTimeout("tcp", "localhost:8080", 5*time.Second)
if err != nil {log.Printf("Failed to dial: %v", err)
}
defer conn.Close()// 设置读写超时
conn.SetDeadline(time.Now().Add(10 * time.Second))
3.2 KeepAlive控制
在长时间没有数据传输的连接中,可能会因为网络设备的策略导致连接被关闭。net
包提供了SetKeepAlive
方法用于配置KeepAlive选项。
示例代码:
// 创建TCP连接
conn, err := net.Dial("tcp", "localhost:8080")
if err != nil {log.Printf("Failed to dial: %v", err)
}
defer conn.Close()// 配置KeepAlive
conn.SetKeepAlive(true)
3.3 获取连接信息
net
包还提供了一些方法来获取连接的详细信息。例如,可以通过conn.LocalAddr()
和conn.RemoteAddr()
方法获取本地和远程的地址信息。
示例代码:
localAddr := conn.LocalAddr()
remoteAddr := conn.RemoteAddr()
fmt.Printf("Local address: %v\n", localAddr)
fmt.Printf("Remote address: %v\n", remoteAddr)
四、实际应用场景
4.1 Web服务器
net
包是构建Web服务器的基础。在使用net/http
包之前,net
包已经提供了底层的网络通信功能。
示例代码:
package mainimport ("fmt""net/http"
)func helloHandler(w http.ResponseWriter, r *http.Request) {fmt.Fprint(w, "Hello, World!")
}func main() {http.HandleFunc("/", helloHandler)fmt.Println("Starting server on :8080")http.ListenAndServe(":8080", nil)
}
4.2 实时通信
在需要实时通信的场景中,可以使用net
包搭配WebSocket协议来实现客户端和服务器之间的双向实时通信。
这里举例一个单向的:
服务端:接收客户端传来的消息
package mainimport ("fmt""net"
)func process(conn net.Conn) {defer conn.Close()for {buf := make([]byte, 1024)n, err := conn.Read(buf)if err != nil {return}fmt.Println(string(buf[:n]))}
}func main() {fmt.Println("服务端启动")listen, err := net.Listen("tcp", "127.0.0.1:8080")if err != nil {fmt.Println("监听失败")return}for {conn, err2 := listen.Accept()if err2 != nil {fmt.Println("客户端等待失败", err2)} else {fmt.Println("连接成功", conn, conn.RemoteAddr())}go process(conn)}}
客户端:向服务端发送消息
package mainimport ("bufio""fmt""net""os"
)func main() {fmt.Println("客户端启动")conn, err1 := net.Dial("tcp", "127.0.0.1:8080")if err1 != nil {fmt.Println("客户端连接失败:", err1)return}fmt.Println("连接成功.", conn)reader := bufio.NewReader(os.Stdin)for {str, err2 := reader.ReadString('\n')if err2 != nil {fmt.Println("终端输入失败", err2)}if str == "exit\n" {return}n, err3 := conn.Write([]byte(str))if err3 != nil {fmt.Println("连接失败", err3)}fmt.Printf("发送了%d个字节\n", n)}}
4.3 数据报送
对于需要快速传输数据且对可靠性要求不高的场景,可以使用UDP协议进行数据报送。
相关文章:
go 的 net 包
目录 一、net包的基本功能 1.1 IP地址处理 1.2 网络协议支持 1.3 连接管理 二、net包的主要功能模块 2.1 IP地址处理 2.2 TCP协议 2.3 UDP协议 2.4 Listener和Conn接口 三、高级功能 3.1 超时设置 3.2 KeepAlive控制 3.3 获取连接信息 四、实际应用场景 4.1 Web服…...
ShenNiusModularity项目源码学习(21:ShenNius.Admin.Mvc项目分析-6)
菜单列表页面用于新建、维护及删除系统所有模块所需的菜单信息,包括菜单名称、菜单中的按钮、菜单关联的后台服务地址及请求方式等。菜单列表页面的后台控制器类MenuController位于ShenNius.Admin.Mvc项目的Areas\Sys\Controllers内,页面文件位于同项目的…...
基于单片机的游泳馆智能管理系统
标题:基于单片机的游泳馆智能管理系统 内容:1.摘要 随着人们生活水平的提高,游泳馆的规模和客流量不断增大,传统的管理方式已难以满足高效、便捷的管理需求。本研究的目的是设计并实现一种基于单片机的游泳馆智能管理系统。方法上,采用单片机…...
开发了一个b站视频音频提取器
B站资源提取器-说明书 一、功能说明 本程序可自动解密并提取B站客户端缓存的视频资源,支持以下功能: - 自动识别视频缓存目录 - 将加密的.m4s音频文件转换为标准MP3格式 - 将加密的.m4s视频文件转换为标准MP4格式(合并音视频流)…...
vue2项目,为什么开发环境打包出来的js文件名是1.js 2.js,而生产环境打包出来的是chunk-3adddd.djncjdhcbhdc.js
Vue2项目开发环境与生产环境JS文件名差异的核心原理及配置逻辑如下: 一、文件名差异的底层机制 1、Webpack默认命名策略 开发环境默认禁用哈希,采用[id].js命名规则(如1.js),生产环境启用[chunkhash]生成chunk-xxx…...
SQL进阶知识:六、动态SQL
今天介绍下关于动态SQL的详细介绍,并结合MySQL数据库提供实际例子。 动态SQL是指在运行时动态构建和执行SQL语句的技术。这种技术在处理复杂的查询逻辑、参数化查询或在某些情况下需要根据用户输入动态调整查询时非常有用。MySQL支持动态SQL,主要通过PRE…...
Spring Boot常用注解详解:实例与核心概念
Spring Boot常用注解详解:实例与核心概念 前言 Spring Boot作为Java领域最受欢迎的快速开发框架,其核心特性之一是通过注解(Annotation)简化配置,提高开发效率。注解驱动开发模式让开发者告别繁琐的XML配置ÿ…...
java 富文本转pdf
前言: 本文的目的是将传入的富文本内容(html标签,图片)并且分页导出为pdf。 所用的核心依赖为iText7。 因为itextpdf-core的核心包在maven中央仓库中,阿里云华为云等拉不下来,中央仓库在外网,并且此包在中央仓库中未…...
17.第二阶段x64游戏实战-人工遍历二叉树结构
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:16.第二阶段x64游戏实战-分析二叉树结构 上一个内容里把二叉树的结构写了写&am…...
C#基于Sunnyui框架和MVC模式实现用户登录管理
C#基于Sunnyui框架和MVC模式实现用户登录管理 1 Controller1.1 UserManagementController.cs(控制器入口) 2 Model2.1 UserRepository.cs(用户管理模型)2.2 User.cs(用户结构体)2.3 SQLiteHelper.cs&#x…...
Spring Boot实战(三十六)编写单元测试
目录 一、什么是单元测试?二、Spring Boot 中的单元测试依赖三、举例 Spring Boot 中不同层次的单元测试3.1 Service层3.2 Controller 层3.3 Repository层 四、Spring Boot 中 Mock、Spy 对象的使用4.1 使用Mock对象的背景4.2 什么是Mock对象,有哪些好处…...
声音分离人声和配乐-从头设计数字生命第4课——仙盟创梦IDE
音频分离在数字人中具有多方面的重要作用,主要体现在以下几个方面: 提高语音合成质量:通过音频分离,可以将原始音频中的语音部分与其他背景噪音或干扰声音分离开来。这样在进行语音合成时,能够获得更纯净的语音信号&am…...
http协议、全站https
一、http协议 1、为何要学http协议? 用户用浏览器访问网页,默认走的都是http协议,所以要深入研究web层,必须掌握http协议 2、什么是http协议 1、全称Hyper Text Transfer Protocol(超文本传输协议) ### 一个请求得到一个响应包 普通…...
Mediamtx与FFmpeg远程与本地推拉流使用
1.本地推拉流 启服 推流 ffmpeg -re -stream_loop -1 -i ./DJI_0463.MP4 -s 1280x720 -an -c:v h264 -b:v 2000k -maxrate 2500k -minrate 1500k -bufsize 3000k -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/stream 拉流 ffplay -rtsp_transport tcp rtsp://43.136.…...
css3新特性第七章(3D变换)
css新特性第七章(3D变换) 一、3d空间和景深 元素进行 3D 变换的首要操作:父元素必须开启 3D 空间! 使用 transform-style 开启 3D 空间,可选值如下: flat : 让子元素位于此元素的二维平面内( 2D 空间&…...
redis经典问题
1.缓存雪崩 指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。 解决方案: 1)Redis 高可用,主从哨兵,Redis cluster,避免全盘崩…...
数据仓库是什么?数据仓库架构有哪些?
目录 数据仓库是什么?数据仓库架构有哪些? 一、数据仓库是什么? 二、数据仓库的架构分层 1. 获取层 2. 数据层 3. 应用层 4. 访问层 三、数据仓库的价值体现 1.决策支持 2.业务优化 3.提升竞争力 四、数据仓库的未来发展趋势 总…...
Nginx 通过 Let‘s Encrypt 实现 HTTPS 访问全流程指南
一、Let’s Encrypt 与 Certbot 简介 Let’s Encrypt 是由非营利组织 ISRG 运营的免费证书颁发机构(CA),旨在推动 HTTPS 的普及。其核心工具 Certbot 能自动化完成证书申请、部署与续期,大幅降低 HTTPS 的配置复杂度。通过 Certb…...
网络知识:路由器静态路由与动态路由介绍
目录 一、静态路由 1.1 什么是静态路由? 1.2 静态路由的好处 1.3 静态路由的局限 1.4 静态路由应用场景 微型办公室网络 性能要求高业务流量 安全性要求高的环境 二、动态路由 2.1 什么是动态路由? 2.2 动态路由的好处 2.3 动态路由的局限 2.4 动态路由的应用场…...
LLaMA3微调全流程:从LoRA到QLoRA,7B参数模型推理速度提升4倍的代码实战
LLaMA3微调全流程:从LoRA到QLoRA,7B参数模型推理速度提升4倍的代码实战 发现了一个巨牛的人工智能学习网站,分享一下给大家!https://www.captainbed.cn/ccc 前言 在大模型时代,LLaMA系列作为开源社区的明星模型&#…...
日内组合策略思路
一、策略概述 本策略是一种针对日内交易设计的策略,其核心在于通过识别市场趋势和突破信号,结合动态止损和止盈机制,实现日内交易的盈利。策略以金字塔式的加仓方式控制风险,并通过灵活的平仓策略锁定收益。 二、交易逻辑思路 市场…...
从空气污染监测到嵌入式仿真教学:基于STM32与MQ135的实践探索
一、嵌入式系统在环境监测中的技术演进 随着全球城市化进程加速,世界卫生组织(WHO)数据显示,92%的人口长期暴露于超标PM2.5环境中。在此背景下,基于STM32微控制器的智能监测系统因其高性价比(单节点成本低…...
【数据结构】Map与Set结构详解
数据结构系列五:Map与Set(一) 一、接口的实现 1.方法上 2.成员上 二、Map的内外双接口结构 1.实现 1.1外部Map接口的实现 1.1.1临摹整体 1.1.2外部类实现整体 1.2内部Entry接口的实现 1.2.1临摹内部 1.2.2内部类实现内部 2.关系 3.意义 3.1逻辑内聚 …...
银河麒麟(内核CentOS8)安装rbenv、ruby2.6.5和rails5.2.6
一、安装 rbenv 和 ruby-build 1.安装 rbenv git clone https://github.com/rbenv/rbenv.git ~/.rbenv 2. 添加 rbenv 到 PATH echo export PATH"$HOME/.rbenv/bin:$PATH" >> ~/.bashrc echo eval "$(rbenv init -)" >> ~/.bashrc source ~…...
豆包桌面版 1.47.4 可做浏览器,免安装绿色版
自己动手升级更新办法: 下载新版本后安装,把 C:\Users\用户名\AppData\Local\Doubao\Application 文件夹的文件,拷贝替换 DoubaoPortable\App\Doubao 文件夹的文件,就升级成功了。 再把安装的豆包彻底卸载就可以。 桌面版比网页版…...
Linux 命令行与 vi/vim 编辑器完全指南
一、Linux 命令行基础 (一)命令与命令行简介 命令:Linux 系统内置的操作指令,以字符化形式使用,用于指示系统执行特定任务。 命令行(终端):提供字符化的操作界面,用户通…...
海量聊天消息处理:ShardingJDBC分库分表、ClickHouse冷热数据分离、ES复合查询方案、Flink实时计算与SpringCloud集成
海量聊天消息处理:ShardingJDBC分库分表、ClickHouse冷热数据分离、ES复合查询方案、Flink实时计算与SpringCloud集成 一、背景介绍 每天有2000万条聊天消息,一年下来几千万亿海量数据。为应对这种规模的数据存储和处理需求,本文将从以下几…...
金融系统上云之路:云原生后端架构在金融行业的演化与实践
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:为什么金融行业也要“云原生”? 金融行业素来以“安全第一、稳定优先”著称,面对每日亿级交易请求、秒级风控响应、PB级数据处理,系统稳定性和性能要求极高。长期以来,大型金融机构往…...
每日c/c++题 备战蓝桥杯 ([洛谷 P1226] 快速幂求模题解)
[洛谷 P1226] 快速幂求模题解 📌 题目链接 https://www.luogu.com.cn/problem/P1226 📝 题目描述 给定正整数 a、b 和质数 p,要求计算: a^b % p其中: 1 ≤ a ≤ 10^90 ≤ b ≤ 10^92 ≤ p ≤ 10^9 💡…...
深度学习小记(包括pytorch 还有一些神经网络架构)
这个是用来增加深度学习的知识面或者就是记录一些常用的命令,会不断的更新 import torchvision.transforms as transforms toPIL transforms.ToPILImage()#可以把tensor转换为Image类型的 imgtoPIL(img) #利用save就可以保存下来 img.save("/opt/data/private/stable_si…...
Spring Boot默认缓存管理
Spring框架支持透明地向应用程序添加缓存,以及对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法,从而减少操作数据的执行次数,同时不会对程序本身造成任何干扰。Spring Boot继承了Spring框架的缓存管理功能ÿ…...
倚光科技:微透镜阵列低成本加工新范式
在光通信、机器视觉、生物医学成像等前沿领域,微透镜阵列凭借其独特的光学特性成为不可或缺的核心部件。然而,传统加工方式往往面临成本高、效率低、精度难控等困境。倚光科技深耕光学加工领域多年,创新运用单点金刚石车床技术,成…...
Vue+Flask豆瓣LSTM影评+推荐算法大数据可视化平台深度学习系统源码
文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站,有好处! 编号: F011 视频介绍 VueFlask豆瓣LSTM影评推荐算法大数据可视化平台深度学习系统源码(2023重制) 1…...
【MySQL】基本查询
目录 增加 查询 基本查询 where子句 结果排序 筛选分页结果 修改(更新) 删除 普通删除 截断表 插入查询结果 聚合函数 分组查询 这一节的内容是对表内容的增删查改,其中重点是表的查询 增加 语法: INSERT [INTO] table_name [(column [, …...
hive默认的建表格式
在 Hive 中创建表时,默认的建表语法格式如下: CREATE TABLE table_name (column1_type,column2_type,... ) ROW FORMAT DELIMITED FIELDS TERMINATED BY , STORED AS TEXTFILE;在这个语法中: CREATE TABLE table_name:指定要创建…...
配置RSUniVLM环境(自用)
首先git clone这个仓库,但是好像不太行,就直接下载下来吧 创个容器弄,容器里需要conda gpu 镜像的话 在dockerhub找到了一个:docker pull vkashyap10/llava-next 下载在了 ssh root10.12.107.240 amos123 这个机器上。等会看…...
产品经理对于电商接口的梳理||电商接口文档梳理与接入
接口梳理7个注意点总结 ①注意要测试环境和生产环境。生产上线时候要提醒研发换到生产环境调用。 ②注意必输字段和选输字段,要传入字段的含义和校验。枚举值不清楚含义的要询问对方含义,比如说单据类型字段枚举值是B2C发货单,BBC发货单&am…...
深入探索Spark-Streaming:从Kafka数据源创建DStream
在大数据处理领域,Spark-Streaming是一个强大的实时流处理框架,而Kafka作为高性能的分布式消息队列,二者结合能实现高效的数据处理。今天就来聊聊Spark-Streaming中从Kafka数据源创建DStream的相关知识。 早期,Spark-Streaming通过…...
R 语言科研绘图第 41 期 --- 桑基图-基础
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
基于STM32的汽车主门电动窗开关系统设计方案
芯片和功能模块选型 主控芯片 STM32F103C8T6:基于 ARM Cortex - M3 内核,有丰富的 GPIO 接口用于连接各类外设,具备 ADC 模块可用于电流检测,还有 CAN 控制器方便实现 CAN 总线通信。它资源丰富、成本低,适合学生进行 DIY 项目开发。按键模块 轻触按键:用于控制车窗的自…...
Spring Boot 配置处理器深度解析:元数据驱动的工程实践
Spring Boot 配置处理器深度解析:元数据驱动的工程实践 引言:为什么关注配置处理器? 在 Spring Boot 中,spring-boot-configuration-processor 是支撑“配置即文档”“配置即代码”的基础设施。它通过编译期生成结构化的配置元数…...
深入详解人工智能数学基础——概率论中的贝叶斯深度学习
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...
Bandizip解压缩软件 v7.37 正式版解锁专业版
软件介绍 Bandizip 是一款专业的解压缩软件,号称解压速度最快的压缩和解压缩文件管理器。支持多核快速压缩、文件拖放,可创建带密码和多卷的压缩包,提取包括RAR/RAR5/7Z/ZIP在内30多种格式;支持WinZip、7-Zip和WinRAR及其它压缩格…...
算法笔记.spfa算法(bellman-ford算法的改进)
题目:(来源于AcWing) 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible。 …...
HTML给图片居中
在不同的布局场景下,让 <img> 元素居中的方法有所不同。下面为你介绍几种常见的居中方式 1. 块级元素下的水平居中 如果 <img> 元素是块级元素(可以通过 display: block 设置),可以使用 margin: 0 auto 来实现水平居…...
C#中用 OxyPlot 在 WinForms 实现波形图可视化(附源码教程)
今天给大家安利一个超级实用的绘图控件库——OxyPlot,配合WinForms使用,让你轻松绘制专业级图表! 本文将手把手教你如何搭建一个简单的波形图显示窗口,完整步骤 源码解析,建议收藏! 项目搭建步骤…...
arm-linux emmc镜像备份 和 rootfs镜像备份
介绍 对于系统镜像存储介质,我们更推荐使用eMMC, eMMC具有更快的读写速度和更高的稳定系, 而SD卡会有兼容性较差的问题, 使用部分品牌部分系列的SD卡会导致系统无法启动或运行异常。 另外,安卓系统镜像无法运行在SD卡上。 注意事项 使用野火LubanCat的镜像烧录到SD卡, 只…...
opencv--图像变换
图像变换 图像滤波用于处理像素(去噪),从而改变图像质量。 图像的几何变换是指改变图像的几何位置、几何形状、几何尺寸等几何特征。 <详细了解,看opencv书> 概念 矩阵的运算 链接 齐次坐标 链接 齐次坐标就是用N1维来代表N维坐标ÿ…...
C语言基础(day0424)
目录 一. 键盘输入 1.1 grtchar() 1.2 scanf() 总结: 二. 全局变量/局部变量(函数的分类) 1.全局变量 2.局部变量 三.C语言内存模型(堆栈内存and so on ) 3.1 栈区&#x…...
前端项目搭建集锦:vite、vue、react、antd、vant、ts、sass、eslint、prettier、浏览器扩展,开箱即用,附带项目搭建教程
前端项目搭建集锦:vite、vue、react、antd、vant、ts、sass、eslint、prettier、浏览器扩展,开箱即用,附带项目搭建教程 前言:一、Vue项目下载快速通道二、React项目下载快速通道三、BrowserPlugins项目下载快速通道四、项目搭建教…...