
Java
文章平均质量分 82
普通网友
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
三天吃透Java面试八股文(2023最新整理)
值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身,两者指向同一片内存空间。所以对引用对象进行操作会同时改变原对象。java中不存在引用传递,只有值传递。即不存在变量a指向变量b,变量b指向对象的这种情况。StringJoiner是 Java 8 新增的一个 API,它基于 StringBuilder 实现,用于实现对字符串之间通过分隔符拼接的场景。原创 2023-06-20 11:08:24 · 1283 阅读 · 0 评论 -
面了6家大厂,我把问烂了的《Java八股文》打造成3个PDF。共1700页!!
(含:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式,适配器模式,装饰器模式,代理模式等23种设计模式...)(内容涵盖:mysql数据库基础知识,数据类型,失误,试图,mysql索引,mysql锁,mysql优化,等...)含:红黑树,B+树,贪心算法,哈希分治法,七大查找算法,动态规划,一致性算法,数据结构等...)(含:Java概述,语法,面向对象,IO流,API,集合,NIO,HashMap,基础常见面试题....)(含:22大问题,从基础到高级,BATJ面试常问的点...)原创 2023-06-19 15:45:46 · 102 阅读 · 0 评论 -
面试必备:零拷贝详解
零拷贝是老生常谈的问题啦,大厂非常喜欢问。比如Kafka为什么快,RocketMQ为什么快等,都涉及到零拷贝知识点。最近技术讨论群几个伙伴分享了阿里、虾皮的面试真题,也都涉及到零拷贝。因此本文将跟大家一起来学习零拷贝原理。1. 什么是零拷贝2. 传统的IO执行流程3. 零拷贝相关的知识点回顾4. 零拷贝实现的几种方式5. java提供的零拷贝方式零拷贝字面上的意思包括两个,“零”和“拷贝”:“拷贝”:就是指数据从一个存储区域转移到另一个存储区域。原创 2022-11-22 18:23:32 · 424 阅读 · 0 评论 -
第2版 震撼发布 Java高并发编程手册 PDF, 强烈推荐
而今天分享的这份阿里内网“M9级全彩高并发编程手册 第二版”,让大家不仅能够学到深度、专业的编程知识,还能感受到阿里专注地提高编程技能的态度,始终如一地贡献、分享Java专业知识与经验的精神,以及持续学习、持续成长的进取精神,。原创 2022-11-22 18:21:30 · 704 阅读 · 0 评论 -
计算机底层原理?太棒了,TCP/IP协议 (图解+秒懂+史上最全)
网络拓扑图吧,请做好。原创 2022-11-22 18:19:52 · 1595 阅读 · 0 评论 -
耗时半月,终于把牛客网上的Java面试八股文整理成了PDF合集(Java基础+Redis+MySQL+多线程与高并发+JVM+分布式+Spring+微服务)
很多时候,面试官问的问题会和自己准备的“题库”中的问题不太一样,即使做了复盘,下次面试还是不知道该从何处下手。原创 2022-11-06 09:35:47 · 228 阅读 · 0 评论 -
来自阿里的洗礼 ,全网独家的SpringBoot核心文档,讲的太清晰了
嘿伙计,你用过 Spring 和 SpringBoot 吗?是不是感觉Spring真是个强大的框架, SpringBoot 又让 Spring 更加牛批了呢?我想这个大家也都这么认为吧!SpringBoot 在当下的 Java 后端开发中已经相当流行,非常多的公司和开发团队都选用 SpringBoot 作为快速构建项目的打底框架,究其原因你我都清楚,它方便简单,而且注解和编程式配置都让我们觉得更加简单、容易理解和维护。原创 2022-10-19 09:34:42 · 166 阅读 · 0 评论 -
我凭借这份“架构师成长笔记”成功跳槽,这才是进大厂的正确打开方式
其实架构师是需要一个相对而言对架构师友善的环境。第一,架构师到底需要什么?一个架构师要成长,首先他需要信任,第二他需要授权,第三他需要时间,第四他需要资源,少一样都很难开展工作。如果一个公司没有很系统的架构设计,对于架构师来说这是一个创造机会或者创造价值的场景,一开始的选择是很重要的。其次,架构师除了资源之外,还需要一个正确的文化,什么是正确的文化?小编将它称为“包容和求真的企业文化”,首先能包容错误;原创 2022-10-18 17:17:39 · 189 阅读 · 0 评论 -
【无标题】
开始之前我问大家几个问题,看大家是如何思考的:1.程序员一定要去一线城市漂泊吗?在自己家乡如何拿到一份满意的薪水?2.程序员被裁员、找不到工作,代表什么?3.程序员一定要进一线大厂吗?你是怎么计划的?相信每个程序员都有自己的答案和计划,也都想给自己一份美丽的答卷;小编一直都是有自己的计划的,但是计划赶不上变化,很不幸的是过完年快上班的时候,我被裁掉了!辛苦苦为公司奋斗三年,不分昼夜地付出,甚至顾不上家庭和孩子;但是,没有辛酸,没有泪水,有的只是一腔热血,只怪自己的能力不够,再加上运气不好;原创 2022-10-18 17:15:53 · 114 阅读 · 0 评论 -
魔改xxl-job,彻底告别手动配置任务
xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单、支持分布式等优点,让它广泛应用在我们的项目中,解决了不少定时任务的调度问题。我们都知道,在使用过程中需要先到xxl-job的任务调度中心页面上,配置和具体的,这一过程如果项目中的定时任务数量不多还好说,如果任务多了的话还是挺费工夫的。假设项目中有上百个这样的定时任务,那么每个任务都需要走一遍绑定jobHander后端接口,填写cron表达式这个流程…我就想问问,填多了谁能不迷糊?于是出于功能优化(原创 2022-10-12 10:27:46 · 451 阅读 · 0 评论 -
魔改xxl-job,彻底告别手动配置任务
xxl-job是一款非常优秀的任务调度中间件,轻量级、使用简单、支持分布式等优点,让它广泛应用在我们的项目中,解决了不少定时任务的调度问题。我们都知道,在使用过程中需要先到xxl-job的任务调度中心页面上,配置和具体的,这一过程如果项目中的定时任务数量不多还好说,如果任务多了的话还是挺费工夫的。假设项目中有上百个这样的定时任务,那么每个任务都需要走一遍绑定jobHander后端接口,填写cron表达式这个流程…我就想问问,填多了谁能不迷糊?于是出于功能优化(原创 2022-10-12 10:20:55 · 851 阅读 · 0 评论 -
那些年我们一起优化的SQL
数据量较大的时候,如果没有索引,那么数据库只能全表一行一行的遍历判断数据,因此优化SQL的时候,第一步要做的就是确定有没有合适的可用的索引。using index condition表示使用了ICP(Index Condition Pushdown索引下推),ICP是MySQL 5.6之后新增的特性,部分字段因为某些情况无法走索引查询,则会展示using where(在server层进行数据过滤),ICP是在存储引擎层进行数据过滤,而不是在服务层过滤,利用索引现有的数据过滤调一部分数据。原创 2022-10-12 10:16:35 · 348 阅读 · 0 评论 -
今天面了个腾讯拿38K出来的,让我见识到了基础的天花板
今年的秋招基本已经进入大规模的开奖季了,很多小伙伴收获不错,拿到了心仪的offer。原创 2022-10-07 18:19:15 · 499 阅读 · 0 评论 -
美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃
那么线程崩溃后,进程是如何崩溃的呢,这背后的机制到底是怎样的,答案是信号,大家想想要干掉一个正在运行的进程是不是经常用 kill -9 pid 这样的命令,这里的 kill 其实就是给指定 pid 发送终止信号的意思,其中的 9 就是信号,其实信号有很多类型的,在 Linux 中可以通过kill -l查看所有可用的信号。原创 2022-10-06 13:48:36 · 119 阅读 · 0 评论 -
一文吃透何为微服务、网关、服务发现/注册
Web应用程序发展的早期,大部分web工程是将所有的功能模块(service side)打包到一起并放在一个web容器中运行,很多企业的Java应用程序打包为war包。比如构建一个在线商店系统:客户下订单、核对清单和信用卡额度,并将货物运输给客户。可能会构造出如下图所示的系统:单体架构这种将所有功能都部署在一个web容器中运行的系统就叫做单体架构(也叫:巨石型应用)。原创 2022-10-06 13:46:07 · 786 阅读 · 0 评论 -
字节面试也会问SPI机制?
在之前的JVM 分析系列之类加载提到过Java SPI机制,主要是类加载器反双亲委派的实现(第三方包不在指定jdk路径,一般类加载器无法加载,需要特殊的ContextClassLoader加载以便使用)。本次将对 SPI机制进行详解,并结合案例介绍其在实际场景中具体使用。提示:以下是本篇文章正文内容,案例仅供对比参考SPI(全称:Service Provider Interface),是jdk内置的一种服务提供发现接口机制,旨在由第三方服务实现或扩展为组件,方便开发人员快速集成指定扩展组件满足指定的需求。原创 2022-10-06 13:41:00 · 161 阅读 · 0 评论 -
深入理解 Spring 事务:入门、使用、原理
Spring 事务是复杂一致性业务必备的知识点,掌握好 Spring 事务可以让我们写出更好地代码。这篇文章我们将介绍 Spring 事务的诞生背景,从而让我们可以更清晰地了解 Spring 事务存在的意义。接着,我们会介绍如何快速使用 Spring 事务。接着,我们会介绍 Spring 事务的一些特性,从而帮助我们更好地使用 Spring 事务。最后,我们会总结一些 Spring 事务常见的问题,避免大家踩坑。Spring 事务 - 思维导图。原创 2022-10-06 13:34:17 · 239 阅读 · 0 评论 -
万字长文 | 淘宝 10年架构演进
分享一篇讲解大型网站的架构演进过程的文章,相信看完会有所收获。文章在介绍一些基本概念后,按照以下过程阐述了整个架构的演进过程:单机架构第一次演进:Tomcat与数据库分开部署第二次演进:引入本地缓存和分布式缓存第三次演进:引入反向代理实现负载均衡第四次演进:数据库读写分离第五次演进:数据库按业务分库第六次演进:把大表拆分为小表第七次演进:使用LVS或F5来使多个Nginx负载均衡第八次演进:通过DNS轮询实现机房间的负载均衡第九次演进:引入NoSQL数据库和搜索引擎等技术第十次演进:大应用拆分为小应用第十一原创 2022-10-06 13:31:43 · 385 阅读 · 0 评论 -
Java 如何验证文件名的有效性?
最后,让我们尝试实现我们自己的自定义函数来测试文件名。我们还将尝试避免任何I/O功能,只使用核心的Java方法。这类解决方案提供了更多的控制权,允许我们实现我们自己的规则。然而,我们必须考虑不同系统的许多额外限制。使用我们可以使用方法来检查给定的String是否包含任何禁止的字符。首先,我们需要手动指定一些示例值。', '|'};在我们的例子中,让我们只关注这两个操作系统,Windows的文件名比UNIX的限制更多。另外,一些的空白字符可能会有问题。原创 2022-10-06 13:30:02 · 1341 阅读 · 0 评论 -
Spring 最常用的 7 大类注解,史上最强整理
此注解使用在Spring的组件类上。此注解也可以使用在被@Configuration注解的类上,表示其中所有被@Bean注解的方法都会延迟初始化。当此注解用在Class上时,就创造了一个基础url,其所有的方法上的@RequestMapping都是在此url之上的。当在构造方法上使用此注解的时候,需要注意的一点就是一个类中只允许有一个构造方法使用此注解。此注解用在请求handler方法的参数上,用于将web请求中的属性(request attributes,是服务器放入的属性值)绑定到方法参数上。原创 2022-10-06 13:28:43 · 430 阅读 · 0 评论 -
使用Spring AOP实现异步文件上传
写了个小轮子提升团队整体开发效率感觉真不错。程序员的最高品质就是解放双手(偷懒?),然后成功的用自己写的代码把自己干毕业......原创 2022-10-06 13:27:37 · 293 阅读 · 0 评论 -
开发必须要懂的协议-oauth
百度百科上解释:允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。简单的来讲就是一个令牌,这个令牌可以有一定的权限,在不知道用户密码的情况下也可以进行部分的功功能操作。原创 2022-10-06 13:26:44 · 171 阅读 · 0 评论 -
自定义的配置文件,如何注入到SpringBoot?
/参数定义 config3.map1.name=demo_id_1_name config3.map1.value=demo_id_1_value config3.map2.name=demo_id_2_name config3.map2.value=demo_id_2_value。原创 2022-09-25 20:30:35 · 199 阅读 · 0 评论 -
Spring学习「第三节」:Bean的作用域和生命周期
默认情况,Spring只为每个在IOC容器里面声明的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例,所有后续的getBean()调用和bean引用都将返回这个唯一的bean实例,这个作用域被称为singleton,它是所有bean的默认作用域。Bean的生命周期 1.Bean的生命周期 Spring的IOC容器可以管理bean的生命周期,Spring运行在bean生命周期内特定的时间点执行指定的任务 (1)Spring的IOC容器对bean的生命周期进行管理的过程。原创 2022-09-25 20:18:34 · 133 阅读 · 0 评论 -
Spring学习「第二节」:Spring的IOC底层实现
原创 2022-10-12 10:19:07 · 141 阅读 · 0 评论 -
Spring学习「第一节」:Spring特性/框架搭建/getBean三种方式
Spring是一个为简化企业级开发而生的开源框架,使用Spring开发可以把Bean对象,Dao组件对象,Service组件对象等交给Spring容器来管理,这样使得很多复杂的代码在Spring中开发却变得非常的优雅和简洁,有效的降低代码的耦合度,极大的方便项目的后期维护,升级和扩展。使用Spring之前,对象的创建是由我们自己new出来的。使用Spring之前,如果我们想要使用一个对象的话,我们得通过new的方式去获取,使用Spring以后,我们可以直接从Spring容器中去获取对象。原创 2022-09-25 20:07:18 · 205 阅读 · 0 评论 -
自定义的配置文件,如何注入到SpringBoot?
在实际的项目开发过程中,我们经常需要将某些变量从代码里面抽离出来,放在配置文件里面,以便更加统一、灵活的管理服务配置信息。比如,数据库、eureka、zookeeper、redis、mq、kafka 等服务组件的连接参数配置,还有我们自定义的项目参数配置变量。当然,实际上根据当前的业务需求,我们往往会自定义参数,然后注入到代码里面去,以便灵活使用!今天,我们就一起来聊一聊SpringBoot加载配置文件的几种玩法,如果有遗漏,欢迎留言!SpringBoot 项目在启用时,首先会默认加载或者。原创 2022-09-23 16:37:46 · 140 阅读 · 0 评论 -
那些年我们经常唠嗑的sql优化
我们出去面试经常会被问到数据库这一块,而涉及数据库这一块问的最多的就是数据库优化。那么我们怎么做才能做好优化问题呢?今天我们就来聊聊数据库优化那些事。数据库优化我们一般可以从以下几个方面考虑:数据库表设计sql语句优化。原创 2022-09-23 15:31:19 · 104 阅读 · 0 评论 -
霸榜Github三个月的「架构师成长手册」成为架构师也有捷径
架构师”我想应该没有程序员会陌生了吧,作为程序员技术追求的一个里程碑,有多少程序员想转型架构师而不得门路,其实架构师比较抽象的拆解能力就两方面 技术+项目。足够的技术栈深度和广度再加上足够的项目经验其实是完全可以驾驭架构师的岗位的。但是我们想要达到要求需要多久呢十年?二十年?而且真的就一定能转型成功吗?又怎么样才能保证自己不走弯路呢?其实想通这些方向就很清楚了,你需要从架构设计的基本概念出发,阐述架构设计的理论体系。原创 2022-09-20 16:21:17 · 337 阅读 · 0 评论 -
JDK8都10岁了,你还在用for循环遍历list吗?
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。熟悉Linux的同学对这种风格一定不陌生,因为它跟Linux的|管道符的思想如出一辙。原创 2022-09-20 16:15:23 · 155 阅读 · 0 评论 -
Redis 哈希表 VS Java HaspMap , 哪家强?
我们回顾一下之前讲到的Redis的字典结构,示意图如下:Redis的字典本质上来说也是数组+链表的数据结构,这与Java中HashMap的数据结构很类似啦。由上述结构示意图也能看出,字典dict中维护了一个ht数组,而且只有两个元素,这两个元素是其扩容的关键点,这个我们后面会讲到。Redis中的哈希对象在以下条件时,使用ziplist编码,哈希对象保存的所有键值的字符串长度都小于64字节哈希对象保存的键值对数量小于512个。原创 2022-09-17 13:50:01 · 380 阅读 · 0 评论 -
数据库主键一定要自增吗?有哪些场景不建议自增?
建表sql里主键边上的AUTO_INCREMENT,可以让主键自增,去掉它是可以的,但这就需要你在insert的时候自己设置主键的值。建表sql里的 PRIMARY KEY 是用来声明主键的,如果去掉,那也能建表成功,但mysql内部会给你偷偷建一个 ROW_ID的隐藏列作为主键。由于mysql使用B+树索引,叶子节点是从小到大排序的,如果使用自增id做主键,这样每次数据都加在B+树的最后,比起每次加在B+树中间的方式,加在最后可以有效减少页分裂的问题。原创 2022-09-17 13:41:14 · 806 阅读 · 0 评论 -
SpringBoot 性能太差?试试这几招
异步执行增加内嵌 Tomcat 的最大连接数使用 @ComponentScan()默认 Tomcat 容器改为 Undertow使用 BufferedWriter 进行缓冲Deferred 方式实现异步调用异步调用可以使用 AsyncHandlerInterceptor 进行拦截。原创 2022-09-17 13:36:44 · 562 阅读 · 0 评论 -
Spring AOP全面详解(超级详细)
AOP (Aspect Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向切面编程,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术,如下图所示:\\AOP可以拦截指定的方法并且对方法增强,而且无需侵入到业务代码中,使业务与非业务处理逻辑分离,比如Spring的事务,通过事务的注解配置,Spring会自动在业务方法中开启、提交业务,并且在业务处理失败时,执行相应的回滚策略。原创 2022-09-17 13:33:12 · 272 阅读 · 0 评论 -
amazing!0.2秒复制100G文件是怎么做到的?
好,我们再深入思考下,文件系统为什么能做到这一点?首先,最关键的是把磁盘空间切成离散的、定长的 block 来管理;然后,通过 inode 能查找到所有离散的数据(保存了所有的索引);最后,实现索引块和数据块空间的后分配。这三点是层层递进的。原创 2022-09-17 13:26:04 · 162 阅读 · 0 评论 -
代码中被植入了恶意删除操作,太狠了
事情是这样的,一老板接手了一套系统,可能因为双方在交接时出现了什么不愉快的事情,对方不提供源代码,只是把生产环境的服务器打了一个镜像给到对方。在文件的修改时间上还真找到了一些问题,发现在打镜像的两个小时前,项目中一个多个项目底层依赖的jar包被修改过,另外还有两个class文件被修改过。找到了问题的根源,解决起来就不是啥事了,由于没有源代码,稍微费劲的是只能把原项目整个反编译出来,然后将改修改地方进行了修改。没想到这还真遇到了,而且对方为了隐藏删除操作,还做了一些小伪装,真的是煞费苦心啊。原创 2022-09-17 13:18:27 · 209 阅读 · 1 评论 -
面试官:讲讲SpringAOP的底层代理模式
Proxy Pattern:为其他对象提供一种代理以控制对这个对象的访问。说人话:在不改变原始类(或叫被代理类)代码的情况下,通过引入代理类来给原始类附加功能,比如Spring AOP。①、Subject抽象主题角色,可以是抽象类,可以是接口,是一个最普通的业务类定义,无特殊要求。真实主题角色,也叫被代理角色,是业务逻辑的具体执行者。③、Proxy。原创 2022-09-17 11:47:34 · 130 阅读 · 0 评论 -
看了我的MyBatis-Plus用法,同事也开始悄悄模仿了...
关于mybatis-plus是什么,不多做介绍了,看官方文档:baomidou.com ,咱们直接代码撸起来。原创 2022-09-09 15:00:52 · 361 阅读 · 0 评论 -
顺丰快递:请签收MySQL灵魂十连
MySQL大体上可分为Server层和存储引擎层两部分。原创 2022-09-09 14:56:40 · 99 阅读 · 0 评论 -
牛客网论坛最具争议的Java面试成神笔记,GitHub已下载量已过百万
牛客网作为国内最牛的程序员面试网站,一直在程序员内部颇负盛名,其中用户更是卧虎藏龙!原创 2022-09-05 16:17:01 · 170 阅读 · 0 评论