- 博客(91)
- 问答 (8)
- 收藏
- 关注
原创 Java项目实现RBAC基于角色的访问控制(以银行项目为例)
摘要: RBAC(基于角色的访问控制)是行业主流的权限设计模型,通过在用户和权限之间引入角色层实现高效管理。其核心思想是将权限绑定到角色,用户通过分配角色间接获得权限,解决了传统"用户-权限"直连的维护难题。RBAC包含四个递进版本:基础版(RBAC0)、角色继承版(RBAC1)、角色约束版(RBAC2)和综合版(RBAC3),其中RBAC3是金融项目的标配,支持角色继承和合规约束。银行项目要求实现菜单、按钮、接口三级权限管控,并扩展数据权限。特殊要求包括金融合规性、权限最小化、双重防越
2026-01-10 14:22:47
741
原创 Java完整实现 MinIO 对象存储搭建+封装全套公共方法+断点上传功能
本文详细介绍了如何完整搭建MinIO对象存储环境,并提供SpringBoot项目集成MinIO的全套解决方案。主要内容包括:MinIO的4种部署方式(推荐Docker)、SpringBoot核心依赖配置、MinIO客户端注入,以及重点封装的生产级工具类。该工具类实现了文件上传/下载/预览/删除等基础功能,特别实现了大文件断点续传(分片上传)功能,解决文件过大导致的超时问题。所有代码完整可运行,包含异常处理、参数校验等生产级特性,可直接集成到项目中。
2026-01-10 12:57:32
687
原创 Java开发OCR(自动识别图片中的文字)Tesseract-OCR + Tess4J 和 百度智能云OCR API
本文介绍了两种Java OCR文本识别方案:本地离线OCR(Tesseract+Tess4J)和在线云API(百度智能云)。本地方案无需网络、零调用费用,适合内网/批量处理场景;云API方案识别准确率高,但依赖网络且有调用限制。文章详细提供了两种方案的实现步骤:包括环境配置、Java代码示例(支持图片文件和流处理)、路径设置等关键说明,并对比了各自的优缺点,开发者可根据项目需求选择适合的方案。
2026-01-10 12:40:17
951
原创 Spring Boot自动装配代码详解
Spring Boot 自动装配是其核心特性之一,它能够根据项目中添加的依赖自动配置 Spring 应用程序。通过自动装配,开发人员可以减少大量的配置工作,快速搭建起一个可用的 Spring 应用。
2025-01-04 17:20:09
1109
原创 基于轻量级模型YOLOX-Nano的菜品识别系统
YOLOX是一个在2021年被旷视科技公司提出的高性能且无锚框(Anchor-free)的检测器,在YOLO系列的基础上吸收近年来目标检测学术界的最新成果,如解耦头(Decoupled Head)、数据增强、无锚框、标签分配策略SimOTA(Simplified Optimal Transport Assignment)等等。同时YOLOX继承了YOLO系列容易部署的特点,提供了支持ONNX、TensorRT、ncnn和Openvino的部署版本。
2024-02-08 22:18:00
2550
1
原创 智慧自助餐饮系统(SpringBoot+MP+Vue+微信小程序+JNI+ncnn+YOLOX-Nano)
本项目是配合智慧自助餐厅下的一套综合系统,该系统分为安卓端、微信小程序用户端以及后台管理系统。安卓端利用图像识别技术进行识别多种不同菜品,识别成功后安卓端显示该订单菜品以及价格并且生成进入小程序的二维码,用户扫描后在小程序进行付款和提交订单,用户也可查看订单和菜品等信息,管理员在 Web 后台管理系统进行信息查看餐厅运营情况和管理菜品、订单评价等信息。
2024-02-08 01:03:48
8736
6
原创 Java过滤器配置类导致跨域问题:Request header field token is not allowed by Access-Control-Allow-Headers in prefli
Java过滤器配置类导致跨域问题:Request header field token is not allowed by Access-Control-Allow-Headers in prefli
2023-03-04 21:26:05
2679
原创 Spring Security配置类导致跨域问题:doesn‘t pass access control check: It does not have HTTP ok status.
Spring Security配置类导致跨域Access to XMLHttpRequest at 'http://localhost:8081/restaurant/list' from origin 'http://localhost:8080' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.
2023-03-04 21:04:22
1505
原创 Java线程池的创建以及原理
在外面的日常开发中,也使用了不少池化技术,比如线程池、数据库连接池、HTTP连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。
2023-02-19 16:05:24
629
原创 Java和Vue项目打包并进行服务器部署
两周前我刚刚入职实习的时候,后端的几个同事看到我需要学习如何把项目进行部署,都围过来教我怎么部署,我感觉学习到了很多,因此,记录一下学习的笔记。当然了,这些部署是建立在已经配置好tomcat(后端服务器)和nginx(前端服务器)的基础之上的,因为公司之前已经做好了,我只需要迭代即可。...
2022-07-19 18:04:05
3741
2
原创 Caused by: java.io.IOException: The temporary upload location [......] is not valid
Caused by: java.io.IOException: The temporary upload location [......] is not valid
2022-07-14 17:25:00
802
原创 MyBatis查询报错:java.sql.SQLSyntaxErrorException: Unknown column ‘xxx_xxx_xxx‘ in ‘field list‘
MyBatis-Plus查询报错:java.sql.SQLSyntaxErrorException: Unknown column 'xxx_xxx_xxx' in 'field list'
2022-06-02 17:07:41
2398
原创 线程、进程、多线程和并发知识汇总
一、线程线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。一个进程可以有很多线程,每条线程并行执行不同的任务。在多核或多CPU,或支持Hyper-threading的CPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。二、进程是什么进程(Process)是计算
2022-05-04 16:22:43
357
原创 MySQL插入中文数据时报错:Incorrect string value: ‘\xC8\xFD\xCC\xE5‘ 解决方案
最近在使用MySQL数据库的客户端来操作数据库的时候,我直接打开我电脑搜索里面的MySQL客户端来打开:结果直接在我插入中文数据的时候报错了:Incorrect string value: '\xC8\xFD\xCC\xE5' for column 'name' at row 1于是我在网上找了这个错误的解决方案,我发现需要修改MySQL的配置文件来修改字符编码:比如这个教程:https://blog.csdn.net/u013317172/article/details/82778785于
2022-04-26 16:30:11
2356
原创 SpringBoot整合MyBatis-Plus(MP)总结
在MyBatis-Plus(MP)技术出现之前,我们依旧需要自己写SQL语句来实现DAO层,但是MP技术出现之后,我们只需要在创建实体类的基础上使用MP来实现DAO层,加上SpringBoot可以很简单创建接口,使得Java后端开发变得非常简单。虽然在我学习的过程中,感觉MP技术很简单,但我真正动手去实现的时候,也出现了不少的问题,甚至让我卡了挺久,这让我明白了理论和实践相结合是一件非常重要的事情。
2022-04-17 21:54:36
9581
原创 C++标准库使用
标准库的数据结构stack#include<iostream>#include<stack>using namespace std;int main() { stack<int> s; s.push(3); s.push(7); s.push(1); cout << s.size() << endl; cout << s.top() << " "; s.pop(); cout <&
2022-04-01 19:58:04
561
原创 初等排序算法(图解+代码)
插入排序法输入示例:65 2 4 6 1 3输出示例:5 2 4 6 1 32 5 4 6 1 32 4 5 6 1 32 4 5 6 1 31 2 4 5 6 31 2 3 4 5 6#include<stdio.h>// 按照顺序输出数组元素void trace(int A[], int N){ int i; for(i = 0; i < N; i++){ // 在相邻元素直接输出一个空格 if(i > 0){ printf(
2022-03-12 21:48:59
1604
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅