自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(986)
  • 收藏
  • 关注

原创 公司项目并发量都特小,自己如何实际接触高并发项目?

不管是初入职场的小菜鸟还是有一些工作年限的老司机,系统设计问题对他们来说都是一大困扰。前者主要是在于面试;面试官来一个如何从零到一设计一个完整的系统?大多数人都会直接懵了,因为系统设计覆盖面广,而网上资料又不能面面俱到,单独背背文章肯定是不行的;后者主要在于晋升;想要从程序员进阶到架构师,系统设计是必须要踏入的一道坎,他对你的技术广度跟深度都会有一定程度的考察。

2024-11-01 16:44:58 124

原创 Java程序员如何进一步学习netty?

绝大部分人对于Netty这个技术栈平时的接触肯定是不多的;大家只知道它是一个高性能、异步事件驱动的NIO框架,却从来没有深入研究过;目前很多的开源框架都开始将底层的通信框架切换到Netty.要想成为一位高级Java工程师,Netty将是你必须要踏过的坎!

2024-11-01 16:31:53 307

原创 2024最新大厂Java面试真题汇总

Java面试是一个老生常谈的问题。很多程序员找工作流程就是熟悉的网上开始找面试题,面试手册,面试宝典,一收藏就是一大把,看到什么都觉得Nice,看几眼之后就收藏夹吃灰,对面试其实起不到什么实际性帮助。

2024-10-31 16:45:21 359

原创 以Java为例,聊聊我自己阅读开源框架源码的一些心得

如果你要看某一个框架的源码,第一步当然是访问官网,搞清其组成,确定其核心类有哪些,看源码过程中可以配合画一些时序图,加以debug源码验证,这一套流程下来,没有啥源码你搞不定的。当然我在这里只能简单说,因为源码不能速成,是你摸索到适合你自己的方法后靠平时的积累跟坚持,下面LZ也是大致总结了几个核心点,希望能对诸位有一些启发。

2024-10-31 16:23:50 723

原创 如何看待Java技术圈的八股文面试怪像?

很多人都说八股文没用,这里聊一下我对八股文的一些看法吧:一个知识点,你能把使用以及原理说出来,我称之为八股,但是你能把底层关联以及业务使用,优化历程也能搞清楚,我称之为能力;这两点无疑是现在面试都会考察的。

2024-10-30 20:53:14 574

原创 3天带你精通redis,阿里最新redis全栈小册真香

Redis这玩意不用多说,Java后端打工人就没有没接触过的,现在出去面试基本上是必问项;而且在工作中在项目中还能起很大的作用。它不仅能减少数据库的操作、并且你还可以利用redis的一些数据结构如set sorted set 解决一些特定的问题、利用单线程实现分布式锁、一些简单的订阅发布等等。

2024-10-30 20:44:19 402

原创 轻松构建完整知识体系,阿里SpringBoot原理最佳实践真香

Spring Boot不用多说,是咱们Java程序员必须熟练掌握的基本技能。工作上它让配置、代码编写、部署和监控都更简单,面试时互联网企业招聘对于Spring Boot这个系统开发的首选框架也是考察的比较严苛,如果你不是刚入行,只是停留在会用的阶段,那是远远不够的。

2024-10-29 15:45:36 418

原创 Spring全家桶如何速成?

Spring可以说是我们Java入门时最先接触的框架了,只要你是Java程序员,它就是你绕不开必须要学习的一个点。对于我们这些有工作经验的Javaer来说,你不仅要学好Spring,还需要学好后续由它衍生一系列的框架组件(我们一般把他们称为Spring全家桶)。

2024-10-29 15:33:40 360

原创 SpringCloud是什么时候成为Java面试必备项的?

SpringCloud想必每一位Java程序员都不会陌生,很多人一度把他称之为“微服务全家桶”,它通过简单的注解,就能快速地架构微服务,这也是SpringCloud的最大优势。但是最近有去面试过的朋友就会发现,现在面试你要是没有SpringCloud经验基本面试机会都不会有。

2024-10-28 16:38:23 459

原创 如何学JVM?

对于JVM,我想大部分小伙伴都是要面试了才会去学,其余时间基本不会去看(掐指一算,你们书架上面的深入理解Java虚拟机第三版应该都一层灰了吧【手动狗头】)。但值得一说的是,当你工作多年之后,你遇到的项目会越来越复杂,遇到的问题也会越来越复杂:各种古怪的内存溢出,死锁,应用崩溃……这些都会迫使你不得不去深入学习JVM底层原理

2024-10-28 16:25:49 277

原创 如何获取高并发经验?

据有关数据表明,现在基本工作年限超过5年的Java开发岗以及各大厂招聘岗位,对于这块内容是必定会考察的。这也就意味着,你想要在今年这个大环境下,找到一份薪水高且发展前景好的岗位,不关基础知识还要有良好的编码习惯和能力、排查问题、解决问题的能力以及整体系统的设计能力和架构能力。

2024-10-27 17:16:03 366

原创 为什么连工龄比较长的Java老开发也不会面试了?

前几天,跟个老朋友吃饭,他最近想跳槽去大厂,觉得压力很大,问我能不能分享些所谓的经验套路。每次有这类请求,都觉得有些有趣,不知道你发现没有大家身边真的有很多人不知道怎么面试,也不知道怎么准备面试,哪怕是一些工龄比较长的“老开发”:

2024-10-27 17:08:01 849

原创 金九银十如何抱佛脚?2023最新大厂 Java 面试真题合集(附完整答案解析)

2021 秋招眼看着就要来了,但是离谱的是,很多同学最近才想起来还有秋招这回事,所以纷纷临时抱佛脚,问我有没有什么快速磨枪的方法,但国内大环境如此,你不背,你就找不到满意的工作,很现实的一个事情。当然,你可以选择出淤泥而不染,身体力行的表示反抗,对推动国内互联网陋习改革出一份力,那我还是很佩服的。这些面试资料都是我通过各种渠道收集到的大厂面试真题,并附有最新的权威答案,绝不是网络上那些已经是几年前甚至十几年前的面试题所能媲美的,,争取早日上岸,拿到 offer 后别忘了回来给我点个。

2023-09-01 16:07:37 557 1

原创 万字解析!Java - ThreadPoolExecutor源码

首先ThreadPoolExecutor中,一共提供了7个参数,每个参数都是非常核心的属性,在线程池去执行任务时,每个参数都有决定性的作用。但是如果直接采用JDK提供的方式去构建,可见设置的核心参数最多就两个,这样就会导致对线程池的控制粒度很粗。所以在阿里规范中也推荐自己创建自定义线程池。自定义构建线程池,可以细粒度的控制线程池,去管理内存的属性,并且针对一些参数的设置可能更好的在后期排查问题。1234567publicint// 核心工作线程(当前任务执行结束后,不会销毁)int。

2023-09-01 14:08:14 557

原创 万字超详细解析!Spring之基于注解的声明式事务

try {// 开启事务:关闭事务的自动提交// 核心操作// 提交事务// 回滚事务}finally{// 释放数据库连接编程式事务的缺陷:细节没有被屏蔽:所有细节都需要程序员自己来完成,比较繁琐。代码复用性不高:每次实现功能都需要自己编写代码,代码没有得到复用。编程式:自己写代码实现功能声明式:通过配置让框架实现功能因为没有使用事务,图书的库存更新了,但是用户的余额没有更新。

2023-09-01 14:05:29 989

原创 7K字详解换上 HikariCP 连接池到底有多快?

接下来介绍了数据库连接池中速度很快的 HikariCP ,它在池化技术之上,又通过编码技巧进行了进一步的性能提升,HikariCP 是我重点研究的类库之一,我也建议你加入自己的任务清单中。数据库是我们工作中经常使用到的组件,针对数据库设计的客户端连接池是非常多的,它的设计原理与我们在本文开头提到的基本一致,可以有效地减少数据库连接创建、销毁的资源消耗。我们再来介绍一下对象的生成过程,如下图,对象在进行获取时,将首先尝试从对象池里拿出一个,如果对象池中没有空闲的对象,就使用工厂类提供的方法,生成一个新的。

2023-09-01 13:54:54 234

原创 2023汇总Java 面试题 1300 问,刷完直接拿大厂offer!

前三者 LZ 将淋漓尽致地挥毫于这篇文章中,至于总结在于个人,实际上越到后面你会发现面试并不难,其次就是在刷题的过程中有没有去思考,刷题只是次之,这又是一个层次了,这里暂时不提后面再谈。现在大厂内卷现象泛滥,而且 996 的传统依旧肆虐。但没有哪位程序员能架得住互联网大厂的高薪职位诱惑。特别是我还有一位在阿里工作 7 年多的老表,在其耳旁风之下,不断将大厂描绘的美丽风景刻画在我脑海中,也让我一直有着想进大厂镀金的梦想。

2023-08-31 17:27:57 116

原创 【干货分享】18 个一线工作的常用 Shell 脚本,建议收藏!

假设服务器环境为 lnmp,近期访问经常出现 502 现象,且 502 错误在重启 php-fpm 服务后消失,因此需要编写监控脚本,一旦出现 502,则自动重启 php-fpm 服务。加个死循环,如果IP可用就退出,不可用提示继续输入,并使用awk判断。应用场景:希望将执行结果或者位置参数赋值给变量,以便后续使用。方法1:EOF标准输出作为expect标准输入。方法1:根据访问日志(Nginx为例)方法3:将expect脚本独立出来。方法2:通过TCP建立的连接。方法2:通过日志获取登录状态。

2023-08-31 17:10:21 141

原创 Java与es8实战:用JSON创建请求对象(比builder pattern更加直观简洁)

接下来要验证的是用字符串来创建请求对象,这个比较实用,用字符串创建请求对象,给我们的应用开发提供了很大的自由度,废话少说,开始写代码。使用者可以用三种方式将JSON内容传给Builder,再由Builer根据传入的内容生成CreateIndexResponse实例。来看看CreateIndexResponse的builder的源码,集成了父类,也实现了接口,单元测试代码中也增加一个方法,用于验证刚才写的create方法。该项目源码的仓库地址,https协议。该项目源码的仓库地址,ssh协议。

2023-08-31 17:06:16 361

原创 字节面试官:一个 SpringBoot 项目能处理多少请求?(有坑)

这篇文章是基于“一个 SpringBoot 项目能同时处理多少请求?”这个面试题出发的。但是经过我们前面简单的分析,你也知道,这个问题如果在没有加一些特定的前提条件的情况下,答案是各不一样的。比如我再给你举一个例子,还是我们的 Demo,只是使用一下 @Async 注解,其他什么都不变:再次启动项目,发起访问,日志输出变成了这样:同时能处理的请求,直接从 Tomcat 的默认 200 个变成了 8 个?因为 @Async 注解对应的线程池,默认的核心线程数是 8。

2023-08-31 17:00:03 131

原创 微信支撑 10 亿用户背后核心技术:百亿级流量 Java 并发与网络编程实战教程

OSI 与 TCP/IP 网络模型实战远程调用的设计模式─代理模式使用网络编程实现分布式远程调用远程调用两大方案一 RMI 与 RPC综合案例:通过底层技能实现 RMI。

2023-08-30 17:00:30 135

原创 超详细解析!Redis的五大数据类型的数据结构

数据类型和底层数据结构对应关系每种数据结构特性不一样,操作时间也不一样。数据结构的时间复杂度。

2023-08-30 16:53:46 712

原创 2K字解析!靠Java NIO 图解 Netty 服务端启动的过程

了解整体Netty常用的核心组件后,并且对比了传统IO模式。在对比过程中,找到了传统IO对应Netty中是如何实现的。最后我们了解到在netty中常用的那些组件。本文在了解下这些核心组件的前提下,进一步了解组件如何在整个服务器启动过程如何被创建,如何组件之间配合来使用。首先也是先了解下大概服务端的启动过程,并且在了解过程中我们带着自己的问题去在学习过程中探寻答案。netty服务端启动是如何设置非阻塞模式的?服务端启动后事件是如何注册到selector上?整体了解到netty服务端的启动过程。

2023-08-30 16:49:16 103

原创 Github标星45.6K!阿里P8大佬深入讲解 Java 虚拟机,把 GC 算法与实现讲得通俗易懂

我们都知道 Java 在运行时内存分为了五个部分:程序计数器、虚拟机栈、本地方法栈、堆、方法区。其中程序计数器、虚拟机栈、本地方法栈所占用的内存是不需要垃圾收集的,这三个区域的内存随着线程生,随着线程死,我们需要关注的其实只有堆和方法区这两块内存的垃圾收集。这时候就需要用到 GC 技术了。对于垃圾回收概念,它一出现常常伴随着一连串的问题:GC 具体做了什么?哪些内存需要回收?什么时候回收?怎么回收?垃圾回收算法 &垃圾回收器有哪些?......如果你是一个新手,这些问题扑面而来的时候你肯定会一脸懵逼,不知道

2023-08-29 16:45:26 95

原创 无语死!Quartz 重复调度问题,你遇到过么?

就我个人而言,为了学Quartz,刚开始去翻一个2.4MB大小的源码是毫无头绪,并且效率低下的,所以立刻转换方向,先了解这个框架的运行模式,在做什么,有哪些模块,是怎么做的,再找主线,翻相关的源码。也就是说,传入的callback方法在执行的过程中是携带了指定的锁,并开启了事务,注释也提到,lockName就是指定的锁的名字,如果lockName是空的,那么callback方法的执行不在锁的保护下,但依然在事务中。调度线程会一次性拉取距离现在,一定时间窗口内的,一定数量内的,即将触发的trigger信息。

2023-08-29 16:37:04 1615

原创 一文带你深入理解HashMap源码

HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。数组 + 链表数组 + 链表 / 红黑树思考:为什么1.8之后,HashMap的数据结构要增加红黑树?

2023-08-29 16:28:23 70

原创 灵魂一问:一万八千条线程,线程为啥释放不了?

其实这个算比较低级的错误,很简单的并发问题,但是一不注意就容易写出来。但是排查难度挺高的,因为大量的线程都是没有我们一点业务代码堆栈,根本不知道线程是从哪里创建出来的,和以往的排查方法算是完全不同。这次是属于运气爆棚然后找到的代码,排查完问题我也想过,有没有其他的方法来定位这么多相同的线程是从哪里创建出来的呢?我试着用内存快照去定位,确实有一点线索,但是这属于是马后炮了,是我先读过源码才知道内存快照可以定位到问题,有点从结果来推过程的意思,没啥好说的。

2023-08-29 16:19:41 349

原创 离谱了,昨晚做梦面试官问我三色标记算法

因为白色对象还没被访问过,怎么能算所有引用都扫描过了呢,所以他就不可能是黑色。

2023-08-28 16:49:37 85

原创 起飞!20天等待,申请终于通过,安装和体验IntelliJ IDEA新UI预览版

另外,我当前的电脑中已经装了正版的IDEA的2022.1.2 (Ultimate Edition),接下来使用预览版的时候,可以两个版本同时打开,做即时的对比,如果您也想免费使用IDEA Ultimate Edition,可以参考。下图是本文的重点,左侧是正式版,右侧是新UI的体验版,都打开了项目、终端、源码、maven等窗口,大家对比看看效果吧,有的按钮位置变了,但还是能找到...IDEA会启用新的UI,这事情之前已经在多位大佬的博客中有提到了,当时我也按照大佬们的文章去递交了试用体验版的申请。

2023-08-28 16:40:13 176

原创 重磅!Spring Boot 3 大版本齐发,Java 8 版本马上要退出历史舞台了

虽然如此,我觉得现在还是有很多公司大量在使用 Spring Boot 3.0 以下,甚至 2.0 及以下的版本,因为版本更新太快,升级兼容太麻烦了,也怕影响线上业务,公司都是求业务稳定,除非是遇到重大漏洞或者影响业务,一般都会保守升级。另外,还要看公司的整体环境,比如必须考虑的 JDK 版本,如果已经升级到了 JDK 17,完全可以升级到 Spring Boot 3.x,如果执着 JDK 8,那只能保持在 Spring Boot 2.7.x 及以下版本。元上车,一次订阅,永久学习,永久免费提供更新。

2023-08-28 16:36:15 1297

原创 2023版Java面试的“葵花宝典”重磅开源!5天时间Github飞速霸榜

项目原型曾在杭州上线运行。(含:Java 基础,异常,NIO,HashMap,Tomcat,JVM 堆栈,内存模型,调优,GC,老年代,新生代,垃圾回收,面试题等...)(含:spring 原理,周期,ioc 原理,MVC 事务,AOP 原理,Boot 配置,安全,监视器,面试题等...)(含:mybtis 缓存,运用原理,分页,Redis 事务,主从架构,缓存,穿透,穿击,降级面试题等...)(含:数据库基础,数据类型,引擎,索引,事务,锁,视图,sql 语句,优化,mysql 锁,面试题等...)

2023-08-26 16:20:06 227

原创 起飞!终于可以彻底告别手写正则表达式了

君子善假于物也,虽然我很菜,但是工具好用啊,我+好用的工具,等于我也很厉害了。欢迎捧场,赶紧用一用吧,觉得好用的话,可以推荐给身边的小伙伴也用一下。

2023-08-26 16:14:27 794

原创 问题排查后,nginx的反向代理感觉失效了一样

vnc登录进去后,根据端口号找到对应的进程,发现是Apache HTTP Server,这个东西我也不熟悉,知道它类似于nginx,功能类似,但是几乎一直没用过,所幸,在程序的根目录下,找到了一个配置文件,配置文件中配置了反向代理,将请求反向代理到了服务器C:8088端口。看我上图标红的下面那一行,是我们服务端nginx往客户端发的,68个字节,也有个重传字样,看起来,意思是我们也发生了重传,重传了哪个包呢,就是包2,也就是握手时候的我方回复的syn+ack那个包。查看,我看了我们机器,值为128;

2023-08-26 15:43:36 1119

原创 20000字硬核拆解!AQS源码

AQS即的简称,翻译过来就是抽象队列同步器的意思,由Doug Lea大神开发的。说他抽象是因为它提供的是一个基于队列的同步器框架,定义了一些基础功能方法(控制状态变量,获取和释放同步状态方法以及入队出队操作等),具体场景使用只需要根据需要实现对应的方法即可。我们在锁(比如ReentrantLock)、并发工具类(比如CountDownLatch)都可以看到内部类继承了,也就是说AQS才是这些类的基石。说了这么多,感觉把抽象说的越抽象了,下面我们从几个栗子入手吧。

2023-08-26 14:58:31 64

原创 7K字详解!Spring Boot + Druid 实现监控 MySQL 性能,既简单又实用

我们都使用过连接池,比如,虽然HikariCP的速度稍快,但Druid能够提供强大的监控和扩展功能,也是阿里巴巴的开源项目。Druid是阿里巴巴开发的号称为监控而生的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括等等,秒杀一切。Druid可以很好的监控DB池连接和SQL的执行情况,天生就是针对监控而生的DB连接池。Spring Boot默认数据源与。

2023-08-25 15:26:20 1799

原创 离谱了!公司来了个大佬,把 FullGC 40 次/天优化为 10 天 1 次?

就在我还在调查入口流量的问题时,另外一个同事找到了根本的原因,原来是在某个条件下,会查询表中所有未处理的指定数据,但是由于查询的时候 where 条件中少加了模块这个条件,导致查询出的数量达 40 多万条,而且通过 log 查看当时的请求和数据,可以判断这个逻辑确实是已经执行了的,dump 出的内存中只有 4W 多个对象,这个是因为 dump 时候刚好查询出了这么多个,剩下的还在传输中导致的。在优化的过程中,我们的主管发现了有个对象 T 在内存中有一万多个实例,而且这些实例占据了将近 20M 的内存。

2023-08-25 14:42:19 86

原创 【工具推荐】Github14.4K Star,一款外观漂亮、运行快速、动画细腻的开源免费UI组件库

之前给大家推荐了很多后台模版,有读者希望推荐一些跟通用的好看组件,毕竟出了后台还有很多其他场景嘛。

2023-08-25 14:34:27 131

原创 Github又一巅峰神作!14 年工作经验大咖出品“JVM&G1 GC 深入学习手册”

通过本章的学习,你能够了解以下内容:什么是 Serviceability Agent 工具?了解相关概念、工具的基本功能及实践介绍。了解工具的扩展功能、插件介绍。对一些常见问题作出总结。总的来说,没有一招鲜式的性能调优秘籍或包罗万象的性能百科,能让你摇身一变成为老练的 GC 性能调优专家。相当数量的 GC 性能问题还需要专门的知识技能才能解决。性能调优在很大程度上是一门艺术。解决的 GC 性能问题越多,技艺才会越精湛。我们不只要关心 GC 的持续演进,也要积极地去了解它的设计原理和设计目标。

2023-08-25 14:21:17 62

原创 面试造火箭?GitHub 飙升“2023(Java 岗)面试真题汇总”头条转载 40 万

在 it 行业迅速发展的现在,技术越来越高深复杂。随之而来的就是面试的难度跟知识的存储了,要背越来越多的八股文了问的越来越细了,越来越广泛,和越来越底层了。现在的面试摆明了就是让我们“而现在又恰逢是金三银四了,面试或者跳槽的小伙伴相信这段时间应该有很多。可能有在面试路上的也有在准备跳槽的,或多或少心里都想着怎样才能顺顺利利的入职。为了帮助到大家 我把我这些年觉得非常实用的 Java 面试题合集分享出来,涉及知识点非常全面!面中率极高实战效果绝对可以的。

2023-08-24 15:51:39 51

原创 都2023了,Spring容器获取Bean的这9种方式你都知道吗?

随着SpringBoot的普及,Spring的使用也越来越广,在某些场景下,我们无法通过注解或配置的形式直接获取到某个Bean。比如,在某一些工具类、设计模式实现中需要使用到Spring容器管理的Bean,此时就需要直接获取到对应的Bean。本文为大家整理汇总了常见的获取Bean的方式,并提供一些优劣分析,方便大家在使用到时有更好的选择。同时,也会为大家适当的普及和拓展一些相关知识。

2023-08-24 15:36:32 1432

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除