- 博客(545)
- 收藏
- 关注
原创 java线程-Java内存模型
cpu,内存,I/O设备都在不断的迭代,不断朝着更快的方向努力,但是,在这个快速发展的过程中,有一个核心矛盾一直存在,就是这三者的速度差异。cpu > 内存 > i/0。根据木桶理论,程序整体的性能取决于最慢的操作-i/o设备的读写,也就是说单方面提高cpu性能是无效的。
2025-04-11 14:15:01
339
原创 一线大厂Java八股文合集PDF版分享,内容多达700多页
这份资料而我给他分成了:Java语言、Java框架、计算机基础、数据库、中间件五大部分,而这五大部分在分为多个小模块,内容多达711页,不管你是新手还是精英,都应该拿下好好看看,以备不时之需,话不多说看内容。如果你对这份《Java八股文合集》感兴趣,篇幅有限,资料已整理成文档。1.RocketMQ(23道)2.MyBatis(20道)1.Java基础(53道)2.Java集合(30道)3.Java并发(61道)1.spring(35道)1.计算机网络(62道)1.MySQL(66道)2.操作系统(33道)
2025-04-11 14:02:12
27
原创 面试官:怎样使用arthas进行热部署,解决线上问题?
idea提示是否要重启SpringBoot,这个时候直接点Cancel,取消。如果重启了就会导致新的代码被加载到新进程啦。总的来说,arthas 热部署可以提高开发和调试的效率,快速定位和解决线上问题,以及优化应用的性能。这时候我们可以再使用jad来看这个类的情况,会发现还是原来的代码,Hello World!加载外部的.class文件,retransform jvm 已加载的类。然后开始使用retransform来热部署新的class文件。我们可以看到,对应的代码被我们重新加载啦。或者使用mc进行编译。
2025-04-10 13:29:34
236
原创 【2025春招必看】Spring Boot巅峰之路:从零基础到架构师,这份Java王者攻略让你Offer拿到手软!
🚀 它用颠覆式的"约定优于配置"理念,让传统JavaEE的繁琐配置彻底成为历史,开发者效率飙升300%!无论你是刚入门的小白,还是久经沙场的老将,Spring Boot都能让你在2025春招战场上。在当今Java江湖,Spring Boot早已不是简单的开发框架,而是横扫企业级应用的。:一个注解搞定数据库、缓存、消息队列,连阿里P8都惊叹!:微服务、云原生、响应式编程,全部无缝集成!:告别XML地狱,一键生成企业级工程骨架!:无需部署,代码即服务,性能碾压传统架构!
2025-04-09 20:58:14
276
原创 Java工程师必看!2025字节跳动面试最全参考答案,内卷终结者!
这里有一份我爆肝两个月整理出的《2025年字节跳动Java面试参考手册》Java基础、集合类Set、Java多线程、Java内存模型和垃圾回收、数据结构、数据库、网络、操作系统等,几乎覆盖了所有 Java 相关的面试真题!在当今竞争激烈的技术职场,Java 工程师们犹如在汹涌波涛中奋力前行的勇士。而 2025年字节跳动的面试,就像是一座难以跨越却又充满诱惑的高峰。此刻,一份号称“内卷终结者”的最全参考答案即将为您揭晓,您准备好迎接这改变命运的时刻了吗?四、Java内存模型和垃圾回收。
2025-04-09 20:51:59
180
原创 MySQL索引失效十种场景与优化方案
本文第一进行测试数据准备,第二介绍执行计划相关知识,第三介绍索引失效10种场景:查询类型错误,索引列参与运算,错误使用通配符,未用到覆盖索引,OR连接无索引字段,MySQL放弃使用索引,联合索引中索引不完整,索引中断,非等值匹配,最左索引缺失。
2025-04-09 13:54:37
790
原创 Java 高级篇:JVM 垃圾回收机制
本文详细介绍了 JVM 垃圾回收机制的原理、内存结构、垃圾收集器、垃圾回收算法,以及实战与优化方法。通过深入了解 JVM 的垃圾回收机制,我们可以更好地优化 Java 程序的性能,降低内存占用,提高系统稳定性。垃圾回收机制是 Java 语言的核心优势之一,但也并非完美无缺。作为开发者,我们应该充分了解垃圾回收的原理和限制,避免产生内存泄漏等问题,并在需要时进行适当的优化。同时,不断学习和实践,掌握更多的 Java 高级技能,以提升我们的开发能力和水平。
2025-04-09 13:47:55
667
原创 Java常用JVM参数实战
本文介绍了一些常用的JVM参数,并给出了具体的使用例子和作用分析。合理配置这些参数可以优化内存管理、垃圾回收、性能监控等方面,提升Java应用程序的性能和稳定性。在实际应用中,建议根据应用程序的需求和性能特点,综合考虑不同参数的使用。同时,使用工具进行性能监控和分析,以找出潜在的问题和瓶颈,并根据实际情况进行调优。
2025-04-09 13:47:04
419
原创 深入理解JSP
虽然脚本声明和脚本片段已经可以书写Java代码了,但是如果我们要使用java代码向页面输出一些内容,还是需要 使用原来的response对象,比较繁琐,因此,我们需要一个更加简便的方式,可以代替response。指令用来声明JSP页面的一些属性,比如编码方式,文档类型。动态包含包含的是页面的执行结果,如果A包含B,则先将B执行,再将B执行的结果包含到A页面中,执行A页面。通过上面的执行流程,我们可以找到jsp生成的.java源文件,这样就可以知道jsp的真正原理,同时可以看下jsp为什么是servlet。
2025-04-09 13:43:58
783
原创 SpringBoot自带ThreadPoolTaskScheduler实现数据库管理定时任务
ThreadPoolTaskScheduler实现定时任务主要是通过对线程的管理来进行操作,添加任务时即创建一个线程,删除时即将该线程删除。因此在创建定时任务只需要创建线程就可以,在创建线程时,通过反射来获取对应的方法及传递参数。上述就是使用SprngBoot中的ThreadPoolTaskScheduler来实现定时任务,我们只要使用前端连接相应的接口就可以实现管理人员管理定时任务的功能。源码地址:github.com/lovejiashn/…
2025-04-09 13:37:57
830
原创 Java操作Excel(Apache Poi详解)
在Java中操作Excel是日常工作中经常遇到的问题。使用Apache Poi是一种流行且广泛使用的方式,它提供了各种库和工具,可以帮助开发人员直接从Java代码中读取、写入和处理Excel文件。本篇文章将详细介绍如何使用Apache Poi来进行Excel文件操作,在这里,我们着重讲解Apache Poi的基础知识、如何读取Excel文件以及如何编写数据到Excel文件。
2025-04-09 13:35:27
592
原创 Redis 网络模型
内核将数据写入 内核缓冲区,通过系统调用把 内核缓冲区中的数据拷贝的用户缓冲区中:用户把数据写入 用户缓冲区,通过系统调用把 用户缓冲区中的数据写入到内核缓冲区中。
2025-04-09 13:32:11
661
原创 基于jib插件,实现Docker部署springboot项目
jib Github地址 github.com/GoogleConta… 谷歌开源的,实力毋庸置疑,star有11.9k。Jib是一个由Google开发的基于Docker镜像构建的工具,它的Maven插件可以让我们以更高效的方式构建和管理Docker镜像。使用Jib,我们可以摆脱手动编写Dockerfile的繁琐过程,而是直接将我们的Java应用程序打包为镜像,并将其推送到容器仓库中,从而大大简化了Docker容器化的过程。使用jib插件也可以直接打包成tar镜像包,load进docker里使用。
2025-04-09 13:28:41
544
原创 一文带你了解springboot3+jwt+security的使用
Spring Security已经成为java后台权限校验的第一选择.今天就通过读代码的方式带大家深入了解一下Security,本文主要是基于开源项目spring-boot-3-jwt-security来讲解Spring Security + JWT(Json Web Token).实现用户鉴权,以及权限校验. 所有代码基于jdk17+构建.现在让我们开始吧!项目配置鉴权配置 当项目引入Security依赖后,启动项目会生成一个随机的密码,当我们要访问资源的时候需要使用这个密码登录后才能使
2025-04-09 13:24:45
400
原创 一文读懂SpringBoot框架
注解 annotation 用来定义一个类、属性和一些方法,以便程序能够被编译处理。它相当于一个说明文件,告诉应用程序某个类或者属性是什么,要怎么处理。注解可以用于标注包、类、方法和变量等。注解式编程是一种基于注释的程序编码风格。它使用特定的注释来配置和定义应用程序的行为,而不需要显式编写大量的配置代码。java复制代码@RestController。
2025-04-09 13:21:50
837
原创 Java特殊运算符及其应用
当涉及位操作和位级运算时,Java 提供了一组特殊的运算符,即左移(<<)和右移(>>)运算符。这些运算符与普通的算术和逻辑运算符不同,它们操作的是数字的二进制位。位操作是计算机底层编程中常用的技巧,能够高效地执行一些操作,如数值乘除以2的幂次方,处理标志位,以及在一些位级编码场景下进行数据处理。左移和右移运算符用于将二进制位向左或向右移动指定的位数,从而实现对数值的快速操作。左移操作将数值的二进制表示向左移动,等效于乘以2的幂次方,而右移操作将数值的二进制表示向右移动,等效于除以2的幂次方。
2025-04-08 15:05:24
846
原创 Java开发必安装的插件Maven Helper
Maven 是一个非常流行和强大的 Java 项目管理工具,它可以帮助我们自动化地处理项目的构建、依赖、文档、测试、发布等各个环节。然而,Maven 项目中也经常会遇到一些依赖问题,比如依赖冲突、依赖缺失、依赖过多等,这些问题会影响项目的正常运行和性能。为了解决这些问题,我们需要一个能够分析和优化 Maven 项目依赖关系的工具,而这个工具就是 Maven Helper 插件。Maven Helper 插件是一款可以帮助你解决 Maven 项目的依赖问题的 IntelliJ IDEA 插件。它可以在 pom
2025-04-08 15:03:33
981
原创 后端接口性能差?试试这39个策略。两万字总结,太全了!
为了更好评估后端接口性能,我们需要对不同行为的耗时进行比较。从上图可以看出,一个CPU周期少于1纳秒,而一次从北京到上海的跨地域访问可能需要约30毫秒。怎么计算跨地域耗时呢?我们已知光在真空中传播,折射率为 1,其光速约为 c=30 万公里/秒,当光在其他介质里来面传播,其介质折射自率为 n,光在其中的速度就降为 v=c/n,光纤的材料是二氧化硅,其折射率 n 为 1.44 左右,计算延迟的时候,可以近似认为 1.5,我们通过计算可以得出光纤中的光传输速度近似为 v=c/1.5= 20 万公里/秒。
2025-04-08 15:00:48
902
原创 Java Random可破解,随机数不再随机,更不安全
在安全性要求较高的场景中,使用 Random 生成的随机数是不安全的。如果获得了其中两个随机数的情况下,后续的随机序列可以被破解。为了提高安全性,需要在一些场景中使用SecureRandom来生成随机数,例如在生成随机密码、兑换码和推广码等场景中。SecureRandom算法使用系统随机文件/dev/random和/dev/urandom来生成随机数。由于每次生成的随机数都会与系统随机文件进行异或操作,所以随机种子一直在变化,使得随机数无法被暴力破解。
2025-04-08 14:58:27
608
原创 掌握Java Date类:用法、弊端与时间戳转换技巧,轻松处理日期时间
在Java中,日期和时间的处理是一个重要而又繁琐的任务。而Date类则是处理日期和时间的基础类。本文将介绍Java中Date类的用法、弊端和时间戳转换技巧,以帮助开发人员轻松处理日期和时间。本文将介绍Java中Date类的基本用法,如日期和时间的格式化、解析。同时,本文也将介绍Date类存在的一些弊端,如线程安全性和可变性等问题。最后,本文还将介绍时间戳与Date类之间的转换技巧,以便于在处理日期和时间时更加灵活和高效。Date类是Java中用于表示日期和时间的类,该类提供了一系列方法来处理日期和时间。
2025-04-08 14:56:31
907
原创 从入门到精通:SimpleDateFormat类高深用法,让你的代码更简洁!
SimpleDateFormat类的概述和常见用法SimpleDateFormat类高深用法代码实现及测试用例小结和总结SimpleDateFormat类是Java中用于格式化和解析日期时间的类。它提供了一系列的构造方法和格式化字符串,使得我们能够方便地进行日期时间的格式化和解析。总的来说,本文介绍了Java中常用的日期格式化和解析类SimpleDateFormat的概述、常见用法和高深用法,以及使用该类的测试用例和代码实现。
2025-04-08 14:52:49
703
原创 掌握Java中的FileReader类:逐步教程
Java是一种面向对象的程序设计语言,由Sun Microsystems公司于1995年首次公开发布。Java与C++语言相比,更强调面向对象的概念,更容易学习和使用,且不易出错,被广泛应用于互联网应用、客户端软件、移动应用等领域。Java的标准库中包含了许多常用的类,其中FileReader就是一个常用的类。FileReader类是Java.io包中的一个类,用来读取文件中的字符数据,它继承了InputStreamReader类。
2025-04-08 14:48:38
610
原创 全网最新上线!【来自于阿里】号称Java八股文天花板,首次开源!
继续找工作,现在的很多程序员还在谈技术,谈这个就没劲了其实,因为现在的失业是结构性失业。比如说你到40岁了,你还有大厂履历,那你毕业了以后,找工作的难度肯定会加大。一方面是新工作的待遇和薪资往往不及预期,另一方面就是竞争激烈。而我认识的两个猎头我看还天天发小广告,在抱怨招不到人,结果一问35岁的事儿就没声了。首先说35岁找不到工作只存在于部分人身上,不可能所有过35的都找不到工作,但是这些人找到工作了也未必是因为技术多好。如何准备?除了平时的技术积累与沉淀之外,剩下的就只能背八股了(虽然工作用不到,但面试就
2025-04-08 14:47:14
287
原创 关于RocketMQ的高性能设计,你真的了解吗?
今天继续跟大家聊一聊RocketMQ的高性能设计吧!其实经过了很多年的阿里巴巴的双十一的验证,RocketMQ除了稳定以外,也保持着极高的性能(不然阿里早就不用啦)。这也是很多企业在技术选型的时候会把RocketMQ纳入考虑范围的原因。先说说数据存储设计吧,数据存储设计主要包括了RocketMQ的顺序写盘,消费队列的设计,消息跳跃读,数据零拷贝。是不是看到这头都大了?我刚开始看的时候也是觉得,这些术语看的我比上数学课都犯困,还学习?怎么学?不急,我们还是拆开一点点来分解一下。
2025-04-08 14:42:33
761
原创 简单易懂的HashMap使用指南:从入门到精通
在Java中,HashMap是一种重要的数据结构,也是我们经常使用的一种存储数据的容器。但是,你是否了解HashMap的具体实现?在使用HashMap时,你是否遇到过问题或者疑惑?在本文中,我们将通过源代码解析、应用场景案例、优缺点分析等方面,深入了解HashMap这个精妙的数据结构。源代码解析:对HashMap的源代码进行解析,了解HashMap的具体实现;应用场景案例:通过具体场景案例,让读者了解在实际开发中如何灵活运用HashMap;
2025-04-08 14:32:03
636
原创 由三个感叹号开启的 Debug 篇章?
如果项目中使用到这个 Junit5 ,此时又直接根据上面!!!JUnit version 3.8 or later expected 这个异常,引入 Junit4 , 会出现新的异常。
2025-04-07 14:15:36
890
原创 蚂蚁金服三面:请说说Redis分布式锁的原理和实现
对同一个资源进行操作,单一的缓存读取没问题了,但是存在并发的时候怎么办呢,为了避免数据不一致,我们需要在操作共享资源之前进行操作。我们在开发很多业务场景会使用到锁,例如库存控制,抽奖,秒杀等。一般我们会使用内存锁的方式来保证线性的执行。但现在大多站点都会使用分布式部署,那多台服务器间的就必须使用同一个目标来判断锁。分布式与单机情况下最大的不同在于其不是多线程而是多进程。图1:分布式站点使用内存锁图2:分布式站点使用分布式锁当然我们暂时用不了这么复杂的场景,我们就简单访问redis就行。
2025-04-07 14:09:40
857
原创 用Java代码创建第一个区块链程序
因为区块链是去中心化的,所以没有一个权威机构为被接受的交易设置规则。区块链涉及一定程度的信任,因为这些交易存储在开放网络上。尽管这项技术有很多困惑,正如你在上面看到的,它并不像许多人想象的那么复杂。随着越来越多的开发人员试图解决他们自己的采矿问题,我们看到了更多的工具来帮助他们。Loggly和Microsoft Azure等软件旨在使区块链更容易访问。开发者探索区块链世界有很多原因。首先,正如你在上面所看到的,它相对简单易学,而且在不久的将来,它也将成为一个受欢迎的职业。
2025-04-07 14:05:38
478
原创 深入理解Java虚拟机——JMM(Java内存模型)
JMM可以 通过happens-before关系向程序员提供跨线程的内存可见性保证 ( 如果A线程的写操作a与B线程的读操作b之间存在happens-before关系,尽管a操作和b操作在不同的线程中执行,但JMM向程序员保证a操作将对b操作可见 )。
2025-04-07 14:04:40
1000
原创 刨根问底:Kafka 到底会不会丢数据?
越来越多的互联网公司使用消息队列来支撑自己的核心业务。由于是核心业务,一般都会要求消息传递过程中最大限度地做到不丢失,如果中间环节出现数据丢失,就会引来用户的投诉,年底绩效就要背锅了。那么使用 Kafka 到底会不会丢数据呢?如果丢数据了该怎么解决呢?为了避免类似情况发生,除了要做好补偿措施,我们更应该在系统设计的时候充分考虑系统中的各种异常情况,从而设计出一个稳定可靠的消息系统。
2025-04-07 14:03:05
932
原创 MySQL之MVCC机制:为什么你改了的数据我还看不见?
MVCC多版本并发控制,听起来似乎蛮高大上的,但实际研究起来会发现它并不复杂,其中的多版本主要依赖Undo-log日志来实现,而并发控制则通过表的隐藏字段+ReadView快照来实现,通过Undo-log日志、隐藏字段、ReadView快照这三玩意儿,就实现了MVCC机制,过程还蛮简单的~
2025-04-07 13:56:34
786
原创 Java线程池详解:Future的使用和实现
提交到线程池中执行的异步任务都会返回一个任务的 Future,所以这里先介绍一下 Future 的使用和实现。异步任务通常会被提交到线程池中去执行,但任务并非提交到线程池后就不管不顾了,在某些时刻我们希望能够取消任务,同时也希望在任务执行完成后获取到任务的执行结果。Java 提供了 Future 代表了一个异步任务的结果,可以用来等待任务执行完成并获取任务的执行结果和取消任务。Future 中生命周期只能前进不能后退,某个任务完成后,它将永远停留在“完成”状态上。
2025-04-07 13:51:19
954
原创 什么是MySQL主从复制?
当sql_log_bin为全局变量时,如果修改这个变量,则sql_log_bin只会对新的会话生效,这意味着sql_log_bin对当前会话不再生效。因此,当通过log_bin还原数据库时,为了防止将还原的UPDATE命令写入二进制日志中,出现循环复制的现象,可以选择关闭sql_log_bin变量。在业务复杂的系统中,架构的发展导致业务量越来越大、I/O访问次数越来越多,单台MySQL开始无法满足需求,此时就需要做多库的存储,以便降低磁盘I/O的访问次数,提高单台I/O的访问性能。
2025-04-07 13:43:02
449
原创 虾皮二面:MySQL支持哪些存储引擎?MyISAM和InnoDB的区别什么?
并且,你还可以根据 MySQL 定义的存储引擎实现标准接口来编写一个属于自己的存储引擎。一般情况下我们选择 InnoDB 都是没有问题的,但是某些情况下你并不在乎可扩展能力和并发能力,也不需要事务支持,也不在乎崩溃后的安全恢复问题的话,选择 MyISAM 也是一个不错的选择。大多数时候我们使用的都是 InnoDB 存储引擎,在某些读密集的情况下,使用 MyISAM 也是合适的。MySQL 存储引擎采用的是插件式架构,支持多种存储引擎,我们甚至可以为不同的数据库表设置不同的存储引擎以适应不同场景的需要。
2025-04-07 13:21:55
1171
原创 弯道超车,阿里高工新产Java面试速成指南,面试骚操作都在里面了
金三银四过去一半,市场火热,但是大家就业压力却没有缓解多少。很多粉丝后台留言,Java程序员面临的竞争太激烈了……我自己也有实感,多年身处一线互联网公司,虽没有直面过求职跳槽的残酷,但经常担任技术面试考官,对程序员招聘市场的现状很清楚。导致现在激烈竞争的原因不外乎三方面:人多了,技术需求高了,中低端岗位不缺人了...虽然行业红利在消失,但这绝不是最坏的时代,只是回归理性和稳定,我们除了要判断趋势,还要看到本质。
2023-04-25 14:39:47
490
原创 一文搞懂MySQL索引(实现原理加优化实战,面试必问)
本文对MySQL索引从构建原理,到各类索引实现,性能调优,优缺点进行全方面讲解,希望对读者了解索引有个清晰的认识。
2023-03-28 13:27:57
614
1
原创 京东内网遭开源的“顶级”SpringCloud实战手册,GitHub列为首推
它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。实例40:用 Spring Cloud 实现页面日访问量3000万的某平台微服务架构。用 Spring Cloud Security 实现微服务安全。用Spring Cloud Sleuth 实现微服务链路跟踪。实例1:用 Spring Cloud 实现一个微服务系统。用 Consul 实现服务治理。
2023-03-21 15:17:29
461
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人