Mkdir700's Note

Mkdir700's Note

Tec

SQLite 锁机制:读锁策略与并发事务分析

在SQLite数据库中,读操作的锁获取策略根据上下文不同而变化,包括事务外的读操作和显式事务内的读操作。不同隔离级别也会影响读操作的锁获取方式。文章通过实验验证了SQLite锁机制中的一些行为,特别是涉及并发事务的情况。实验结果表明,事务A能够执行UPDATE操作,但在尝试提交时失败(database is locked),最终数据库状态保持不变。文章总结了SQLite的锁升级是延迟的,写操作的内存更改和实际文件写入是分离的,以及事务的COMMIT阶段是关键的锁竞争点。这种设计既保证了数据的一致性,又提供了较好的并发性能。
156
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式包括操作系统原生包格式、语言原生包格式、使用 curl shell 组合以及现代二进制打包工具。打包和发布二进制文件需要跨平台编译、打包、包摘要、上传到托管服务以及设置分发工件。GoReleaser在构建和分发Go项目方面表现出色,支持生成变更日志、语义版本等功能。然而,GoReleaser目前仅支持构建Go项目,不支持其他语言。使用GoReleaser破解方法可以通过虚拟程序满足GoReleaser的要求并在构建后期执行必要的Rust构建。另外,godownloader是GoReleaser的姊妹项目,可以生成用于二进制文件安装的curl-shell组合。探索其他类似GoReleaser的Rust发布工具,如cargo-release、cargo-deliver、cargo-hublish。
Tec
110
0
0
2024-10-10

解决在 Windows 上 openssl-sys 构建失败的问题

在 Windows 平台构建 Rust 时遇到 openssl-sys 错误,缺少 OpenSSL。解决方法是使用 choco 安装 OpenSSL,并设置环境变量。安装完成后设置 OPENSSL_DIR 和 OPENSSL_LIB_DIR,然后重启 VSCode 即可构建成功。详细步骤可参考提供的链接。
Tec
507
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

解决 Rust 测试中的并行执行冲突:保护共享资源的策略

在 Rust 开发中,测试是确保代码质量的关键环节。然而,并行执行测试可能导致共享资源冲突,影响测试效果。为解决这一问题,可以使用 serial_test crate 进行串行执行测试,使用互斥锁控制资源访问,创建独立的测试环境或者利用测试模块和一次性初始化。另外,可以使用 #[ignore] 属性标记容易受到影响的测试,并单独运行。选择合适的策略取决于具体需求和项目结构,但无论哪种方法,都需要注意并行测试的潜在问题,确保测试的可靠性和一致性。
Tec
70
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

在 Rust 中进行跨平台开发需要处理平台特定代码和代码分析问题。使用条件编译可以实现平台特定代码,确保接口一致性。然而,静态分析工具可能误标记部分代码为"未使用",可通过属性 `#[allow(dead_code)]` 或在测试中使用平台特定代码解决。另一种方法是使用条件编译标记方法的可见性或特性标志,如在 Cargo.toml 中定义特性 `png_support`。最后,可以使用条件编译属性抑制特定平台的未使用代码警告,在保持跨平台兼容性和可读性的同时解决问题。这些方法有效处理平台特定代码和未使用代码警告,维护代码清晰度和文档完整性。
Tec
78
0
0
2024-09-13
JS基础|let与var有什么区别?

JS基础|let与var有什么区别?

在 JavaScript 中,var 和 let 用于声明变量,区别主要在作用域和提升方面。var 是函数或全局作用域,let 是块作用域。变量提升时,var 在函数或全局顶部,let 在块顶部。重复声明时,var 允许,let 不允许。全局变量属性方面,var 成为全局对象属性,let 不会。let 提供更严格的作用域控制和更安全的变量声明,适合现代 JavaScript 开发。
Tec
97
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

本文介绍了如何通过使用 HTTP 服务器高效地开发和调试油猴(Tampermonkey)脚本。通过安装和启动 HTTP 服务器,避免了文件访问权限问题,可以在任意操作系统上进行开发。同时,更新油猴脚本以使用 HTTP URL,避免了静态 URL 的限制。检查浏览器控制台可以帮助检查代码是否存在错误信息。这为前端开发者提供了非常实用的技巧来提升对网页的定制能力。
Tec
68
0
0
2024-07-12
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

本文介绍了如何在Python中使用泛型并获取泛型参数的类型。通过示例展示了如何使用typing库中的get_args和get_origin函数来实现这一目的。文章通过分析代码和源码,深入解释了在实例方法中获取原始类和泛型参数数据类型的方法。此外,还对Generic源码进行了简要分析,解释了为什么必须在__init__、__new__之后才能使用泛型类型。通过讲解_GenericAlias类的继承关系和内部实现,说明了使用()实例化泛型类对象的原理。文章的关键词有Python、泛型、Python技巧。
1100
0
1
2023-02-23
1143. 最长公共子序列
1508. 子数组和排序后的区间和