若依集成单点登录
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 背景补充 单点登录(Single Sign-On, SSO) 是一种身份验证机制,允许用户通过一次登录访问多个相互信任的子系统。例如,用户登录企业内部门户后,可直接访问OA、CRM等系统而无需重复输入凭证。常见的SSO协议包括CAS、OAuth2、SAML等。本文实现的是一种简化的SSO逻辑,通过第三方系统颁发的Token直接完成若依系统的身份认证。 Spring Security...
数据库迁移:MySQL -> 人大金仓
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 人大金仓? Kingbase是基于开源数据库PostgreSQL开发的国产数据库。 所以在后续的开发中,将人大金仓视作PostgreSQL就可以解决大多数问题(这个想法对于海量数据库Vastbase是不是也是成立的?) 安装 人大金仓,一路下一步,全部安装,其中有一步骤是添加license,在下载页面也有授权文件的下载,选择开发版就好,安装好后就能看到三个软件工具: 初步使用 运行:数据库开发管理工具。界面跟Navicat、MySQL Workbench有些像: 创建连接、创建数据库的过程还是相当相似的,不过多赘述,但是相比MySQL的数据库,多了模式这一层级。可以把它理解成一个命名空间,也就是说kingbase的数据库相对是一个更加大的集合。 mysql:...
护肤!战痘!
前言:毕竟不是相关专业的,处于兴趣与个人想收拾好看些的想法,初步探索了些护肤的方法。写完回头看都快成软广了…… 核心似乎是水油平衡,缺水或许也会导致过油,所以我的想法是补水+控油 控油:避免过度清洁,适当用酸,水杨酸、杏仁酸等,及时补水, 早晨:维生素E乳+珀莱雅双抗+保湿面霜薄涂。 晚上:洁面后生理盐水湿敷,清水再洗一次,不宜每天进行。 出于美白和去痘印的需要,晚上洁面补水之后,我会用达尔夫杏仁酸8%、欧邦琪VC15%浓度,酸隔天用,VC每晚。 在用这些酸和VC前两个月,先用珀莱雅源力精华修护了一段时间。 痘痘 浅表有脓头的,等待成熟,挤出就好,点涂夫西地酸乳膏(避免感染留印) 无脓头深处硬块:不要挤!夫西地酸乳膏局部范围稍大一些+阿达帕林凝胶(点涂,每晚一次),抗菌+疏通毛孔。似乎需要很长时间…… 痘印 红痘印:皮肤的炎症反应,消炎就好。积雪苷霜软膏(有些油腻)、复方多磺酸黏多糖(这个我用在点痣2个月之后的红印上似乎也有用) 黑痘印:炎症期间没做防晒,导致的黑色素沉积,需要好几月处理,酸和美白的类产品一起用,我正在奋战嘴角附近的一个,不知还要多久…… ...
数据库分离
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 为啥要配置多数据源? 业务、流程、系统相关数据库进行分离,免得一次性全炸了,当然商业软件可能会更多的考量,比如数据备份、读写分离等等安全性的考虑,目前的想法出于业务分离的考量,再同样的系统上集成其他业务,就不需要重新搞用户、部门等数据表。 怎么配? 若依项目本身就集成了多数据源的配置,在alllication.yml中就有: 1234567891011121314151617181920spring: datasource: druid: # 主库数据源 master: url:...
用户登录与Redis
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 前端登录过程 前端使用store管理用户user状态,其中有一个状态变更逻辑的方法(说人话:登录操作):login,通过用户名、密码、验证码、uuid四个参数像后端发送账户信息进行登录操作,其中的uuid通过getCodeImg获取,返回值为:验证码图像与uuid。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849@GetMapping("/captchaImage")public AjaxResult getCode(HttpServletResponse response) throws IOException{ AjaxResult ajax =...
数组
数组基本概念 基本定义 线性结构 相同类型 固定大小 特点 访问速度快:O(1)O(1)O(1) 插入与删除效率低,需要移动其他元素,时间复杂度O(n)O(n)O(n) 备注 在C++中,需要区分vector与array,vector底层为array,其本身严格讲为:容器。 常见算法与代码 二分查找 对于nnn个元素的有序数组numsnumsnums与目标值targettargettarget,查找数组中是否存在目标值,如果存在,返回目标元素下标。数组元素不重复,下标唯一。 12345678910111213141516171819202122232425class Solution {public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; while (left <= right) { ...
前端总体概述
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 项目文件夹预览 前端项目的基本目录结构我将参照若依,但是具体的演示截图,我将使用我自己的项目。一般情况下我们只需要看下图中的四个部分就可以,下文依次进行。 依赖——package.json 此部分并无过多解释,重点集在依赖项的书写方式、版本对应关系,引擎打包工具等设定,基于ruoyi的二次开发的情况下,可以暂且不深入研究,直接套用即可。截取部分展示。 1234567891011121314151617181920212223"scripts": { "dev": "vite", "build:prod": "vite build", "build:stage":...
后端总体概述
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 前言 在初次接触Java web开发时看着项目中一大堆文件夹,还是有些无从下手的,所以在写每个功能前还是需要了解一下后端整体的项目结构的。 业务A == iams-业务A 后端项目打开会看到好多模块,每个模块在业务逻辑上是独立的,相互之间是可以被调用的(但是不能A调用B,B同时再调用A,会导致循环依赖)。 比如若依的项目,在这个视频中介绍了课程类的添加方式,实现了对课程数据的增删查改,只不过它把后端的代码都放到了admin模块下面,其实我们也可以新增一个模块,将这个代码放进去,就像下图一样,每个模块负责各自的业务。 如何形象化一个后端模块?——以用户管理为例 其实不是很想用添加用户这个作为演示,他的服务、实体、数据库映射放在了system模块里面,但是控制层却放到了admin的web文件夹下,总体上不影响的 ...
MySQL的增删查改
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 概述 暂不考虑MySQL的一些底层实现,仅从基本的增删查改功能来看,我们似乎要使用大量的sql语句去实现这些功能,使用JDBC(Java Database connect)?这个实在是太麻烦了,要手动建立连接,写sql语句传值,小项目凑活一下应该问题不大,但是复杂项目就比较麻烦了,笔者没有试过跑JDBC,在这里贴一段GPT给出的插入数据的代码,当属性变多的时候,这代码就显得有些麻烦了。 1234567891011121314151617import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;public void insertUser(String username, String email)...
全文检索Elasticserarch
前言:本文基于若依前后端分离版本(Spring Boot 3.3.0 + Vue 3 + Activiti 8.1.0)进行改造,相关教程可以在网上找到。在撰写此博客期间,笔者刚刚开始接触 Java Web,本系列下的文章内容包含大量“个人初期”视角,注意鉴别。 全文检索 回想一下我们查找知网的时候,我们可以搜索标题得知一些信息,同样,我们有的时候需要检索他的摘要才能得到一些算法和方法的信息。 所以,这个时候单纯去模糊查找MySQL数据库就不太合适了,我们需要一个新的数据库,他能保存文件的一些关键信息,包括{标题、作者、摘要(甚至是全文)}等,相比MySQL的一条条轻量化的记录数据(比如文档实际的保存位置、标题、ISBN等),我们期望新的数据库能将文本的全文进行保存,能让我们:翻开书看,查找书中内容。而不是只看封面获得一些“表面信息”。 这个时候就可以使用Elasticserarch:分布式搜索和分析引擎 ...