
精通高并发系列
文章平均质量分 88
深入分析Java中的多线程和高并发开发
冰 河
这个作者很懒,什么都没留下…
展开
-
【高并发】导致并发编程频繁出问题的“幕后黑手”
工作了3年的小菜同学,平时在公司只是做些CRUD的常规工作,这次,出去面试被面试官一顿虐啊!尤其是并发编程的知识简直就是被吊打啊。小菜心有不甘,回来找自己工作经验非常丰富的朋友大冰来帮助自己提升并发编程的知识,于是便有了接下来的一系列小菜学并发的文章。原创 2025-04-28 00:49:19 · 352 阅读 · 0 评论 -
3个月面试近300人,发现大部分人回答不出来这道题的重点!
在Java中提供了synchronized关键字来保证只有一个线程能够访问同步代码块。既然已经提供了synchronized关键字,那为何在Java的SDK包中,还会提供Lock接口呢?这是不是重复造轮子,多此一举呢?今天,我们就一起来探讨下这个问题。原创 2024-10-14 01:20:04 · 945 阅读 · 0 评论 -
造轮子:大厂为何都要自研API网关?
又到了给大家分享新项目的时刻了。当业务发展到一定程度时,会对系统进行分布式或微服务的改造,如果不对改造后的系统进行精心的设计,就会导致对外暴露大量的API,难以统一管理和维护,一种简单的方式就是引入API网关来对这些日益剧增的API进行统一管理和维护。原创 2024-10-10 08:46:41 · 1363 阅读 · 0 评论 -
14张图深度解密大厂秒杀系统库存设计,不是所有的库存都能支持高并发!
相信很多小伙伴都在大厂的秒杀大促中抢购过商品,那大家有没有想过这样一个问题:在秒杀这种高并发大流量的场景下,商品的库存是如何设计呢?怎么才能抗住瞬时高并发的流量呢?也有不少小伙伴出去面试时,简历上写了秒杀系统,此时面试官通常也会问这样一个问题:你们的秒杀系统库存是怎么设计的呢?要知道,秒杀系统的库存如果只是简单的按照普通商品的库存进行设计,是根本撑不住瞬时的高并发流量的。原创 2024-09-24 11:07:32 · 1019 阅读 · 0 评论 -
《高性能Polaris网关》开篇:我要手把手教你搭建并研发一套抗瞬时百万流量的高性能网关项目
那这次又是怎么样的一个高并发、高性能项目呢?没错,这次就是大家期待已久的高性能Polaris网关项目。所以,在今后一段时间内,冰河就带着大家从零开始,一步步搭建并研发一套可用于真实生产环境,支持瞬时百万流量的企业级、分布式、高性能网关项目。原创 2024-07-01 08:47:38 · 1264 阅读 · 0 评论 -
又一个前后端分离的整合了OpenAI大模型的高并发、高性能和可扩展的项目完结了,写到简历上,嘎嘎强!
经过四个多月的坚持,《分布式IM即时通讯系统》终于完结了,也感谢大家这四个多月以来的坚持和陪伴,也相信大家在《分布式IM即时通讯系统》专栏中,学到了不少知识和技术。接下来,我们就一起对《分布式IM即时通讯系统》专栏做个总结。原创 2024-06-23 13:09:34 · 1181 阅读 · 3 评论 -
原来ReadWriteLock也能开发高性能缓存,看完我也能和面试官好好聊聊了!
在实际工作中,有一种非常普遍的并发场景:那就是读多写少的场景。在这种场景下,为了优化程序的性能,我们经常使用缓存来提高应用的访问性能。因为缓存非常适合使用在读多写少的场景中。而在并发场景中,Java SDK中提供了ReadWriteLock来满足读多写少的场景。本文我们就来说说使用ReadWriteLock如何实现一个通用的缓存中心。原创 2024-06-10 07:52:26 · 1074 阅读 · 0 评论 -
互联网大厂的缓存策略:抵抗超高并发的秘密武器,已开源!
缓存不仅仅可以用来存储热点数据,提升热点数据的读性能,还是业务系统中抗高并发、大流量的利器。以秒杀系统为例,采用本地缓存+分布式缓存的混合型缓存方案时,如果整个秒杀系统前置的流量管控、流量清洗和限流等是秒杀系统流量洪峰的第一道防线,则本地缓存就是抗流量洪峰的第二道防线,而分布式缓存就是第三道防线,经过层层流量过滤,最终进入数据库的流量就比较可控了。原创 2024-06-07 08:46:29 · 918 阅读 · 1 评论 -
并发编程踩坑实录二:并发容器踩坑总结!!
在之前的《并发编程踩坑实录一:盘点JDK中同步容器的两大坑!!)》一文中,我们主要一起学习了JDK中同步容器的两个坑,一个是在使用同步容器时可能会出现 竞态条件 的问题,一个是在使用同步容器时用 迭代器遍历容器 可能会踩坑原创 2024-06-05 01:55:35 · 827 阅读 · 0 评论 -
高并发场景下如何优化服务器的性能?
最近,有小伙伴在群里提问:Linux系统怎么设置tcp_nodelay参数?也有小伙伴说问我。那今天,我们就来根据这个问题来聊聊在高并发场景下如何优化服务器的性能这个话题。原创 2024-06-02 01:01:57 · 941 阅读 · 0 评论 -
10分钟搞懂各种内存溢出案例!!(含完整源码,建议收藏)
作为程序员,多多少少都会遇到一些内存溢出的场景,如果你还没遇到,说明你工作的年限可能比较短,或者你根本就是个假程序员!哈哈,开个玩笑。今天,我们就以Java代码的方式来列举几个典型的内存溢出案例,希望大家在日常工作中,尽量避免写这些low水平的代码。小伙伴们点赞,收藏,评论,走起呀原创 2024-05-29 02:13:47 · 761 阅读 · 0 评论 -
【高并发】Redis如何助力高并发秒杀系统,看完这篇我彻底懂了
在电商领域,存在着典型的秒杀业务场景,那何谓秒杀场景呢。简单的来说就是一件商品的购买人数远远大于这件商品的库存,而且这件商品在很短的时间内就会被抢购一空。比如每年的618、双11大促,小米新品促销等业务场景,就是典型的秒杀业务场景。原创 2024-05-24 01:32:15 · 601 阅读 · 0 评论 -
高并发场景到底是先更新数据库还是先更新缓存?
随着互联网的高速发展,当今时代已然从IT时代进入到DT时代。互联网系统架构也已经由最初的单体架构转变为分布式、微服务架构模式。从数据体量上来看,各系统存储的数据量越来越大,数据的查询性能越来越低。此时,就需要我们不断的进行优化,一种常用的优化手段就是引入缓存。而引入缓存后,我们在向数据库插入数据时,到底是先更新数据库还是先更新缓存呢?原创 2024-05-12 22:25:39 · 895 阅读 · 0 评论 -
又多了一个可以写到简历上的项目,嘎嘎强
分布式IM即时通讯系统本质上就是对线上聊天和用户的管理,针对聊天本身来说,最核心的需求就是:发送文字、图片、文件、语音、视频、消息缓存、消息存储、消息未读、已读、撤回,离线消息、历史消息、单聊、群聊,多端同步,以及其他一些需求。对用户管理来说,存在的需求包含:添加好友、查看还有列表、删除好友、查看好友信息、创建群聊、加入群聊、查看群成员信息、退出群聊、修改群昵称、拉人进群、踢人出群、解散群聊、填写群公告、修改群备注以及其他用户相关的需求等。原创 2024-03-18 09:12:56 · 915 阅读 · 1 评论 -
转前端了!!
没错,为了更好的设计和开发分布式IM即时通讯系统,也为了让大家能够直观的体验到分布式IM即时通讯系统的功能,冰河开始转战前端了。也就是说,整个项目从需求立项到产品设计,从架构设计到整体研发,从后端开发到前端实现,从功能测试到全链路压测,从性能调优到上线部署运维,咱统统都包了。原创 2024-02-26 13:02:46 · 1354 阅读 · 1 评论 -
自己手写了一套高性能分布式IM即时通讯系统,出去面试嘎嘎聊,都把面试官整不会了!
分布式IM即时通讯系统本质上就是对线上聊天和用户的管理,针对聊天本身来说,最核心的需求就是:发送文字、图片、文件、语音、视频、消息缓存、消息存储、消息未读、已读、撤回,离线消息、历史消息、单聊、群聊,多端同步,以及其他一些需求。对用户管理来说,存在的需求包含:添加好友、查看还有列表、删除好友、查看好友信息、创建群聊、加入群聊、查看群成员信息、退出群聊、修改群昵称、拉人进群、踢人出群、解散群聊、填写群公告、修改群备注以及其他用户相关的需求等。原创 2024-01-24 14:41:33 · 1986 阅读 · 0 评论 -
小伙伴们都说我卷,这不,冰河又出新书了!
小伙伴们都说我卷,这不,冰河又出了一本高并发相关的书籍,卷起来!原创 2023-12-13 10:38:06 · 681 阅读 · 1 评论 -
又一个涵盖前后端+DevOps+OpenAI大模型的高并发项目启动了
这次又是怎样的一个高并发项目呢?没错,这次就是大家期待已久的分布式IM即时通讯系统,在分布式IM即时通讯系统中,我们会实现:单聊、群聊、图片、文件、语音、视频、历史消息、消息已读、未读、添加好友、删除好友、创建群、加群、退出群、查看群成员、群公告、修改群备注等一系列完整的功能,更会实现对接OpenAI大模型服务,让你深度掌握对接OpenAI大模型服务的流程和落地实现。原创 2023-11-22 15:16:52 · 657 阅读 · 1 评论 -
五个月,秒杀,38个大的篇章,126+篇文章、视频、小册,150+源码分支,完美收官!
经过四个多月的坚持,《Seckill秒杀系统》终于接近尾声了,也感谢大家这四个多月以来的坚持和陪伴,也相信大家在《Seckill秒杀系统》专栏中,学到了不少知识和技术。接下来,我们就一起对《Seckill秒杀系统》专栏做个总结。原创 2023-09-18 08:35:31 · 452 阅读 · 1 评论 -
高考成绩都出来了,你的秒杀系统如何了?
高考成绩都出来了,咱的《Seckill秒杀系统》专栏如何了?今天给大家交个“期中作业”吧。原创 2023-06-30 11:09:09 · 449 阅读 · 0 评论 -
《Seckill秒杀系统》开篇:我要手把手教你搭建一套抗瞬时百万流量的秒杀系统
秒杀系统最大的几个挑战就是:巨大的瞬时流量,热点数据,刷子流量,商品超买和库存超卖问题,这次冰河会带你从方案、架构和代码等多个方面解决这些核心问题。跟冰河一起开启一段新的技术旅程,在接下来的一段时间内,我要手把手教你搭建并研发一套抗瞬时百万流量的秒杀系统,真正贴近大厂核心项目,为你的职业生涯保驾护航原创 2023-04-25 09:43:53 · 1182 阅读 · 1 评论 -
《深入理解高并发编程:JDK核心技术》-冰河新书上市
深入理解核心原理、案例实战和系统架构,再熟悉或精通JDK中提供的各种并发编程类库和线程池,还能自己手写线程池,这应该能超越大部分人吧?原创 2023-03-16 13:36:08 · 2408 阅读 · 19 评论 -
【高并发】SimpleDateFormat类到底为啥不是线程安全的?(附六种解决方案,建议收藏)
提起SimpleDateFormat类,想必做过Java开发的童鞋都不会感到陌生。没错,它就是Java中提供的日期时间的转化类。这里,为什么说SimpleDateFormat类有线程安全问题呢?有些小伙伴可能会提出疑问:我们生产环境上一直在使用SimpleDateFormat类来解析和格式化日期和时间类型的数据,一直都没有问题啊!我的回答是:没错,那是因为你们的系统达不到SimpleDateFormat类出现问题的并发量,也就是说你们的系统没啥负载!原创 2022-10-24 10:15:13 · 1056 阅读 · 4 评论 -
高并发之——深度解析ScheduledFutureTask类源码
JDK 1.5提供的ScheduledThreadPoolExecutor执行定时任务时,会将任务封装成ScheduledFutureTask对象。那么,ScheduledFutureTask对象有何特殊之处?今天,我们就一起来手撕ScheduledFutureTask类的源码,来深入理解ScheduledFutureTask类的细节。类的层级关系从ScheduledFutureTask类的定...原创 2020-03-01 00:04:19 · 4627 阅读 · 0 评论 -
【高并发】由InterruptedException异常引发的思考
当我们在调用Java对象的wait()方法或者线程的sleep()方法时,需要捕获并处理InterruptedException异常。如果我们对InterruptedException异常处理不当,则会发生我们意想不到的后果!原创 2022-09-16 14:47:57 · 1115 阅读 · 1 评论 -
一分钟了解什么是限流
在开发高并发系统时,有很多手段可以保护系统,如:缓存、降级和限流。缓存的目的是提升系统访问速度和增大系统处理能力。降级是当服务出问题或影响到核心流程的性能,需要暂时屏蔽掉,待高峰过去或者问题解决后再打开。有些场景不适合用缓存或降级,比如稀缺资源(秒杀、抢购)、写服务(评论、下单)、频繁的复杂查询(评论的最后几页)等,这些场景可以用限流限制并发/请求量。原创 2022-09-08 09:49:44 · 2676 阅读 · 4 评论 -
【高并发】别闹了,这样理解Java的内存模型才正确(八种操作+同步规则)
最近冰河不是又出版了一本《深入理解高并发编程:核心原理与案例实战》一书吗?很多小伙伴对于Java的内存模型还是不太了解,今天,我就用最简短的篇幅结合八种操作和同步规则给大家介绍下到底什么是Java的内存模型。...原创 2022-08-01 09:43:00 · 1145 阅读 · 2 评论 -
面试必问 | 一个线程从创建到消亡要经历哪些阶段?
今天,我们就结合 **操作系统线程和编程语言线程** 再次深入探讨线程的生命周期问题,线程的生命周期其实没有我们想象的那么简单!!理解线程的生命周期本质上理解了生命周期中各个节点的状态转换机制就可以了。接下来,我们分别就 通用线程生命周期和Java语言的线程生命周期分别进行详细说明。...原创 2022-07-25 09:44:08 · 1889 阅读 · 10 评论 -
面试高并发,凉了(全程高能,赶快收藏)
程序员小菜是一家互联网公司的开发人员,主要负责后端Java技术开发,平时的工作中以CRUD为主。从刚毕业来到公司,一转眼3年过去了,小菜突然觉得在这家公司工作没啥意思了,整天做CRUD的工作没啥挑战。于是,小菜童鞋优化了下自己的简历,并在网上投递了自己的简历,不一会,一个电话打过来,对方传来一个软萌妹纸的声音。...原创 2022-07-18 10:03:09 · 1881 阅读 · 5 评论 -
冰河最新出版的《深入理解高并发编程:核心原理与案例实战》到底讲了些啥?(视频为证)
最近有很多小伙伴问我:《深入理解高并发编程:核心原理与案例实战》这本书有没有目录。我:安排!这不,我连夜录制了这本书的整体内容,希望能够为小伙伴们带来实质性的帮助,直接上视频,走起!...原创 2022-06-20 11:05:48 · 1728 阅读 · 4 评论 -
多年亿级流量下的高并发经验总结,我毫无保留的写在了这本书中(CSDN创始人、总裁、副总裁联合推荐)
十年6.18和双11大促的高并发系统经验总结,获得CSDN创始人、总裁、副总裁联合推荐!!!原创 2022-06-17 13:08:11 · 5538 阅读 · 17 评论 -
一文彻底理解并发编程中非常重要的票据锁——StampedLock
冰河曾经说过:周末和假期假期是超越他人的最好时机,悄悄努力,然后惊艳所有人。原创 2022-06-09 10:44:12 · 947 阅读 · 4 评论 -
一个Callable接口能有多少知识点?在裁员的大背景下,我仍然吊打了大厂面试官
并发编程一直是程序员们比较头疼的,如何编写正确的并发程序相比其他程序来说,是一件比较困难的事情,并发编程中出现的 Bug 往往也是特别诡异的。之所以说并发编程出现的 Bug 比较诡异,是因为在并发编程中,很多时候出现的 Bug 不一定能完美的复现出来,也就是说,并发编程的 Bug 是很难重现,很难追踪的。今天,冰河再次带小伙伴们复盘下Callable接口,好了,进入今天的正题。原创 2022-05-23 09:52:55 · 1355 阅读 · 2 评论 -
放大招了,冰河带你10分钟手撸Java线程池,yyds,赶快收藏吧
最近有不少小伙伴私信我说:看了我在【精通高并发系列】文章中写的深度解析线程池源码部分的文章,但是还是有些不明白线程池的实现原理。问我能不能手写一个简单的线程池,帮助读者深刻理解线程池的原理。原创 2022-03-14 09:59:37 · 2037 阅读 · 3 评论 -
学了这么久的高并发编程,连Java中的并发原子类都不知道?这也太Low了吧
在 `java.util.concurrent.atomic`包下有很多支持并发的原子类,某种程度上,我们可以将其分成:基本数据类型的原子类、对象引用类型的原子类、数组类型的原子类、对象属性类型的原子类和累加器类型的原子类五大类。原创 2022-01-25 10:11:53 · 2715 阅读 · 1 评论 -
【高并发】多线程环境下如何保证共享变量的安全性?冰河建议你使用ThreadLocal,一文带你彻底搞懂ThreadLocal
ThreadLocal是JDK提供的,支持线程本地变量。也就是说,如果我们创建了一个ThreadLocal变量,则访问这个变量的每个线程都会有这个变量的一个本地副本。如果多个线程同时对这个变量进行读写操作时,实际上操作的是线程自己本地内存中的变量,从而避免了线程安全的问题。原创 2021-12-23 14:03:24 · 3569 阅读 · 5 评论 -
【高并发】通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程
今天,我们通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程,小伙伴们最好是打开IDEA,按照冰河说的步骤,调试下ThreadPoolExecutor类的源码,这样会理解的更加深刻,好了,开始今天的主题。原创 2021-11-26 09:53:34 · 1538 阅读 · 1 评论 -
阿里面试官:高并发大流量秒杀系统如何正确的解决库存超卖问题?(建议收藏)
冰河为你揭秘互联网大厂是如何正确的扣减库存的,建议收藏!!原创 2021-10-11 08:37:51 · 15702 阅读 · 27 评论 -
奉劝那些刚参加工作的学弟学妹们:要想进大厂,这些并发编程核心技能是你必须要掌握的!!(建议收藏)
冰河整理的这份并发编程核心技能,靠它进大厂,效果杠杠的,冰河强烈建议收藏!!原创 2021-09-16 15:20:11 · 28769 阅读 · 40 评论 -
千万不要在生产环境使用这个版本的JDK,这不?内存又溢出了!快要裂开了!(建议收藏)
这个版本的JDK中String的substring()方法在高并发大流量的场景下,会频繁引发内存溢出,冰河亲身经历,强烈建议大家收藏!!原创 2021-09-13 16:44:18 · 5338 阅读 · 28 评论