智能BI项目(二)前端登录和后端处理excel
前端没什么好说的就是改几个图标文字什么的改成自己的。把请求登录时的数据前后端对应好就行。 后端使用了 MultipartFile去读取文件。 用 EasyExcel将xlsx转成List<Map<>>;EasyExcel实现Excel文件导入导出_easyexcel导出excel-CSDN博客
智能BI项目(一) 初始化前后端
跟着yupi开始学习新项目。 搞这个初始化项目就搞了一晚上。折腾死了 BI项目– 根据传入的数据前端生成图表。加个智能其实也就是用ai更方便用户。提高效率。 技术栈:前端: react 开发框架:Umi + AntDesign Pro 可视化开发库(Echarts + HighCharts +AntV) umi OpeanApi (自动生成后端API接口代码。利用后端的swagger 后端: spring boot(用模板开发省时省力) MySQL MyBatis Plus RabbitMQ AI 接口 Excel上传和解析(Easy Excel) Swagger + Knife4j (项目接口文档) Hutool工具库 前端快速开始 :开始使用 - Ant Design Pro后端快速开始:使用yupi的模板。初始化过程中学到了:前端快速开始和前端可以使用openAPI 结合 swagger来快速生成调用接口方法。
伙伴匹配系统(七) 分布式锁 Redisson 和看门狗机制
在多机环境下要想控制某段程序所需要的执行机子需要给定义一个或者多个锁。来让不同的机子去抢锁只有抢到锁的程序才执行。例如定时任务插入数据,如果没有锁那么原本只需要插入100条数据在3台服务器上就会插入300条。 方法类似于多线程的Lock但是多线程实在本地一台服务器执行,分布式锁是在多台服务器执行。本地一台的Lock无法被其他的服务器识别到 解决方法:用数据库设置一个字段例如lock,当一个程序进入判断这个字段是否为空,如果为空那么就填入字段执行完毕后释放。 用Redis实现注意事项: 1.用完锁要释放 2.锁要加过期时间(如果程序异常终止了,那么字段就会一直存在)。 3.如果方法执行时间太长超过了锁设置的过期时间 问题: 1.提前释放之后下一个服务提前进来,但程序还未执行结束. 2.连锁效应:第二个方法进来运行时第一个方法执行结束delete了锁此时锁的value为空,第 三个服务也进来了。 解决方案: 续期 :在方法执行过程中给其续期。 4.释放锁时,会先判断是否为自己的锁,再进行删除,但是判断完是否是自己的...
伙伴匹配系统(六)(多线程并发)
多线程并发多线程 - Java教程 - 廖雪峰的官方网站 在批量插入假用户的时候需要插入1000条数据,通过for循环线性插入时间效率太低了。 所以引入多线程来实现并发。 1Service.saveBatch(userList,10000); 在插入数据库时可以用service自带的saveBatch来实现 在创建新数据并导入时也可以用多线程去创建。 实现方法分n组去创建将每组创建得到的userList去保存到数据库。n组数据并发执行。 12345678910111213141516171819202122232425262728293031323334353637StopWatch stopWatch =new StopWatch(); final Long MAX_NUMBER = 100000L; stopWatch.start(); List<CompletableFuture<Void>> futureList = new ArrayList<>(); for(int i=0;i<10;i++) ...
伙伴匹配系统(五)假数据批量插入
假数据批量插入与定时任务. 在插入批量大数据时需要开启定时任务分批次插入在springboot 启动项可以添加一个 @EnableScheduling 注解代表可以开启定时任务。批量优化1 可以使用myBatisplus自带的 userService.saveBatch(userList,100);进行批量插入
伙伴匹配系统(四) 分布式登录
Session 多机登录实现分布式登录 Session 存储在一个domin路径下,但是调用不同的服务器不会功享保存的Session值。Session里包含了用户信息等内容所以要吧Session保存到Redis里边并让服务器从相同的Redis里去调用。实现分布式登录 Redis 安装与配置5版本:Releases · tporadowski/redis 下载.msi傻瓜式安装在maven仓库中找到spring boot starter data redis 与springboot版本差不多。 可以下载quickRedis操作管理Redis 将Session传入Redis中的工具在maven仓库中找到spring-session-data-redis 与springboot 差不多版本 配置xml
伙伴匹配系统(三)(axios请求,controller注解,vue OnMounted)
防盗链referer 开启防盗链可以让其他网站加载不出他的网站的图片 防盗链referer详解和解决办法_referer防盗链原理-CSDN博客 Controller层返回对象问题 传统@controller注解返回对象是视图对象@ResponseBody详解-CSDN博客在方法上加个@ResponseBody的注解即可返回JSON格式或者其他类型,或者直接将@Controller换成@RestController@RestController = @ResponsBody+@Controller 前端onMounted 生命周期钩子 在vue3中的setup里生命或者调用函数这个函数会在组件初始化之前运行使用onMounted 会在组件的DOM加载完后再调用Vue 3 里的 onMounted 怎么用?_vue3 onmounted-CSDN博客 axios get请求传入数组一般axios的get方法,但是传入数组会有a[]=1&a[]=2和controller层所需要的格式不同可以引入qs库可以改变他的输入方式axios请求传递数组...
伙伴匹配系统(二)前端学习
1.router 和 route的区别。 router 用于跳转,传参等 route用于得到数据。 2.Vue中常用的数组方法.filter()、.map()、.forEach()、.find()、.findIndex()、.some()、.every() Vue中常用的数组方法.filter()、.map()、.forEach()、.find()、.findIndex()、.some()、.every()_vue中的a.filter()方法-CSDN博客 3.扩展语言a=[…b]代表将b赋值给a,a=[…b,..c]代表a包括了b,c [深入理解 JavaScript 的【扩展运算符】【…】(Spread Operator)-CSDN博客](https://blog.csdn.net/jhgj56/article/details/143232852#:~:text=在 JavaScript 中, 扩展运算符 (…)是一种非常强大且 灵活的 语法,可以简化数组和对象的操作。 本文将详细介绍扩展运算符的基本用法、应用场景及其背后的原理。,什么是扩展运算符? 扩展...
伙伴匹配系统后端开发(一)框架搭建
1.通过mybatisX generate 构造器去自动构造类. \2. 学习了java enum(枚举类)枚举类 - Java教程 - 廖雪峰的官方网站 可以不需要声明很多东西,减少了代码复杂度. 3学习了 throw RuntimeException (抛异常) 在运行中遇到的异常如数组越界等都可以用throw RuntimeException 来处理. 4.QueryWrapper 条件构造器mybatis plus 条件构造器queryWrapper学习_querywapper是什么-CSDN博客 可以直接在这里添加条件不需要再用Mapper.xml里面重新写一遍,更加的快速。 5.Gson (json字符串和类互相转换) Gson的基本使用_gson使用-CSDN博客 6.使用了Optional类来处理可能为null的值 1tagNameSet = Optional.ofNullable(tagNameSet).orElse(new HashSet<>()); 处理这个Set是否为空的情况如果tagNameSet为null则返回Optional对象,orE...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick Start1Create a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment