1、 引言Java异步编程极大的节省了主程序执行时间,提升了计算资源利用效率,是Java高级工程师的必备技能之一。本文围绕什么是异步,异步解决了什么问题,怎么异步编程来展开。1.1 什么是异步编程在解释异步编程之前,我们先来看同步编程的定义。同步编程,即是一种典型的请求-响应模型,当请求调用一个函数或方法后,需等待其响应返回,然后执行后续代码。同步的最大特征 …
abort函数
嘿,各位代码圈的小伙伴们!今天咱们来聊聊 Rust 里一个特靠谱的 "安全卫士"——catch_unwind。如果你写 Rust 时总被 "panic" 搞得头皮发麻,觉得程序一崩溃就像多米诺骨牌一样停不下来,那这篇文章你可算找对地方了!先搞懂:panic 是啥?catch_unwind 又能干啥?在 Rust 里,panic …
从 2014 年 Vue 诞生到今天,Axios 几乎成了前端工程里的“钉子户”——稳定、简单、易上手,但十年过去,它依旧是 “裸 HTTP 客户端”。想要分页、缓存、并行依赖请求、自动重试、请求取消、乐观更新?对不起,全部自己手搓。现在,随着 Hooks 思想 在前端的普及,Vue3 终于有了属于自己的 “一站式数据层”——TanStack Query V …
在高并发场景下,Web 服务器的性能直接决定系统承载能力。Tomcat 作为 Spring Boot 默认容器,虽稳定却在极致并发下存在性能瓶颈,而 Grizzly 作为轻量级高性能 NIO 框架,凭借非阻塞 IO 模型和低资源消耗,成为突破并发瓶颈的优选方案。本文将从原理到实战,详解 Spring Boot 集成 Grizzly 的完整流程,助你轻松打造高 …
引言一、为什么需要线程池?二、Executor框架总览三、核心线程池实现四、ThreadPoolExecutor:灵魂所在五、Future与异步结果获取六、总结与最佳实践互动环节引言在Java并发编程的世界里,"为每个任务创建一个新线程"是一种简单却危险的做法。线程的创建和销毁开销巨大,无节制的线程创建会耗尽系统资源,导致应用崩溃。如何高效地 …
一、进程的底层真相:从程序到动态实体进程是 Linux 系统的基石,理解其本质需要突破三个认知盲区:进程 vs 程序的本质区别程序是静态二进制文件(如gcc a.c -o a.out生成的可执行文件),进程是程序的动态执行实例每个进程拥有独立的虚拟地址空间(0-4GB),通过页表映射到物理内存进程控制块(PCB)存储进程状态信息,包括 PID、PPID、寄存 …
线程池到底是什么神仙操作在开发中,为了提升效率,我们需要将一些业务采用多线程的方式去执行,但是,如果每次异步操作或者多线程操作都需要新创建一个线程,使用完毕后,线程再被销毁,这样的话,对系统造成一些额外的开销。在处理过程中到底由多线程处理了多少个任务,以及每个线程的开销无法统计和管理,所以咱们需要一个线程池机制来管理这些内容。线程池的概念和连接池类似,都是在 …
还在为内存泄漏、缓冲区溢出头疼?Google开源的Sanitizer工具集让你的CC++程序固若金汤!在CC++开发中,内存相关的bug是最让人头疼的问题:缓冲区溢出:程序崩溃,安全漏洞内存泄漏:程序越跑越慢,最终崩溃线程竞争:偶发性bug,难以复现野指针:神秘崩溃,无从下手今天就来介绍Google开源的调试利器——Sanitizer工具集,让这些隐藏的bu …
在 React 开发中,有时候会听到“副作用”这个词。特别是用到 useEffect 这个 Hook 的时候,官方就明确说它是用来处理副作用的。那什么是副作用?为什么我们要专门管控它?今天就聊聊 React 中的组件副作用。 什么是“副作用”?其实“副作用”并不是 React 特有的东西,在原生 JS 里也很常见。副作用的”反义词“是纯函数。纯函数的意思是: …
故事背景昨天下午被问到一个问题:oss 对象存储里边由于有些图片被共享,导致上传了很多的重复的图片或者文件,有没有办法在上传之前判断一下这个文件是否被上传过,如果上传过直接去后端拿存储的地址行不行。当时被问到的时候,第一反应是根据file的文件类型名称和大小生成一个MD5,后来被否决了,假如文件改了名字的话,这个文件还是会被上传上去然后通过一天的调研,学习了 …
