wmproxywmproxy是由Rust编写,已实现http/https代理,socks5代理, 反向代理,静态文件服务器,内网穿透,配置热更新等, 后续将实现websocket代理等,同时会将实现过程分享出来, 感兴趣的可以一起造个轮子法项目 ++wmproxy++gite: https://gitee.com/tickbh/wmproxygithub: https://github.com/t
入门篇Rust入门系列,这个帖子会一直更新,欢迎大家回复!首先从安装来写把。rust安装在写这篇文章的时候,rust最新版本是1.35,安装的步骤大家可以直接上rust官网:https://www.rust-lang.org/curl https://sh.rustup.rs -sSf | sh但是实际上安装会比较慢,建议大家可以看看如何更换下载源。安装的时候其实设置两个环境变量就可以解决这个问题
转载 2024-07-05 20:57:15
1989阅读
在之前的四篇文章中,主要深入了Rust中一些抽象机制,以及跟C++的区别。也讨论了一下Rust的模式跟C++的模式之前的异同。熟悉Rust的朋友(以及听说过Rust学习曲线陡峭的朋友)可能都着急了,为啥都6篇文章了,还没有讲到生命周期,这是Rust最著名(可能也是最“臭名昭著”)的特性了。甚至于有了这样的段子: 小李是一名资深的 Rust 工程师,今天他上班只花了一小时就完成了需求的开发。
转载 2024-09-29 14:24:10
65阅读
在上一篇文章,我们已对分段和分页的优缺点进行了介绍,并最终决定用分页技术对编写操作系统。本文,我会接着介绍分页的具体使用过程和其中所遇到的问题。在x86_64上进行分页x86_64体系结构使用4级页表,页面大小为4KiB。每个页表独立于级别,具有512个条目的固定大小。每个条目的大小为8个字节,因此每个表格为4KiB(512 * 8B = 4KiB)大,因此正好适合放在一个页面中。不同级的页表索引
本文并不全面介绍Rust异步主题。如果对新的async/await关键字Futures感到疑惑,并且对Tokio的用途很感兴趣,那么到最后应该会不再毫无头绪。Rust异步技术是Rust领域的新热点,它被誉为Rust的重要里程碑,特别适合开发高性能网络应用程序的人们。让我们从头开始。什么是异步?关于Async,我给一个简短的版本:如果有一个处理器,想同时执行(类似)两项任务,将如何做?解决方案是先运
转载 2024-10-22 14:39:46
75阅读
作者: jiashiwen notice"Rust is a trademark of the Mozilla Foundation in the US and other countries." 文盘Rust -- r2d2 实现redis 连接池 我们在开发应用后端系统的时候经常要和各种数据库、缓存等资源打交道。这一期,我们聊聊如何访问redis 并将资源池化。在一个
转载 2024-07-15 00:00:40
92阅读
前言之前学了几遍,后来忘记了,通过制作该游戏再复习复习。安装准备wasm-pack : https://rustwasm.github.io/wasm-pack/installer/cargo-generate:cargo install cargo-generate初始项目初始rust项目使用wasm的项目模板:cargo generate --git https://github.com/ru
rust以安全、运行速度、并发、生产力的综合实力展现出来取代c/c++趋势,就像氧化因氧气而无处不在,而且触发了众多大佬大厂重写软件的冲动,其中运行速度媲美了c(排序测试c快了不到百分之十),并发适应了互联网和CPU单核频率提升的需求,而安全缩短了测试时间、减少了交付使用后的维护成本而促进了生产力,缺点就是学习曲线陡峭(对于985的计算机本科毕业生或熟悉c++和泛型的学员还是可以学习一个月就参加
在 CSIS 中,我们过去使用 Python 编写后端,同时为 Incident Response Toolkit 编写一些 C/C++ 代码。几年前,主要是由于性能原因,我们开始用 Rust 替换 Python 重写了一些特定的后端服务,并取得了巨大的成功。现在,为了便于开发和测试,我们正在探索将 C/C++ 代码库的某些部分也迁移到 Rust 的方法。为了做到这一点,我们决
作者:贾世闻我们在开发应用后端系统的时候经常要和各种数据库、缓存等资源打交道。这一期,我们聊聊如何访问redis 并将资源池化。在一个应用后端程序访问redis主要要做的工作有两个,单例和池化。在后端应用集成redis,我们主要用到以下几个crate: once_cell、 redis-rs、 r2d2.once_cell 实现单例;redis-rs 是 redis的 rust 驱动;r2d2 是
Rust基础入门书籍推荐《深入浅出RUST》Rust 是允许在同一个代码块中声明同样名字的变量。如果这样做,后面声明的变量会将前面声明的变量“遮蔽(Shadowing)”起来。如:1 fn main() { 2 let x = "hello"; 3 println!("x is {}",x); 4 5 let x = 5; 6 println!("new x is
书接上文,上回说到如何通过interactcli-rs四步实现一个命令行程序。但是 shell 交互模式在有些场景下用户体验并不是很好。比如我们要连接某个服务,比如 mysql 或者 redis 这样的服务。如果每次交互都需要输入地址、端口、用户名等信息,交互起来太麻烦。通常的做法是一次性输入和连接相关的信息或者由统一配置文件进行管理,然后进入领域交互模式,所有的命
连接四元组我们的项目已经取得了很大的进展——接下来能够开始解决 TCP 协议的实现问题。下面将讨论 TCP 的一些行为及其各种状态。在多任务操作系统中,各种应用程序(例如 Web 服务器、电子邮件客户端等)需要同时进行网络访问。为了区分这些不同的网络活动,每个应用程序将自己绑定到一个唯一的端口号。端口号与主机的 IP地址的组合形成(在非常基本的级别)所谓的“套接字” - 内核管理的抽象对象。为了建
Rust - 生命周期原文:https://hashrust.com/blog/lifetimes-in-rust/译者:韩玄亮(一个热爱开源,喜欢 Rust 的 go开发者)介绍对于很多 Rust 的初学者来说,生命周期 (lifetime) 是一个很难掌握的概念。我也为此挣扎了一段时间,才开始明白它们对 Rust 编译器执行其职责 (move/borrow) 是多么重要。lifetime 本身
0 :Node.js简介现在,越来越多的科技公司和开发者开始使用 Node.js 开发各种应用。Node.js除了能够辅助大前端开发外,还可以编写Web应用,封装Api,组装RPC服务等,甚至是开发VSCode编辑器一样的PC客户端。和其它技术相比, Node.js 简单易学,性能好、部署容易,能够轻松处理高并发场景下的大量服务器请求。Node.js 周边的生态也非常强大,NPM(Node包管理)
半小时学Rust文章翻译自英文博客,内容有删减。在此感谢原作者分享的精神!原文地址:A half-hour to learn Rust 原文作者:amos loves to tinker说明:文章将根据个人理解深度,将不定期修改编辑,也欢迎同学提出宝贵建议!有时为了加强编程语言的熟练程度,我们需要阅读很多相关文档。但如果不知道什么意思你如何去阅读呢? 在本文中,我将介绍尽可能多的Rust Snip
首先感谢作者给出的总结,原文是介绍Serv-U的,我针对FileZilla Server进行了稍微修改,仅看操作可直接跳到分割线后第3部分。1. 背景简介最近研究如何在内网搭架FTP服务器,同时要保证外网(公网)能访问的到。终成正果,但走了一些弯路,在此记下,以飨后人。2. 基础知识FTP 使用 2 个端口,一个数据端口和一个命令端口(也叫做控制端口)。这两个端口一般是21 (命令端口)和 20
转载 1月前
401阅读
JSON 作为使用最广泛的数据结构,学习了解如何在发展最快的 Rust 语言中使用很有必要。本文中我们将学习到:读取无类型的 JSON。将 JSON 读取为强类型数据结构。写 JSON 字符串。使用 serde 和 serde-json Rust 依赖。无类型 JSONRust 是强类型语言,而 JSON 的并没有强制制定自己的数据类型。如果我们不关心 JS
转载 2024-07-11 13:46:44
95阅读
Rust - 生命周期译者:韩玄亮(一个热爱开源,喜欢 Rust 的 go开发者)介绍对于很多 Rust 的初学者来说,生命周期 (lifetime) 是一个很难掌握的概念。我也为此挣扎了一段时间,才开始明白它们对 Rust 编译器执行其职责 (move/borrow) 是多么重要。lifetime 本身并不难。只是它们是看似新颖的结构,以至大多数程序员都没在其他语言中见过它。更糟糕的是,人们过
wmproxywmproxy是由Rust编写,已实现http/https代理,socks5代理, 反向代理,静态文件服务器,内网穿透,配置热更新等, 后续将实现websocket代理等,同时会将实现过程分享出来, 感兴趣的可以一起造个轮子法项目 ++wmproxy++gite: https://gitee.com/tickbh/wmproxygithub: https://github.com/t
  • 1
  • 2
  • 3
  • 4
  • 5