- 博客(39)
- 资源 (5)
- 问答 (3)
- 收藏
- 关注
原创 Java21 + SpringBoot3使用Spring Security时如何在子线程中获取到认证信息
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。在使用时,笔者定义了一个Bean用于创建子线程,但是却遇到了子线程中无法获取到认证信息的问题,本文主要介绍该问题的解决方案。本文主要介绍使用时如何在子线程中获取到认证信息。如有错误,还望批评指正。
2024-02-18 10:56:41
781
原创 SpringBoot实现统一异常处理
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。在前后端分离的项目开发过程中,我们通常会对数据返回格式进行统一的处理,这样可以方便前端人员取数据,后端发生异常时同样会使用此格式将异常信息返回给前端。
2024-02-05 07:42:54
591
原创 Java21 + SpringBoot3集成七牛云对象存储OSS,实现文件上传
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。项目中使用七牛云对象存储Kodo作为云端文件存储中心,本文主要介绍如何在SpringBoot中集成七牛云OSS,并结合前端使用Element Plus库的Upload组件实现文件上传功能。
2024-02-04 11:06:13
910
原创 SpringBoot中优雅地实现统一响应对象
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。在前后端分离的项目开发过程中,我们通常会对数据返回格式进行统一的处理,这样可以方便前端人员取数据。但如果定义好响应对象R。
2024-02-02 15:23:56
689
原创 从零搭建Vue3 + Typescript + Pinia + Vite + Tailwind CSS + Element Plus开发脚手架
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。但前台系统花样繁多,可能是PC端浏览器,可能是微信网页,微信小程序,安卓,鸿蒙……因此笔者只能从个人的需求出发,搭建了原生vue3版、原生微信小程序版、原生React版和uniapp版的前台系统模板。本文内容主要就是来介绍从零搭建Typescript版Vue3工程的完整过程。
2024-02-01 15:49:30
1280
原创 Java21 + SpringBoot3整合springdoc-openapi,自动生成在线接口文档,支持SpringSecurity和JWT认证方式
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。本文主要介绍在项目中如何整合实现自动生成在线接口文档,JDK版本是Java21。OpenAPI 规范(OAS),是定义一个标准的、与具体编程语言无关的RESTful API的规范。
2024-01-31 10:31:51
2247
原创 Java21 + SpringBoot3整合Redis,使用Lettuce连接池,推荐连接池参数配置,封装Redis操作
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。本文主要介绍在项目中如何整合Redis,JDK版本是Java21。Redis。
2024-01-24 14:13:18
2285
原创 Java21 + SpringBoot3集成easy-captcha实现验证码显示和登录校验
文章目录前言相关技术简介easy-captcha实现步骤引入maven依赖定义实体类定义登录服务类定义登录控制器前端登录页面实现测试和验证总结附录使用`Session`缓存验证码前端登录页面实现代码前言近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和SpringBoot3开发,后端使用Spring Security、JWT、Spring Data J
2024-01-22 18:02:12
1503
原创 npm, yarn和pnpm清理缓存
npm, yarn和pnpm是时下主流的node.js包管理器。随着前端项目的增多,会下载许多的依赖。不管是哪种包管理器,都会使用缓存来增加下次下载的速度。但很多情况下缓存文件不会被自动清空,如果不手动清理,可能会占用非常多系统盘的存储空间。为此,本文记录了三种包管理器如何查看缓存文件路径和如何清理缓存,希望对您有所帮助。
2024-01-19 19:35:24
982
原创 使用Spring Data JPA实现审计功能,记录创建人、创建时间、最后修改时间和最后修改人
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。在项目中每条数据在创建或修改的时候,我想记录创建人,创建时间,最后修改人,最后修改时间等审计信息。如果每次都手动赋值,代码会变得冗长,显得很不优雅。
2024-01-18 20:07:33
1171
原创 Java21 + SpringBoot3集成Spring Data JPA
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,后端使用JWT等技术栈,前端提供了vueangularreactuniapp微信小程序等多种脚手架工程。本文主要介绍JPA相关技术以及在项目中如何集成Spring Data JPA。ORM(Object-Relational Mapping) 即对象-关系映射。
2024-01-17 22:29:23
1597
原创 Angular系列教程之DOM操作
相反,我们应该使用Renderer2来完成DOM操作。Renderer2是Angular提供的安全的DOM操作API,它可以确保我们的应用程序在各种环境中都能正常运行(如浏览器、服务器端渲染等)。然后,在toggleElement方法中,我们通过访问nativeElement属性来获取对DOM元素的引用,并通过修改其display样式属性来实现显示与隐藏的切换。在上述代码中,Renderer2被注入到组件中,并使用selectRootElement方法选择了带有#myParagraph指令的DOM元素。
2024-01-16 17:14:25
817
原创 Angular系列教程之zone.js和NgZone
在Angular中,zone.js是一个非常重要的库,它为我们提供了一种跟踪和管理异步操作的机制。它的核心概念是Zone,它可以帮助我们捕获和处理异步操作的上下文。当我们执行异步操作(例如定时器、网络请求或者订阅Observables)时,往往需要确保这些操作可以正确地传播并影响到整个应用程序。Zone就像是一个可观察范围,它将所有相关的异步操作包裹在内,并且能够追踪和管理它们。
2024-01-16 17:13:42
1181
原创 Angular系列教程之组件
在Angular中,组件是构建Web应用程序的核心单元。它们允许我们将UI划分为独立且可重用的部分,并通过数据绑定和事件处理等机制来实现交互性。本文将介绍Angular组件的基本概念,并说明组件和指令的关系。通过本文,我们了解了Angular中组件的基本概念和使用方法。组件是Web应用程序的核心单元,它们提供了一种将UI划分为独立且可重用部分的方式。我们可以创建自己的组件,并在应用程序中使用它们来构建交互式用户界面。同时,我们也介绍了组件和指令之间的关系。
2024-01-16 17:13:04
555
原创 Angular系列教程之自定义指令
在Angular中,指令是一种非常强大的工具,用于扩展HTML元素的功能和行为。它们允许我们创建可重用的组件,并在应用程序中的多个地方使用它们。本文将介绍Angular指令的基础知识,并附上示例代码进行解释说明。通过本文,我们了解了Angular中指令的基本概念和使用方法。指令是Angular应用程序中非常有用的工具,可以扩展HTML元素的功能和行为。我们可以定义自己的指令,并在模板中使用它们,从而实现更丰富的用户界面效果。希望本文对你理解Angular指令有所帮助!
2024-01-16 17:12:19
1044
原创 Angular系列教程之管道
除了内置管道,我们还可以创建自定义管道来满足特定需求。// 这里可以对value进行任意的转换操作在上面的代码中,我们创建了一个名为MyTransformPipe的自定义管道。它实现了PipeTransform接口,并重写了其中的transform方法。该方法接受一个字符串类型的输入值,并将其转换为大写形式后返回。要在模板中使用该自定义管道,我们需要先在Angular模块中声明和导入它,然后在模板中通过管道语法来调用:</
2024-01-16 17:11:36
802
原创 Angular系列教程之变更检测与性能优化
Angular 除了默认的变化检测机制,也提供了ChangeDetectionStrategy.OnPush,用 OnPush 可以跳过某个组件或者某个父组件以及它下面所有子组件的变化检测。在本文中,我们将探讨Angular中的变更检测机制,并通过示例代码来说明其工作原理。变更检测是Angular框架的核心功能之一。通过脏检查和OnPush策略,Angular能够自动追踪组件及其绑定属性的变化,并更新相应的视图。
2024-01-16 17:11:05
896
原创 Angular系列教程之路由守卫
在Angular中,路由守卫是一个非常有用的功能,可以帮助我们控制用户在导航过程中的权限和访问限制。通过使用路由守卫,我们可以拦截导航并根据需求决定是否允许用户继续访问特定的页面或组件。路由守卫是Angular中一个非常有用的功能,可以帮助我们控制用户在导航过程中的权限和访问限制。通过使用CanLoad、CanActivate、CanActivateChild、CanDeactivate和Resolve守卫,我们可以实现各种导航控制需求,并为用户提供更好的体验。
2024-01-16 17:09:02
1203
原创 Angular系列教程之观察者模式和RxJS
RxJS全称 Reactive Extensions for JavaScript,翻译过来是 Javascript 的响应式扩展,简单来说 Rx(JS) = Observables + Operator + Scheduler。它是一个采用流来处理异步和事件的工具库,使我们能够以响应式方式处理异步数据流。它建立在观察者模式的思想上,其中有两个核心概念:Observables(可观察对象)和Observers(观察者)。
2024-01-16 17:08:23
948
原创 Angular系列教程之MVC模式和MVVM模式
MVC和MVVM模式都是为了将用户界面和业务逻辑分离,使得代码更易于维护和扩展。在Angular中,我们可以通过组件和服务来实现这两种模式。希望通过这篇文章,你对MVC和MVVM模式有了更深入的理解,并了解了Angular是如何实现MVVM模式的。
2024-01-16 17:07:37
872
原创 Angular系列教程之模板语法
Angular是一款流行的前端开发框架,它提供了许多功能和工具来简化前端开发过程。其中,模板语法是Angular中一个非常关键的组成部分,它可以帮助开发者更轻松地创建动态前端页面。在本文中,我们将深入探讨Angular模板语法的概念、作用、基本语法、模板指令、模板表达式以及模板渲染的过程和常见用法。Angular的模板语法是Angular框架的核心特性之一,它通过简单的指令和绑定机制,使得前端开发变得更加高效和动态。通过模板语法,开发者可以轻松地将数据与HTML元素进行关联,实现动态内容的展示和交互。
2024-01-16 17:06:54
898
原创 Angular系列教程之依赖注入详解
在Angular中,依赖注入被广泛应用于组件、服务、指令等场景,本文将详细解析Angular中的依赖注入。在Angular中,依赖注入是指将服务或值注入到组件、指令、管道等对象中,使得这些对象可以在运行时动态地获取和使用这些服务或值。依赖注入的原理主要是通过将对象的依赖关系显式地定义在一个容器中(通常是服务提供者),然后在对象被实例化时,由容器负责将这些依赖关系注入到对象中。依赖扫描:通过Angular的依赖注入系统,可以自动扫描组件、服务和指令中的依赖关系,并将其自动注入到相应的对象中。
2024-01-16 17:06:06
1272
原创 Angular系列教程之生命周期钩子
Angular是一种流行的前端开发框架,它提供了许多功能强大且易于使用的工具和特性。其中之一就是生命周期钩子(Lifecycle Hooks),它们允许我们在组件的不同生命周期阶段执行自定义代码。本文将介绍Angular的生命周期钩子以及如何使用它们。生命周期钩子是一些用于在组件生命周期中被调用的方法。它们可以让我们在组件创建、更新和销毁等不同的生命周期阶段执行自己的逻辑。通过使用生命周期钩子,我们可以更好地控制组件的行为,并在需要时执行必要的操作。
2024-01-16 17:05:21
831
原创 Angular系列教程之父子组件通信详解
在Angular应用程序开发中,父子组件通信是一项非常重要的功能。它允许不同层次的组件之间传递数据和进行交流。本文将详细介绍在Angular中实现父子组件通信的各种方法,并提供示例代码进行解释说明。
2024-01-16 17:04:18
940
原创 Angular系列教程之单向绑定与双向绑定
在Angular开发中,数据的绑定是非常重要的概念。它允许我们将应用程序的数据与用户界面进行交互,实现数据的动态更新。在本文中,我们将探讨Angular中的两种数据绑定方式:单向绑定和双向绑定,并介绍如何在自定义组件中实现双向绑定属性。除了在模板中实现双向绑定之外,我们还可以在自定义组件中实现双向绑定属性。这可以通过使用@Input和@Output装饰器来实现。
2024-01-16 17:03:11
1402
原创 Java21 + SpringBoot3集成WebSocket
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,前端提供了vue、angular、react、uniapp、微信小程序等多种脚手架工程。本文主要介绍项目中如何集成WebSocket实现服务器端与客户端的双向通信。WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。
2024-01-14 19:48:25
2705
3
原创 Java21 + SpringBoot3使用spring-websocket时执行mvn package报错
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端分离开发,后端基于Java21和开发,前端提供了vue、angular、react、uniapp、微信小程序等多种脚手架工程。但在使用过程中遇到了一些问题,于是在此记录下来与诸位分享。
2024-01-13 09:44:51
871
原创 SpringBoot中使用LocalDateTime踩坑记录
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目基于Java21和SpringBoot3开发,序列化工具使用的是默认的Jackson,使用Spring Data Redis操作Redis缓存。在定义实体类过程中,日期时间类型的属性我使用了java.time包下的LocalDate和类,而没有使用java.util包下的Date类。但在使用过程中遇到了一些问题,于是在此记录下来与诸位分享。
2024-01-11 23:05:07
1526
原创 使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv-ui开发脚手架
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。但前台系统花样繁多,可能是PC端浏览器,可能是微信网页,微信小程序,安卓,鸿蒙……因此笔者只能从个人的开发需求出发,搭建了原生vue3版、原生微信小程序版、原生React版和uniapp版的前台系统模板。创建uniapp项目可以使用官方提供的IDE工具HBuilderX可视化的创建,但项目结构与普通的vue项目有所不同;
2024-01-08 12:21:26
2095
原创 前端开发环境搭建踩坑笔记——npm install node-sass安装失败的解决方案
查看本地node版本node -v# 安装node-sassnpm install node-sass@[本地node所对应的node-sass版本] --registry=https://registry.npmmirror.com --sass_binary_site=https://www.npmmirror.com/mirrors/node-sass/通过下表查看版本对应关系,也可访问node-sass github仓库或者node-sass npm仓库进行查看。欢迎批评指正。
2023-05-06 15:14:09
40850
40
原创 VSCode + GCC编译器(MinGW)开发环境中文字符乱码问题踩坑与解决办法
命令行工具的组合式开发环境。这几种开发方式要么太过庞大比较吃硬件资源,比如VS动辄就要占用几十个G的硬盘空间,要么虽然轻量但是没有友好的代码提示和自动化的编译链接运行过程,开发体验并不是很友好。等功能,但是需要自行安装C/C++编译器,笔者是用的是GCC编译器MinGW。具体开发环境的搭建过程在此不作讲解,本文关注点在于开发过程中遇到的中文字符相关的乱码问题。的流行,越来越多的开发者选择以此来作为个人的集成开发环境。既然读入的中文字符是GBK编码无法修改,那就把其他相关的地方全都改成gbk编码即可。
2023-04-21 21:12:26
14027
3
原创 Windows 下 Outlook 点击关闭最小化和开机自动运行
一、点击关闭按钮最小化(1)下载 Keep Outlook Running(区分 32位和 64位)https://sourceforge.net/projects/keepoutlook/ (2)下载安装 Microsoft Visual C++ 2010 Redistributable Package(区分 32位和 64位)32位: https://www.micro...
2018-08-14 08:42:30
5753
原创 Java多线程——使用wait/notify实现生产者/消费者模式
场景描述:生产者/消费者模式是进程与线程学习中相当经典的问题,在本文中场景设置如下:有一个仓库(Repository),有若干个生产者(Producer)和若干个消费者(Consumer),生产者可以生产产品(Procuct)并存入(push)仓库,消费者可以从仓库取出(pop)并消费产品。我希望通过使用synchronize锁机制与wait()/notifyAll()或notify(
2017-10-30 18:10:49
885
原创 AndroidStudio将html5打包成apk
我想将html5的动画效果打包成手机app,以方便传播。而在android开发的组件中就直接由webview可以访问网页,另外在android工程中,assets文件夹下的内容是不会在被编译的,因此可以将已经做好的html5的项目放在该文件夹下,由webview控件打开该文件夹下的index.html,这样就可以实现html5打包成安卓的apk了。1、修改MainActivity.java,内
2017-09-22 08:08:49
15709
2
原创 Ubuntu安装jdk的步骤
1、先检查是否已经安装jdkjava -version若显示The program 'java' can be found in the following packages:* default-jre* gcj-4.8-jre-headless* openjdk-7-jre-headless* gcj-4.6-jre-headless* openjdk-6-jre-he
2017-09-21 22:06:51
790
原创 CentOS6.5安装配置Tomcat方法
在进行安装配置Tomcat前请确保系统中已安装jdk并配置好java的环境变量,tomcat与jdk版本对应表如下所示Servlet SpecJSP SpecEL SpecWebSocket SpecJASPIC SpecApache Tomcat VersionLatest Released VersionSupport
2017-09-21 22:04:40
569
原创 linux禁止普通用户切换至root用户
在上正文之前,我想先将一些基础的linux用户以及用户组的相关命令:1、添加用户useradd [-g group] [-d user_home_directory] [-p “your password”] Username-g 表示设置新增用户所属用户组-d 表示设置新增用户的主目录-p 表示设置新增用户的登录密码还有其他的选项可用useradd –
2017-09-21 21:31:31
9150
原创 linux 开机默认进入命令行模式
如果linux系统开机默认进入图形界面,可通过以下方法进行修改:打开终端,1.执行命令 sudo vim /etc/inittab2.在默认的 run level 设置中,可以看到有一行书写如:id:5:initdefault:(默认的 run level 等级为 5,即图形界面)将id:5:initdefault行的 5 修改为 3 即可。执行1中命令后按 i
2016-11-27 12:04:34
9603
原创 分治法实现众数问题
众数问题(分治法)问题描述:给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,多重集合S中重数最大的元素称为众数。例如,S={1, 2 ,2 ,2 ,3 ,5}。多重集合S的众数是2,其重数为3。算法设计:对于给定的由n个自然数组成的多重集合S,计算S的众数及其重数。数据输入:输入多重集S。数据输出:输出众数及重数。例:输入: 6 1 2 2 2 3 5 2 3
2016-10-23 22:42:03
7051
《Web前端框架技术Bootstrap/Vue》技能考核试题
2023-07-04
优先权队列pqueue(Python实现)
2023-07-04
DES加解密(Java Swing)
2023-07-04
词法分析器(Java Swing)
2023-07-04
winlibs gcc/g++编译器 mingw64 10.0.0-r4
2023-02-18
基于JUnit4的关于个人所得税计算的等价类与边界值分析黑盒测试和路径覆盖白盒测试
2018-12-28
outlook点击关闭时隐藏以及开机自启动
2018-10-30
Intellij中spring配置文件报错
2017-08-21
Hibernate框架如何处理双向多对多且有附加属性的关联?
2017-06-22
jdbc为什么要用反射机制?
2017-06-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人