
Java
文章平均质量分 86
码事通
这个作者很懒,什么都没留下…
展开
-
Spring Boot拦截器(Interceptor)详解
***/@Override/***/@Override/***/@Override/***/@OverridepreHandler(HttpServletRequest request, HttpServletResponse response, Object handler) 方法在请求处理之前被调用。该方法在 Interceptor 类中最先执行,用来进行一些前置初始化操作或是对当前请求做预处理,也可以进行一些判断来决定请求是否要继续进行下去。原创 2023-07-12 11:21:46 · 765 阅读 · 0 评论 -
吹爆这个最近在用的 IDEA 神器
在做源码分析的时候,我们常常会有这样一种需求,一堆源码看完后,我想画个时序图把思路捋一下,像下面这样:画图的工具有很多,相信大部分小伙伴也都会画。然而,画图太费时间了!!!而且这个图跟我们的代码关联性很大,就是照着代码画的。那么问题就来了,能不能照着代码生成呢?要是能够照着代码生成,岂不是要爽很多。今天松哥就给大家介绍一个我最近在用的 IDEA 插件SequenceDiagram。我不是那种收集狂,虽然我的笔记本并不卡,但是对于 IDEA 中安装插件我还是非常慎重的,很少装。.原创 2022-02-28 16:55:51 · 227 阅读 · 0 评论 -
吹爆这个最近在用的 IDEA 神器
在做源码分析的时候,我们常常会有这样一种需求,一堆源码看完后,我想画个时序图把思路捋一下,像下面这样:画图的工具有很多,相信大部分小伙伴也都会画。然而,画图太费时间了!!!而且这个图跟我们的代码关联性很大,就是照着代码画的。那么问题就来了,能不能照着代码生成呢?要是能够照着代码生成,岂不是要爽很多。今天松哥就给大家介绍一个我最近在用的 IDEA 插件SequenceDiagram。我不是那种收集狂,虽然我的笔记本并不卡,但是对于 IDEA 中安装插件我还是非常慎重的,很少装。.原创 2022-02-28 16:48:33 · 209 阅读 · 0 评论 -
不会吧,你还不会用RequestId看日志 ?
引言在日常的后端开发工作中,最常见的操作之一就是看日志排查问题,对于大项目一般使用类似ELK的技术栈统一搜集日志,小项目就直接把日志打印到日志文件。那不管对于大项目或者小项目,查看日志都需要通过某个关键字进行搜索,从而快速定位到异常日志的位置来进一步排查问题。对于后端初学者来说,日志的关键字可能就是直接打印某个业务的说明加上业务标识,如果出现问题直接搜索对应的说明或者标识。例如下单场景,可能就直接打印:创建订单,订单编号:xxxx,当有问题的时候,则直接搜索订单编号或者创建订单。在这种方式下,经常会原创 2022-02-28 16:46:55 · 2114 阅读 · 0 评论 -
阿里为什么不能使用 BigDecimal 的 equals 方法做等值比较?
# 前言BigDecimal 是 java.math 包中提供的一种可以用来进行精确运算的类型。所以,在支付、电商等业务中,BigDecimal 的使用非常频繁。而且其内部自带了很多方法,如加,减,乘,除等运算方法都是可以直接调用的。除了需要用 BigDecimal 表示数字和进行数字运算以外,代码中还经常需要对于数字进行相等判断。说到等值比较,咱们先看看《阿里巴巴Java开发手册》中的要求:那么为什么会有这样的要求呢~ 其中的奥秘是什么呢~请各位小伙伴听我娓娓道来…原创 2022-02-21 14:26:04 · 219 阅读 · 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 · 174 阅读 · 0 评论 -
在项目中使用c3p0作为数据库连接池,被技术总监怼了
介绍数据库连接是一项非常关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。记得之前做的一个项目,当时的应用程序配置的c3p0数据库连接池,最大允许的连接数是500,结果上线没多久,并发量直接上来了,导致大量的数据插入失败,当晚的心情可想而知~从那一次事故之后,让我对应用程序的数据库连接数有了一次深刻的认识,为了防止再次栽跟头,特意抽了一个时间来编写程序测试案例,用于测试各个数据源连接池的稳定性,以防止自己再次踩坑!话不多说,直接撸起来!二、程序实例熟悉 web原创 2022-02-18 17:30:18 · 780 阅读 · 0 评论 -
Spring Security过滤器就该这么配置
CaptchaAuthenticationFilter这个验证码过滤器是通过模仿UsernamePasswordAuthenticationFilter实现的。同样的道理,由于UsernamePasswordAuthenticationFilter的配置是由FormLoginConfigurer来完成的,应该也能模仿一下FormLoginConfigurer,写一个配置类CaptchaAuthenticationFilterConfigurer去配置CaptchaAuthenticationFilter。原创 2022-02-18 17:17:58 · 783 阅读 · 0 评论 -
Java 大杀器来了,性能提升一个数量级
自 1996 年诞生以来,Java 语言长期在最受欢迎的编程语言排行榜中占据领先地位。除了语言本身的优秀特性之外,Java 语言持续演进、不断发展也是它能够保持长盛不衰的重要原因。Java 语言的功能和性能都在不断地发展和提高,但是冷启动开销较大的问题长期存在,难以从根本上解决。Java 语言也因此在 Serverless 场景下无法与 Node.js、Go 等快速启动的语言竞争,落于下风。在这种背景下,作为能够从根本上解决冷启动问题的Java 静态编译技术有了用武之地,开始在业界崭露头角,为 ...原创 2022-02-18 17:16:23 · 489 阅读 · 0 评论 -
霸榜Github,阿里P9微服务全栈笔记限时开源,已破赞87K
前言随着云端办公以来,发现微服务越来越重要了。Docker 容器技术和自动化运维等相关技术发展,使微服务变得更容易维护。大家可能都注意到,像阿里、腾讯、字节跳动等大厂的后端岗位明确写出:微服务设计经验优先。如果没有这方面的准备的话,想拿到高薪可不容易。 不难预料,今年,微服务只会越来越完善,成为将来大中型企业业务架构的发展方向。但对于一些 coding 的朋友,由于接触不到一线实战架构设计,眼看别人都在向微服务架构转型,自己却只能日复一日地重复造轮子。 微服务越来越重要,但以下6个点是大家也都需要注意的原创 2022-02-08 21:59:15 · 518 阅读 · 1 评论 -
60秒彻底揭开JVM运行程序的秘密
今天带大家来学习下字节码 ,毕竟这是 Java 能跨平台的根本原因,而且通过了解字节码也可以彻底揭开 JVM 运行程序的秘密,整体会用问答的形式来讲解能否简单介绍一下 Java 的特性Java 是一门面向对象,静态类型的语言,具有跨平台的特点,与 C,C++ 这些需要手动管理内存,编译型的语言不同,它是解释型的,具有跨平台和自动垃圾回收的特点,那么它的跨平台到底是怎么实现的呢?我们知道计算机只能识别二进制代码表示的机器语言,所以不管用的什么高级语言,最终都得翻译成机器语言才能被 CP原创 2022-02-08 21:55:33 · 141 阅读 · 0 评论 -
@Configuration 类型的 class 需要知道的细节
知识点收获通过本文,你能收获什么?@Configuration.class文件如何被spring加载的? @Configuration.class文件如何被转化为BeanDefinition放入spring容器的? @Configuration的BeanDefinition如何转化为ConfigurationClass对象的 ConfigurationClass对象属性在哪里开始被解析的? @Configuration的BeanDefinition的beanClass值何时变成proxy代理原创 2022-02-08 16:31:02 · 205 阅读 · 0 评论 -
MQ消费失败,自动重试思路,如何保证MQ消息正常被业务消费
MQ消费失败,自动重试思路在遇到与第三方系统做对接时,MQ无疑是非常好的解决方案(解耦、异步)。但是如果引入MQ组件,随之要考虑的问题就变多了,如何保证MQ消息能够正常被业务消费。所以引入MQ消费失败情况下,自动重试功能是非常重要的。这里不过细讲MQ有哪些原因会导致失败。MQ重试,网上有方案一般采用的是,本地消息表+定时任务,不清楚的可以自行了解下。我这里提供一种另外的思路,供大家参考。方案实现在RabbitMQ(安装延迟队列插件)+.NET CORE 3.1设计思路为:内置一个专门做重原创 2022-02-08 15:35:06 · 5922 阅读 · 0 评论 -
大数据分布式存储之Cassandra——分布式存储的奠基石
分布式存储区别于集中式数据库存储,通过网络将海量数据存储到企业的各个数据节点(可能分布到不同的数据中心或机架上);分布式存储需要考虑的问题元数据管理元数据是指数据本身的标识,通过元数据能很快的找到数据存储的位置,比如在分布式文件系统中,元数据是指文件的路径名+文件名;元数据管理包括集中式元数据管理架构和分布式元数据管理架构;集中式是指将元数据存储到一个节点上,实现简单,但具有单点故障和性能瓶颈的问题;分布式元数据架构是将元数据存储到多个节点上,虽然解决了集中式元数据管理架构的问题,但却引入了数据原创 2022-02-08 15:32:18 · 2537 阅读 · 0 评论 -
败给“MySQL”的第33天,重振旗鼓,四面拿下阿里淘系offer
自己投了几家头部互联网公司,阿里是其中之一,也是我的期望公司。既然目标定下来了,自然是要竭尽全力去实现的,年前面试了阿里一波,但最终是败给了MySQL,好几个问题都答得不太理想,所以结果也想象得到,挂得很快。但今年由于疫情的缘故,各大互联网公司也受到了一些阻力,不过也趁着这空闲之际,我重整旗鼓,在败给“MySQL”的第33天,四面拿下了阿里淘系offer!编辑切换为居中添加图片注释,不超过 140 字(可选)阿里淘系面试题(核心部分) 以下内容主要是我整理出来的这两次面试的核心面试题,原创 2022-02-08 15:28:18 · 182 阅读 · 0 评论 -
oauth2登录认证之SpringSecurity源码分析
最近想给自己的小系统搭建一个登录认证服务,最初是想着一套oauth2权鉴就可以,但是发现这个oauth2只是权鉴,具体的登录认证需要由 SpringSecurity来进行实现。也就是说SpringSecurity 主要就是用来进行用户名、密码认证的登录框架然后看了一下 SpringSecurity,发现之前用过,但是只是用过,具体的流程不清楚。趁这个机会,将SpringSecurity源码大体的整理看一下。概述#SpringSecurity 的功能就是 认证、授权、防止伪造登录其核心就是一组原创 2022-02-08 15:09:28 · 309 阅读 · 0 评论 -
五面腾讯定级T3-2,刷完这1360道面试真题,我终于悟了
上个月,哥们从某小厂离职,转投阿里云,简历优秀,很顺利地拿到了面试通知,但之后的进展却让哥们怀疑人生了,或者说让哥们懵逼的是,面试阿里云居然第一面就被吊打?让哥们开始怀疑自己,是不是这些年工作下来,自己没有一丁点的进步呢? 幸运的是,经过他朋友推荐,去面试了华为,面试华为的过程极为顺利,很快就拿到了offer。这让哥们更弄不懂了,4面拿华为offer的水平,面试阿里居然一面就被吊打? 索性,哥们想分享一下这次的面试经历,让各位老铁好好帮他参考参考,出一出主意!另外,我下文还整理了一些哥们的复习资料阿原创 2022-02-07 21:54:33 · 317 阅读 · 0 评论 -
蘑菇街被裁, 猛刷30天腾讯T3的面试手册,斩获字节,腾讯两家大厂offer
前言先说一下自己的个人情况,18届应届生,通过校招进入到了蘑菇街,然后一待就待了差不多2年多的时间,可惜的是今年4月份受疫情影响遇到了大裁员,而我也是其中一员。好在早有预感,提前做了准备,之前一直想去字节跳动,年前就已经在做准备了,这场持久战拉得很长,也最终以7个月的时间取得胜利。在踏入字节跳动,办理入职手续的那一天,作为一个男子汉,确实是落泪了。特分享一波我的真实经历,共勉。 小tip: 其实一个公司要进行裁员通常都会出现一些前期征兆:业务发展遇到较大瓶颈,并且难以突破、频繁调整战略目标、高管开始陆续原创 2022-02-07 14:31:12 · 222 阅读 · 0 评论 -
如何快速创建一个拥有异步任务队列集群的 REST API
异步任务是 Web 后端开发中最常见的需求,非常适合多任务、高并发的场景。本文分享如何使用 docker-compose、FastAPI、rq 快速创建一个包含异步任务队列集群的 REST API,后端执行任务的节点可以随意扩展。系统的架构图:上图中的每一个方框都可以理解为一个服务器。用户请求 api, api 将任务放入 redis 队列,worker 自动去 redis 队列取出任务并执行,worker 节点可以任意水平扩展。接下来,我们来实现这一架构的 demo,你可以看到 d原创 2022-02-07 14:28:08 · 272 阅读 · 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 · 472 阅读 · 0 评论 -
Gradle:现代高效的java构建工具
相信使用Java的同学都用过Maven,这是一个非常经典好用的项目构建工具。但是如果你经常使用Maven,可能会发现Maven有一些地方用的让人不太舒服:一来Maven的配置文件是XML格式的,假如你的项目依赖的包比较多,那么XML文件就会变得非常非常长; 二来XML文件不太灵活,假如你需要在构建过程中添加一些自定义逻辑,搞起来非常麻烦; 第三就是Maven非常的稳定,但是相对的就是对新版java支持不足,哪怕就是为了编译java11,也需要更新内置的Maven插件。如果你对Maven的这些缺点也原创 2022-01-24 20:26:18 · 1373 阅读 · 0 评论 -
弹性负载均衡服务助力企业应对高并发流量冲击,看看你缺了哪些?
摘要弹性负载均衡(Elastic Load Balance 简称ELB)将访问流量均衡分发到多台弹性云服务器,扩展应用系统对外的服务能力,实现更高水平的应用程序容错性能。如今,随着互联网规模和消费者规模的不断扩大,企业面对着高并发请求场景下的流量冲击,尤其是每逢618或双11,会有数以亿计的用户同时访问互联网进行购物,网站访问用户的激增,会导致单服务器超负荷运行,导致网站访问卡顿或失败,严重影响用户体验,会给企业带来巨大损失。弹性负载均衡服务可以轻松帮助企业解决这个难题。弹性负载均衡(Elast原创 2022-01-24 14:55:05 · 291 阅读 · 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 · 298 阅读 · 0 评论 -
Redis分布式锁升级:RedLock+SpringBoot
分布式锁概览在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?因此就引出了分布式锁,它是控制分布式系统之间互斥访问共享资源的一种方式。在一个分布式系统中,多台机器上部署了多个服务,当客户端一个用户发起一个数据插入请求时,如果没有分布式锁机制保证,那么那多台机器上的多个服务可能进行并发插入操..原创 2022-01-24 14:38:49 · 305 阅读 · 0 评论 -
33岁跳槽,走投无路之际受贵人指点,成功上岸阿里P7岗
马上过34岁生日了,和大家聊聊最近的情况 半年前还在迷茫该学什么,怎样才能走出现在的困境,半年后已经成功上岸阿里,感谢在这期间帮助我的每一个人 伊始 30多岁工作的时候总是有种力不从心的感觉,正值壮年却活得像个五六十岁的人 在北京工作,却没能在北京买房,最后还是在慢慢地还着房贷车贷、考虑着孩子的学费、培训班的费用、已经琐碎的日常生活费 工资勉强高过支出,但我还能再工作几年呢? 陷入迷茫 工资比不过年轻人,还要被年轻人管着,心里很不舒服,不过我想他们也不愿意管着年龄大的人吧,渐渐地有了离职的想法,原创 2022-01-24 14:34:28 · 72 阅读 · 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 · 199 阅读 · 0 评论 -
如果连Redis分布式锁的这些坑都不知道,我怀疑你是假的开发
摘要:用锁遇到过哪些问题?一、白话分布式什么是分布式,用最简单的话来说,就是为了降低单个服务器的压力,将功能分布在不同的机器上面;就比如:本来一个程序员可以完成一个项目:需求->设计->编码->测试但是项目多的时候,一个人也扛不住,这就需要不同的人进行分工合作了这就是一个简单的分布式协同工作了;二、分布式锁首先看一个问题,如果说某个环节被终止或者别侵占,就会发生不可知的事情这就会出现,设计好的或者设计的半成品会被破坏,导致后面环节出.原创 2022-01-24 14:03:17 · 194 阅读 · 0 评论 -
真香啊,Typora 收费,竟意外发现这6款开源笔记工具
身为程序员,平时除了学习做笔记之外,还要写各种编程文档、写写技术文章啥的。因此,有一款自己使用趁手的写笔记软件至关重要,用得好的话,可以成倍提高工作效率!之前我一直都是用 Typora 记笔记,但前段时间 Typora 升级 1.0 版本后,开始收费了。虽然目前老版本依然可以免费使用,但难说以后会怎么样,所以我开始探索一些其他的免费笔记软件。提到免费,我第一时间想到的就是开源,因此,从 GitHub 上整理了 6 个开源笔记软件,虽说不一定真的比 Typora 好用,但也是不错的,而且还可以拿来学习原创 2022-01-23 14:51:05 · 8501 阅读 · 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 · 142 阅读 · 0 评论 -
4种方案,帮你解决Maven创建项目过慢的问题
在实际开发中,我们通常会用到maven的archetype插件(原型框架)来生成项目框架。但是无奈,创建时,总会卡在[INFO] Generating project in Batch mode等很久才构建完,有时还会报错,导致构建失败!不多废话了,直接上解决办法吧:解决办法1在创建Maven项目时加上archetypeCatalog=internal参数,点击“+”添加参数archetypeCatalog=internal。如下:解决办法2在Maven...原创 2022-01-22 15:29:49 · 226 阅读 · 0 评论 -
还有和Redis一样好用的NoSQL
实际上为了更好的描述实体之间的关系,我们要是再继续使用Redis的话,是不是感觉实体之间的关系不够那么的明显,虽然也是属于NoSQL的一种,但是相对来说,Redis,表现实体之间的关系就没有那么清晰了,为了更好的描述实体之间的关系,就会使用图形数据库来进行了,那么今天阿粉介绍的,就是一个图形化的数据可,Neo4J。什么是Neo4JNeo4j是一个世界领先的开源的基于图的数据库。它是使用Java语言完全开发的。那么什么是图书数据库呢?图数据库是以图结构的形式存储数据的数据库。它以节点,关系...原创 2022-01-22 14:44:29 · 1135 阅读 · 0 评论 -
阿里二面:main 方法可以继承吗?
main方法能重载么? main方法能被其他方法调用么? main方法可以继承么?# 阿里二面:main 方法可以继承吗?昨天,微信群里一位网友,在群里发了自己面试阿里的过程。其中一个面试,他在群里 PUA 其他网友。这道面试题就是:Java 中的 main 方法可以继承吗?我们一开始学习 Java 程序的时候,最先跑的一段代码肯定是 main 方法,main 方法的格式如下:public static void main(String[] args) {}..原创 2022-01-22 14:43:25 · 122 阅读 · 0 评论 -
Netty客户端断线重连实现及问题思考
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题:如何监听到客户端和服务端连接断开 ? 如何实现断线后重新连接 ? netty客户端线程给多大比较合理 ?其实上面都是笔者在做断线重连时所遇到的问题,而 “netty客户端线程给多大比较合理?” 这个问题更是笔者在做断线重连时因一个异常引发的思考。下面讲讲整个过程:因为本节讲解内容主要涉及在客户端,但是为了读者能够运行整个程序,所以这里先给出服务端及公共的依赖和实体类。原创 2022-01-22 14:37:08 · 6767 阅读 · 3 评论