提升系统吞吐量,详解JDK21虚拟线程,炸裂 环境:JDK21 1. 虚拟线程简介 虚拟线程是轻量级的线程,可以减少编写、维护和调试高吞吐量并发应用程序的工作量。线程是可以调度的最小处理单元。它与其他类似单元并发运行,而且在很大程度上是独立运行的。它是java.lang.Thread的一个实例。线程有两种,平台线程和虚拟线程。 2. 什么是平台线程 平台线程被实现为操作系统(OS)线程的薄包装器。平台线程在其底层操作系统线程上运行Java代码 开发运维 2024-06-06 大白菜程序猿
终于搞懂了!原来Vue3中Template使用Ref无需.Value是因为这个 前言 众所周知,vue3的template中使用ref变量无需使用.value。还可以在事件处理器中进行赋值操作时,无需使用.value就可以直接修改ref变量的值,比如:change msg。你猜vue是在编译时就已经在代码中生成了.value,还是运行时使用Proxy拦截的方式去实现的呢?注:本文中使用的vue版本为3.4.19。 看个demo 看个简单的demo,代码如下: {{ msg } 开发运维 2024-06-06 捡田螺的小男孩
前端构建工具大盘点 今天来盘点一下前端构建工具。 图片 Bun Bun 是一个爆火的 JavaScript 运行时,它不仅仅局限于运行时,更是一个全能的工具集,集成了包管理、测试、构建和转译等多项功能。作为构建工具,Bun 的速度表现尤为出色,其性能远超其他主流构建工具。 受到 edbuild 的启发,Bun 不仅继承了其优秀的设计理念,还提供了与之兼容的插件API,确保了生态的延续性和扩展性。另外,Bun 引入了J 开发运维 2024-06-05 大树
离线部署 Jenkins 填坑指南 本文目录如下: 一、背景 在实际项目中,通过这些实践,目前已经稳定运行了两个月,现在又有了一个新项目也是需要用 Jenkins 来实现自动化部署,但新项目的部署环境是 Linux 离线环境,所以我需要在离线环境上再部署一遍。 因为部署 Jenkins 的机器上没有网络,所以部署的过程中遇到了很多坑,本篇文章也是为了记录期间遇到的坑,以及解决方案。 二、依赖项 部署后端项目时需要依赖 Java、Ma 开发运维 2024-06-05 张二河
解决消息队列中的关键问题:消息丢失、顺序消费、消息积压与重复消费 在分布式系统中,消息队列扮演着至关重要的角色,它解耦了系统组件,提高了系统的可扩展性和可靠性。然而,在使用消息队列时,我们经常会遇到一些问题,如消息丢失、顺序消费、消息积压和重复消费。本文将深入探讨这些问题的原因,并提供相应的解决方案。 1. 消息丢失 消息丢失可能发生在生产者、消息队列或消费者中的任何一个环节。为了防止消息丢失,我们可以采取以下措施: 生产者确认机制:确保消息已成功发送到队列。许 开发运维 2024-06-05 LOVEHL^ˇ^
微服务下认证授权框架的探讨 在微服务架构中,服务的认证与授权是保障系统安全的重要环节。随着微服务架构的普及,越来越多的企业开始将其应用拆分为多个小型服务,以提高系统的可扩展性、灵活性和可维护性。然而,这种分布式架构也带来了新的安全挑战,特别是在认证和授权方面。本文将探讨微服务下的认证授权框架,以期为读者提供一些实用的指导和建议。 一、微服务认证授权的挑战 在微服务架构中,每个服务都是独立的,并且可以通过网络进行通信。这种分布 开发运维 2024-06-05 爱可生开源社区
面试官:说说延迟任务的时间轮调度算法? 本文继续讨论 Netty 相关的面试题,今天咱们来看一道 Netty 中的高频面试题:说说 Netty 延迟任务的时间轮调度算法? Netty 框架是以性能著称的框架,因此在它的框架中使用了大量提升性能的机制,例如 Netty 用于实现延迟队列的时间轮调度算法就是一个典型的例子。使用时间轮算法可以实现海量任务新增和取消任务的时间度为 O(1),那么什么是时间轮调度算法呢?接下来我们一起来看。 1. 开发运维 2024-06-05 醒在深海的猫
快看,我的代码能“自己说话”! 开发人员什么时候最崩溃? 别人我不知道,就我而言,要是我耗费了几个小时来研究代码,试图破译它的目的,却迟迟不得门路,真是恨不得找到写代码的那个家伙,让他回炉重造。 今天我们将在这篇文章中探讨如何编写自文档化的代码,让代码自己会说话。 什么是自文档化的代码? 自文档化的代码是以清晰、富有表现力的方式编写的代码,无需大量的注释和外部文档,就能让人理解代码的目的和功能。 自文档化代码的特点: 可读性:代 开发运维 2024-06-05 宇宙之一粟
被严重低估!React 19 又是一次开发方式的变革,useEffect 将会逐渐退出历史舞台 目前写 React 19 的文章已经有很多很多了,但是,写到点子上的并不多。包括官方文档,只是简单的罗列出了它新增了一些 hook,一些特性,却并没有进一步说明这些 hook 背后所代表的含义,它们的最佳实践是什么。 以至于,在这个时间节点,期待 React 19 的人也并不是很多。 但是,我要告诉大家的是,我们都严重低估了 React 19。 beta 版在 npm 上可用之后,我就创建了一个项 开发运维 2024-06-05 泡泡
Axios Node 端请求是如何实现的? 本文我们将讨论 axios 的 Node 环境实现。我们都知道使用 axios 可以让我们在浏览器和 Node 端获得一致的使用体验。这部分是通过适配器模式来实现的。 axios 内置了 2 个适配器(截止到 v1.6.8 版本)[8]:xhr.js 和 http.js。 图片 顾名思义,xhr.js 是针对浏览器环境提供的 XMLHttpRequest 封装的;http.js 则是针对 Node 开发运维 2024-06-05 向阳逐梦
用户被盗号了!为什么前端要被骂? 密码强度 平时我们在浏览各种网站和 APP 的时候,都接触过密码这个东西! 密码设置的好不好,关乎到你的账号安全性,越复杂的密码越安全,所以密码强度很重要,而我们在做注册功能的时候,也有责任去帮协助用户设置一个高密码强度的密码! 那么密码强度怎么计算呢? 且应该如何实现以下这样的密码强度动画展示效果呢? 图片 思路 其实思路很简单: 1、监听密码输入框的变化。 2、密码变化时,获取密码文本,并通过 开发运维 2024-06-05 大树
成功实施 Data Mesh 的十条指导建议 作者 | Kelsey Beyer 自2019年 Thoughtworks 员工 Zhamak Dehghani 首次提出 Data Mesh 概念以来,Thoughtworks 便开始尝试在全球范围内与客户共同实施 Data Mesh。 以下是根据我们的经验总结的十项建议。对于每项建议,我们都指出了在实施过程中观察到的反模式、我们推荐的替代方法及其原因。这些建议将按照组织中的层级顺序从高到低列出 开发运维 2024-06-05 穿过生命散发芬芳
Vite 是什么(并且为什么如此流行)? 在Web开发的大千世界里,想要不听到关于Vite[1]的讨论,那可真是难上加难。 自2020年4月发布以来,Vite的人气就像坐了火箭一样直线上升。截至写这篇文章的时候,这个项目在GitHub上已经获得了超过64k的star,并且在每周的npm下载量上超过了1200万,现在它支持着大多数开源框架,比如Nuxt[2]、SvelteKit[3]、Astro[4]、SolidStart[5]和Remix 开发运维 2024-06-05 大树
Python 实现命令模式、中介者模式和解释器模式 今天介绍三种行为型设计模式:命令模式、中介者模式和解释器模式。 1.命令模式 它将请求封装成一个对象,从而使得可以用不同的请求对客户进行参数化。命令模式也支持撤销操作。 (1) 命令模式的结构 命令模式的核心是命令对象和接收者对象之间的关系。命令对象封装了一个特定的请求,包含了执行该请求的方法。接收者对象负责实际执行请求。 以下是命令模式的基本结构: # 命令对象接口 class Command: 开发运维 2024-06-05 LOVEHL^ˇ^
.NET 中的数据交互:生成和读取YAML文件 YAML(YAML Ain't Markup Language)是一种易于阅读的数据序列化格式,常被用于配置文件、数据交换等场景。在.NET环境中,处理YAML文件通常需要使用第三方库,因为.NET Framework和.NET Core并未内置对YAML的原生支持。本文将介绍如何在.NET中使用YamlDotNet库来生成和读取YAML文件。 1. 安装YamlDotNet库 首先,你需要在你的 开发运维 2024-06-05 剑圣无痕
为什么要限流?常见的限流算法有哪些? 实际开发中,当业务流量过大时,为了保护下游服务,我们通常会做一些预防性的工作,今天我们就一起来聊聊限流! 一、为什么需要限流? 在实际应用中,每个系统或者服务都有其处理能力的极限(瓶颈),即便是微服务中有集群和分布式的夹持,也不能保证系统能应对任何大小的流量,因此,系统为了自保,需要对处理能力范围以外的流量进行“特殊照顾”(比如,丢弃请求或者延迟处理),从而避免系统卡死、崩溃或不可用等情况,保证系 开发运维 2024-06-05 Escape
玩转Redis!非常强大的Redisson分布式集合,少写60%代码 环境:SpringBoot2.7.18+Redis6.2.6+Redisson3.18.0 1. 简介 Redisson 是 Redis Java 客户端和实时数据平台。它为使用 Redis 提供了更方便、更简单的方法。Redisson 对象提供了关注点分离功能,可让你专注于数据建模和应用逻辑。 在Java中,为我们提供了丰富的集合类,如List、Set、Map等,这些集合类在单机应用或单个JVM 开发运维 2024-06-05 张二河
Python 中 20 个鲜为人知的字符串函数 对于Python初学者而言,掌握字符串操作是编程之旅中的重要一步。Python的字符串功能强大而全面,但有些宝藏函数往往被忽略。今天,让我们一起探索这20个鲜为人知的字符串函数,它们将帮助你提升代码的效率与优雅度。 1. capitalize() 功能 : 将字符串的第一个字符转换为大写。 示例 : text = "hello world" capitalized = text.capitaliz 开发运维 2024-06-05 竹子爱熊猫
别背八股文了,WebSocket 是什么,我劝你花几分钟让面试官惊艳! 前言 作为前端工程师,我们几乎每天都在使用 ajax / fetch 请求与后端进行数据交互,这种基于请求-响应的通讯模式,我们再熟练不过了,无论是C端产品或者是B端产品,都离不开这种通讯模式。但是像即时通讯IM类场景,通常不会选择这种“你来我回”的通信模式,而是会选择 WebSocket 这类的全双工通信模式。 本文会带您全方位去了解一下 WebSocket 的本质,方便您搞清楚“Connect 开发运维 2024-06-05 法医
sync.WaitGroup和sync.Once的爱恨情仇 今天,我们将继续探讨Go语言中的两个重要的同步工具:sync.WaitGroup 和 sync.Once。 sync.WaitGroup sync.WaitGroup 是Go语言中的一种计数信号量,用于等待一组 goroutine 完成。它常用于等待一组并发任务全部完成后再继续执行。 使用方法 声明一个 sync.WaitGroup 类型的变量。 在每个 goroutine 启动之前调用 Add 开发运维 2024-06-05 LOVEHL^ˇ^