自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试妥了~12W字Java面试题总结(附答案)横扫大厂offer

网上的 Java面试题文章有非常多,但是大部分都乱七八糟、内容涵盖不全,让大部分小伙伴耗费了大量时间去寻找资料。上周有小伙伴私信我,让小编出一套完整的Java面试资料,作为宠粉的小编,这不得给粉丝们整上?这几天我也去牛客、脉脉等平台看了一下面试者分享的面试题目,

2022-11-07 15:16:56 2799

原创 2023年我靠这套12W字Java面试题(附答案)横扫大厂offer

网上的 Java面试题文章有非常多,但是大部分都乱七八糟、内容涵盖不全,让大部分小伙伴耗费了大量时间去寻找资料。上周有小伙伴私信我,让小编出一套完整的Java面试资料,这不巧了吗,小编今年一直在脉脉、牛客上查看各种Java面试面经,发现其实大部分公司都会问到相同的题目,小编。

2023-12-16 14:58:28 579

原创 双非本两年经验,靠这套Java面试题拿下拿下阿里、百度、美团、滴滴、快手、拼多多等大厂offer

整体来看,第一次社招跳槽相对来说还是比较成功的,收获了一些大厂 offer相信大家应该也有类似的情况,学了好多东西,但是不知道能不能用得上双非进大厂,怎么可能学这么多源码有用,不如趁早转行......再加上互联网寒冬,在学习的时候迷茫也挺多的不过,幸运的我还是坚持了下来,拿了一些 offer,也对得起这两年的努力了如果你现在也是双非、小公司、没有目标,不妨开始学习起来乾坤未定,你我皆是黑马!期待两年后的你,也能拿到自己想要的 offer,去往想去的公司。

2023-10-25 20:44:23 550 1

原创 阿里内推强推的并发编程学习笔记,原理+实战+面试题,面面俱到!

很多人都说学习是反人性的,开始容易,但是长久的坚持却很难。这个我也认同,我面试的时候,就经常问候选人一个问题:“工作中,有没有一件事你自己坚持了很久,并且从中获益?”如果候选人能够回答出来,那会是整个面试的加分项,因为我觉得,坚持真是一个可贵的品质,一件事情,有的人三分热度,而有的人,一做就能做一年,或者更久。你放长到时间的维度里看,这两种人,最后的成就绝对是指数级的差距。

2023-10-18 19:45:32 443

原创 我说ArrayList初始容量是10,面试官让我回去等通知

ArrayList底层基于数组实现,可以随机访问,内部使用一个Object数组来保存元素。它维护了一个 elementData 数组和一个 size 字段,elementData数组用来存放元素,size字段用于记录元素个数。它允许元素是null,可以动态扩容。ArrayList的初始容量是多少?答案:初始容量是0,在第一次添加元素的时候,才会设置容量为10。ArrayList的扩容机制创建新数组,容量是原来的1.5倍。把旧数组元素拷贝到新数组中使用新数组覆盖旧数组对象。

2023-10-14 13:35:40 306

原创 Java也能做OCR!SpringBoot 整合 Tess4J 实现图片文字识别

先简单给没听过的xdm解释下,这里要分清楚Tesseract和Tess4j的区别。Tesseract是一个开源的光学字符识别(OCR)引擎,它可以将图像中的文字转换为计算机可读的文本。支持多种语言和书面语言,并且可以在命令行中执行。它是一个流行的开源OCR工具,可以在许多不同的操作系统上运行。Tess4J是一个基于Tesseract OCR引擎的Java接口,可以用来识别图像中的文本,说白了,就是封装了它的API,让Java可以直接调用。搞清楚这俩东西,就足够了。

2023-10-13 14:26:42 6634 2

原创 百万架构师亲码的亿级流量下的分布式限流解决方案

在高并发系统中,限流通常指的是:对高并发访问或者请求进行限速或者对一个时间内的请求进行限速来保护我们的系统,一旦达到系统的限速规则(比如系统限制的请求速度),则可以采用下面的方式来处理这些请求。拒绝服务(友好提示或者跳转到错误页面)排队或等待(比如秒杀系统)服务降级(返回默认的兜底数据)其实,就是对请求进行限速,比如10r/s,即每秒只允许10个请求,这样就限制了请求的速度。从某种意义上说,限流,其实就是在一定频率上进行量的限制。

2023-10-09 15:14:37 84

原创 七张图解锁Mybatis整体脉络,让你轻松拿捏面试官

MyBatis是一款ORM(Object-Relational Mapping)框架,其主要用于将Java对象与关系数据库之间进行映射,凭借其轻量性、稳定性以及广泛的开源社区其受到了广大开发者的追捧。那MyBatis为我们做了哪些事情呢?SQL映射配置:MyBatis使用XML或注解配置文件来定义SQL查询、插入、更新和删除操作,以及与数据库表之间的映射关系。这使得开发者能够将SQL语句与Java代码分离,提高了代码的可维护性。动态SQL。

2023-10-08 13:58:16 113

原创 面试官:听说你很懂SpringMVC,那讲讲其内部对于请求的处理吧!

在当下这个时代,我们每天都会借助浏览器浏览很多内容。但你是否有考虑过当你在浏览器中访问某一个网址时候,这背后都发生了那些事情呢?事实上,当在浏览器中键入url后,其背后的处理逻辑可大致如下图所示:首先,浏览器会解析网址中的主机名,以获取服务器的IP地址。这个过程通过DNS(域名系统)完成。一旦浏览器知道了服务器的IP地址,它会尝试建立到服务器的TCP连接。通常这个过程会包括三次握手,以确保客户端和服务器之间的连接建立成功。一旦TCP连接建立,浏览器会发送一个Http请求到服务器。

2023-10-06 16:11:56 121

原创 腾讯大牛耗时1个月整理的“JVM学习笔记“深入底层,面面俱到!

以上了解了学习JVM的种种好处,但是怎么有效的学习JVM呢?有人可能一看到“JVM”或者“Java虚拟机”这几个字就懵了,不知道它是啥,更别说要怎么学了。而本文就是要教大家怎么有效的学JVM,把JVM做一个知识点的划分。可以说,掌握了以下列举的知识点,就是掌握了整个JVM。掌握JVM,是深入Java技术栈的必经之路。希望大家能真正攻克JVM,以我的经验加上和同行们的交流,我认为学 JVM 最好的方法是:在程序员不同的水平段,做精准的学习。

2023-09-27 16:19:06 67

原创 代码生活处处是代理--静态代理+动态代理的实现

代理类对于我们使用这来说是无感知的。因为他和委托类继承同一个接口,所以我们在调用的时候方法都是一样的。只不过在代理类内部会在转发到委托类之前和之后进行相应的处理。代理分为静态代理和动态代理。而动态代理我们常见的有jdk动态代理、cglib动态代理。

2023-09-27 14:27:58 117

原创 GitHub上标星23K+的Redis进阶笔记(应用+原理+集群+拓展+源码)

想真正的精通Redis这个技术栈,是很难的!,这份笔记从原理,集群,应用,拓展,源码五个方面全方位剖析Redis,看完之后你就会知道,原来Redis还能这么玩!

2023-09-21 14:21:23 270

原创 GitHub超60K的“亿级高并发系统设计手册”被疯传

确实,从普通程序员到架构师,光有编程能力和技术深度是不够的,重要的是从编程思维升级到架构思维,首要攻克的就是“高并发架构设计”,尤其在如今的流量趋势下,高并发可以说是家常便饭了,这也是为什么它成了。比如:小米手机的秒杀功能,刚开始小米的网站经常挂,后面经过不断优化,不断迭代升级,变成了现在的样子。最近无意间获得一份BAT大厂大佬写的并发笔记,一下子打通了我的任督二脉,越来越觉得并发没有想象中那么难了。最近有同学给我留言,有晋升的、跳槽的,他们在考核或面试上,都不约而同地提到了。

2023-09-19 19:30:58 87

原创 工作5年,没用过分布式锁,正常吗?

公司想招聘一个5年开发经验的后端程序员,看了很多简历,发现一个共性问题,普遍都没用过分布式锁,这正常吗?下面是已经入职的一位小伙伴的个人技能包,乍一看,还行,也没用过分布式锁。午休的时候,和她聊了聊,她之前在一家对日的公司。有的面试者工作了5年,做的都是自家产品,项目只有两个,技术栈很老,还是SSM那一套,最近在改造,终于用上了SpringBoot... 微服务、消息中间件、分布式锁根本没用过...还有的面试者,在XX大厂工作,中间做了一年C#,一年Go,一看简历很华丽,

2023-09-18 15:41:25 143

原创 阿里老哥独家珍藏的Java面试突击宝典,轻松应对95%秋招面试题

我们做技术的,职业生涯中会遇到很多大大小小的面试。每次面试前的查漏补缺跟面试后的复盘总结都是我们提升的机会。希望今天LZ分享的资料能对近期需要面试的小伙伴有所帮助!直接点击此处】即可免费领取!!发布于 2023-09-14 16:02・IP 属地湖南。

2023-09-14 16:09:43 90

原创 分布式锁的3种实现!附代码

分布式锁是一种用于保证分布式系统中多个进程或线程同步访问共享资源的技术。同时它又是面试中的常见问题,所以我们本文就重点来看分布式锁的具体实现(含实现代码)。在分布式系统中,由于各个节点之间的网络通信延迟、故障等原因,可能会导致数据不一致的问题。分布式锁通过协调多个节点的行为,保证在任何时刻只有一个节点可以访问共享资源,以避免数据的不一致性和冲突。

2023-09-13 13:29:17 144

原创 GitHub星标超70K,阿里大佬的架构总结“分布式全解”笔记霸榜

分布式架构与微服务平台是当今IT界的关键技术,也是资深软件工程师和系统架构师必须掌握的核心技术。因此小编为各位粉丝朋友带来这份阿里大佬的分布式笔记:从传统分布式架构迁移到基于容器技术的微服务架构为主线,全面、透彻地介绍了与分布式架构及微服务相关的知识和技术。

2023-09-11 17:00:13 135

原创 最详细的CompletableFuture异步编程-进阶篇

也叫计算密集型,此时,系统运行时大部分的状况是CPU占用率近乎100%,I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU 使用率很高。而join() 方法抛出运行时异常,程序可以不处理。测试代码时,电脑配置是4核8线程,而我们创建的线程池中线程数最少也是10个,所以,每个线程负责一个任务( 耗时1s ),总体来说,处理10个任务总共需要约1秒。如果你的任务是CPU密集型的,使用比处理器更多的线程是没有意义的,所以选择ParallelStream ,因为它不需要创建线程池,更容易使用。

2023-09-11 13:56:53 174

原创 费时“吃透”4个月啃烂完了这份Redis高手心法,成功上岸收到字节offer

今天小编带你⼀起吃透Redis,深层次的掌握 Redis核心原理以及实战技巧。⼀起搭建⼀套完整的知识框架, 学会全局观去整理整个知识体系。系统观其实是至关重要的,从某种程度上说,在解决问题时,拥有了系统观,就意味着你能有依据、有章法地定位和解决问题

2023-09-09 14:17:45 140

原创 MJDK 如何实现压缩速率的 5 倍提升?

数据压缩技术[1]因可有效降低数据存储及传输成本,在计算机领域有非常广泛的应用(包括网络传输、文件传输、数据库、操作系统等场景)。主流压缩技术按其原理可划分为无损压缩[2]、有损压缩[3]两类,工作中我们最常用的压缩工具 zip 和 gzip ,压缩函数库 zlib,都是无损压缩技术的应用。Java 应用中对压缩库的使用包括:处理 HTTP 请求时对 body 的压缩/解压缩操作、使用消息队列服务时对大消息体(如>1M)的压缩/解压缩、数据库写入前及读取后对大字段的压缩/解压缩操作等。

2023-09-09 13:23:44 165

原创 12分钟从Executor自顶向下彻底搞懂线程池

本篇文章围绕线程池,深入浅出的讲解池化技术,Executor,线程池的参数、配置、实现原理、处理异常、关闭等使用池化技术能够节省频繁创建、关闭的开销,提升响应速度,方便管理,常应用于线程池、连接池等Executor框架将工作任务与执行(线程池)解耦分离,工作任务分为无返回值的Runnable和有返回值的CallableExecutor实际只处理Runnable任务,会将Callable任务封装成FutureTask适配Runnable执行。

2023-09-09 09:54:14 119

原创 【无标题】

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)

2023-09-06 14:47:39 113

原创 13分钟聊聊并发包中常用同步组件并手写一个自定义同步组件

为了更容易理解其他同步组件,我们先来使用AQS自己来实现一个常用的可重入锁AQS模板方法流程是固定的,我们主要只需要来实现它的尝试获取同步状态和尝试释放同步状态方法即可首先我们先规定要实现的可重入锁是独占式的规定同步状态一开始为0,当有线程获取锁成功同步状态就为1,当这个线程重入时就累加同步状态规定释放同步状态时每次扣减1个同步状态,只有当同步状态扣减到0时,才是真正的释放独占锁。

2023-09-06 14:23:08 106

原创 阿里内部绝密资料——亿级并发系统架构设计(2023版)

从原来谁都不看好的淘宝到现在的电商巨头,展现的不仅仅是一家互联网巨头的兴起,也是国内互联网行业迎来井喷式发展的历程,网络信号从 2G 发展到现在的 5G 通信,中国网民数量更是不用说,你说谁现在手机上没有个淘宝、京东、美团等便民软件,而在生活便利的同时,人民也越来越注重生活质量,硬件设备从老年机到在线足以媲美电脑的掌上设备(比方说我一直想买的华为 watch 等一系列电子产品)。对,就是这句好卡了,你不知道在你适应的应用背后,是程序员朋友们付出的多少努力。

2023-09-05 13:51:51 119

原创 面试大厂被拒,后悔没早点看这份Kafka学习笔记

是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的提交日志系统( a distributed commit log),之后成为Apache项目的一部分。成千上万的企业都在使用Kafka,三分之一的世界500强公司也在其中,Kafka也是成长最快的开源项目之一,包括其生态系统也在蓬勃发展。Kafka正在成为管理和处理流式数据的利器。Kafka系统快速、可扩展并且可持久化。它的分区特性,可复制和可容错都是其不错的特性。大家一起来跟着阿里专家学习Kafka吧。

2023-08-31 13:41:28 117

原创 我是如何使用Spring Retry减少1000 行代码

在我的日常工作中,我主要负责开发一个庞大的金融应用程序。当客户发送请求时,我们使用他们的用户 ID 从第三方服务获取他们的帐户信息,保存交易并更新缓存中的详细信息。尽管整个流程看起来足够简单,但这些下游系统中的每一个都是不可靠的。我们必须在每一层上实现重试,并且我们必须以一种可以控制重试次数和每次重试之间的延迟的方式来实现,这样我们就不会超载下游系统。由于我无法共享实际代码,我会创建一个演示系统来做简单表示:由于我们必须在每一层上实现重试,因此我们必须编写大量样板代码,这不仅容易出错,而且难以维护。

2023-08-24 10:18:09 78

原创 带你了解 Java 8 Stream:掌握流处理中的收集器技巧

收集器是 Stream 提供的一个重要功能,用于将流的元素收集到一个结果容器中。通过使用收集器,可以让代码更加方便的进行简化与重用。其内部主要核心是通过 Collectos 完成更加复杂的计算转换从而获取到最终结果。Java 8 在 Collectors 类中预定义了多个用于收集的方法,使得我们可以轻松地对流的元素进行汇总、分组、分区以及其他各种操作。

2023-08-23 10:46:31 163

原创 学习微服务必推荐的天花板级别微服务架构笔记

有没有一本讲微服务架构比较不错的书?小编就在这里推荐一份Chris Richardson写的《微服务架构设计模式》,他本人是微服务领域的专家,和微服务的提出者Martin Fowler一样出名。另外不要买中国人写的那些作者都是骗钱的,他们自己对微服务理解就不深。那些书大部分把微服务和spring cloud 划等号,对领域驱动设计,事件溯源,CQRS,SAGAS分布式事务只字不提。

2023-08-22 11:30:44 105

原创 ForkJoinPool 你真的明白和用对了吗

ForkJoinPool 是一个功能强大的 Java 类,用于处理计算密集型任务,使用 ForkJoinPool 分解计算密集型任务,并并行执行它们,能够产生更好的性能。它的工作原理是将任务分解成更小的子任务,使用分而治之的策略进行操作,使其能够并发地执行任务,从而提高吞吐量并减少处理时间。ForkJoinPool 的独特特性之一是它用于优化性能的工作窃取算法。当工作线程完成分配的任务时,它将从其他线程窃取任务,确保所有线程都有效地工作,并且不会浪费计算机资源。

2023-08-21 09:37:26 423

原创 输出倒逼输入系列之 阻塞 or 等待?

通过几个案例简单解释了 阻塞 和等待区别与联系,希望大家对线程在不同场景的状态会更了解,更清楚,bingo!

2023-08-16 13:11:55 79

原创 面试涨薪神奇操作,直接多给3k的JVM垃圾优化笔记

对于这些问题的出现,都是因为对JVM了解的不够多而导致的。然而垃圾回收原理过于抽象,垃圾回收调优过于依赖经验,明确垃圾回收实现与硬件之间的关系是学习垃圾回收时所面临的主要挑战。为了帮助小伙伴更好的学习和使用JVM,今天给大家分享一份,下面将内容展示给大家,感兴趣的小伙伴可以看看。

2023-08-15 13:36:13 76

原创 万字详解 java 线程池,让我们的高并发程序更稳健

自定义线程池可以通过 ThreadPoolExecutor 类来实现,它提供了更灵活的参数设置和创建过程。创建 ThreadPoolExecutor 对象:corePoolSize:指定线程池的核心线程数量,即线程池中最小的线程数。maximumPoolSize:指定线程池的最大线程数量,即线程池中最大允许创建的线程数。keepAliveTime:指定超过核心线程数量的空闲线程的存活时间,即当线程池中的线程数量超过 corePoolSize 时,多余的空闲线程在一定时间内未被使用,则会被销毁。

2023-08-10 10:49:04 191

原创 三天吃透Java面试八股文(2023最新整理),面试通过率高达90%

什么样的求职者能够获得面试官的青睐?求职者需要准备哪些内容来面对形形色色的面试官?这两份资料是我在几十场面试中被面试官问到的问题,,堪称(我不太喜欢“全网最强”这样的字眼,但确实做到了全网最强)。:我之前找工作时背了其他很多面试题(在线版和PDF版都有),结果面试官的问题几乎都不在里边,导致面试不通过!于是我整理了这套真实的Java面试题,让你!看过此面试题的朋友、同事、网友参加了面试后跟我说,他们面试被问到的问题都在这个Java面试题里,。这些Java面试题包含从简单到困难、从高频到低频的题目,

2023-08-09 15:29:00 109

原创 GitHub霸榜的顶级分布式笔记,阿里内部独家分享

微服务因其为很多企业所用,当然,没有任何一项技术是完美的。系统后,一个的功能,内部可能需要调用多个服务器并操作多个数据库实现。毫不夸张地说,,也自然成为很多企业面试的重点考核对象。

2023-08-08 16:53:11 144

原创 图数据库使用及业务场景

来学习下图数据以及图数据库图数据库的使用是能解决很多复杂场景的问题的,但是这需要达到一定的量级。没达到量级使用关系型数据一样能满足。但是整体来说,针对特定场景提高效率,优化业务,精准消费的效果还是很可观的。

2023-08-07 09:46:59 399

原创 为什么list.sort()比Stream().sorted()更快?

但是,假设我们要对一个list排序,得先把list转成stream流,排序完成后需要将数据收集起来重新形成list,这部份额外的开销有多大呢?java的stream让我们可以在应用层就可以高效地实现类似数据库SQL的聚合操作了,它可以让代码更加简洁优雅。只不过,这里要量化地搞明白,到底多出了多少,这里得去编译jdk源码,在第3步前后将时间打印出来。可以发现,集合转为流再收集回来的过程,肯定会耗时,但是它占全过程的比率并不算高。方法sort测试将一个集合转为流再排序再收集回来的全过程耗时。

2023-08-03 10:11:49 1308

原创 Spring Boot 自定义启动画面

我们启动项目之后,会在控制台上看到类似下面的画面:呀呀呀~ 看不懂这是啥图案啊~那么,我们是否可以自定义呢?

2023-07-27 10:26:28 452

原创 玩一玩编程式 AOP

[toc] 平时我们项目中涉及到 AOP,基本上就是声明式配置一下就行了,无论是基于 XML 的配置还是基于 Java 代码的配置,都是简单配置即可使用。声明式配置有一个好处就是对源代码的侵入小甚至是零侵入。不过今天松哥要和小伙伴们聊一聊编程式的 AOP,为什么要聊这个话题呢?因为在 Spring 源码中,底层就是通过这种方式创建代理对象的,所以如果自己会通过编程式的方式进行 AOP 开发,那么在看 Spring 中相关源码的时候,就会很好理解了。

2023-07-24 13:57:33 71

原创 吹爆!Github标星50K的Java面试核心知识图谱(终极版)

程序员面试背八股,可以说是现在互联网开发岗招聘不可逆的形式了,其中最卷的当属Java!(网上动不动就是成千上百道的面试题总结)你要是都能啃下来,平时技术不是太差的话,面试基本上问题就不会太大。

2023-07-22 13:39:32 56

原创 千呼万唤始出来:阿里内部新出的SpringCloud实战笔记(全彩版)

在实际的企业开发中,消息中间件是至关重要的组件之一。消息中间件主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。不同的中间件其实现方式,内部结构是不一样的。

2023-07-22 13:18:30 67

空空如也

空空如也

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

TA关注的人

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