Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了SQLite数据库的锁机制,特别是关于读操作锁获取策略。在SQLite中,读操作的锁获取策略根据不同的上下文而变化,包括事务外的读操作以及显式事务内的读操作。不同隔离级别也会影响锁的获取方式。通过具体实验验证了SQLite的锁升级是延迟的,写操作的内存更改与实际文件写入是分离的,事务的COMMIT阶段是关键的锁竞争点。这种设计既保证了数据的一致性,又提供了良好的并发性能。在实验中,事务A能执行UPDATE操作但在COMMIT阶段失败,最终数据库状态未发生变化。文章总结了SQLite数据库锁机制的重要特点。

使用 GoReleaser 发布 Rust 二进制文件

作为消费者,我们获取二进制发布有多种方式,例如操作系统原生包格式、语言原生包格式、curl shell 组合、现代二进制打包工具。打包和发布需要跨平台编译、打包、摘要、上传等步骤。GoReleaser支持Go项目的打包和分发,但不支持Go以外的构建。通过破解GoReleaser构建过程,可以使用dummy.go文件满足GoReleaser需求,在后阶段执行Rust构建并覆盖Go工件。另外,godownloader是GoReleaser的姊妹项目,可生成curl-shell组合。探索其他Rust发布工具如cargo-release、cargo-deliver和cargo-hublish。 macOS上进行Rust跨平台构建可以使用docker-rustup。
Tec
58
0
0
2024-10-10

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

在 Windows 平台构建 Rust 时可能会遇到 openssl-sys 缺失的错误,需要手动安装 OpenSSL。通过 choco 安装 OpenSSL 后,设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR,重启 VSCode 后即可解决问题。详细安装步骤可参考提供的链接。这个过程涉及到环境变量配置和软件安装,确保按照指示完成后再进行构建操作。
Tec
188
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是关键环节,但测试框架默认并行执行时可能导致共享资源冲突。解决方案包括使用 serial_test crate 进行串行测试、互斥锁控制资源访问、创建独立测试环境、模块化测试和一次性初始化、以及使用 #[ignore] 属性标记易受影响的测试。选择适合的策略取决于需求,但通常 serial_test 和独立测试环境是简单有效的方法。无论策略,重要的是要意识到潜在问题并确保测试可靠性。
Tec
39
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发时,使用条件编译可以实现平台特定代码,保持接口一致性。然而,可能会出现静态分析工具错误标记代码为"未使用"的问题。解决方法包括使用 `#[allow(dead_code)]` 属性、在测试中使用平台特定代码、条件编译标记方法的可见性以及使用特性标志。其中,使用条件编译属性抑制特定平台的未使用代码警告是一个优雅解决方案,可精确控制、保持跨平台一致性、清晰明了、文档完整,解决问题并保持代码的兼容性和可读性。这些策略有效处理了平台特定代码和未使用代码警告带来的挑战。
Tec
45
0
0
2024-09-13
JS基础|let与var有什么区别?

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

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

使用 http-server 调试油猴脚本

最近学习前端知识,需要用油猴插件,提升网页定制化能力。为高效开发调试油猴脚本,介绍使用 HTTP 服务器,解决文件访问权限问题。通过安装 `http-server` 模块,并更新油猴脚本以使用 HTTP URL。不使用 `@require`,每次页面加载重新加载 JS 脚本。检查浏览器控制台以查看错误信息。【关键词】油猴脚本, 前端, 使用 http-server 调试油猴脚本.
Tec
51
0
0
2024-07-12
如何在 Python 中混合使用同步和异步函数?

如何在 Python 中混合使用同步和异步函数?

异步编程可以提高应用程序的性能和吞吐量,因为它可以充分利用 CPU 和 I/O 资源。当某个任务被阻塞时,事件循环可以切换到另一个任务,从而避免浪费 CPU 时间。此外,异步编程还可以简化代码,使其更易于维护和调试。我们最常用的是同步编程,在同步场景中,某个任务被阻塞时,整个线程都会被挂起,直到
Python 泛型 - 如何在实例方法中获取泛型参数T的类型?

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

本文介绍了在Python中如何使用泛型以及如何在实例方法中获取泛型参数T的类型。通过讲解使用typing库中的get_args和get_origin函数获取类的泛型参数,示范了如何通过Demo类内部获取泛型参数T对应的真实类。此外,对Generic源码进行了简要分析,解释了为什么必须在__init__、__new__之后才能使用,以及通过_GenericAlias类实现了在Demo类初始化完成后获取泛型参数类型的方法。文章重点强调了使用泛型的技巧和注意事项,帮助读者更好地理解和使用Python中的泛型特性。
1014
0
1
2023-02-23
1143. 最长公共子序列