- 博客(84)
- 收藏
- 关注
原创 RuoYi-Vue-Plus (Velocity 代码生成使用以及代码逻辑)
1-配置文件: src/main/resources/generator.yml2-配置生成表的基础信息:包路径 前缀规则等配置类:GenConfig路径 : src/main/java/com/ruoyi/generator/config/GenConfig.java。
2024-07-18 16:53:15 638
原创 RuoYi-Vue-Plus (代码生成、Velocity模板引擎)
JSP、Freemarker、Velocity并称3大模版技术下面是JSPFreemarker和Velocity<#assign><#if>#set#if这个表格提供了一个简要的对比,但请注意,每个技术都有其独特的优点和适用场景。在选择使用哪种技术时,应考虑到项目的具体需求、团队的技术栈和偏好,以及技术的长期维护性和社区支持等因素。
2024-06-27 16:32:52 331
原创 CompletableFuture 场景DEMO代码展示
自定义线程池好处参考:线程是稀缺资源,如果被无限制的创建,不 仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、 调优和监控的框架。
2024-06-25 12:43:29 258
原创 RuoYi-Vue-Plus (若依上传文件配置、systemApplicationRunner 初始化配置、el实现上传文件及图片组件、阿里云OSS上传文件)
路径:src\views\system\oss\index.vue上传文件路径: src\components\FileUpload\index.vue实现技术:el-upload 实现该上传属性,具体api查看element官网选取文件
2024-05-25 15:39:12 389 1
原创 RuoYi-Vue-Plus (@Async注解的异步配置)
JDK动态代理和CGLIB动态代理是两种不同的方式来实现代理模式。JDK动态代理是基于而CGLIB动态代理则是。JDK动态代理要求CGLIB动态代理则可以。
2024-05-20 16:11:11 160
原创 RuoYi-Vue-Plus (线程池配置ThreadPoolConfig、ThreadPoolTaskExecutor )
线程池配置,策略等。可以看我的以下文章异步、线程池、以及CompletableFuture 组合式异步编排_completablefuture设置线程池-CSDN博客。
2024-05-18 14:22:11 291
原创 RuoYi-Vue-Plus(SpringEvent 事件监听、@Log日志注解实现)
上下文监事件是同步的,如果EventListen 中报错则会阻塞,不继续执行。结果:XNIO-1 task-1 表示线程号,可以看到都在同一个线程。
2024-05-18 11:08:31 155
原创 RuoYi-Vue-Plus (Logback 和 logback-plus.xml 、p6spy)
appender 定义日志输出(名称 路径 级别 等等,具体使用如下注解:)
2024-05-14 16:56:40 145
原创 RuoYi-Vue-Plus (SpringCache、CacheManager、@Cacheable、缓存雪崩、击穿、穿透、CacheUtils 缓存工具类)
*** 2-自定义缓存管理器 整合spring-cache*/@Bean自定义 管理器PlusSpringCacheManager,实现CacheManager 接口,基于redssion操作缓存/***//*** * 修改 RedissonSpringCacheManager 源码* 重写 cacheName 处理方法 支持多参数*///是否自动配置name//是否允许null//事务提交之后执行// 常用缓存配置 ttl;
2024-05-09 15:28:12 1152
原创 RuoYi-Vue-Plus (EasyExcel 注解、列表填充、用户管理导出)
*** 我想所有的 字符串起前面加上"自定义:"三个字*/@ExcelProperty(value = "字符串标题", converter = CustomStringStringConverter.class)/*** 我想写到excel 用年月日的格式*/@DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")@ExcelProperty("日期标题")/*** 我想写到excel 用百分比表示*/
2024-05-06 16:53:36 250
原创 RuoYi-Vue-Plus (SPEL 表达式)
PlusDataPermissionHandler 拦截器中定义了解析器:buildDataFilter 方法中根据注解的key value来进行SPEL解析:key作为占位符,value 设置进原生sql。
2024-04-28 11:02:25 461
原创 RuoYi-Vue-Plus (角色部门-数据权限 @DataPermission使用、自定义数据权限、数据权限拦截 、处理器解读)
权限范围五个全部权限:crud全部数据权限自定义权限:对选择的部门有数据权限本部门及以下:本部门及以下子部门数据权限仅本人数据权限: 只能修改自己数据后端代码注意点:比如上面的部门角色控制,是根据 部门 id 和 用户id 控制对数据的操作权限作用在方法上作用在类上})实际代码展示})。。。。。。省里其他代码前置页面上加上自定义DEMO 权限的选项,自行找页面1-DataScopeType.java 中加入DEMO判断/*** 自定义demo* */
2024-04-25 10:51:19 1207
原创 RuoYi-Vue-Plus (SaToken 注解鉴权)
请注意:此注解的忽略效果只针对 SaInterceptor拦截器 和 AOP注解鉴权 生效,对自定义拦截器与过滤器不生效。2- SaManager.getStpLogic(checkLogin.type(), false) 获取到。策略类中 SaManager.getStpLogic(checkLogin.type(), false)实现类位置: cn.dev33.satoken.interceptor.SaInterceptor。调用了checkByAnnotation 方法,进行匹配角色:如下。
2024-04-22 15:39:12 1561
原创 RuoYi-Vue-Plus (系统菜单路由获取、路由生成逻辑、前端按钮控制、自定义权限角色组件)
getRouters 方法位于 com.ruoyi.web.controller.system.SysLoginController类中,作用:根据角色获取菜单返回新构建,VO菜单集合逻辑。
2024-04-16 17:14:33 298
原创 RuoYi-Vue-Plus (时间统计拦截器、获取用户信息、全局异常处理)
类位置:com.ruoyi.framework.web.exception.GlobalExceptionHandler。类位置:com.ruoyi.web.controller.system.SysLoginController。类位置:com.ruoyi.web.controller.system.SysLoginController。标注在方法上,当我们在系统中抛出 NotPermissionException异常,就会被标注的方法拦截。的功能,通常用于定义全局的异常处理程序和响应结果处理程序。
2024-04-15 09:52:27 237
原创 RuoYi-Vue-Plus(登录流程)
登录按钮:先validate方法 校验表单再通过this.loginForm.rememberMe 判断是否记住密码其中 this.$router.push({ path: this.redirect || "/" }).catch(()=>{});定义在 watch中。
2024-03-27 17:09:14 268
原创 RuoYi-Vue-Plus(permission.js 和 request.js 封装)
前端路径: src\permission.js官网:介绍 | Vue Router (vuejs.org)permission.js 通过 router.beforeEach 注册一个全局前置守卫下面permission.js是代码,每一步的 详细注解。
2024-03-26 11:47:19 168
原创 RuoYi-Vue-Plus(登录流程-验证码生成)
1- 进入登录页面,调用 com.ruoyi.web.controller.common.CaptchaController 类中的captchaImage 方法,2- 提交 登录信息 + 验证码 + uuid 比对错误:返回错误信息,删除缓存的验证码,加入缓存。
2024-03-25 16:42:29 240
原创 RuoYi-Vue-Plus(sa-token)
比如 ,下面goods-10001是某个商品的id// 查询指定key的Session是否存在// 获取指定key的Session,如果没有,则新建并返回// 获取指定key的Session,如果没有,第二个参数决定是否新建并返回// 删除指定key的Session官网还提供一些 session 读写的api ,自行查看Session会话 (sa-token.cc)JWT就是上述流程当中token的一种具体实现方式,其全称是通俗地说,
2024-03-25 15:08:23 381
原创 RuoYi-Vue-Plus(基础知识点jackson、mybatisplus、redis以及Redisson 工具类)
时区#日期格式#默认转json的属性,这里设置为非空才转json#设置属性命名策略,对应jackson下PropertyNamingStrategy中的常量值,SNAKE_CASE-返回的json驼峰式转下划线,json body下划线传到后端自动转驼峰式#对象为空时是否报错,默认true#返回的java.util.date转换成timestamp#json中含pojo不存在属性时是否失败报错,默认true#是否允许出现单引号,默认false。
2024-03-19 11:39:09 1942
原创 RuoYi-Vue-Plus(项目启动、以及配置文件解读)
分布式集群与多租户前端项目:采用重写后端项目结构:采用插件化 + 扩展包形式 结构解耦 易于扩展Web容器:采用基于 XNIO 的高性能容器权限认证:采用静态使用功能齐全 低耦合 高扩展三方鉴权:采用组件 支持微信、钉钉等数十种三方认证数据库:原生支持 MySQL、Oracle、PostgreSQL、SQLServerORM框架:采用基于对象几乎不用写SQL全java操作 功能强大插件众多多数据源框架:采用支持世面大部分数据库。
2024-03-11 22:29:59 783
原创 docker (portainer 安装nginx)
容器内:/usr/share/nginx/html 挂载到主机 /etx/nginx/html。因为没有vim,所以安装下。
2024-01-04 10:12:31 696
原创 Docker 网络模式 -day05
docker多个容器之间的集群规划要使用服务名,因为ip是会变动,使用自定义网络模式能够使用服务名进行通信1-创建自定义网络2-查看自己创建的网络 mynetwork过程如下1-查看镜像2-查看容器3-查看 t1、t2 2个容器都是在一个网段上测试1-进入t1容器 ping t22- 用服务名也可以ping通。
2023-12-20 22:56:24 540 1
原创 docker(Dockerfile、 关键字解释、Dockerfile编写、构建) -day04
Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
2023-12-13 15:43:13 211
原创 docker 安装mysql 主从复制
2.2 进入/data/dockerData/mysql-slave/conf目录下新建my.config,设置从库为只读。master_log_pos:指定从数据库从哪个位置开始复制数据,通过主数据的状态,获取Position参数;master_log_file:指定从数据库要复制数据的日志文件,通过查看主数据的状态,获取File参数;master_password:在主数据库创建的用于同步数据的用户密码;master_user:在主数据库创建的用于同步数据的用户账号;log_bin为ON是开启状态。
2023-12-06 11:24:49 172
原创 docker 安装Redis (全网最详细:附带配置文件)
截止目前,Redis 的最新稳定版本是 6.2.6。这个版本在可读性、性能和稳定性方面进行了改进,并增加了一些新的命令和功能。
2023-12-05 15:10:58 9056 11
原创 nginx: [error] open() “/var/run/nginx/nginx.pid“ failed (2: No such file or directory)
2. 如果您在启动 Nginx 时遇到该错误消息,可能是因为 `/usr/local/nginx/logs/` 目录不存在。您可以尝试手动创建该目录,并确保其拥有适当的权限。在 Nginx 配置文件中查找 `error_log` 和 `pid` 配置指令,并检查路径是否正确。请注意,上述命令的用户和组可能因您的系统而异。如果不确定,请参考您的 Nginx 配置文件中的用户和组设置。请尝试上述方法来解决这个问题。3. 如果找不到 pid 文件,您可以尝试在命令行中指定一个自定义的 pid 文件路径。
2023-12-04 11:32:04 5537
原创 docker 安装 mysql5.7(全网最详细)
安装,以MySql5.7版本为例子。docker默认的仓库比较慢,可以参考以下文章 第五标题 设置阿里云镜像仓库。
2023-12-02 23:56:39 3852
原创 docker (容器数据卷、创建、读写规则)-day03
如图::创建容器卷 : -v /tmp/host_data:/tmp/docker_data ,并在容器卷:/tmp/docker_data目录内创建syf.text 文件。步骤二:继承上面 名称为 myubuntu20231202 的容器卷,可以看到容器卷目录也继承过来了。上面 新建的这个容器卷 /tmp/host_data1:/tmp/docker_data1。2、在容器中文件输入hello,在宿主机中也能看到内容,反之在宿主机中修改也一样,双方共享。步骤1:新建一个容器卷。,在宿主机操作数据卷,
2023-12-02 16:27:03 360
原创 docker (镜像分层、阿里云镜像推送/拉去)-day02
在 bootfs 之上的层级是 rootfs(root file system),它包含的是典型 Linux 系统中的 /dev、/proc、/bin、/etc 等标准目录和文化。联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层一层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Docker 镜像是 Docker 容器的基础,它提供了一种可重复使用的、跨平台的部署方式,使得应用程序的部署和运行变得简单和高效。当容器启动时,一个新的可写层被加载到镜像的顶部。
2023-11-30 15:50:11 302
原创 docker (简介、dcoker详细安装步骤、容器常用命令)一站打包- day01
Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到。容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。,通过镜像成为运行在Docker容器上面的实例,而 Docker容器在任何操作系统上都是一致的,这就实现了。每个容器都是相互隔离的、保证安全的平台。Docker 就是在它的基础上发展过来的。
2023-11-26 17:25:06 621
原创 Vue UI 组件库
Element Ul https://element.eleme.cn (国产 饿了吗打造),我们可以只引入需要的组件,以达到减小项目体积的目的。2-然后修改配置文件: babel.config.js。移动端常用 UI组件库。PC端常用UI组件库。
2023-11-14 11:27:49 126
原创 Vue 2学习(路由、history 和 hash 模式、)-day014
路由(route)就是一组key-value的对应关系多个路由,需要经过路由器(router)的管理在 Vue 中也有路由,Vue 中的路由主要是通过 vue-rounter 这个插件库来实现,它的作用就是专门用来实现 SPA 应用的。单页 Web 应用(single page web application,SPA)整个应用只有一个完整的页面点击页面中的导航链接不会刷新页面,只会做页面的局部更新数据需要通过 Ajax 请求获取。
2023-11-13 15:52:22 182
原创 Vue2(Vuex)--day13
概念:Vuex 是专门在 Vue 中实现集中式状态(数据)管理的一个 Vue 插件,对应 Vue 应用中的多个组件的共享状态的进行集中式的管理(读 / 写),也是一种组件间通信的方式,且适于任意组件间通信。使用 Vuex 的时机多组件依赖于同一状态来自不同组件的行为需要变更为同一状态现在我们来引入一个背景,说明为什么要引入 Vuex。场景:A B C D四个组件,大家都想用A组件的x属性对其进行读/写1- 全局事件总线实现(其实兄弟组件用最香),(红线是读/绿线是写),如图。
2023-11-06 16:49:26 41
原创 Vue2 (配置代理、插槽) day-012
注意:Vue 2.5 之后将原来的接收 dataObj 的属性名由原来的 scope 改成为 slot-scope,因此这两种方法现阶段都可以使用。 标签来接受 AP组件中解析的中的内容。这个库是 vue 1.0 官方使用的,之后交给了其他团队维护,首选还是axios。jsonp:比较局限,需要前后端共同对接,并且只能处理 get 请求。app组件 slot="center" 指的要放入的插槽。List组件,绑定事件,接受emit 发送过来数据。
2023-10-30 23:05:27 751
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人