
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
ClickHouse Better Practices2020.05.31 22:51:26字数 2,453阅读 4,989前言经过一个月的调研和快速试错,我们的ClickHouse集群已经正式投入生产环境,在此过程中总结出了部分有用的经验,现记录如下。看官可去粗取精,按照自己项目中的实际情况采纳之。(版本为19.16.14.65)因为我们引入ClickHouse的时间并不算长,还有很多要探索的,

《Rust中的PhantomData解析》一文深入探讨了PhantomData类型在Rust中的作用,包括其与#may_dangle属性及Drop检查机制的关联。文章建议对PhantomData理解不深的开发者阅读,以厘清相关概念。该文发表在知乎专栏,详细解析了这些特性之间的真假关系,对理解Rust所有权系统具有参考价值。

宏是rust的灵魂小料和魔法。从println!("hello world!")那刻开始,rust世界无宏不成席,无宏不欢。和显性的声明宏不同,隐藏在代码深处的过程宏,静悄悄。尽管它的出现并不是用来装B的,但如果你喜欢装,过程宏一定不可以不玩。你可以不用,但你不能不懂。对rust人来讲,不理解宏,定会少了一份亲切和挚爱。如果从定义逐步展开,过程宏的线索就会慢慢就浮出水面。

本文介绍了Rust中Deref Trait的核心概念和用法。Deref Trait通过隐式自动解引用来简化代码操作,其核心逻辑是将*T转换为*(T.deref())。文章详细解析了常见的取引用和解引用操作,包括&*T、&**T等组合操作的含义,并重点说明了点操作符.背后隐含的多步自动解引用过程。此外,还介绍了通过Deref实现的类型转换&T到&U的机制,以及这种转换

本文主要探讨Rust中解引用操作符(*)的使用场景和注意事项。通过多个代码示例展示了:1) 基本解引用和重新借用的模式匹配;2) 自定义智能指针MyBox与Deref特性的实现;3) 解引用导致所有权转移的情况;4) 可变引用的解引用赋值;5) match语句中与ref、_等模式搭配使用时的所有权处理。特别指出Box和自定义MyBox在解引用行为上的差异,以及match模式中ref和_等特殊符号避

本文系统梳理了Rust语言中下划线的7种典型应用场景,包括参数占位、生命周期表示、变量忽略、类型擦除、所有权保护、模式匹配通配、类型推断辅助等用法。

摘要:Rust中的Send和Sync特性是并发编程的关键概念。Send表示类型所有权可在线程间转移,Sync表示类型引用可在线程间共享。文章详细解析了不同组合的特性类型:1)标准类型通常同时实现Send+Sync;2)内部可变类型(Cell)实现Send但不Sync;3)线程保护类型(MutexGuard)实现Sync但不Send;4)不安全指针类型(Rc)既不Send也不Sync。最后通过书籍版

本文探讨了在Rust中实现多策略并行回测的技术方案。通过枚举类型统一封装不同策略的输入参数(Parameter)和输出结果(OutPut),将策略函数抽象为统一的FnOnce()->OutPut闭包格式,并使用Box<dyn FnOnce>进行动态分发。采用标准库thread模块实现1:1的线程策略映射,使3个策略的并行执行时间从单线程的3秒缩短到1秒左右。文章详细介绍了参数封装

本文探讨了使用Rust构建简易线程池回测框架的方法,重点介绍了两种消息传递机制:MPSC+Arc+Mutex和MPMC方案。作者展示了一个基于MPSC+Arc+Mutex的线程池实现,包含任务分发、反馈收集和线程管理功能。该框架通过Message枚举类型处理任务、反馈和关闭指令,Worker结构体管理线程执行,ThreadPool负责整体调度。代码示例演示了如何创建线程池、执行任务和实现优雅关闭,

本文探讨了在Rust中使用Tokio框架实现量化策略异步回测的方案。虽然Tokio更适合IO密集型场景,但通过将策略封装为Pin<Box<dyn Future>>类型,可以在CPU密集型任务中简化多线程管理。文中展示了使用3个Tokio工作线程并行执行8个策略(每个耗时1秒)的示例,总耗时约3秒,与线程池方案性能相当。这种方案通过#[tokio::main]属性配置线程数,








