自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ELK 处理 SpringBoot 日志,真是太妙了!

ELK 是一个开源的实时日志分析平台,它主要由 Elasticsearch、Logstash 和 Kiabana 三部分组成。

2023-09-19 13:50:38 680

原创 Redis Stream 数据结构实现原理真的很强

当插入一个键值对时,Redis 会将键按照字符拆分成一个个字符,并根据字符在 Radix tree 中的位置找到合适的节点,如果该节点不存在,则创建新节点并添加到 Radix tree 中。需要注意的是,Redis Stream 是一种超轻量级的 MQ,并没有完全实现消息队列的所有设计要点,所以它的使用场景需要考虑业务的数据量和对性能、可靠性的需求。如下图展示一个简单的前缀树,将根节点到叶子节点的路径对应字符拼接起来,就得到了两个 key(“他说碉堡了”、“他说碉炸了”)。是的话 iskey 的值为 1。

2023-09-19 13:44:38 504

原创 你的@Autowired被警告了吗

回到开篇的idea的警告,网上有很多人都赞同的一种说法是,@Resource是JSR规范,@Autowired是Spring提供,不推荐使用绑定了Spring的@Autowired,因为@Resource在更换了框架后,依然可以使用。我不太赞同这种说法,因为idea的错误提示很明确,,不推荐使用属性注入的方式,那换成@Resource,我理解并没有解决这个问题,虽然idea确实不警告了,可能有点掩耳盗铃的意思。

2023-09-19 13:40:19 536 2

原创 为了解决count查询慢而写的分页查询总量缓存器

项目上出现了分页查询接口慢的问题,慢的原因是表数据量大,count查询很慢。分页查询接口有两次查询:count查询需要一行行读数据,累加起来得到总量,效率很低。一行语句,没有可优化空间,pass。查询LIMIT分页数据,靠前的数据一般都不慢,多线程增加代码复杂性,而且目前的问题是count耗时长,所以该方案也pass。简单可行,缺点是数据实时性不高,新增、删除的数量短期内不会更新,不适合用在高实时性的场景下。

2023-09-19 13:31:27 545

原创 记录一次OSSClient使用不当导致的OOM排查过程

最近线上有个比较边缘的项目出现OOM了,还好这个项目只是做一些离线的任务处理,出现OOM对线上业务没有什么影响,这里记录一下排查的过程本文介绍了使用Jprofiler排查一次线上由于使用阿里云OSSClient不当导致的OOM过程,主要还是写代码时没有注意OSSClient需要自己手动Shutdown导致的,还好不是出现在核心业务系统中,不然后果就比较麻烦了,以后使用别人提供的工具时一定要多看看官方是如何使用,多翻翻源码,避免再出现类似的问题。

2023-09-19 13:29:59 272

原创 session 生命周期和经典案例-防止非法进入管理页面

如果没有调用 setMaxInactiveInterval() 来指定 Session 的生命时长,Tomcat 会以 Session默认时长为准,Session 默认的超时为 30 分钟, 可以在 tomcat 的 web.xml 设置。public void setMaxInactiveInterval(int interval) 设置 Session 的超时时间(以秒为单位),超过指定的时长,Session 就会被销毁。值为正数的时候,设定 Session 的超时时长。

2023-09-19 13:26:47 193

原创 弯道超车,阿里高工新产Java面试速成指南,面试骚操作都在里面了

我自己也有实感,多年身处一线互联网公司,虽没有直面过求职跳槽的残酷,但经常担任技术面试考官,对程序员招聘市场的现状很清楚。但说实话,现在学习这些技术的人太多了,很多粉丝反馈说有经常在网上找些面试总结刷,但都不是很系统,一套下来学得费劲又无效。虽然行业红利在消失,但这绝不是最坏的时代,只是回归理性和稳定,我们除了要判断趋势,还要看到本质。,提前去速成补一下,走在技术前列,保持学习和进步,满意的工作还是很好找的!金九银十招聘热季已经来了,市场火热,但是大家就业压力却没有缓解多少。的解析中迈出第一步。

2023-09-18 15:59:06 137

原创 强势来袭,金九银十最新一线大厂 Java 面试题大全1000+面试题

纵观今年的技术招聘市场,Java 依旧是当仁不让的霸主!即便遭受 Go 等新兴语言不断冲击,依旧岿然不动。究其原因:Java 有着极其成熟的生态,这个不用我多说;Java 在 运维、可观测性、可监 控性方面都有着非常优秀的表现;Java 也在积极 应对容器化、云原生等大趋势,比如 Spring Boot 就已经全面拥抱云原生。企业对 Java 的需求最大,Java 程序员的群体也最为庞大,有着1200 万之多,彼此之间都有更多的选择。换句话说,也是最修罗场的!所以,要想。

2023-09-18 15:56:17 94

原创 爱了,阿里技术官亲笔的Java快速面试指南,熬夜啃完剑指大厂

金秋九月同时也是招聘旺季,因为大环境的影响,今年的招聘季有些特别,危机面前,持续的提高自己才是王道,提前准备下面试,有备无患。阿里,美团等大型互联网公司的高薪和福利吸引了很多工程师的加入,面试难度也水涨船高,

2023-09-18 15:51:25 104

原创 忽视日志吃大亏,手把手教你玩转 SpringBoot 日志!

学习完本文,你应当对现在这几个常用框架的有所了解,并能基础应用了。此次我们没有讲源码,也没有深入的讲其配置及进阶使用,这些我们会在后面慢慢学习。但现在我希望你能知道的是。一定要写好日志,一定要写好日志,一定要写好日志。重要的事情说三遍!这是区别新人和老鸟的一个重要依据,也是让自己排查问题更轻松的不二法门!另外,现在很多中间件都自己引用了日志插件,我们作为一个整体工程在使用中间件时,要及时发现并解决插件冲突,避免我们自己的日志配置失效,这也是一个程序员该注意的点。

2023-09-18 13:48:02 183

原创 SpringBoot 玩一玩代码混淆,防止反编译代码泄露

就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来,可以看到你的代码写的啥。简单就是把代码跑一哈,然后我们的代码 .java文件 就被编译成了 .class 文件。其余的看注释,可以配置哪些类不参与混淆,哪些枚举保留,哪些方法名不混淆等等。我给你看,但你反编译看到的不是真正的代码。那如果不想给别人反编译看自己写的代码呢?先看一下我们混淆一个项目代码,要做啥?该篇玩的代码混淆 ,是其中一种手段。build标签里面改动加入一下配置。

2023-09-18 13:41:56 345

原创 Spring中@Cacheable、@CacheEvict以及其他缓存相关注解的实用介绍

Spring框架是使用最广泛的Java框架之一,它提供了一组丰富的与缓存相关的注释,使缓存机制更加高效和简单。在上面的方法中,@Cacheable确保如果complicatedBookOperation特定的结果id已在缓存中,则返回该结果而不执行该方法。在该方法影响可能导致整个缓存过时的数据的情况下,这可能很有用。缓存的核心是一种以允许更快检索的方式存储经常访问的数据的方法。该@EnableCaching注释向 Spring 的缓存机制发出信号,以在整个应用程序中查找其他与缓存相关的注释。

2023-09-18 13:38:44 248

原创 面试爽文 :开局一张图,花十分钟了解 HashMap 的树化逻辑

闲来无事,对 HashMap 其中比较重要的节点做了一下深入,然后尝试用最通俗易懂的说法输出出来。看完这篇还能被问住,那不怪你,那是面试官的问题。

2023-09-18 13:36:07 264

原创 Java中的HashTable:快速、高效的数据存储与检索方式

本文将介绍Java中的HashTable的实现原理、常用方法和测试用例。首先,我们将介绍哈希表的实现原理和哈希函数的作用。然后,我们将介绍Java中的HashTable的实现和使用方式,包括添加、查找和删除元素等常用方法。最后,我们将介绍如何编写测试用例来验证代码的正确性,以及如何优化哈希函数以提高性能。

2023-09-18 13:33:09 246

原创 SpringBoot使用@Async注解8大坑点

SpringBoot中,@Async注解可以实现异步线程调用,用法简单,体验舒适。但是你一定碰到过异步调用不生效的情况,今天,我就列出90%的人都可能会遇到的8大坑点。这里面,我个人认为绝大多数人会遇到的坑点集中在没有配置自定义线程池、异步方法在同一个类中调用、事务不起作用这几个问题上。所以,万金油的写法还是专门定义一个AsyncService,将异步方法都写在里面,需要使用的时候,就在其他类将其注入即可。

2023-09-18 13:31:42 294

原创 聊聊Java中String,StringBuilder,StringBuffer那些事

对于这三个,我们首先能知道的就是String是不可变的,StringBuilder和StringBuffer是可变的,那么我们就先说说String,它为什么设计成不可变的以及怎么实现不可变的。

2023-09-18 13:29:40 112

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

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

2023-09-15 19:22:01 218

原创 阿里资深架构师耗时三年整理,Java面试核心知识点原理篇文档

本文是对Java程序员面试必备知识点的总结,详细讲解了JVM原理、多线程、数据结构和算法、分布式缓存、设计模式等内容,希望读者能通过阅读本书对Java的基础原理有更深入、全面的理解。面试官通常会在短短两小时内对面试者的知识结构进行全面了解,面试者在回答问题时如果拖泥带水且不能直击问题的本质,则很难充分表现自己,最终影响面试结果。针对这种情况,本文在讲解知识点时不拖泥带水,力求精简,详细介绍了Java程序员面试时常被问及的核心知识点。

2023-09-15 19:17:36 103

原创 面试被刷,吃透这500道大厂Java高频面试题后,怒斩offer

很多Java工程师的技术不错,但是一面试就头疼,10次面试9次都是被刷,过的那次还是去了家不知名的小公司。问题就在于:面试有技巧,而。这些问题,相信每一位Java程序员都曾遇到过,甚至有的人至今也不知道要怎么解决,屡面屡败,最终导致你的面试通过率极低。为了帮助各位工程师,掌握Java面试中每一个问题的技巧,提高面试通过率,在这分享一些由于篇幅影响,在这只展示了每个模块的目录和部分解析,有需要完整版PDF的朋友可以前往文末自取!

2023-09-15 19:11:32 101

原创 字节二面:分布式场景下,数据一致性,你要如何应对?

考虑支付重构的时候,自然想到原本属于一个本地事务中的处理,现在要跨应用了要怎么处理。拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户服务。原本收到充值回调后,可以将修改订单状态和增加金币放在一个mysql事务中完成的,但是呢,因为服务拆分了,就面临着需要协调2个服务才能完成这个事务图片,暂且用来定义吧。同样的问题还存在于其他的场景:在涉及支付交易等付费接口的时候,数据一致性的问题就显得尤为重要,因为都是钱啊。

2023-09-15 16:35:24 142

原创 Java经典面试解析:服务器卡顿、CPU飙升、接口负载剧增

在架构设计中,可以说缓存无处不在。如果你没有实际解决过类似问题,则可以说一下自己的思路,只要大体思路和方向是对的,那么在遇到类似问题的时候,可以利用网络上的资料去逐步尝试解决。jstack有3个参数,第1个参数是前面记下的 PID,之后加上 grep,紧跟着是转成十六进制数的TID,最后加上 –A和一个数字,这个数字表示输出日志的行数,至此就可以直接打印出具体的异常信息了。CPU利用率过高,说明当前服务器要处理的指令比较多,当CPU忙不过来的时候,指令的运行效率自然就会下降,用户的感受就是程序响应变慢了。

2023-09-15 16:33:41 80

原创 SpringBoot拦截器和动态代理有什么区别?

[email protected]("拦截器:执行 preHandle 方法。");@OverrideSystem.out.println("拦截器:执行 postHandle 方法。");@OverrideSystem.out.println("拦截器:执行 afterCompletion 方法。");

2023-09-15 16:21:43 83

原创 深度解析ForkJoinPool源码:Java并行计算的内部机制

通过深入分析ForkJoinPool的源代码,我们可以更好地理解其内部机制,包括任务的提交和调度、工作窃取算法、Worker线程的管理等方面的细节。这有助于开发者更好地利用ForkJoinPool来实现高效的并行计算。当然,要真正掌握ForkJoinPool,还需要不断实践和深入研究其源码,以满足特定的并发处理需求。

2023-09-15 16:10:40 148

原创 记一次线上间隙锁引发的死锁问题

以上就是本次线上问题死锁(通过本地复现)的排查过程,因为有些东西直接上来就说可能不太好,所以本文穿插了很多锁的知识点。由于mysql锁比较复杂,在insert 、update、 for update/lock in share model、delete下的加锁规则可能不同。在堆主键索引,唯一索引,非唯一二级索引,以及无索引的字段上 加的锁又不一致。在等值匹配和范围匹配时加的锁又有可能不一样。在不同隔离级别下加锁规则又不一致。再加上实际项目中复杂的业务逻辑。所以。

2023-09-15 15:07:06 133

原创 解密Java中的Map:如何高效地操作键值对?

Map是Java中非常重要的数据结构之一。它存储键值对,可以通过键快速查找对应的值,是我们在实际开发中使用最为频繁的数据结构之一。本文旨在介绍Java中常见的Map实现以及它们的优缺点,以及如何在实际应用中高效地操作键值对。本文首先介绍了Java中常见的Map实现,包括HashMap、TreeMap、LinkedHashMap和ConcurrentHashMap。然后分别介绍它们的特点、优缺点以及适用场景。接着介绍了如何在实际应用中使用Map,包括如何添加、删除、更新和查询键值对。

2023-09-15 14:27:58 230

原创 SpringBoot自动配置原理,以及如何编写自定义的starter

ImportSelector是一个接口,该接口提供了一个selectImports方法,用来返回全类名数组;可以通过这种方式,动态导入N个bean创建普通类kotlin复制代码} ​ }typescript复制代码} ​ }实现ImportSelector接口typescript复制代码} ​ }创建一个配置类,导入实现了ImportSelector接口的类less复制代码} } }控制台输出结果简介。

2023-09-15 14:22:34 171

原创 太赞了,阿里技术团队《Java 面试官手册》突击版免费对外开放

现在已经不是几年前了,可能路边的大爷都知道学计算机挣钱了,有多卷可能今年秋招的同学体会最深。突然想起一个段子,就是当路边的大爷都开始进场买股票时,说明市场已经很危险了。不过大家大可放心,大爷永远无法进场搞计算机,大家放心卷。因为公司不要三十五岁以上的人,没想到这个大家经常抱怨的傻屌行规有时还能保护大家。为了能够助力大家准备面试,拿个高频面试手册系统查漏补缺一下多少是对你有帮助的!前段时间从阿里的朋友那里嫖到了一份据说是阿里技术官编写的面试手册,分享给大家。篇幅限制小编,展示了部分目录及截图。

2023-09-13 16:32:50 65

原创 突发,某大牛不小心把珍藏多年的Java面试题库泄露了,太香了

希望这些面试题能够帮助到大家的学习,并且能在秋招成功上岸,拿到满意的offer和薪资!

2023-09-13 16:27:59 62

原创 霸榜GitHub的Java面试宝典,国外友人直呼太卷了

有很多朋友都觉的现在Java面试题太难了,而且没有一份比较新的、全面的Java面试题。于是我在牛客上基本上刷完了所有大厂的面试题,然后整理出了一套全能面试题。我尝试着把这份面试题放到GitHub,没想到已经飙升到137k。大部分都是咱们中国的Java选手,外国人看到后都怀疑人生:“中国人这么卷的吗(?)”我再次整理后整理出更方便阅读的文档,

2023-09-13 16:23:29 126

原创 ELK 处理 Spring Boot 日志,不错!

ELK 是一个开源的实时日志分析平台,它主要由 Elasticsearch、Logstash 和 Kiabana 三部分组成。

2023-09-13 15:29:28 88

原创 SpringCloud 微服务迁移到 Kubernetes 容器化完整流程

之前本地部署的镜像仓库Harbor: http://192.168.0.127:8084/,如果没有可拿docker-hub注册一个账号。把我们上面手动做的这些,通过Jenkins等组件搭建成一个自动化部署的过程,就涉及到DevOps相关的知识了。推送镜像到镜像仓库需要满足镜像仓库的镜像名称,因此需要给构建好的镜像打个tag。这儿构建时间久是因为第一次构建,需要下载maven依赖,之后构建就会很快了。编写gateway服务的DockerFile,制作镜像。项目镜像:基础镜像+中间件镜像+项目代码。

2023-09-13 15:27:03 151

原创 Java中的compareTo方法详解

Comparable是Java中的一个接口,位于java.lang包中。它包含一个方法compareTo,用于定义类的自然排序顺序。自然排序顺序是指一种默认的对象比较方式,通常基于对象的某个属性或多个属性的值。实现Comparable接口的类可以通过compareTo方法来定义它们的自然排序规则。Comparablecsharp复制代码compareTo方法返回一个整数值,该值表示当前对象与另一个对象的比较结果。如果当前对象小于另一个对象,则返回负整数。如果当前对象等于另一个对象,则返回零。

2023-09-13 15:19:11 957

原创 深入理解线程的优雅退出机制

不推荐强制销毁线程,会导致资源无法被释放,进行中请求无法正常处理完,导致业务数据处于不可知的状态。Java推荐优雅退出线程。业务层可以使用字段标记,定期检查是否需要退出任务。Thread.interrupt中断目标线程、isInterrupted查询中断位标记。使用Thread.interrupt处理中断也可以优雅退出,但需要上下层堆栈都要关注中断,不得吞掉中断。

2023-09-13 15:17:58 179

原创 @RestController 和 @Controller 的区别

在本文中,我们介绍了和这两个在Spring框架中常用的注解。用于传统的Web应用程序,它处理HTTP请求并返回视图,请确保您在方法中返回视图名称。用于构建RESTful API,它将数据转换为JSON或XML格式,并直接发送给客户端。根据您的需求,选择适合的注解将有助于更好地开发Spring MVC应用程序。

2023-09-13 15:04:27 195

原创 Redis:哪些你还不知道的热门应用场景

Redis是一个高性能的键值存储数据库,它具有许多应用场景。本篇文章将介绍一下redis的哪些热门应用场景,并介绍一下这些场景怎么实现它。redis的应用场景缓存排行榜计数器应用共享Session分布式锁社交网络消息队列位操作。

2023-09-13 14:54:11 91

原创 CompletableFuture使用与原理解析

在并发编程中,我们一般会使用Runnable编写任务的内容然后提交给线程池交由线程池调度线程执行。这种情况我们通常是针对不关心任务执行的结果,但如果关心任务执行的结果,并且根据执行结果执行后续的动作,这个时候就需要配合使用Callable+Future来实现了,其中Callable关注异步任务的执行,而Future则关注异步任务的执行结果,它提供了方法来检查任务是否完成,并在完成后获取结果。我们可以看下下面的代码:​java复制代码package com.markus.concurrent.future;

2023-09-13 14:07:39 148

原创 阿里互联网一线大厂Java岗面试题库(2023年版)这次38k,稳了

本文是为了帮大家快速回顾了Java中知识点,这套面试手册涵盖了诸多Java技术栈的面试题和答案,相信可以帮助大家在最短的时间内用作面试复习,能达到事半功倍效果。本来想将文件上传到github上,但由于文件太大有的都无法显示所以直接整理成多个PDF,供大家学习。

2023-09-12 14:50:23 73

原创 阿里最新23版Java面试系列手册已出炉,竟堪称面试杀手锏

而且面试中所问的和你在面试之前给自己准备复习的“面试手册资料”不一样,如果你也有这样的问题,那说明你的技术应该继续修炼了!为了帮大家解决这一问题,我特意给大家从阿里大神手上求来这份 《最近收到了很多面试受挫的小伙伴诉苦,其中内容无非就是说J。考察得越来越细,越来越底层。阿里、美团等大厂的面试真题。尤为重要,像一些一线的。是你在不断成长过程中。勇敢程序员,不怕困难。

2023-09-12 14:47:58 66

原创 八位阿里大牛耗时三年总结出Java面试复盘手册,带你实现逆风翻盘

都说程序员工资高、待遇好,改变无数程序员职业生涯的金九银十已来,你的小目标是什么 30K、40K,还是 16 新的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的奖励 Offer 并不算难。然而,提升 Java 核心能力最快、最有效,短期内升职加薪的方法,到底是什么?首先,你需要跳出日常工作,接触更有深度、更前沿的顶级项目。一个简单的逻辑:大厂之所以能够给到高于行业水准的薪资,正是因为即使是普通开发人员,也要应对很多复杂的场景。

2023-09-12 14:44:44 87

原创 面试官:说说BIO、NIO、AIO有什么区别

Java中I/O是以流为基础进行数据的输入输出的,所有数据被串行化(所谓串行化就是数据要按顺序进行输入输出)写入输出流。简单来说就是java通过io流方式和外部设备进行交互。在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,「网络上的数据传输流」,字符串流,对象流等等等。比如程序从服务器上下载图片,就是通过流的方式从网络上以流的方式到程序中,在到硬盘中。

2023-09-12 14:16:59 173

空空如也

空空如也

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

TA关注的人

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