- 博客(16)
- 收藏
- 关注
原创 并发原语的使用 —— 面向仓颉的解读与工程实践
优先不可变与消息传递;共享可变时再用锁。在 API 层明确并发语义(谁是 Owner,谁会 clone/clone-cost)。对高频通路用原子或无锁结构;对复杂一致性用 Mutex + 小临界区。在异步代码中严格禁止“持锁 await”;用消息或复制小数据来解耦。编写死锁/竞争测试并使用工具(如线程 sanitizer)检验。并发是把程序从“顺序世界”推向“多实体交互”的实践艺术。仓颉的类型系统、所有权与声明式模型为并发提供了强有力的静态约束;
2025-11-10 11:22:35
705
原创 仓颉语言中的宏系统设计与应用
仓颉的宏系统代表了编程语言从“语法糖层级的简化”向“语义层级的智能扩展”进化的方向。它不仅使代码生成更安全、更高效,也让语言具备自我演化能力——开发者可以通过宏扩展语言特性,而不必等待编译器更新。未来,仓颉的宏系统有望与其类型推导、反射机制进一步结合,实现类似可验证的编译期逻辑推理(Verified Compile-Time Reasoning),这将让宏不再只是模板工具,而成为智能编程的核心引擎。是否希望我帮你把这篇文章改写成适合发布到技术专栏(例如掘金或知乎专栏)的排版版本?
2025-11-10 11:19:50
332
原创 Rust中Actix-web的性能优化技巧
本文解读Actix-web的核心性能机制,并通过深度实践展示技巧,帮助构建能处理百万QPS的Web服务。关键是Cargo.toml的[profile.release]配置:codegen-units=1减少JIT开销,lto="fat"启用链接时优化(LTO),panic="abort"简化错误处理减少体积。Actix的Actor模型在并发下高效,但消息传递有开销——最小化actor间通信,使用共享状态代替。基准测试显示,LTO可提升20-30%性能,但编译时间翻倍——在CI中使用增量构建缓解。
2025-10-30 11:31:13
653
原创 Rust中WebSocket支持的实现深度实践
WebSocket是现代Web应用的关键技术,提供全双工通信通道,支持实时数据推送如聊天、股票行情、协作编辑。不同于HTTP的请求-响应模式,WebSocket连接持久化,需处理ping/pong心跳、关闭帧和错误恢复。深入理解其实现原理,能帮助开发者构建低延迟、可靠的实时系统,同时揭示Rust在网络编程中的优势:零拷贝消息传递和编译期安全检查。心跳定时器使用tokio::time::interval,每30s发送ping,超时关闭。单连接echo简单,但真实场景需广播:聊天室中,一用户消息推送所有。
2025-10-30 11:27:32
732
原创 Rust中错误处理与响应构建深度实践
专业思考:响应构建是性能热点,避免不必要克隆,使用Cow延迟拷贝。Json使用serde自动序列化,Stream支持流式响应,避免大响应内存占用。专业思考:错误应分类为可恢复(如用户输入错误,返回400)和不可恢复(如数据库崩溃,返回500),并记录日志以便监控。错误处理的最佳实践是分层:业务错误自定义枚举,底层错误如IO用anyhow包装。运算符简化错误传播:在函数中遇到错误时,立即返回Err值,而不需手动unwrap。Rust的错误处理与响应构建机制,体现了语言的核心哲学:显式、可靠且零成本。
2025-10-30 11:24:53
689
原创 Rust中异步处理器(Handler)实现深度实践
Actix-web和Axum等框架将handler设计为返回Future的函数,编译期确保线程安全和生命周期正确。深入理解异步handler的实现原理,能帮助开发者构建响应迅速、可扩展的Web服务,同时揭示Rust异步生态的精妙设计。专业思考:异步并非万能。在Actix-web中,handler可直接async定义,而Axum要求handler返回impl IntoResponse的Future。请求处理是事件驱动的:handler在接收请求后,可await数据库查询、网络调用等IO操作,而不阻塞线程。
2025-10-30 11:20:12
438
原创 在多线程异步方法中 Spring Security 框架的 SecurityContext 获取认证信息错误原因及解决方案
解决SecurityContext获取认证信息错误
2024-06-05 13:45:04
1887
原创 在多线程异步方法中 Spring Security 框架的 SecurityContext 无法获取认证信息的原因及解决方案
由于 Spring Security 默认使用的是 MODE_THREALOCAL 模式,该模式只允许在请求的主线程中获取安全上下文信息,用来获取用户身份信息。但是如果请求的接口中,又调用了异步方法,或者自定义了线程池去执行方法,则会获取不到用户信息。1.定义配置也很简单,只需要在配置类中注入一个 bean 即可,覆盖 Spring Security 默认的安全上下文策略即可。所以在使用authentication 的时候要判断是否为空,防止空指针异常。那么就需要自定义配置,修改程序默认的策略。
2023-06-21 17:21:29
3562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1