JavaSouth南哥
码龄6年
关注
提问 私信
  • 博客:221,639
    社区:34
    问答:27
    动态:20,036
    视频:8
    241,744
    总访问量
  • 93
    原创
  • 32,298
    排名
  • 1,192
    粉丝

个人简介:我是南哥,JavaSouth作者。公众号:Java进阶指南针

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2019-06-11
博客简介:

JavaSouth南哥

查看详细资料
  • 原力等级
    当前等级
    5
    当前总分
    1,161
    当月
    3
个人成就
  • 获得1,701次点赞
  • 内容获得35次评论
  • 获得1,744次收藏
创作历程
  • 93篇
    2024年
  • 1篇
    2019年
成就勋章
TA的专栏
  • JavaSouth系列
    93篇
兴趣领域 设置
  • Java
    java
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 视频
  • 课程
  • 关注/订阅/互动
搜TA的内容
搜索 取消

面试官:如何设计一个排队系统、pk系统

排队的一个特点是一个元素排在另一个元素的后面,形成条状的队列。List结构、LinkedList链表结构都可以满足排队的业务需求,但如果这是一道算法题,我们要考虑的是性能因素。排队并不是每个人都老老实实排队,现实会有多种情况发生,例如有人退号,那属于这个人的元素要从队列中删除;特殊情况安排有人插队,那插入位置的后面那批元素都要往后挪一挪。结合这个情况用LinkedList链表结构会更加合适,相比于List,LinkedList的性能优势就是增、删的效率更优。
原创
发布博客 2024.12.28 ·
1098 阅读 ·
9 点赞 ·
0 评论 ·
16 收藏

2 道直播系统设计题,建议收藏

简单来看,一次送礼请求需要经过的步骤可以简化为:用户送礼 -> 礼物校验、资产校验 -> 用户扣费 -> 直播间礼物通知 -> 更新礼物排行榜、记录消费日志。
原创
发布博客 2024.12.19 ·
889 阅读 ·
17 点赞 ·
0 评论 ·
16 收藏

优秀的后端应该知道的易错点

TIOBE编程社区给出了 2024 年编程语言流行度的指标,南哥看到我们的 Java 现在是排第三~
原创
发布博客 2024.12.12 ·
1114 阅读 ·
28 点赞 ·
0 评论 ·
22 收藏

浅入浅出 JVM 特性

先赞后看,Java进阶一大半JDK 的版本目前已经规划到了Java SE 25,将于 2025 年 9 月发布~各位hao,我是南哥,相信对你通关面试、拿下Offer有所帮助。
原创
发布博客 2024.12.09 ·
1185 阅读 ·
12 点赞 ·
0 评论 ·
23 收藏

短链系统设计题,给我整懵了。。。

先赞后看,Java进阶一大半小明(化名)坐在密不透风的会议室里,手握着笔,放在桌面上的是满满的两页面试题。其中一道系统设计题是这样。。。微博或者短信都有单条发送字数的限制,如果需要分享一个长网址,很容易越出限制,短链服务可以将长网址变成短网址,方便传播。请设计一个短链服务,要求短网址尽可能短,且保证系统安全和并发能力。各位hao,我是南哥,相信对你通关面试、拿下Offer有所帮助。
原创
发布博客 2024.12.05 ·
976 阅读 ·
31 点赞 ·
0 评论 ·
22 收藏

【Kafka】Kafka 基础知识总结

Kafka其实是一款基于发布与订阅模式的消息系统,如果按常理来设计,大家是不是把消息发送者的消息直接发送给消息消费者?但Kafka并不是这么设计的,Kafka消息的生产者会对消息进行分类,再发送给中间的消息服务系统,而消息消费者通过订阅某分类的消息去接受特定类型的消息。
原创
发布博客 2024.12.04 ·
1047 阅读 ·
22 点赞 ·
0 评论 ·
10 收藏

【Spring】Spring从了解进阶到熟练

不知不觉,Spring 框架最新版本已经更新换代到7.0.x。。。
原创
发布博客 2024.12.01 ·
878 阅读 ·
31 点赞 ·
0 评论 ·
29 收藏

ZooKeeper 基础知识总结

先赞后看,Java进阶一大半ZooKeeper 官网这样介绍道:ZooKeeper 是一种集中式服务,用于维护配置信息、命名、提供分布式同步和提供组服务。各位hao,我是南哥,相信对你通关面试、拿下Offer有所帮助。
原创
发布博客 2024.11.28 ·
1344 阅读 ·
20 点赞 ·
0 评论 ·
27 收藏

N 种值得一看的前后端鉴权方案

先赞后看,Java进阶一大半各位hao,我是南哥。记得前几天南哥在牛客看到一条面试题:工作的鉴权怎么做的,了解常用的鉴权方案吗?不得不说,哪怕进入一家小型的互联网公司,他们的鉴权方案这类基础建设早已搭建好,在工作中用到的更多是前人搭建好的方案。遇到这道题,如果自己没去提前了解,回答起来容易太浅显。
原创
发布博客 2024.11.25 ·
1317 阅读 ·
10 点赞 ·
0 评论 ·
19 收藏

不懂这些,面试都不敢说自己熟悉多线程

eginnovations网站在一篇Java线程文章中介绍道:Java 程序的多个线程拥有自己的堆栈,但共享 JVM 的堆内存。
原创
发布博客 2024.11.19 ·
963 阅读 ·
28 点赞 ·
0 评论 ·
19 收藏

这个排队系统设计碉堡了

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

synchronized就该这么学

早期sychonrized重量级锁开销大,于是JDK1.5引入了ReentrantLock,包含现在很多偏见都是认为ReentrantLock性能要优于sychonrized。但JDK1.6引入的锁升级,不断迭代,怕是性能往往还优于ReentrantLock。我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了多线程相关的synchronized、volatile常见的面试题!可重入意味着获取锁的粒度是线程而不是调用,如果大家知道这个概念,会更容易理解可重入锁的作用。既然获取锁的粒度是线程
原创
发布博客 2024.11.11 ·
1194 阅读 ·
13 点赞 ·
0 评论 ·
18 收藏

Java I/O流面试之道

NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
原创
发布博客 2024.11.08 ·
1171 阅读 ·
20 点赞 ·
0 评论 ·
23 收藏

四大集合20连问,抗住!

面试官:List集合都知道哪些对象?作为四大集合之一的List,在业务开发中我们比较常见的是以下 3 种:ArrayList、Vector、LinkedList,业务开发我们接触最多就是容器类库了,容器类库可以说是面向对象语言最重要的类库。大家看看在工作里你比较熟悉的是哪个?面试官:那TreeSet要怎么定制排序?TreeSet的自定义排序我们要利用Comparator接口,通过向TreeSet传入自定义排序规则的Comparator来实现。官方源码是这么解释的,南友们看一看。
原创
发布博客 2024.10.28 ·
1317 阅读 ·
29 点赞 ·
0 评论 ·
29 收藏

浅入浅出MySQL事务等特性

7 年前 Reddit 论坛出现了这么一篇帖子,大学毕业后第一天上班的新手程序员,运行了一份数据库测试脚本,直接把整个生产数据库删掉,CTO 让他有多远滚多远。我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了MySQL事务、主从复制等常见的面试题!MySQL事务有四大特性。SQL标准定义了四种隔离级别,较低级别的隔离通常来说系统开销更低些。并发事务带来的问题主要有四种,可以用上面我们谈到的事务隔离级别来处理。脏读:一个事务读取到另一个事务未提交的数据。不可重复读:一个事务多次读取同一数
原创
发布博客 2024.10.21 ·
1294 阅读 ·
25 点赞 ·
0 评论 ·
31 收藏

捣鼓一个电商功能设计

如果秒杀库存只有10,在下单接口前面,我们可以设置一个过滤拦截,只有前50个用户才会进入下单流程,拒绝其他用户的下单请求,其他用户甚至不需要进行下单的流程。随着用户量的激增,肯定的是业务复杂性会逐日递增,你会发现简简单单的一个表,不知不觉多出了很多奇奇怪怪的字段。对于整个下单的流程,包括库存的减少、用户扣费、订单表的创建都应该包含在同一个MySQL事务中,一旦流程中的任何一个逻辑出错,则进行回滚。对于下单成功后的其他操作,例如下单成功信息通知用户等,可以使用任务队列的形式异步去执行,减少下单接口的耗时。
原创
发布博客 2024.10.16 ·
1218 阅读 ·
30 点赞 ·
0 评论 ·
27 收藏

SQL优化,我就用了这几招

阿里巴巴社区博客最近发表了一篇探究MySQL索引策略的博客,下图是一条查询SQL的执行过程。我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了MySQL语句优化、索引优化常见的面试题!MySQL的慢查询日志可以记录执行时间超过阈值的SQL查询语句,所以我们可以利用该日志查找出哪些SQL语句执行效率差,从而对SQL语句进行优化。MySQL5.7以上版本可以通过SET命令来开启慢查询日志。开启完慢查询日志,我们找到该日志的位置,打开文件即可查询慢查询的SQL。打开DESKTOP-ALU4
原创
发布博客 2024.10.14 ·
1097 阅读 ·
17 点赞 ·
0 评论 ·
9 收藏

这篇Redis多机基础,我吹不动了

我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了Redis主从、集群、哨兵常见的面试题!回答数据同步过程问题前,大家有没想过为什么Redis要数据同步?不会是MySQL主从架构要数据同步,Redis就照猫画虎吧。虽然这两者有关系型数据库和非关系型数据库的差异,但都是作为存储数据的数据库系统。而主从架构的目的就在于对数据有多个"备份",有了多个"备份",就自然而然衍生出众多好处。如负载均衡、灾难恢复、数据备份。既然要"备份",那数据同步就必不可少了。Redis主从数据同步大致的过程如下。
原创
发布博客 2024.10.09 ·
1308 阅读 ·
25 点赞 ·
0 评论 ·
26 收藏

可能是最漂亮的Redis面试基础详解

我是南哥,相信对你通关面试、拿下Offer有所帮助。敲黑板:本文总结了Redis基础最常见的面试题!包含了Redis五大基本数据类型、Redis内存回收策略、Redis持久化等。相信大部分Redis初学者都会忽略掉一个重要的知识点,Redis其实是单线程模型。我们按直觉来看应该是多线程比单线程更快、处理能力更强才对,比如单线程一次只可以做一件事情,而多线程却可以同时做十件事情。但Redis却可以做到每秒万级别的处理能力,主要是基于以下原因:(1)Redis是基于内存操作的,Redis所有的数据库状态都保存在
原创
发布博客 2024.10.04 ·
1685 阅读 ·
29 点赞 ·
0 评论 ·
17 收藏

项目没亮点?那就来学下pk功能设计吧

它的流程是这样,主播点击申请pk按钮,匹配其他同时申请pk的主播,粉丝通过送礼给心爱的主播提高pk进度条,pk结束后失败的一方主播接受惩罚。但进度条数据主要是提供给在pk开始后才进来直播间的观众,这类人进行直播间后,客户端调用pk进度的查询接口,获取最新的pk进度条。每场pk都有倒计时,这里我们在pk匹配成功时就在Redis里设置一个倒计时键值对,该键值对的初始值是本场pk的总pk时间。,我们给他设计为WebSocket数据实时推送,只要主播的进度有增加,把增加的数值推送到所有在pk直播间的用户。
原创
发布博客 2024.09.29 ·
1693 阅读 ·
20 点赞 ·
0 评论 ·
22 收藏
加载更多