- 博客(92)
- 收藏
- 关注
原创 Spring Boot 项目文件上传安全与优化:OSS、MinIO、Nginx 分片上传实战
本文探讨SpringBoot项目中文件上传的安全风险与性能优化方案。在安全方面,提出文件类型校验、随机文件名、访问控制等措施防范恶意文件上传;在性能方面,针对大文件上传提出三种解决方案:阿里云OSS分片上传(适合生产环境)、MinIO自建存储(适合私有部署)和Nginx分片上传(适合中小项目)。文章对比了三种方案的优缺点,并强调安全校验、分片上传和直传优化的核心价值,为构建安全高效的文件上传功能提供实践指导。
2025-08-29 09:58:55
1153
1
原创 分库分表和sql的进阶用法总结
摘要:分库分表是解决单库性能瓶颈的常用技术,分为垂直分库分表(按业务拆分)和水平分库分表(按数据行拆分)。实施时需考虑数据分布规则、一致性及事务管理,适用于高并发大数据场景。处理非分片键查询时可采用全局查询、全局索引或分布式查询等方式。SQL进阶用法包括子查询、窗口函数、递归查询等复杂操作,以及索引优化和触发器使用等性能提升技术,能有效支持各类数据分析和高效查询需求。(149字)
2025-08-15 14:07:57
806
原创 vi使用方法详细介绍
vi是Unix/Linux系统中的标准文本编辑器,具有强大的编辑功能。它包含三种模式:命令模式(移动光标、删除/复制文本)、插入模式(输入文本)和底行模式(保存/退出文件)。常用操作包括:i进入插入模式,ESC返回命令模式,:wq保存退出。移动光标可使用h/j/k/l键,删除命令包括x(删除字符)和dd(删除整行)。vi支持复制粘贴(yy/p)、查找替换(/keyword)等功能。初学者需注意模式切换,熟练掌握vi能显著提升在Linux环境下的工作效率。
2025-08-14 09:50:49
707
原创 Linux的Top命令解析
Linux中的top命令是一个实时性能监控工具,用于查看系统运行状态和进程资源占用情况。它动态显示系统整体的CPU、内存、交换区等统计信息,以及详细的进程列表,包括PID、CPU/内存占用率、运行状态等关键指标。用户可通过交互命令(如k终止进程、r调整优先级、P按CPU排序)灵活操作,还支持自定义显示内容和刷新频率。top命令是系统管理员进行性能分析和进程管理的重要工具,能帮助快速定位资源占用问题。
2025-08-14 09:41:13
507
原创 Linux各目录及每个目录的详细介绍
目录/bin存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。etc存放系统管理和配置文件home存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示usr用于存放系统应用程序,比较重要的目录/usr/local本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。/usr/x11r6 存放x window的目录。
2025-08-13 18:29:49
1407
原创 HTTP状态码说明
HTTP状态码是服务器响应浏览器请求时返回的三位数字代码,用于表示请求处理状态。状态码分为五类:1xx(信息)、2xx(成功)、3xx(重定向)、4xx(客户端错误)和5xx(服务器错误)。常见状态码包括200(成功)、301(永久重定向)、404(未找到)和500(服务器内部错误)。状态码第一位数字表示类型,后两位无分类作用。完整列表包含从100到505的各种状态,各自对应不同的请求处理情况,如304(未修改)、403(禁止访问)等。这些代码帮助开发者诊断和解决网页请求中的问题。
2025-08-13 18:11:51
946
原创 使用Springboot实现简单的ELK日志搜索系统
要使用 Spring Boot 实现简单的 ELK(Elasticsearch、Logstash、Kibana)系统,需要满足一系列前提条件,涵盖环境准备、技术基础、组件认知等多个方面。
2025-08-11 14:15:30
1197
原创 同步代码实现
本文介绍了两种Java多线程顺序执行的方法:1)使用join()方法确保线程顺序执行;2)使用CountDownLatch实现线程同步。第二部分展示了CompletableFuture的异步任务编排:任务一完成后执行任务二,任务三与一并行,所有任务完成后触发任务四。演示了链式任务执行、任务合并等异步编程模式。代码示例均包含异常处理和具体执行结果。(139字)
2025-06-01 14:19:28
222
原创 测试开发你需要知道的技术点
本文收录软件测试面试过程中常见的面试题.一些问题是从网上搜罗而来,剔除了不合时宜的;一些则是自己总结的面试题.很多的问题是开放性的,并没有确切的标准答案.1.为了发现程序中的缺陷,保证软件质量。2.满足用户需要1.项目立项后,参加需求评审2.根据需求文档制定测试用例,然后进行用例评审3.项目提测后,执行用例,问题记录cp4,及时有效的跟进问题的解决情况4.测试环境测试通过后,产品进行验收测试1.黑盒测试,即常说的功能测试2.白盒测试,即单元测试,通常由开发来完成,对程序类和方法的测试。
2025-04-03 15:17:31
553
原创 技术栈分享之----Swagger
注解说明@Api用在请求的类上,例如Controller,表示对类的说明@ApiModel用在类上,通常是实体类,表示一个返回响应数据的信息用在属性上,描述响应类的属性用在请求的方法上,说明方法的用途、作用用在请求的方法上,表示一组参数说明用在@ApiImplicitParams注解中,指定一个请求参数的各个方面。
2025-03-16 13:42:57
855
原创 synchronized知识回顾
Synchronized【对象锁】采用互斥的方式让同一时刻至多只有一个线程能持有【对象锁】,其它线程再想获取这个【对象锁】时就会阻塞住Monitor 被翻译为监视器,是由jvm提供,c++语言实现在代码中想要体现monitor需要借助javap命令查看clsss的字节码,比如以下代码找到这个类的class文件,在class文件目录下执行,反编译效果如下:monitorenter 上锁开始的地方monitorexit 解锁的地方。
2025-03-06 21:39:50
732
原创 JVM知识回顾
类加载器(ClassLoader)运行时数据区(Runtime Data Area)执行引擎(Execution Engine)本地库接口(Native Interface) JNI native。
2025-02-25 21:26:50
900
原创 几张图轻松搞定JVM
关于JVM是重点之重,掌握jvm便于我们可以更好的掌握java程序的运行流程,以下我将我自己总结的jvm的一些重点通过图的形式展现给大家,以便于可以更好的来理解。
2024-12-29 21:26:21
391
原创 推荐几款好用的IDEA插件
我想第一个必定是有关Maven的插件了,目前,Java开发很多都在使用maven进行项目管理和自动构建。日常开发中,可能经常会遇到jar包冲突等问题,就需要通过查看maven依赖树来查查看依赖情况。这种方式不是很高效,这里推荐一个插件,安装之后,直接打开pom文件,即可查看依赖数,还能自动分析是否存在jar包冲突。一旦安装了Maven Helper插件,只要打开pom文件,就可以打开该pom文件的Dependency Analyzer视图在插件市场找到该款插件安装之后重启idea即可。
2024-12-24 16:24:38
1978
原创 Redis除了做缓存,还能做什么???
Redis(Remote Dictionary Server)是一款开源的、基于内存的数据结构存储系统,常用于构建高性能、可扩展的应用程序。而缓存是 Redis 最常见的应用场景之一。将经常被访问的数据(如数据库查询结果、热门文章内容等)存储在 Redis 中,下次请求时直接从 Redis 中获取,减少对后端数据源(如数据库)的访问压力,提升系统整体性能。例如在新闻资讯类网站,将热门新闻详情缓存到 Redis,大量用户浏览时能快速响应。
2024-11-24 22:53:30
1059
原创 集合类你不知道的小知识
在系统设计中,快速失效(fail-fast)系统一种可以立即报告任何可能表明故障的情况的系统。快速失效系统通常设计用于停止正常操作,而不是试图继续可能存在缺陷的过程。在以上代码中是一个对两个整数做除法的方法,在divide方法中,我们对除数做了个简单的检查,如果其值为0,那么就直接抛出一个异常,并明确提示异常原因。这其实就是fail-fast理念的实际应用。那为什么要按设计这个东西呢?
2024-11-22 18:28:08
976
原创 微服务系列概览
CAP理论(CAP Theorem),又称为布鲁尔定理(Brewer's Theorem),是由计算机科学家Eric Brewer在2000年提出的一个关于分布式系统的基本理论。一致性(Consistency):所有节点在同一时间看到的数据是一致的,即每次读操作都能读到最新的写操作结果。可用性(Availability):每个请求都能在合理的时间内得到非错误的响应,即系统始终可用。分区容错性(Partition Tolerance)
2024-11-20 17:52:12
1378
原创 配置中心————Nacos
Nacos是一个基于云原生架构的动态服务发现、配置管理和服务治理平台。支持多种编程语言和多种部署方式,并且与Spring Cloud等主流的微服务框架深度集成。配置管理:可以将应用程序的配置信息存储在Nacos的配置中心,通过Nacos实现动态配置管理和灰度发布,从而实现应用程序的动态调整和部署。服务发现及注册:可以将服务注册到Nacos注册中心,并通过Nacos实现服务的自动发现和负载均衡,从而实现服务的高可用和弹性伸缩。
2024-11-20 17:27:37
1473
原创 RESTful风格
REST(Representational State Transfer),表现形式状态转换,它是一种软件架构风格当我们想表示一个网络资源的时候,可以使用两种方式:传统风格资源描述形式查询id为1的用户信息保存用户信息REST风格描述形式传统方式一般是一个请求url对应一种操作,这样做不仅麻烦,也不安全,因为会程序的人读取了你的请求url地址,就大概知道该url实现的是一个什么样的操作。按照REST风格访问资源时使用行为动作区分对资源进行了何种操作查询全部用户信息 GET(查询)
2024-11-17 21:36:11
982
原创 HTTP基础
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。HTTP状态码的英文为HTTP Status Code。
2024-11-14 17:47:57
1372
原创 KafKa为什么这么快?
在如今的MQ中三分天下性能之王的必然是Kafkka呢,为什么呢?最简单的就是kafka的单机吞吐量在百万级别以上。而RabbitMQ单机吞吐量在10万级别以下,而阿里开源的RocketMQ在二者之间十万到百万级别,那为什么kafka可以这么快呢,我总结了以下几点原因,如下图,我们可以从以下几个角度来分析分析。
2024-11-11 20:30:33
1620
原创 什么是JWT
JWT(JSON Web Token)一种开放的标准规范(RFC 7519),用于在网络上安全传输和验证信息,通常被用于登录验证。
2024-11-07 23:12:43
1943
原创 XXL-JOB
选取执行器管理的注册地址列表中的所有地址,每个地址都执行一次任务。:在任务路由策略选择“故障转移”的情况下,如果执行器集群中的某一台机器出现故障,将会自动 Failover 切换到一台正常的执行器发送调度请求;:当任务分配到某个执行器时,如果该执行器正处于忙碌状态(可能正在执行其他任务或资源紧张),则会尝试将任务转移到其他相对空闲的执行器上执行;:选择距离上次被调度时间最长的执行器执行任务(通过时间维度选取任务),有助于平衡各执行器的工作负载;:选取执行器管理的注册地址列表中的最后一个执行器来执行任务;
2024-11-03 17:06:14
796
原创 Linux常见命令合集
1.ls : list 列出当前目录的所有内容2.ls -a : 列出当前目录下面的所有内容,包括隐藏的。隐藏的以.开始3.ls -l:查看当前目录的详细信息4.ls -al 指定目录:查看指定目录下面的所有文件的详细信息5.ll:使用 ls -l的简写 ********
2024-11-01 22:51:26
1042
原创 MinIO服务部署指南
MinIO是一个基于Apache License v2.0开源协议的对象存储服务,它兼容亚马逊S3云存储服务接口,非常适合存储大容量非结构化的数据,如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,文件大小可以从几KB到最大5TB不等MinIO 官网地址:https://min.io/docs/minio/kubernetes/upstream/MinIO Github地址:GitHub - minio/minio: MinIO is a high-performance, S3 compat
2024-10-28 22:33:30
1558
原创 Redis主从架构
numkeys参数用于指定键名参数的个数。键名参数 key [key ...] 从EVAL的第三个参数开始算起,表示在脚本中所用到的那些Redis键(key),这些键名参数可以在 Lua中通过全局变量KEYS数组,用1为基址的形式访问( KEYS[1] , KEYS[2] ,以此类推)。在命令的最后,那些不是键名参数的附加参数 arg [arg ...] ,可以在Lua中通过全局变量。
2024-10-27 22:37:13
885
原创 Redis持久化机制
在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中。你可以对 Redis 进行设置, 让它在“N秒内数据集至少有M个改动”这一条件被满足时, 自动保存一次数据集。比如说, 以下设置会让 Redis 在满足“60秒内有至少有1000个键被改动”这一条件时, 自动保存一次数据集:关闭RDB只需要将所有的save保存策略注释掉即可还可以手动执行命令生成RDB快照,进入redis客户端执行命令或。
2024-10-27 22:10:04
596
原创 Java设计模式详解----单例模式
软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用
2024-10-26 20:01:37
3720
原创 SpringAI你知道吗???
目前AI的浪潮已经居高不下了,因此我最近也开始了有关AI的项目,再开始AI的项目之前,我们也要先熟知AI的开发文档和知识,才能更好的开发项目,因此特地从官网查看了有关SpringAI的使用。官方说明文档:https://docs.spring.io/spring-ai/reference/api/
2024-10-25 20:29:23
3741
2
原创 JVM成神之路
堆溢出是指内存中有大量的垃圾对象无法回收,从而造成堆的内存溢出常见的堆溢出有以下几种情况:1.内存泄露:例如使用ThreadLocal时,没有主动释放就会导致内存泄漏。2.无限创建大量对象3.没有合理设置堆得大小4.大量的Execl的导入和导出栈溢出通常是指虚拟机栈溢出,而导致虚拟机栈溢出的主要原因是死循环和无限创建大的对象。
2024-10-21 18:42:45
2215
原创 Java后端基础自测
mysql主要有有三种日志文件分别为:binlog,undolog,redolog三类binlog又称为归档日志(二进制日志),主要是对数据库的中的数据进行数据备份,崩溃恢复,数据复制等操作,binlog主要是记载了有关DDL,DML语句对数据库的修改和添加操作,例如:insert,update,delete等操作都会记录在binlog日志文件中。在mysql的主从复制方面,会用到binlog,主节点主要是对数据的写操作记录到binlog中,而从节点主要是读操作,从而减少了数据库的压力。
2024-10-11 17:50:03
1208
原创 Synchronized是怎么实现的?
所以,在 JDK1.6 中出现对锁进行了很多的优化,进而出现轻量级锁,偏向锁,锁消除,适应性自旋锁,锁粗化(自旋锁在 1.4 就有 只不过默认的是关闭的,JDK1.6 是默认开启的),这些操作都是为了在线程之间更高效的共享数据 ,解决竞争问题。通常提供 singal 机制:允许正持有“许可”的线程暂时放弃“许可”,等待某个谓词成真(条件变量),而条件成立后,当前进程可以“通知”正在等待这个条件变量的线程,让他可以重新去获得运行许可。未被锁定的对象的该计数器为 0,当一个线程获得锁(执行。
2024-09-29 07:00:00
1257
原创 AQS为什么采用双向链表
AQS:AbstructQueuedSynchronizd(抽象队列同步器),出现在 JDK 1.5 中。他是很多同步器的基础框架,比如 ReentrantLock、CountDownLatch 和 Semaphore 等都是基于 AQS 实现的。AQS内部,维护了一个FIFO队列和一个volatile的int类型的state变量。在state=1的时候表示当前对象锁已经被占有了,state变量的值修改的动作通过CAS来完成。
2024-09-28 14:50:23
1223
原创 Java基础知识扫盲
其实我们可以看到,double本身就是不准确的表示一个值,取得是一个近似值,例如,new BigDecimal(0.1) 但是创建出来的值并不是0.1,而是0.100000000000000000055555555......等,但是new BigDecimal("0.1")时,创建出来的值正是0.1值是很准确的。几乎所有的商用编程语言都有序列化的能力,不管是数据存储到硬盘,还是通过网络的微服务传输,都需要序列化能力。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。
2024-09-23 17:40:53
2898
操作linux的客户端(finalshell)安装包
2024-06-10
junit单元测试工具
2024-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅