
tech-review
文章平均质量分 91
youyouiknow
这个作者很懒,什么都没留下…
展开
-
文件写入磁盘全流程
文件写入磁盘全流程原创 2024-12-14 22:06:05 · 781 阅读 · 0 评论 -
raft4j:练手之作
raft for Java原创 2024-12-14 16:38:35 · 722 阅读 · 0 评论 -
如何用Netty实现一个负载均衡组件
码农设计原创 2024-12-14 01:07:30 · 639 阅读 · 0 评论 -
密码学及其应用:初探
密码学原创 2024-12-14 00:29:54 · 575 阅读 · 0 评论 -
Java 内存分析及 Linux 相关指令
Java内存分析及linux相关指令原创 2024-12-14 00:29:10 · 691 阅读 · 0 评论 -
容器化技术:初探
docker的把玩原创 2024-12-13 23:56:11 · 499 阅读 · 0 评论 -
K8s:大规模容器化技术
k8s:云原生时代的弄潮儿原创 2024-12-13 23:51:46 · 753 阅读 · 0 评论 -
GORM简洁之道
gorm简洁之道原创 2024-12-13 23:39:54 · 858 阅读 · 0 评论 -
Key Shared Nack (Negative Acknowledgement)机制
pulsar issue原创 2024-12-08 00:05:03 · 290 阅读 · 0 评论 -
Go 语言 Web 开发:路由篇
Go 语言 Web 开发:路由篇原创 2024-12-03 01:06:55 · 871 阅读 · 0 评论 -
数据密集型应用中的数据库选型与存储引擎解析:科普文
数据密集型应用中的数据库选型与存储引擎解析:科普文原创 2024-11-29 22:46:14 · 1019 阅读 · 0 评论 -
深入解析Java日志框架:Logback、Log4j 2与SLF4J的区别与使用指南
深入解析Java日志框架:Logback、Log4j 2与SLF4J的区别与使用指南原创 2024-11-29 22:43:05 · 1309 阅读 · 0 评论 -
高性能调度系统实现:preview
调度系统本质上是**时间驱动的任务分发器**。其核心挑战包括:1. **高精度**:任务触发时间需要尽量精准,尤其在毫秒级甚至更高精度需求的场景下。2. **高可用**:系统需要具备容灾能力,确保任务不会遗漏或重复。3. **高并发**:支持大规模任务的并发调度,例如推送系统每天可能需要触发数亿条消息。4. **弹性与可扩展性**:在任务量波动时,能够动态扩展,避免资源浪费或性能瓶颈。原创 2024-11-23 20:50:11 · 774 阅读 · 0 评论 -
Web 开发必知必会:WebP、JPG、PNG 和 SVG
在现代 Web 开发中,选择合适的图像格式对于提升网站性能和优化用户体验至关重要。**WebP**、**JPG**、**PNG** 和 **SVG** 是常用的图像格式,它们各自有不同的特点和适用场景。以下是对这些图像格式的详细解析。原创 2024-11-23 16:34:41 · 3472 阅读 · 0 评论 -
深入解析 Tengine:高性能 Web 服务器与反向代理的企业级应用
### **Tengine 的目的**Tengine 是由淘宝技术团队(现阿里巴巴)基于 Nginx 开发的一款高性能 Web 服务器和反向代理服务器。它的主要目的是在 Nginx 的基础上增强性能、扩展功能、提升稳定性,并为大规模、高并发的互联网应用提供更高效的解决方案。原创 2024-11-23 16:30:57 · 1520 阅读 · 0 评论 -
数百万容器的负载均衡:Uber 的动态子集化之旅
子集化是大规模分布式系统负载均衡中使用的一种常用技术。在这篇博文中,我们将简要介绍 Uber 当前的服务网格架构,自 2016 年以来,该架构一直在为 Uber 中数千个关键微服务提供支持。然后,我们将讨论在尝试扩展网格中的任务数量时面临的挑战,以及初始子集方法的问题。最后,我们将介绍我们如何提出实时动态子集解决方案及其在生产中的结果。原创 2024-11-22 23:48:07 · 1028 阅读 · 0 评论 -
2024PKU计算机学院推免上机考试
echo 'IHBrdeeahOS/neeglOS5n+Wwsei/memavuW6puS6hu+8jOeglOeptueUn+aenOeEtuaYr+aEiOadpeaEiOawtOS6hg=='| base64 --decode原创 2024-11-22 00:17:14 · 942 阅读 · 0 评论 -
手撕 LSM 树:从基础实现到优化策略的全面剖析与应用
手撕 LSM 树(Log-Structured Merge Tree)是一种将 LSM 树的核心思想和实现原理进行详细解释和手工编写的过程。LSM 树是用于高效写入和查询的存储结构,广泛应用于现代数据库系统(如 Cassandra、HBase、LevelDB 等)中。它通过分层设计,将写入操作转化为顺序写入,从而提高写入效率,并通过定期合并操作来优化读取性能。原创 2024-11-21 22:20:55 · 1359 阅读 · 0 评论 -
20 个常用的 Linux 终端工具:全面监控系统资源,提升性能与效率
在 Linux 系统中,资源监控是系统管理员和开发者的重要任务。了解系统性能,识别瓶颈,确保服务器稳定运行,需要借助各种工具来实时监控 CPU、内存、磁盘、网络等资源的使用情况。以下是 20 个常用的终端工具,可以帮助你监控 Linux 系统的资源使用情况。原创 2024-11-21 22:12:06 · 995 阅读 · 0 评论 -
从 SSE 到 gRPC:提升 Uber 实时消息系统的性能与可扩展性
迁移到 gRPC 是一个复杂而深远的变化,本文已经对这一过程的动机、架构设计、技术挑战以及未来展望进行了详细的介绍。为了进一步扩展内容并达到所需的字数,我们可以更深入地探讨每个部分的细节,增加更多的技术背景、迁移中的具体实现、性能调优的策略以及对未来技术演进的期望等。原创 2024-11-21 21:07:45 · 946 阅读 · 0 评论 -
Java 21 虚拟线程死锁陷阱:Netflix 的一次排查实战
对于那些刚接触虚拟线程的人来说,它们被描述为“轻量级线程,可显著减少编写、维护和观察高吞吐量并发应用程序的工作量”。它们的强大之处在于,当阻塞操作发生时,它们能够通过 continuation 自动暂停和恢复,从而释放底层操作系统线程以重新用于其他操作。在适当的上下文中利用虚拟线程可以释放更高的性能。在本文中,我们将讨论在 Java 21 上部署虚拟线程的道路上遇到的一种特殊情况。原创 2024-11-21 00:18:00 · 1086 阅读 · 0 评论 -
Netflix 的 Key-Value 抽象:大规模数据访问的灵活性和效率
随着时间的推移,随着新的键值数据库的引入和服务所有者推出新的使用案例,我们遇到了数据存储滥用的许多挑战。首先,开发人员很难在这种跨多个商店的复杂全球部署中考虑一致性、持久性和性能。其次,开发人员必须不断重新学习新的数据建模实践和常见但关键的数据访问模式。这些挑战包括尾部延迟和幂等性、管理具有许多行的“宽”分区、处理单个大型“胖”列以及响应缓慢的分页。此外,与多个原生数据库 API(不断发展的 API,有时会引入向后不兼容的更改)的紧密耦合,导致组织范围内的工程工作来维护和优化我们微服务的数据访问。原创 2024-11-20 23:43:56 · 707 阅读 · 0 评论 -
构建高性能时序数据平台:Netflix 的 TimeSeries 设计与实践
随着 Netflix 不断扩展和多样化,进入视频点播和游戏等各个领域,以毫秒级访问延迟摄取和存储大量时态数据(通常达到 PB)的能力变得越来越重要。在之前的博客文章中,我们介绍了键值数据抽象层和数据网关平台,这两者都是 Netflix 数据架构不可或缺的一部分。Key-Value Abstraction 为存储和访问结构化 Key-Value 数据提供了灵活、可扩展的解决方案,而 Data Gateway Platform 则为保护、配置和部署数据层提供了必要的基础设施。原创 2024-11-20 22:15:46 · 702 阅读 · 0 评论 -
深入解析 Envoy 追踪机制:原理、配置与代码实践
在当今的云原生架构中,分布式系统已成为主流,但随之而来的是系统复杂性和可观测性挑战。为了有效管理和监控这些复杂的微服务架构,分布式追踪技术显得尤为重要。Envoy 代理作为服务网格的数据平面,不仅在流量管理、安全性和可扩展性方面表现出色,还提供了强大的可观测性功能,特别是其分布式追踪能力。本文将深入探讨 Envoy 代理如何处理用户请求,实现分布式追踪,并与追踪系统集成,最终提升应用的可观测性。通过详细的配置示例和代码解析,我们将展示 Envoy 在分布式追踪中的关键角色和机制,帮助读者更好地理解和应用原创 2024-11-19 22:20:42 · 1220 阅读 · 0 评论 -
高效的 I/O 并发处理:双缓冲与 Exchanger 的使用
在高性能并发编程中,高效地处理 I/O 操作至关重要。**双缓冲**(Double Buffering)是一种通过使用两个缓冲区来提高 I/O 操作效率的并发技术。一个 `goroutine` 使用其中一个缓冲区进行写操作,另一个 `goroutine` 使用另一个缓冲区进行读操作,然后交换缓冲区。这样,两个 `goroutine` 可以并发执行,减少了它们之间的等待和阻塞,从而提高了程序的吞吐量。本文将介绍如何在 Go 中实现双缓冲技术,并提供一个类似于 Java 中 `java.util.conc原创 2024-11-18 23:17:50 · 663 阅读 · 0 评论 -
Redis 与 SQLite 的完美结合:深入探究 Redka 项目
随着数据存储和访问需求的不断增长,不同类型的数据库在各自的领域中发挥着重要的作用。Redis 以其高性能的内存数据库特性,广泛应用于需要快速响应的场景;SQLite 则以其轻量级的嵌入式关系数据库,被广泛应用于移动设备和小型应用中。那么,如果将两者的优点结合起来,会产生怎样的火花呢? [**Redka**](https://github.com/nalgeon/redka)就是这样一个旨在利用 SQLite 重新实现 Redis 优秀部分的项目,同时保持与 Redis API 的兼容性。原创 2024-11-18 22:51:47 · 1088 阅读 · 0 评论 -
深入解析 Go 的秘密数据结构:CacheLinePad 的精细化优化
深入解析 Go 的秘密数据结构:CacheLinePad 的精细化优化原创 2024-11-18 22:36:08 · 767 阅读 · 0 评论 -
Go Web 程序部署的百种花样:让上线丝滑如德芙
Go Web 程序部署的百种花样:让上线丝滑如德芙原创 2024-11-18 22:32:10 · 987 阅读 · 0 评论 -
从零搭建 Go kit 微服务:Consul 服务发现和负载均衡指南
深入理解 Go kit 服务发现:Consul 集成最佳实践Go kit 中的 Endpointer、Instancer 和 Balancer:Consul 服务发现解析原创 2024-11-18 22:12:01 · 839 阅读 · 0 评论 -
复杂查询,MyBatis 完胜 Hibernate?性能测试揭晓答案
电商场景下 Hibernate 和 MyBatis 性能对比:百万用户级订单查询海量数据下的 ORM 框架选择:Hibernate vs. MyBatis 性能实测复杂查询,MyBatis 完胜 Hibernate?性能测试揭晓答案别再用错 ORM 框架!高并发场景下 MyBatis 性能优势明显原创 2024-11-18 21:47:11 · 1220 阅读 · 0 评论 -
微服务架构的“显微镜”:Jaeger 分布式追踪全面解析与最佳实践
在微服务架构盛行的今天,应用程序的复杂性和服务交互的深度不断增加,如何快速定位性能瓶颈、追踪请求流、分析分布式系统中的问题,成为开发者和运维人员面临的重要挑战。**Jaeger**,作为一款开源的分布式追踪神器,正是应对这一挑战的理想工具。原创 2024-11-18 21:23:12 · 702 阅读 · 0 评论 -
全面揭秘 Go 语言超强 ORM 框架 Ent:高效构建数据库的终极武器!
全面揭秘 Go 语言超强 ORM 框架 Ent:高效构建数据库的终极武器!原创 2024-11-18 21:16:15 · 1559 阅读 · 0 评论 -
sql慢查询之深分页优化实战:从3秒到0.1秒的优化之路
sql慢查询之深分页优化实战:从3秒到0.1秒的优化之路原创 2024-11-15 22:51:42 · 1085 阅读 · 0 评论 -
解锁Go并发性能:Ants库深度解析
在 Go 语言中,`ants` 是一个高性能的协程池(goroutine pool)库,能够帮助开发者更高效地管理和复用 goroutines,从而减少因大量 goroutines 创建和销毁所带来的性能开销。`ants` 是由 [Panjf2000](https://github.com/panjf2000) 开发的开源项目,托管在 GitHub 上,地址是:[ants GitHub](https://github.com/panjf2000/ants)。原创 2024-11-15 21:58:23 · 1139 阅读 · 0 评论 -
时间轮算法:定时任务之基
时间轮是一种高效的数据结构,专门用于管理定时任务,特别适用于间隔时间比较规则的任务。它通过将时间划分为多个槽,每个槽代表一个固定的时间段,从而实现定时任务的调度。下面我们详细探讨时间轮的基本原理及其在高精度长时间调度中的应用和局限性。原创 2024-11-11 23:07:42 · 1049 阅读 · 0 评论 -
记录一次真实面试:内容顶不顶你们说了算
记录一次真实面试:内容顶不顶你们说了算原创 2024-11-11 22:45:24 · 883 阅读 · 0 评论 -
LRU缓存算法调优:从经典到现代的演进之路
在计算机科学的浩瀚世界中,缓存机制犹如一位不知疲倦的幕后英雄,默默支撑着各种应用程序的高效运行。作为缓存淘汰策略的经典代表,LRU(最近最少使用)算法以其简洁高效的特性被广泛应用。然而,面对日益增长的数据量和愈发复杂的应用场景,传统的LRU算法也逐渐显露出其局限性。你是否曾思考过,如何进一步提升LRU算法的性能?如何让缓存更精准地预测未来的访问模式?如何在有限的内存空间内最大化缓存命中率?本文将带你深入探索LRU机制的调优之路,揭开那些隐藏在经典算法背后的“花样玩法”。我们将从基础的LRU算法原理出发原创 2024-11-11 22:38:55 · 1013 阅读 · 0 评论 -
设计之道:spring-boot-starter自动配置
springboot的设计解决了spring的一些问题,比如自动配置,打包等,说spring-boot-starter自动配置之前,一定要先回顾一次springboot的自动配置原理,它们之间的联系可谓十分紧密。原创 2024-11-11 22:25:13 · 1271 阅读 · 0 评论 -
Seata 的事务处理方案:分布式事务全解
前言在分布式系统中,事务管理一直是一个复杂而关键的问题。传统的单体架构可以依赖于本地事务来保证数据的一致性,但在微服务架构中,每个服务可能分布在不同的节点上,如何保证跨服务、跨数据库的事务一致性成为了一大挑战。Seata(Simple Extensible Autonomous Transaction Architecture)作为一款开源的分布式事务解决方案,正是为了解决这一问题而诞生的。Seata 提供了简单、高效、强一致性的分布式事务处理机制,通过其独特的事务协调方式,帮助开发者在分原创 2024-11-11 22:21:27 · 920 阅读 · 0 评论 -
LRU机制调优:原来LRU都能玩出花
在现代计算机系统中,缓存管理是提升性能的关键技术之一,而LRU(Least Recently Used,最近最少使用)算法作为缓存替换策略中的经典算法,广泛应用于各类软件系统中。然而,随着应用场景的复杂化和数据规模的扩大,单纯的LRU算法往往无法满足所有需求。通过对LRU机制进行调优,可以显著提升系统的性能和资源利用效率。本篇文章将深入探讨LRU机制的调优方法,展示如何通过多种技术手段和策略改进传统的LRU算法,以适应不同的应用场景和需求。你将看到,原来LRU也能玩出花样,通过创新和优化,使其在各种复原创 2024-11-11 22:17:07 · 925 阅读 · 0 评论