- 博客(94)
- 收藏
- 关注

原创 2 道直播系统设计题,建议收藏
简单来看,一次送礼请求需要经过的步骤可以简化为:用户送礼 -> 礼物校验、资产校验 -> 用户扣费 -> 直播间礼物通知 -> 更新礼物排行榜、记录消费日志。
2024-12-19 18:02:18
896

原创 这个排队系统设计碉堡了
先赞后看,Java进阶一大半各位好,我是南哥。我在网上看到某厂最后一道面试题:如何设计一个排队系统?关于系统设计的问题,大家还是要多多思考,可能这道题考的不是针对架构师的职位,而是关于你的业务设计能力。如果单单只会用开源软件的API,那似乎我们的竞争力还可以再强些。学习设计东西、创作东西,把我们设计的产品给别人用,那竞争力一下子提了上来。15岁的初中生开源了 AI 一站式 B/C 端解决方案,该产品在上个月被以几百万的价格收购了。这值得我们思考,程序创造力、设计能力在未来会变得越来越重要。
2024-11-13 17:44:45
1124

原创 再有人问你WebSocket为什么牛逼,就把这篇文章发给他!
再有人问你WebSocket为什么牛逼,就把这篇文章发给他!2008年6月诞生了一个影响计算机世界的通信协议,原先需要二十台计算机资源才能支撑的业务场景,现在只需要一台,这得帮"抠门"老板们省下多少钱,它就是大名鼎鼎的WebSocket协议。很快在下一年也就是2009年的12月,Google浏览器就宣布成为第一个支持WebSocket标准的浏览器。WebSocket的推动者和设计者就是下面的Michael Carter,他设计的WebSocket协议技术现在每天在全地球有超过的设备在使用。
2024-07-05 17:47:03
2523
1
原创 面试官:如何设计一个排队系统、pk系统
排队的一个特点是一个元素排在另一个元素的后面,形成条状的队列。List结构、LinkedList链表结构都可以满足排队的业务需求,但如果这是一道算法题,我们要考虑的是性能因素。排队并不是每个人都老老实实排队,现实会有多种情况发生,例如有人退号,那属于这个人的元素要从队列中删除;特殊情况安排有人插队,那插入位置的后面那批元素都要往后挪一挪。结合这个情况用LinkedList链表结构会更加合适,相比于List,LinkedList的性能优势就是增、删的效率更优。
2024-12-28 15:01:44
1107
原创 浅入浅出 JVM 特性
先赞后看,Java进阶一大半JDK 的版本目前已经规划到了Java SE 25,将于 2025 年 9 月发布~各位hao,我是南哥,相信对你通关面试、拿下Offer有所帮助。
2024-12-09 17:47:09
1191
原创 短链系统设计题,给我整懵了。。。
先赞后看,Java进阶一大半小明(化名)坐在密不透风的会议室里,手握着笔,放在桌面上的是满满的两页面试题。其中一道系统设计题是这样。。。微博或者短信都有单条发送字数的限制,如果需要分享一个长网址,很容易越出限制,短链服务可以将长网址变成短网址,方便传播。请设计一个短链服务,要求短网址尽可能短,且保证系统安全和并发能力。各位hao,我是南哥,相信对你通关面试、拿下Offer有所帮助。
2024-12-05 17:45:11
982
原创 【Kafka】Kafka 基础知识总结
Kafka其实是一款基于发布与订阅模式的消息系统,如果按常理来设计,大家是不是把消息发送者的消息直接发送给消息消费者?但Kafka并不是这么设计的,Kafka消息的生产者会对消息进行分类,再发送给中间的消息服务系统,而消息消费者通过订阅某分类的消息去接受特定类型的消息。
2024-12-04 17:32:26
1052
原创 ZooKeeper 基础知识总结
先赞后看,Java进阶一大半ZooKeeper 官网这样介绍道:ZooKeeper 是一种集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。各位hao,我是南哥,相信对你通关面试、拿下Offer有所帮助。
2024-11-28 18:06:50
1348
原创 N 种值得一看的前后端鉴权方案
先赞后看,Java进阶一大半各位hao,我是南哥。记得前几天南哥在牛客看到一条面试题:工作的鉴权怎么做的,了解常用的鉴权方案吗?不得不说,哪怕进入一家小型的互联网公司,他们的鉴权方案这类基础建设早已搭建好,在工作中用到的更多是前人搭建好的方案。遇到这道题,如果自己没去提前了解,回答起来容易太浅显。
2024-11-25 17:33:53
1321
原创 不懂这些,面试都不敢说自己熟悉多线程
eginnovations网站在一篇Java线程文章中介绍道:Java 程序的多个线程拥有自己的堆栈,但共享 JVM 的堆内存。
2024-11-19 17:35:52
964
原创 synchronized就该这么学
早期sychonrized重量级锁开销大,于是JDK1.5引入了ReentrantLock,包含现在很多偏见都是认为ReentrantLock性能要优于sychonrized。但JDK1.6引入的锁升级,不断迭代,怕是性能往往还优于ReentrantLock。我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了多线程相关的synchronized、volatile常见的面试题!可重入意味着获取锁的粒度是线程而不是调用,如果大家知道这个概念,会更容易理解可重入锁的作用。既然获取锁的粒度是线程
2024-11-11 16:19:00
1197
原创 Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
2024-11-08 15:28:23
1173
原创 四大集合20连问,抗住!
面试官:List集合都知道哪些对象?作为四大集合之一的List,在业务开发中我们比较常见的是以下 3 种:ArrayList、Vector、LinkedList,业务开发我们接触最多就是容器类库了,容器类库可以说是面向对象语言最重要的类库。大家看看在工作里你比较熟悉的是哪个?面试官:那TreeSet要怎么定制排序?TreeSet的自定义排序我们要利用Comparator接口,通过向TreeSet传入自定义排序规则的Comparator来实现。官方源码是这么解释的,南友们看一看。
2024-10-28 16:21:53
1320
原创 浅入浅出MySQL事务等特性
7 年前 Reddit 论坛出现了这么一篇帖子,大学毕业后第一天上班的新手程序员,运行了一份数据库测试脚本,直接把整个生产数据库删掉,CTO 让他有多远滚多远。我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了MySQL事务、主从复制等常见的面试题!MySQL事务有四大特性。SQL标准定义了四种隔离级别,较低级别的隔离通常来说系统开销更低些。并发事务带来的问题主要有四种,可以用上面我们谈到的事务隔离级别来处理。脏读:一个事务读取到另一个事务未提交的数据。不可重复读:一个事务多次读取同一数
2024-10-21 17:32:39
1296
原创 捣鼓一个电商功能设计
如果秒杀库存只有10,在下单接口前面,我们可以设置一个过滤拦截,只有前50个用户才会进入下单流程,拒绝其他用户的下单请求,其他用户甚至不需要进行下单的流程。随着用户量的激增,肯定的是业务复杂性会逐日递增,你会发现简简单单的一个表,不知不觉多出了很多奇奇怪怪的字段。对于整个下单的流程,包括库存的减少、用户扣费、订单表的创建都应该包含在同一个MySQL事务中,一旦流程中的任何一个逻辑出错,则进行回滚。对于下单成功后的其他操作,例如下单成功信息通知用户等,可以使用任务队列的形式异步去执行,减少下单接口的耗时。
2024-10-16 17:48:12
1219
原创 SQL优化,我就用了这几招
阿里巴巴社区博客最近发表了一篇探究MySQL索引策略的博客,下图是一条查询SQL的执行过程。我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了MySQL语句优化、索引优化常见的面试题!MySQL的慢查询日志可以记录执行时间超过阈值的SQL查询语句,所以我们可以利用该日志查找出哪些SQL语句执行效率差,从而对SQL语句进行优化。MySQL5.7以上版本可以通过SET命令来开启慢查询日志。开启完慢查询日志,我们找到该日志的位置,打开文件即可查询慢查询的SQL。打开DESKTOP-ALU4
2024-10-14 18:02:10
1099
原创 这篇Redis多机基础,我吹不动了
我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了Redis主从、集群、哨兵常见的面试题!回答数据同步过程问题前,大家有没想过为什么Redis要数据同步?不会是MySQL主从架构要数据同步,Redis就照猫画虎吧。虽然这两者有关系型数据库和非关系型数据库的差异,但都是作为存储数据的数据库系统。而主从架构的目的就在于对数据有多个"备份",有了多个"备份",就自然而然衍生出众多好处。如负载均衡、灾难恢复、数据备份。既然要"备份",那数据同步就必不可少了。Redis主从数据同步大致的过程如下。
2024-10-09 15:30:15
1309
原创 可能是最漂亮的Redis面试基础详解
我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了Redis基础最常见的面试题!包含了Redis五大基本数据类型、Redis内存回收策略、Redis持久化等。相信大部分Redis初学者都会忽略掉一个重要的知识点,Redis其实是单线程模型。我们按直觉来看应该是多线程比单线程更快、处理能力更强才对,比如单线程一次只可以做一件事情,而多线程却可以同时做十件事情。但Redis却可以做到每秒万级别的处理能力,主要是基于以下原因:(1)Redis是基于内存操作的,Redis所有的数据库状态都保存在
2024-10-04 16:15:40
1685
原创 项目没亮点?那就来学下pk功能设计吧
它的流程是这样,主播点击申请pk按钮,匹配其他同时申请pk的主播,粉丝通过送礼给心爱的主播提高pk进度条,pk结束后失败的一方主播接受惩罚。但进度条数据主要是提供给在pk开始后才进来直播间的观众,这类人进行直播间后,客户端调用pk进度的查询接口,获取最新的pk进度条。每场pk都有倒计时,这里我们在pk匹配成功时就在Redis里设置一个倒计时键值对,该键值对的初始值是本场pk的总pk时间。,我们给他设计为WebSocket数据实时推送,只要主播的进度有增加,把增加的数值推送到所有在pk直播间的用户。
2024-09-29 17:25:09
1699
原创 这个评论系统设计碉堡了
先赞后看,南哥助你Java进阶一大半官网给出了Facebook评论系统的高级设计图,Facebook的评论竟然是支持实时刷新的。也就是说用户不用刷新帖子,只要帖子有新的评论就会自动推送到用户端,这里Facebook使用的便是每天在全球有设备在使用的WebSocket技术。我是南哥,一个Java学习与进阶的领路人。相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-09-24 15:55:57
1424
原创 产品:直播送礼延迟这么大,你就不能快点吗
先赞后看,南哥助你Java进阶一大半其实抖音的实时音视频技术RTC,是来源于火山引擎RTC的支持,抖音、火山引擎、巨量引擎属于字节跳动公司旗下的不同业务板块。我是南哥,一个Java学习与进阶的领路人。相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-09-19 17:23:29
1517
原创 设计了简单高效的弹幕系统!老板直接加薪
先赞后看,南哥助你Java进阶一大半系统最早起源于日本,流行于视频网站。我们认识的初音未来(Hatsune Miku)就是在niconico平台上爆红的!!我是南哥,一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-09-16 00:04:51
1455
原创 掌握Kafka事务,看这篇就够了
先赞后看,南哥助你Java进阶一大半Kafka事务实际上引入了原子多分区写入的概念,播客画了以下流程图,展示了事务在分区级别如何工作。我是南哥,一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-09-11 17:33:37
1673
原创 为何我建议你学会Queue集合
面试官:你说说Queue集合都有什么常用类?JDK源码对Queue集合是这么解释的,大家看看。专为在处理之前保存元素而设计的集合。南哥是这么理解的,List集合用于存储常用元素、Map集合用于存储具有映射关系的元素、Set集合用于存储唯一性的元素。Queue集合呢?所有的数据结构都是为了解决业务问题而生,而Queue集合这种数据结构能够存储具有先后时间关系的元素,很适用于在业务高峰期,需要缓存当前任务的业务场景。像Kafka、RabbitMQ、RocketMQ都是队列任务这种思想。
2024-09-03 16:46:31
1216
原创 谁说后端不需要懂的-Nginx知识点
先赞后看,南哥助你Java进阶一大半他叫,一个俄罗斯程序员。就是他,着手开发了大名鼎鼎处理高并发、高负载网络请求的Nginx,同时他在2004年把Nginx作为开源软件发布。大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-08-28 16:36:06
1179
原创 不好意思!耽误你的十分钟,JVM内存布局还给你
先赞后看,南哥助你Java进阶一大半在2006年加州旧金山的JavaOne大会上,一个由顶级Java开发者组成的周年性研讨会,公司突然宣布将开放Java的源代码。于是,下一年顶级项目OpenJDK诞生。Java生态发展被打开了新的大门,Java 7的G1垃圾回收器、Java 8的Lambda表达式和流API…大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-08-20 16:11:52
1692
原创 赶快收藏!全网最佳Set集合详解:HashSet、TreeSet!
面试官:那TreeSet要怎么定制排序?TreeSet的自定义排序我们要利用Comparator接口,通过向TreeSet传入自定义排序规则的Comparator来实现。官方源码是这么解释的,南友们看一看。// 构造一个新的空树集,根据指定的比较器进行排序。// 插入到集合中的所有元素都必须能够通过指定的比较器相互比较: comparator. compare(e1, e2)不得对集合中的任何元素e1和e2抛出ClassCastException。
2024-08-15 18:02:12
1888
1
原创 这一次,彻底弄懂ZooKeeper协议
ZooKeeper是动物园的意思,在2012年官方来给ZooKeeper写了这么一段有趣的“ZooKeeper之道”,难怪ZooKeeper现在发展得这么好。动物园管理员对他们负责的动物和参观动物的游客都尽心尽力。他们遵循一套守则,至今只有同行才知道,这套守则可以保证动物和游客的安全。大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-08-13 17:39:59
1848
原创 N 个值得一看的后端代码片段
三元运算符:坏习惯还是好习惯?最高赞的回答是一个名为Ted Dziuba的老哥说的。为了便于阅读,如果三元组适合一行 80 个字符,我才会使用它。大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-08-09 17:33:06
1329
原创 作为后端开发,感受下接口带来的魅力!
在某网站上看到22届Java校招一片红海?24届今年的行情呢?本文收录在我开源的《Java学习进阶指南》中,涵盖了在大厂工作的Javaer都不会不懂的核心知识、面试重点。相信能帮助到大家在Java成长路上不迷茫,南哥希望收到大家的 ⭐ Star ⭐支持我完善下去。。Java进阶指南针。公众号里有南哥珍藏整理的大量优秀pdf书籍!❤️。
2024-08-06 16:37:22
1640
原创 因为不懂Redis集群,我被diss了
Redis官方在官网里写着霸气的宣传语:从构建者那里获取世界上最快的内存数据库。相信国内没用Redis的科技公司也屈指可数。现在Redis已经走向了商业化,它所属的公司叫Redis Ltd。不过可惜的是Redis创始人在2020年就离开了Redis Labs,那个留着乱糟糟黑色头发的中年男人就是Redis的创始人。Redis的商业推广仍在继续着,大家要去现场看看嘛。大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
2024-08-01 17:40:16
2020
原创 面试官没想到一个ArrayList,我都能跟他扯半小时
面试官:List集合都知道哪些对象?作为四大集合之一的List,在业务开发中我们比较常见的是以下 3 种:ArrayList、Vector、LinkedList,业务开发我们接触最多就是容器类库了,容器类库可以说是面向对象语言最重要的类库。大家看看在工作里你比较熟悉的是哪个?这篇文章南哥打算专注于List集合,后面四大集合之Map、Queue、Set后续再来填坑,比心心♥。
2024-07-29 17:42:55
2331
原创 全网最全程序员接单网站
程序员客栈-领先的程序员自由工作平台-程序员兼职 (proginn.com)闲鱼 - 闲不住,上闲鱼! (goofish.com)猪八戒网-品质企业服务 就找猪八戒 (zbj.com)电鸭社区-专注远程工作招聘交流-远程工作,从电鸭开始 (eleduck.com)开源众包-百万开发者,为您提供专业的软件开发服务 (oschina.net)码易_企业应用商店_软件众包_软件服务_云市场_云课堂_云计算平台网站! (mayigeek.com)智城外包网 - 零佣金开发资源平台 认证担保 全程无忧 、专业的软件外
2024-07-29 17:34:34
1498
转载 渣本毕业的我,终于靠努力进入了大厂
这是南哥找到的关于普通二本如何进大厂的真实故事,南哥希望这样的故事让更多人知道,不要在互联网里埋没了。 了解故事,知道这条路究竟走不走得通。有了这样一个故事,就像黑夜里茫茫大海的灯塔,给我们一点光芒,
2024-07-28 17:20:38
165
原创 《我们一起进大厂》系列-Zookeeper基础
如果大家公司里的消息队列Kafka是2.80版本以下的版本,那说明你们的服务器还在跑着一台提供给Kafka核心功能支持的Zookeeper。当年雅虎工程师在给这个分布式协调服务项目起名时,还发生一段有趣的故事。像如今大名鼎鼎的Hadoop是大象的名字,用于分享大规模数据集的Pig项目是猪,都是某种可爱的动物。时任研究院的首席科学家Raghu Ramakrishnan就跳出来开玩笑:“在这样下去,我们这儿就变成动物园了!于是,大家都起哄起来:那就叫它动物管理员吧。
2024-07-25 14:54:47
2579
原创 不懂这些,面试都不敢说自己熟悉Redis
下面这位就是Redis的创始人,他叫antirez,让我们Java开发者又要多学一门Redis的始作俑者。我们肯定很难想象Redis创始人竟然学的是是建筑专业,而当年antirez是为了帮网站管理员监控访问者的实时行为才开发的Redis。为啥antirez不用MySQL来开发?MySQL并不适用于实时应用程序,存储数据库需要磁盘读写,大量的数据操作会使网站速度过于缓慢。于是Redis的前身LLOOGG就这样诞生了,后期也发展为了Redis。大家好,我是南哥。
2024-07-23 17:01:36
1972
原创 可能是最漂亮的Java I/O流详解
大家有什么思路吗?评论区一起讨论讨论。我需要使用 Java 逐行读取大约 5-6 GB 的大型文本文件。我怎样才能快速完成此操作?最高赞的回答是叫Peter Lawrey的老哥回答的。大家好,我是南哥。一个Java学习与进阶的领路人,今天指南的是Java I/O流,跟着南哥我们一起在Java之路上成长。本文收录在我开源的《Java学习进阶指南》中,涵盖了想要学习Java、成为更好的Java选手都在偷偷看的核心知识、面试重点。
2024-07-15 16:50:24
2432
原创 我以为我对Spring MVC很了解,直到我遇到了...
所有人都知道Spring MVC是是开发的,却鲜有人知道Spring MVC的理论基础来自于1978 年提出MVC模式的一个老头子,他就是Trygve Mikkjel Heyerdahl Reenskaug,挪威计算机科学家,名誉教授。Trygve Reenskaug的MVC架构思想早期用于图形用户界面(GUI) 的软件设计,他对MVC是这样解释的。MVC 被认为是解决用户控制大型复杂数据集问题的通用解决方案。最困难的部分是为不同的架构组件想出好的名字。模型-视图-编辑器是第一个。
2024-07-10 17:22:06
2804
1
空空如也
Mybatis 的一二级缓存很鸡肋
2024-07-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人