我第一次接触计算机,是在小学的微机课上。 当时用的是 Windows XP,从那时起,鼠标、窗口、图标这些 GUI 交互方式几乎成了默认的“电脑使用方式”。 相信很多人也是类似的经历。 前一段时间,我的时间线上经常出现关于 GUI 和 TUI 的争论。 有人不理解:都这个时代了,为什么还需要终端?
Archives
很多开发者在终端里用 zsh 的时候,会习惯性地打开 bindkey -v,进入 vi 模式。这样做的好处很明显:命令行也能像 Vim 一样分成 普通模式和插入模式,用 h/j/k/l 移动光标,w/b 按词跳转,甚至可以 dd 删除一整行,yy/p 来复制粘贴——对于重度 Vim 用户来说非常顺手
概述 配置 macOS 代码签名和公证,确保应用能够在 macOS 上正常分发和运行。 前置要求 Apple Developer 账户 需要付费的 Apple Developer Program 会员资格 个人账户或组织账户均可 开发者证书 Developer ID Application Cert
场景描述 在日常开发中,我们经常遇到这样的情况:一个 commit 包含了多个文件的修改,但我们只想回滚其中某个或某几个文件的更改,而保留其他文件的修改。这种精细化的版本控制操作在以下场景中特别有用: 热修复场景:紧急修复某个文件的问题,但不影响同一 commit 中的其他功能 功能拆分:将一个大的
在开发桌面剪贴板同步应用(UniClipboard)时,遇到了一个令人蛋疼的问题:即使只修改一些与 objc2 库完全无关 的代码,每次构建时 Rust 编译器仍然会重新编译 objc2 库,这严重影响了开发效率。 问题描述 该应用是一个基于 Tauri 的跨平台桌面应用,使用 Rust 作为后端。
在 Rust 开发中,我们经常需要在不同类型之间进行转换。最近在开发过程中,我遇到了一个优化类型转换代码的问题。 问题背景 我的项目中有一个从 Payload 和路径创建 ClipboardMetadata 的功能。最初是通过自定义静态方法实现: impl ClipboardMetadata {
引言 在构建分布式系统时,保证数据一致性是一个核心挑战。当业务流程需要跨越多个服务或数据源时,简单的本地事务不再足够。本文将探讨分布式事务管理中的两种主要模式——Saga 和两阶段提交(2PC),以及在使用 SQLite 等嵌入式数据库时面临的特殊挑战。 Saga 模式:最终一致性的权衡 Saga
WebRTC 基础概念 WebRTC (Web Real-Time Communication) 是一项开源技术,允许网页浏览器和移动应用程序通过简单的 API 实现实时语音、视频通话和点对点数据传输,无需安装任何插件或第三方软件。 WebRTC 连接建立流程 WebRTC 连接建立过程涉及多个步骤
原文地址: https://weaviate.io/blog/what-is-a-vector-database 向量数据库简介 什么是向量数据库? 向量数据库是一种对结构化或非结构化数据(如文本或图像)及其向量嵌入(数据的数值表示)进行索引、存储和提供访问的数据库。它允许用户在生产环境中快速查找和
问题描述 在基于 Tauri 和 React 的 UniClipboard 应用中,我遇到了一个与组件中事件监听器相关的问题。具体表现为:当应用启动后,控制台输出以下日志: [Log] 开始加载剪贴板记录... (ClipboardContent.tsx, line 85)
[Log] 启动后端剪贴
问题概述 在 Rust 异步编程中,一个常见的错误是在持有 Mutex 锁的情况下使用 .await,这会导致编译错误: future cannot be sent between threads safely
the trait `std::marker::Send` is not impleme
The feature that the async mutex offers over the blocking mutex is the ability to keep it locked across an .await point. This makes the async mutex mo
基本概念 互斥锁(Mutex)是一种同步原语,用于保护共享数据,确保在任何时刻只有一个线程可以访问这些数据。 两种互斥锁的主要区别 1. 阻塞行为 标准库互斥锁(std::sync::Mutex): 当你调用 .lock() 时,如果锁已被占用,当前线程会阻塞直到获得锁 阻塞意味着线程会暂停
SOLID 原则详解 SOLID是面向对象设计中五个重要原则的首字母缩写,由Robert C. Martin(也被称为"Uncle Bob")提出。这些原则旨在使软件设计更加灵活、可维护和可扩展。下面我将详细解释每一个原则及其实际应用。 S - 单一职责原则 (Single Responsibili
1.单例模式(Singleton Pattern) 题目描述: 实现一个数据库连接池管理器,确保系统中只有一个连接池实例,无论创建多少次都返回相同的实例。连接池应该支持获取连接和释放连接的功能。 要求: 1.实现一个 DatabaseConnectionPool 类,使用单例模式确保全局唯一 2.实
SafeEyes 是一款免费开源的 Linux 工具,旨在通过定时提醒和强制休息来防止眼睛疲劳。本文将介绍 SafeEyes 的功能、安装方法以及如何使用它来保护你的眼睛。
Redshift 是一款开源的屏幕色温调节工具,能够根据时间自动调整屏幕的色温,减少蓝光对眼睛的刺激,帮助用户更好地保护视力。 Redshift 简介 Redshift 的工作原理是根据地理位置和时间自动调整屏幕的色温。白天,屏幕色温较高,保持自然的白色;夜晚,屏幕色温降低,减少蓝光,使屏幕呈现暖色
引言 在使用 SQLite 数据库时,我们经常会遇到并发事务的问题。本文将通过一个具体的实验来深入探讨 SQLite 的锁机制,特别是关于读操作的锁获取策略。 SQLite 中的读操作锁策略 SQLite 中的读操作获取锁的策略会根据不同的上下文而变化: 1. 事务外的读操作 在自动提交(autoc
作为消费者,我们喜欢通过以下方式之一获取二进制发布: 操作系统原生包格式,例如 deb、rpm 等。 语言原生包格式,例如 pip、npm 等。通过这种方式提供纯二进制文件并不常见,但有些项目会这样做,例如 puppeteer,它会下载最新的无头 Chrome 二进制文件。 使用 curl shel
盖闻:人生在世,富贵不能淫,贫贱不能移。文章盖世,孔子厄于陈邦;武略超群,太公钓于渭水。颜渊命短,殊非凶恶之徒;盗跖年长,岂是善良之辈。尧帝明圣,却生不肖之儿;瞽叟愚顽,反生大孝之子。张良原是布衣,萧何曾为县吏。晏子身无五尺,封作齐国宰相;孔明卧居草庐,能作蜀汉军师。楚霸虽雄,败于乌江自刎;汉王虽弱
问题 在 Windows 下构建时抛出了下方错误,意思就是缺少 OpenSSL 这个玩意儿,如果在 Linux 平台直接用包管理工具安装就 OK 了,但是在 Windows 平台则需要手动操作。 OPENSSL_DIR unset
note: vcpkg did not find opens
在 Rust 开发中,测试是确保代码质量的关键环节。然而,当我们的测试套件变得越来越大时,我们可能会遇到一个常见的问题:并行执行测试导致的共享资源冲突。 问题的根源 Rust 的测试框架默认并行执行测试,以提高效率。但当多个测试同时访问共享资源(如全局配置、数据库连接或文件系统)时,可能会导致意外的
在 Rust 中进行跨平台开发时,我们经常需要为不同的操作系统提供不同的实现。同时,我们也需要处理一些由此产生的代码分析问题。本文将探讨如何有效地处理这些情况。 使用条件编译实现平台特定代码,Rust 提供了强大的条件编译功能,允许我们根据目标平台选择不同的代码实现。例如: pub struct P
`ncdu` 是一个基于 ncurses 库的磁盘使用分析工具,它提供了一个交互式的界面,让用户可以方便地查看和管理磁盘空间。与传统的 `du` 命令相比,`ncdu` 更加直观和用户友好,特别适合需要快速定位大文件和目录的场景。
Barrier 是一个开源软件,允许你在多台计算机之间共享一套键盘和鼠标。
问题 我的耳机是 airpod3,刚买来的半年一直都是正常的,之后右边耳机总是会断开,也就是总是只有左边这只耳机有声音。 然后根据这里的步骤尝试忘记并重连 airpods,然后莫名奇妙一对耳机,建立两个耳机连接,我这里忘记截图了,总之,在设置界面能看到两个 airpods,实际上就是两个耳机分别建立
在 MacOS 上,osascript 是用于执行 AppleScript 和其他 OSA(Open Scripting Architecture)语言脚本的命令行工具。-e 选项允许你直接在命令行中输入和执行脚本代码,例如: osascript -e 'id of app "Obsidian"'
在 JavaScript 中,var 和 let 都用于声明变量,但它们有一些重要的区别,这些区别主要体现在作用域和提升(hoisting)方面。 1. 作用域(Scope) var 声明的变量是函数作用域(Function Scope)或全局作用域(Global Scope)。 let 声明的变量
背景 最近在学习前端相关的知识,刚好又碰到了一个小需求需要用到油猴插件。油猴(Tampermonkey)脚本可以极大地提升我们对网页的定制化能力。 本地开发这些脚本时,我需要频繁地复制粘贴代码到油猴插件编辑器中进行调试显得非常低效。 本文将介绍如何通过 HTTP 服务器高效地开发和调试油猴脚本。 效
起因 我想批量生成的方式,获取到一个后缀比较好的地址,使用 Python 实现了脚本也成功拿到了一个比较新颖的地址。关于助记词和私钥的保存,我是分成两部分保存的,也就是使用两个密码保存工具 A 和 B,A 保存一半助记词,B 保存另一半助记词。然后我在复制助记词的时候,复制漏掉了一个单词,不过幸好私
在数字时代,艺术和所有权的概念正在经历一场革命。非同质化代币(NFT)作为一种独特的加密资产,正在改变我们对数字收藏品的认知和交易方式。 NFT是什么? NFT,即非同质化代币,是一种特殊的加密资产,每个代币都具有独一无二的属性。与比特币或美元这样的可互换资产不同,NFT的每个单位都是不可替代的。这
什么是DeFi? 去中心化金融(DeFi)是一个涵盖在公共区块链上,尤其是以太坊上,提供点对点金融服务的总称。DeFi的出现,让我们能够在没有传统银行支持的情况下,进行赚取利息、借贷、放贷、购买保险、交易衍生品、资产交易等几乎所有银行支持的金融活动。DeFi的特点是更快速、无需繁琐的文件处理或第三方
前言 不知道你有没有见过,在一些人的 VIM 中的代码,一部分是正体一部分是斜体,就像这样: 我还是比较喜欢这样子的风格: When it comes to programming fonts, I prefer something thin and relatively condensed, bu
异步编程可以提高应用程序的性能和吞吐量,因为它可以充分利用 CPU 和 I/O 资源。当某个任务被阻塞时,事件循环可以切换到另一个任务,从而避免浪费 CPU 时间。此外,异步编程还可以简化代码,使其更易于维护和调试。我们最常用的是同步编程,在同步场景中,某个任务被阻塞时,整个线程都会被挂起,直到
#Python #Python泛型 先上解决方法: https://stackoverflow.com/questions/57706180/generict-base-class-how-to-get-type-of-t-from-within-instance 再来简单分析下源码。 talk i
asciinema 是一个用于录制和分享终端会话的工具。它可以将你在终端中的操作和输出录制下来,并生成一个可以在网页上播放的动画。与传统的屏幕录制工具不同,asciinema 记录的是终端的文本内容,而不是视频,因此生成的文件非常小,并且可以在任何支持文本的平台上播放
在想一个问题。 如果我们处于六道轮回之内,即便度过此生仍有下一生,下下一世,直到…,直到地球爆炸?宇宙热寂?凡事没有绝对,没有永无止境,这所谓的轮回总会结束。 如果生命有且仅有一次,从这一次的诞生到消逝,而后纵使万万亿年,也不见我的踪影。不存在灵魂,那身死之后的时间,就再与我无关,我不再是我,是宇宙
描述 给你两个正整数数组 nums1 和 nums2 ,数组的长度都是 n 。 数组 nums1 和 nums2 的 绝对差值和 定义为所有 |nums1[i] - nums2[i]|(0 <= i < n)的 总和(下标从 0 开始)。 你可以选用 nums1 中的 任意一个 元素来替换 nums
描述给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。示例 1:输入: nums = [2,2,3,4]输出: 3**解释:**有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3示例 2:输入: nums = [4,2,3,4]输出:
描述 给定一个 排序好 的数组 arr ,两个整数 k 和 x ,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。 整数 a 比整数 b 更接近 x 需要满足: |a - x| < |b - x| 或者 |a - x| == |b - x| 且 a < b 示例
什么是 Context(上下文) ?首先明白 Context 是什么,这东西常被翻译为上下文,这里借鉴知乎网友的回答 https://www.zhihu.com/question/26387327这其实像以前的阅读理解题,“请结合语境上下文,谈一谈作者的感想”。一个句子,
对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd的实际文件。可以把表空间想象成切分为许许多多个页的池子。当我们想为某个表插入一个条记录的时
Python作为一门动态语言,其实并不需要重载,但是如果你愿意的话,可以显式的声明重载。先简单介绍下什么是重载(Overload)。重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。提出问题简单的举个例子。现在有一个get函数,接收参数v,v的类型
不知道从什么时候起,我写Python代码习惯给变量加上类型注解。这虽然降低了Python的灵活性,但确确实实在后续维护的过程中提供了很好的帮助。第一次听到泛型这个词,是在Java中了解到的,但具体做什么,有什么作用,都是比较模糊的。因为我本身对Java只是了解并且也没有用Java做过什么实际项目,所
给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18
珂珂喜欢吃香蕉。这里有 N 堆香蕉,第 i 堆中有 piles[i] 根香蕉。警卫已经离开了,将在 H 小时后回来。珂珂可以决定她吃香蕉的速度 K (单位:根/小时)。每个小时,她将会选择一堆香蕉,从中吃掉 K 根。如果这堆香蕉少于 K 根,她将吃掉这堆的所有香蕉,然后这一小时内不会再吃更多的香蕉。
给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。 示例 1:输入:mat = [[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0,0],[0,1,0],[0,0,0]]
我在做一个ETL任务时,发现上流任务的返回值(5W条数据),无法在下流任务中解析出来。
在很多时候,我们都在和数据是打交道,所以经常会去做一些数据库连接,比如Mysql、Mongo等等。
如果直接把数据库连接写在DAG中,这虽然是可行的,但这会暴露数据库连接等敏感信息,并且当数据库连接信息发生变化时,维护成本也将大大提升。
青山隐隐水迢迢,江南秋尽草未凋。二十四桥明月夜,玉人何处教吹箫。
我们接触一个新的框架总会有许多新概念,这些概念虽然比较重要,但我想它的功能才是我们初步接触最想体验的,所以我更偏向于在使用的过程中去逐
前言本文主要参考官方文档编写。我将顺着官方文档的流程在本地安装Airflow ,并且附上安装过程的截图。其实官方文档步骤写得都是比较详细,奈何这英语能力真的拉跨。不过还是建议大家在使用过程中遇到的任何问题,优先去查看官方文档,有奇效。官方文档:https://airflow.apache.org/
前言接口分析接口签名X-Ca-KeyX-Ca-NonceX-Ca-Signature接口参数效果代码前言平时写文章用的是Typroa+PicGo,我贴的所有图片都是保存在oss上的,当我把带有远程图片地址的markdown粘贴到csdn的编辑器中时,往往存在一个问题,总有一部分图片会转存失败,但是我
一提到cookie的获取,第一想法就是简单。通常的流程就是请求一下网页,然后在响应中提取cookie即可。
但是在维普期刊这个例子里,并不是这样。先来了解在调试中我所遇到的实际问题。
然后在后文中,我们一一来解决这些问题。
我所用的方法基于浏览器环境的,非硬解(头秃ing:no_mouth:),文章较长,建议收藏。
这是我第一次接触瑞数加密,比较难,不过学到的东西也是挺多的,也是因为我第一次解瑞数,所以文章写得比较详细甚至是啰嗦,这篇文章大致是以我逆向的思路去写的,应该适合像我这样从未接触过瑞数的朋友。
对于CSS字体加密,我目前遇到了这几种情况:字体字形坐标点与编码之间的对应关系不会随着多次请求而变化,例如:58同城房子出租字体字形坐标点每次请求时,位置不固定,但是每个文字的打点数量一致,例如:猿人学第7题字体的打点坐标点与打点数量随着每次请求都会发生变换,例如:58同城招聘我们之所
`kl_device_id`、`kl_sign`、`kl_t`这三个参数的加密方式,其实核心参数还有一个`kl_trace_id`
前言使用protobuf主要是两个步骤,序列化和反序列化。关于Proto有哪些数据类型,然后如何编写,此处就不赘述了,百度一下有很多。此文主要是总结,python使用protobuf的过程,如何序列化和反序列化,对不同类型的字段如何进行赋值。序列化下面将一一列举各数据类型,在python中如何正确赋
前言本文意在记录,在爬虫过程中,我首次遇到Protobuf时的一系列问题和解决问题的思路。文章编写遵循当时工作的思路,优点:非常详细,缺点:文字冗长,描述不准确protobuf用在前后端传输,在一定程度节约了带宽,也为爬虫工程师增加了工作量。遇见Protobuf一拿到网站,F12查看是否有相关数据的
网址:https://live.leisu.com/wanchang可以看到这个比分是使用canvas绘制上去的。了解Canvas首先了解下canvas是一个可以使用脚本(通常为JavaScript)来绘制图形的 HTML 元素.例如,它可以用于绘制图表、制作图片构图或者制作简单的(以及不那么简单的