Everything you care about in one place

Follow feeds: blogs, news, RSS and more. An effortless way to read and digest content of your choice.

Get Feeder

blog.zhangyingwei.com

胡说

Get the latest updates from 胡说 directly as they happen.

Follow now 14 followers

Latest posts

Last updated 9 months ago

N8N 自动化可编排流程,解放你的双手

9 months ago

在漫长的折腾生涯中,玩过太多东西,但是大浪淘沙,最终剩下来常用的只有那么几款。 在这个系列中,准备介绍一些非常有意思的开源产品。 n8n 是一个开源免费的自动化工作流平台,它提供了 200多个不同的节点来自动化工作流程,通过编排,可以实现跨不同服务的自动化流程。 相比市面上已有的 Zapier 等其他商业化自动化工具,n8n稍显稚嫩。但是免费开源以及强大的拓展性和自定义能力使得n8n在这个领域也是独树一帜。 部署 n8n 分为两个版本: 云服务版本:...

在数据采集中使用对象池的实践

12 months ago

在我的日常工作中,有很大精力投入到数据采集上。我需要从 syslog 采集大量数据,通常的流程是,将每条数据进行校验之后解析为对象进行一系列的处理与分析。这会产生大量对象,在 Java 中,大量对象必然意味着大量堆内存和频繁的 GC。为提高对象利用率,降低 GC 压力,我们基于对象池技术进行了一些优化手段。 一、为什么需要对象池 在数据采集系统中,每秒钟可能处理成千上万条日志记录,每条记录都需要转换为对象。频繁的对象创建和销毁会导致较高的性能开销,尤其是增加垃圾回收(GC)的频率,从而影响系统的整体性能。对象池通过复用对象减少创建和销毁的次数,提升性能和资源利用率。 二、对象池的原理 在...

在业务中使用 Kafka 到底能不能保证消息的有序性

12 months ago

金三银四,最近开放简历做了一些面试。在一次面试中,就 Kafka 消息的有序性进行了一番讨论,这里贴一下相关思考。 首先贴结论: 在kafka中,多 partition 的情况下,kafka本身是无法保证消息的有序性的。但是可以通过逻辑控制保证消息的有序性。 为什么无序? 在Apache Kafka中,一个主题(Topic)可以被分为多个分区(Partitions),这种设计是为了实现水平扩展和提高吞吐量。每个分区都是一个有序的、不可变的消息序列,新的消息不断追加到序列的末尾。 然而,当一个主题包???多个分区时,Kafka的架构确实决定了它无法全局保证消息的有序性。主要原因如下: 生产者的分区策略:生产者可以根据消息的键(Key)或者自定义的分区策略来决定将消息发送到哪个分区。如果不同的消息使用了不同的键或者被发送到不同的分区,那么这些消息之间的顺序就无法得到保证...

Java 程序优化之-如何更好的利用CPU

about 1 year ago

昨天,有人跟我聊起项目中对程序的优化,有一个特别有意思的话题《如何榨干一台机器的CPU》 现在的市面上,多核CPU是主流,有了多核的加持,可以更加有效的发挥硬件的能力,基于Java程序,我们究竟该如何更加有效的应用多核的能力?我个人经验来讲,主要考虑一下几个方面: 并行执行任务 减少共享数据的写操作 采用合适的方式处理竞争资源 减少数据拷贝次数 合适的GC 接下来详细说明。 1. 并行执行任务 合理利用多线程执行任务,可以有效的发挥CPU的多核性能。由于超线程技术的存在,实际上CPU可以并行执行的线程数量通常是物理核心数量的2倍。 我们都知道,在计算机中,进程是操作系统资源(内存、显卡、磁盘)分配的最小单位。线程是CPU执行调度的最小单位。...

数据处理中的责任链模式

about 1 year ago

在我的工作中,数据处理占据了比较大的权重。在数据处理的过程中,有一项比较繁琐的工作,就是对日志中的每个字段进行单独校验和处理,校验的内容大概有以下几类: 字段数量校验 字段为空判断 字段内容校验 特殊字段校验、信息补充 增加标签字段 在这类场景中,最常规的方法就是编写冗长的 if-else 代码段进行按部就班的校验,这显然不是最佳方案。 责任链模式可以有效地解决上述繁琐的工作。通过将不同的校验和处理逻辑分配给不同的处理者,形成一条责任链,数据依次通过各个处理者进行处理。这样做的好处是: 避免编写大量的重复 if-else...

SpringBoot 中实现订单过期自动取消

over 1 year ago

在电商等需要在线支付的应用中,通常需要设置订单自动取消的功能。本文将介绍几种在 Spring Boot 中实现订单 30 分钟自动取消的方案,包括定时任务、延迟队列和 Redis 过期事件。 方案一:定时任务 定时任务是一种简单且常用的实现订单自动取消的方案。在 Spring Boot...

把 Obsidian 变为 Hugo 博客的集成管理平台

over 1 year ago

今天早上无聊闲逛,看到有不少人是从我的 Obsidian + Hugo 系列,开始了解原来 Obsidian 和 Hugo 还可以这么搭配的。 但是不少人反馈,根据 Hugo 博客写作最佳实践...

如果我们想实现一个 WAF之 -- 什么是 WAF

over 1 year ago

如果我们想实现一个简易的 WAF,我们实际上需要干什么?我们需要先了解什么是 WAF。 🐭 什么是 WAF WAF 全称 Web Application Firewall,是一种工作在应用层(7 层)的防火墙,主要用于对应用层中的...

防止 SQL 注入:WAF 就足够了吗?

over 1 year ago

在目前的网络攻防环境中,SQL 注入仍然是一种应用广泛、操作简单、且效果显著的攻击手段。防范 SQL 注入攻击,对于防止数据泄露、保护用户隐私和保护 Web 应用的完整性任然是至关重要的一项工作。 Web 应用程序防火墙(WAF)系统,通常被认为是防御 SQL 注入攻击的主要基础设施。但有 WAF 真的就足够了吗?答案当然是否定的。...

盘点那些年我做过的东西

over 1 year ago

我是一个很容易焦虑的人,大部分焦虑都源自经济压力。 我也是一个很理想主义的人,始终妄想着能够做出一款为大家所认可的产品,随之产生睡后收入。 我还是一个很悲观的人,在做产品的???程中,随着不断的自我反思,会不断陷入:这个东西有人做了;这个东西不会有市场的;这个东西不是一个人能做出来的。等等类似的自我怀疑中。 这些年有不少想法,做了不少工作,但是都胎死腹中,分享出来供大家消遣。我的 Github 签名是 “废材程序员”,真是太贴切了。 treehole-jekyll (一个有点想法的博客系统) 一个包含完整前后端功能的博客系统,使用 Java 开发,采用...

专注了吗,一款因微信认证费降价而产生的产品

over 1 year ago

最近偶然在论坛看到有人说微信认证费用降价,由以前的 300 块降低至 30 块,于是赶紧去做了认证。 既然已经做了认证,那么名额空着视乎不太好,于是便产生了做一个产品出来挂着的念头。而说到产品,就不得不提研发人员三板斧,导航、记账和代办。 索性就在这里找个角度切入,从代办的角度切入,从另外的角度做了这款叫 《专注了吗》 的任务跟踪小程序。 目前小程序已经上架,主页是: https://miniapp.fascloud.org/ 主要功能...

探索 Kafka 消息丢失的问题和解决方案

over 1 year ago

在构建基于 Kafka 的消息处理系统中,消息丢失是一个需要深入研究的重要问题。强大的系统不仅依赖于其功能,而且依赖于其可靠性。因此,理解消息丢失的原因,并采取必要的措施确保消息的一致性和完整性,是构建高效可靠消息系统的重要组成部分。本文将详细分析 Kafka 消息丢失的主要原因,并提供一系列策略来解决这个问题。 消息丢失的原因 生产者端问题: 在 Kafka 系统中,生产者负责发送消息。然而,由于网络故障或其他未知问题,生产者可能无法成功发送消息到 Kafka 服务器。...