- 博客(26)
- 收藏
- 关注
原创 rust-简洁的控制流
至此,我们介绍了如何借助枚举创建可选多态类型,以及标准库提供帮助防止错误发生的 Option 类型。当枚举携带数据时,可根据需求选择使用match或if-let解构并访问这些数据,从而灵活应对各种情况。你的 Rust 程序现在能够通过结构体和枚举准确地表示领域概念,为 API 创建自定义类型确保类型安全——编译器保证每个函数只能接收预期的数据类型参数。为了向用户提供组织良好且易于使用,只暴露必要内容的软件接口,让我们接下来转向学习 Rust 模块系统吧。
2025-07-26 00:52:43
477
原创 rust-匹配控制流结构
Rust 有一个非常强大的控制流结构,称为 match,它允许你将一个值与一系列模式进行比较,然后根据匹配的模式执行相应的代码。第19章涵盖了所有不同类型的模式及其作用。不同的是,这里不是比较硬币,而是比较 Option<T> 的变体,但 match 表达式的工作方式保持不变。同样地,值会依次经过 match 中的每个模式,在第一个“适合”的模式处,该值就进入对应代码块并用于执行。我们可以写一个函数,接收未知种类的美国硬币,并像计数机器一样确定是哪种硬币,然后返回其面值(以美分为单位),如清单6-3所示。
2025-07-26 00:38:24
515
原创 rust-枚举
结构体(struct)为你提供了一种将相关字段和数据组合在一起的方法,比如一个包含宽度和高度的矩形,而枚举(enum)则让你能够表示某个值是可能取自一组值中的一种。例如,我们可能想说矩形是可能的几何图形之一,其他还包括圆形和三角形。为此,Rust 允许我们用枚举来编码这些可能性。让我们来看一个代码中可能需要表达的场景,并看看为什么在这种情况下枚举比结构体更有用且更合适。假设我们需要处理 IP 地址。目前,有两个主要标准用于 IP 地址:版本四(IPv4)和版本六(IPv6)。
2025-07-24 21:43:36
824
原创 rust-方法语法
让我们将接收 Rectangle 实例作为参数的 area 函数改为定义在 Rectangle 结构体上的 area 方法,如清单5-13所示。文件名: src/main.rswidth: 30,println!清单5-13:在Rectangle结构体上定义area方法为了在Rectangle上下文中定义函数,我们开始了一个针对Rectangle的 impl(实现)块。这个 impl 块中的所有内容都与类型 Rectangle 相关联。
2025-07-24 21:17:43
501
原创 rust-结构体使用示例
area 函数访问 Rectangle 实例中的 width 和 height 字段(注意,对借用 struct 实例字段进行访问不会移动字段值,因此经常看到对 struct 的借用)。这表明宽高彼此关联,并且比起直接按索引访问 tuple 元素(如 .0、.1),这种方式提供了描述性的名称,有助于提升代码可读性,这是一次胜利。虽然不是最漂亮的输出,但它显示了实例所有字段的值,这在调试时非常有帮助。但另一方面,这个版本不够直观,因为元组元素没有名字,我们必须通过索引访问各部分,使得计算过程不那么明显。
2025-07-24 21:02:42
663
原创 rust-数据结构
结构体类似于“元组类型”一节中讨论的元组,因为两者都包含多个相关的值。像元组一样,结构体中的各个部分可以是不同的类型。但与元组不同的是,在结构体中你需要为每个数据部分命名,以便明确这些值的含义。添加这些名称使得结构体比元组更灵活:你不必依赖数据的顺序来指定或访问实例中的值。要定义一个结构体,我们输入关键字 struct 并为整个结构体命名。结构体的名称应描述被组合在一起的数据部分的重要性。然后,在花括号内定义数据部分(称为字段)的名称和类型。例如,清单 5-1 展示了一个存储用户账户信息的结构体。
2025-07-24 20:15:55
633
原创 rust-切片类型
所有权、借用以及 Slice 概念共同保证 Rust 程序内存安全并发生于编译期控制之下。Rust 提供系统级语言般精细内存管理能力,但拥有者离开作用域时自动释放资源,无需手动写复杂销毁代码,从而减少调试负担。所有权机制贯穿 Rust 多处设计理念,全书后续章节将持续深入探讨。本章至此结束,我们接下来进入第五章学习如何通过结构体(struct)组合数据块吧!
2025-07-24 17:10:06
713
原创 rust-参考与借用
与指针不同的是,引用在引用的生命周期内保证指向一个特定类型的有效值。然而,允许多个不可变引用是合理的,因为那些只是读取数据的人无法影响其他人的读取。注意,引用的作用域从它被引入的地方开始,并持续到最后一次使用该引用的地方。我们可以通过一些小的调整来修复清单4-6中的代码,从而允许我们修改一个被借用的值。可变引用有一个重要的限制:如果你有一个对某个值的可变引用,那么你不能有其他对该值的引用。因为引用并不拥有它,所以当引用不再被使用时,它所指向的值不会被释放。正如变量默认是不可变的一样,引用也是不可变的。
2025-07-24 16:43:34
572
原创 rust-所有权
什么是所有权所有权是一组规则,它决定了 Rust 程序如何管理内存。所有运行中的程序都必须管理它们对计算机内存的使用方式。某些语言使用垃圾回收(GC),在程序运行时定期查找不再使用的内存;另一些语言则要求程序员显式地分配和释放内存。Rust 采用第三种方式:通过一套编译期检查的“所有权系统”来管理内存。一旦违反这些规则,程序就无法通过编译。所有权机制的任何特性都不会在运行时拖慢程序。对许多开发者来说,所有权是一个全新概念,确实需要一定时间适应。
2025-07-24 15:14:38
494
原创 rust流程控制
本章内容不少:你学习了变量、标量和复合数据类型、函数、注释、if表达式和循环!实现华氏度与摄氏度的相互转换。生成第 n 个斐波那契数。利用歌曲中的重复结构打印圣诞颂歌《圣诞十二日》的歌词。准备好后,我们将讨论 Rust 中其他语言不常见的概念:所有权。
2025-07-24 12:01:42
667
原创 linux Ubuntu 安装postgrsql
确保防火墙没有阻止从外部 IP 地址到 PostgreSQL 服务器的连接。要允许所有 IP 地址访问 PostgreSQL 服务器,你可以在。编辑 PostgreSQL 环境配置文件。来表示所有 IPv4 地址,或者使用。编辑 PostgreSQL 配置文件。确保 PostgreSQL 配置文件。或其他防火墙工具来检查和配置防火墙。来表示所有 IPv6 地址。如果显示的新数据目录路径为。文件中添加一行配置,使用。假设你要将数据目录移动到。,以监听所有 IP 地址。
2024-09-07 21:20:56
1270
原创 7B模型中型企业部署硬件配置详解
在上述中等配置下,通过合理的优化和负载管理,一个系统能够支撑大约2400-4800左右的用户数。这一估算值基于某些理想假设,如每个用户每分钟发起一个请求。实际支持的用户数可能会因为用户行为、请求模式、系统优化等因素有所不同。通过实际的负载测试和运行数据分析,进一步调整系统配置和优化方案,可以更精准地估算支持的用户数并提升系统性能。
2024-05-24 14:55:25
3576
原创 docker部署mysql5.7
命令行工具、MySQL Workbench 或其他数据库管理工具)连接到你的 MySQL 数据库。为了确保 MySQL 数据在容器重启或删除后不会丢失,你可以将数据目录挂载到主机目录。这样,你就成功地使用 Docker 部署了 MySQL 5.7,并使其能够被外部用户访问。例如,如果你使用的是。你可以通过 MySQL 客户端连接到数据库并创建新的数据库和用户。:将容器的 3306 端口映射到主机的 3306 端口。:设置 MySQL root 用户的密码。密码:你在步骤 3 中设置的密码(例如。
2024-05-23 14:06:36
832
原创 查看在 CentOS 系统上哪些客户端连接了特定的端口
要查看在 CentOS 系统上哪些客户端连接了特定的端口(例如9030端口),你可以使用netstat或ss命令。ss命令是一个更现代的工具,用于显示套接字统计信息,它可以替代netstat命令。
2024-03-08 10:11:21
843
原创 docker 命令记录
回收 Docker 使用的空间主要是通过删除不再需要的镜像、容器、卷和网络。但要谨慎进行,避免删去当前还在使用或未来可能再次需要的资源。
2024-03-06 10:24:16
438
原创 在 Linux 查看操作系统信息
目录下所有以 “release” 结尾的文件的内容,你可以获得关于系统发行版的信息。这个命令对于绝大多数 Linux 发行版都适用,包括 Ubuntu 和 CentOS。在 Linux 系统中,你可以通过多种方法来检查你的系统是 Ubuntu 还是 CentOS。通过这些方法,你可以轻松地判断出自己的 Linux 系统是Ubuntu还是CentOS。命令的实现,但在某些版本中可能通过安装相关包来支持这一命令。命令也提供了操作系统的信息,包括发行版名称和版本。文件的内容可以帮助你获取当前系统的详细信息。
2024-02-22 15:05:59
2268
原创 docker chrome 镜像制作
docker commit -m ‘镜像描述’ -a ‘制作者’ 容器名 镜像名。复制字体到 /usr/share/fonts/
2023-03-20 09:56:31
718
1
原创 servicecomb rpc 调用超时问题
servicecomb rpc 调用超时问题错误日志如下:org.apache.servicecomb.swagger.invocation.exception.InvocationException: InvocationException: code=490;msg=CommonExceptionData [message=Unexpected consumer error, please check logs for details]60cac2cafff29e45e1f86e0b at or
2021-06-17 14:00:38
1833
原创 centos 6.5安装nodejs(v12.18.1)全网最细
一.准备工作(1)查看GLIBCXX版本,node需要 GLIBCXX_3.4.18版本以上,如果版本过低需要升级libstdc++.so.6.0.26 否则直接跳过 这一步strings /usr/lib64/libstdc++.so.6 | grep GLIBC1.下载libstdc++.so.6.0.26 2.解压并且把解压的文件复制到 /usr/lib64/目录下 cp libstdc++.so.6.0.26 /usr/lib64/ 3. 进入到/usr/lib64/ 目
2020-07-24 00:05:43
1359
1
原创 看到类似的javapdf吗
pom文件如下com.itextpdf.toolxmlworker5.5.8org.freemarkerfreemarker2.3.28java 代码如下import com.itextpdf.text.Document;import com.itextpdf.text.pdf.PdfWriter;import com.itextpdf.tool.xml.XMLWo...
2018-11-06 11:33:57
187
原创 hashmap的基本模型理解
1.hashMap的默认长度为16. Put操作 首先计算key的hash值,key为空时hash为0, 如果是第一个值则创建一个Node的数组对象,数组的长度为16 因为数组的长度为16,所以数组下标的取值为(0~15),0=< (hash值除以15取余)<=15 那么第一个Node对象下标就是 key的hash值除以15取余。 2。装载因子的默认值为0.75 装载因子...
2018-08-14 21:54:24
559
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人