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

原创 “吃”完这本Java性能调优实战,MySQL+JVM+Tomcat等问题一键全消!
前两天有个朋友去某厂面试,开场还是挺顺利的,没过多久却被调优问成凉凉了。我心想,都已经到7月半了,很快又是秋招大军来临了,是不是也有很多朋友同样在JAVA性能调优这一块掌握的不够呢?所以今天来写这篇文章,就是想给大家分享一份阿里P8架构师手敲20W字的调优实战笔记,另外尤其对于MySQL、Tomcat、JVM这三个特殊对待一下,看看我为其手绘相应的思维脑图以及面试相关的高频真题及答案。先来看看Java性能调优实战由于篇幅太多,直接来个总目录康康,从下面的目录大致上可以知道详情的内容包括哪些.
2020-07-14 16:17:54
2530
1

原创 全网独家的“MySQL高级知识”集合,骨灰级收藏,手慢则无!
MySQL为什么这么重要?MySQL为什么这么重要?是不是一脸问号??什么都不要说了,先来看张图...在所有数据库中,MySQL 排在第二,而 NoSQL 中 MongoDB 排在第一,你可能在想是不是有必要把 Oracle 也学习下,别着急,再看张图全球访问量最大的 20 家网站,他们分别使用了什么数据库呢,绝大多数使用 mysql,有两个完整live.com 和 bing 使用的是 mssql,并不是他们使用不了 mysql,而是他要支持自己的数据库。在...
2020-06-16 14:02:37
2413
1

原创 牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖!
Java基础(对象+线程+字符+接口+变量+异常+方法)面向对象和面向过程的区别? Java 语言有哪些特点? 关于 JVM JDK 和 JRE 最详细通俗的解答 Oracle JDK 和 OpenJDK 的对比 Java 和 C++的区别? 什么是 Java 程序的主类?应用程序和小程序的主类有何不同? Java 应用程序与小程序之间有哪些差别? 字符型常量和字符串常量的区别 构造器 Constructor 是否可被 override? 重载和重写的区别? Java 面向对象编程三
2020-06-10 16:17:38
2993
3

原创 三次阿里二面挂,Java+并发+JVM+网络+数据库+算法,我还能说啥?
这次要和大家分享的是我的三次阿里面经,都是二面就凉凉(伤心欲绝~),全部都是Java开发岗,下面就把这三次面试总结在一起,涉及Java+并发+JVM+网络+数据库+算法+框架+数据结构等方面,总共是投了以下三个阿里岗位...阿里 - 业务平台事业部(会员中台)- Java开发(一面挂) 阿里 - 新零售技术事业群(业务平台事业部)- Java开发 阿里 - 供应链平台事业部 - Java开...
2020-04-07 11:45:02
1841
1

转载 靠着这份JAVA核心面试知识整理(PDF),稳拿头条/菜鸟/字节offer
01 前言辛苦奋斗两个月,秋招终于圆满收官,拿到了头条、字节、菜鸟、腾讯、网易的offer,这要多亏了意外得到的这份JAVA核心知识整理(PDF)文档,这么多面试全都靠它了,哈哈~~有好东西还是要分享出来给大家,一起学习呀~下面就来看看吧~~ Java核心面试宝典:JVM,J...
2019-10-23 16:44:19
4157
13
原创 Kafka高可用,高吞吐量低延迟的高并发的特性背后实现机制
一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。点对点传递模式、发布-订阅模式。大部分的消息系统选用发布-订阅模式。Kafka就是一种发布-订阅模式。Kafka的ack机制,指的是producer的消息发送确认机制,这直接影响到Kafka集群的吞吐量和消息可靠性。ack有3个可选值,分别是1,0,-1,ack的默认值就是1。
2025-01-03 19:25:58
785
原创 美团后端已经OC(P7)!总结2024年最全Java高级岗面试题(含答案)!
美团后端已经OC(P7)!总结2024年最全Java高级岗面试题(含答案)!
2025-01-03 19:24:14
959
原创 阿里巴巴资深架构师熬几个通宵肛出来的Spark+Hadoop+中台实战pdf!
本书讲述了阿里巴巴的技术发展史,同时也是一部互联网技术架构的实践与发展史。3.2 "中心化"与"去中心化"服务框架的对比。6.4 大促秒杀活动催生缓存技术的高度使用。2.3 共享服务体系是培育业务创新的土壤。2.6 改变组织阵型会带来组织效能的提升。1.1 阿里巴巴共享业务事业部的发展史。2.5 为真正发挥大数据威力做好储备。5.1 数据库瓶颈阻碍业务的持续发展。9.1 服务化建设野蛮发展带来的问题。9.6 能力开放是构建生态的基础。2.2 服务需要不断的业务滋养。4.1 淘宝的共享服务中心概貌。
2025-01-03 19:19:38
719
原创 基于TCP的应用层消息边界如何定义?
网络上其他作者将这类问题称之为TCP“粘包”和“拆包”,与本文提到的消息边界本质上没有太多区别,之所以没有继续叫“拆包”是不想把概念复杂化,回到本质其实就是需要一种机制来定义消息的边界,帮助应用层来正确的解析消息。通过redis源码的简单分析,大体可以得到解决这类问题的关键点有以下两步:1.需要一种边界的定义,基于特殊字符、基于长度等;2.消息接收端需要暂存收到的内容,不到边界时等待,直到符合边界条件(收到了特殊字符或者收到的字节数达到约定的长度)。
2025-01-03 19:15:13
889
原创 再见 Docker!5分钟转型 containerd
从Docker转型containerd非常简单,基本没有什么门槛。只要把之前Docker命令中的docker改为crictl基本就可以了,果然是同一个公司出品的东西,用法都一样。所以不管K8S到底弃用不弃用Docker,对我们开发者使用来说,基本没啥影响!
2025-01-03 19:13:37
291
原创 这次答应我,一举拿下 I/O 多路复用
最基础的 TCP 的 Socket 编程,它是阻塞 I/O 模型,基本上只能一对一通信,那为了服务更多的客户端,我们需要改进网络 I/O 模型。比较传统的方式是使用多进程/线程模型,每来一个客户端连接,就分配一个进程/线程,然后后续的读写都在对应的进程/线程,这种方式处理 100 个客户端没问题,但是当客户端增大到 10000 个时,10000 个进程/线程的调度、上下文切换以及它们占用的内存,都会成为瓶颈。
2025-01-02 19:41:11
995
原创 JVM预热这个顽疾,我在k8s上终于改进了
但是由于 3000m 的 limits 要高得多,如果应用程序在任何时候都需要超过 1000m 的 CPU,并且该节点上有空闲的 CPU 容量,那么就不会在 CPU 上限制应用程序。这样就解决了问题,尽管我们的运行容量是稳定状态所需容量的 3 倍,但我们能够在我们的服务中或任何相关服务中没有问题地进行部署。因为有这个问题的大多数服务都已经有类似的资源配置,并且在 Pod 数量上超额配置,以避免部署失败,但是没有一个团队有将 CPU 的 request、limits 增加三倍并相应减少 Pod 数量的想法。
2025-01-02 19:34:39
624
原创 从bitmap到布隆过滤器,再到高并发缓存设计策略
在一个程序中,经常有让我们判断一个集合中是否存在某个数的case;大多数情况下,只需要用map或是list这样简单的数据结构,如果使用的是高级语言,还能乘上快车调用几个封装好的api,加几个if else,两三行代码就可以在控制台看自己“完美”而又“健壮”的代码跑起来了。
2025-01-02 19:31:50
840
原创 加速 SpringBoot 应用开发,官方热部署神器真带劲
SpringBoot官方开发工具,如果你的应用集成了它,即可实现热部署和远程调试。虽说使用SpringBoot官方的devtools可以进行热部署,但是这种方式更像是热重启,如果你想要更快的热部署体验的话可以使用JRebel。
2024-12-30 22:24:30
853
原创 一坨一坨 if/else 参数校验,被 SpringBoot 参数校验组件整干净了!
JSR303 定义了 Bean Validation(校验)的标准 validation-api,并没有提供实现。Hibernate Validation是对这个规范/规范的实现 hibernate-validator,并且增加了 @Email、@Length、@Range 等注解。Spring Validation 底层依赖的就是Hibernate Validation。JSR 提供的校验注解@Null 被注释的元素必须为 null@NotNull 被注释的元素必须不为 null。
2024-12-30 22:23:37
665
原创 干掉 XML Mapper,新出的 Fluent Mybatis 真香!
看完3个框架对同一个功能点的实现, 各位看官肯定会有自己的判断,笔者这里也总结了一份比较。
2024-12-29 16:38:15
370
原创 真香!阿里P8私藏的《百亿级并发系统设计》实战教程!
说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥有高并发经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器?缓存咋用的?MQ 咋用的?数据库咋用的?
2024-12-29 16:36:35
996
原创 记一次线上问题 → 对 MySQL 的 ON UPDATE CURRENT_TIMESTAMP 的片面认知
1、MySQL 自动设置成系统当前时间是有条件的,否则是不会更新的哦insert 行时,该列没有值该行的任意列的值改变了2、给大家留个疑问:为什么要有任意列的值改变了,MySQL 才会自动更新 modify_time 成当前系统时间,而不是只要有 SET 就更新 modify_time 成当前系统时间。
2024-12-29 16:28:51
718
原创 保命小诀窍:IDEA远程Debug技巧,你了解吗?
说到远程Debug这个功能,基本上大多IDE都会自带,但是一般情况下还真是很少用!笔者切换到IDEA之后,还真再就没用过远程Debug,直到昨天发现了一个非常基础的错误。
2024-12-29 16:27:13
694
原创 10个人9个答错,另外1个只对一半:数据库的锁,到底锁的是什么?
以上,我们介绍了InnoDB中的锁机制,一共有三种锁,分别是Record Lock、Gap Lock和Next-Key Lock。Record Lock表示记录锁,锁的是索引记录。Gap Lock是间隙锁,说的是索引记录之间的间隙。Next-Key Lock是Record Lock和Gap Lock的组合,同时锁索引记录和间隙。他的范围是左开右闭的。InnoDB的RR级别中,加锁的基本单位是 next-key lock,只要扫描到的数据都会加锁。唯一索引上的范围查询会访问到不满足条件的第一个值为止。
2024-12-27 17:01:22
777
原创 CAP理论,我拆开来细讲,用例子展现,够清晰了吧!
CAP 理论是分布式系统中的一个老生常谈的理论了,最早由 Eric Brewer 在一个讲座中提出。在这个讲座中,在传统 ACID 理论以及当时比较流行但是比较抽象的的设计指导理论 BASE 理论(当时的 BASE 理论还很抽象,直到好几年后才出现一份比较权威的被广泛接受的 BASE 理论完整解释和设计)的类比中,提出并且提出了,CAP,而是之后,Seth Gilbert 以及 Nancy Lynch 在一篇 Notes 中,证明了。
2024-12-27 16:59:44
580
原创 MySQL有哪些实现方式?何为插入,何为更新?
1、如何选择哪种方式上述三种方式各有优略,代码处理不依赖于具体的数据库,可移植性高,也不会引入特定数据库的在这方面的缺陷replace into 的方式不推荐(坑有点多),它完全可以由 INSERT UPDATE 替代INSERT UPDATE 可以减少我们的代码,但它是 MySQL 的拓展实现,只有 MySQL 支持,可移植性差2、针对 INSERT UPDATE 的 “坑”,我们可以结合具体的业务来设置 innodb_autoinc_lock_mode ,适当地避免它的 “坑”
2024-12-27 16:58:53
1058
原创 “他”靠这份GitHub star过万的1121页图解算法成功杀进字节跳动!
前两天收到读者喜报,说是进字节了和他交流了一下他的学习心得,发现他看的资料也是我之前推荐过的算法进阶指南,这里推荐给大家,github star 可是过万哦!质量非常高!这份算法笔记与其他的不同,均是用图解,gif 的方式来针对常见的题型进行详细的说明,非常的浅显易懂!简单介绍一下这份笔记比如判断环的入口位置,画了一张图,配以简单的文字描述让大家看完瞬间豁然开朗!比如很多读者表示不了解递归的概念,结果文中一张配图就说明清楚了这个概念再比如用队列来实现 BFS,一张动图一目了然。
2024-12-27 16:56:27
1073
原创 蚂蚁面试官:Zookeeper 的选举流程是怎样的?我当场懵逼了
所以,我们可以总结下,Zookeeper 集群按 myid 从小到大依次启动初始化时,在超过半数机器的投票的情况下,谁的 myid 最后,谁就是 Leader,知道这个定律,不同的集群规模我们都可以推算出谁是 Leader。1)集群有 3 台机器,第 2 大的 myid 所在服务器就是 Leader;2)集群有 4 台机器,第 3 大的 myid 所在服务器就是 Leader;3)集群有 5 台机器,第 3 大的 myid 所在服务器就是 Leader;
2024-12-27 16:54:15
744
原创 CAS原理分析,解决银行转账ABA难题!
CAS即Compare And Swap的缩写,翻译成中文就是比较并交换,其作用是让CPU比较内存中某个值是否和预期的值相同,如果相同则将这个值更新为新值,不相同则不做更新,也就是CAS是原子性的操作(读和写两者同时具有原子性),其实现方式是通过借助C/C++调用CPU指令完成的,所以效率很高。CAS的原理很简单,这里使用一段Java代码来描述大致过程是将内存中的值、我们的期望值、新值交给CPU进行运算,如果内存中的值和我们的期望值相同则将值更新为新值,否则不做任何操作。
2024-12-26 11:30:00
1351
原创 Springboot 使用 Mybatis 启动失败排查定位!
为此绞尽脑汁,Google 了大量帖子,有的帖子说是数据库没连上,有的帖子说是 spring-logging 的依赖冲突,等等,试了很多办法,都没有解决。原来是,在 application.yml 里我指定 mybatis 的别名扫描路径下,有 Bean 名字冲突。
2024-12-26 10:30:00
511
原创 为什么不建议在MySQL中使用 utf8?
和。如果使用的话,存储 emoji 符号和一些比较复杂的汉字、繁体字就会出错。为什么会这样呢?这篇文章可以从源头给你解答。
2024-12-26 09:30:00
948
原创 蚂蚁面试官:Zookeeper 的选举流程是怎样的?我当场懵逼了
所以,我们可以总结下,Zookeeper 集群按 myid 从小到大依次启动初始化时,在超过半数机器的投票的情况下,谁的 myid 最后,谁就是 Leader,知道这个定律,不同的集群规模我们都可以推算出谁是 Leader。1)集群有 3 台机器,第 2 大的 myid 所在服务器就是 Leader;2)集群有 4 台机器,第 3 大的 myid 所在服务器就是 Leader;3)集群有 5 台机器,第 3 大的 myid 所在服务器就是 Leader;
2024-12-26 08:30:00
904
原创 Spring IoC Container 原理解析
Object可以为string 也可以为 class<?也可以为空,为空时基本都是要通过factoryBeanName、factoryMethodName去实例化对象scopeString值:singletonprototype默认为空,为空时就当单例处理]singleton详见@Scope注解;@Scope注解的使用还是有点窍门的,例如@RefreshScope是什么原理?lzyInitBoolean是否延迟加载。
2024-12-26 07:30:00
1173
原创 SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了!
用惯了SpringBoot的朋友估计会想到,有没有什么办法可以直接定义好需要导出的数据对象,然后添加几个注解,直接自动实现Excel导入导出功能?EasyPoi正是这么一款工具,如果你不太熟悉POI,想简单地实现Excel操作,用它就对了!EasyPoi的目标不是替代POI,而是让一个不懂导入导出的人也能快速使用POI完成Excel的各种操作,而不是看很多API才可以完成这样的工作。
2024-12-25 20:14:17
538
原创 扯一把 Spring 的三种注入方式,到底哪种注入方式最佳?
循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的。不过由于种种原因,我们可能还是会遇到一些循环依赖的问题,特别是在面试的过程中,面试考察循环依赖,主要是想考察候选人对 Spring 源码的熟悉程度,因为要把循环依赖这个问题解释清楚,涉及到不少 Spring 源码。今天松哥抽空和大家简单聊聊这个话题,问题比较庞大,我可能花几篇文章来和大家分享下,今天先来聊聊实例的注入方式。
2024-12-25 20:12:11
935
原创 分布式事物如何保证接口请求顺序性?
先抛出一个问题大家思考一下:在分布式系统中,我们如何保证多个请求的顺序性问题,比如有A/B两个系统,系统A在一次订单业务处理中,向B系统发送三次请求,先进行插入订单操作,然后对订单状态进行修改,最后增加用户积分。但是这三次请求分别落在了不同的机器上,并且插入订单的操作由于一些意外导致延迟,修改订单操作先执行了,但是此时并没有订单信息,也就会出现我们期望之外的结果了。
2024-12-25 20:10:18
419
原创 Spring Cloud Gateway夺命连环10问?
Predicate来自于java8的接口。Predicate接受一个输入参数,返回一个布尔值结果。该接口包含多种默认方法来将Predicate组合成其他复杂的逻辑(比如:与,或,非)。可以用于接口请求参数校验、判断新老数据是否有变化需要进行更新操作。Spring Cloud Gateway内置了许多Predict,这些Predict的源码在org.springframework.cloud.gateway.handler.predicate包中,有兴趣可以阅读一下。
2024-12-25 20:08:51
838
原创 我这样写代码,比直接使用 MyBatis 效率提高了 100 倍!
本文介绍了在复杂列表检索领域的超强能力。它之所以可以极大提高这类需求的研发效率,根本上归功于它独创的动态字段运算符与多表映射机制,这是传统 ORM 框架所没有的。支持聚合查询支持Select|Where|From子查询支持实体类嵌入参数支持字段转换器支持Sql 拦截器支持多数据源支持自定义注解等等要了解更多,先来点个 Star 吧 :GithubGitee。
2024-12-25 20:05:11
785
原创 阿里二面:RocketMQ 消息积压了,增加消费者有用吗?
比如一个 Topic 有 4 个 MessageQueue,2 个消费者进行消费,如果增加一个消费者,明细可以加快拉取消息的频率。如果消费者的数量大于等于 MessageQueue 的数量,增加消费者是没有用的。这种策略 broker 的命名必须按照格式:机房名@brokerName,因为消费者分配队列的时候,首先按照机房名称过滤出所有的 MessageQueue,然后。:外部系统虽然响应正常,但是增加多个消费者后,外部系统的接口调用量会突增,如果达到吞吐量上限,外部系统会响应变慢,甚至被打挂。
2024-12-24 22:14:25
889
原创 升级 SpringBoot 2.6.x 版本后,Swagger 没法用了!
今天带大家体验了一把SpringBoot升级2.6.x版本的过程,主要解决了循环依赖和Swagger无法使用的问题,希望对大家有所帮助!
2024-12-24 22:12:14
854
原创 神器 SpringDoc 横空出世!最适合 SpringBoot 的API文档工具来了!
SpringDoc是一款可以结合SpringBoot使用的API文档生成工具,基于OpenAPI 3,目前在Github上已有1.7K+Star,更新发版还是挺勤快的,是一款更好用的Swagger库!值得一提的是SpringDoc不仅支持Spring WebMvc项目,还可以支持Spring WebFlux项目,甚至Spring Rest和Spring Native项目,总之非常强大,下面是一张SpringDoc的架构图。
2024-12-24 22:09:48
1119
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人