【GoLang入门教程】Go语言几种标准库介绍(五)

如何解决大模型的「幻觉」问题?

文章目录

    • 如何解决大模型的「幻觉」问题?
      • 前言
      • 几种库
        • image库 (常见图形格式的访问及生成)
          • 关键概念和类型:
          • 示例
        • IO库
          • 示例
        • math库(数学库)
          • 常用的函数和常量:
          • 示例
      • 总结
      • 专栏集锦
      • 写在最后

579a429daf314744b995f37351b46548

前言

上一篇,我们介绍了fmt、Go、html 三个库,这篇我们继续介绍剩下的库


几种库

image库 (常见图形格式的访问及生成)

在 Go 语言的标准库中,image 包提供了对图像的基本操作和处理功能。

这个包定义了 Image 接口和一些基本的图像类型,同时也包含了一些实现了该接口的具体类型,如 image.RGBAimage.Gray

关键概念和类型:
  1. Image 接口: 定义了图像的基本操作,包括获取像素值、设置像素值等。
  2. RGBA 类型: 表示一个带有红、绿、蓝和透明度通道的图像。
  3. Gray 类型: 表示一个灰度图像。
  4. Image 接口的实现: 你可以自定义实现 Image 接口的类型,以表示不同的图像格式或处理逻辑。
示例

演示了如何使用 image 包创建一个简单的彩色图像,并将其保存为 PNG 文件:

package mainimport ("image""image/color""image/png""os"
)func main() {// 创建一个 RGBA 图像,大小为 100x100img := image.NewRGBA(image.Rect(0, 0, 100, 100))// 在图像上绘制一个红色的矩形drawRedRectangle(img)// 创建输出文件file, err := os.Create("output.png")if err != nil {panic(err)}defer file.Close()// 将图像保存为 PNG 文件err = png.Encode(file, img)if err != nil {panic(err)}
}// 在图像上绘制一个红色的矩形
func drawRedRectangle(img *image.RGBA) {red := color.RGBA{255, 0, 0, 255}for x := 20; x < 80; x++ {for y := 20; y < 80; y++ {img.Set(x, y, red)}}
}

在这个示例中,创建了一个大小为 100x100 像素的 RGBA 图像,然后在图像上通过自定义函数 drawRedRectangle 绘制了一个红色的矩形。最后,将图像保存为 PNG 文件。

这只是 image 包的一个简单用法示例,可以根据实际需求进行更复杂的图像

IO库

在 Go 语言的标准库中,io 包提供了输入输出的基本接口和一些实用函数,用于实现数据的读取和写入。

io 包中的接口和函数是为了在不同的 I/O 类型之间提供通用性和可组合性。

重要的接口和函数:

  1. Reader 接口: 定义了读取数据的基本方法,如 Read
  2. Writer 接口: 定义了写入数据的基本方法,如 Write
  3. Closer 接口: 定义了关闭资源的方法,如 Close
  4. ReadWriter 接口: 组合了 ReaderWriter 接口。
  5. ReadWriteCloser 接口: 组合了 ReaderWriterCloser 接口。
  6. ReadFullWriteStringCopy 等函数: 提供了一些便捷的读写操作。
示例
package mainimport ("bytes""fmt""io""os""strings"
)func main() {// 使用 Reader 接口从字符串中读取数据reader := strings.NewReader("Hello, Go IO!")buffer := make([]byte, 8)n, err := reader.Read(buffer)if err != nil && err != io.EOF {fmt.Println("Error reading:", err)return}fmt.Printf("Read %d bytes: %s\n", n, buffer[:n])// 使用 Writer 接口向缓冲区写入数据var writer bytes.Buffer_, err = writer.Write([]byte("Hello, Go IO Writer!"))if err != nil {fmt.Println("Error writing:", err)return}fmt.Println("Writer buffer:", writer.String())// 使用 ReadWriter 接口进行读写操作readWriter := bytes.NewBufferString("Initial Data")_, err = readWriter.Read(buffer)if err != nil {fmt.Println("Error reading:", err)return}fmt.Println("ReadWriter buffer after reading:", readWriter.String())_, err = readWriter.Write([]byte("Appended Data"))if err != nil {fmt.Println("Error writing:", err)return}fmt.Println("ReadWriter buffer after writing:", readWriter.String())// 使用 Copy 函数复制数据source := strings.NewReader("Source Data")destination := &bytes.Buffer{}copiedBytes, err := io.Copy(destination, source)if err != nil {fmt.Println("Error copying:", err)return}fmt.Printf("Copied %d bytes to destination: %s\n", copiedBytes, destination.String())// 使用 ReadFull 函数读取固定长度的数据fullReader := strings.NewReader("Full Data")fullBuffer := make([]byte, 4)_, err = io.ReadFull(fullReader, fullBuffer)if err != nil {fmt.Println("Error reading full:", err)return}fmt.Printf("ReadFull result: %s\n", fullBuffer)
}

在这个示例中,演示了如何使用 io 包中的 ReaderWriterReadWriter 接口以及一些便捷函数进行基本的输入输出操作。

这些接口和函数为不同类型的 I/O 操作提供了一致的接口,使得代码更具通用性。

math库(数学库)

在 Go 语言的标准库中,math 包提供了一系列数学操作的函数。

这个包包括了基本的数学运算,如加减乘除、取余、取整、指数运算,以及一些常见的数学函数,如三角函数、对数函数、指数函数等。

常用的函数和常量:
  1. 基本运算:
    • Add(x, y float64) float64:加法
    • Sub(x, y float64) float64:减法
    • Mul(x, y float64) float64:乘法
    • Div(x, y float64) float64:除法
    • Mod(x, y float64) float64:取余
    • Pow(x, y float64) float64:x 的 y 次方
  2. 取整和舍入:
    • Ceil(x float64) float64:向正无穷大方向取整
    • Floor(x float64) float64:向负无穷大方向取整
    • Round(x float64) float64:四舍五入
  3. 三角函数:
    • Sin(x float64) float64:正弦函数
    • Cos(x float64) float64:余弦函数
    • Tan(x float64) float64:正切函数
    • Asin(x float64) float64:反正弦函数
    • Acos(x float64) float64:反余弦函数
    • Atan(x float64) float64:反正切函数
    • Atan2(y, x float64) float64:返回 y/x 的反正切,以弧度表示
  4. 对数和指数函数:
    • Log(x float64) float64:自然对数
    • Log10(x float64) float64:以 10 为底的对数
    • Exp(x float64) float64:e 的 x 次方
    • Sqrt(x float64) float64:平方根
  5. 常量:
    • Pi:圆周率
    • E:自然对数的底
示例
package mainimport ("fmt""math"
)func main() {x := 2.5y := 3.0// 基本运算fmt.Printf("Add: %f\n", math.Add(x, y))fmt.Printf("Sub: %f\n", math.Sub(x, y))fmt.Printf("Mul: %f\n", math.Mul(x, y))fmt.Printf("Div: %f\n", math.Div(x, y))fmt.Printf("Mod: %f\n", math.Mod(x, y))fmt.Printf("Pow: %f\n", math.Pow(x, y))// 取整和舍入fmt.Printf("Ceil: %f\n", math.Ceil(x))fmt.Printf("Floor: %f\n", math.Floor(x))fmt.Printf("Round: %f\n", math.Round(x))// 三角函数fmt.Printf("Sin: %f\n", math.Sin(x))fmt.Printf("Cos: %f\n", math.Cos(x))fmt.Printf("Tan: %f\n", math.Tan(x))fmt.Printf("Asin: %f\n", math.Asin(x))fmt.Printf("Acos: %f\n", math.Acos(x))fmt.Printf("Atan: %f\n", math.Atan(x))fmt.Printf("Atan2: %f\n", math.Atan2(y, x))// 对数和指数函数fmt.Printf("Log: %f\n", math.Log(x))fmt.Printf("Log10: %f\n", math.Log10(x))fmt.Printf("Exp: %f\n", math.Exp(x))fmt.Printf("Sqrt: %f\n", math.Sqrt(x))// 常量fmt.Printf("Pi: %f\n", math.Pi)fmt.Printf("E: %f\n", math.E)
}

在这个示例中,使用了 math 包中的一些函数,执行了一些基本的数学运算。这些函数提供了丰富的数学操作,可以满足各种数学计算的需求。


总结

这里我们介绍了3个库image、io、math3个库, 下一篇我们将介绍其他的几种标准库


专栏集锦

大佬们可以收藏以备不时之需:

Spring Boot 专栏:http://t.csdnimg.cn/peKde

ChatGPT 专栏:http://t.csdnimg.cn/cU0na

Java 专栏:http://t.csdnimg.cn/YUz5e

Go 专栏:http://t.csdnimg.cn/Jfryo

Netty 专栏:http://t.csdnimg.cn/0Mp1H

Redis 专栏:http://t.csdnimg.cn/JuTue

Mysql 专栏:http://t.csdnimg.cn/p1zU9

架构之路 专栏:http://t.csdnimg.cn/bXAPS


写在最后

感谢您的支持和鼓励! 😊🙏

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

csdn-end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/256810.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】数据清洗之处理异常点

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;机器学习 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步…

刘知远LLM——神经网络基础

文章目录 神经网络基础基本构成如何训练&#xff1f; Word2Vec例子负采样&#xff1a; 循环神经网络 RNN门控计算单元 GRU长短时记忆网络 LSTM遗忘门输入门输出门双向RNN卷积神经网络 CNNpytorch实战 神经网络基础 基本构成 全称&#xff1a;人工神经网络。启发于生物神经细胞…

162基于matlab的多尺度和谱峭度算法对振动信号进行降噪处理

基于matlab的多尺度和谱峭度算法对振动信号进行降噪处理&#xff0c;选择信号峭度最大的频段进行滤波&#xff0c;输出多尺度谱峭度及降噪结果。程序已调通&#xff0c;可直接运行。 162 matlab 信号处理 多尺度谱峭度 (xiaohongshu.com)

【大模型上下文长度扩展】MedGPT:解决遗忘 + 永久记忆 + 无限上下文

MedGPT&#xff1a;解决遗忘 永久记忆 无限上下文 问题&#xff1a;如何提升语言模型在长对话中的记忆和处理能力&#xff1f;子问题1&#xff1a;有限上下文窗口的限制子问题2&#xff1a;复杂文档处理的挑战子问题3&#xff1a;长期记忆的维护子问题4&#xff1a;即时信息检…

计算机网络——09Web-and-HTTP

Web and HTTP 一些术语 Web页&#xff1a;由一些对象组成对象可以是HTML文件、JPEG图像&#xff0c;JAVA小程序&#xff0c;声音剪辑文件等Web页含有一个基本的HTML文件&#xff0c;该基本HTML文件又包含若干对象的引用&#xff08;链接&#xff09;通过URL对每个对象进行引用…

HiveSQL——共同使用ip的用户检测问题【自关联问题】

注&#xff1a;参考文章&#xff1a; SQL 之共同使用ip用户检测问题【自关联问题】-HQL面试题48【拼多多面试题】_hive sql 自关联-CSDN博客文章浏览阅读810次。0 问题描述create table log( uid char(10), ip char(15), time timestamp);insert into log valuesinsert into l…

【芯片设计- RTL 数字逻辑设计入门 12 -- verilog 有符号数加减法】

文章目录 多功能数据处理器描述verilog 无符号数与有符号数8d100 8d1558d100 8d1568d100 8d157verilog 代码实现TestBench 代码VCS 仿真结果 多功能数据处理器描述 根据指示信号select的不同&#xff0c;对输入信号a,b实现不同的运算。输入信号a,b为8bit有符号数&#xff1…

Javaweb之SpringBootWeb案例之propagation属性案例演示的详细解析

案例 接下来我们就通过一个案例来演示下事务传播行为propagation属性的使用。 需求&#xff1a;解散部门时需要记录操作日志 由于解散部门是一个非常重要而且非常危险的操作&#xff0c;所以在业务当中要求每一次执行解散部门的操作都需要留下痕迹&#xff0c;就是要记录操作…

探索设计模式的魅力:捕捉变化的风-用观察者模式提升用户体验

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 一、引言 核心概念 应用场景 可以解决的问题 二、场景案例 2.1 不用设计模式实现 2.2 存在问题 2.3 使用设计模式实现 2.4 成功克服 三、工作原理 3.1 结构图和说明 3.2 工作原理详解 3.3 实现步骤 四、 优…

【linux系统体验】-ubuntu简易折腾

ubuntu 一、终端美化二、桌面美化2.1 插件安装2.2 主题和图标2.3 美化配置 三、常用命令 以后看不看不重要&#xff0c;咱就是想记点儿东西。一、终端美化 安装oh my posh&#xff0c;参考链接&#xff1a;Linux 终端美化 1、安装字体 oh my posh美化工具可以使用合适的字体&a…

wireshark分析数据包:追踪流

打开追踪流的界面 方法 1 方法 2 选中数据包&#xff0c;右键弹出菜单 说明&#xff1a; 流内容的显示顺序和它在网络上出现的顺序相同。不可打印的字符被点代替。从客户端到服务器的流量被标记为红色&#xff0c;而从服务器到客户端的流量被标记为蓝色。这些颜色可以通过下…

【算法随想录01】环形链表

题目&#xff1a;141. 环形链表 难度&#xff1a;EASY 代码 哈希表遍历求解&#xff0c;表中存储的是元素地址。 时间复杂度 O ( N ) O(N) O(N)&#xff0c;空间复杂度 O ( N ) O(N) O(N) /*** Definition for singly-linked list.* struct ListNode {* int val;* …

【C++初阶】第三站:类和对象(中) -- 类的6个默认成员函数

目录 前言 类的6个默认成员函数 构造函数 概念 特性 析构函数 概念 特性 拷贝构造函数 概念 特征 赋值运算符重载 运算符重载 赋值运算符重载 const成员 const修饰类成员函数 取地址及const取地址操作符重载 本章总结&#xff1a; 前言 有时候我们写好了一个栈&#xff0c;头脑…

[计算机提升] 备份系统:设置备份

6.5 备份系统&#xff1a;设置备份 1、进入到控制面板系统和安全\备份和还原&#xff0c;点击右侧的设置备份&#xff1a; 2、在弹出的设置备份对话框中&#xff0c;选择要保存的位置&#xff0c;点击下一步开始备份。 3、选择要备份的内容。根据需要选择即可。这种备份的…

百面嵌入式专栏(面试题)驱动开发面试题汇总1.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍驱动开发面试题 。 1、Linux驱动程序的功能是什么? 对设备初始化和释放。进行内核与硬件的数据交互。检测和处理设备出现的错误。2、内核程序中申请内存使用什么函数? 答案:kmalloc()、kzalloc()、vm…

[Python进阶] 识别验证码

11.3 识别验证码 我们再开发某些项目的时候&#xff0c;如果遇到要登录某些网页&#xff0c;那么会经常遇到输入验证码的情况&#xff0c;而每次人工输入验证码的话&#xff0c;比较浪费时间。于是&#xff0c;可以通过调用某些接口进行识别。 11.3.1 调用百度文字识别接口 …

华为问界M9:全方位自动驾驶技术解决方案

华为问界M9的自动驾驶技术采用了多种方法来提高驾驶的便利性和安全性。以下是一些关键技术&#xff1a; 智能感知系统&#xff1a;问界M9配备了先进的传感器&#xff0c;包括高清摄像头、毫米波雷达、超声波雷达等&#xff0c;这些传感器可以实时监测车辆周围的环境&#xff0…

网安常用的三个攻击方式

1.渗透测试执行标准&#xff08;PTES&#xff09; 渗透测试执行标准由7个部分组成&#xff0c;包括前期交互、情报收集、威胁建模、漏洞分析、渗透利用、后渗透、撰写报告。在中国&#xff0c;渗透测试必须经过授权&#xff0c;否则就违背了网络安全法。前期交互主要指开展渗透…

项目部署小问题记录

1.搭建springboot项目,后台映射进不去(原因为代码和启动类不在一个包下) 2.服务器中,root用户命令提示没有权限 找到要操作的文件,查看属性 lsattr 发现文件有i属性(即不可修改) chattr -i webapps/ 去除掉i属性3.项目放到tomcat中去除上下文 在Host中把appBase置空,增加…

Linux系统之部署File Browser文件管理系统

Linux系统之部署File Browser文件管理系统 一、File Browser介绍1.1 File Browser简介1.2 File Browser功能1.3 File Browser使用场景 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、安装File Browser4…