Mkdir700's Note

Mkdir700's Note

Tec

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

本文深入探讨了SQLite的锁机制,重点关注了读操作的锁获取策略。在不同上下文中,SQLite的读操作获取锁的策略也略有不同。实验模拟了两个并发事务,展示了事务A执行UPDATE操作时并不被阻塞,但在尝试COMMIT时失败,数据库状态最终保持不变。由此验证了SQLite的锁升级是延迟的特点,写操作的内存更改与实际文件写入分离,事务的COMMIT阶段是关键锁竞争点。这种设计既保证了数据一致性,又提高了并发性能。
108
0
3
2024-12-26

使用 GoReleaser 发布 Rust 二进制文件

消费者获取二进制发布的方式多种多样,如操作系统原生包格式、语言原生包格式、curl shell 组合和现代二进制打包工具等。对于打包和发布,需要跨平台编译、打包、摘要、上传至提供者和设置分发工件等步骤。GoReleaser在构建和分发Go项目方面表现出色,但不支持Go以外的项目。针对Rust的跨平台编译,可以使用docker进行简化。通过破解GoReleaser的构建过程,实现对Rust项目的支持。另外,GoDownloader是GoReleaser的姊妹项目,可以生成方便的curl-shell脚本。探索其他类似于GoReleaser的Rust发布工具,如cargo-release、cargo-deliver和cargo-publish。
Tec
66
0
0
2024-10-10

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

在 Windows 平台构建 Rust 项目时,遇到缺少 OpenSSL 的错误提示。解决方法是使用 choco 安装 OpenSSL,并设置环境变量 OPENSSL_DIR 和 OPENSSL_LIB_DIR,然后重启 VSCode 进行构建。这样可以解决在 Windows 上使用 openssl-sys 构建失败的问题。
Tec
241
0
0
2024-09-16
解决 Rust 测试中的并行执行冲突:保护共享资源的策略

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

在 Rust 开发中,测试是确保代码质量的关键环节。并行执行测试可能导致共享资源冲突,需要采取措施来解决。解决方案包括使用 serial_test crate 串行执行测试、使用互斥锁确保资源访问、为每个测试创建独立的环境以隔离影响、使用测试模块和一次性初始化共享初始化逻辑、使用 #[ignore] 属性标记受影响的测试。选择适合的策略取决于具体需求和项目结构,但重要的是意识到并行测试可能带来的潜在问题,确保测试的可靠性和一致性。
Tec
47
0
0
2024-09-13
Rust 中的跨平台开发:处理平台特定代码和未使用代码警告

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

在 Rust 中进行跨平台开发时,使用条件编译实现平台特定代码是一种有效策略。通过 `#[allow(dead_code)]` 属性、测试中使用平台特定代码、条件编译标记方法的可见性以及特性标志,可以解决由于不同平台而引起的未使用代码警告问题。这些方法保持代码的一致性和可读性,同时确保在特定平台上提供最佳实现,是处理平台特定代码和未使用代码警告的优雅解决方案。
Tec
53
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
81
0
0
2024-07-12
使用 http-server 调试油猴脚本

使用 http-server 调试油猴脚本

本文介绍了在学习前端知识时碰到一个小需求,需要使用油猴(Tampermonkey)脚本。作者发现频繁复制粘贴代码到油猴插件编辑器中效率低下,因此提出通过使用 HTTP 服务器来高效开发和调试油猴脚本的方法。具体步骤包括安装和启动 `http-server`,更新油猴脚本以使用 HTTP URL,并检查浏览器控制台以确认错误。这种方法避免了文件访问权限问题,适用于任何操作系统,提升了对网页的定制化能力。
Tec
55
0
0
2024-07-12
如何在 Python 中混合使用同步和异步函数?

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

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

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

本文介绍了在 Python 中如何通过内省函数 get_args 和 get_origin 获取泛型类的泛型参数和原始类。通过示例详细说明了如何在实例方法中获取泛型参数 T 的真实类型,以及分析了 Generic 类的源码实现原理。文章重点讲解了 _GenericAlias 类的实例化方式,并解释了为什么必须在 __init__, __new__ 完成后才能获取到泛型参数的类型。文章关键词包括 Python 泛型、Python 技巧。
1034
0
1
2023-02-23
1143. 最长公共子序列