自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(129)
  • 资源 (1)
  • 收藏
  • 关注

原创 spring security 使用的过滤器还是拦截器

Spring Security 主要通过过滤器链实现请求和响应的安全处理,但也提供了方法级别的安全控制支持,允许你通过拦截器和注解来进行细粒度的安全控制。过滤器用于全局的 HTTP 请求安全管理,而拦截器则用于更具体的方法级别的权限控制。Spring Security 主要是通过过滤器链处理请求(身份认证、权限校验等核心操作),而不是使用拦截器。但在特定情况下,拦截器可以配合 Spring Security 完成一些额外的逻辑处理,比如记录审计日志、扩展特定的请求处理行为等。

2025-03-25 23:18:28 653

原创 string kmp java

双指针算法是计算最长相等前后缀(也称为部分匹配表或 next 数组)的一种简洁高效的方法,常用于 KMP 算法。中第一次出现处的索引,如果此字符串中没有这样的子串,则返回 -1。输出子串在主串中的首次出现的下标位置,如果没有则返回 -1。部分匹配表的本质是为模式串的每个位置记录对应的子串的。

2025-03-23 22:05:08 738

原创 @AuthenticationPrincipal user null

如果用户未登录或认证失败,可以通过全局异常处理捕获相关异常(如。在控制器中使用它可以简化获取当前用户的逻辑,避免手动从。是从当前认证上下文中获取用户信息的快捷方式。中获取用户信息,检查是否正确存储了用户。

2025-03-21 23:29:32 448

原创 hibernate 自动生成数据库表和java类 字段顺序不一致 这导致添加数据库数据时 异常

【代码】hibernate 自动生成数据库表和java类 字段顺序不一致 这导致添加数据库数据时 异常。

2025-03-18 23:07:22 235

原创 stack deque queue

【代码】stack deque queue。

2025-03-16 22:07:43 186

原创 llm + rag

是一种结合大型语言模型(LLM, Large Language Model)和智能代理(AI Agent)的技术架构,用于构建能够自主完成复杂任务的智能系统。AI Agent 是一个能够感知环境、规划任务、执行操作并与外部工具交互的系统,而 LLM 则为其提供强大的自然语言理解和生成能力。LLM(Large Language Model)是指一种基于深度学习的自然语言处理模型,能够生成、理解和处理人类语言。

2025-03-05 14:13:43 881

原创 react install

在开发 React 应用程序时,经常会使用一些流行的 JavaScript 库和工具来增强功能、管理状态、路由和进行 API 操作等。在开始一个新项目时,建议仔细评估需求,选择适合的库,避免过度使用导致项目变得臃肿。根据需要,安装和配置其他包和工具以补充你的开发环境,例如 Redux, React Router 等。在 React 开发中,有许多常用的 JavaScript 库可以帮助你更高效地构建应用。这些库和工具可以根据项目需求和个人喜好选择使用,帮助你简化开发流程,提高代码的可维护性和扩展性。

2025-01-20 07:39:13 1229

原创 ddl-auto: create

【代码】ddl-auto:create。

2025-01-19 03:45:04 179

原创 jpa/hibernate 配置初始化数据库 - ddl-auto

【代码】jpa/hibernate配置初始化数据库-ddl-auto。

2025-01-18 20:57:21 245

原创 套餐内商品的排列顺序

某店铺将用于组成套餐的商品记作字符串goods,其中goods[i]表示对应商品。请返回该套餐内所含商品的全部排列方式。返回结果无顺序要求,但不能含有重复的元素。示例1:输入:goods=“agew”

2025-01-18 19:08:21 276

原创 springboot 自定义注解一般和aop同时使用

在Spring Boot中,自定义注解通常与AOP结合使用,以实现特定的横切关注点。例如,你可以创建自定义注解来处理日志记录、权限验证、事务管理等。首先,定义一个自定义注解。这是一个简单的Java注解,可以用于标识需要特殊处理的方法。Retention;Target;现在你可以在任何Spring Bean的方法上使用注解,以便在该方法被调用时执行日志记录功能。// 模拟方法执行时间 Thread . sleep(2000);

2025-01-17 11:20:03 772

原创 clone

通过理解堆内存模型,可以更好地选择浅拷贝或深拷贝方法,满足不同的开发需求。的核心区别在于它们如何处理引用类型的数据(如对象和数组)在。在 JavaScript 中,

2025-01-13 23:47:35 770

原创 swagger ( spring security + jwt + swagger )

这是 springboot 3.3.5 整合 spring security 和 swagger 的示例,包含用户认证和授权的完整实现。这个配置提供了一个完整的 Spring Security + JWT + Swagger 的实现。Swagger UI 中会显示所有的 API 接口,包括认证和需要认证的接口。

2025-01-12 17:26:25 174

原创 lombok

在 Java 中,如果你定义了任何带参构造函数,编译器就不会再自动提供默认的无参构造函数。在某些情况下(例如在与某些框架合作使用时,如 JPA),即使已经有带参构造函数,我们仍然需要一个无参构造函数,这时。通过以上步骤,您就可以在 Spring Boot 项目中使用 Lombok,以减少样板代码,提高开发效率。根据您的构建工具(Maven 或 Gradle),在您的项目中添加 Lombok 依赖。的使用和特性,可以更方便地管理对象的创建过程,特别是在使用某些要求无参构造的框架时。类生成一个无参构造函数。

2025-01-11 13:49:48 803

原创 lombok + @Entity

通过结合使用这些 Lombok 和 JPA 注解,可以大大简化实体类的编写,提高代码的可读性和维护性。通过使用 Lombok,可以显著提高 Java 开发的效率和代码质量,尤其是在处理大量数据类时。: 自动生成无参构造函数,这是 JPA 要求的,因为 JPA 需要通过反射创建实体实例。: 自动生成所有字段的 getter 和 setter 方法,简化属性访问。方法,默认使用所有非静态字段,确保对象比较和哈希计算的一致性。方法,输出对象的字符串表示,便于调试和日志记录。方法等,从而提高开发效率和代码可读性。

2025-01-11 13:48:48 642

原创 分发糖果

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目。示例 1:输入:ratings = [1,0,2]输出:5解释:你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。示例 2:输入:ratings = [1,2,2]输出:4。

2025-01-11 00:45:42 178

原创 常见的http状态码 + ResponseEntity

设置 HTTP 状态码为。:设置响应体为自定义的字符串。@ResponseStatus(HttpStatus.NOT_FOUND) // 默认返回 404。

2025-01-08 12:43:30 1104

原创 _controller_validate

String message() default "电话号码格式不正确";Class <?Class <?String message() default "电话号码格式不正确";Class <?Class <?Constraint;String message() default "电话号码格式不正确";Class <?Class <?Payload;String message() default "电话号码格式不正确";Class <?Class <

2025-01-08 12:21:00 695

原创 tree traversal

2025-01-02 19:45:19 116

原创 graph

2025-01-01 22:05:49 131

原创 option api & compose api

/ 更新数据的方法。

2024-12-31 20:02:05 880

原创 css ( cascading style sheets )

CSS(Cascading Style Sheets,层叠样式表)是一种用于描述HTML或XML文档的呈现样式的语言。它的主要作用是为Web文档的内容添加美观的样式,使网页更加用户友好和吸引人。以下是对CSS的几个关键点的简要介绍:选择器:选择器用于指定需要应用样式的HTML元素。常见的选择器包括类型选择器、类选择器、ID选择器、属性选择器等。元素选择器:如 p, div, span类选择器:如 .class-nameID 选择器:如 #id-name属性选择器:如 [attribute=“value”]

2024-12-30 22:37:38 636

原创 css 文本样式

这些CSS属性和技术可以帮助你更精细地控制网页中的文本呈现和布局,提升用户体验和视觉美观。根据具体需求和设计要求选择适合的文本样式。这些属性和技术为网页设计提供了丰富的工具,以实现各种布局和用户交互效果。精确应用这些CSS属性可以帮助你打造直观和美观的用户界面。: 改变鼠标指针的样式,以指示可点击区域或其他状态。: 设置元素的宽高,通常与响应式设计相关。: 清除浮动,以确保后续元素不受浮动影响。: 创建多列布局来增强文本和内容的展示。: 使用浮动来布局元素,使其左右浮动。: 为元素的角添加圆角效果。

2024-12-30 22:17:08 906

原创 css 页面组件遮挡

使用 Element Plus 的布局组件,结构更清晰。布局更加灵活,易于维护。不需要手动计算内边距。

2024-12-30 22:05:31 355

原创 css 类名

在开发过程中,为了将页面拆分为多个可独立使用的组件,并在不同页面中统一应用这些组件的样式,开发者经常使用 CSS 组件名来命名这些组件。通过为 HTML 元素添加类名,您可以将特定的 CSS 样式应用于这些元素,实现页面样式与结构的分离和重用。CSS 组件名通常是指一种命名约定,用于标识和管理可重用的、独立的组件样式。通过将类名应用于不同的 HTML 元素,可以在网页中轻松实现样式的统一和重用,从而提高开发效率和维护性。)选择具有特定类名的元素,并为这些元素应用相应的样式规则。例如,在以下示例中,

2024-12-30 21:57:21 508

原创 tailwind.css bootstrap

Tailwind CSS 和 Bootstrap 是两种流行的 CSS 框架,但它们的设计理念和使用方式有所不同。以下是它们的对比、优缺点以及如何在项目中同时使用它们的指南。Tailwind CSSBootstrap选择 Tailwind CSS:选择 Bootstrap:在某些情况下,您可能希望同时使用 Tailwind CSS 和 Bootstrap,例如:以下是如何在项目中同时集成它们的步骤:在项目中安装 Tailwind CSS 和 Bootstrap:2. 配置 Tailwind CS

2024-12-26 23:24:10 1049

原创 tailwind.css vuecli

vuecli 集成 tailwind css 详细步骤:如果您还没有创建 Vue CLI 项目,可以通过以下命令创建一个新项目:在创建过程中,选择默认配置或根据需要自定义配置。进入项目目录:2. 安装 Tailwind CSS在项目中安装 Tailwind CSS 及其相关依赖:然后初始化 Tailwind CSS 配置文件:这会在项目根目录下生成一个 文件。打开 文件,配置 Tailwind 的内容选项以确保它能正确清理未使用的 CSS: 数组中指定了 Tailwind CSS 应扫描的

2024-12-26 23:22:13 946

原创 git commit 如何添加注释

【代码】git commit 如何添加注释。

2024-12-19 11:01:50 198

原创 vim save

在 Vim 中保存文件的方法如下:EscEscEscEscEscEsc。

2024-12-14 16:24:26 1656

原创 firewall

【代码】firewall。

2024-12-14 16:20:12 300

原创 ejb组件(rmi) & webservice平台(xml)

使用@Bean显式定义。使用@Component或其派生注解自动扫描。配置作用域、生命周期和条件化加载。通过 Spring 的 IoC 容器,开发者可以轻松实现依赖注入和组件管理,从而提高代码的可维护性和扩展性。优先使用构造器注入,它可以保证依赖不可变且必须被注入使用@Component注解时,确保组件被扫描到合理使用作用域,大多数情况下使用默认的单例模式即可注意循环依赖问题,尽量通过良好的设计来避免使用@Qualifier或@Primary。

2024-12-09 18:27:26 871

原创 docker compose

Docker的理念是一个容器只运行一个服务。而 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具 1 2。通过 docker-compose.yml 文件,用户可以配置应用程序服务,并使用简单的一条命令便可以创建和启动所有服务。这是关于 Docker Compose 的一些关键点以及如何使用它的指南:多容器应用:使用 YAML 文件定义配置:简化的命令行接口:Linux 安装:使用以下命令下载 Docker Compose 的最新版本:为二进制文件应用可执行权限:

2024-12-06 01:36:54 927

原创 array & .flat .filter .map .push .trim .find

这些方法是 JavaScript 中操作数组和字符串的基础工具,功能强大且易用。.flat():用于“拉平”嵌套数组。.filter():用于筛选数组中的元素。.map():用于对数组中的每个元素进行转换。.push():用于向数组末尾添加元素。.trim():用于去除字符串两端的空格。.find():用于查找数组中第一个满足条件的元素。

2024-11-24 20:22:34 373

原创 _computed _destinations() 为什么模板不写()

不需要括号: 在模板中使用计算属性时,不需要加括号,因为它们被视为属性。自动更新: 计算属性会根据其依赖项的变化自动更新,并且结果会被缓存以提高性能。这种设计使得 Vue 的模板语法更加简洁和直观,同时也提高了应用的性能。

2024-11-24 20:06:06 1126

原创 =computed() =ref()

是不同的工具,虽然它们都可以创建响应式数据,但它们的用途和行为不同。computed()是 Vue 3 组合式 API 的核心工具,它们分别用于。如果你的计算逻辑非常简单,且不需要依赖缓存机制,可以用。在 Vue 3 的 Options API 中,的功能,但这通常不推荐,因为。已经为你处理了依赖追踪和缓存。以下是一个示例,展示如何用。的依赖追踪和缓存特性。假设你有一个组件,使用。在 Vue 3 中,

2024-11-24 20:05:27 1165

原创 TypeError: Cannot read properties of undefined (reading ‘state‘)

【代码】TypeError: Cannot read properties of undefined (reading ‘state‘)

2024-11-14 21:17:07 234

原创 组件间通信(组件间传递数据)

在 Vue.js 中,组件间通信是开发者需要经常处理的任务,特别是在构建具有多层次组件的复杂应用时。根据组件之间的关系和数据流的复杂程度,可以采用不同的通信方式。:用于全局状态管理,提供一种集中式的状态存储,并允许所有组件访问。每种通信方式都有其适合的场景,根据组件关系和应用复杂度,合理选择可以提高代码的可维护性和可扩展性。(主要在 Vue 2 中使用):创建一个空的 Vue 实例用作事件总线,通过它来发射和监听事件。方法发送自定义事件,父组件通过监听这些事件来接收数据。父组件向子组件传递数据。

2024-11-11 21:04:05 977

原创 this.$store.dispatch 分发 Vuex store 的 actions & import { mapActions } + this. 分发 Vuex store 的 actions

是 Vuex 提供的一个辅助函数,用于将 Vuex store 的 actions 映射为组件的方法。这种方法更简洁,尤其是在组件中需要调用多个 actions 时。在 Vue 组件中,你可以通过两种方式来分发 Vuex store 中的 actions:直接使用。方法来分发 actions。适用于简单的场景,或者当你不需要在组件中大量使用 actions 时。通过这两种方法,你可以根据需要选择最适合的方式来分发 Vuex store 中的 actions。这种方法是直接调用 Vuex store 的。

2024-11-11 20:08:11 499

原创 数据的单向流动( props v-bind ) 数据的双向流动( v-model )

单向数据流: 提高了应用的可维护性和可预测性,适合大多数组件间的数据传递。双向数据流: 提供了更直观的用户交互体验,但需要谨慎使用以避免复杂性。通过理解和合理应用这两种数据流动方式,可以构建出更高效和可维护的 Vue 应用。单向数据流是默认推荐的方式,而双向数据流应该在特定场景下谨慎使用。

2024-11-11 20:01:32 378

原创 _...mapState

数组语法:简单直接,适用于计算属性名称与状态名称一致的情况。对象语法:提供更大的灵活性,适用于需要重命名或进行复杂映射的情况。mapActions使得在组件中调用 Vuex actions 变得更加简便。它支持数组语法(直接映射)和对象语法(自定义方法名)。适用于处理异步操作或复杂逻辑,这些操作通常不适合直接在组件中进行。通过使用mapActions,你可以保持组件的简洁性,同时有效地管理应用的状态和逻辑。

2024-11-04 11:14:20 773

linux/python

linux/python

2021-11-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除