- 博客(75)
- 资源 (3)
- 收藏
- 关注
原创 Falco vs. Tetragon:云原生运行时安全选型指南
Falco与Tetragon是云原生运行时安全的两大主流工具:Falco基于规则引擎,开箱即用、生态丰富,适合以检测告警为核心的团队;Tetragon依托eBPF,提供内核级可观测与原生阻断能力,性能优越,适用于深度集成Cilium、需精细控制的场景。选型关键在于匹配团队的安全成熟度、技术栈与运营能力——前者重“看得见”,后者重“拦得住”。建议分阶段落地,从观测起步,逐步构建闭环响应体系,最终实现DevSecOps全流程安全。
2026-10-16 17:14:31
424
1
原创 GitLeaks
Gitleaks 是一款基于 Go 语言的开源敏感信息检测工具,通过正则匹配、信息熵分析与上下文识别三重机制,精准检测 Git 仓库中的 API 密钥、密钥、令牌等敏感数据。支持本地/远程仓库扫描、CI/CD 集成、Pre-commit 钩子及 GitHub Action,可输出 JSON、SARIF 等多种格式报告。提供自定义规则与允许列表,适配多平台,助力实现“左移安全”。
2026-09-21 15:56:49
200
原创 Common Go Mistakes(V 函数和方法)
参考 100go接收器类型包含了值接收器(Value Receiver)和指针接收器(Pointer Receiver),这会影响方法的行为和性能。方法接收器类型决定了该方法操作的是数据本身的副本还是内存地址。如何选择接收器类型?命名返回参数是 Go 语言的一个特性,允许在函数签名中为返回值命名。这些命名参数会被初始化为其类型的零值,并可以在函数体内像普通变量一样使用。这是一个强大的特性,但很多开发者从不使用它,或者误用它。何时应该使用命名返回参数作为文档,特别是在接口定义中何时不应该使用命名返回
2025-12-16 23:00:00
1909
原创 Kafka如何实现高性能IO?
强制顺序读写,规避机械硬盘的物理劣势。借力Page Cache减少 IO 并提升读性能。使用Zero Copy,解放 CPU。全链路Batching,以吞吐量换低延迟。
2025-12-04 10:11:14
1073
原创 Common Go Mistakes(IV 字符串)
许多开发者在处理 I/O 时,会不断地在 string 和 []byte 之间来回转换。在 Go 语言中,不应该使用基于索引的传统 for 循环来遍历字符串,因为这样遍历的是“字节”而不是“字符”。连接字符串都会创建一个新的字符串对象。因此,频繁的字符串连接可能会导致内存分配和复制开销。包相似的操作,可以帮助避免 []byte/string 之间的转换。Go 语言中的字符串是不可变的(immutable),每次使用。系列函数移除的是字符集,而不是字符串前缀/后缀。,而不是创建新的副本。
2025-12-02 19:30:00
633
原创 Common Go Mistakes(Ⅲ 控制结构)
Go语言常见循环错误及解决方案:1. range循环变量是值拷贝而非引用,修改需通过索引或指针切片;2. range表达式仅循环前求值一次,数组遍历副本不受修改影响,切片和映射受影响;3. Go 1.22+已修复循环变量指针问题;4. 映射遍历无序且修改结果不确定;5. 不带标签的break仅中断最内层循环;6. 循环中使用defer会导致资源延迟释放,应封装函数处理。需注意值拷贝特性及控制结构的具体行为差异。
2025-11-13 16:22:50
1260
1
原创 如何处理消费过程中的重复消息
消息队列中重复消息会导致数据错误,主要源于发送方重试或消费者ACK失败。解决关键是实现消费操作的幂等性,常见方法包括:1)唯一消息ID+去重表,通过Redis或DB检查记录是否已处理;2)数据库乐观锁,使用版本号机制确保数据一致性。这些方法能保证多次处理同一消息产生相同结果,避免数据异常。
2025-10-31 22:00:00
297
原创 Common Go Mistakes(Ⅱ 数据类型)
本文总结了Go语言中常见的数据类型使用错误,重点分析了切片和整型的典型问题。在整型方面,指出了八进制表示法的混淆风险、整型溢出的检测方法;在切片方面,详细讲解了长度与容量的区别、初始化优化、nil与空切片的差异、正确的拷贝方式以及append操作可能带来的副作用。特别强调了切片操作导致的内存泄漏问题,并提供了解决方案。这些总结对于编写高效、安全的Go代码具有重要指导意义。
2025-10-29 20:00:00
766
1
原创 消息队列如何确保消息不会丢失
对于单个节点的 Broker,需要配置 Broker 参数,在收到消息后,将消息写入磁盘后再给 Producer 返回确认响应,这样即使发生宕机,由于消息已经被写入磁盘,就不会丢失消息,恢复后还可以继续消费。在生产阶段,消息队列通过最常用的请求确认机制,来保证消息的可靠传递:生产者发送消息给 Broker,Broker 收到消息后,会给客户端返回一个确认响应,表明消息已经收到了。在编写发送消息代码时,需要注意,正确处理返回值或者捕获异常,就可以保证这个阶段的消息不会丢失。实现这一目标需要一个涵盖。
2025-10-27 20:00:00
939
原创 事务消息(Transactional Message)
事务消息是解决数据最终一致性的柔性事务方案中最常用且优雅的方式之一。它牺牲了严格的实时性(最终一致性)来换取更高的系统性能、可用性和吞吐量,特别适用于电商、金融等对数据一致性要求高的场景。
2025-10-14 23:00:00
883
原创 Common Go Mistakes(Ⅰ 代码与项目组织)
所有导出的元素都要被文档化,通常的做法是增加一行注释,以被导出元素的名称打头,以句号‘.’结尾,并且应当说明函数的作用和意图,而不是函数如何实现(这应该放到函数内部)。它不是一个单一的工具,而是一系列 Linter 的集合,可以用它精确地控制需要启用或禁用的 Linter,以及自定义规则。Linters 是一种代码审查工具,它会分析源代码,找出编译器可能忽略的常见错误、不规范的风格以及不符合最佳实践的代码。中提取key,可以有多种做法,最简单的做法就是编写2个函数,其次,可以使用如下接口的方式。
2025-09-25 16:35:20
1069
原创 EKS Mountpoint for Amazon S3 CSI Driver
本文介绍在Amazon EKS集群上部署Mountpoint for Amazon S3 CSI Driver的方法,使Kubernetes应用可通过文件系统接口访问S3存储。主要内容包括环境要求(EKS集群、IAM配置等)、实施步骤(创建IAM角色与服务账户、安装CSI驱动)以及实践示例(静态配置PV/PVC挂载S3存储桶)。文章还指出了该方案的限制,如不支持某些POSIX文件操作。通过该方案,容器可直接以卷挂载方式访问S3对象存储,实现高效的数据访问。部署完成后可验证文件操作是否正常同步到S3存储桶。
2025-06-24 20:30:00
475
原创 选项模式(Options Pattern)
在Python语言中,创建一个对象时,可以给参数设置默认值,这样在不传入任何参数时,可以返回携带默认值的对象,并在需要时修改对象的属性。在Go语言中,我们经常会遇到一个结构体中有很多字段,我们只想设置其中的一部分字段,其他字段都使用默认值的情况,这时可以通过选项模式来解决。选项模式是指定义一个函数,这个函数的参数是一个结构体指针,这个结构体中包含了所有可选参数,函数根据参数的需求来设置结构体的字段值。第一种方法,我们要分别开发两个用来创建实例的函数,一个可以创建带默认值的实例,一个可以定制化创建实例。
2025-03-11 23:00:00
938
原创 Nextflow 可选输入文件
可以使用特殊的文件名来标记这类输入参数,类似于一个 placeholder。有时候存在需要 process 接收可选的输入文件的场景。控制是否真正的使用输入文件。这样就可以在运行时指定参数。
2024-07-10 20:00:00
425
1
原创 python 循环导入(circular imports)解决方法
正如在开头提到的,修复循环导入的最佳方法是对代码结构进行优化,这样模块就不会相互依赖。模块,这样是可以正常导入的,因为这两个模块都存在。就像上面提到的那样,它们此刻是空的,但是现在我们没有导入某个具体的函数名称。与函数调用一样,当 import 语句运行时,它开始执行导入的文件,直到导入完成后才返回当前文件。模块就都会包含了他们的内部的函数名称,我们可以使用模块名来引用其中的函数了。将函数名称查找延迟到函数体内,可以让所有模块完全初始化,避免循环导入的错误。模块已经存在,但是还没有定义。
2024-06-13 23:00:00
2276
原创 Python detach 进程
有一个调度程序会周期性的读取任务来调度,并且这些任务的执行时间比较长,我们想要在调度程序退出或Ctrl+c中断时不要影响其启动的任务。
2023-07-15 22:00:00
721
原创 Ubuntu – apt-get update fails “The repository no longer has a Release file”
Ubuntu – apt-get update fails “The repository no longer has a Release file”
2023-02-09 20:15:00
924
1
原创 15 Nextflow编码实践
Nextflow对空格不敏感。可以使用空格来提高可读性。使用注释和空格来对代码块进行分组。在脚本中报告工具版本。使用关键字命名输出channel。避免在process中使用params.xxx。将其作为输入参数传入。输入文件应该使用输入通道传入。将短的运行的命令组织到一个更大的进程中。包含一个在小型测试数据集上运行工作流的测试配置文件。重用现有的容器/软件包来编写process。尽可能使用压缩文件和临时磁盘空间。使用一致的命名约定。...
2022-07-25 18:00:00
954
原创 14 部署 nf-core pipelines
nf-core是一个由社区领导的项目,旨在开发一套使用Nextflow工作流管理系统建造的最佳实践管道。
2022-07-21 20:00:00
1667
原创 13 Workflow caching and checkpointing
像 Nextflow 这样的工作流管理系统的一个关键特性是可重入性,即在上次成功执行的流程出现错误后重新启动管道的能力。可重入性允许在向管道添加更多数据时跳过耗时的已经完成的步骤,例如创建索引。这会促进更快的工作流原型的开发,以及更快的附加数据分析。Nextflow 通过缓存和检查点自动跟踪管道中执行的所有进程来实现重入。...
2022-07-13 23:30:00
414
原创 10 Modules
在大多数编程语言都有创建代码模块这个概念,以便重用代码。Nextflow (DSL2)允许定义可以跨workflow管道包含和共享的脚本。
2022-07-08 21:00:00
217
原创 9 Nextflow configuration
Nextflow的关键能力是将workflow的的实现与底层执行平台所需的配置解耦。这使得workflow具有可移植性,运行其在不同的计算平台上运行,而不需要修改实现。
2022-07-07 23:30:00
1099
原创 3 Workflow参数
前面提到的Nextflow wc.nf 脚本定义了一个管道参数 params.input。管道参数允许在运行时通过命令行或配置文件更改工作流的输入,因此它们不会硬编码到脚本中。
2022-06-21 19:00:00
624
原创 4 Channels
通道是 Nextflow 在工作流中发送数据的方式。通道通过它们的输入和输出连接进程。通道可以存储多个项,比如文件(例如 fastq 文件)或值。通道存储的项数决定了使用该通道作为输入的进程将运行多少次。...
2022-06-21 14:02:16
565
原创 2 Nextflow 脚本
Nextflow 是在 Groovy 编程语言之上实现的领域特定语言(Domain Special Language,DSL) ,而 Groovy 编程语言又是 Java 编程语言的超集。这意味着 Nextflow 可以运行任何 Groovy 和 Java 代码。学习 Groovy 使用 Nextflow DSL 是没有必要的,但是在需要比 DSL 提供更多功能的边缘情况下,它可能会很有用。......
2022-06-21 09:57:05
662
原创 1 Nextflow入门
分析数据涉及到一系列的任务,包括收集、清洗和处理数据。这些序列被称为工作流或流水线(pipeline)。这些工作流通常需要执行多个软件,有时运行在不同的计算环境,例如台式机或计算机集群。传统上,这些工作流通过脚本连接在一起,使用通用编程语言,如 Bash 或 Python。然而,随着工作流变得更大和更复杂,对编程逻辑和软件的管理变得困难。工作流管理系统,像Snakemake、Galaxy、Nextflow,是专门为管理特定领域的计算数据分析工作流而开发的。.........
2022-06-20 22:00:00
2742
原创 python tricks
python tricks2 数据结构与算法 📃3 字符串相关 🔤4 对象迭代与反迭代 👍5 文件io 📃6 数据解析及构建 🔢7 类与对象 🐘8 多线程并发 🔜9 装饰器 🖼NumPy: Remove all rows in a NumPy array that contain non-numeric valuesimport numpy as npx = np.array([[1,2,3], [4,5,np.nan], [7,8,9], [True, False, True]])print(
2022-05-29 14:52:06
364
原创 pyside国际化
internationalpyside6.1版本中没有lupdate,可以使用pyqt中的lupdate生成ts文件,pylupdate5 cali_dialog.py -ts eng-chs.ts,若有多个ts文件,可以使用 lconvert -i eng-chs.ts eng-chs1.ts -o all.ts 合并,然后使用linguist(在qt中)生成qm文件,然后再代码中loadtrans = QTranslator(self)app = QCoreApplication.instanc
2022-05-29 14:12:30
1249
电梯调度程序
2015-06-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅