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

Go语言之路————func

Go语言之路————func

  • 前言
  • 1.最基本的方法定义
  • 2.方法中参数的传递
  • 3.方法中的返回值
  • 4.匿名方法
  • 5.闭包的概念
  • 6.defer关键词

前言

  • 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后面能正常完成工作上的业务开发的过程,如果你也是个小白或者转Go语言的,希望我这篇文章对你有所帮助。
  • 有关go其他基础的内容的文章大家可以查看我的主页,接下来主要就是把这个系列更完,更完之后我会在每篇文章中挂上连接,方便大家跳转和复习。

本文我会详细的讲述go中的方法的用法,都是一些最常用的,必须要掌握的知识点,且随我娓娓道来。

1.最基本的方法定义

go中的方法,基本都用func关键词来声明的(特殊情况用var声明),下面这个代码,就表示了一个无返回值,无参数的一个方法

func test1() {}var test2 = func() {}

它类似于什么呢,我给你举个例子,这下看懂了吧

public void test1() {}

2.方法中参数的传递

go中方法的参数传递,也是名字在前,类型在后

func test1(a int, b string) {fmt.Println(a, b)
}
func main() {test1(1, "2")
}

go中变长参数,跟Java其实差不多用…来表示,只是前后的问题

func test3(b ...int32) {fmt.Println(b)
}
func main() {test3(1, 2, 3)
}//输出:[1 2 3]

3.方法中的返回值

go中方法的返回值,也是比较简单的,分为普通返回值和带参数的返回值,当然也可以没有返回值,没有返回值就不写,不用加void字段

  1. 普通返回值
    我们新建一个方法addNum,返回两数相加之和

    func addNum(a, b int) int {return a + b
    }func main() {num := addNum(1, 2)fmt.Println(num) //输出为3
    }
    

    通过这个例子我们能看到,go中的返回值是跟在参数后面、左花括号之前的,这是它的语法,如果用Java来比较的话:func addNum(a, b int) int {},等于public int addNum(int a,int b),这样一说大家都清楚了吧。

  2. 带参数返回值
    当然,go中还有另一种返回方式,就是你可以指定返回的值,我们稍微改写下addNum方法,看下面这个例子

    func addNum(a, b int) (c int) {c = a + breturn
    }func main() {num := addNum(1, 2)fmt.Println(num) //输出3
    }
    

    通过这个例子我们看到,如果你要指定返回值c,那么在参数后面,你要用括号把返回值扩起来,并且指定类型就好了。
    思考一下:我上面的return后面没有任何返回,如果代码改成这样返回什么

    	func addNum(a, b int) (c int) {c = a + breturn 0}
    

    最后答案是输出0,即使我们上面返回值指定了c,但是用return的话会将0赋值给c,最后返回固定就是0,随便你传什么参数。

  3. 多个返回值
    go中支持一个函数返回多个值,多个值我们也要用括号包起来,并指明类型,看看下面这个例子

    func moreReturn(a, b int) (c, d int) {return a, b
    }func main() {num1, num2 := moreReturn(1, 2)fmt.Println(num1, num2)//输出1,2
    }
    

    举一反三,结合上面第二点带参数返回值,我们代码还可以写成这样,输出也是1,2

    func moreReturn(a, b int) (c, d int) {c = ad = breturn
    }func main() {num1, num2 := moreReturn(1, 2)fmt.Println(num1, num2)
    }
    

PS:go中的方法是没有重载的,意思不能有相同名字、但是参数不同的两个方法。

4.匿名方法

go中的匿名方法,类似与Java中的匿名类(Java8之后的lamda表达式有匿名方法那味了),就是没有名字的方法,我们直接看下面例子:

func main() {func() {fmt.Println(2)}()
}
//输出2

由于没有名字,那说明我们是不能调用的,只有写在代码逻辑里表示立即执行,通常结合go关键词用(后面会讲),需要注意的就是我这里写的格式,在代码最后有个括号()表示传参调用,可能这样有点抽象,我们看看下面一个有参数的例子你就知道了

func main() {func(a, b int) {fmt.Println(a + b)}(1, 2)
}

代码输出为3,最后面括号里面的(1,2)就代表调用传参。

5.闭包的概念

go中闭包的概念,类似于Java中的Lamda 表达式,它是一种高级语法,与匿名函数一起使用,闭包 = 函数 + 环境引用吗
我们看看下面的例子,这就是一个闭包函数

func main() {result := cal(1)for i := 0; i < 10; i++ {fmt.Println(result())}
}func cal(i int) func() int {return func() int {i = i + 1return i}
}

怎么来理解呢,我们先定义一个方法叫做cal(),接收一个int参数i,返回值是一个方法,你没听错,方法也能当做返回值。这个方法获取到参数i,然后作+1操作,结合上面我们提出来的概念:闭包 = 函数 + 环境。我们可以将cal()方法整体看做一个环境,我们main方法中调用cal,传入参数1,这个1在这个环境里面的,我们每次做了+1操作,这个环境中的1也会跟这改变,所以我们拿到cal的返回值,它是一个函数,我们循环调用这个函数10次,就会得到一个整齐的序列
最后我们的输出结果就是:

2
3 
4 
5 
6 
7 
8 
9 
10
11

6.defer关键词

defer是go中的一个关键词,它的作用就是延迟调用,在哪延迟,在方法返回之前调用。看看下面这个例子

func main() {deferTest()
}func deferTest() {defer fmt.Println(1)fmt.Println(2)fmt.Println(3)
}
//输出2,3,1

都是两个Println输出,但是第一个我前面加了defer关键词,所以导致它被延迟调用了,只有当执行完deferTest中所有代码逻辑,return之前,才会调用defer关键词修饰的代码,通常我们defer后面跟一个方法。

如果多个defer,其中的调用逻辑是先进后出,是一个栈的模式

func deferTest() {defer fmt.Println(1)defer fmt.Println(2)defer fmt.Println(3)fmt.Println(4)fmt.Println(5)
}
//输出结果为:4,5,3,2,1

相关文章:

Go语言之路————func

Go语言之路————func 前言1.最基本的方法定义2.方法中参数的传递3.方法中的返回值4.匿名方法5.闭包的概念6.defer关键词 前言 我是一名多年Java开发人员&#xff0c;因为工作需要现在要学习go语言&#xff0c;Go语言之路是一个系列&#xff0c;记录着我从0开始接触Go&#…...

基于 Electron 应用的安全测试基础 — 提取和分析 .asar 文件

视频教程在我主页简介或专栏里 目录&#xff1a; 提取和分析 .asar 文件 4.1. .asar 文件提取工具 4.1.1. 为什么选择 NPX&#xff1f; 4.2. 提取过程 4.3. 提取 .asar 文件的重要性 4.3.1 关键词 4.3.2 执行关键词搜索 4.3.2.1 使用命令行工具“grep”进行关键词搜索 4.3.2…...

微软与腾讯技术交锋,TRELLIS引领3D生成领域多格式支持新方向

去年 11 月&#xff0c;腾讯推出 Hunyuan3D 生成模型&#xff0c;是业界首个同时支持文字和图像生成 3D 的开源大模型。紧接着不到一个月&#xff0c;微软便发布了全新框架 TRELLIS&#xff0c;加入 3D 资产生成领域的竞争中。TRELLIS 支持多格式输出&#xff0c;包括辐射场、3…...

ubuntu18.04开发环境下samba服务器的搭建

嵌入式linux的发展很快&#xff0c;最近准备在一个新项目上采用新一代的linux核心板&#xff0c;发现linux内核的版本已经更新到5.4以上甚至6.0以上&#xff1b;之前常用的linux内核版本是2.6.4&#xff0c;虽然在某些项目上还能用但是明显跟不上时代的步伐了&#xff0c;所以要…...

LabVIEW实现油浸式变压器自主监测与实时报告

油浸式变压器广泛应用于电力系统中&#xff0c;尤其是在电力传输和分配领域。为了确保变压器的安全、稳定运行&#xff0c;及时监测其工作状态至关重要。传统的变压器监测方法通常依赖人工巡检和定期检查&#xff0c;但这不能及时发现潜在的故障隐患&#xff0c;且效率较低。随…...

21_Spring Boot缓存注解介绍

前面我们通过使用@EnableCaching、@Cacheable注解实现了Spring Boot默认的基于注解的缓存管理,除此之外,还有更多的缓存注解以及注解属性可以配置优化缓存管理。下面我们针对Spring Boot中的缓存注解及相关属性进行详细讲解。 1.@EnableCaching注解 @EnableCaching是由Spri…...

Linux和Docker常用终端命令:保姆级图文详解

文章目录 前言1、Docker 常用命令1.1、镜像管理1.2、容器管理1.3、网络管理1.4、数据卷管理1.5、监控和性能管理 2、Linux 常用命令分类2.1、文件和目录管理2.2、用户管理2.3、系统监控和性能2.4、软件包管理2.5、网络管理 前言 亲爱的家人们&#xff0c;创作很不容易&#xf…...

【WRF理论第九期】输出文件:wrfout 和 wrfrst

【WRF理论第九期】输出文件:wrfout 和 wrfrst 1. wrfout 文件wrfout 文件读取(Python)2. wrfrst 文件参考在 WRF(Weather Research and Forecasting)模型中,wrfout 和 wrfrst 是两种重要的输出文件,分别代表不同类型的模拟结果和功能。 1. wrfout 文件 wrfout 文件是 …...

学习threejs,使用OrbitControls相机控制器

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.OrbitControls 相机控…...

CryptoMamba:利用状态空间模型实现精确的比特币价格预测

“CryptoMamba: Leveraging State Space Models for Accurate Bitcoin Price Prediction” 论文地址&#xff1a;https://arxiv.org/pdf/2501.01010 Github地址&#xff1a;https://github.com/MShahabSepehri/CryptoMamba 摘要 预测比特币价格由于市场的高波动性和复杂的非线…...

RocketMQ 知识速览

文章目录 一、消息队列对比二、RocketMQ 基础1. 消息模型2. 技术架构3. 消息类型4. 消费者类型5. 消费者分组和生产者分组 三、RocketMQ 高级1. 如何解决顺序消费和重复消费2. 如何实现分布式事务3. 如何解决消息堆积问题4. 如何保证高性能读写5. 刷盘机制 &#xff08;topic 模…...

uniapp button 去除边框

在找去除边框的办法时试了好久 css里设置了 border: none; /* 去掉边框 */outline: none; /* 确保点击时不出现轮廓 */压根不行&#xff0c;按钮还是浮在页面上有明显轮廓 最后看到了大佬的文章 https://www.cnblogs.com/menxiaojin/p/13752916.html button::after{border: no…...

基于mybatis、bootstarp、的maven新人练手学生管理studentManage项目

分析&#xff1a;如果能注册并且登录&#xff0c;那每个人都是管理员&#xff0c;任何人都可以对数据恶意操作&#xff0c;这样数据极其不安全。为了数据的安全考虑&#xff0c; 要么创建学生注册页面&#xff0c;但是主页面只能显示本人信息&#xff0c;不能对其他人进行操作&…...

Visual Studio Community 2022(VS2022)安装方法

废话不多说直接上图&#xff1a; 直接上步骤&#xff1a; 1&#xff0c;首先可以下载安装一个Visual Studio安装器&#xff0c;叫做Visual Studio installer。这个安装文件很小&#xff0c;很快就安装完成了。 2&#xff0c;打开Visual Studio installer 小软件 3&#xff0c…...

.NET 9.0 的 Blazor Web App 项目中 Hash 变换(MD5、Pbkdf2) 使用备忘

一、生成 string 对应的 MD5 码 /// <summary>/// 生成 string 对应的 MD5 码/// </summary>/// <param name"s">需要转换的字符串 string<br/>/// 如果用于远程第三方认证&#xff0c;s username DateTime.Now.Ticks.ToString() 线下传递…...

【Unity-Game4Automation PRO 插件】

Game4Automation PRO 插件 是一个用于 Unity 引擎 的工业自动化仿真工具&#xff0c;它提供了对工业自动化领域的仿真和虚拟调试支持&#xff0c;特别是在与工业机器人、生产线、PLC 系统的集成方面。该插件旨在将工业自动化的实时仿真与游戏开发的高质量 3D 可视化能力结合起来…...

Js:正则表达式及其方法

一、正则表达式的介绍&#xff1a; 1、含义&#xff1a; 正则表达式用来定义一个规则&#xff0c;是Js中的一个对象。 2、作用&#xff1a; ① 计算机可以检查一个字符串是否符合规则 ② 将字符串中符合规则的内容进行提取 二、正则表达式的创建&#xff1a; 1、 通过构造…...

Webpack和Vite的区别

一、构建速度方面 webpack默认是将所有模块都统一打包成一个js文件&#xff0c;每次修改都会重写构建整个项目&#xff0c;自上而下串行执行&#xff0c;所以会随着项目规模的增大&#xff0c;导致其构建打包速度会越来越慢 vite只会对修改过的模块进行重构&#xff0c;构建速…...

获取当前页面的url相关信息

引言&#xff1a;如何通过javascript获取当前html页面的链接信息 let currentUrl window.location.href; let protocol window.location.protocol; // 协议 let host window.location.host; // 主机名和端口 let hostname window.location.hostname; // 主机名 le…...

iOS面试模版

iOS基础面试题&#xff1a;iOS基础知识| ProcessOn免费在线作图,在线流程图,在线思维导图 iOS高级面试题&#xff1a;https://juejin.cn/post/6844903752835530765 先自我介绍&#xff0c;看有无亮点&#xff0c;了解一下做过的项目类型 了解技术栈&#xff08;oc、swift、sw…...

大模型相关资料、基础技术和排行榜

大模型排行榜 测试集CEval中文多个学科测试集排名MMLU大规模多任务语言理解英文排名&#xff0c;介绍斯坦福排行榜Math-VMath-VistaOpen LLMs LeaderboardCMMLU 大模型数据集 标题简介19个大模型常用的评估数据集和训练数据集汇总19个大模型常用的评估数据集和训练数据集汇总最…...

RDD和DataFrame两种数据结构的对比

文章目录 1. 实战概述2. RDD&#xff08;弹性分布式数据集&#xff09;2.1 RDD概念2.2 RDD特点2.3 实战操作 3. DataFrame&#xff08;数据帧&#xff09;3.1 DataFrame概念3.2 DataFrame优点3.3 实战操作 4. 实战小结 1. 实战概述 今天我们将深入探讨 Apache Spark 中的两种核…...

10.Linux 时间

文章目录 10.1 日历时间&#xff08;Calendar Time&#xff09;1. **日历时间的表示**2. **系统调用 gettimeofday()**3. **系统调用 time()**4. **time() 与 gettimeofday() 的关系** 总结 10.2 时间转换函数1. **ctime() 示例**2. **asctime() 示例**3. **strftime() 示例**4…...

Java最常用的几种设计模式详解及适用业务场景

Java设计模式详解及适用业务场景 在软件开发中&#xff0c;设计模式是解决常见问题的最佳实践。通过采用这些设计模式&#xff0c;我们可以提高代码的可维护性、可读性和可扩展性。本文将介绍几种常见的Java设计模式&#xff0c;并结合具体代码示例&#xff0c;探讨它们适用的…...

运行fastGPT 第二步 安装宝塔面板 用于管理安装docker和其文件

if [ -f /usr/bin/curl ];then curl -sSO https://download.bt.cn/install/install_panel.sh;else wget -O install_panel.sh https://download.bt.cn/install/install_panel.sh;fi;bash install_panel.sh ed8484bec 上面运行以下&#xff0c;安装宝塔。如果不行&#xff0c;系…...

深度学习电影推荐-CNN算法

文章目录 前言视频演示效果1.数据集环境配置安装教程与资源说明1.1 ML-1M 数据集概述1.1.1数据集内容1.1.2. 数据集规模1.1.3. 数据特点1.1.4. 文件格式1.1.5. 应用场景 2.模型架构3.推荐实现3.1 用户数据3.2 电影数据3.3 评分数据3.4 数据预处理3.5实现数据预处理3.6 加载数据…...

CSS3的aria-hidden学习

前言 aria-hidden 属性可用于隐藏非交互内容&#xff0c;使其在无障碍 API 中不可见。即当aria-hidden"true" 添加到一个元素会将该元素及其所有子元素从无障碍树中移除&#xff0c;这可以通过隐藏来改善辅助技术用户的体验&#xff1a; 纯装饰性内容&#xff0c;如…...

如何在前端给视频进行去除绿幕并替换背景?-----Vue3!!

最近在做这个这项目奇店桶装水小程序V1.3.9安装包骑手端V2.0.1小程序前端 最近&#xff0c;我在进行前端开发时&#xff0c;遇到了一个难题“如何给前端的视频进行去除绿幕并替换背景”。这是一个“数字人项目”所需&#xff0c;我一直在冥思苦想。终于有了一个解决方法…...

【Linux】进程间通信IPC

目录 进程间通信 IPC 1. 进程间通信方式 2. 无名管道 2.1 特点 2.2 函数接口 2.3 注意事项 3. 有名管道 3.1 特点 3.2 函数接口 3.3 注意事项 3.4 有名管道和无名管道的区别 4. 信号 4.1概念 4.2信号的响应方式 4.3 信号种类 4.4 函数接口 4.4.1 信号发送和挂…...

go语言实现UTF8与GB2312内码转换

使用Go语言做个UTF-8转GB2312的代码,输入utf-8编码的文本&#xff0c;输出转换后的国标编码的hex内码 package mainimport ("fmt""os""strings""golang.org/x/text/encoding/simplifiedchinese""golang.org/x/text/transform&quo…...

【WPS】【WORDWORD】【JavaScript】实现微软WORD自动更正的效果

1.效果展示 2.核心代码展示 function readTableData(filePath) {let tableData {};let doc Application.Documents.Open(filePath); // 打开文档let table doc.Tables(1); // 获取第一个表格// 遍历表格&#xff0c;存储编号和描述的映射for (let i 1; i < table.Rows.…...

Excel数据叠加生成新DataFrame:操作指南与案例

目录 一、准备工作 二、读取Excel文件 三、数据叠加 四、处理重复数据(可选) 五、保存新DataFrame到Excel文件 六、案例演示 七、注意事项 八、总结 在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步的分析和处…...

springBoot项目使用Elasticsearch教程

目录 一、引言&#xff08;一&#xff09;使用背景&#xff08;二&#xff09;版本库区别 二、引入依赖&#xff08;一&#xff09;springboot集成的es依赖&#xff08;建议&#xff09;&#xff08;二&#xff09;es提供的客户端库 三、配置&#xff08;以yaml文件为例&#x…...

摄像头模块在狩猎相机中的应用

摄像头模块是狩猎相机的核心组件&#xff0c;在狩猎相机中发挥着关键作用&#xff0c;以下是其主要应用&#xff1a; 图像与视频拍摄 高清成像&#xff1a;高像素的摄像头模块可确保狩猎相机拍摄出清晰的图像和视频&#xff0c;能够捕捉到动物的毛发纹理、行为细节及周围环境的…...

栈溢出原理

文章目录 前言一、基本示例二、分析栈1. 先不考虑gets函数的栈情况2. 分析gets函数的栈区情况 三、利用栈1. 构造字符串2. 利用漏洞 前言 栈溢出指的是程序向栈中某个变量中写入的字节数超过了这个变量本身所申请的字节数&#xff0c;因而导致与其相邻的栈中的变量的值被改变。…...

38.【3】CTFHUB web sql 报错注入

进入靶场 按照提示输入1 显示查询正确 既然是报错注入&#xff0c;先判断整形还是字符型注入 先输入1 and 11 再输入1 and 12 都显示查询正确&#xff0c;可知此为字符串型注入&#xff0c;不是数字型注入 然后就不会了 求助AI和其他wp 由以上2张搜索结果知updatexml是适用…...

SSE部署后无法连接问题解决

1. 问题现象 通过域名访问 https://api-uat.sfxs.com/sse/subscribe?tokenBearer%20eyJUxMiJ9.eyJhY2NvdW50IjoiYWRtaWZ0NvZGUiOiIwMDEiLCJyb2xidXNlcm5hbWUiOiLotoXnuqfnrqHnkIblkZgifQ.tlz9N61Y4 一直无法正常连接 2. 问题解决 nginx.conf进行配置 server {location /ss…...

sparkRDD教程之基本命令

作者&#xff1a;nchu可乐百香果 指导者&#xff1a;nchu-YoungDragon 1.前期准备 &#xff08;1&#xff09;从迅雷网盘上面下载这个项目&#xff0c;并且把scala&#xff0c;maven和java环境配置好 网盘链接&#xff1a; 分享文件&#xff1a;SparkRDD.zip 链接&#xf…...

【JavaScript】比较运算符的运用、定义函数、if(){}...esle{} 语句

比较运算符 !><> < 自定义函数&#xff1a; function 函数名&#xff08;&#xff09;{ } 判断语句&#xff1a; if(判断){ }else if(判断){ 。。。。。。 }else{ } 代码示例&#xff1a; <!DOCTYPE html> <html> <head><meta charset&quo…...

ShardingSphere—SQL 路由与执行解析原理

在分布式数据库中&#xff0c;SQL 路由、解析及执行是核心机制&#xff0c;用于高效处理 SQL 请求并将其分发到合适的数据节点。在 ShardingSphere 中&#xff0c;这一过程分为三个主要阶段&#xff1a;SQL 路由、SQL 解析 和 SQL 执行&#xff0c;通过灵活的策略和优化机制实现…...

机器学习——什么是代价函数?

1.代价函数的定义 首先,提到代价函数是估计值和实际值的差,这应该是指预测值和真实值之间的差异,用来衡量模型的好坏。 在一元线性模型中,模型是直线,有两个参数,可能是斜率和截距。 通过调整这两个参数,让代价函数最小,这应该是说我们要找到最佳的斜率和截距,使得预测…...

k8s集群换IP

k8s集群搭建及节点加入时需要确定IP&#xff0c;但安装完成后设备移动到新环境可能出现网段更换或者IP被占用的情况&#xff0c;导致无法ping通节点或者无法打开原IP的服务。 解决方法为保持原有IP不更换&#xff0c;给网卡再加一个IP 这边使用两个ubuntu虚拟机模拟服务器和w…...

RPC 源码解析~Apache Dubbo

解析 RPC&#xff08;远程过程调用&#xff09;的源码可以帮助你深入理解其工作原理和实现细节。为了更好地进行源码解析&#xff0c;我们选择一个流行的 RPC 框架——Apache Dubbo 作为示例。Dubbo 是一个高性能、轻量级的开源 Java RPC 框架&#xff0c;广泛应用于企业级应用…...

【认识油管头部频道】ep5 “5-Minute Crafts”——DIY 和生活技巧

5-Minute Crafts 是一个非常受欢迎的 DIY 和生活技巧频道&#xff0c;它的火爆有多方面的原因&#xff1a; 1. 简单实用的内容 视频主要以解决日常生活中遇到的小问题为主&#xff0c;提供简单易学的技巧&#xff0c;吸引了想快速获取实用知识的观众。 2. 短视频形式 每个视…...

vue3 uniapp封装一个瀑布流组件

新增组件m-waterfall 这样就可以在页面直接使用 不用在引入了 <template><view class"m-waterfall"><view id"m-left-column" class"m-column"><slot name"left" :leftList"leftList"></slot&…...

基于Java的语音陪聊软件——支持聊天私聊-礼物系统-直播系统-缘分匹配-游戏陪玩

丰富的经验、成熟的技术&#xff0c;打造适合当下市场发展的语音交友软件源码。Java 语言凭借其独特的优势&#xff0c;为这款语音陪聊软件的稳健运行和持续发展奠定了坚实基础。它不仅融合了聊天私聊、礼物系统和直播系统等实用且有趣的功能&#xff0c;还创新性地引入了缘分匹…...

山石防火墙命令行配置示例

现网1台山石SG6000防火墙&#xff0c;配置都可以通过GUI实现。 但有一些配置在命令行下配置效率更高&#xff0c;比如在1个已有策略中添加1个host或端口。 下面的双引号可以不加 1 创建服务 1.1 单个端口 service "tcp-901"tcp dst-port 901 1.2 端口范围 servi…...

WordPress内容保护策略:如何反击并利用被盗内容

当你的网站开始获得大量流量时&#xff0c;内容盗窃成为不可避免的问题。除了通过高级的保护措施防止内容被盗&#xff0c;你还可以采取一些策略来反击内容盗窃&#xff0c;并从中获益。 1. 识别并封锁恶意IP地址 当你发现某些IP地址频繁访问并抓取你的网站内容时&#xff0c…...

UDP报文格式

UDP是传输层的一个重要协议&#xff0c;他的特性有面向数据报、无连接、不可靠传输、全双工。 下面是UDP报文格式&#xff1a; 1&#xff0c;报头 UDP的报头长度位8个字节&#xff0c;包含源端口、目的端口、长度和校验和&#xff0c;其中每个属性均为两个字节。报头格式为二…...

【工具类】获取日出日落时间的Java工具类

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...