![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java面试
文章平均质量分 82
码事通
这个作者很懒,什么都没留下…
展开
-
这段时间,面试官问的较多的问题总结加答案
就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。红黑树是一种自平衡的二叉查找树:特点如下:节点都是红色节点和黑色节点根节点都是黑色的每个叶子节点都是黑色的空节点(也就是说叶子结点不存储数据)每个红色节点的两个子节点都是黑色的丛任意节点到每个叶子结点的所有路径都包含相同数目的黑色节点IP协议对应网络层,TCP协议对应于传输协议层,而HTTP协议对应于应用层。原创 2023-08-30 11:48:55 · 65 阅读 · 0 评论 -
吹爆这个最近在用的 IDEA 神器
在做源码分析的时候,我们常常会有这样一种需求,一堆源码看完后,我想画个时序图把思路捋一下,像下面这样:画图的工具有很多,相信大部分小伙伴也都会画。然而,画图太费时间了!!!而且这个图跟我们的代码关联性很大,就是照着代码画的。那么问题就来了,能不能照着代码生成呢?要是能够照着代码生成,岂不是要爽很多。今天松哥就给大家介绍一个我最近在用的 IDEA 插件SequenceDiagram。我不是那种收集狂,虽然我的笔记本并不卡,但是对于 IDEA 中安装插件我还是非常慎重的,很少装。.原创 2022-02-28 16:55:51 · 193 阅读 · 0 评论 -
吹爆这个最近在用的 IDEA 神器
在做源码分析的时候,我们常常会有这样一种需求,一堆源码看完后,我想画个时序图把思路捋一下,像下面这样:画图的工具有很多,相信大部分小伙伴也都会画。然而,画图太费时间了!!!而且这个图跟我们的代码关联性很大,就是照着代码画的。那么问题就来了,能不能照着代码生成呢?要是能够照着代码生成,岂不是要爽很多。今天松哥就给大家介绍一个我最近在用的 IDEA 插件SequenceDiagram。我不是那种收集狂,虽然我的笔记本并不卡,但是对于 IDEA 中安装插件我还是非常慎重的,很少装。.原创 2022-02-28 16:48:33 · 170 阅读 · 0 评论 -
不会吧,你还不会用RequestId看日志 ?
引言在日常的后端开发工作中,最常见的操作之一就是看日志排查问题,对于大项目一般使用类似ELK的技术栈统一搜集日志,小项目就直接把日志打印到日志文件。那不管对于大项目或者小项目,查看日志都需要通过某个关键字进行搜索,从而快速定位到异常日志的位置来进一步排查问题。对于后端初学者来说,日志的关键字可能就是直接打印某个业务的说明加上业务标识,如果出现问题直接搜索对应的说明或者标识。例如下单场景,可能就直接打印:创建订单,订单编号:xxxx,当有问题的时候,则直接搜索订单编号或者创建订单。在这种方式下,经常会原创 2022-02-28 16:46:55 · 1885 阅读 · 0 评论 -
阿里为什么不能使用 BigDecimal 的 equals 方法做等值比较?
# 前言BigDecimal 是 java.math 包中提供的一种可以用来进行精确运算的类型。所以,在支付、电商等业务中,BigDecimal 的使用非常频繁。而且其内部自带了很多方法,如加,减,乘,除等运算方法都是可以直接调用的。除了需要用 BigDecimal 表示数字和进行数字运算以外,代码中还经常需要对于数字进行相等判断。说到等值比较,咱们先看看《阿里巴巴Java开发手册》中的要求:那么为什么会有这样的要求呢~ 其中的奥秘是什么呢~请各位小伙伴听我娓娓道来…原创 2022-02-21 14:26:04 · 158 阅读 · 0 评论 -
Spring Boot 开挂:3 行代码 = 8 个接口
肯定有不少人会想:这怎么可能呢?就算用几乎零配置的SpringBoot,写一个最简单的接口也得有3行代码啊! @RequestMapping("test/{request}") public String test(@PathVariable String request) { return request + ": Hello World"; }8个没啥用的Hello World接口就得24行代码了!这还没算 拼SQL连JDBC 或者 调用O原创 2022-02-21 14:24:45 · 94 阅读 · 0 评论 -
在项目中使用c3p0作为数据库连接池,被技术总监怼了
介绍数据库连接是一项非常关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。记得之前做的一个项目,当时的应用程序配置的c3p0数据库连接池,最大允许的连接数是500,结果上线没多久,并发量直接上来了,导致大量的数据插入失败,当晚的心情可想而知~从那一次事故之后,让我对应用程序的数据库连接数有了一次深刻的认识,为了防止再次栽跟头,特意抽了一个时间来编写程序测试案例,用于测试各个数据源连接池的稳定性,以防止自己再次踩坑!话不多说,直接撸起来!二、程序实例熟悉 web原创 2022-02-18 17:30:18 · 731 阅读 · 0 评论 -
Spring Security过滤器就该这么配置
CaptchaAuthenticationFilter这个验证码过滤器是通过模仿UsernamePasswordAuthenticationFilter实现的。同样的道理,由于UsernamePasswordAuthenticationFilter的配置是由FormLoginConfigurer来完成的,应该也能模仿一下FormLoginConfigurer,写一个配置类CaptchaAuthenticationFilterConfigurer去配置CaptchaAuthenticationFilter。原创 2022-02-18 17:17:58 · 703 阅读 · 0 评论 -
Java 大杀器来了,性能提升一个数量级
自 1996 年诞生以来,Java 语言长期在最受欢迎的编程语言排行榜中占据领先地位。除了语言本身的优秀特性之外,Java 语言持续演进、不断发展也是它能够保持长盛不衰的重要原因。Java 语言的功能和性能都在不断地发展和提高,但是冷启动开销较大的问题长期存在,难以从根本上解决。Java 语言也因此在 Serverless 场景下无法与 Node.js、Go 等快速启动的语言竞争,落于下风。在这种背景下,作为能够从根本上解决冷启动问题的Java 静态编译技术有了用武之地,开始在业界崭露头角,为 ...原创 2022-02-18 17:16:23 · 454 阅读 · 0 评论 -
霸榜Github,阿里P9微服务全栈笔记限时开源,已破赞87K
前言随着云端办公以来,发现微服务越来越重要了。Docker 容器技术和自动化运维等相关技术发展,使微服务变得更容易维护。大家可能都注意到,像阿里、腾讯、字节跳动等大厂的后端岗位明确写出:微服务设计经验优先。如果没有这方面的准备的话,想拿到高薪可不容易。 不难预料,今年,微服务只会越来越完善,成为将来大中型企业业务架构的发展方向。但对于一些 coding 的朋友,由于接触不到一线实战架构设计,眼看别人都在向微服务架构转型,自己却只能日复一日地重复造轮子。 微服务越来越重要,但以下6个点是大家也都需要注意的原创 2022-02-08 21:59:15 · 460 阅读 · 1 评论 -
60秒彻底揭开JVM运行程序的秘密
今天带大家来学习下字节码 ,毕竟这是 Java 能跨平台的根本原因,而且通过了解字节码也可以彻底揭开 JVM 运行程序的秘密,整体会用问答的形式来讲解能否简单介绍一下 Java 的特性Java 是一门面向对象,静态类型的语言,具有跨平台的特点,与 C,C++ 这些需要手动管理内存,编译型的语言不同,它是解释型的,具有跨平台和自动垃圾回收的特点,那么它的跨平台到底是怎么实现的呢?我们知道计算机只能识别二进制代码表示的机器语言,所以不管用的什么高级语言,最终都得翻译成机器语言才能被 CP原创 2022-02-08 21:55:33 · 104 阅读 · 0 评论 -
@Configuration 类型的 class 需要知道的细节
知识点收获通过本文,你能收获什么?@Configuration.class文件如何被spring加载的? @Configuration.class文件如何被转化为BeanDefinition放入spring容器的? @Configuration的BeanDefinition如何转化为ConfigurationClass对象的 ConfigurationClass对象属性在哪里开始被解析的? @Configuration的BeanDefinition的beanClass值何时变成proxy代理原创 2022-02-08 16:31:02 · 164 阅读 · 0 评论 -
MQ消费失败,自动重试思路,如何保证MQ消息正常被业务消费
MQ消费失败,自动重试思路在遇到与第三方系统做对接时,MQ无疑是非常好的解决方案(解耦、异步)。但是如果引入MQ组件,随之要考虑的问题就变多了,如何保证MQ消息能够正常被业务消费。所以引入MQ消费失败情况下,自动重试功能是非常重要的。这里不过细讲MQ有哪些原因会导致失败。MQ重试,网上有方案一般采用的是,本地消息表+定时任务,不清楚的可以自行了解下。我这里提供一种另外的思路,供大家参考。方案实现在RabbitMQ(安装延迟队列插件)+.NET CORE 3.1设计思路为:内置一个专门做重原创 2022-02-08 15:35:06 · 5724 阅读 · 0 评论 -
大数据分布式存储之Cassandra——分布式存储的奠基石
分布式存储区别于集中式数据库存储,通过网络将海量数据存储到企业的各个数据节点(可能分布到不同的数据中心或机架上);分布式存储需要考虑的问题元数据管理元数据是指数据本身的标识,通过元数据能很快的找到数据存储的位置,比如在分布式文件系统中,元数据是指文件的路径名+文件名;元数据管理包括集中式元数据管理架构和分布式元数据管理架构;集中式是指将元数据存储到一个节点上,实现简单,但具有单点故障和性能瓶颈的问题;分布式元数据架构是将元数据存储到多个节点上,虽然解决了集中式元数据管理架构的问题,但却引入了数据原创 2022-02-08 15:32:18 · 2383 阅读 · 0 评论 -
败给“MySQL”的第33天,重振旗鼓,四面拿下阿里淘系offer
自己投了几家头部互联网公司,阿里是其中之一,也是我的期望公司。既然目标定下来了,自然是要竭尽全力去实现的,年前面试了阿里一波,但最终是败给了MySQL,好几个问题都答得不太理想,所以结果也想象得到,挂得很快。但今年由于疫情的缘故,各大互联网公司也受到了一些阻力,不过也趁着这空闲之际,我重整旗鼓,在败给“MySQL”的第33天,四面拿下了阿里淘系offer!编辑切换为居中添加图片注释,不超过 140 字(可选)阿里淘系面试题(核心部分) 以下内容主要是我整理出来的这两次面试的核心面试题,原创 2022-02-08 15:28:18 · 135 阅读 · 0 评论 -
oauth2登录认证之SpringSecurity源码分析
最近想给自己的小系统搭建一个登录认证服务,最初是想着一套oauth2权鉴就可以,但是发现这个oauth2只是权鉴,具体的登录认证需要由 SpringSecurity来进行实现。也就是说SpringSecurity 主要就是用来进行用户名、密码认证的登录框架然后看了一下 SpringSecurity,发现之前用过,但是只是用过,具体的流程不清楚。趁这个机会,将SpringSecurity源码大体的整理看一下。概述#SpringSecurity 的功能就是 认证、授权、防止伪造登录其核心就是一组原创 2022-02-08 15:09:28 · 259 阅读 · 0 评论 -
五面腾讯定级T3-2,刷完这1360道面试真题,我终于悟了
上个月,哥们从某小厂离职,转投阿里云,简历优秀,很顺利地拿到了面试通知,但之后的进展却让哥们怀疑人生了,或者说让哥们懵逼的是,面试阿里云居然第一面就被吊打?让哥们开始怀疑自己,是不是这些年工作下来,自己没有一丁点的进步呢? 幸运的是,经过他朋友推荐,去面试了华为,面试华为的过程极为顺利,很快就拿到了offer。这让哥们更弄不懂了,4面拿华为offer的水平,面试阿里居然一面就被吊打? 索性,哥们想分享一下这次的面试经历,让各位老铁好好帮他参考参考,出一出主意!另外,我下文还整理了一些哥们的复习资料阿原创 2022-02-07 21:54:33 · 274 阅读 · 0 评论 -
蘑菇街被裁, 猛刷30天腾讯T3的面试手册,斩获字节,腾讯两家大厂offer
前言先说一下自己的个人情况,18届应届生,通过校招进入到了蘑菇街,然后一待就待了差不多2年多的时间,可惜的是今年4月份受疫情影响遇到了大裁员,而我也是其中一员。好在早有预感,提前做了准备,之前一直想去字节跳动,年前就已经在做准备了,这场持久战拉得很长,也最终以7个月的时间取得胜利。在踏入字节跳动,办理入职手续的那一天,作为一个男子汉,确实是落泪了。特分享一波我的真实经历,共勉。 小tip: 其实一个公司要进行裁员通常都会出现一些前期征兆:业务发展遇到较大瓶颈,并且难以突破、频繁调整战略目标、高管开始陆续原创 2022-02-07 14:31:12 · 179 阅读 · 0 评论 -
如何快速创建一个拥有异步任务队列集群的 REST API
异步任务是 Web 后端开发中最常见的需求,非常适合多任务、高并发的场景。本文分享如何使用 docker-compose、FastAPI、rq 快速创建一个包含异步任务队列集群的 REST API,后端执行任务的节点可以随意扩展。系统的架构图:上图中的每一个方框都可以理解为一个服务器。用户请求 api, api 将任务放入 redis 队列,worker 自动去 redis 队列取出任务并执行,worker 节点可以任意水平扩展。接下来,我们来实现这一架构的 demo,你可以看到 d原创 2022-02-07 14:28:08 · 215 阅读 · 0 评论 -
替代 Postman + Swagger,Apifox 才是 YYDS
作为一个后端开发者,我做的大部分项目一般都是基于 Swagger 来管理 API 文档,基于 Postman 来做接口调试,基于 JMeter 来做接口性能测试,基于 RAP 等工具 Mock API 数据。我经常在想:“要不要这么麻烦?有没有一款工具能够直接提供这些功能?经常在不同的工具之间切换来切换去真的很烦呢!”。我在网上找了很久,终于让我找到了一款游戏 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台 —Apifox。Apifox 介绍官方对 Apif.原创 2022-02-07 14:27:06 · 416 阅读 · 0 评论 -
Gradle:现代高效的java构建工具
相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服:一来Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么XML文件就会变得非常非常长; 二来XML文件不太灵活,假如你需要在构建过程中添加一些自定义逻辑,搞起来非常麻烦; 第三就是Maven非常的稳定,但是相对的就是对新版java支持不足,哪怕就是为了编译java11,也需要更新内置的Maven插件。如果你对Maven的这些缺点也原创 2022-01-24 20:26:18 · 1305 阅读 · 0 评论 -
弹性负载均衡服务助力企业应对高并发流量冲击,看看你缺了哪些?
摘要弹性负载均衡(Elastic Load Balance 简称ELB)将访问流量均衡分发到多台弹性云服务器,扩展应用系统对外的服务能力,实现更高水平的应用程序容错性能。如今,随着互联网规模和消费者规模的不断扩大,企业面对着高并发请求场景下的流量冲击,尤其是每逢618或双11,会有数以亿计的用户同时访问互联网进行购物,网站访问用户的激增,会导致单服务器超负荷运行,导致网站访问卡顿或失败,严重影响用户体验,会给企业带来巨大损失。弹性负载均衡服务可以轻松帮助企业解决这个难题。弹性负载均衡(Elast原创 2022-01-24 14:55:05 · 243 阅读 · 0 评论 -
搭稳Netty开发的地基,用漫画帮你分清同步异步阻塞非阻塞
NettyNetty是一款非常优秀的网络编程框架,是对NIO的二次封装,本文将重点剖析Netty客户端的启动流程,深入底层了解如何使用NIO编程客户端。Linux网络编程5种IO模型根据UNIX网络编程对于IO模型的分类,UNIX提供了5种IO模型,分别是阻塞IO、非阻塞IO、IO复用、信号驱动IO、异步IO。这几种IO模型在《UNIX网络编程》中有详解,这里作者只简单介绍,帮助大家回忆一下这几种模型。对于Linux来说,所有的操作都是基于文件的,也就是我们非常熟悉的fd,...原创 2022-01-24 14:52:20 · 235 阅读 · 0 评论 -
Redis分布式锁升级:RedLock+SpringBoot
分布式锁概览在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?因此就引出了分布式锁,它是控制分布式系统之间互斥访问共享资源的一种方式。在一个分布式系统中,多台机器上部署了多个服务,当客户端一个用户发起一个数据插入请求时,如果没有分布式锁机制保证,那么那多台机器上的多个服务可能进行并发插入操..原创 2022-01-24 14:38:49 · 264 阅读 · 0 评论 -
33岁跳槽,走投无路之际受贵人指点,成功上岸阿里P7岗
马上过34岁生日了,和大家聊聊最近的情况 半年前还在迷茫该学什么,怎样才能走出现在的困境,半年后已经成功上岸阿里,感谢在这期间帮助我的每一个人 伊始 30多岁工作的时候总是有种力不从心的感觉,正值壮年却活得像个五六十岁的人 在北京工作,却没能在北京买房,最后还是在慢慢地还着房贷车贷、考虑着孩子的学费、培训班的费用、已经琐碎的日常生活费 工资勉强高过支出,但我还能再工作几年呢? 陷入迷茫 工资比不过年轻人,还要被年轻人管着,心里很不舒服,不过我想他们也不愿意管着年龄大的人吧,渐渐地有了离职的想法,原创 2022-01-24 14:34:28 · 33 阅读 · 0 评论 -
涨知识,Cas单点登录剖析,原来奥妙在这里
CAS简介CAS(Central Authentication Service) 是 Yale 大学发起的构建 Web SSO 的 开源项目SSO 是什么?SSO-Single Sign On就是 单点登录 也就是 多个网站程序 统一到一个网址进行登录身份验证主要特点是:SSO 应用之间使用 Web 协议 (如HTTPS) ,并且只有一个登录入口。我们所讲的SSO,指 Web SSO 。SSO 的体系中,有下面三种角色:User(多个)Web应用(多个)SSO认证中心(一个)所有的登原创 2022-01-24 14:08:49 · 170 阅读 · 0 评论 -
如果连Redis分布式锁的这些坑都不知道,我怀疑你是假的开发
摘要:用锁遇到过哪些问题?一、白话分布式什么是分布式,用最简单的话来说,就是为了降低单个服务器的压力,将功能分布在不同的机器上面;就比如:本来一个程序员可以完成一个项目:需求->设计->编码->测试但是项目多的时候,一个人也扛不住,这就需要不同的人进行分工合作了这就是一个简单的分布式协同工作了;二、分布式锁首先看一个问题,如果说某个环节被终止或者别侵占,就会发生不可知的事情这就会出现,设计好的或者设计的半成品会被破坏,导致后面环节出.原创 2022-01-24 14:03:17 · 166 阅读 · 0 评论 -
为什么不建议你使用实数作为 HashMap 的key?
1.起因让我关注到这一点的起因是一道题:牛客网上的max-points-on-a-line题目是这么描述的:Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.大意就是给我一些点的X,Y坐标,找到过这些点最多的直线,输出这条线上的点数量于是我就敲出了以下的代码:import java.util.HashMap;impor...原创 2022-01-23 14:19:45 · 101 阅读 · 0 评论 -
mysql索引底层数据结构和算法
分析以下几条 sql 根据索引使用情况1. SELECT * FROM titles WHERE emp_no='10001' AND title='Senior Engineer' ANDfrom_date='1986-06-26';2. SELECT * FROM titles WHERE title='Senior Engineer' ;3. SELECT * FROM titles WHERE emp_no > ‘10001';4. SELECT * FROM titles原创 2022-01-21 19:16:17 · 71 阅读 · 0 评论 -
分布式理论与分布式事务
CAP分布式系统的CAP理论是由Eric Brewer于1999年首先提出的,又被称作布鲁尔定理(Brewer’s theorem),CAP是对Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容忍性)的一种简称,如下图所示:CAP定理告诉我们,一个分布式系统不可能同时满足一致性(Consistency),可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求,最多只能同时满足其原创 2022-01-21 16:59:13 · 70 阅读 · 0 评论 -
容器技术之Docker&K8S知识笔记
本文带你快速了解Kubernetes与Docker让你对容器与虚拟机的区别、Docker与K8S有一个快速的了解目录演变史 容器与虚拟机的区别 K8S与Docker概念 Docker K8S 参考文章演变史传统部署时代:早期,将单一的应用服务运行在物理服务器上,无法给服务器的应用程序进行资源的限制,导致物理服务器之间的资源负载使用不均衡,就导致了服务器上的应用程序的性能下降,物理服务器的维护成本变得很高。虚拟化部署时代:作为解决方案,引入了虚拟化功能,它允许您..原创 2022-01-21 16:46:44 · 5495 阅读 · 1 评论 -
Linux内核源码树分析
1.Linux内核源码的获取第一种方法:打开链接:https://github.com/raspberrypi/下载具体使用的版本取决于树莓派的版本,指令: uname -r 可查看树莓派的版本,我的树莓派的版本是4.14,所以我下载的是4.14的百度网盘:https://pan.baidu.com/s/1EhI0LFg4-jtKjVe1dwsL1g提取码:p4yw2.下载到虚拟机使用指令unzip linux-rpi-4.14.y.zip解压3.解压完进入到linux-rpi-..原创 2022-01-21 14:07:18 · 212 阅读 · 0 评论 -
爆赞,GitHub上首本IntelliJ IDEA操作手册,收藏已有10000+
还记得刚开始工作的时候使用的是Eclipse,后面是当时公司第一批尝鲜IDEA的人。刚开始用起来其实蛮麻烦的,因为最开始还是带着Eclipse的思维。比如在Eclipse中一个workspace中可以有多个project,但是在IDEA中就没有workspace的概念了,取而代之的是project,一个project中可以有多个module。已经不止N次的被读者问到有没有IDEA的教程,其实我觉得这就是一个工具,无非就是一个熟能生巧的过程。在N + 1次被问到的时候,我觉得有必要肝一份使用手册了!原创 2022-01-21 14:06:00 · 107 阅读 · 1 评论 -
5 个维度深度剖析「主从架构」原理
为了保证缓存的高可用,我们经常听到采用主从架构来保证高可用,那如何去理解主从架构核心原理呢?这次我们还是用最熟悉的 Redis 缓存来理解主从架构,只要理解了一个主从架构,其他技术的主从架构都是一通百通。Redis 的主从架构,其实就是利用多副本,将一份数据同时保存在多个实例上。单个实例出现故障后,一般都会过一段时间才能恢复,那么其他节点还是可以提供服务的。本篇我会带着大家一起探讨缓存的主从架构几个问题:Why:为什么需要主从架构? What:主从架构原理? Who:谁需要关心主原创 2022-01-20 16:37:54 · 2216 阅读 · 0 评论 -
那些年的开源项目,你跑起来了吗?
那些年,我的电脑还只是用来打 Dota 的游戏机。那些年,我为了完成毕设到处找源码。那些年,我第一次知道书后的光盘中竟然藏有代码。就这样我靠着这份代码顺利毕业,和兄弟们互道一句:“分头打钱,有事儿TP!”,独自踏上了程序员之路。那是我第一次体验到源码的威力,后来机缘巧合之下我闯入 GitHub 的世界。期间我创建的 HelloGitHub 共分享了 1900 多个开源项目,连载 5 年收获了 4.9w Star。我也从最初找不到源码愤然地叉掉 GitHub 网站,到后...原创 2022-01-20 16:30:22 · 632 阅读 · 0 评论 -
GitHub 公布 2021 Top 10 博文「GitHub 热点速览 v.22.02」
2021 年在这周彻底同我们告别了,在本周的「News 快读」模块你可以看到过去一年 GitHub 的热门文章,其中有我们熟悉的可能让很多程序员“失业”的 Copilot,还有官方的云端 IDE CodeSpace 等新产品资讯,也有 GitHub 官方技术团队的 Web 组件、数据库实践,也有新版搜索功能、新首页优化等优化…在阅读官方公布的 Top 10 博文中,小鱼干只知道 1、3、5 三篇博文(有点少),不知道阅读本文的你之前看过几篇呢?除了官方的新闻速读,同往常一样本周有许多实用的开...原创 2022-01-20 14:54:36 · 329 阅读 · 0 评论 -
Spring Boot 如何解决多个定时任务阻塞问题?
今天这篇文章介绍一下Spring Boot 中 如何开启多线程定时任务?为什么Spring Boot 定时任务是单线程的?想要解释为什么,一定要从源码入手,直接从@EnableScheduling这个注解入手,找到了这个ScheduledTaskRegistrar类,其中有一段代码如下:protected void scheduleTasks() { if (this.taskScheduler == null) { this.localExecutor = Executors.ne原创 2022-01-20 13:24:02 · 93 阅读 · 0 评论 -
厉害了,Spring中bean的12种定义方法
前言在庞大的java体系中,spring有着举足轻重的地位,它给每位开发者带来了极大的便利和惊喜。我们都知道spring是创建和管理bean的工厂,它提供了多种定义bean的方式,能够满足我们日常工作中的多种业务场景。那么问题来了,你知道spring中有哪些方式可以定义bean?我估计很多人会说出以下三种:没错,但我想说的是以上三种方式只是开胃小菜,实际上spring的功能远比你想象中更强大。各位看官如果不信,请继续往下看。1. xml文件配置bean我们先从xml配置b原创 2022-01-19 15:21:42 · 481 阅读 · 0 评论 -
彻底理解内存泄漏,memory leak
大家好,我是小风哥,今天和大家聊一聊内存泄漏这个话题。我之前写过好几篇关于内存的文章,在这些文章讲到内存申请时我很喜欢用停车场来做类比,内存申请就好比去停车场找停车位,找到停车位后你就可以把车停在这里。从这个类比看什么是内存泄漏呢?内存泄漏看上去是停车场的车辆只进不出导致最终找不到停车位,从程序员的角度看就是内存只申请取不释放,如果你去问,可能有不少人认为内存泄漏就是这么回事。然而这其实是不全面的。申请过多内存首先内存申请不释放未必就是内存泄漏,有可能是你的程序的确需要申请很多内存,原创 2022-01-18 14:49:35 · 134 阅读 · 0 评论 -
分布式接口幂等性、分布式限流(Guava 、nginx和lua限流)
一、接口幂等性接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就没有保证接口的幂等性。幂等性的核心思想:通过唯一的业务单号保障幂等性,非并发的情况下,查询业务单号有没有操作过,没有则执行操作,并发情况下,这个操作过程需要加锁。1、原创 2022-01-18 14:42:41 · 94 阅读 · 0 评论