- 博客(52)
- 收藏
- 关注
原创 SpringBoot使用Redis(事务异步add + 更新)
Redis(Remote Dictionary Server)是一个开源的内存中数据结构存储系统。内存存储: Redis 主要将数据存储在内存中,因此读写速度非常快,适合需要高性能的应用场景。持久化: Redis 支持将内存中的数据持久化到磁盘,可以通过RDB快照(Snapshotting)或者日志(Append-only file, AOF)的方式实现数据持久化,保证数据在服务重启后不丢失。数据结构多样性。
2024-07-15 19:51:13
905
原创 SpringBoot之健康监控(Actuator)
这是 Spring Boot 提供的一个扩展模块,用于监控和管理应用程序的生产环境。它通过 HTTP 端点暴露了大量的监控和管理功能,使得开发者可以在运行时查看应用程序的运行状况、配置信息、性能指标等。主要功能:健康检查端点提供应用程序的健康状态。它可以告诉你应用程序是否正常运行,并且可以根据健康检查的结果进行适当的响应。信息端点端点提供应用程序的自定义信息。开发者可以在这里配置任意的信息,比如版本号、描述等。环境信息端点提供应用程序的环境属性信息。这包括配置属性、系统属性、环境变量等
2024-07-15 19:09:29
421
原创 java多线程操作之CAS
CAS(Compare-And-Swap) 比较并交换,用于实现同步和锁机制。经常配合juc中Atomic相关类进行。
2024-07-14 11:36:43
798
原创 threadLocal详细认识(使用场景与局限性)与样例测试
它是 Java 标准库中的一部分,提供了线程局部存储的功能,这意味着每个线程都有自己独立的变量副本,这些副本在其他线程中不可见。每个请求由独立的线程处理,这意味着后端的每个 HTTP 请求都会在一个新的线程中处理。这些请求都是由不同的线程处理的,所以每个请求中的 ThreadLocal 数据是独立的。线程隔离: 在前后端分离的架构中,每次前端发起一个请求,后端会在一个新的线程中处理这个请求。ThreadLocal 可以避免使用复杂的同步机制,因为每个线程有自己的变量副本,不需要考虑线程安全的问题。
2024-07-11 20:34:21
991
原创 数据结构与算法基础篇--二分查找
在计算机科学和算法设计中,二分法是一种经典且强大的技术。它不仅仅是一种算法,更是一种思维方式,能够高效地解决各种问题。无论是在查找有序数据中的元素,还是在优化问题的搜索过程中,二分法都展现出了它的独特魅力和广泛应用。
2024-07-10 22:16:31
305
原创 Mysql explain语句详解与实例展示
explain 语句相信大家都不陌生,作为查看执行计划的语句。explain在sql优化分析中会经常会用到。这里值得注意的是:explain并没有真正执行语句,只是展示执行计划。可以看到哪些信息?表的读取顺序数据读取操作的操作类型哪些索引可以使用哪些索引实际被使用表之间的引用每张表有多少行被优化器查询EXPLAIN SELECT select具体语句如:列名描述补充id每个SELECT关键字都对应一个idSELECT关键字对应的查询类型table表名partitions。
2024-07-07 16:36:02
731
原创 如何定制Spring的错误json信息
相信很多同学都有遇到过这样的spring错误信息。在我们没有做catch处理时或者做全局的exceptionHandle时,Spring遇到抛出向外的异常时,就会给我们封装返回这么个格式的异常信息。那么问题来了,我们能否对这个返回增加错误信息呢。答案肯定是可以的。下面博主为大家介绍如何增加。
2024-06-19 22:08:09
460
原创 Spring事务介绍与使用(老详细了,新手上手能用)
Spring 中事务失效的场景通常是由于配置、并发、异常处理或逻辑错误等多种因素引起的。未添加注解方法需要在事务中执行,但是忘记添加注解,导致方法在没有事务的情况下执行,事务失效。事务方法内部调用在同一个类中,一个方法直接调用另一个方法,由于 Spring 默认通过代理实现事务,内部调用不会触发事务增强,导致事务失效。异常未被捕获或未重新抛出事务方法中的异常未被捕获或者捕获后没有重新抛出(或者被处理后没有继续抛出),Spring 无法感知异常,事务无法正确地执行回滚操作。只读事务中的写操作。
2024-06-18 23:21:53
679
原创 使用自定义注解进行权限校验
对于一些重复性的操作我们可以用提取为util的方式进行处理,但也可以更简便一些,比如自定义个注解进行。选择看这篇文章的小伙伴想必都对注解不陌生,但是可能对它的工作原理不太清楚。这里我们用注解实现对接口的权限校验,让大家感受一下,自定义注解的魅力。
2024-06-16 20:53:04
896
原创 Spring应用如何打印access日志和out日志(用于分析请求总共在服务耗费多长时间)
我们经常会被问到这样一个问题。你接口返回的好慢呀,能不能提升一下接口响应时间啊?这个时候我们就需要去分析,为什么慢,慢在哪。而这首先应该做的就是确定接口返回时间过长确实是在服务内消耗的时间。而不是我们将请求发给网关或者nignx,由nignx或者网关转发给我们服务的过程消耗时间。这个时间我们就需要借助我们的acccess日志和out日志了。
2024-06-11 23:09:25
561
原创 Spring配置多数据库(采用数据连接池管理)
大家在开发过程中,如果项目大一点就会遇到一种情况,同一个项目中可能会用到很多个数据源,那么这篇文章,博主为大家分享在spring应用中如何采用数据库连接池的方式配置配置多数据源。本篇文章采用大家用的最多也是最受欢迎的HikariCP进行示范。
2024-06-09 18:10:42
1062
原创 Spring AOP(基本认识与使用)
Spring AOP(面向切面编程)是 Spring 框架提供的一个功能,通过预编译和运行期动态代理方式实现,用于在程序运行时动态地将横切关注点(cross-cutting concerns)与核心业务逻辑进行分离。横切关注点是那些散布在应用程序中的、与业务逻辑无关的功能,如日志记录、事务管理、安全性、性能统计等请自行测试总结每个通知执行的先后顺序!
2024-05-30 15:34:29
564
原创 idea 快捷键运用
ctrl + alt + o 去掉import中没有用到的包 iter 增强for遍历集合或者数组 itli 普通for遍历list itar 普通for遍历数组 fori 生成一个for循环结构(用得少)shift + F6 rename包名或者类名或者批量修改变量名(不建议更改项目名,包名也尽量别改) 输入if 然后ctrl+shift+回车 补全缺失的括号。shift+ctrl+↑/↓ 向上或者向下移动光标所在行(自动对齐)shift+alt+↑/↓ 向上或者向下移动光标所在行。
2024-05-29 17:46:23
265
原创 Spring基础知识总结(纯文字版)
1)传播行为Spring定义了七种传播行为,以下为常见类型:PROPAGATION_REQUIRED:表示当前方法必须运行在事务中。如果当前事务存在,方法将会在该事务中运行。否则,会启动一个新的事务PROPAGATION_SUPPORTS:表示当前方法不需要事务上下文,但是如果存在当前事务的话,那么该方法会在这个事务中运行PROPAGATION_MANDATORY:表示该方法必须在事务中运行,如果当前事务不存在,则会抛出一个异常2)隔离级别隔离级别定义了一个事务可能受其他并发事务影响的程度。
2024-05-29 17:37:09
698
原创 Spring Security
spring security的核心功能包括:认证(你是谁)授权(你能干什么)攻击防护(防止伪造身份)其核心就是一组过滤链,项目启动后会自动配置。最核心的就是Basic Authenitication Filter 用来认证用户身份,一个在spring security中一种过滤器处理一种认证方式。比如,对username,password认证过滤器来说会检查是否是一个登录请求是否包含username和password(也就是该过滤器需要对的一些认证信息)如果不满足则放行给下一个。
2024-05-29 17:34:42
852
原创 Springboot 实战运用
parent>Spring Boot 的父级依赖,只有继承它项目才是 Spring Boot 项目。spring-boot-starter-parent 是一个特殊的 starter,它用来提供相关的 Maven 默认依赖。使用它之后,常用的包依赖可以省去 version 标签。
2024-05-29 17:13:52
721
原创 Spring +SpringMVC+Mybatis项目详细构造
在图片保存中可以指定保存于数据库的路径名,我保存的是\img\b7422cb6-962e-44bb-9908-88b338d8046b.jpg此种类型的,处理方法2:在给数据库存值时,直接存储域名+端口+\img\b7422cb6-962e-44bb-9908-88b338d8046b.jpg。指定spring配置文件的位置和名称,扫描会先扫描此文件,此文件中的扫描文档作为父类扫描,父类扫描不可访问子类扫描,子类扫描可访问父类扫描。查询完返回给前端后,前端拿到总数量时再申请一次请求,查询完整数据。
2024-05-29 17:01:49
1037
原创 性能测试(基于Jmeter)
QPS(Query per Second):系统每秒处理查询次数,单位:次/秒,在互联网业务中,如果某些业务有且只有一个请求连接,那么TPS=QPS=HPS,一般情况下用TPS衡量整个业务流程,用QPS来衡量接口查询次数,用HPS来表示对服务器单击请求。如不能正常启动的话请检查本地的java环境,简单输入java -version即可,需要用1.8以上的jre才行。windows请下载zip包,下载好后直接点击解压,然后打开bin文件夹下面的jmeter.bat即可启动。
2024-05-29 16:29:29
477
原创 Java操作csv文件(根据类进行读取和输出到csv文件)
看过博主文章都知道,博主不太喜欢废话,讲究实用。避开长篇大论,直接上各位老爷最喜欢的实操代码。关键点都在代码注释中!!
2024-05-22 18:44:09
469
原创 Spring使用小技巧--排除bean无法被调用问题
这个时候我们就需要找到出错的原因,很多人往往会忽略的一点就是,你所创建的bean有可能并没有被加载到ioc容器中。但怎么去看这个bean是否被spring装载到了ioc容器呢?通过spring上下文获取到beaninition,通过beanName找寻对应的bean是否被加载到ioc,需要注意,您所写的bean,是否为懒加载。我们在项目中可能由于项目的复杂性,创建了个spring的bean,但是调用却出现报错,显示无法找到该bean的异常。可以在启动时我们自己本地检查,另一种是运行到某个类时,再进行检查。
2024-05-16 13:16:21
230
原创 SpringBoot环境隔离Profiles
通常我们开发不可能只有一个生产环境,还会有其它的开发,测试,预发布环境等等。为了更好的管理每个环境的配置项,springboot也提供了对应的环境隔离的方法。直接上干货。
2024-05-16 10:01:10
471
原创 Spring的监听器使用(实用,直接拿去修改可用)
这里我们以ApplicationListener为例,简单说明一下监听器如何使用。本人基本只输出实用,即用的代码,希望能帮助到各位,如果想研究底层逻辑,大家可自行根据代码去类源码查看。实现ApplicationListener接口继承ApplicationEvent类使用ApplicationEventPublisher我将按正式项目方法进行监听器的使用。结合线程池,进行异步解耦照例,我们先简单搭一个springboot项目。
2024-05-15 10:16:57
310
原创 Mybatis Mapper模板(包含大多通用内容,可直接参照使用)
【代码】Mybatis Mapper模板(包含大多通用内容,可直接参照使用)
2024-05-13 21:11:09
109
原创 SpringAI集成本地AI大模型ollama(调用篇)非常简单!!
这里不做具体的代码深挖,只做基本基础的运用。后期有机会会出个人模型训练方法。流式调用的展示(我们跟ai聊天,回答不是一下子就出来的,就是这种流式调用所展示的这般)启动完成后,我们可以在cmd中执行ollama可以看到相关命令行。然后我们需要在这个ai中给它下载好一个已有模型给我们自己使用。直接下载到本地,然后启动ollama。将命令行运行即可下载。我们看看普通调用的展示。
2024-05-13 19:41:54
2259
1
原创 SpringBoot启动自动解密加密配置项
代表了Spring应用程序的环境,包括了所有配置属性,如配置文件、系统属性等。接口是Spring Boot提供的一个用于在Spring应用程序启动过程中对。它允许你在Spring Boot应用程序启动时修改或增强。如何在springboot启动过程中自动解密配置文件中的加密部分。然后我们来看看效果,访问controller试试。ok,已经成功,希望对各位大佬有帮助。首先我们需要搭建一个简单的springboot项目。创建之前,对环境属性进行修改。然后就是我们的解密工具类。废话不多说直接上代码。
2024-05-11 15:04:10
470
2
原创 JWT token令牌使用
JWT简称 json web token, 也就是通过JSON形式作为Web应用中的令牌,用于各方之间安全地将信息作为JSON格式进行传输。在传输过程中可以完成数据的加密,签名等相关处理。
2024-01-23 22:42:57
505
1
原创 排查死锁方法样例(Java)
Java死锁是指两个或多个线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉那它们都将无法推进下去。避免死锁:在资源分配前,根据资源的可用情况,预判是否会发生死锁,如果会发生,则不分配资源。检测死锁:通过算法检测死锁的发生,一旦发现死锁,采取相应的措施,如撤销进程,回收资源等。预防死锁:破坏死锁的四个必要条件之一,如破坏请求与保持条件,一次性申请所有资源。解除死锁:当检测到死锁时,采取一定的措施进行解除,如撤销进程,回收资源等。不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。
2023-12-17 18:16:22
440
1
原创 Java多线程的锁知识点总结(多实例-篇1)
所有java的 锁机制都可以分为乐观锁和悲观锁,悲观锁是实实在在的锁,乐观锁更像是一种保证业务数据安全的机制。
2023-12-17 17:56:11
983
1
原创 Windonws一键启动jar包(简单)
正常情况下我们需要下载jdk,配置环境变量,在cmd窗口使用。这会显得程序非常繁琐不利于封装。这个时候我们就需要考虑新的好的简便的方式将jar提供给其他人,不懂开发的人使用。
2023-12-04 21:48:45
422
原创 远端调试代码(Tomcat,Java)
远端调试代码很简单。但需要注意下面两点,也是前提1,服务端所在网络必须与本地网络能够互通。最简单的方法就是用telnet命令看是否能通。telnet ip 端口(端口最好填你配置到jvm的监听端口)2,本地代码与环境代码必须一致,最好jdk版本也最好相同。
2023-12-03 23:01:17
399
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人