- 博客(29)
- 资源 (3)
- 收藏
- 关注
原创 Rust 的“零成本抽象”是个谎言吗?——当极致性能成为演化的枷锁
《零成本抽象的代价:Rust架构设计中的演化困境》一文探讨了Rust语言"零成本抽象"理念的潜在问题。作者指出,Rust通过编译期单态化实现泛型零开销,却付出了代码膨胀、接口固化等代价,导致系统难以适应需求变化。相比Java等语言的运行时动态分发,Rust的编译期决策虽然高效但缺乏灵活性。文章警告过度优化会埋下技术债,建议在非关键路径适度接受性能损失换取可维护性,提倡分层架构设计。最终强调,工程智慧在于平衡性能与演化能力,而非盲目追求零成本。
2025-11-17 09:12:30
816
原创 Unsafe Rust:在安全边疆之外,Rust 如何与“必要之恶”共处
Rust的"必要之恶":unsafe关键字的安全边界艺术 Rust通过unsafe关键字在安全与实用间达成精妙平衡,将不安全操作限制在清晰标记的范围内。这一设计承认底层编程中的必要风险,同时保持了整体的安全保证。文章剖析了unsafe的五大合法场景,包括解引用裸指针、调用不安全函数等,并提出了"不安全性卫生学"三大原则:封装不安全代码、添加安全注释、谨慎处理泛型。与C/C++的全面不安全不同,Rust将风险隔离在明确定义的区块内,使代码审查和验证能聚焦高危区域。标准库
2025-11-16 08:00:00
721
原创 Pin 与自引用结构:Rust 如何在“禁止移动”的牢笼中孕育异步未来
Rust的Pin机制巧妙解决了自引用结构的内存安全问题。通过承诺"不可移动性",Pin为异步编程和状态机提供了安全基础:1) 移动语义与自引用的天然冲突;2) Pin作为对内存位置的承诺封装;3) 成为async/await的隐形支柱;4) 通过限制获得表达自由。标准库工具如Box::pin简化使用,虽然存在学习曲线,但为高性能场景提供了安全护栏。Pin展现了Rust的核心哲学:精确约束换取更大表达空间,在静止中孕育动态能力。
2025-11-15 09:15:00
642
1
原创 Send 与 Sync:Rust 如何用两个 Trait 重新定义“线程安全”
摘要: Rust通过Send和Sync两个trait在类型系统中静态保障线程安全:Send允许所有权跨线程转移,Sync确保共享引用可安全并发访问。与C++/Java等依赖运行时检查的语言不同,Rust在编译期阻断非线程安全操作(如Rc跨线程使用)。标准库并发原语(如Arc/Mutex)均基于此机制构建,实现了零成本抽象的安全并发。这种将线程安全编码为类型属性的范式,相比传统语言的锁依赖或Go的channel建议,提供了更根本的安全保障。
2025-11-14 09:30:00
1185
原创 Drop Trait:Rust 如何在“死亡”中构建确定性
Rust的Drop特性实现了资源管理的确定性终结。通过将资源释放与作用域绑定,Drop确保了每个资源都有明确的生命周期终点,解决了传统编程中资源泄漏、双重释放等问题。它不仅是析构函数,更是责任履行协议,要求资源拥有者必须负责其完整生命周期。Drop的确定性设计使得文件、锁、线程等资源管理更加可靠,特别适合高要求领域。Rust通过限制Drop类型复制、明确析构顺序等规则,避免逻辑矛盾。即使在panic场景下,Drop仍保持行为可预测。这种设计哲学体现了"拥有即负责"的理念,为不确定的软件世
2025-11-13 09:30:00
928
1
原创 Result 和 Option:Rust 对“人类会犯错”这一事实的制度性抵抗
摘要:Rust通过Option和Result类型将错误处理提升为语言核心机制,从制度上强制开发者处理失败场景。Option<T>显式表示可能为空的值,取代了危险的null引用;Result<T,E>将错误作为正常返回值的一部分,避免异常机制的不可见性。这种设计哲学将运行时风险转化为编译期决策,促使API更诚实、测试更全面、系统更健壮。与其他语言相比,Rust通过类型系统实现"错误处理不可忽略"的强制约束,既避免了防御性编程的繁琐,又不牺牲安全性。这种对不确定性的制
2025-11-12 09:30:00
837
1
原创 Rust 的所有权系统,是一场对“共享即混乱”的编程革命
当你写下 let s = String::from("hello"); 时,Rust 已经在内存中为你签署了一份“独占契约”——它不信任共享,除非你能证明安全。
2025-11-10 10:42:02
747
原创 虚拟网络仿真平台——ALevin
Alevin是一款基于Java的开源虚拟网络仿真平台,旨在简化VNE算法的评估与比较。该平台于2010年开发,支持大规模并行仿真,可自动生成多种网络场景并执行算法性能测试。Alevin具备高度可扩展性,允许用户自定义网络拓扑、资源分配和评估指标,通过可视化结果帮助研究者分析算法表现。其核心功能包括批量场景生成、多核并行计算以及嵌入质量评估,显著提高了VNE算法的测试效率。该工具已在SourceForge开源发布(GPL/LGPL协议)。
2025-11-07 09:16:10
286
原创 利用springboot创建一个简单项目以及配置文件的使用
本文介绍了使用SpringBoot创建简单项目及配置文件的基本用法。主要内容包括:1)通过starter场景启动器简化依赖管理;2)创建父项目和子项目的配置方法;3)关键配置如web包、打包插件、启动类的实现;4)配置文件application.properties和application.yml的两种写法(扁平k/v和树形结构);5)端口、虚拟目录等常见配置示例。文章还涉及懒加载设置和自定义SpringApplication的方法,适合SpringBoot初学者了解项目基础配置。
2025-11-07 09:12:19
261
原创 Rust 不是在防止 bug,而是在重新定义“什么是错误”
本文探讨了Rust语言如何通过其强大的类型系统重新定义编程中的错误处理范式。作者指出Rust将传统运行时错误转换为编译期错误,通过Result/Option等类型强制开发者明确处理所有可能状态。其类型系统不仅检查语法,还能验证业务逻辑,如通过新类型和状态机模式编码程序约束。文章对比了不同语言处理错误的哲学,认为Rust的价值在于划清可静态验证与必须运行时处理的界限。这带来工程哲学转变:从被动容错转向主动防错,通过所有权、生命周期等机制从源头杜绝错误。最后指出Rust不仅是技术工具,更是促使开发者更严谨建模世
2025-11-07 09:00:00
900
原创 Rust 的“孤儿规则”到底在保护什么?——深入 Trait 实现的类型系统边界
很多人把孤儿规则当作“烦人的限制”,但事实上——它不是 bug,而是特性;不是障碍,而是保障。今天,我们就来揭开孤儿规则的神秘面纱,从类型系统、模块化设计到编译器实现,彻底搞懂它为何存在、如何工作,以及我们该如何优雅地绕过它。
2025-11-06 14:35:18
1355
原创 CSS常用属性
一、属性和属性值的定义1.引入(1)每个CSS样式由两部分组成,即选择符和声明,声明又分为属性和属性值;(2)属性必须放在花括号中,属性与属性值用冒号连接(3)每条声明用分号结束(4)当一个属性有多个属性值的时候,属性值与属性值不分先后顺序,用空格隔开(5)在书写样式过程中,空格,换行等操作不影响属性显示内部样式<!-- 选择器(选择符){属性:属性值;}--><style> h1{ color:red; }</styl
2022-04-29 20:45:29
4847
1
原创 vue.3.0的使用
一、项目创建vue create vue3更新到node最新版热更新有问题,需要手动刷新页面1.reactive<temlate><div> {{state.name}} <button @click='handleChange'> change </button> </div></temlate><script> import {reactive}f
2022-04-28 12:13:18
415
6
原创 vue中csv文件的导入、导出
csv文件导出安装命令npm install --save csv-exportor别忘了在script引用一下import CsvExportor from "csv-exportor";<templete><el-button type="primary" @click="outDialogVisible=true">导出</el-button> <!-- 导出 --> <el-dialog
2022-04-27 08:14:02
4438
7
原创 Vuex的使用
一、状态管理Vuex1.Vuex使用Vuex是一个专门为vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生改变。(1)组件间同步通信存在于store文件夹下import Vue from 'vue'import Vuex from 'vuex'import dailog from './modules/dailog'Vue.use(Vuex);//store‘全局’的对象const store = new Vu
2022-04-26 07:45:00
283
原创 SpringMVC
SpringMVCSpringMVC是目前主流的实现MVC设计模式的企业级开发框架,Spring框架的一个子模块,无需整合,开发起来更加方便。什么是MVC设计模式?将应用程序分为Controller、Model、View三层,Controller接收客户端请求,调用Model生成业务数据,传递数据给View。Spring MVC就是对这套流程的封装,屏蔽了很多底层代码,开放出接口,让开发者可以更加轻松、便捷地完成基于MVC模式的Web开发。SpringMVC的核心组件DispatchServ
2022-04-23 13:07:09
463
10
原创 移动端事件相关
移动端开发与PC端存在显著差异,主要体现在事件处理方面。首先,移动端click事件存在300ms延迟问题,源于早期判断用户单击或双击的设计,解决方案包括设置meta viewport、使用fastclick库或CSS的touch-action属性。其次,移动端手势交互可通过Hammer.js实现,Vue项目可结合vue-touch封装使用。这些特性要求开发者在移动端项目中采用特定技术方案来优化用户体验。
2022-04-20 13:10:48
932
4
node.js安装及详细步骤
2022-04-20
ALevin配置环境所需要的基础包——JUnit
2022-04-18
ALevin环境配置所需的jar包——commons-cli-1,5,0
2022-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅