![](https://img-blog.csdnimg.cn/39fcdc4a2c624e3088115e0f463fed4b.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
基础知识学习
文章平均质量分 84
在计算机普通应用和高级应用场景, 基础知识特别重要,包括:系统基础命令、基础算法、设计模式等等。
二进制空间安全
网络安全行业从业20年;CISP; 现专注于IT互联网新技术研究及成果转化。
展开
-
在Rust中处理命令行参数和环境变量
Rust的命令行和环境变量处理在标准库中提供了一整套实现方法, 在本文中除了探索标准库的使用方法之外, 也在不断适应Rust独有的语法特点。在本文中, 我们通过标准库函数的返回值熟悉了迭代器的使用方法, 操作迭代器精确控制保存的内容, 包括字符串和键值对的使用方法。原创 2023-11-28 16:45:13 · 1307 阅读 · 0 评论 -
在Rust中编写自动化测试
Rust中的测试函数是用来验证非测试代码是否是按照期望的方式运行的, 测试函数体通常需要执行三种操作:1.设置任何所需的数据或状态;2.运行需要测试的代码;3.断言其结果是我们所期望的。本篇文章主要探讨了Rust自动化测试的几种常见场景。原创 2023-11-27 17:02:37 · 733 阅读 · 1 评论 -
详解Rust编程中的生命周期
生命周期在Rust编程中是一个重要概念, 它能确保引用像预期的那样一直有效。在Rust语言中, 每一个引用都有其生命周期, 通俗讲就是每个引用在程序执行的过程中都有其自身的作用域, 一旦离开其作用域, 其生命周期也宣告结束, 值不再有效。幸运的是, 在绝大多数时间里, 生命周期是隐含且可以进行推断的, 类似于当有多种可能的类型时必须注明类型, 正因为如此, 所以Rust需要使用者使用泛型生命周期参数来注明它们的关系, 从而确保程序运行时实际使用的引用绝对有效。原创 2023-11-24 13:39:56 · 881 阅读 · 0 评论 -
弄懂Rust编程中的Trait
trait 定义了某个特定类型拥有可能与其他类型共享的功能。可以通过 trait 以一种抽象的方式定义共享的行为。可以使用 trait bounds 指定泛型是任何拥有特定行为的类型。原创 2023-11-21 13:49:41 · 1000 阅读 · 0 评论 -
在Rust编程中使用泛型
Rust中的泛型可以让我们为像函数签名或结构体这样的项创建定义, 这样它们就可以用于多种不同的具体数据类型。下面的内容将涉及泛型定义函数、结构体、枚举和方法, 还将讨论泛型如何影响代码性能。原创 2023-11-17 15:50:46 · 640 阅读 · 0 评论 -
Rust编程中的共享状态并发执行
虽然消息传递是一个很好的处理并发的方式,但并不是唯一一个。另一种方式是让多个线程拥有相同的共享数据。在学习Go语言编程过程中大家应该听到过一句口号:"不要通过共享内存来通讯"。原创 2023-11-13 17:31:00 · 718 阅读 · 0 评论 -
Rust编程中的线程间通信
为了实现消息传递并发,Rust 标准库提供了一个 信道(channel)实现。信道是一个通用编程概念,表示数据从一个线程发送到另一个线程。原创 2023-11-12 19:56:34 · 789 阅读 · 0 评论 -
在Rust中使用多线程并发运行代码
在大部分现代操作系统中,已执行程序的代码在一个 进程(process)中运行,操作系统则会负责管理多个进程。在程序内部,也可以拥有多个同时运行的独立部分。这些运行这些独立部分的功能被称为 线程(threads)。例如,web 服务器可以有多个线程以便可以同时响应多个请求。原创 2023-11-09 23:13:37 · 601 阅读 · 0 评论 -
Rust结构体的定义和实例化
Rust的结构体跟元组类型比较类似,它们都包含多个相关的值。和元组一样,结构体的每一部分可以是不同类型。但不同于元组,结构体需要命名各部分数据以便能清楚的表明其值的意义。由于有了这些名字,结构体比元组更灵活:不需要依赖顺序来指定或访问实例中的值。原创 2023-11-08 23:33:38 · 514 阅读 · 1 评论 -
Rust编程基础之引用与借用
在上一章节最后的代码中, 我们必须将 String 返回给调用函数,以便在调用 calculate_length 后仍能使用 String,因为 String 被移动到了 calculate_length 内。相反我们可以提供一个 String 值的引用(reference)。引用(reference)像一个指针,因为它是一个地址,我们可以由此访问储存于该地址的属于其他变量的数据。 与指针不同,引用确保指向某个特定类型的有效值。原创 2023-11-06 19:51:56 · 589 阅读 · 0 评论 -
Rust编程基础核心之所有权(下)
在上一节中, 我们讨论了变量与数据交互的第一种方式: 移动, 本节将介绍第二种方式:克隆。如果我们 确实 需要深度复制 String 中堆上的数据,而不仅仅是栈上的数据,可以使用一个叫做 clone 的通用函数。原创 2023-11-04 22:37:37 · 707 阅读 · 0 评论 -
Rust编程基础核心之所有权(上)
Rust 的核心功能(之一)是 所有权(ownership)。虽然该功能很容易解释,但它对语言的其他部分有着深刻的影响。所有程序都必须管理其运行时使用计算机内存的方式。一些语言中具有垃圾回收机制,在程序运行时有规律地寻找不再使用的内存,例如:Java、Go;在另一些语言中,程序员必须亲自分配和释放内存,例如:C、C++。Rust 则选择了第三种方式:通过所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序。原创 2023-11-03 23:12:10 · 739 阅读 · 0 评论 -
Rust编程基础之条件表达式和循环
本章主要介绍了Rust的条件表达式和循环的使用方法,通过结合代码和执行结果可以很清楚的了解其实现方式和执行过程原创 2023-11-03 21:35:50 · 553 阅读 · 0 评论 -
Rust编程基础之函数和表达式
在之前的文章中,我们已经见到了一个函数:main函数, 它是很多程序的入口点。也见过 fn 关键字,它用来声明新函数。原创 2023-11-02 18:52:19 · 325 阅读 · 0 评论 -
Rust编程基础之6大数据类型
在 Rust 中, 每一个值都属于某一个 数据类型(data type), 这告诉 Rust 它被指定为何种数据,以便明确数据处理方式。我们将看到两类数据类型子集:标量(scalar)和复合(compound)。原创 2023-11-01 17:26:23 · 471 阅读 · 0 评论 -
Rust编程基础之变量与可变性
在Rust语言中, 变量默认是不可改变的(immutable), 这是Rust提供给我们的众多优势之一, 让我们可以充分利用Rust提供的安全性和简单并发性来编写代码。原创 2023-10-29 22:29:21 · 380 阅读 · 0 评论 -
为什么现在学Rust编程是最好时机?
Rust是由Mozilla主导开发的通用、编译型编程语言。设计准则为:安全、并发、实用,支持函数式、并发式、过程式以及面向对象的编程风格。Rust的设计目标之一,是要使设计大型的互联网客户端和服务器的任务变得更容易,因此更加强调安全性、存储器配置以及并发处理等方面的特性。原创 2023-10-27 17:52:09 · 508 阅读 · 0 评论 -
Linux下利用Docker快速部署Kafka
在本文中,介绍了利用Docker安装Kafka的基础环境要求; 利用Docker安装zookeeper过程; 利用Docker安装Kafka过程;进入容器配置生产者和消费者过程; 演示生产者和消费者通讯; 故障排查方法。原创 2023-10-23 13:12:36 · 262 阅读 · 0 评论 -
记录Go语言空结构体的使用场景
Go语言的空结构体有两种定义方式:# 匿名空结构体# 命名空结构体空结构体主要有以下几个特点:(1).零内存占用 - 在内存优化方面非常有用(2).地址相同 - 无论创建多少个空结构体,它们所指向的地址都是相同的(3).无状态 - 在表示无状态的对象或情况时非常有用。原创 2023-10-13 11:18:11 · 77 阅读 · 0 评论 -
记录微服务的使用场景拆分标准和流行框架
Spring社区提供的微服务框架,基于Spring Boot构建,包含Eureka、Zuul、Feign等组件。如Istio、Linkerd等服务网格实现,专注微服务间通信治理。综合考虑业务、技术、运维等因素,合理规划微服务边界,既要高内聚同时又要低耦合。这些架构各有侧重,可根据业务需求,团队技术栈选择适合的微服务实现方案。按业务领域划分微服务,可以提高各团队的开发、测试、发布效率。容器集群管理系统,提供服务发现、负载均衡等微服务运维能力。使用微服务可以拆分成多个子服务,实现更好的横向扩展能力。原创 2023-10-13 10:29:31 · 60 阅读 · 0 评论 -
记录可能会导致Redis变慢的几个因素
Redis数据都是加载在内存中,如何可用内存不足,会导致频繁内存交换和清除,使Redis响应变慢,可以通过监控Redis内存使用情况,并适当增加分配的内存。如果看到Redis运行时延迟是其基线性能的2倍及以上,则可以认定Redis变慢了。原创 2023-10-12 21:23:07 · 153 阅读 · 0 评论 -
Git基本工作流-从初始化到推送总流程
了解基本的Git工作流程将满足任何希望在项目中实施版本控制的初学者开发者的需求。例如:如何创建仓库,如何将它们克隆到本地机器等等。这个工作流程应该会给你建立一个非常坚实的基础,来使用Git管理项目。原创 2023-09-11 22:42:46 · 155 阅读 · 0 评论 -
关于CPU核心数的统计总结
本文介绍了在Linux系统中如何查看服务器CPU的物理核心数和逻辑核心数的多种方法。主要包含了通过/proc/cpuinfo文件等来获取CPU核数的技巧。文中还讲解了核心数与超线程的关系,超线程可以双倍逻辑核数。总的来说,本文全面地介绍了Linux下查看CPU核心数量的多种方式,内容丰富,对于理解多核CPU的工作原理非常有帮助。通过学习本文,可以掌握Linux查看CPU核心数量的常用命令和方法。原创 2023-09-09 22:45:07 · 396 阅读 · 1 评论 -
高级Git命令和工作流程
在本节中,将深入探索一些高级的 Git 命令,这些命令可以使作为开发者的你更容易管理工作并提高效率。如 interactive rebase、cherry-pick、bisect、reflog 和 blame 等命令。每种命令都有其独特用途,并可以在不同场景下提供帮助。原创 2023-09-08 14:41:47 · 175 阅读 · 1 评论 -
Docker必掌握命令及参数Top10
Docker 已经成为容器技术的事实标准。想要真正地运用容器技术,掌握 Docker 的基本命令是首要步骤。这篇文章将给我们详细介绍Docker 的十大必备命令。原创 2023-09-06 16:26:39 · 259 阅读 · 1 评论