- 博客(254)
- 收藏
- 关注
原创 高并发实践:利用分片锁与缓冲 IO 优化海量 UDP 数据清洗
金融量化工程中,数据清洗是最关键但最耗时的环节。本文分享了处理海量UDP抓包数据的优化实践:原始数据按天存储,包含数千只股票的混杂信息。通过文件级并行处理、分片锁(Sharded Locking)和缓冲I/O等技术,将处理速度从单线程的30-40分钟提升一个数量级。重点解决了多线程写入冲突问题,在512个分片下管理5000多个Symbol的并发写入,显著降低了锁竞争。这种流式并行处理方案充分利用了多核CPU和HDFS带宽,为金融数据分析提供了高效的数据预处理范式。
2025-11-27 14:57:30
1059
原创 量化投资从入门到入土:给你的策略装上安全带——风控模块
这里刻意不引入任何金融术语,也不让风控知道“它面对的是什么策略”。你既不知道自己在“进攻什么”,也不知道自己在“防御什么”。把三条资金曲线画在同一张图上,看一眼就知道风控做了什么。一个能让你赚钱、但随时可能让你破产的策略,不是资产,是。这个逻辑非常简单,但足够支撑很多实盘级别的风控原型。听上去没问题,但从系统设计角度,这属于典型的。系统现在已经不再是“一个脚本”,而是一辆。车是能跑了,但你敢不敢在山路上全油门?这就是很多机构真实会用的简单风控逻辑。不改变策略代码、不改变数据模块,只是在。
2025-11-18 15:03:40
955
原创 量化投资从入门到入土:什么样的策略模块才是好的
本文介绍了一个模块化交易策略系统的关键升级。首先通过定义策略基类Strategy建立了明确的接口契约,确保所有策略遵循统一规范。随后将策略逻辑拆解为三层流水线:特征层(Feature)负责计算指标(如均线、波动率),信号层(Signal)基于特征生成买卖信号,仓位层(Position Sizer)将信号转化为实际仓位。 这种模块化设计使得系统具备高度灵活性:添加新指标只需新增Feature模块,修改交易条件只需调整Signal模块,改变仓位管理方式则替换Position Sizer。文章通过实现一个包含均线
2025-11-18 13:46:47
642
原创 量化投资从入门到入土:如何搭建一个自己的交易系统
接下来的几篇文章,会手把手教你搭建一个最基础的交易系统(Python),这只是一个玩具级别的系统,如果有机会的话,希望可以把它完善成一个更方便的系统吧(挖坑)如果你还不知道Python怎么用,怎么安装,uv是什么,可以先去学一下,或者你用其他什么包管理器都可以,我这里用uv做演示。([GitHub][1])读个数据,算个均线,写两行 if-else,当天买入卖出,最后。否则,你写的不是“量化系统”,而只是又多了一个没人想维护的脚本。那时候再回头看今天这堆“看起来有点啰嗦的架子”,你会知道——。
2025-11-18 10:34:21
1146
原创 量化投资从入门到入土:为什么 90% 的回测都是幻觉?
回测陷阱:量化投资的幻觉与现实 量化回测中最令人兴奋的往往是那些“完美”的收益曲线——稳定增长、回撤极小、平滑如画。然而,这些曲线大多是幻觉。真正的量化从业者会直接指出:“你这纯属放屁。” 回测的常见陷阱包括: 未来函数:使用未来数据(如当日收盘价生成当日信号)导致虚假收益。 幸存者偏差:仅回测存活至今的赢家公司,忽略退市或破产的股票。 忽略现实成本:如交易滑点、停牌、数据延迟等。 代码演示显示: 幻觉回测:用未来数据生成的策略曲线近乎完美,但实际无法实现。 真实回测:仅用历史数据生成的策略曲线波动更大,收
2025-11-17 18:20:50
1582
原创 量化投资从入门到入土:因子是什么?
摘要 因子不是简单的指标或秘方,而是描述市场行为的特征工程。文章通过工程流程解析因子:1)因子是结构化信息,与指标的区别在于其统一尺度和可比较性;2)因子会漂移,因市场结构变化导致历史特征失效;3)多数因子无效源于数据噪声和过拟合;4)实战演示动量因子从构造到验证的全过程,包括数据获取、因子计算、分组回测和结果分析。核心观点:因子是假设而非真理,需动态验证其有效性。
2025-11-17 16:23:33
1144
原创 量化投资从入门到入土:可能你的策略从数据就开始出问题了
金融数据回测的常见陷阱与解决方案 金融数据看似简单的时间序列,实则暗藏诸多陷阱。本文通过苹果股票(AAPL)案例揭示关键问题: 复权价格陷阱:yfinance默认提供复权后价格(Adj Close),它平滑了分红/拆分的影响,但与历史真实成交价(Close)存在显著差异。回测时若混淆二者,会导致结果失真。 数据完整性问题:停牌期间的缺失值若简单填充,会虚构不存在的交易机会。正确做法是严格排除无法交易的时段。 解决方案: 显式设置auto_adjust=False获取原始数据 根据策略目标选择价格类型(长期持
2025-11-17 15:11:06
842
原创 量化投资从入门到入土:量化到底多了一层什么?
用数据、模型、统计方法,系统化地做决策,而不是靠直觉和情绪。所有你凭感觉做的事,我都写成代码,让它自动做。像什么?别人觉得“这股最近涨得不错”,你先跑个回测;别人说“我感觉要涨”,你打开特征、因子、分布;别人用情绪交易,你用数学把情绪剥离。量化投资,不是某个策略,而是一整套逻辑系统。
2025-11-17 14:20:44
732
原创 量化投资从入门到入土:怎么理解价值投资
*价值投资(Value Investing)**是一种理念:以低于企业“真实价值”(内在价值)的价格买入,并长期持有。说白了,就是“买打折的好公司同样的 RTX 4080,平时 8999 元,现在 6999;你不会因为别人嫌它“旧”就不买;你知道它依然强大,只是暂时被冷落。股票也一样。一家公司的股价可能因为情绪、新闻、周期等短期波动下跌,但如果它的基本面没问题——那就是折扣机会。
2025-11-03 13:34:09
763
原创 量化投资从入门到入土:什么是卖空
摘要:卖空(Short Selling)是一种从股票下跌中获利的投资策略,通过借入股票高价卖出、低价买回归还赚取差价。卖空需通过保证金账户操作,具有杠杆效应,亏损风险可能无限大。适合用于熊市、公司基本面恶化或估值泡沫时。卖空涉及借股费用、保证金利息等成本,典型案例包括2008年大众汽车空头挤压事件。尽管卖空能提供市场修正力量,但风险高且受严格监管。各国对卖空有不同限制,如美国SEC禁止裸卖空,欧盟要求大额空头披露等。
2025-11-03 13:25:55
562
原创 量化投资从入门到入土:保证金与保证金交易
金融保证金系统本质是一种杠杆机制,允许投资者以部分本金为抵押进行放大交易。其核心原理类似于押金制度,投资者需缴纳初始保证金(通常50%)才能借款投资,同时必须维持最低保证金比例。这种机制能成倍放大收益,但也同等放大了风险:当资产下跌触发保证金追缴时,若无法补足资金将面临强制平仓。保证金交易适合短线操作,但需承担借款利息成本,1929年美股崩盘就是过度杠杆的典型案例。对量化交易而言,保证金系统相当于一个带风控的杠杆容器,但需警惕市场波动带来的连锁风险。
2025-11-03 13:16:14
446
原创 量化投资从入门到入土:为什么交易要等一天
T+1结算制度解析:交易与到账为何相差一天? T+1是证券交易的核心结算规则,T代表交易日,“+1”指资金和股票需在交易后一个工作日完成交割。例如,周一买入的股票周二到账,卖出资金同样次日到账。这一制度源于早期人工操作的低效,随着技术进步,结算周期从T+5逐步缩短至T+1(2024年北美实施)。 T+1可降低违约风险,提高资金流动性,并与国际市场接轨。其运作逻辑是交易当天完成撮合,次日完成资产转移。尽管多数股票采用T+1,但债券、基金等产品可能适用T+2或T+0。对投资者而言,T+1加速资金周转,但需注意当
2025-10-31 14:45:10
958
原创 量化投资从入门到入土:什么是股权
本文从多个维度解析股权的本质与意义。股权作为企业所有权的核心体现,既是资产净值的会计表达(Equity=Assets-Liabilities),又包含控制权、收益权和激励功能。文章详细介绍了股权的构成(股本、留存收益等)、分类(普通股/优先股等)及其动态变化特征,特别强调了股权稀释与价值增长的辩证关系。同时阐述了股权与股票的差异,以及ROE等关键评估指标。最后指出股权作为"血脉"连接资本与人才,既是财务工具更是长期价值承诺,构成了企业发展的底层所有权逻辑。(149字)
2025-10-31 13:59:36
816
原创 量化投资从入门到入土:什么是股市
股市是全球分布式的"价值计算机",通过买卖交易实时编译资产价格。文章将股市比作系统架构,解析其运作机制:交易所撮合交易、券商提供入口、投资者参与博弈、监管维护规则,共同构成市场系统。股价由供需动态决定,受情绪与基本面影响,呈现牛市与熊市的交替循环。投资者类型多样,形成博弈网络。股市教会我们长期思维胜过短期冲动,理性是应对市场波动的关键优势,系统也具备自我修复能力。理解股市运作原理,就像掌握系统架构,有助于形成稳健的投资策略。
2025-10-31 13:50:10
816
原创 量化投资从入门到入土:债券与债券市场
债券是金融系统中的"借贷合约",相当于固定收益的智能合约,规定了面值、期限、票息等条款,定期自动付息。债券市场分为一级市场(新债发行)和二级市场(债券交易),价格与利率呈反向关系。主要类型包括政府债、公司债、高收益债等,按信用评级划分风险等级。债券收益来自票息和价格差,风险包括利率、信用和流动性风险。久期衡量债券对利率的敏感性。相比股票,债券风险低、收益稳定,是金融系统的"基础数据库"。从程序员视角看,债券市场就像一个可靠的分布式借贷系统,持续为经济提供稳定的资金支持
2025-10-31 13:38:48
754
原创 量化投资从入门到入土:外汇与外汇市场
《外汇市场:全球货币的分布式交易系统》摘要 外汇市场(FX)是全球最大的去中心化货币交易网络,日交易量超7.5万亿美元。其系统架构类似分布式计算网络,主要节点包括银行(数据中心)、经纪商(中间件)和交易者(客户端)。核心数据模型是"货币对"(如EUR/USD),通过实时供需动态定价。市场分为现货(实时交易)、远期(合约锁定)和期货(标准化合约)三大模块。交易逻辑本质是价差套利(profit=(sell_price-buy_price)*volume),支持高杠杆操作。相比受监管的股票/债
2025-10-31 13:34:32
950
原创 量化投资从入门到入土:一级市场与二级市场
摘要: 一级市场是证券首次发行的场所,企业通过IPO、债券发行等方式直接融资,投资者从发行人处认购证券,资金流向公司。二级市场是已发行证券的交易平台,投资者之间买卖证券,资金在投资者间流转,价格由供需决定。两者的核心区别在于:一级市场创造证券并为企业融资,风险较低但参与门槛高;二级市场提供流动性和价格发现,波动大但开放度高。对量化投资而言,一级市场是定价起点,二级市场是策略主战场,理解两者的关系对投资决策至关重要。
2025-10-31 13:25:05
1357
原创 量化投资从入门到入土:金融基础概念
这个系列博客是为正在准备入门量化投资行业的程序员而写的,所以默认你会 Python,或者至少能看懂这些代码。笔者也在系统性地学习金融、机器学习等相关内容,所以尽量会以“小白能看懂”的方式来讲解。如果有不准确或不足的地方,也欢迎指出~
2025-10-30 10:23:05
1059
原创 Rust 的错误处理:别拿类型系统当护身符
Rust错误处理的核心在于设计思维而非语法技巧。文章指出:1)应根据调用者需求区分错误来源(枚举)或简化错误信息(擦除);2)避免过度设计,隔离无关细节;3)明确区分Result和Option的使用场景;4)正确实现From trait以支持?操作符;5)使用try块确保资源清理;6)保持错误类型兼容性,避免破坏用户代码。好的错误处理应提供清晰语义,而非追求表面简洁。类型系统是防止逻辑撒谎的工具,而非目标本身。
2025-10-16 14:56:37
1060
原创 写给人看的 Rust 接口:四行箴言,一份 Checklist
《Rust接口设计四箴言:从“能跑”到“能活”》摘要: 好Rust接口不只是函数签名,而是与用户签订的长期契约。文章提出四大设计原则:1) Unsurprising-遵循命名惯例和标准trait;2) Flexible-使用泛型和约束保持扩展性;3) Obvious-用类型系统和文档消除歧义;4) Constrained-最小化可见性并保持兼容性。通过密封trait、PhantomData状态机等技巧,将运行时错误转为编译期检查。最后提供发布检查清单,强调好接口应成为"活文档"而非&qu
2025-10-16 14:24:58
908
原创 深入理解 Rust 的类型系统:内存布局、Trait 与类型推理
本文深入探讨 Rust 类型系统的高级特性,包括内存布局、Trait 机制和类型安全设计。首先解析了类型在内存中的对齐规则和特殊布局方式(如 repr(C) 和 repr(packed))。其次详细介绍了 Trait 的静态/动态分发机制及其限制,并展示了 Trait Bound 的高级用法。文章还探讨了存在类型(Existential Type)的价值和孤儿规则的限制,最后通过 Marker Trait 和类型状态模式展示了 Rust 如何在编译期保障类型安全。这些特性共同构成了 Rust 强大而灵活的类
2025-10-16 14:16:05
775
原创 深入理解:Rust 的内存模型
本文对比了Rust和C++的内存模型差异,重点分析所有权、析构顺序、借用规则和内部可变性四大核心概念。Rust通过编译期强制检查所有权和借用规则,有效避免悬垂指针、数据竞争等常见错误;C++则依赖程序员自觉遵守规则。在析构顺序上,Rust对局部变量采用逆序析构,而复合值内部按声明顺序;C++则完全逆序。Rust的借用检查器严格限制引用规则,而内部可变性类型(如RefCell)提供了运行时检查机制。理解这些差异对编写高效安全的系统代码至关重要。
2025-10-03 10:35:40
1008
2
原创 深入理解 Rust 的内存模型:变量、值与指针
可以看到,Rust 在很多地方对 C++ 进行了“强制收紧”,牺牲部分灵活性换取编译期的安全性。对于熟悉 C++ 的开发者,可以把 Rust 看作是“有更强类型约束和更严格规则的现代 C++”。Rust 以“内存安全”著称,但想真正写出高效、安全的 Rust 代码,就必须理解它背后的内存模型。:C++ 的变量和 Rust 类似,通常存储在栈上。Rust:函数调用分配栈帧,局部变量生命周期受作用域限制。Rust 把危险操作显式隔离,C++ 则允许直接执行。,但由编译器强制约束,避免误用。
2025-10-03 10:05:44
477
原创 智能指针到底该怎么用:现代C++内存管理实践指南
摘要: C++智能指针通过RAII技术自动管理资源生命周期,解决内存泄漏、悬垂指针等问题。主要类型包括:unique_ptr(独占所有权)、shared_ptr(共享所有权)和weak_ptr(打破循环引用)。最佳实践包括优先使用make_unique/make_shared、避免裸指针转换、自定义删除器处理特殊资源等。注意循环引用、返回原始指针等陷阱,并善用调试技巧如enable_shared_from_this。C++17/20增强了数组支持、原子操作等特性。根据场景选择智能指针:明确所有权用uniqu
2025-07-30 14:17:39
845
原创 深入理解Operation now in progress错误:网络编程中的EINPROGRESS详解
本文深入解析了网络编程中的"Operation now in progress"(EINPROGRESS)错误。该错误实质是非阻塞套接字操作的状态指示,常见于connect()等非阻塞调用场景。文章详细介绍了触发条件、处理方法和平台差异,重点阐述了使用select()/poll()检测连接状态的技术实现,并提供了错误处理模板和最佳实践。同时指出了常见陷阱和调试技巧,强调EINPROGRESS是操作中的状态而非错误,必须通过完整的状态检查流程来确认操作结果。文章为开发者正确处理非阻塞网络编
2025-07-30 14:16:55
1338
原创 深入理解C++中的shared_from_this:原理、应用与陷阱
C++中的std::enable_shared_from_this机制解析:本文深入探讨了C++11引入的enable_shared_from_this工具类,它解决了对象安全共享所有权的问题。核心原理是通过内部weak_ptr确保同一对象的所有shared_ptr共享控制块。文章详细剖析了其实现机制,包括构造函数初始化、内存布局和线程安全使用方式,并提供了工厂方法等推荐模式。同时警告了常见陷阱,如在构造函数中调用shared_from_this会导致异常。该机制是C++智能指针体系中实现对象安全共享的关键
2025-07-30 14:16:14
873
原创 深入理解libcurl与libuv:现代网络编程的核心库
本文深度解析了libcurl和libuv两大网络编程核心库的特性与应用。libcurl作为多协议客户端传输库,支持HTTP/HTTPS、FTP等多种协议,提供同步/异步接口;而libuv是跨平台异步I/O库,采用事件驱动模型,为Node.js提供底层支持。两者结合可构建高性能网络应用,如HTTP代理服务。文章通过架构图、代码示例展示了它们的核心功能与集成方式,并提供了连接复用等性能优化技巧。这种组合充分发挥了libcurl的多协议能力和libuv的高效事件驱动机制。
2025-07-30 14:15:33
810
原创 Linux性能分析与内存调试:perf和Valgrind高级使用指南
本文系统介绍了Linux下两大核心开发工具perf和Valgrind的组合使用方法。perf作为低开销性能分析工具,适用于CPU热点分析、缓存优化和系统监控;Valgrind则擅长内存调试,可检测泄漏、越界访问和线程问题。文章详细展示了工具安装、常用命令、高级技巧(如火焰图生成、内存泄漏精确定位)以及容器环境下的应用方案,并提供了可视化分析方法和典型问题解决指南。最后总结了最佳实践:perf适合生产环境性能分析,Valgrind应用于开发调试阶段,二者组合能全面覆盖性能优化和内存调试需求。
2025-07-30 14:14:43
925
原创 深入理解C++编译器优化:从O0到O3及构建模式详解
本文深入解析C++编译器优化技术,系统介绍GCC/Clang从O0到O3的优化级别差异及适用场景。重点分析各优化级别核心技术如死代码消除、函数内联、循环展开等,并对比Debug与Release构建模式的特点。通过CMake配置示例展示多模式优化实践,包括LTO和PGO高级优化技术。文章还总结了常见优化陷阱与最佳实践,建议开发阶段使用O0保证可调试性,测试阶段采用O2平衡性能,发布时根据目标平台选择O3或Os,关键路径结合PGO和LTO以获得最佳性能。
2025-07-30 14:13:46
1525
原创 深入理解C++ Lambda捕获中的循环引用问题
摘要:C++中的Lambda表达式结合智能指针使用时容易引发循环引用问题,导致内存泄漏。本文分析了Lambda捕获机制的原理,指出对象与Lambda相互引用是典型场景,并提供了三种解决方案:使用weak_ptr打破循环、显式释放资源以及自定义删除器。文章还探讨了事件系统等进阶场景,给出最佳实践建议,如避免直接捕获this指针、使用weak_ptr管理共享资源,并推荐使用Valgrind等工具检测内存问题。最后强调合理设计Lambda生命周期管理是避免循环引用的关键。
2025-07-30 14:12:38
1035
原创 UDP包大小与丢包率的关系:原理分析与优化实践
摘要: UDP包大小直接影响丢包率,包越大丢包风险越高。关键原因包括:超过MTU导致强制分片(任一碎片丢失即整包失效)、网络设备更易丢弃大包、拥塞加剧等。实测显示,1500字节以上丢包率呈指数增长。优化建议:动态探测路径MTU(推荐1200字节安全阈值)、启用PMTUD、应用层分片设计。高丢包环境应使用更小包(如512字节),关键业务需结合FEC或增强协议。开发者可通过ping -s命令验证MTU,在效率与可靠性间取得平衡。(149字)
2025-06-04 16:27:56
1439
原创 Rust生命周期、文件与IO
r最后接收的是s2的引用,但是等到我们使用r的时候,s2已经释放了,Rust是会消除一切可能导致危险的情况。a和b,但是其实生命周期也是类似的概念,r的生命周期中a的范围里,x的生命周期中b的范围内。这个打印出来的第一个参数是当前运行的目录,而后续的参数可能是环境变量或者是命令行参数。虽然这样并不能改变引用的生命周期,但是可以在合适的地方声明两个引用的生命周期一致。r保存的x的引用,当x销毁之后,r的引用也就失效了,因此也就产生了垂悬引用。但是Rust的main函数是一个午餐的函数,环境的参数是直接通过。
2025-04-17 15:04:49
1107
原创 Rust泛型与特性
在Rust中是没有继承这个概念的,因为他不像传统的面向对象语言,在Rust中主要是通过组合和多态来实现功能的,又由于Trait比传统的多态的功能更加强大,所以Rust采用了这种思路。我们不能单独返回特性,只能够返回具有特性的实例,因此如果多个结构体实现了同一个特性,就需要确保返回值是相同类型的实例,并且也必须是实现了特性的对象才能返回。在C++中,类可以定义成员变量和成员函数,但是到了Rust,把成员变量全部归给类结构体,只负责保存字段,而Trait则只负责定义行为,也就是成员函数。
2025-04-15 11:23:38
1067
原创 Rust包管理与错误处理
对于结构体来说,结构体本身也可以加上pub,能让外部访问,但是其字段依旧是私有的,如果想要访问,也需要pub来声明。可恢复错误,例如说文件读写错误,这个文件有可能被其他程序占用,这是正常的,我们可以通过等待来解决这个问题。在C/C++中,我们通常用整数做返回值来表达函数遇到的错误,但是Rust是通过一个枚举表达的。但是还有一种说逻辑错误导致的,例如数组越界访问,在C++中array是通过异常来表示的。Rust中有一套独特的处理异常情况的机制,和C++中的try还是有很大区别的。
2025-04-09 10:58:48
1035
原创 Rust切片、结构体、枚举
元组结构体的定义和使用更为简单,实际上是一种元组形式的结构体,区别就是有名字和固定的类型格式,主要是为了处理定义经常使用的简单类型用的。结构体和元组是类似的,可以将不同类型的数据作为一个整体,但是结构体内部每个成员是有名字的。这里的结构体和C++中的不太一样,这里的结构体只能用来定义类型,不能实例化对象,不需要。Rust的枚举和C++的枚举还是不太一样的,但是使用是比较简单的,例如。前者指的是堆内存中的字符串,我们可以理解为常量字符串,用的时候是作为。参数,而是属于结构体全体的,不属于某个具体的实例。
2025-04-05 22:19:49
1243
4
原创 Rust所有权详解
在栈空间内,Rust变量“移动”的方式其实就是复制,因为栈空间内基本上都是基本数据类型的,通常占用空间和复制时间不会很久,就会是直接复制,这时候两个变量都是可以使用的。按照原先的理解,s1内部会存一个指向"hello"的指针,s2内部其实也是一个指向"hello"的指针,但是s2是后来的,我们就认为s2是s1的一个引用,也就是别名。一般的租借引用是不允许修改数据内容的,除非原先的数据是mut的,引用时也是mut引用,才允许修改。这实际上是一种所有权的转移,主要是避免频繁申请和释放堆空间。
2025-04-05 16:52:03
961
原创 Rust闭包详解
默认情况下,闭包会借用他捕获的环境中的变量,闭包可以使用这些变量,但是不能修改他们的所有权,此时闭包内部和外部的作用域都可以使用这个变量。:在闭包之前添加move关键字,闭包会获取他捕获的变量的所有权,此时,变量的所有权会转移到内部,外部作用域无法使用这些变量。闭包的生命周期与它们所捕获的变量的生命周期相关。Rust 的闭包是轻量级的,并且 Rust 的编译器会进行优化,使得闭包的调用接近于直接调用函数。闭包可以通过move关键字获取外部变量的所有权,或者通过借用的方式获取外部变量的引用。
2025-04-01 21:12:17
699
1
原创 Rust迭代器详解
我们也可以为自己的类型实现迭代器 iterator trait(可以理解为接口)只需要定义next方法即可,例如} else {Noneprintln!// 输出 1 到 5这里我们先不去管 impl 是什么,直接翻译的话是实例,适用于给结构体或者特性实现方法的一个关键字。
2025-04-01 20:45:48
1022
原创 Rust函数、条件语句、循环
除此之外也可以给循环设定标签,也就是可以在多层循环时,内部只需要一个break,就能退出所有循环,同时还能带出返回值。这是rust非常重要的基础概念,我们可以认为函数体是由语句和表达式组成的。需要注意的是,表达式的返回值是 a + b,代表整个表达式的返回值,加上。函数名是蛇形风格,rust不在意函数的声明顺序,只需要有声明即可。for循环是和python很像的,类似于C++的范围for。这里的a是数组,iter表示迭代器,后面我们会详细讲。语句指的是执行某些操作并且没有返回值的步骤。
2025-03-23 20:10:25
515
原创 Rust基础语法
用bool表示,只能是true或者false,需要注意的是,这里相对于C/C++的限制更加严格,bool类型是无法和int类型进行隐式类型转换的。使用char表示,大小位4字节,主要是因为是使用Unicode编码的,可以支持中英日韩表情符号零宽度空格,这些都是有效字符。Rust是强类型语言,也就是说他对于变量的限制非常严格,但是具有自动判断变量类型的能力。我们可以认为这个a是一个变量,可以使用let重新绑定,但是在绑定之前是不允许被改变的。上面的a是不可变变量,因此任何形式的重新赋值都是不被允许的。
2025-03-21 11:12:37
579
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅