暂时未有相关云产品技术能力~
咕泡科技联合创始人。著有畅销书《Spring 5核心原理与30个类手写实战》、《Netty 4核心原理与手写RPC框架实战》、《设计模式就该这样学》、《Java面试八股文》。一个从美术生转型Java开发的程序员,3年内做到架构师,5年内做到CTO。14年Java从业经验,6年线上教学经验。
问:Tom老师,请问短信验证码接口被狂刷,搞得服务都快要崩溃了,我该怎么办? 答:我想都到云时代了,我想这个问题不应该出现吧?现在,都有非常多的短信服务提供商,应该自带防火墙功能的。
在互联网公司面试中,很多小伙伴都被问到过关于锁的问题。 今天,我给大家一次性把Java并发锁的全家桶彻底讲明白。包括互斥锁、读写锁、重入锁、公平锁、悲观锁、自旋锁、偏向锁等等等等。视频有点长,大家一定要全部看完,保证你会醍醐灌顶。
一位工作4年的小伙伴,去某东面试时被问到这样一道题,说请你简述一下雪花算法的实现原理。屏幕前的小伙伴,如果你遇到这个问题,你会怎么回答?
Nacos作为阿里的开源中间件在Spring Cloud生态以后,不管是作为配置中心,还是作为注册中心,因为它简单易用的特性,在互联网公司被广泛运用。随后,大家会发现Nacos相关的面试题也就越来越多了。
一个8年工作经验的小伙伴,被问到这样一个问题,说如何保证RabbitMQ的高可用。关于这个问题呢,这位小伙伴倒是有个实操经验,就是不知道如何组织语言。所以,当时面试结果不太理想。今天,我给大家分享一下我的理解。
ThreadLoca在并发场景中,应用非常多。前几天有位小伙伴问我一个问题,说ThreadLocal是不是真的会造成内存泄漏?今天给大家做一个分享,个人见解,仅供参考。如果大家有其他见解可以在评论区讨论。
今天给大家分享一道大厂面试真题,Spring为何需要三级缓存解决循环依赖,而不是二级缓存?我一共分为五个部分来给大家介绍: 1、什么是循环依赖? 循环依赖就是指循环引用,是两个或多个Bean相互之间的持有对方的引用。在代码中,如果将两个或多个Bean互相之间持有对方的引用,因为Spring中加入了依赖注入机制,也就是自动给属性赋值。Spring给属性赋值时,将会导致死循环。那么,哪些情况会出现循环依赖呢?
在阅读面试题之前,小伙伴们可以先看看我之前发布的系列文章,Spring核心原理包括源码分析和用30个类手写。面试刷题固然很重要,但是知其然知其所以然更重要。
Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang of Four)”,而这本书也就被称为“四人组(或 GoF)”书。他们首次给我们总结出一套软件开发可以反复使用的经验,帮助我们提高代码的可重用性、系统的可维护性等,解决软件开发中的复杂问题。
状态模式的UML类图如下图所示。
解决这个问题的关键是要找到Java代码的位置。下面分享一下排查思路,以CentOS为例,总结为4步。 第1步,使用top命令找到占用CPU高的进程。 第2步,使用ps –mp命令找到进程下占用CPU高的线程ID。 第3步,使用printf命令将线程ID转换成十六进制数。 第4步,使用jstack命令输出线程运行状态的日志信息。
ES全称是Elastic Search,它是一个建立在全文搜索引擎库Lucene基础上的开源搜索和分析引擎。ES它本身具有分布式存储、检索速度快的特性。所以,我们经常会用它来实现全文检索的功能。 Elastic官网对ES的定义已经不再是ElasticSearch这一个组件,而是指Elastic Stack生态。
一位3年工作经验的小伙伴面试时被问到,说请你谈一谈ArrayList自动扩容机制的实现原理。这个问题对于稍微看过一点源码的小伙伴来说,其实非常简单。下面我给大家分享一下我对这个问题的理解。
有位粉丝私信我说,说想让我拍一期Pulsar的视频,那今天满足一下这位粉丝要求,谈一谈我对Pulsar的理解。
一位7年工作经验的小伙伴去面架构师岗位,被问到这样一道面试题,说”RocketMQ为什么要放弃Zookeeper“。然后,想了很久好像没关注过,也不敢瞎猜。 那么今天,我给大家来聊一聊我对这个问题的理解。
Seata在大厂也是属于高频的面试题,有一位3年工作经验的小伙伴被问到一道这样的面试题,说“谈谈你对Seata的理解”。那么,今天我给大家来聊一聊。
技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。伴随云计算的滚滚浪潮,云原生(CloudNative)的概念应运而生,而且还很火。 今天,我给大家讲一讲,我对云原生的理解。
有一位粉丝问私信问我的面试题,他说“什么是服务网格”? 服务网格这个概念出来很久了,从 2017 年被提出来,到 2018 年正式爆发,很多云厂商和互联网企业都在纷纷向服务网格靠拢。像蚂蚁集团、美团、百度、网易等一线互联网公司,都有服务网格的落地应用。
面试过程中,场景类的问题更容易检测出一个开发人员的基本能力。这不,有一位小伙伴去阿里面试,第一面就遇到了关于“CPU 飙高系统反应慢怎么排查”的问题?当时这位小伙伴不知从何下手。 今天,我给大家分享一下我的解决思路。
最近一位3年工作经验的小伙伴去某厂面试,被问到这样一个问题,说:”请你简单说一下Kafka的零拷贝原理“。然后,这位小伙伴突然愣住了,什么是零拷贝,零拷贝跟Kafka有关系吗?
一位工作4年的程序员 , 简历上写了精通并发编程 , 并且还阅读过AQS( AbstractQueuedSynchronizer)的源码,然后面试官只问了这样一个问题:“AQS 为什么要采用双向链表结构”?,然后就垮了! 其实AQS 大家都不陌生,它是 J.U.C 包里面一个非常重要的线程同步器。今天,我给大家聊聊我的理解。
什么情况?一位工作了 5 年的 Java 程序员,竟然回答不出这个问题?说“Dubbo注册中心挂了, 服务之间还可以继续通信吗”?今天,我话2分钟时间给大家来聊一聊。
一位6年工作经验的小伙伴,在某厂面试时被问到“实现分布式锁,Zookeeper 和 Redis 哪种更好?“,这其实是一个开放性的问题。并没有标准答案。那今天呢,我给大家分享一下我的理解,希望能够帮助到大家。
今天分享一道一线大厂公司高频面试题。“基于Redis和MySQL的架构,如何保证数据一致性”。这个问题难倒了不少工作5年以上的程序员,难的不是问题本身,而是解决这个问题的思路。
一个6年工作经验的小伙伴,被问到这样一个问题,说Kafka是如何避免消息重复消费的?面试完之后,这位小伙伴来找到我,希望我能给一个思路。今天,我给大家分享一下我的思路。
曾经有一道面试题掀起了劲爆的浪潮,说如果不使用Spring,我们将如何开发?好多家公司都模仿提问了这么一道面试题,而且好多人也都在各个社区给出了自己的答案。接下来看看网友们是怎么说的。
目前可用于文件存储的网络服务选择也有不少,好比阿里云OSS、七牛云、腾讯云等等,可是收费都有点小贵。为了帮公司节约成本,以前一直是使用FastDFS做为文件服务器,准确的说是图片服务器。直到我发现了MinIO,我决定放弃FastDFS。
如果,让我来设计,我最先想到的就是策略模式。另外,我把往期面试题解析的配套文档我已经准备好,想获得的可以在我的煮叶简介中找到。那么什么场景要使用策略模式,什么场景又不应该使用策略模式呢?我们可以先来看官方对策略模式的定义。
有位小伙伴在阿里的面试中,被问到,说只要数据量大了,就一定要分库分表吗?如果你直接回答,是 的话,这大概率就会被 了。
一位6年经验的小伙伴去字节面试的时候被问到这样一个问题,为什么MySQL索引结构要采用B+树?这位小伙伴从来就没有思考过这个问题。只因为现在都这么卷,后面还特意查了很多资料,他也希望听听我的见解。
其实我个人不太愿意,拿Dubbo和Spring Cloud进行对比,因为它俩最初出现并不是为了解决同一类问题。但是,国内技术是在太卷,加上微服务的盛行,很多互联网大厂也经常会问到这个问题。那么今天,我还是给大家来详细聊一聊。
前几天,有一位10多年经验的架构师在面试互联网大厂时被问到这样一个问题,说请你谈谈分布式事务的解决方案。那今天,我给大家分享一下我对这个问题的理解。
Redis是单线程还是多线程?这个问题,把一个5年开发经验的程序员给问懵了。可能很多小伙伴平时都听说过,Redis就是单线程的。但是我们学习Redis命令的时候,有经常有设置异步,比如bgsave命令,它的作用是在后台异步持久化数据到磁盘,那既然是异步,肯定需要由线程来完成。
昨天,有位在广州工作4年的小伙伴,在面试中被问到SpringBoot自动装配原理,当时,自我感觉比较好,他要的是30K,但是都没有拿到Offer。今天,我给大家分享一下我的理解。
什么是内存溢出,什么是内存泄漏?这是很多小伙伴经常问我的一个问题,今天花3分钟时间给大家介绍一下。先来介绍什么是内存溢出?
创建索引同时指定索引的名字
1、MongDB启动与关闭
MongoDB的集群部署方案中有三类角色:实际数据存储结点、配置文件存储结点和路由接入结点。
1、创建数据库
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。在这里我们有必要先简单介绍一下非关系型数据库(NoSQL)
由于SLF4J适配兼容性的中断,Log4j 现在发布两个版本的SLF4J to Log4j的适配器。log4j-slf4j-impl对应 SLF4J 1.7.x 及更早版本;log4j-slf4j18-impl对应SLF4J 1.8.x 及更高版本一起使用。SLF4J-2.0.0 alpha 版本目前还不完全支持。
近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。经过分析,该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
Design Patterns: Elements of Reusable Object-Oriented Software(以下简称《设计模式》),一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著(Addison-Wesley,1995)。这四位作者常被称为“四人组(Gang of Four)”,而这本书也就被称为“四人组(或 GoF)”书。他们首次给我们总结出一套软件开发可以反复使用的经验,帮助我们提高代码的可重用性、系统的可维护性等,解决软件开发中的复杂问题。
首先你的JDK需要升级到1.8以上版本。从Spring 3.0开始,Spring源码采用GitHub托管,不再提供官网下载链接。这里不做过多赘述,大家可自行去GitHub网站下载,我使用的版本下载链接为 https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip ,下载完成后,解压源码包会看到如下图所示的文件目录。
我们在日常的Java开发中,经常需要处理一些字符串,这个时候正则表达式是非常有用的。几乎在所有的编程语言中都支持正则表达式。以下我将压箱底多年的干货搬出来给大家参考,都是我们日常使用频次比较高的正则表达式,希望能能大大提高你的工作效率。如果本文对大家有帮助,大家可以关注“Tom弹架构”,后续会连载正则表达式的基础知识。
经过一周时间的Log4j2 RCE事件的发酵,事情也变也越来越复杂和有趣,就连 Log4j 官方紧急发布了 2.15.0 版本之后没有过多久,又发声明说 2.15.0 版本也没有完全解决问题,然后进而继续发布了 2.16.0 版本。大家都以为2.16.0是最终终结版本了,没想到才过多久又爆雷,Log4j 2.17.0横空出世。
循环依赖就是指循环引用,是两个或多个Bean相互之间的持有对方的引用。BeanA 类依赖了Bean B类,同时Bean B类又依赖了Bean A类。这种依赖关系形成了一个闭环,我们把这种依赖关系就称之为循环依赖。Bean A类依赖了Bean B类,Bean B类依赖了Bean C类,Bean C类依赖了Bean A类,如此,也形成了一个依赖闭环。自己引用了自己,自己和自己形成了依赖关系。同样也是一个依赖闭环。