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

Go语言的 的数据封装(Data Encapsulation)核心知识

Go语言的数据封装(Data Encapsulation)核心知识

引言

在现代编程语言中,数据封装是一个重要的编程概念。它不仅帮助开发者管理复杂性,还提高了代码的可维护性和安全性。Go语言(Golang)作为一种注重简洁性和高效性的编程语言,在数据封装方面也具有独特的思想和实现方式。本文将深入探讨Go语言的数据封装核心知识,包括封装的概念、如何在Go中实现数据封装、访问控制、接口的使用等。

什么是数据封装?

数据封装是面向对象编程(OOP)中的一个重要特性。它是指将对象的状态(数据)和行为(方法)打包在一起,并控制外部对这些数据的访问权限。通过数据封装,开发人员可以隐藏对象的内部状态,只允许通过指定的方法与对象进行交互,从而确保数据的一致性和安全性。

在Go语言中,尽管我们并不严格地称之为面向对象编程,但其支持的结构体和方法组合使得数据封装成为可能。通过结构体,我们可以创建自己的数据类型,并通过方法来操作这些数据。

Go语言中的结构体

结构体是Go语言中用于创建复杂数据类型的基本构件。它允许将不同类型的数据组合成一个单一的实体。在Go中,结构体是通过关键字type定义的,示例如下:

```go package main

import "fmt"

// 定义一个结构体 type Person struct { Name string Age int } ```

在上面的示例中,我们定义了一个Person结构体,该结构体包含了NameAge两个字段。通过结构体,我们可以将相关的数据封装起来。

创建结构体实例

创建结构体实例非常简单,通常使用字面值或使用new关键字:

```go func main() { // 使用字面值创建结构体实例 p1 := Person{Name: "Alice", Age: 30}

// 使用new关键字创建结构体实例
p2 := new(Person)
p2.Name = "Bob"
p2.Age = 25fmt.Println(p1)
fmt.Println(*p2)

} ```

结构体方法

为了实现数据封装,我们可以在结构体上定义方法。方法是与特定类型关联的函数,这样我们就可以通过方法来访问和修改结构体的字段。使用指针接收器可以更改接收者的值,而值接收器则创建接收者的副本。

```go // 为Person结构体定义一个方法 func (p *Person) SetAge(age int) { p.Age = age }

func (p Person) GetName() string { return p.Name }

func main() { p := Person{Name: "Charlie", Age: 20}

// 调用方法
p.SetAge(21)
fmt.Println(p.GetName(), "is", p.Age, "years old.")

} ```

在这个示例中,我们为Person结构体定义了两个方法:SetAgeGetName。这些方法提供了一种受控的方式来访问和修改结构体的字段。

访问控制

在Go语言中,访问控制主要通过标识符的首字母大小写来实现的。以大写字母开头的标识符是公开可见的(可被其他包访问),而以小写字母开头的标识符则是私有的(只能在当前包中访问)。

```go type Person struct { Name string // 公开字段 age int // 私有字段 }

func (p *Person) SetAge(age int) { p.age = age // 可以访问私有字段 }

func (p Person) GetAge() int { return p.age // 通过方法访问私有字段 } ```

在这个例子中,Name字段是公开的,而age字段是私有的。我们只能通过SetAgeGetAge方法来访问和修改age字段。

接口的使用

接口是Go语言中实现数据封装和抽象的另一种机制。接口定义了一组方法的集合,但不关心具体的实现。这使得我们可以通过接口声明我们希望与之互动的行为,而不需要关心具体类型的细节。

定义接口

在Go中,接口非常容易定义。例如:

```go type Animal interface { Speak() string }

type Dog struct{}

func (d Dog) Speak() string { return "Woof!" }

type Cat struct{}

func (c Cat) Speak() string { return "Meow!" } ```

在这个示例中,我们定义了一个Animal接口,该接口要求实现它的类型必须定义一个Speak方法。DogCat分别实现了这个接口。

使用接口

通过接口,我们可以编写更加灵活和可扩展的代码。以下是如何使用接口的示例:

```go func MakeSound(a Animal) { fmt.Println(a.Speak()) }

func main() { dog := Dog{} cat := Cat{}

MakeSound(dog) // Output: Woof!
MakeSound(cat) // Output: Meow!

} ```

在这个示例中,MakeSound函数接受一个Animal接口作为参数。我们可以将DogCat对象传递给它,而不需要关心它们的具体类型。这种抽象性为代码提供了更强的灵活性。

组合与嵌套

Go语言通过组合而不是继承来实现代码复用。通过在一个结构体中嵌套另一个结构体,我们实现了数据封装和组合的方式。这种设计模式使得代码更为简洁和有组织。

```go type Address struct { City string Postcode string }

type Person struct { Name string Age int Address // 嵌入式结构体 }

func main() { p := Person{Name: "David", Age: 40, Address: Address{City: "New York", Postcode: "10001"}} fmt.Println(p.Name, "lives in", p.City) // 直接访问嵌入字段 } ```

在这个示例中,Person结构体嵌入了Address结构体。这样,Person结构体可以直接访问City字段,这是因为Address被嵌入为一个字段。通过这种方式,我们可以在一个结构体中封装多个相关的结构体。

封装的好处

数据封装在软件开发中具有诸多好处:

  1. 数据保护:通过暴露最小的数据接口,仅对外部暴露必要的方法,能够有效保护内部数据不被非法访问和修改。

  2. 逻辑清晰:将数据和操作数据的逻辑一起封装,使得相关代码更加聚合,逻辑更清晰。

  3. 代码复用:通过接口和组合的方式实现高内聚低耦合的设计,从而实现代码的重用。

  4. 改变透明性:内部实现可以随时修改,而外部代码不需要进行任何更改,只要接口保持不变。

结论

数据封装是软件开发中一个基础而重要的概念。在Go语言中,结构体、方法和接口共同构成了强大的数据封装机制。通过这种机制,我们可以创建安全、易于维护且灵活的代码。掌握数据封装不仅能够提高编程效率,也能够在实际开发中提升代码的质量。

在当今复杂的开发环境中,理解和运用数据封装的思想变得越来越重要。希望通过本文的介绍,能够帮助读者更好地掌握Go语言中的数据封装技巧,从而提升自己在Go开发中的能力。

通过不断实践和探索,我们可以深入理解数据封装的真正价值,并在自己的项目中得到灵活运用。

相关文章:

Go语言的 的数据封装(Data Encapsulation)核心知识

Go语言的数据封装(Data Encapsulation)核心知识 引言 在现代编程语言中,数据封装是一个重要的编程概念。它不仅帮助开发者管理复杂性,还提高了代码的可维护性和安全性。Go语言(Golang)作为一种注重简洁性…...

25/1/5 算法笔记<强化学习> MPC,交叉熵法,PETS算法

MPC 一个棋手下棋,会根据当前的局势来推演落子几步可能发生的局势,然后选择局势最好的一种情况来决定当前落子位置。 模型预测控制方法MPC,就是这样一种迭代的、基于模型的控制方法。值得注意的是MPC中不存在一个显示的策略。具体而言就是MPC在每次采取…...

最新版Chrome浏览器加载ActiveX控件之CFCA安全输入控件

背景 CFCA安全输入控件用于保证用户在浏览器、桌面客户端、移动客户端中输入信息的安全性,防止运行在用户系统上的病毒、木马等恶意程序入侵窃取用户输入的敏感信息。确保用户输入、本地缓存、网络传输整个流程中,输入的敏感信息不被窃取。广泛应用于银行…...

vue 项目集成 electron 和 electron 打包及环境配置

vue electron 开发桌面端应用 安装 electron npm i electron -D记得加上-D,electron 需添加到devDependencies,如果添加到dependencies后面运行可能会报错 根目录创建electron文件夹,在electron文件夹创建main.js(或者backgrou…...

计算机网络--UDP和TCP课后习题

【5-05】 试举例说明有些应用程序愿意采用不可靠的UDP, 而不愿意采用可靠的TCP。 解答: 这可能有以下几种情况。 首先,在互联网上传输实时数据的分组时,有可能会出现差错甚至丢失。如果利用 TCP 协议对这些出错或丢失的分组进行重传&…...

【算法不挂科】算法期末考试题库(带解析)【选择题53道&填空题36道&算法填空题7道&问答题33道】

前言 大家好吖,欢迎来到 YY 滴算法不挂科系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 下面是相关传送门 【算法不挂科】算法期末考试题库1(带解析)【选择题53道&填空题36道&算法填空题7道&a…...

Java+maven+selenium3+testng 自动化测试环境IDEA

软件测试资料领取:[内部资源] 想拿年薪40W的软件测试人员,这份资料必须领取~ 软件测试面试刷题工具领取:软件测试面试刷题【800道面试题答案免费刷】 idea 、java环境变量jdk maven安装及环境变量配置这里就不多说了,网上有很多…...

【踩坑指南2.0 2025最新】Scala中如何在命令行传入参数以运行主函数

这个地方基本没有任何文档记录,在学习的过程中屡屡碰壁,因此记录一下这部分的内容,懒得看可以直接跳到总结看结论。 踩坑步骤 首先来看看书上让我们怎么写: //main.scala object Start {def main(args:Array[String]) {try {v…...

vue3-watchEffect异步依赖收集

当 b 更新时 a 并不会更新&#xff0c;因为watchEffect的依赖收集在该案例中停止于await asyncFn()&#xff0c;也就是只会收集同步代码的依赖&#xff0c;await 之后的异步代码的依赖并不会收集到 <template> <div>a: {{ a }} <br>b: {{ b }} <br>&l…...

【Go研究】Go语言脚本化的可行性——yaegi项目体验

0x01 背景——云计算中脚本化困境 作为云基础设施管理中&#xff0c;大量需要跟文件系统、容器等相关的操作&#xff0c;这些操作实现通常用脚本来实现。 现在探讨下&#xff0c;这些脚本为什么一定要用脚本语言来实现&#xff0c;以及目前实现中的常见的问题。 常见的两个场…...

Genome Research | 俄亥俄州立于忠堂组-结合深度学习与蛋白质数据库系统探究反刍动物真核微生物...

结合深度学习与蛋白质数据库系统探究反刍动物真核微生物 Probing the eukaryotic microbes of ruminants with a deep-learning classifier and comprehensive protein databases 期刊&#xff1a;Genome Research DOI&#xff1a;https://doi.org/10.1101/gr.279825.124 第一作…...

centos7yum安装mysql5.7

1、安装mysql5.7 (1) 正常安装 [rootBrianZhu /]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm [rootBrianZhu /]# yum -y install mysql57-community-release-el7-10.noarch.rpm [rootBrianZhu /]# yum -y install mysql-community-se…...

JavaScript系列(8)-- Array高级操作

JavaScript Array高级操作 &#x1f4da; 在前七篇文章中&#xff0c;我们探讨了JavaScript的语言特性、ECMAScript标准、引擎工作原理、数值类型、字符串处理、Symbol类型和Object高级特性。今天&#xff0c;让我们深入了解JavaScript中的Array高级操作。数组是最常用的数据结…...

蓝牙架构介绍

架构1&#xff1a;hostcontroller双芯片标准架构 这个标准把蓝牙协议栈分成host和controller两部分&#xff0c;其中host跑在AP上&#xff0c;controller跑在蓝牙模块上&#xff0c;两者之间通过HCI协议进行通信&#xff0c;AP芯片厂商一般会直接采用开源的Bluez来实现Host功能…...

青少年编程与数学 02-006 前端开发框架VUE 08课题、列表渲染

青少年编程与数学 02-006 前端开发框架VUE 08课题、列表渲染 一、列表渲染v-for 指令:key 属性遍历对象响应式更新列表渲染的作用 二、应用示例项目结构public/index.htmlsrc/components/TodoApp.vuesrc/main.jspackage.json构建和运行项目 课题摘要:本文介绍了Vue.js中的列表渲…...

12.3【hardware][day3]

关于使用硬件 DSP 资源实现乘法的含义 在 Xilinx 7 Series FPGA&#xff08;现场可编程门阵列&#xff09;中&#xff0c;乘法运算可以通过专门的数字信号处理&#xff08;DSP&#xff09;硬件资源来完成。当使用 Verilog 语言编写代码进行乘法运算时&#xff0c;直接使用乘号&…...

降维算法之PCA(PrincipalComponent Analysis,主成分分析)

降维是指在保留数据特征的前提下&#xff0c;以少量的变量表示有许多变量的数据&#xff0c;这有助于降低多变量数据分析的复杂度。比如在分析有 100 个变量的数据时&#xff0c;与其直接分析数据&#xff0c;不如使用 5 个变量表示数据&#xff0c;这样可以使后续分析比较容易…...

【JVM】总结篇-类的加载篇之 类的加载器 和ClassLoader分析

文章目录 类的加载器ClassLoader自定义类加载器双亲委派机制概念源码分析优势劣势如何打破Tomcat 沙箱安全机制JDK9 双亲委派机制变化 类的加载器 获得当前类的ClassLoader clazz.getClassLoader() 获得当前线程上下文的ClassLoader Thread.currentThread().getContextClassLoa…...

Android:文件管理:打开文件意图

三步走&#xff1a; 一、先在AndroidManifest.xml声明provider&#xff1a; <providerandroid:name"androidx.core.content.FileProvider"android:authorities"${applicationId}.FileProvider"android:exported"false"android:grantUriPermi…...

《计算机网络A》单选题(详解)

《计算机网络A》单选题-复习题库 1、计算机网络最突出的优点是&#xff08; D &#xff09; A、存储容量大 B、将计算机技术与通信技术相结合 C、集中计算 D、资源共享 解析&#xff1a;算机网络最突出的优点是 D、资源共享。通过计算机网络&…...

【SpringBoot3】Spring Boot 3.0 集成 Mybatis Plus

在Spring Boot 3.0中&#xff0c;你可以使用MyBatis Plus来简化数据库操作。以下是一个基本的集成示例&#xff1a; 1.添加依赖到你的pom.xml&#xff1a; <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.…...

第147场双周赛:子字符串匹配模式、设计任务管理器、最长相邻绝对差递减子序列、删除所有值为某个元素后的最大子数组和

Q1、子字符串匹配模式 1、题目描述 给你一个字符串 s 和一个模式字符串 p &#xff0c;其中 p 恰好 包含 一个 * 符号。 p 中的 * 符号可以被替换为零个或多个字符组成的任意字符序列。 如果 p 可以变成 s 的子字符串&#xff0c;那么返回 true &#xff0c;否则返回 false…...

数据结构C语言描述9(图文结合)--二叉树和特殊书的概念,二叉树“最傻瓜式创建”与前中后序的“递归”与“非递归遍历”

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…...

开源存储详解-分布式存储与ceph

ceph体系结构 rados&#xff1a;reliable, autonomous, distributed object storage, rados rados采用c开发 对象存储 ceph严格意义讲只提供对象存储能力&#xff0c;ceph的块存储能力实际是基于对象存储库librados的rbd 对象存储特点 对象存储采用put/get/delete&#xf…...

Vue 快速入门:开启前端新征程

在当今的 Web 开发领域&#xff0c;Vue.js 作为一款极具人气的 JavaScript 前端框架&#xff0c;正被广泛应用于各类项目之中。它以简洁的语法、高效的数据绑定机制以及强大的组件化开发模式&#xff0c;为开发者们带来了前所未有的开发体验。如果你渴望踏入前端开发的精彩世界…...

GPT系统重大升级,开创国内先河:o1支持图片识别功能正式上线

文章目录 零、前言一、授权码登录体验优化&#xff1a;一步直达聊天界面二、全新“项目”功能&#xff1a;让工作更有条理三、语音功能升级&#xff1a;全新交互体验四、o1支持图片识别五、总结 零、前言 我是虚竹哥&#xff0c;目标是带十万人玩转ChatGPT。 亲爱的用户&…...

常用的数据结构API概览

List ArrayList 1、在初始化一个ArrayList的时候&#xff0c;如果我想同时set一些值 比如存放int[ ] List<int[]> list new ArrayList(Arrays.asList(new int[]{intervals[0][0],intervals[0][1]}));//或者int[] temp new int[]{intervals[0][0],intervals[0][1]}…...

《探秘计算机视觉与深度学习:开启智能视觉新时代》

《探秘计算机视觉与深度学习&#xff1a;开启智能视觉新时代》 一、追溯起源&#xff1a;从萌芽到崭露头角二、核心技术&#xff1a;解锁智能视觉的密码&#xff08;一&#xff09;卷积神经网络&#xff08;CNN&#xff09;&#xff1a;图像识别的利器&#xff08;二&#xff0…...

Linux:操作系统不朽的传说

操作系统是计算机的灵魂&#xff0c;它掌控着计算机的硬件和软件资源&#xff0c;为用户和应用程序提供了一个稳定、高效、安全的运行环境。 在众多操作系统中&#xff0c;Linux 的地位举足轻重。它被广泛应用于服务器、云计算、物联网、嵌入式设备等领域。Linux 的成功离不开…...

Excel重新踩坑5:二级下拉列表制作;★数据透视表;

0、在excel中函数公式不仅可以写在单元格里面&#xff0c;还可以写在公式里面。 1、二级下拉列表制作&#xff1a; 2、数据透视表&#xff1a; 概念&#xff1a;通过拖拉就能实现复杂函数才能实现的数据统计问题。 概览&#xff1a;在插入选项中有个数据透视表&#xff0c;数…...

containerd配置镜像加速(含新旧版本)

文章目录 镜像加速使用文档containerd配置说明文档host.toml配置步骤&#xff08;containerd2.x新版功能&#xff0c;与config.toml解耦&#xff0c;无需重启containerd&#xff09;传统配置&#xff08;需要重启containerd&#xff09; 镜像加速使用文档 关于镜像加速的使用可…...

国产编辑器EverEdit - 常用资源汇总

1 国产编辑器EverEdit-常用资源汇总 EverEdit是一款国产文本编辑器&#xff0c;历经超过15年的更新和维护&#xff0c;拥有不输业界顶级商业文本编辑器(EmEditor、UltraEdit)的实力&#xff0c;甚至在某些方面的功能更强(当然&#xff0c;各有千秋)&#xff0c;开发者对文本编辑…...

应急指挥系统总体架构方案

引言 应急指挥系统总体架构方案旨在构建一个高效、智能的应急管理体系&#xff0c;以应对自然灾害、事故灾难等突发事件&#xff0c;保障人民生命财产安全。 背景与挑战 近年来&#xff0c;安全生产形势严峻&#xff0c;自然灾害事故频发&#xff0c;对应急指挥系统的要求越…...

Edge Scdn的应用场景有哪些?

酷盾安全Edge Scdn 具备强大的安全防护能力&#xff0c;通过多层防御机制&#xff0c;如防火墙、DDoS 攻击防护、入侵检测和防御、数据加密等&#xff0c;有效抵御各种网络攻击&#xff0c;包括 DDoS 攻击、CC 攻击、SQL 注入攻击、XSS 跨站脚本攻击等&#xff0c;保障网站和应…...

LeetCode:98.验证二叉搜索树

跟着carl学算法&#xff0c;本系列博客仅做个人记录&#xff0c;建议大家都去看carl本人的博客&#xff0c;写的真的很好的&#xff01; 代码随想录 LeetCode&#xff1a;98.验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 …...

mysql报错2059

客户端连接mysql服务时提示2059错误&#xff0c;通常与身份验证插件有关&#xff0c;具体表现为客户端无法加载指定的身份验证插件。这个错误在MySQL 8.0及更高版本中较为常见&#xff0c;因为从MySQL 8.0开始&#xff0c;默认的加密规则从mysql_native_password变为了caching_…...

2025/1/4期末复习 密码学 按老师指点大纲复习

我们都要坚信&#xff0c;道路越是曲折&#xff0c;前途越是光明。 --------------------------------------------------------------------------------------------------------------------------------- 现代密码学 第五版 杨波 第一章 引言 1.1三大主动攻击 1.中断…...

【数据仓库金典面试题】—— 包含详细解答

大家好&#xff0c;我是摇光~&#xff0c;用大白话讲解所有你难懂的知识点 该篇面试题主要针对面试涉及到数据仓库的数据岗位。 以下都是经典的关于数据仓库的问题&#xff0c;希望对大家面试有用~ 1、什么是数据仓库&#xff1f;它与传统数据库有何区别&#xff1f; 数据仓库…...

deepFM模型pytorch实现

deepFM deepfm包含两个部分&#xff1a;因子分解机FM和神经网络DNN&#xff0c;分别负责低阶特征和高阶特征的提取。可以处理全是分类特征的数据&#xff0c;或者分类与数值型结合的数据。 FM部分是对一阶特征和二阶特征&#xff08;一阶特征之间的交互&#xff09;的处理。 …...

【Linux】传输层协议UDP

目录 再谈端口号 端口号范围划分 UDP协议 UDP协议端格式 UDP的特点 UDP的缓冲区 UDP注意事项 进一步深刻理解 再谈端口号 在上图中&#xff0c;有两个客户端A和B&#xff0c;客户端A打开了两个浏览器&#xff0c;这两个客户端都访问同一个服务器&#xff0c;都访问服务…...

MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分

MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分 目录 MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分MOE划分不同专家的方法K-Means聚类算法来实现将神经元特征聚类划分成不同专家(行或者列聚类)举例说明怎么聚类,最后神经网络怎么保存M…...

Redis两种主要的持久化方式是什么?

Redis支持两种主要的持久化方式&#xff0c;它们分别是RDB&#xff08;Redis Database Snapshotting&#xff09;和AOF&#xff08;Append Only File&#xff09;。以下是这两种持久化方式的详细介绍&#xff1a; 一、RDB&#xff08;Redis Database Snapshotting&#xff09; …...

【生活】冬天如何选口罩(医用口罩,N95, KN95还是KP95?带不带呼吸阀门?带不带活性炭?)

&#x1f4a1;总结一下就是&#xff1a; 日常防护的话&#xff0c;医用口罩就可以啦。要是想长时间佩戴N95&#xff08;KN95&#xff09;口罩的话也可以. 在高风险环境&#xff08;像医院、疫情防控期间&#xff09;&#xff0c;一定要选不带呼吸阀门的N95口罩KN95&#xff09…...

机器学习基础-卷积的计算

1 掌握卷积计算的基本过程 1.1 单通道单卷积核 如图3所示&#xff0c;现在有一张形状为[5,5,1]的灰度图&#xff0c;我们需要用图3右边的卷积核对其进行卷积处理&#xff0c;同时再考虑到偏置的作用。计算过程如下&#xff1a; 1.2 单通道多卷积核 如下图所示&#xff0c;左…...

使用LINUX的dd命令制作自己的img镜像

为了避免重复安装同一镜像&#xff0c;配置环境&#xff0c;首先我准备一个正常使用的完整系统。 使用Gparted软件先将母盘&#xff08;如U盘&#xff0c;TF卡&#xff09;分区调整为只有数据的大小。如&#xff1a;60G的TF卡&#xff0c;只用了3.5G&#xff0c;将未使用的空间…...

pdf预览兼容问题- chrome浏览器105及一下预览不了

使用的"tato30/vue-pdf": "^1.11.2"预览插件&#xff0c;发现chrome浏览器105及一下预览不了 pdfPreview预览组件&#xff1a; <template><div id"vue_pdf_view"><div class"tool_tip"><template v-if"pa…...

SpringBoot中实现拦截器和过滤器

【SpringBoot中实现过滤器和拦截器】 1.过滤器和拦截器简述 过滤器Filter和拦截器Interceptor&#xff0c;在功能方面很类似&#xff0c;但在具体实现方面差距还是比较大的。 2.过滤器的配置 2.1 自定义过滤器&#xff0c;实现Filter接口(SpringBoot 3.0 开始&#xff0c;jak…...

基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划

• 关于前后端分离 当前流行的一种常见的前后端分离模式是vueflask&#xff0c;vueflask模式的前端和后端之间进行数据的传递通常是借助 API&#xff08;应用程序编程接口&#xff09;来完成的。vue通过调用后端提供的 API 来获取或提交数据。例如&#xff0c;前端可能通过发送…...

GitHub的简单操作

引言 今天开始就要开始做项目了&#xff0c;上午是要把git搭好。搭的过程中遇到好多好多的问题。下面就说一下git的简单操作流程。我们是使用的GitHub,下面也就以这个为例了 一、GitHub账号的登录注册 https://github.com/ 通过这个网址可以来到GitHub首页 点击中间绿色的S…...

LLM大语言模型自动化测试(ROUGE和RAGAS)及优化方案

1. 模型自动化测试 模型的测试中&#xff0c;不同类型的任务评测指标有显著差异&#xff0c;比如&#xff1a; 分类任务&#xff1a; 准确率&#xff08;Accuracy&#xff09;&#xff1a;正确预测的比例。 精确度&#xff08;Precision&#xff09;、召回率&#xff08;Recal…...