
Rust
文章平均质量分 52
songroom
这个作者很懒,什么都没留下…
展开
-
Rust : 生成日历管理markdown文件的小工具
可以输入任意时间段,运行后就可以生成以上的markdown文件。拟生成以下markdown管理小工具,这也是我日常工作日程表。原创 2024-12-02 16:40:24 · 828 阅读 · 0 评论 -
Rust : FnOnce、线程池与多策略执行
如果需要让每一个函数都分配一个线程来执行这些函数(任务),或者用一个线程池来执行函数,这个时侯就可以用上场了。在线程池中,FnOnce是一个其中的灵魂。他可以把所有的函数进行抽象统一,便一管理和执行。一、问题:mpsc如何发送各类不同的函数?二、线程池的应用:发送函数有什么用处?原创 2024-10-15 10:38:42 · 760 阅读 · 0 评论 -
Rust: 实现 async/await的详细代码【来源脚本之家】
实际上,Rust 选择将 executor 的实现交给第三方,自己只保留相关的交互接口(我在隔壁C++看了看,似乎也是一样的做法,并没有一个官方的 executor 实现,我唯一所知的在语言层面提供支持的只有Golang 的 goroutine)。值得注意的是,在第一种情况下,所有的 Future 都 poll 了一遍,FuturesUnordered 会调用一次 wake,告诉 executor FuturesUnordered 已经运行了一个轮回,wake 具体的实现则取决于 executor。转载 2024-09-18 13:27:25 · 593 阅读 · 0 评论 -
Rust : 从事量化的生态现状与前景
尽管做适不适合的评价,有点不太靠谱的。就象“黑神话:悟空”,你在设计之前,不同的技术选型,也一定是结合自身的特点和工具、平台自身的优劣来得出来的,可能有一些无奈,可能也有一些经验。回到最初的问题上:在策略开发上,是否适合,这个取决个人的水平,出活快就适合,出活快就算了;即使是一件确定的事呢,也会有不同的答案,因此不同的人,自然有不同的看法。角色和场景不同:有人做策略开发,有人做策略部署,有人做全栈,有人做风控或绩效评估等;语言精通水平不同:有人出神入化,有人只懂皮毛,出活有快有慢,自然会得出不同的结论。原创 2024-09-06 16:36:07 · 1563 阅读 · 0 评论 -
Rust: Web框架Axum和Rest Client协同测试
在vscode中下载Rest Client插件后,通过创建以.http 或 .rest为结尾的文件,进行http请求测试。具体Rest Client功能很强大,这里只介绍,与Axum配合测试的方案。Axum作为Rust当红Web框架,值得了解一下。下面实例包括几个典型的常场场景。涉及到简单路由和提取器等,包括主要类型的文件形态的处理。二、Rest Client工具协同测试。原创 2024-08-29 17:55:53 · 791 阅读 · 0 评论 -
Rust : 数据分析利器polars用法
需要说明的是,在Rust中,不少的功能都需要对应features引入设置,这些需要特别注意,否则编译通不过。Polars虽牛刀小试,就显博大精深,在数据分析上,未来有重要一席。部分函数功能还没有完成,用todo标示,请大家注意。以下polars的版本是0.41.3。下面主要列举一些常见用法。原创 2024-08-16 13:24:42 · 790 阅读 · 3 评论 -
Rust: 高性能序列化库Fury PK bincode
对于二进制库来讲,据Fury官网的介绍,Fury性能要远远好于protobuf,且不象protobuf还需要定义IDL(即写.proto文件),非常轻便,随取随用。3、从序列化的内容对比来看,对应的u8字列向量,Fury的长度为114;1、对于Fury库而言,大家可以比较一下,不同结构序列化和反序列化的性能。在序列化库中,传统的有Json,XML,性能好的有thrift,protobuf等。不管是序列化和反序列化。目前Rust Fury库,还是初期,还是建议在github官网中,下载到本地。原创 2024-07-05 17:07:36 · 837 阅读 · 0 评论 -
Rust : windows下protobuf和压缩传输方案
proto文件中主要模拟了一个dbpystream中一个get_price函数的输入和输出的格式,输入HistoryBarRequest ,输出HistoryBarResponse。HistoryBarResponse中,有代码名称,日期,开盘价,最高价等。上面polars,chrono,prost-types,prost-build,prost是关键库,其它暂时可以不看。可见,在src/目录下,创建了一个pb文件夹,存放未来生成的dbdata.proto文件。四、原始数据、main.rs。原创 2024-06-08 16:30:03 · 1343 阅读 · 1 评论 -
Rust : 声明宏在不同K线bar类型中的应用
Rust的宏功能博大精深。在K线bar中,往往有很多不同分时k线图,比如1,2,3,5,。60,120,250,300…我们先考虑,impl_single_bar接受单一的类型参数,比如Bar1,Bar3,Bar5,…如果不用宏,那么手写会比较麻烦。下面就试用一下宏来实现不同类型的bar.这里就需要用到rust宏的重复的写法。这里不特别展开,相关的资料很多。为了简单起见,我们把不同分时的Bar抽象成下面的结构。这样的确方便了一些,但是因为参数是一个个输入,需要。每一个类型,写一行函数,还是不太方便。原创 2024-05-04 14:08:15 · 850 阅读 · 0 评论 -
Rust : condvar中一对一和多对一模式初探
但其它典型的场景可能还有多对一,不断发送通知给一个接收者。假定一个员工收到一个任务,就是模拟是一个时间片,到时了,就会触发通知发出(notify_one)。要注意notify_one()到wait()这个过程,需要特别小心,否则可能会想象中不一样。condvar是不经常碰到的,但其实在tokio之类库中,还是非常核心的作用。通过Mutex中包裹一个Hashmap结构,来对多个通知的状态进行管理。想进一步体会condvar的使用,还是从场景出发。一、一个通知发送者,一个接收者。二、多个通知者,一个接收者。原创 2024-04-19 13:28:31 · 602 阅读 · 0 评论 -
dbpystream:证券股票数据服务API开源
基于上面的痛点 ,dbpystream的目的是根据自身的业务需要,把企业内部的数据进行服务化,让企业内的员工能方便得到数据服务,而不再让数据服务只是一小部分人的特权,让数据可以在更广泛的层面得到充分的利用,并发挥数据驱动业务的价值。dbpystream只做整合部分,不能替代供应商API,是对供应商API服务包装,为了让服务更好的落地,而供应商API做的是一套完整的生产和质量管理流程。供应商的API的服务质量是dbpystream的天花板,没有优秀的供应商服务(源头),就不可能有好的内部服务。原创 2024-03-01 18:05:26 · 674 阅读 · 0 评论 -
Python:关于数据服务中的Web API的设计
需要说明的是,这里讨论的是web api前后端,当然还有其它方案,thrift,grpc等。在web api的基础上,可以提供封装sdk库,供前端函数式调用服务或纯手动写restful api 的方式,自己封装调用函数服务。可以考虑在前端提供不同的选择,比如,是python sdk模式(提供安装包),还是纯restful模式(手写post,get等),以及不同的语言选择,来指定特定后端的序列化和压缩库的选择,便于前端有更好的适用性和体验。不仅需要考虑性能,选择读写高效的库,而且还要考虑跨语言的问题。原创 2024-02-29 08:49:10 · 916 阅读 · 0 评论 -
Rust: reqwest库示例
主要看tokio和reqwest设置就可以了。其它是个人其它的库,没有删除。也可以处理中文字符的问题。cargo.toml文件,同上。二、异步处理多个任务。原创 2024-02-22 17:15:15 · 1111 阅读 · 0 评论 -
CTP:关于cc和bindgen库及rust工程组织
在这个目录下,建一个build.rs,用bindgen库生成cpp.h的头文件相应的rust绑定文件,生成的文件放在ctp-api目录下。这里去除了test,这里这样设置就可以了 .layout_tests(false),否则文件太长了,6-7万行。由ctp-sdk下的build.rs生成(在ctp-sdk下运行cargo build --release).。主要的目的是基于bindgen库生成与cpp的.h文件相对应一个binding.rs文件,后面供策略使用。主要是对ctp进行相关的组织。原创 2023-09-29 22:38:24 · 2498 阅读 · 1 评论 -
Rust : 与C交互动态库和静态库的尝试
c_part下放了ctools.c文件,里面有一些库函数,需要让rust调用。当然,ctools.c也可以放在其它地方,只需要后面的地址一致即可以。需要注意的是,file中ctool.c文件地址一定要准确,否则会有如下报错信息(但没有明示说路径不对,找不到文件之类)。如果rust要调用自建的C库中的函数,情况会较上面复杂一些。今天介绍通过cc库,通过build生成脚本的方式,实现rust调用c端库函数。rust调用C端的库函数,有很多方法,场景也有所不同。三、rust调用C封装好的静态库或动态库。原创 2023-09-16 11:59:33 · 5084 阅读 · 0 评论 -
Rust: 聊聊 *const ()和fn(*const ())
在Bytes库在github源码(https://docs.rs/bytes/1.1.0/src/bytes/bytes.rs.html#94-100)有关Bytes的定义中,进而,查看https://doc.rust-lang.org/src/core/sync/atomic.rs.html#175,可以了解AtomicPtr的定义,另外,*const ()也自然,也可以联想到,它可能是表示指向一个固定的函数的raw pointer.其中的data字段中有(),一般地,()表示一个空元组。原创 2023-08-16 10:01:43 · 1547 阅读 · 0 评论 -
Rust std::mem::transmute实例讲解
要转换容器内容的内部类型,您必须确保不违反任何容器的不变量。其他容器可能依赖于类型的大小、对齐方式,甚至是 TypeId ,在这种情况下,如果不违反容器不变量,就根本不可能进行转换。),调用者必须确保正确对齐指向的值。本文章向大家介绍Rust std::mem::transmute实例讲解,主要分析其语法、参数、返回值和注意事项,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。以下是transmute 的常见应用,可以用更安全的构造替换。将一种类型的值的位重新解释为另一种类型。转载 2023-03-10 14:29:36 · 1883 阅读 · 1 评论 -
关于Rust中的自引用:差之毫厘?!
【代码】关于Rust中的自引用以及指针变化。原创 2023-02-28 15:20:49 · 1385 阅读 · 1 评论 -
rust: clickhouse异步库
在github上有,一个异步连接clickhouse的库,值得一看。具体用法:extern crate tokio;use std::{env, error::Error};use clickhouse_rs::{row, types::Block, Pool};use futures_util::StreamExt;async fn execute(database_url: String) -> Result<(), Box<dyn Error>> {原创 2022-02-25 17:45:14 · 1118 阅读 · 0 评论 -
有意思的网站:https://godbolt.org/
https://godbolt.org/原创 2022-02-08 10:22:07 · 2183 阅读 · 1 评论 -
RUST: Blocking waiting for file lock on package cache
原创 2022-02-06 10:21:16 · 586 阅读 · 0 评论 -
rust :字节跳动镜像设置
[source.crates-io]registry = “https://rsproxy.cn”具体在.cargo下config文件中:原创 2022-02-04 20:57:37 · 1550 阅读 · 0 评论 -
rust: error: linking with `cc` failed: exit code: 1
linux:cargo rustc -- -C link-arg=-nostartfileswindows:cargo rustc -- -C link-arg=-nostartfiles转载 2022-02-04 17:25:58 · 2052 阅读 · 0 评论 -
RUST: 学习宝典Rust Language Cheat Sheet->https://cheats.rs/
https://cheats.rs/原创 2022-01-01 11:36:33 · 631 阅读 · 0 评论 -
rust: linker-link-exe-not-found
https://stackoverflow.com/questions/55603111/unable-to-compile-rust-hello-world-on-windows-linker-link-exe-not-found/55603112#55603112原创 2021-12-18 11:28:24 · 408 阅读 · 0 评论 -
python : pandas库的后继者polars库
polars库是python的又一dataframe库,显然,在pandas库的光芒下,要上位是不容易的,必须有过硬的功夫。一、用法基本一致从介绍上看,两者有孪生相,用法和接口基本无二。至少大部分非常非常相似。估计很多只需要在import 这行改一行,估计就能用上了。安装:pip install polars 也可以通过镜像,这样快一些。二、速度polars优势明显import time import polars as plimport pandas as pdfile = r"C:原创 2021-12-14 19:35:27 · 5252 阅读 · 2 评论 -
Rust 中 Trait 的使用及实现分析
Rust 中 Trait 的使用及实现分析尘香 蚂蚁智能监控 今天使用方式 基本用法 静态派发 动态派发 impl trait 高阶用法 关联类型 Derive常见问题 向上转型(upcast) 向下转型(downcast) Object safety总结参考在 Rust 设计目标中,零成本抽象是非常重要的一条,它让 Rust 具备高级语言表达能力的转载 2021-05-07 13:18:07 · 3330 阅读 · 3 评论 -
PyO3: python调用rust代码尝试
PyO3功能很强大,是python和rust之间交互桥梁。今天主要试验一下python端调用rust端编译的代码库。说明:本文环境中在windos平台下。linux平台或其它平台请参看github上pyo3的说明。一、rust 端在rust端创建pyrust库文件:cargo new pyrust --lib同时在lib.rs文件中,写入以下代码:其中,#[pyfunction]是指写入rust方法,pyo3自动会转成python能调用的函数;#[pymodule]是指把这些函数放在一个mo原创 2021-04-25 11:41:24 · 4965 阅读 · 0 评论 -
Rust 碎碎念:【译】Arc 在 Rust 中是如何工作的
【译】Arc 在 Rust 中是如何工作的Praying公众号: Rust碎碎念原文标题:How Arc works in Rust原文链接:https://medium.com/@DylanKerler1/how-arc-works-in-rust-b06192acd0a6公众号: Rust 碎碎念翻译 by: Praying原子引用计数(Arc)类型是一种智能指针,它能够让你以线程安全的方式在线程间共享不可变数据。我还没有发现能够很好地解释它的工作原理的文章,所以我决定尝试来写一篇。(转载 2021-04-20 09:32:32 · 692 阅读 · 1 评论 -
透过 Rust 探索系统的本原:并发原语
https://zhuanlan.zhihu.com/p/365905573转载 2021-04-19 21:48:15 · 171 阅读 · 0 评论 -
透过 Rust 探索系统的本原:网络篇
https://zhuanlan.zhihu.com/p/365905512转载 2021-04-19 21:34:40 · 235 阅读 · 0 评论 -
Rust : wasm尝试 与wasmtime库
尝试了一下wasmtime库,顺便了解一下编译wasm文件的过程。说明一下,我在wsl平台上进行的以下尝试。此前出现过一些问题,主要是文件读写的权限,后面把权限打开了,按照wasmtime库的说明,基本上就顺利了。具体的参考资料可以参阅:https://github.com/bytecodealliance/wasmtime几个步骤:以hello.rs文件为例$ rustup target add wasm32-wasi$ rustc hello.rs --target wasm32-wasi原创 2021-04-11 23:22:46 · 1315 阅读 · 0 评论 -
Rust : 简单模拟交易所与参与机构
toml文件[package]name = "test_rpc"version = "0.1.0"authors = ["songroom"]edition = "2018"# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]tonic = "0.3"prost = "0.6"tokio = { version = "原创 2021-04-03 22:49:39 · 855 阅读 · 0 评论 -
Rust: 镜像设置要注意影响效果
[source.crates-io]registry = "https://github.com/rust-lang/crates.io-index"# 指定镜像replace-with = 'tuna'# 清华大学[source.tuna]registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"# 中国科学技术大学[source.ustc]registry = "git://mirrors.u.原创 2021-03-23 20:15:20 · 393 阅读 · 0 评论 -
Nugine: Rust 性能调优
Rust 性能调优Nuginehttps://zhuanlan.zhihu.com/p/191655266?utm_source=wechat_session最近我遇到一个性能下降问题,在动用各种工具折腾到接近放弃之时,又想出一个点子,获得了最高九倍的性能提升。为此专门写一篇文章,复盘一下性能调优的历程。问题背景在 ICPC 比赛中,选手阅读题目,编写程序,提交到在线评测系统(OJ)。OJ 会编译运行选手提交的程序,选手从标准输入读取题目数据,向标准输出写入答案。在选手程序运行完毕后,OJ 会比转载 2021-03-22 20:32:12 · 929 阅读 · 0 评论 -
Rust : Tonic 基于Rust的gRPC实现
【每周一库】-Tonic 基于Rust的gRPC实现Rust语言学习交流8月前TonicgRPC的rust实现,高性能,开源,为移动设备与HTTP/2准备的通用RPC框架tonic是基于HTTP/2的gRPC实现,专注于高性能,互通性和灵活性。创建该库的目的是为了对async/await具有一流的支持,并充当用Rust编写的生产系统的核心构建块。特性双向流传输高性能异步io互通性通过rustls进行TLS加密支持负载均衡自定义元数据身份认证健康检查入门本教程作为Tonic的入转载 2021-03-20 23:26:11 · 3080 阅读 · 1 评论 -
Rust : VSCode中调试,Windows与WSL
调试对任何程序都非常重要。一般地,不同的操作系统有所不同。因为我大部分用VSCODE在WINDOWS中或WSL中比较多,下面以上面两者为例。一、Windows环境1、vscode中安装插件C/C++,如下图所示:2、新创建一个说明示例并补充相应的简单工程代码。并双击箭头处。3、创建launch.json文件可以在文件中增加:“program”: “${workspaceRoot}/target/debug/debug_rust.exe”, // 指向要调试的代码文件如果此前launch.j原创 2021-03-07 20:23:29 · 1565 阅读 · 0 评论 -
Rust : CTP中交互中字符串及处理
从C端读到的假设是[c_char,16]类似结构,可以如下处理: let s_16 = String::from("abc").to_char_16() ;//假设从C端读到[i8;16] let s_16 :Vec<u8> = s_16.iter().map(|&x|x as u8).collect(); let string_utf8_lossy = String::from_utf8_lossy(&s_16); println!("strin原创 2021-03-02 20:15:15 · 459 阅读 · 0 评论 -
CTP: 为什么报网络原因发送失败,但连接却成功?
碰到一个很妖的问题,最后请教一位高手把问题定位到:md is logining!ptr :0x7f0318027d80init ->init <-get api version :"v6.5.1_20200908 10:25:08"get trade day :"20210222"get_login_field -> login => req_user_login return => n :-1行情登陆失败! => 网络原因发送失败subsrib原创 2021-02-20 11:11:54 · 815 阅读 · 0 评论 -
mut a:&T 和a:&mut T的区别
mut a:&T 和a:&mut T的区别Praying公众号: Rust碎碎念17 人赞同了该文章概述话说 StackOverflow 上有个哥们问了一个问题,正如标题所述,它问的是下面这段代码里:fn modify_foo(mut foo: Box<i32>) { *foo += 1; *foo }fn modify_foo(foo: &mut i32) { *foo += 1; *foo }代码里的mut放在 mut foo: Box和foo: &转载 2021-01-24 15:38:02 · 408 阅读 · 0 评论