[Rust_1] 环境配置 | vs golang | 程序运行 | 包管理

article/2025/9/4 9:34:40

目录

Rust 环境安装

GoLang和Rust

关于Go

关于Rust

Rust vs. Go,优缺点

GoLang的优点

GoLang的缺点

Rust的优点

Rust的缺点

数据告诉我们什么?

Rust和Go的主要区别

(1) 性能

(2) 并发性

(3) 内存安全性

(4) 开发速度

(5) 开发者体验

Rust和Go的共同特点

交互性

何时应该使用GoLang?

何时应该使用Rust?

总结

Rust 学习

1.介绍

2、Rust简介

3、第一个Rust程序

4、初识包管理

5、总结


终极目标:用rust实现一个Pratt 解析器,并运行测试

预计实现结果:

学习契机:

  • 有个作业涉及到了 pratt 解析的实现,然后搜论文的时候,发现论文中使用 rust 实现的,就学习了一下 rust。
  • and 看到了说一旦学会了 Rust,即使是作为较为底层的开发人员,同样也能享受到像 py 一样的包管理的便利了 ovo
  • (下篇文章会在学完语法后,就来尝试实现 pratt 啦)

参考资料:

社区 - Rust 程序设计语言

https://crates.io/


Rust 环境安装

linux 上 rust 环境安装,一行命令即可解决

sudo apt update && sudo apt install -y cargo
cargo new pratt_parser

win 上环境也好配,官网安装完包后 配合 vecode rust 插件即可


关于外网上面一篇关于 rust & go 的文章翻译

and 谨记 万变不离其宗,语言只是工具

GoLang和Rust

Rust vs. Go,在2024年,应该选择哪一个?或者说应该选择哪种语言——GoLang还是Rust。这可能是许多程序员在选择语言时考虑的一个问题。选择理想的编程语言被视为在这个不断变化的环境中取得成功的重要抉择。

  • GoLang和Rust是当今使用的最年轻的编程语言。Go于2009年在Google推出,而在Go之后,Rust于2010年在Mozilla推出。
  • 这两种语言在当前流行的编程语言工具中有一些相似之处和差异。
  • 通过本文,我们将讨论Rust和Go之间的基本差异和相似之处。

关于Go

Go是一门开源的计算机语言,可以更轻松地创建简单、高效和强大的软件。

Go是精确、流畅和高效的。编写一个利用多核和网络机器的程序非常方便。

  • Go或GoLang是由Google工程师创建的,他们希望创建一种既具有C++的效率,又更容易学习、编写、阅读和安装的语言。
  • GoLang主要用于创建网络API和小型服务,特别是其goroutines,具有可扩展性。GoLang可以流畅地组装为机器代码,并提供舒适的垃圾回收和表示运行时的能力。
  • Go是一种快速、静态类型的汇编语言,给人一种解释型和动态类型语言的感觉。Goroutines的语言使开发人员能够创建完全掌控并发的应用程序,例如大型电子商务网站,同时在多个CPU核心上调度工作负载。

因此,准确地说,它非常适合并行计算环境。

垃圾回收是Go的另一个特性,可以保证高效的内存管理。因此,未使用的内存可以用于新项目,而未使用的对象则从内存中“丢弃”。

关于Rust

Rust是一种静态类型的编译型编程语言,受到多种编程原型的支持。

  • 该语言最初的创建目标是优先考虑性能和安全性,其中安全性是主要目标。
  • Rust主要用于处理CPU密集型的活动,例如执行算法和存储大量数据。因此,需要高性能的项目通常使用Rust而不是GoLang。
  • 理想情况下,Rust是C++的镜像。与GoLang和Java不同,Rust没有垃圾回收。相反,Rust使用借用检查器来确保内存安全。这个借用检查器强制执行数据所有权协议,以避免数据竞争。在这里,数据竞争意味着多个指针指向同一个内存位置。
  • Rust是一种用于长时间大型或小型团队的计算机编程语言。对于这种类型的编程,Rust提供了高度并发和极其安全的系统。

Rust现在被广泛用于Firefox浏览器的大部分部分。在2016年之后,Rust被宣称为最受欢迎的编程语言。Rust是一种非常基础的语言,可以在短短5分钟内学会。

Rust vs. Go,优缺点

要准确决定选择Go还是Rust,最好看一下GoLang和Rust的优势和劣势。上面我们已经对它们有了简单的了解,下面是它们的优点和缺点。

GoLang的优点
  • 它是一种简洁和简单的编程语言。
  • 它是一种良好组合的语言。
  • 以其速度而闻名。
  • Go具有很大的灵活性,并且易于使用。
  • 它是可扩展的。
  • 它是跨平台的。
  • 它可以检测未使用的变量。
  • GoLang具有静态分析工具。
GoLang的缺点
  • 没有手动内存管理。
  • 因为它太容易,所以感觉很表面。
  • 由于年轻,所以库较少。
  • 其中一些函数(如指针算术)是底层的。
  • GoLang的工具有一些限制。
  • 分析GoLang中的错误可能很困难。
Rust的优点
  • 提供非凡的速度。
  • 由于编译器,提供最佳的内存安全性。
  • 零成本抽象的运行时更快。
  • 它也是跨平台的。
  • 它提供可预测的运行时行为。
  • 它提供了访问优秀模式和语法的方式。
  • 它具有特殊的所有权特性。
  • 它易于与C语言和其他语言结合使用。
Rust的缺点
  • 尽管它确实很快,但有人声称它比F#慢。
  • 具有基于范围的内存管理,可能导致内存泄漏的无限循环。
  • 在Rust中无法使用纯函数式数据框架,因为没有垃圾回收。
  • Rust没有Python和Perl语言支持的猴子补丁水平。
  • 由于语言还很新,可能会对语法感到担忧。
  • 编译时有时会很慢,因此学习变得困难。

数据告诉我们什么?

  • 根据一份报告,GoLang语言被认为是参与者最喜欢的语言。
  • 我们对GoLang和Rust语言有了基本的了解,现在继续进行Rust vs. Go的比较,并清楚地认识到这两种语言之间的差异。
Rust和Go的主要区别

GoLang和Rust之间的主要区别包括:

  • 性能
  • 并发性
  • 内存安全性
  • 开发速度
  • 开发者体验
(1) 性能
  • Google推出Go作为易于编码和学习的C++替代品。Go提供Goroutines,通过其中一个可以通过简单地包含Go语法来运行函数。
  • 尽管Go具有这些有用的功能和对多核CPU的支持,但Rust占据上风,超过了Go。
  • 因此,Go vs Rust:性能是Rust在与GoLang的比较中获得更多分数的一个特点。这些编程语言都是为了与C++和C等价而创建的。然而,在Rust vs. Go的比较中,GoLang的开发速度略高于Rust的性能。
  • 虽然Rust在性能上优于Go,但在编译速度方面,Rust落后于Go。
  • 然而,人们对编译时间并不太在意,所以整体上Rust在这方面是胜利者。
(2) 并发性
  • GoLang支持并发,在这一因素上比Rust有优势。Go的并发模型允许开发人员在不同的CPU核心上安装工作负载,使Go成为一种连贯的语言。
  • 因此,在运行处理API请求的网站的情况下,GoLang goroutines将每个请求作为子进程运行。这个过程提高了效率,因为它将任务从所有CPU核心中卸载出来。
  • 另一方面,Rust只有一个原生的等待或同步语法。因此,程序员更喜欢使用Go的方式来处理并发问题。
(3) 内存安全性
  • Rust使用编译时头文件策略来实现零成本中断的内存安全性。如果不是内存安全的程序,Rust将无法通过编译阶段。实际上,Rust的好处之一就是提供了内存安全性。
  • 为了实现内存安全的并发,Rust使用类型安全性。Rust编译器调查你引用的每个内存地址和使用的每个变量。Rust的这个特性将通知你任何未定义行为和数据竞争。
  • 它确保程序员不会遇到缓冲区溢出的情况。
  • 相比之下,Go在运行时完全自动化。因此,开发人员在编写代码时不必担心内存释放。
  • 因此,无论是GoLang还是Rust都优先考虑内存安全特性,但在性能方面,GoLang具有数据竞争的可能性。
(4) 开发速度
  • 在某些情况下,开发速度比性能和程序速度更重要。Go语言的直接性和清晰性使其成为一种开发速度较快的语言。Go语言具有更短的编译时间和更快的运行时间。
  • 尽管Go既提供了开发速度和简单性,但它缺少一些重要的功能。为了使语言更简单,Google删除了其他编程语言中可用的许多功能。
  • 另一方面,Rust比Go拥有更多的功能。Rust具有更长的编译时间。
  • 因此,如果项目的优先级是开发速度,Go比Rust要好得多。如果你不太关心开发速度和开发周期,但希望获得性能和内存安全性,那么Rust是你的最佳选择。
(5) 开发者体验
  • 由于开发Go的主要动机是简单和易用性,大多数程序员认为它是一种“无聊的语言”或“简单的语言”。Go中的功能有限,使得学习和实现非常简单。
  • 相反,Rust具有更高的内存安全功能,使得代码更复杂,降低了程序员的生产力。所有权的概念使得Rust语言对许多人来说不是理想的选择。
  • 与Go相比,Rust的学习曲线要陡峭得多。然而,值得注意的是,与Python和JavaScript等语言相比,GoLang的学习曲线也较陡峭。
Rust和Go的共同特点
  • 在Rust vs Go的比较中,这两者之间有很多共同之处。GoLang和Rust都是许多年轻开发人员使用的现代编程语言。
  • GoLang和Rust都是编译语言,都是开源的,并且都是用于微服务的计算环境。
  • 此外,如果你对C++有一些了解,那么这两个程序都非常容易理解。
交互性
  • Rust能够与代码进行接口交互,例如直接与C库进行通信。Rust没有提供内存安全性的认证。
  • 交互性带来了速度。Go提供了与C语言配合使用的Go包。
何时应该使用GoLang?
  • Go语言可用于各种不同的项目。根据一份报告,Go的用例包括网页开发、数据库和Web编程。大多数GoLang开发人员声称,由于Go的并发性,它对Web服务有一些限制。
  • 不仅如此,Go还被列为后端Web开发的首选语言。Go语言还为Google Cloud Platform提供支持。因此,在高性能云应用中,Go确实是性能消耗大的语言。
何时应该使用Rust?
  • Rust是一种几乎可以在任何地方使用的计算机编程语言。然而,仍然有一些领域比其他领域更适合使用。系统编程就是其中之一,因为Rust在高性能方面表现出色。
  • 系统程序员基本上是在硬件侧开发的软件工程师。由于Rust处理硬件侧内存管理的复杂性,它经常用于设计操作系统或计算机应用程序。
  • 尽管在开发者社区内对什么构成中级语言存在一些争议,但Rust被视为具有面向机器的现代语言的特点。

总结

  • 这两种语言,GoLang和Rust,由于它们非常相近的起源时间,被认为是彼此的竞争对手。Go的发展速度比Rust快。这两种语言有很多相似之处。
  • GoLang和Rust之间的区别在于Go是简单的,而Rust是复杂的。然而,它们的功能和优先级在各种有意义的方面有所不同。
  • Go与Rust并驾齐驱。这意味着这完全取决于拥有的项目类型,主要取决于对业务来说什么是最好的。

Rust 学习

1.介绍

近些年来不断有新的语言崛起,比如当下非常火的 go 语言,不过相比于 C++,go 语言确实是非常简单的。

  • rust 作为一名新兴语言,与 go 又有些许不同,因为它的目标是对标系统级开发,也就是试图动摇 C、C++ 这两位纵横编程界数十年的老大哥位置。
  • 比如我们最常用的 windows 系统,就是用 C/C++ 语言开发的,也正因如此,我们才能用 C++ 在 VS 中非常方便的调用 win API 函数。
  • 而同样的,越是涉及到底层,需要控制的细节就会越多,即使是这位试图通过简便语法便利包管理安全可靠等良好特性脱颖而出的 rust 语言,也同样不例外。
  • 目前来看,rust 语言最大的缺陷是诞生时间太短,生态还不够完善。

比如当你想要用 rust 写 GUI 程序,就很麻烦,因为官方目前还没有推出 GUI 库。

  • 但这并非是无法解决的,rust 同样意识到了这个问题,所以它提供了简便的方式让你可以直接在代码中调用 C 语言开发的库。
  • 这意味着只要是用 C 语言开发的库,你就能用 rust 语言调用它进行开发!
  • 比如你可以使用 rust 绑定 C 开发的 FLTK、GTK 等 GUI 库就可以进行开发 GUI 程序了,当然也有正在发展的库,比如 egui、iced、tauri 等等。

目前比较推荐的是 Tauri,不过前提是需要会 web 前端,关于 Tauri 后续专栏会提到,并进行学习~

而 rust 带来的代码安全、便捷的开发又是 C 语言所无法比拟的,所以预测要不了多少年,随着 Rust 生态的不断完善,会取代很大一部分 C/C++ 的份额。

  • 不过想要彻底将 C/C++ 取代,短时间内还是有点不现实的,比如 windowslinuxmac 三大操作系统以及各种 C/C++ 开源库的代码量是一个非常恐怖的数字,想要彻底替换,绝非一朝一夕之功。
  • 同时需要注意:学习 rust 前,最好对 C/C++ 语言有一定的了解,否则 rust 里面的很多概念你都可能无法理解。

2、Rust简介

参考百度百科:

Rust语言在2006年作为 Mozilla 员工 Graydon Hoare 的私人项目出现,而 Mozilla 于 2009 年开始赞助这个项目。第一个有版本号的 Rust 编译器于2012 年 1 月发布。Rust 1.0 是第一个稳定版本,于 2015年5月15日发布。

可以看到,Rust 是 2015 才对外开放稳定版本的,距今不到 10 年,根据目前程序员对 Rust 这门语言的普遍评价来说,现在学习 Rust,还有机会享受到这门语言在不久的将来可能会带来的福利。

事实上现在在国内的招聘市场上,与 rust 语言相关的岗位已经开始变多了。

那么具体来说,Rust 能为开发人员带来哪些便利呢?

主要有以下几点:

  • 内存安全
    Rust 中的所有内存访问都经过了编译器的严格检查,并且在运行时不会出现空指针异常或数据竞争等问题。这意味着 Rust 代码具有更高的可靠性和安全性,可以避免常见的安全漏洞。
    而 C/C++ 中则时常需要担心指针、内存问题,尤其是在大型项目中,非常容易因此出现各种各样的 Bug。
  • 高效性能
    Rust 具有与 C 和 C++ 相当的性能,并采用了现代语言的特性和设计理念,如智能指针、闭包和模式匹配等。这使得 Rust 很适合编写高性能、低延迟的系统级应用程序和库。
  • 并发性
    Rust 的所有权系统和借用规则使其易于编写线程安全的代码,即使在多线程环境下也可以保持高效率和可靠性。
  • C/C++ 中则完全需要自己进行控制。
  • 社区支持
    Rust 拥有活跃的社区,在crates上提供了许多开源库、工具和框架,可以大幅度提升开发效率。
    C/C++ 虽然学习的人很多,但却几乎没有官方的、活跃的社区可以供大家交流,都是在各搞各的。
  • 统一包管理
    C/C++ 中,最让人诟病的便是包管理了,想要用一个包,还需要自己下载、安装、配置等等。
    • 💡在 AI 时代,是否可以借助 AI 来实现让 C++和 Rust 一样的包管理呢?(可行性)
    • 之后的文章会更新和 AI 的讨论结果🤔

  • Rust 则直接提供了一个统一的包管理程序,只需要写一行代码,就能自动为你下载配置好你所需要的一切,并且还提供对应的文档,使用起来非常方便!

综上,你便能看出 Rust 的优势所在了。

  • Python 语言之所以能火,有很多原因,而其中相当大的一个原因就是 Python 有一个统一的包管理程序 pip,可以很方便的下载各种第三方包而不需要像 C/C++ 那样自己配置。
  • 一旦学会了 Rust,即使是作为较为底层的开发人员,我们同样也能享受到这种便利了!
  • 这是学习 C/C++ 所无法想象的,虽然目前有一个 vcpkg 包管理库很不错,但这毕竟不是标准委员会推出的,而是微软带头组织的一个开源项目,如果不会科学上网,中国几乎也无法使用。

3、第一个Rust程序

我们可以通过命令

cargo new projectName

来创建一个 Rust 项目。

比如运行

cargo new hello-world

然后它就会为我们在当前目录中生成一个项目文件夹:

这里简单对其介绍一下:

  • src:这是存放代码的地方,以后我们写的 rust 代码就放在这个文件夹里面。
  • .gitignore:这同样是 git 使用的,用于忽略哪些类型文件,不进行版本管理,一般同样不用管
  • Cargo.toml :这个文件就很重要了cargo 作为 rust 的包管理程序,就是通过这个文件知道你这个项目中需要哪些依赖库的

打开 Cargo.toml,就能看到下面这样的内容:

对于想要用到的库,直接写在 [dependencies] 项的下面即可,后面我会再对其进行详细介绍。


然后来到 src 这个存放 rust 代码的目录里面。

  • 这里面默认有一个 main.rs 文件,其中后缀 .rs 便是 rust 的简写,这个文件是 rust 项目中不可或缺的,因为它将作为整个项目的入口文件。
  • 注意:不可更改这个文件的名称否则后面的编译将会直接失败!(hh 因为尝试过失败了,才知道......踩坑+1)
  • 同样的,我们可以打开它:

这里写的是一个函数:

  • fn:rust 中的关键字,即为 function 的简写,代表后面跟着的是一个函数。
  • main:这个函数的名称,这里不可更改!因为这是程序的入口函数,程序将从这个函数开始顺序执行内部的代码。
  • ():与前面的函数名、fn 关键字、后面紧跟的 {} 组成一个完整的函数签名,最简单的函数就是fn name(){}
  • {}:函数体,即这个函数要执行的代码,比如这里填写的是 println!(\"Hello, world!\");,就是说要打印出 "hello world" 这个字符串。

println! 是一个 rust 中的宏,用于简化我们输出一个字符串到控制台的步骤。

  • 如果你学过 C/C++、python、java 等等其它语言,前期学习过程中可以直接把它当作一个 print 函数即可,只是要注意它的后面先有一个 !,然后才是 ()
  • 这里同时要注意,每一个语句的结尾用的英文符号 ;,不用则会报错,这一点和 C/C++ 保持一致。

现在回到控制台,进入这个文件夹,然后来运行这段代码试一试,运行代码的命令为

cargo run

然后就可以看到它成功运行并打印出了 Hello World! 字符串。

  • 如果你学过 C/C++,会发现到目前为止,rustC/C++ 会稍稍复杂一点,毕竟 C/C++ 只需要一个源代码文件就能输出 hello world 了,而 rust 却一上来就给我们生成了这么多文件。
  • 但很快你就会发现 rust 这样做的好处,尤其是在后面开发项目时。
  • 前面我们说了,rust 是一个编译型的语言,所以会编译成二进制后才能运行,我们可以在下面的目录中找到这个生成的 exe 程序:

不过直接点击它运行是不行的,因为前面的代码中我们只写了一个打印字符串的代码,打印完程序就结束了,后面我们会想办法解决这个问题。

上面提到的这个 cargo run 命令即为编译并运行当前项目的意思,可如果我只想编译,不运行呢?

那就可以使用命令

cargo build

其默认构建的是 Debug 版本,即可调试版本,直观的来说就是生成的 exe 程序会稍微比较大。

我们也可以构建 Release 版本,使用命令:

cargo build --release

直观来说,这个命令生成的可执行文件会较小:

如果你还是觉得它比较大,那么我们还可以使用一些工具来进一步压缩它,可以让它只有几十 kb,有兴趣的可以了解一下 upx 工具。


4、初识包管理

配置 IDE

我们 来 试一下 rust 官网提供的一个示例,来看看 rust 的包管理有多好用。

比如我想要在终端打印出下面这个图案:

这里就用到了 ferris-says 这个库,首先来到前面提到的 Cargo.toml 文件,然后在 [dependencies] 项添加一下这个库:

  • 后面的数字是这个库的版本号,Ctrl+S 保存后,vscode 就会自动给我们拉取这个库包到本地。
  • 你可能也注意到了不知道什么时候,项目文件夹中多了一个 Cargo.lock 文件。

这个文件用于记录我们当前项目用到的所有库以及依赖,是由 cargo 自动管理的,我们无需操心。

现在来到代码中,让我们来使用一下这个库

use ferris_says::say; // from the previous step
use std::io::{stdout, BufWriter};fn main() {let stdout = stdout();let message = String::from("Hello lvy");let width = message.chars().count();let mut writer = BufWriter::new(stdout.lock());say(message.as_bytes(), width, &mut writer).unwrap();
}

第一次看上去,你可能会感觉怎么有点复杂啊?

  • 因为这一小段代码就涉及到了 rust 中相当多的概念,所以我暂时并不会讲解这段代码的逻辑,你可以自己随意更改这段代码里面的字符串:"Hello lvy"
  • 然后运行上面这段代码,就能在终端看到输出的图案了。
  • 而这个库的下载安装位置默认为当前用户文件夹的 .Cargo 文件夹中

至于库代码上层的这个文件夹,则是代表着仓库名


5、总结

学习 了 rust 的特点、安装、项目结构、IDE 环境配置、代码运行。

主要有以下几个命令需要稍微记忆一下:

  • cargo new:新建一个 rust 项目
  • cargo run :直接运行代码
  • cargo build :只编译代码,不运行,默认编译的为 debug 版本
  • cargo build --release:编译为 release 版本

同时还可以使用 upx 工具减小最终编译程序的体积。


http://www.hkcw.cn/article/UjfXAssltW.shtml

相关文章

Codeforces Round 1024 (Div. 2)

Problem - A - Codeforces 思维题&#xff1a; 如果n不能整除p&#xff0c;就会多出一部分&#xff0c;这个部分可以作为调和者&#xff0c;使整个数组符合要求。 如果n能整除p&#xff0c;没有调和空间&#xff0c;只有看n/p*qm 来看代码&#xff1a; #include <bits/s…

【东枫科技】KrakenSDR 天线阵列设置

标准测向需要五根相同的全向天线。您可以折衷使用更少的天线&#xff0c;但为了获得最佳性能&#xff0c;我们建议使用全部五根天线。这些天线通常是磁铁安装的鞭状天线&#xff0c;或偶极子天线。我们建议始终使用均匀圆形阵列 (UCA) 天线&#xff0c;因为它可以确定来自各个方…

包含Javascript的HTML静态页面调取本机摄像头

在实际业务开发中&#xff0c;需要在带有摄像头的工作机上拍摄施工现场工作过程的图片&#xff0c;然后上传到服务器备存。 这便需要编写可以运行在浏览器上的代码&#xff0c;并在代码中实现Javascript调取摄像头、截取帧保存为图片的功能。 为了使用户更快掌握JS调取摄像头…

2023年6月第三套第二篇

找和脑子有关系的rather than 不是的意思&#xff0c;不用看 instead表示递进的解释 even when即使不重要&#xff0c;看前方主句 d选项是even when和前方主句的杂糅&#xff0c;往往是错的 instead of 而不是 这道题&#xff0c;有的人觉得避免模仿这时候你会笑&#xff0c;所…

Redis的大Key问题如何解决?

大家好&#xff0c;我是锋哥。今天分享关于【Redis的大Key问题如何解决&#xff1f;】面试题。希望对大家有帮助&#xff1b; Redis的大Key问题如何解决&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis中的“大Key”问题是指某个键的值占用了过多…

magic-api配置Git插件教程

一、配置gitee.com 1&#xff0c;生成rsa密钥&#xff0c;在你的电脑右键使用管理员身份运行&#xff08;命令提示符&#xff09;&#xff0c;执行下面命令 ssh-keygen -t rsa -b 2048 -m PEM一直按回车键&#xff0c;不需要输入内容 找到 你电脑中的~/.ssh/id_rsa.pub 文件…

Virtuoso中对GDS文件进行工艺库转换的方法

如果要对相同工艺节点下进行性能评估&#xff0c;可以尝试将一个厂商的GDS文件转换到另一个厂商&#xff0c;不过要注意的是不同厂商&#xff08;比如SMIC和TSMC&#xff09;之间的DRC规则&#xff0c;尽量采用两个DRC中的约束较为紧张的厂商进行设计&#xff0c;以免转换到另外…

【二】9.关于设备树简介

1.什么是设备树&#xff1a; &#xff08;DTS&#xff09;采用树形结构描述扳级设备&#xff0c;也就是开发板上的设备信息&#xff0c;每个设备都是一个节点。 一个SOC可以做出很多不同的板子&#xff0c;这些不同的板子肯定是有共同的信息&#xff0c;将这些共同的信息提取出…

VSCode远程开发-本地SSH隧道保存即时修改

工作环境是一个网站团队几人同时在改&#xff0c;为了减少冲突&#xff0c;我们选择在自己公司服务器上先部署一版线上通用&#xff0c;再连接到不同的本地&#xff0c;这样我们团队可以在线上即时看到他人修改的结果&#xff0c;不用频繁拉取提交推送代码 在线上服务器建一个…

Embedded IDE下载及调试

安装cortex_debug插件 我这边用jlink烧录&#xff0c;其他的根据你自己的来 jlink路径在左下角齿轮设置里 设置位置&#xff1a; 芯片名称配置的都是自动生成的&#xff0c;在eide.json的这里改为你jflash芯片包的设置 调试里也会自动生成一个cortex_debug的调试选项 点旁边的…

lua注意事项

感觉是lua的一大坑啊&#xff0c;它还不如函数内部就局部变量呢 注意函数等内部&#xff0c;全部给加上local得了

【第4章 图像与视频】4.4 离屏 canvas

文章目录 前言为什么要使用 offscreenCanvas为什么要使用 OffscreenCanvas如何使用 OffscreenCanvas第一种使用方式第二种使用方式 计算时长超过多长时间适合用Web Worker 前言 在 Canvas 开发中&#xff0c;我们经常需要处理复杂的图形和动画&#xff0c;这些操作可能会影响页…

长安链起链调用合约时docker ps没有容器的原因

在调用这个命令的时候&#xff0c;发现并没有出现官方预期的合约容器&#xff0c;这是因为我们在起链的时候没有选择用docker的虚拟环境&#xff0c;实际上这不影响后续的调用&#xff0c;如果想要达到官方的效果那么你只需要在起链的时候输入yes即可&#xff0c;如图三所示

表中如何插入数据!扩展技能边界

insert语句向表中添加行。认识命令就行&#xff0c;使用时可以问AI帮忙写。 一.按顺序插入行 向上次新建的天气表&#xff0c;插入行。 insert into weather values (1,北京, 1, 37, 0.55, 2025-05-12); --按顺序依次写 insert into weather values (2,上海, 10, 41, …

三轴云台之抗扰动技术篇

三轴云台的抗扰动技术是保障其在复杂动态环境下实现稳定拍摄的核心&#xff0c;其技术体系涵盖机械结构优化、传感器融合算法、控制策略设计及动态补偿机制等多个层面。 一、抗扰动技术核心原理 多轴解耦与独立控制 俯仰轴&#xff08;Pitch&#xff09;、横滚轴&#xff08…

财管4-债务资本成本普通股资本成本的估计

1.债务资本成本 1) 未来成本 2) 期望成本 3) 长期债务成本 2.税前债务资本成本估计 2.1 各种方法 适用方法适用条件到期收益率公司目前有上市发行的长期债券可比公司 虽然没有上市债券&#xff0c;但可以找到一个拥有可交易债券的可比公司作为参照物&#xff1b;使…

【25-cv-05935】Keith律所代理(绿色巴士图)版权维权案

绿色巴士版权图 案件号&#xff1a;25-cv-05935 立案时间&#xff1a;2025年5月28日 原告&#xff1a;Alena Pavluchenko d/b/a Ellen Paul Art 代理律所&#xff1a;Keith 原告介绍 原告是科德角海滨的一名艺术家&#xff0c;擅长以水彩、书法和浮木雕刻记录生活。她通过…

登山第二十三梯:有序点云平面快速分割——35Hz帧速前进

文章目录 一 摘要 二 资源 三 内容 一 摘要 3D 点云中的实时平面提取对于许多机器人应用至关重要。作者提出了一种新颖的算法&#xff0c;用于在从 Kinect 传感器等设备获得的有组织的点云中实时可靠地检测多个平面。通过在图像空间中将这样的点云均匀地划分为不重叠的点组&…

【聚焦国产8K全画幅摄像机应用】多图预警!

聚焦国产8K全画幅摄像机应用实战图&#xff1a; 博冠8K全画幅摄像机B1应用于2023中央广播电视总台春晚拍摄现场 博冠8K全画幅摄像机B1应用于2023中央广播电视总台春晚拍摄现场 ​​​​ 博冠8K全画幅摄像机B1拍摄2022北京冬奥会 博冠8K全画幅摄像机B1在某电视台节目制作现场进行…

专题|LSTM-XGBoost,ARMA-LSTM,LDA-LSTM黄金比特币价格混合预测,蔬菜包发放时空协同调配,知乎综艺评论情感时序洞察

全文链接&#xff1a;https://tecdat.cn/?p42305 原文出处&#xff1a;拓端数据部落公众号 分析师&#xff1a;Jingwen Luo&#xff0c;Yuying Liu&#xff0c;Yiyuan Jiang 在数字化浪潮席卷各行各业的当下&#xff0c;数据已成为驱动决策的核心要素。作为数据科学工作者…