- 博客(88)
- 收藏
- 关注
原创 一个开源的汽修rbac后台管理系统项目,基于若依框架,实现了activiti工作流,附源码
一个基于若依Vue2框架的汽修平台rbac后台管理系统~整合了activiti工作流、定时任务等功能,欢迎一起讨论学习哦~
2023-11-16 11:55:08 1337
原创 手把手教你学会用vue实现元素拖拽移动+滚轮缩放功能
项目中做看板重构时遇到的开发需求,不能使用组件,乍一看感觉很头大,但实际上手做出来后还是小有成就的。直接进入正题:先创建一个简单的vue demo项目<template> <div class="drag"> <div class="back_box"> 这是一个背景 <div class="drag_box">这是一个蓝色可拖拽元素</div> </div> </div&g
2022-01-26 18:46:31 27776 40
原创 vue实现仿阿里云官网的ace-view-fullColumn模块
案例:阿里云官网(https://www.aliyun.com)下方的“全面、专业、智能的解决方案”模块进行组件化自己实现出来的效果:gitee仓库:https://gitee.com/Yuzaki-Nasa/aliyun-ace-view-fullColumnvue实现:<template> <div class="common-fadein"> <div class="bg"> <div class="view-center
2021-11-16 22:01:11 1850
原创 MyBatis-Plus拦截器接口InnerInterceptor失效?因MyBatis缓存机制而踩的一个深坑
接口是 MyBatis-Plus 提供的一个拦截器接口,用于实现一些常用的 SQL 处理逻辑。例如某个组件运作在多系统的平台上,不同系统需要隔离,于是可以通过这个拦截器接口,给每一条要执行的sql末尾拼接一个的条件来实现不同系统只能查到对应系统ID的数据。而今天项目遇到的一个bug情景如下:所有的sql原本都要通过拦截器拼接这个校验系统ID的条件,但其中一条sql因为要查整个数据库中的数据是否有重复,所以就要去掉这个拼接的条件进而查询整个库表。
2024-09-06 18:40:53 725
转载 【工具推荐】MobaXterm远程终端管理工具
按需选择对应的版本。推荐选择Home Edition版(针对个人用户,免费够用版)。点击Download now按钮即可开始下载。
2024-08-28 09:16:35 96
原创 Java 8 Supplier函数式接口介绍及实战案例
Supplier 是 Java 8 引入的一个函数式接口,它属于 java.util.function 包。Supplier 接口表示一个不接受任何参数但返回某种类型结果值的函数。它定义了一个 get() 方法,该方法没有参数,但返回一个泛型 T 类型的值。在某些情况下,你可能希望只有在真正需要结果时才进行计算或生成值。使用 Supplier,你可以将计算或生成值的逻辑封装在 get() 方法中,并在需要时调用它。
2024-05-15 10:29:55 986
原创 个人收集的一些适用于初入职场或入坑新人们的linux命令(持续更新)
这里的 grep -v grep 会排除包含 “grep” 的行。但是,这里有一个小错误,正确的命令应该是 tail -f -n 200 nohup.out,但通常 tail 命令的 -f 和 -n 选项不会一起这样使用,因为它们的功能有些冲突。如果你确实需要一种方法,既能看到文件的最后 200 行,又能持续跟踪之后的新增内容,并且始终保持在 200 行的显示范围内(即当新内容超过 200 行时,最早的行会被移除),那么你可能需要编写一个脚本来实现这个功能,因为标准的 tail 命令不支持这样的功能。
2024-05-10 10:40:23 837
原创 MySQL的原生API实现插入数据后在可视化工具上不显示的问题解决
那么问题产生的原因也找到了,是连接池创建的连接里,执行插入数据的sql语句没有提交,导致线程结束后直接将连接释放了,所以sleep期间在可视化工具上也看不到插入的数据。改为自动提交后就能看到了。所以我们将代码改成SqlSession session = sessionFactory.openSession(true),让其在插入数据或者回滚删除数据时自动提交。显示表中有两行数据,该表也设置了主键和唯一索引。点进表里看却没有数据。
2024-01-30 18:23:16 332
原创 Spring Boot通过配置文件支持数据库自定义表名
直接上干货:例如一个叫xxx的项目,yml文件里加上这段创一个Configuration类放表名和Mapper看到这聪明的你应该已经知道后续该怎么做了
2024-01-29 11:15:49 659
原创 JAVA时间类中Date类、Calendar类和LocalDateTime类的简介与对比区别
时间类一直是代码开发中经常用到的东西,时间类在JDK中刚出现到国内最常用的1.8版本,一共迭代了三次。分别是Date类、Calendar类和LocalDateTime类。虽然JDK在更新,但是我看到很多的项目还是用着最初的Date类,这期就来讲一下三代时间类的区别。
2023-12-21 13:26:52 557
原创 JAVA实现敏感词高亮或打码过滤:sensitive-word
练手项目中实现发表文章时检测文章是否带有敏感词,以及对所有敏感词的一键过滤功能。
2023-12-08 12:29:56 1741
原创 Vue3+nuxt+ts项目引入高德地图API实现步骤
看了好多相关的文章都没有完全贴合选用Vue3+nuxt+ts框架的,也不太靠谱,只好自己踩坑实现了首先去高德开放平台用自己的账号申请一个key,位置如下,申请好后保存好生成的key我们使用,一个高德地图2.0版本的vue3对应封装由于我们使用了nuxt框架,组件库内部使用的插件会使用部分特殊的对象,比如process、window。因此在使用时需要根据Nuxt要求处理加载顺序和对象的默认值处理。在根目录的utils文件夹下创建文件,根据自己项目的规范在其他目录创建也可以在nuxt配置文件。
2023-12-02 10:49:33 666
原创 RedisTemplate中使用scan方法代替keys指令
demo写到这步已经可以用了,注意传参的String pattern是要带*号的,比如我想查user_info:1、user_info:2等等数据,则匹配user_info:前缀(redis的key最好用枚举类+定义常量),此时传参的pattern即为"Keys会引发Redis锁(数据过多一直查询处理),并且增加Redis的CPU占用。但此demo会有一个问题:没法移动cursor,也只能scan一次,并且容易导致redis链接报错。当需要扫描key,匹配出自己需要的key时,可以使用 scan 命令。
2023-11-30 21:59:16 2027
原创 前端传参中带有特殊符号导致后端接收时乱码或转码失败的解决方案
自从成为全栈后感觉思考问题和找bug的视野更广了,写代码也觉得越来越有趣,越来越顺畅。相信自己选择的路,即使它不一定对,只要努力让自己不后悔就好。祝大家学有所成,劳有所获,加油~
2023-11-30 21:45:26 2923
原创 当TinyMCE富文本编辑器遇到Vue3+nuxt+ts项目,分享引入成功案例及过程中踩的那些坑
如果你的前端项目技术栈使用的是Vue3+nuxt+ts,并且老大让你集成一下那个传说中非常丝滑的TinyMCE富文本编辑器,那么恭喜你和我一样中大奖了。网上找了好久都没有找到同类型且靠谱的实现方案,于是就自己着手研究文档并踩着坑解决了。TinyMCE中文文档中文手册懒得看过程的直接跳到最下方复制组件源码后按自己项目微调即可。
2023-11-28 19:41:13 891 6
原创 SpringCloud Alibaba组件入门全方面汇总(下):服务网关-Gateway、链路追踪-Sleuth&Zipkin、配置中心-Nacos Config
Sleuth是Spring Cloud的一部分,专门为微服务架构中的调用链路跟踪提供了解决方案。在复杂的微服务架构系统中,每一个前端请求都会形成一个复杂的分布式服务调用链路,而Sleuth可以帮助清晰地记录这个调用链路。Zipkin是一款开源的分布式系统跟踪工具,它可以帮助我们准确的定位问题并解决它们。Zipkin的设计思想是将应用程序中的请求跟踪和分析组织起来,以便于在分布式系统中发现延迟问题。它使用的是Google的Dapper论文中提到的Trace思想来实现分布式追踪。
2023-11-16 15:23:49 208
原创 SpringCloud Alibaba组件入门全方面汇总(中):服务熔断降级-Sentinel
Sentinel 可以通过自定义异常和 @SentinelResource 注解来提供更加灵活的保护机制。首先,Sentinel 允许用户自定义异常处理类,通过继承 BlockException 类并重写其中的方法,可以定制异常处理逻辑。同时,在定义资源时,可以使用 @SentinelResource 注解来指定异常处理类,以便在发生异常时执行自定义的异常处理逻辑。FlowException 限流异常DegradeException 降级异常ParamFlowException 参数限流异常。
2023-11-14 23:23:35 398
原创 SpringCloud Alibaba组件入门全方面汇总(上):注册中心-nacos、负载均衡-ribbon、远程调用-feign
例如,如果服务器A的权重值为2,服务器B的权重值为1,那么在轮询过程中,服务器A被选择的概率是2/3,服务器B被选择的概率是1/3。在概念上,Feign是一种轻量级的RESTful的HTTP服务客户端,它以Java接口注解的方式调用Http请求,类似于Dubbo,服务消费者拿到服务提供者的接口,然后像调用本地接口方法一样去调用,实际发出的是远程的请求。在原理上,Nacos通过注册中心实现服务的注册与发现,通过配置管理模块实现配置的动态获取和更新,通过服务管理模块实现服务的元数据管理和流量管理。
2023-11-13 23:26:45 985
原创 Java中对date数据做加减时间运算——Calendar类
在日常开发中,我们经常会遇到需要对日期进行加减操作的场景,比如在某个时间点上加上指定的小时数。本文将介绍如何使用JAVA的Date类来实现对日期加小时的操作,并提供具体的步骤和代码示例。
2023-11-06 22:00:23 1777
原创 activiti的核心对象与API与对应操作的表与核心字段
获取方式:对应的表:act_re_deployment用于存储流程部署的相关信息。该表记录了每个流程部署的唯一标识符(ID)、名称(NAME)、类别(CATEGORY)、租户标识符(TENANT_ID)、键(KEY)以及部署时间(DEPLOY_TIME)等信息。核心字段:获取方式:.deploymentId(“流程部署id”).processDefinitionId(“流程定义id”).processDefinitionKey(“流程定义的key”)
2023-11-03 00:21:46 589
原创 用大白话聊聊SpringBoot的自动配置原理(面试题详解)
首先,自动配置是Auto-Configuration,针对的是SpringBoot中的配置类,而自动装配是Autowire,针对的是Spring中的依赖注入。
2023-10-30 22:08:52 528
原创 SpringBoot内置工具类之断言Assert的使用与部分解析
断言是一个判断逻辑,用来检查不该发生的情况;断言的判定规则:2.1.值为true时,程序从断言语句处继续执行;2.2.值为false时,程序从断言语句处抛出异常,停止执行;2.3.早在JDK的1.4版本已经引入断言assert,通过命令-enableassertions开启,通过命令-disableassertions关闭;不加参数,全局生效;加了参数,只在某个类中使用;具体可通过java help命令查看;
2023-10-28 22:59:14 2228 4
原创 maven之父子工程&版本控制&案例实战,及拓展groupId和artifactId的含义
用于父子工程项目,什么是父子工程?顾名思义,maven父子项目是一个有一个父项目,父项目下面又有很多子项目的maven工程,当然,子项目下面还可以添加子项目,从而形成一个树形的结构。那么,这么做有什么好处呢?有以下两点:父工程package 需要指定pom子工程需要声明parent,否则无法使用父pom的依赖导入依赖和dependencyManagement 一起出现,指定的版本优先级更高,通常出现在父pom通常parent用于做结构管理,声明子工程继承父工程的A依赖B C继承BA = B的依赖 +
2023-10-28 22:45:24 1751
原创 Maven入门与开箱即用
Maven 翻译为“知识的积累”,“专家”,“行家”,是一个跨平台的项目管理工具;Maven 主要用作基于 Java 平台的项目(Maven 本身也是 Java 编写的)的构建、依赖包管理和项目信息管理;Maven 能提供一种项目的配置,配置好的项目,只需要运行一条简单的命令,就能完成重复的,繁琐的构建动作;Maven 能提供一种项目的依赖配置,配置好的项目,Maven 能自动的从 Maven 的中央仓库中帮我们下载并管理项目依赖的 jar 包。
2023-10-28 22:02:14 655
原创 redis的bitmap(面试题,待补充)
如果我们需要记录某一用户在一年中每天是否有登录我们的系统这一需求该如何完成呢?如果使用KV存储,每个用户需要记录365个,当用户量上亿时,这所需要的存储空间是惊人的。Redis 为我们提供了位图这一数据结构,每个用户每天的登录记录只占据一位,365天就是365位,仅仅需要46字节就可存储,极大地节约了存储空间。位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已(二进制位数组)。一看就懂 详解redis的bitmap(面试加分项)
2023-10-28 09:20:12 261
原创 简单聊下Redis的主从复制和哨兵机制以及集群(面试题)
在之前的哨兵当中,一旦Main挂掉了,就势必会导致一段时间内的数据写不进去了,当并发量很大的时候这势必是一个比较大的问题集群就说为了解决这个问题而诞生的。由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。Redis集群是一个提供在多个Redis节点间共享数据的程序集Redis集群可以支持多个Master。
2023-10-25 19:45:24 480
原创 Access denied for user ‘root‘@‘localhost‘ (using password:YES) 解决方案(禅道相关)
而我产生这个问题的起因是:前一天不管是项目debug、Postman测试、Navicat启动都还好好的,也没更改过用户,怎么今天就突然连接不上了?用网上说的这些暴力方法未免过于麻烦了,那就控制变量好好想想,昨天在电脑上干了什么,才会发生现在这种情况。关于这个问题,网上查到的解决方法基本都是因为忘记Mysql密码或者用户权限问题,都说要重置密码或者删改配置文件什么的。其他应用可能也有造成这种结果的情况,多回想一下自己是因为之前多操作了些什么而出现的问题。结果原来是禅道搞的鬼。
2023-10-24 22:05:12 691
原创 redis的key超时策略和key淘汰机制(面试题详解)
他会去遍历16个库,遍历每一个库,对这个库进行抽样,抽样之后,判断抽样出来的key,是否超过1/4的key是否处于过期状态,如果说,这些抽样出来的key里边的没有超过1/4的key过期,此时他先清理完抽样出来过期的数据之后,再去遍历下一个库。惰性删除不是去主动删除,而是在你要获取某个key 的时候,redis会先去检测一下这个key是否已经过期,如果没有过期则返回给你,如果已经过期了,则删除,返回null。在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除操作。
2023-10-23 20:36:16 1109
原创 Redis的持久化策略:RDB与AOF(面试题详解)
RDB和AOF持久化的由来?因为Redis中的数据是基于内存的,所以如果出现服务器断电或者服务器宕机,那么Redis中存放的数据就会直接丢失。RDB和AOF就是针对Redis提供的两种持久化机制,可以将Redis中的数据持久化到磁盘中。当Redis实例故障重启后,就可以根据备份的文件来进行数据的恢复RDB全称Redis Database Backup file,也被叫做Redis数据快照,简单来说就是把内存中所有的数据都记录在磁盘中,当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。
2023-10-23 20:04:18 487
转载 Redis的大key简介与问题与解决
redis 的大 key 不是指存储在 redis 中的某个 key 的大小超过一定的阈值,而是该 key 所对应的value 过大对于 string 类型来说,一般情况下超过 10KB 则认为是大 key;对于set、zset、hash 等类型来说,一般数据超过5000条即认为是大 key。
2023-10-23 18:48:35 724
原创 开发项目中各环境的缩写说明(DEV、SIT、UAT、PET、SIM、PRD/PROD)
在项目每次进行版本迭代的晚上,把开发功能完善的UAT代码上传到PRD,然后在生产环境上让测试和项目经理再仔仔细细测过一遍,确定该版本迭代ok了,没问题了才能下班。不同的公司或项目会启用的环境也有所不同,例如某公司某项目,个人在DEV环境开发,然后初版开发完成后前后端上传SIT进行联调,联调觉得没问题后上传UAT给测试或项目经理进行验收,测出BUG后继续重复前三轮操作。
2023-10-23 17:36:59 6325
转载 Spring中的@Autowired和@Resource区别
总结@Autowired 和 @Resource 都是用来实现依赖注入的注解(在 Spring/Spring Boot 项目中),但二者却有着 5 点不同:来源不同:@Autowired 来自 Spring 框架,而 @Resource 来自于(Java)JSR-250;依赖查找的顺序不同:@Autowired 先根据类型再根据名称查询,而 @Resource 先根据名称再根据类型查询;支持的参数不同:@Autowired 只支持设置 1 个参数,而 @Resource 支持设置 7 个参数;依
2023-10-13 17:25:47 58
原创 JAVA成员变量首字母小写,第二个字母大写报错问题(原因:Lombok与Spring冲突)
也就是说Lombok与Spring针对这种首字母小写,第二个字母大写的对象的解析是不同的,而这也就自然而然影响到默认的Jackson的解析,导致返回给前端的属性名称不是我们预期中的名称,则前端判断取得的值为null,继而报错。JAVA类里定义成员变量使用首字母小写,第二个字母大写。
2023-09-16 11:18:17 1238
原创 解决Ubuntu下载速度或更新速度缓慢问题
(这一步里,网上很多其他教程都用vim,但一些新装的ubuntu里没有vim,经过一些错误操作后导致vim安装出错使用不了,所以这里用自带的gedit就不会打不开了。Ubuntu 系统自带的源文件,都是国外的源网址,在国内下载安装升级源或者依赖的时候,都比较慢,更换国内的源地址,轻松搞定此问题。3、在打开的sources.list文件里输入以下信息,然后点右上的“保存”,并退出。4、修改损坏的依赖包,卸载出错的包,重新下载新的正确的版本。5、修改损坏的依赖包,卸载出错的包,重新下载新的正确的版本。
2023-05-23 02:46:13 5616 2
原创 echarts中tooltip设为渐变色与模糊背景滤镜
本次需求中UI提供的设计图的一个模块:开发页面过程中写该模块样式时还原出的效果:实现方法:在的里进行配置:2、tooltip的文本框:这部分没有特供的配置属性,直接用配合超文本的形式进行样式加工:这边值得一提的是CSS中的backdrop-filter这个属性,在案例中实现了一个模糊滤镜的效果该属性的各项配置效果具体可参考该文章:css的backdrop-filter未来有时间再好好研究下这个属性并将经验输出成文章分享给大家~THX!
2022-11-29 18:32:12 4990
转载 vue中关于watch的immediate的理解与使用
对于watch的使用大家都还是比较熟悉的,我们平时使用的比较多的就是watch一个变量,偶尔还是使用deep:true来监听对象,但是immediate的使用就相对比较少,之前有遇到过这个属性,而且也查找过资料,但是一直都是有点懵懵的,要深刻去理解他,我们还是主要是从它的作用,需要在那种情境下使用它。
2022-11-28 10:55:46 1167
原创 vue中鼠标移入移出事件种类以及区别
@mouseenter与@mouseleave。适用于鼠标移入移出时该块整体元素只执行一次事件的场景,例如自行封装的多层级组件。
2022-11-28 09:05:52 8102
原创 Echarts折线图隐藏markPoint只显示最大值和最小值的文本,且只在该两点显示symbol
算是一个比较偏门的需求吧,具体UED给的设计图效果如下:看起来非常简单,但实际实现起来……也确实简单,就是步骤多一点~我们知道Echarts提供的markPoint标注最大值和最小值是会有一个水滴图案的:首先要做的就是隐藏这个水滴图案。但如果将markPoint.symbol设为’none’,会将label文本一同去除。所以思路应为将水滴图案的颜色置为透明。
2022-11-17 16:19:53 4308 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人