- 博客(926)
- 资源 (55)
- 收藏
- 关注
原创 如何动态调试线程池?
JMX(Java Management Extensions)是 Java 平台的一部分,它提供了一种管理和监控 Java 应用程序的标准方法。JMX 允许你监控和管理系统资源、应用程序和服务,以及获取关于这些实体的运行时信息。简单来说,就是通过 JMX 可以动态查看对象的运行信息,并且可以动态修改对象属性。
2024-12-10 19:06:04
940
原创 Java类是如何加载的?
有小伙伴最近在面试过程中遇到这样一个问题:Java 中的类是如何加载的?这个问题还是很有意思,今天松哥来尝试和大伙梳理一下。
2024-12-10 15:51:14
873
原创 SpringBoot 3.3.5 试用CRaC,启动速度提升3到10倍
今天和小伙伴们来聊一个稍微新一点的技术话题—CRaC。CRaC(Coordinated Restore at Checkpoint,检查点协调恢复)是一个 OpenJDK 项目,旨在解决 Java 应用程序启动和预热时间过长的问题。Java 应用程序启动和预热时间过长是一个老大难的问题,目前来看各方也都提出了一些不同的解决思路,之前松哥和大家聊过的 AOT 也能从一定程度上解决启动慢的问题,今天的 CRaC 算是另外一种解决思路。
2024-11-15 09:02:14
1363
1
原创 SpringBoot 实战:文件上传之秒传、断点续传、分片上传
好了,以上就是关于文件上传中秒传、断点续传和分片上传的实战分享。通过这些技术的应用,我们可以极大地提升文件上传的效率和稳定性,改善用户体验。希望各位小伙伴在自己的项目中也能灵活运用这些技巧,解决实际问题。
2024-11-12 08:46:31
801
原创 评论系统设计思路
无论我们是阅读公众号文章还是刷短视频,现在都有评论功能,而且这些评论基本上也都是支持“楼中楼”,也就是文章下面有评论,评论下面有回复,回复下面又有回复,回复还可以继续回复…对于这种结构的表,数据量不大的话没问题,数据量大的话,查询性能和维护都会成为问题。今天我们就来讨论下这种评论表如何设计会好一些,也是松哥最近工作中的一点点经验,欢迎小伙伴们批评指正。
2024-11-08 09:00:06
645
原创 必知必会!MySQL索引下推:原理与实战
索引下推是从 MySQL5.6 开始引入一个特性,英文是,一般简称为ICP,索引下推通过减少回表的次数,来提高数据库的查询效率。有的小伙伴可能也看过一些关于 ICP 的概念,但是我觉得,概念比较简单,说一下很容易懂,但是在实际应用中,各种各样的情况非常多。所以接下来的内容我想通过几个具体的查询分析来和大家分享 ICP 到底是怎么一回事。
2024-11-07 08:42:16
806
原创 SpringBoot启动原理详解(图文全面总结)
虽然我们在日常开发中,Spring Boot 使用非常多,算是目前 Java 开发领域一个标配了,但是小伙伴们仔细想想自己的面试经历,和 Spring Boot 相关的面试题都有哪些?个人感觉应该是比较少的,Spring Boot 本质上还是曾经 SSM 那一套,只是通过各种 starter 简化了配置而已,其他都是一模一样的,所以 Spring Boot 中很多面试题还是得回归到 Spring 中去解答!
2024-11-06 08:44:21
1109
原创 一个有争议的话题:客户端密码加密有必要吗?
慢哈希函数(Slow Hash Function)是一种密码学上的哈希函数,它被设计成故意减慢处理速度,以增加破解的难度。这种函数通常用于密码存储、密钥派生和某些加密算法中,目的是提供额外的安全层,防止暴力破解攻击。计算成本高:故意设计成需要更多计算资源(CPU 时间或内存),使得暴力破解这种方式变得不切实际。内存密集型:许多慢哈希函数需要大量的内存,这增加了并行处理的难度,因为每个哈希计算实例都需要独立的内存空间。抵抗暴力破解。
2024-11-05 14:30:40
729
原创 确保数据安全!使用Spring Boot 实现强大的API输入验证
为什么需要分组校验呢?假设我们有一个用户实体User,它包含用户名、密码和邮箱三个字段。在用户注册时,我们需要校验用户名和密码非空,邮箱格式正确。但在用户信息更新时,我们只需要校验用户名和邮箱,密码可能不会被修改,因此不需要校验。对于这种需求,我们可以使用分组校验来实现这一需求。松哥通过一个具体的案例来和小伙伴们演示下。分组其实就是两个空接口,用来做标记用。然后,我们在User。
2024-11-01 17:29:07
740
原创 Nginx性能优化的几个方法
小伙伴们平时使用 Nginx 是否有进行过性能优化呢?还是软件装好了就直接使用呢?今天松哥和大伙分享几个常见的 Nginx 优化配置。接下来我们就来看看具体该如何做。
2024-11-01 08:42:41
1396
原创 如何让Nginx更安全?
网络安全的重要性不言而喻。那么小伙伴们有没有在日常使用 Nginx 的时候,特意去关注下它的安全配置呢?今天松哥和小伙伴们讨论一下如何安全的使用 Nginx,给大伙几个建议。
2024-10-28 09:02:22
1866
原创 Redis对象共享池,性能优化小细节
如果你仔细研究过 Redis 中各种实现细节,你会发现为了性能,Redis 真的是不遗余力。作为一种高性能的键值存储系统,Redis 广泛用于缓存、会话管理、消息队列等多种场景。为了提高 Redis 在处理大量数据时的性能和效率,Redis 设计并实现了对象共享池(Shared Object Pool)这一内部机制。那么接下来松哥就和大家详细说一说 Redis 中的对象共享池。
2024-10-25 08:43:41
1132
1
原创 Spring Boot集成iText实现电子签章
基于《中华人民共和国电子签名法》等相关法规和技术规范,具有法律效力的电子签章一定是需要使用 CA 数字证书进行对文件签名,并把 CA 数字证书存放在签名后文件中。如果一份签名后的电子文件中无法查看到 CA 数字证书,仅存在一个公章图片,那么就不属于法律意义上的电子签名。电子签名法规定电子文件签署时一定要使用CA数字证书,并没有要求一定需要含有电子印章图片,理论上电子签章不需要到公安局进行备案。实际上,电子签章是在电子签名技术的基础上添加了印章图像外观,沿袭了人们所习惯的传统盖章可视效果。
2024-10-23 10:29:17
1591
4
原创 MySQL8 窗口函数是真的省事!
在 MySQL 8 中,窗口函数(Window Functions)是一类强大的分析函数,允许你在查询结果集上执行计算,而无需将数据分组到多个输出行中。窗口函数通常与 OVER() 子句一起使用,以指定数据窗口,即窗口函数将要在其上执行计算的行集。简单来说,窗口函数的作用类似于在查询中对数据进行分组,不同的是,分组操作会把分组的结果聚合成一条记录,而窗口函数是将结果置于每一条数据记录中。 OVER ([PARTITION BY [, ...]]
2024-10-19 14:31:01
1015
原创 Redis遇到Hash冲突怎么办?
Hash 冲突,也称为 Hash 碰撞,是指不同的关键字通过 Hash 函数计算得到了相同的 Hash 地址。Hash 冲突在 Hash 表中是不可避免的,因为 Hash 表的地址空间有限,而可能的关键字数量是无限的。为了解决 Hash 冲突,有几种常见的方法:链地址法(Chaining):这是最常用的方法之一,每个 Hash 表的桶(bucket)都维护一个链表,所有散列到同一个位置的元素都存储在这个链表中。当发生冲突时,新元素被添加到该链表的末尾。
2024-10-19 10:37:29
1098
原创 Spring Boot3集成 LiteFlow 实现业务流程编排
LiteFlow 是一个基于 Java 的流程编排框架,它允许开发者定义一系列的节点(Node)和流程(Flow),通过这些节点和流程来控制业务逻辑的执行顺序。LiteFlow 的核心思想是将复杂的业务逻辑分解成多个小的、可管理的部分,每个部分负责处理特定的任务。
2024-10-11 16:24:29
1768
原创 3分钟理清QPS、TPS、RT 以及它们之间的关系
在评估系统性能的时候,我们经常会听到 QPS、TPS、RT、吞吐量等等一些概念,包括在一些面试场景下可能也会遇到这些概念,我们来稍微梳理一下。做一个简单的概念扫盲。
2024-10-10 14:58:25
469
原创 Spring Boot3集成iText实现PDF导出功能
iText 是一个功能强大的开源 Java 库,用于创建和操作 PDF 文件。iText 提供了丰富的 API,可以生成交互式 PDF 文档、添加书签、页码、水印,以及拆分和合并 PDF 文档等。iText 支持将 PDF 保存为图像文件,如 PNG 或 JPEG,并且可以在 PDF 文档上绘制各种几何形状,如圆形、线条等。iText的主要特点交互性:可以创建交互式 PDF 文档,如表单填写。添加元素:可以添加书签、页码、水印等。分割与合并:可以将现有 PDF 分割或合并其他页面。表单处理。
2024-10-09 09:40:45
1078
原创 SpringBoot3实战:实现接口签名验证
有时候我们要把自己的服务暴露给第三方去调用,为了防止接口不被授权访问,我们一般采用接口签名的方式去保护接口。接下来松哥和大家聊一聊这个话题。
2024-10-08 08:32:23
1723
原创 什么是 JWT?它是如何工作的?
有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如 Tomcat 中的 Session。例如登录:用户登录后,我们把用户的信息保存在服务端 session 中,并且给用户一个 cookie 值,记录对应的 session,然后下次请求,用户携带 cookie 值来(这一步有浏览器自动完成),我们就能识别到对应 session,从而找到用户的信息。服务端保存大量数据,增加服务端压力服务端保存用户状态,不支持集群化部署。
2024-09-29 09:46:16
1397
原创 Arthas命令太难记了?安利一个IDEA插件!
Arthas 是一款阿里巴巴开源的 Java 诊断工具,可以帮助开发人员更加方便地进行 Java 应用的在线诊断。Arthas 提供了一系列强大的命令,可以用于分析线程状态、监控方法调用、查看 JVM 信息、追踪慢 SQL 等多种用途。Arthas 的目标是让 Java 开发人员能够快速定位问题,提高故障排查的效率。对于新手来说,老是记不住 Arthas 命令~今天松哥就给大家介绍一下 IDEA 中 Arthas 插件的玩法,用插件可以自动生成 Arthas 命令。
2024-09-27 09:10:22
1931
1
原创 这样的SQL太吓人了
昨天松哥在朋友圈发了这样一张图:很多小伙伴看到了能够快速发现问题,当 company_id 为 null 的时候,会导致全表更新。但是也有小伙伴不解,自己平时就是这么写的呀,也没什么问题,如果有问题,那么上面的 SQL 该怎么改呢?松哥来和大家简单聊几句。
2024-09-25 09:26:01
1026
原创 请不要自己写,Spring Boot非常实用的内置功能
在 Spring Boot 中,请求和响应包装器是用于增强原生和对象的功能。这些包装器允许开发者在请求处理过程中拦截和修改请求和响应数据,从而实现一些特定的功能,如请求内容的缓存、修改、日志记录,以及响应内容的修改和增强。
2024-09-24 08:22:44
1288
原创 Nginx配置最全详解(万字图文总结)
Nginx(发音为“Engine-X”)是一个开源的高性能 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。由俄罗斯程序员 Igor Sysoev 创建。它以其高稳定性、丰富的功能集、简单的配置和低资源消耗而闻名。Nginx 最初是为了解决 C10K 问题(即同时处理 10000 个客户端连接)而设计的,现在已经成为世界上最流行的 Web 服务器之一。Nginx 是一个多功能、高性能的 Web 服务器和反向代理,适用于各种网络应用场景。
2024-09-23 10:38:12
3650
原创 JDK23如约而至,数十种新玩法,你期待哪一种?
9 月 17 日,JDK23 它来了。JDK23 并非长期支持版,下一个长期支持版是 JDK25,预计明年 9 月份发布。和松哥一起来看下这次的 JDK23 都有哪些新特性~
2024-09-19 08:17:11
1026
原创 Java音视频文件解析工具
jave-all-deps 库是 Java 音视频处理领域的一个强大工具,它通过封装 ffmpeg 的复杂功能,为 Java 开发者提供了一个简单易用的音视频处理解决方案。该库解决了跨平台兼容性问题、简化了复杂的命令行操作,并简化了项目中的依赖管理。无论是进行格式转换、音频转码还是其他音视频处理任务,jave-all-deps 库都是一个值得考虑的选择。通过本文的介绍,希望能够帮助读者更好地理解和使用 jave-all-deps 库。
2024-09-18 08:40:21
1380
原创 我一进门就看见 AI 在啪啪啪狂敲代码
不知道小伙伴们有没有关注到最近又有一个超级火热的 AI 工具,叫做 Cursor AI。松哥体验了一把,感觉以后能从画页面的桎梏中解脱出来了。松哥来和小伙伴们演示一下这个工具的玩法。
2024-09-18 07:27:28
3340
原创 加解密的艺术
非对称加密,也称为公钥加密,是一种使用两个不同密钥(公钥和私钥)的加密方式。公钥与私钥公钥与私钥的生成:非对称加密使用一对密钥,公钥是公开的,任何人都可以访问,而私钥是私有的,只有密钥的持有者可以访问。这两个密钥是由数学算法生成的,且相互关联但不可从一方推导出另一方。安全性高难以破解:由于公钥和私钥的复杂数学关系,非对称加密的安全性较高。攻击者很难从公钥中推断出私钥,从而保证了加密数据的安全性。
2024-09-09 08:47:35
1021
原创 点赞收藏功能该如何设计?
这周给一个小伙伴做模拟面试,因为他在公司的项目是一个短视频+电商的项目,模仿的是微博。结果回答的并不理想,答案里有不少硬伤,今天松哥就来和大家简单聊一聊这个话题。
2024-09-08 08:51:54
443
原创 使用Redis时不可原谅的几个低级错误
Redis 有多好用咱就不多说了。再好的工具,也得使用得当,才能发挥最佳效用。如果不分青红皂白使劲造,Redis 也扛不住。今天和小伙伴们聊一聊 Redis 中需要慎重使用的几个命令。
2024-09-05 14:53:38
1150
原创 一本书加印19次,回答小伙伴们几个写书的疑问
前几天又有一个高校老师加松哥微信,表示本学期选了松哥的书做教材:松哥在 2019 年 1 月份出版了《Spring Boot+Vue 全栈开发实战》这本书,到现在已经是第六年了。今年 1 月份收到出版社稿酬的时候,我特意去看了下稿酬通知单,这本书结算印次 19 次,也就是除了首印,后来又加印了 18 次。同时因为结算往往滞后半年左右,所以到现在实际印次应该不止 19 次。这个数据放在技术圈算是畅销书了。
2024-09-04 17:55:35
1241
原创 缓存预热有哪些方案?
一道经典面试题:缓存预热有哪些方案?在系统业务高峰期到来之前,我们提前将一些热点数据加载到缓存中,进而提高系统的响应速度,这就是所谓的缓存预热。那么怎么实现缓存预热呢?一般来说,我们主要有三种思路:每种里边往往又对应了不同的具体方案,我们逐一来看。这个就是利用系统启动时候的一些钩子函数,或者如事件监听机制或者是框架专为系统启动预留的方法,在这些方法中去加载缓存。这里松哥给四个常见的思路。使用 监听 Spring Boot 启动完成的事件,如 或 ,在事件触发后加载数据到缓存。举个栗子:1.2 @Pos
2024-09-03 11:20:28
1306
原创 小心GitHub账号被盗
小伙伴把文件下载下来之后解压,里边有 ranlib 相关的文件,让他下载 fix.rar 文件的人之后又光速删除了帖子,他也没太在意,以为别人回复错了位置。如果 GitHub 账号上没啥东西那还好,如果 GitHub 账号比较重要的话,像松哥 GitHub(https://github.com/lenve) 上面项目的 star 数都 43K+ 了,要是账户被盗那可就损失惨重了。这是一个比较关键的点,因为如果光是解压就能导致中毒,那说明这个病毒利用了解压缩软件的漏洞,那会影响更多人,更可怕。
2024-08-31 10:09:09
615
原创 一个比 Nginx 还简单的 Web 服务器
企业级的 Web 服务器非常多,Nginx、Tomcat、Apache、IIS、FastAPI、Flask 等。今天松哥再给大家介绍一个开源的 Web 服务器,这款服务器具备自动 HTTPS 功能和高度可配置性,它的名字是:Caddy。Caddy 是一个 Go 编写的 Web 服务器,类似于 Nginx,Caddy 提供了更加强大的功能,随着 v2 版本发布,Caddy 已经可以作为中小型站点 Web 服务器的另一个选择。Caddy 轻量简单,对新手也比较友好,我们一起来看下 Caddy 的用法吧。
2024-08-30 14:34:56
13505
7
原创 如果让你设计一个秒杀系统,你会怎么做?
这个算是一个经典面试题了,虽说是一个场景题,但是也算是老八股了。今天就从系统设计的角度来和小伙伴们聊一聊这个话题。接下来我们就这里提到的点逐一进行分析。本文主要和大家讲思路,不讲具体做法,具体做法在松哥之前的文章中很多已经和大家聊过了。
2024-08-28 10:03:07
1085
原创 如何处理 MySQL 主从延迟?
简单来说,就是将查询请求进行分类:一类是对数据实时性要求不高的请求,这种请求直接去读从库;这种方案就是刚刚插入完成之后,此时如果去读取从机的话,先 sleep 一会再读,这样就能尽量保证从机的数据已经同步过来了。第三种方案就是我们去判断一下主从是否延迟,如果发生延迟了,就等一会,如果数据已经同步了,那就直接查询就行了。参数,我们可以监控复制延迟,管理员可以据此了解从服务器的复制进度,并确定是否存在复制延迟问题。既然是主从,是读写分离,那就不可避免会产生延迟,因为数据从主机同步到从机,总是需要时间的。
2024-08-26 10:18:45
1239
原创 Redis面试都卷到C语言去了。。。
Redis 面试都卷到 C 去了。有个小伙伴在前两天找松哥模面的时候如是说到。是啊,没办法,自从 Java 八股文这个概念被提出来并且逐步在 Java 程序员中强化之后,现在各种各样的八股文手册,有免费的有付费的,琳琅满目。单纯的八股文已经区分不出 Java 猿水平的高低了,所以现在面试总会卷出新高度。这次是小伙伴面试时候被问到一个 SDS 的问题,也就是 Redis 中 String 字符串的底层实现原理。我来和小伙伴们简单聊一聊这个话题。
2024-08-25 15:46:24
1601
原创 不可重复读和幻读有什么区别
也不是啥难题,但是上周确确实实有两个简历上八年经验的人没答出来(这两个八年经验的小伙伴,一个是资深一个是高级)。不过松哥的读者藏龙卧虎,相信在座的各位回答这道题没什么压力。
2024-08-08 12:57:01
1109
原创 管理员如何踢掉登录用户?
这是 Spring Security 学习小组有小伙伴提的一个问题:感觉这个问题还有点意思,拿出来和各位小伙伴一起分享下。
2024-06-17 12:21:11
811
Android开发中线程池的使用Demo
2016-08-20
Dagger2中Scope使用Demo
2016-08-15
ButterKnife使用Demo
2016-08-12
Android模拟登录知乎
2016-08-09
DataBindingDemo3
2016-07-31
DataBindingDemo2
2016-07-31
DataBindingDemo
2016-07-31
Android在线视频播放器Demo
2016-05-04
Android自定义View值ProgressBar
2016-05-01
Android中Dialog使用详解
2016-02-16
ImageView的scaleType属性练习
2016-01-26
snackbar使用Demo
2015-12-13
android文件存储源码及笔记
2015-12-12
自定义ContentProvider
2015-12-06
GitForWindows2.6.3
2015-12-01
Spring入门.pdf
2020-02-17
SpringMVC 入门教程.pdf
2020-02-17
MyBatis入门教程
2020-02-17
Spring Boot2 教程.pdf.zip
2020-02-17
GitHub入门与实践
2017-10-16
websocket使用案例
2017-08-28
dubbo入门案例参考
2017-08-26
Ajax上传文件Demo
2017-08-25
SpringSession+Redis实现Session共享案例
2017-06-10
SQLBrite使用Demo
2016-09-18
Retrofit使用Demo
2016-09-13
ViewPager之PageTransformer属性使用Demo
2016-08-28
Android5.0水波纹效果Demo
2016-08-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人