- 博客(70)
- 资源 (21)
- 收藏
- 关注
原创 debian12版本默认SSH不让ROOT账户远程登录解决方案(重置密码)
如果您可以通过控制台登录系统,可以跳过此节。如果以后可以通过网络访问系统,则需要安装 SSH 并设置访问权限。默认禁用 root 登录密码,因此可以通过。
2023-08-24 16:12:46
7075
原创 wasmedge开发中使用代理软件squid解决reqwest_wasi不支持https方案
做faas实现,也就是轻量级业务,一般只要支持curd业务就行了,但生态毕竟有缺,一些基本功能不用wasi实现(rust x86平台依赖或操作系统依赖不好编译成wasi平台时),可以搭建基础常用功能,比如http正向代理软件,来实现https的请求。因为reqwest_wasi不支持https请求,原因可能是(加密算法移植不好实现,证书库验证不好实现等,而且发对aes加密效率还行,但对rsa非对称加密效率极低,2048位加密"hello word"需要最快13分钟[普通机器])。但因为使用wasi是用。
2023-01-09 11:52:27
564
原创 Windows上Rust使用ZeroMQ
1.官方写了一个基于C生态的libzmq动静态库的Rust绑定库。ZeroMQ | Rust基于一本介绍zeroMQ的书的Rust语言版的例子zguide/examples/Rust at master · booksbyus/zguide · GitHubLearning and Using ØMQ. Contribute to booksbyus/zguide development by creating an account on GitHub.https://github.com/bo
2022-01-26 15:08:24
1040
翻译 Rust中如何应对子类继承的一个技巧
How to model inheritance hierarchy? - #8 by cbiffle - help - The Rust Programming Language ForumI am trying to see if Rust could be used on a project that I am working on and am stuck on how to model an inheritance hierarchy in Rust. I have many objects th
2021-11-30 15:04:49
265
原创 Rust中鼓励组合来代替继承
struct People { eaten_apples: i32,}impl People { fn eat_apple(&mut self) { self.eaten_apples += 1; println!("{} apples eaten", self.eaten_apples); }}struct Student { people: People,}impl Student { fn eat_ap.
2021-11-30 14:18:17
358
原创 Rust派生属性宏和属性宏的一个区别
折腾了一天,发现派生属性宏无法操作token流,但记得属性宏是可以的,就怀疑属性宏和派生属性宏的有一个区别是不是,属性宏可以修改ast树,而派生宏不可以。就在群里问了,得到了肯定的回答:派生宏,被派生的struct、enum、union所在的AST是只读的;属性宏,作用范围更广,是将整个被修饰的对象所在的AST输入到属性宏中,再将属性宏的输出重新编译.参考资料(官方英文资料):Procedural Macros - The Rust Reference群友的回答:一个append,一个r.
2021-10-26 15:47:23
829
原创 mini-tokio代码分析
在学习tokio,其实指南文章Async in depth | Tokio - An asynchronous Rust runtimehttps://tokio.rs/tokio/tutorial/async中介绍tokio运行时原理,如果轮询future的,完整代码地址:https://github.com/tokio-rs/website/blob/master/tutorial-code/mini-tokio/src/main.rshttps://github.com/tokio-rs/websit
2021-10-20 16:45:14
805
翻译 利用扩展trait方法实现探视Futures每次poll进度
看一篇英文文章介绍了一种利用扩展Trait技巧来debug Futrue每次poll时的情况。原文:Inspecting Futures(原文代码用的future库演示的,可能是当时异步没稳定时,下面换成了标准库)你有没有想过你的futures在什么时候被poll,然后返回什么?这是一个future的包装类型在任何情况下都会打印出来poll的情况。(显然,内部类型必须是Debug)。use std::fmt::Debug;use std::future::Future;use std.
2021-09-18 11:27:09
157
原创 rust中move后,还能访问到原来的值不及在rust中实现对内存重复释放
use std::ptr;use std::slice;fn main() { let mut rust = "rust".to_string(); let ptr = &rust as *const String as usize;//还指向堆中的u8序列 println!("rust is {:p}", &rust); println(ptr); let java = rust;//move后 println!("java is {.
2020-11-27 15:01:30
320
原创 Ringbahn是无船同志(without boats)基于io-uring 的 安全Rust 绑定(第一篇)
Ringbahn:Rust中io-uring的安全符合人体工程学的API在我以前的文章中,我讨论了Linux的新io-uring接口,以及如何创建用于使用Rust的io-uring的安全API。 自从发布该文章以来,我已经实现了此类API的原型。 该create称为Ringbahn,旨在使用户能够在io-uring机制上使用IO,而不会造成内存不安全的风险。对于将来在Linux上开发异步IO来说,io-uring将变得至关重要。Linux是Rust的主要用户,用于各种高性能网络服务的最常用平台。Rus
2020-10-09 11:30:29
534
原创 rust的使用css选择器解析网页数据的第三方库nipper,类似java的jsoup库,比另一个库crabquery好用多了
因为在java上习惯了使用了jsoup解析抓取到的网页,在rust的crate.io中搜索jquery,首先出来的就是crabquery,猛一用,感觉还行,用着用着就发现实现在简单了,功能很少,很基础,但胜的名字误导人,又翻了翻才找到了下面这个库https://docs.rs/nipper/0.1.8/nipper/,而且还是国人开发的。大致用了下,功能和jsoup差不多。use nipper::Document;fn main() { let html = include_str!.
2020-07-30 17:25:49
1173
原创 windows下应用程序加载DLL动态链接库路径
windows下应用程序加载动态链接库路径依次分别是:举例D盘soft文件夹下存在了一个test.exe的执行文件,即d:\soft\test.exe,依赖test.dll动态链接库.■程序的执行目录test.exe执行文件存放在D盘下的soft文件平下,即程序执行目录为"d:\"。■当前目录对话框提示信息中提示的第二个目录,即一个点:“.”。如果我们在命令行中D盘下执行d:\soft\test.exe,即当前目录为"d:\"。■系统目录依次是C:\WINNTsystem32,C:\WINN
2020-06-23 13:20:19
5178
1
原创 rust-opencv 从内存中读取一张图片
//从内存中加载图片pub fn get_img_info_mem(img_data: Vec<u8>) -> Result<core::Mat,String> { let mut data= Vector::from_iter(img_data); let data=VectorOfu8::from(data);//和上面的一行代码可以合成一行 imgcodecs::imdecode(&data, IMREAD_COLOR).or_el
2020-06-22 14:23:05
1646
原创 windows10下rust使用opencv4踩坑
windows10下rust使用opencv4库opencv = "0.41.0"首先这个库是对opencv的绑定,而opencv2.4版以后就不对C API进行维护了,虽然也是访问(但功能是都是以前的C API,新的方法功能都在C++文件中)。rust的opencv库不是简单的绑定,FFI相关的内存处理,让你使用起来完全不用关心这些细节.而且文档很好,可以很好的使用C++相关opencv的书籍例子.对C++都放在cv这个命名空间进行了rust习惯的模块划分。rust第三方库bin
2020-06-20 15:00:07
2487
3
原创 windows10下编译llvm-config
首先LLVM的windows版是不包含llvm-config.exe的,需要自己下源码编译。参考这篇文章:https://stackoverflow.com/questions/17096804/where-is-llvm-config-in-windows你得着cmake.5以上的版本(https://cmake.org/download/ ,选windows二进版本就行了,解压即可),而且配置成PATH中。 安装有VS2019,需要用它来编译。 下载LLVM的原码:https://rel
2020-06-20 14:06:45
5908
1
原创 opencv官方说2.4版以后都不在兼容C API
OpenCV(开源计算机视觉库:http://opencv.org)是BSD许可的开源库,其中包含数百种计算机视觉算法。该文档描述了所谓的OpenCV 2.x API,与基于C的OpenCV 1.x API相比,它实际上是C ++ API(自OpenCV 2.4发行以来,C API已被弃用,并且未经“ C”编译器进行测试)rust目前只兼容C语言的ABI,经测试发现opencv2和opencv3.4版本还是支持C API的,也就是rust经过bindgin翻译头文件成rust代码后还可以访问,目前只测试
2020-06-18 16:47:36
636
原创 在windows下绑定opencv库使用
rust的FFI机制可以很轻松与C库进行调用,但也复杂,如果你自己人工翻译代码的话,还好有bindgen工具。本来觉得像opencv这样的库,rust应该有人进行绑定使用,确实有,但很复杂,原来是多种的,最坑的就是墙,opencv-rust https://github.com/twistedfall/opencv-rust 这个库在配置windows下使用时,光依赖库就下不下去了。然后再看其它库,总之就是感觉想使用起来很复杂。后来仔细看看了FFI相关文档,资料中都是再三强调,C++提供AB
2020-06-15 15:58:41
384
原创 windows下rust最具生产力的IDE——Idea社区版+rust插件
首先Idea社区版是免费与收费版功能肯定是有区别的,但使用rust插件来开发rust程序是完全没有问题的。最早是用vscode+rust插件来学习和开发rust程序的,也很好配置而且轻量级,但从使用经验来说还是推荐使用idea社区版(可以用来开发java安卓,我只用来开发rust,所以把相关插件都卸载了)+rust插件,光从代码补全提示这块来说就完胜vscode+rust官方开发的插件,而且用的时间长,rls服务都能点2GB内存,而且代码提示失效。写的这篇文章的目的,最早我也是在群里吐槽vscode
2020-06-09 09:06:30
9298
原创 rust serde序列化Arc包裹的属性报错
serde加个feature,rcserde = {version="1.0",features = ["derive","rc"]}
2020-05-14 17:25:57
485
原创 rust Arc、Rc和Cell在web开发中使用到的场景
在web开发中常见的一场景:一个Person 实体有一个Vec<Address>的属性,#[derive(Clone, Debug)]struct Person { addrs: Vec<Address>}#[derive(Debug)]struct Address { //person_id:String, 根据用户ID获取到所有地址 name: String,}我们一般会有一个业务,获取所有Vec<Person>返回给用户,每
2020-05-14 15:14:45
1920
7
原创 rust web开发中直接在内存中生成zip文件返回
在rust中使用zip进行压缩时,尤其是在web开发中,生成多个报表打包成一个zip文件,不想生成临时文件,一般喜欢直接在内存中生成好zip文件,然后序列化成流响应返回给web端。cargo.tomlzip = "0.5.5"walkdir = "2"代码:use std::fs::File;use std::io::{copy, Read, Seek, Write, sink, BufWriter};use std::path::Path;use std::str;use s
2020-05-13 14:48:49
822
原创 rust程序打包成最小docker镜像
Dockerfile文件内容。FROM alpine:latestLABEL author.name="qwsaedac" COPY connect /connectENV APP_HOME=/connectWORKDIR /connectENTRYPOINT ["./frame-ioc"]这里有个坑,但网上很多文章都没有说出来,就是你编译的rust程序要是静态单体的,因alpine这个基础镜像只有5MB左右,是不可能就什么动态系统库让你依赖使用的(这坑还是我换成ce...
2020-05-12 14:02:43
1987
原创 rust docker交叉编译静态单体执行文件
1. 这是有人专门做好对编译对应平台的docker image(https://github.com/messense/rust-musl-cross).Rust toolchain Cross Compile Target Docker Image Tag stable x86_64-unknown-linux-musl x86_64-musl stable i686-unknown-linux-musl i686-musl stable a...
2020-05-12 13:56:00
3058
3
原创 rust liunx 下打包成静态单体(像golang一样,无依赖)
在linux下打包成静态单体,第一种方式就是加上的编译目标--target参数,--target的值可以用rustup target list查看cargo build --release --target=x86_64-unknown-linux-musl还可以用docker容器的方案来打包静态单体。官方rust镜像https://hub.docker.com/_/rust/ 里面有一些如何使用。这里只介绍我用到方式:docker run --rm --user "$(id -u)"...
2020-05-12 13:32:55
2632
原创 rust zip库使用
Cargo.toml增加依赖zip = "0.5.5"#压缩目录使用walkdir = "2"use std::fs;use std::fs::File;use std::io::{copy, Read, Seek, Write};use std::path::Path;use std::str;use walkdir::{DirEntry, WalkDir};use zip::write::FileOptions;/// 都没有进行错误处理,本例子是参考官方例子,其中压缩目
2020-05-09 16:01:26
4895
原创 rust walkdir一个高效地递归地遍历文件夹的库
一个跨平台的Rust库,用于高效地递归地遍历文件夹。它支持以下文件软连接、控制打开的文件描述符的数量和用filter_map方法来过滤需要显示的文件。这个库是用rust zip库里看例子,配合walkdir库进行文件夹压缩。这个轮子很好。Cargo.toml增加依赖use walkdir::WalkDir;fn main() { for entry in WalkDir::new("d:/tmp") { let entry = entry.unwrap().
2020-05-09 14:18:17
4589
原创 rust 声明宏中可以捕获的类型列表
item, 代表语言项,就是组成一个 Rust 包的基本单位,比如模块、声明、函数定义 、类型定义、结构体定义、 imp!实现等。 block ,代表代码块,由花括号限定的代码。 stmt,代表语句 , 一般是指以分号结尾的代码 。 expr,指代表达式,会生成具体的值 。 pat,指代模式 。 ty ,表示类型。 ident ,指代标识符。 path ,指代路径, 比如 foo 、...
2020-05-08 16:48:49
643
原创 rust 字符编码编解码库-encoding
Cargo.toml增加依赖encoding = "0.2.33"rust默认使用utf-8编码,但使用一些第三方库进行一些功能开发时会遇到乱码问题,乱码一般就是解码方式不对,比如用GBK编码,然后就UTF-8方式解码。我在windows系统下用winrar压缩一个中文名字的文件,用rust的zip库解压时,发现文件名乱码。怀疑winrar进行文件名进行编码是使用了操作系统本地字符串(中...
2020-05-08 15:17:42
7086
原创 rust windosw gui库(只为用到时好找)
仓库 :https://github.com/gabdube/native-windows-gui
2020-05-08 15:07:30
1266
原创 rust用宏实现尾递归
实现:https://github.com/samsieber/tco这个思路很清奇——用属性宏来实现尾递归调用优化。官方的例子:#[tco::rewrite]fn fac_with_acc(n: u128, acc: u128) -> u128 { if n > 1 { fac_with_acc(n - 1, acc * n) } else...
2020-05-08 15:05:49
643
原创 rust base64 例子
base64 = "0.12.1"use base64::{encode, decode};fn main() { let a = b"hello world"; let b = "aGVsbG8gd29ybGQ="; assert_eq!(encode(a), b); assert_eq!(a, &decode(b).unwrap()[..]...
2020-05-07 15:17:05
2142
原创 rust md5 加密库
Cargo.toml 增加依赖rust-crypto = "^0.2"use crypto::digest::Digest;use crypto::md5::Md5;pub fn md5<S:Into<String>>(input: S) -> String { let mut md5 = Md5::new(); md5.inp...
2020-05-07 15:01:21
3626
原创 serde序列化结构体中使用chrono的日期字段,i64转换为了日期字段例子
use chrono::prelude::*;use serde::{Deserialize, Serialize};fn main() { // let date: DateTime<Local> = Local::now(); // println!("{}", date.format("%Y-%m-%d %H:%M:%S").to_string()) ...
2020-05-01 22:26:24
1232
原创 rust目前实现IOC意义不大的原因
1 首先是可变性。struct A{b:Option<Arc<B>>}struct B{}struct C{b:Option<Arc<B>>}struct IOC{map:Hashmap,}如果A和B有一个需要调用B的可变方法,Arc<B>可引用实现就没有意义了,只能改成Mutex、RwLock...
2020-01-07 17:48:08
1096
1
原创 rust 过程宏例子(rust编程之道的过程宏例子)
Cargo.toml[package]name = "ioc_macro"version = "0.1.0"edition = "2018"[dependencies]syn = "1.0"quote = "1.0"proc-macro2 = "1.0.7"[lib]proc_macro = truelib.rsextern crate proc_ma...
2020-01-07 15:52:07
1997
WIN-USB-PGTOOL-v1.0.17-V3.zip
2023-09-01
Hands-on Rust Effective Learning through 2D Game Development and
2023-03-02
Apache Kafka源码剖析
2018-11-26
图像处理基础.第2版
2018-10-29
第一本无人驾驶技术书.刘少山(详细书签)
2018-10-08
ELK Stack权威指南 第2版
2018-10-08
第一季Kotlin崛起:次世代Android开发
2018-10-08
终极算法txt版
2018-05-22
java文章合集2
2018-03-30
gapdebug_patch1
2017-12-21
Ansible自动化运维 技术与最佳实践
2017-11-24
smgp3.0模拟器
2016-12-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人