- 博客(185)
- 资源 (8)
- 收藏
- 关注
原创 docker-compose.yml
command: server --address ':9000' --console-address ':9001' /data # 指定容器中的目录 /data。# mime 类型 application/pdf 为空 所有类型均压缩。# skywalking 探针。# skywalking 探针。# skywalking 探针。# skywalking 探针。# skywalking 探针。# skywalking 探针。# skywalking 探针。# skywalking 探针。
2024-11-22 15:48:49 933
原创 上尚优选项目
②@ResponseBody将对象作为json格式响应。①@RequestBody接收json数据封装成对象。③前端json数组后端接收的格式是list集合,例如。
2024-11-03 21:37:40 259
原创 搭建Elasticsearch集群
在这个集群中,如果出现单节点故障,并不会导致数据缺失,所以保证了集群的高可用,同时也减少了节点中数据存储量。没错,我们可以把数据拆分成多份,每一份存储到不同机器节点(Node),从而实现减少每个节点数据量的目的。我们可以给每个分片数据进行备份,存储到其它节点,防止数据丢失,这就是数据备份,也叫数据副本(replica)。数据备份可以保证高可用,但是每个分片备份一份,所需要的节点数量就会翻一倍,成本实在是太高了。首先,我们面临的第一个问题就是数据量太大,单点存储量有限的问题。大家觉得应该如何解决?
2024-10-17 09:30:41 743
原创 docker镜像拉取失败
检查resolv.conf中是否包含8.8.8.8和8.8.4.4。进入proxy.conf(如果没有的话手动创建)进入daemon.json(如果没有手动创建)如果有代理的话需要配置,没有的话就不需要。包含说明DNS没问题大概率就是源的问题。连接超时大概率以下两个问题。
2024-10-09 09:41:48 906
原创 19.JWT
现在token生成好了,大家要注意,refreshToken方法已经把当前成功登录的人的信息存到了redis中,前缀是login_tokens: + 当前的tokenId,tokenId是一个uuid。可以看到,它会去config.headers看看到底要不要,如果我们在请求头指定了不要,那么发请求就不会带上token,否则就会被带上token。答:没有,所以只能在login页面,凡是想跳转其他界面,都被重定向到登录,硬生生让你登录。然后它又是最后一个话在生成token,好家伙,玩我是吧?
2024-07-07 01:23:39 528 1
原创 问题记录-工作
在Java应用中,线程上下文类加载器用于在运行时动态加载类和资源,通常用在模块化/插件化开发等场景中。在某些情况下,特定的类或资源无法通过应用的默认类加载器加载,这时可以通过设置线程上下文类加载器来指定另外的ClassLoader去加载这些类或资源。在你的情况下,当设置线程上下文类加载器为自定义ClassLoader后,应用就能找到需要的bean了,说明bean所在的类或资源可能确实无法被默认类加载器加载,通过设置线程上下文类加载器解决了这个问题。文件服务器可以直接访问,前端加了token去请求。
2024-07-02 13:41:28 252
原创 36-51、Vue3入门
createApp({ data(){需要用到的数据}, methods:{需要用到的方法} })作用:动态为HTML标签绑定属性值,如设置href,src,style样式等。v-bind所绑定的数据,必须在data中定义。使用表格展示所有文章的数据, 并完成条件搜索功能。语法:v-bind:属性名="属性值"作用:基于数据循环,多次渲染整个元素。简化::属性名="属性值。Axios 发送异步请求。
2024-06-27 11:02:46 642
原创 30-33、SpringBoot项目部署\属性配置方式\多环境开发(一个文件)\多环境分组(多个文件)
根pom执行package命令即可Java –jar jar包位置必须有jre环境。
2024-06-26 00:31:40 326
原创 27-29、redis优化(令牌主动失效机制)-controllert额外添加参数接收请求头、拦截器
【代码】27-29、redis优化(令牌主动失效机制)-controllert额外添加参数接收请求头、拦截器。
2024-06-25 23:06:05 325
原创 23-26、文件上传本地存储+阿里云oss
前端:页面三要素头像: <input<input type="submit" value="提交"></form>后端://获取原始文件名//将接收的文件转存到磁盘文件中//获取文件的大小,单位:字节//获取文件内容的字节数组//获取接收到的文件内容的输入流//把文件的内容存储到本地磁盘上//保证文件的名字是唯一的,从而防止文件覆盖。
2024-06-25 23:02:00 905
原创 第十二 elasticsearch微服务模块开发
也就是说,每次页面创建完成,都会触发watch,然后就会去修改window.location路径,然后页面被刷新,再次触发created钩子,又触发watch,周而复始,无限循环。索引库中的数据来自于数据库,我们不能直接去查询商品的数据库,因为真实开发中,每个微服务都是相互独立的,包括数据库也是一样。然而,这一切有一个前提,那就是当你第一次渲染时,对象中有哪些属性,Vue就只监视这些属性,后来添加的属性发生改变,是不会被监视到的。// 可搜索的规格参数,key是参数名,值是参数值。
2024-06-04 17:59:38 859
原创 第十四 Elasticsearch介绍和安装
用户访问我们的首页,一般都会直接搜索来寻找自己想要购买的商品。而商品的数量非常多,而且分类繁杂。如果能正确的显示出用户想要的商品,并进行合理的过滤,尽快促成交易,是搜索系统要研究的核心。面对这样复杂的搜索业务和数据量,使用传统数据库搜索就显得力不从心,一般我们都会使用全文检索技术,比如之前大家学习过的Solr。不过今天,我们要讲的是另一个全文检索技术:Elasticsearch。欢迎来到 Elastic — Elasticsearch 和 Kibana 的开发者 | Elastic。
2024-05-27 20:52:54 936
原创 31.@Anonymous
我们一般知道,注解是给程序看的,给机器看的,当然也是给程序员看的。ApplicationContextAware接口实现之后,可以重写setApplicationContext方法,该方法可以拿到Spring的上下文,相当于Spring容器在手,天下我有。当我们的url为 /{getget} 的时候,会被替换为/*,当我们的url为/{getget}/{abc}的时候,会被替换为/*/*。上节课我们使用了注解@Anonymous,然后接口就可以直接被访问到了,不用token!正则表达式为:\{(.*?
2024-05-23 22:34:45 1109
原创 30.包名的修改和新建后端模块
当我们自己新建的模块需要依赖ruoyi-system和ruoyi-framework的时候,只需要引入ruoyi-framework即可,因为ruoyi-framework里面引入了ruoyi-system。我们所说的包名修改,是一次性修改ruoyi的全部包名,因为发现很多人有这样的需求,下载别人的代码,想要改成自己公司的包名,结果一改就各种出现问题,程序都起不来了,气死。如上,这样就可以了,然而,发现ruoyi的其他依赖项都没有加版本号,它们都从父模块继承了版本!循环依赖就是说A依赖B,B又依赖A。
2024-05-23 22:07:22 464
原创 SpringSecurity框架教程-Spring Security+JWT实现项目级前端分离认证授权
SpringSecurity框架使用到讲解
2024-05-10 00:18:43 1078
原创 day10-16:Spring Security
1、Spring Security基于Spring开发,项目如果使用Spring作为基础,配合Spring Security做权限更加方便。2)Shiro依赖性低,不需要依赖任何框架和容器,可以独立运行。Spring Security依赖Spring容器。2、Spring Security功能比Shiro更加丰富,例如安全防护方面。1)Shiro的配置和使用比较简单,Spring Security上手复杂些。3、Spring Security社区资源相对比Shiro更加丰富。6、rememberMe功能。
2024-05-09 22:38:14 264
原创 day17-day20_项目实战&项目部署
DevOps是Development和Operations两个词的缩写,引用百度百科的定义:DevOps是一种方法或理念,它涵盖开发、测试、运维的整个过程。DevOps是提高软件开发、测试、运维、运营等各部门的沟通与协作质量的方法和过程,DevOps强调软件开发人员与软件测试、软件运维、质量保障(QA)部门之间有效的沟通与协作,强调通过自动化的方法去管理软件变更、软件集成,使软件从构建到测试、发布更加快捷、可靠,最终按时交付软件。传统的软件开发流程如下:1、项目经理分配模块给开发人员。
2024-04-26 15:05:35 714 1
原创 Redis为什么被设计为单线程
redis是单线程的原因在于redis用单个CPU绑定一块内存的数据,然后针对这块内存的数据进行多次读写的时候,都是在一个CPU上完成的。redis核心就是 如果我的数据全都在内存里,我单线程的去操作就是效率最高的。所以,redis是单线程。
2024-02-19 11:08:12 687
原创 第一章:项目介绍
对于企业中的项目绝大多数都需要进行用户权限管理、认证、鉴权、加密、解密、XSS防跨站攻击等。这些功能整体实现思路基本一致,但是大部分项目都需要实现一次,这无形中就形成了巨大的资源浪费。本项目就是针对这个问题,提供了一套通用的权限解决方案----品达通用权限系统。
2024-01-12 09:47:43 442
原创 day04-服务的具体实现以及MybatisPlus的入门
简称MP是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。我们的愿景是成为MyBatis最好的搭档,就像 魂斗罗 中的1P2P,基友搭配,效率翻倍。
2023-12-26 11:41:14 980
原创 7Docker搭建es和kibana
docker exec -it elasticsearch bash 进入。docker logs elasticsearch 启动日志查询。docker restart elasticsearch 重启。:我安装的版本是7.12.0,可以根据实际的情况安装。docker ps 查看是否启动。
2023-11-29 11:26:11 810
原创 18.天气小案例
1、在菜单管理自己添加一个菜单,然后把菜单分配给某个角色,再把该角色分给某个人。【然而超级管理员什么时候都能看到此菜单,因为超级管理员能无视一切权限问题】然后随便写一个123,现在先让我们页面能跳过去先。组件路径一定要写对,写不对直接进不去相应的组件。路由地址可以乱写,但是起码也要有点“path”的样子吧?2、在路由文件(router/index.js直接写相关路由),然后可以手动切换浏览器网址进入该路由。本次例子利用使用自己添加菜单的方法,这样比较简单。现在我们可以开始专注页面了。
2023-11-22 21:11:59 1089
原创 Linux防火墙常用操作及端口开放
如果这时,我将Mysql在Linux中启动,并配置完成,那么远程telnet该端口是可以成功的;–permanent永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效;当在Linux中成功开启了某个端口,但是远程telnet还是无法ping通,是正常的;因为3306端口没有被Linux进程监听,换句话说,就是该端口上没有运行任何程序;–add-port=443/tcp添加tcp协议的端口端口号为443。Linux防火墙常用操作及端口开放。#查看端口被哪一个进程占用。
2023-11-21 17:26:01 429
原创 16. @PostConstruct注解和开关原理(验证码开关、IP开关)
我们打开页面“参数管理”,所谓参数管理,就是在系统运行起来的时候,可以动态修改一些值,这些值会被系统实时修改,下次如果需要读值,则会是最新的值。上一种验证码开关是在参数设置里面设置的,随着程序运行之后,也能随时改。主要通过redis实现。IP开关在YML,主要是用来看日志的时候能不能看到公网IP。IP开关通过YML文件中写死实现,也就是说,一旦程序启动,就改不了了。我们的项目具有验证码功能,旧版不支持关闭,新版已经支持关闭了。重新登录发现确实没有验证码了?我们直接看一下为啥没有了,上源码!
2023-11-19 21:21:04 739
原创 65.Undertow代替Tomcat
模块修改web容器依赖,使用undertow来替代tomcat容器。-- web 容器使用 undertow -->-- SpringBoot Web容器 -->所以,如果我们的系统是高并发请求,不妨使用一下。,使用undertow来替代tomcat容器。,你会发现你的系统性能会得到很大的提升。ruoyi-framework中。在高并发业务场景中,性能优于。ruoyi-admin中添加。3、修改文件上传工具类。
2023-11-14 20:26:07 664
原创 29.第三方登录
生成一个gitee的路径,在该页面gitee只要登录完成,gitee程序会自动跳转到我们之前设置好的回调地址。但是应用回调不能乱填,当我们gitee登录成功之后,gitee会自动跳转到应用回调地址,并且gitee会带上code,利用code可以得到所登录gitee用户信息。source表示登录平台,如微信登录,支付宝登录,因为要确定用户的唯一性。只要我们登陆好gitee,gitee会自动跳转到我们的回调地址。当今社会,微信登录、QQ登录、抖音登录等等三方登录已经层出不穷,学会三方登录势在必行。
2023-11-14 20:14:53 187
原创 12、填写NGINX配置部署前端;运行jar部署后端
打包之后,在ruoyi-admin下面的target目录下找到打好的jar包,上传到服务器。注意,这是 root的package,不要打到admin或者common的package了。第一步:在根目录点击clear是清楚target,再点击package生成新的target,打成的包就存放在target目录中。运行完毕之后,可以在当前运行jar的目录,通过tail -f nohup.out命令来看运行的控制台输出。后端可以部署的方式,首先直接运行jar是肯定可以的。但是这里运行在容器中必要性,其实并不大。
2023-11-08 23:59:23 899
原创 11、云服务器的宝塔面板安装、在宝塔安装MySQL、Redis、NGINX、JAVA
Tips:正常来说,我们新买的服务器是进不到宝塔面板的,有一个安全组(阿里云叫法,腾讯叫访问墙)的概念。建议给Redis设置一个密码,如果要Redis可以远程访问的话,那是必须要设置密码的。如果购买云服务器的时候,选择系统为宝塔面板,那么就不需要麻烦了。安装完毕之后,大家可以去设置页面看看能改哪些配置,试着自己随意修改玩耍一下。我们可以对此MySQL执行添加数据库,修改root用户密码等等操作,如图。找到软件商店,找到MySQL,安装即可。建议先了解一下面板,点击每一个菜单,看看都是啥。
2023-11-08 23:20:31 583
原创 day02-Ant Design以及Ant Design Pro入门
3. 在全局的数据中,会有很多,所以需要通过namespace进行区分,所以通过state[namespace]进行获取数据。5. 返回的数据,将被封装到this.props中,所以通过this.props.listData即可获取到model中的数。2. @connect修饰符的第一个参数,接收一个方法,该方法必须返回{},将接收到model数据。4. 拿到model数据中的data,也就是[1, 2, 3]数据,进行包裹{}后返回。层顾名思义,负责与数据源对接,进行纯粹的数据读写,供。
2023-11-03 09:39:28 146
原创 6.Docker搭建RabbitMQ
参数解释:本条命令包括安装Web页面管理的 rabbitmq:management组件,账号和密码都为 admin;-p 后面参数表示公网IP地址的端口号对应容器内部的端口号。15672(UI页面通信口)、5672(client端通信口)、25672(server间内部通信口)、61613(stomp 消息传输)、1883(MQTT。如果在云服务上部署需在安全组开通一下端口:15672、5672、25672、61613、1883。
2023-10-09 16:12:36 525
原创 5.Docker搭建MinIO
这里还有一点要注意的就是,console端口和api端口,console端口是给后台页面使用的,9001端口则是我们需要集成到后台项目中用到的,比如集成到springboot中,配置里面用到的端口就是9001。一定要指定api端口和console端口,否则无法访问,最开始只限定了console端口,没有限定api端口,一直通过外网环境访问不到。启动后通过docker logs 容器id查看启动日志。查看容器id:docker ps。重启时自动加载MinIO。访问:ip+:9000。
2023-10-09 11:53:04 1444
原创 4.Docker 搭建 redis6
d redis:6.2.6 redis-server /etc/redis/redis.conf 后台启动redis-server 以/etc/redis/redis.conf配置文件启动。-v /data/redis/conf/redis.conf:/etc/redis/redis.conf 挂载容器内的配置文件到宿主机/data/redis/conf/redis.conf。-v /data/redis/data:/data 挂载容器内的数据文件到宿主机/data/redis/data/下。
2023-10-09 10:29:13 654 1
原创 Stream流式编程,让代码变优雅
并行流是 Java 8 Stream API 中的一个特性。它可以将一个流的操作在多个线程上并行执行,以提高处理大量数据时的性能。在传统的顺序流中,所有的操作都是在单个线程上按照顺序执行的。而并行流则会将流的元素分成多个小块,并在多个线程上并行处理这些小块,最后将结果合并起来。这样可以充分利用多核处理器的优势,加快数据处理的速度。要将一个顺序流转换为并行流,只需调用流的 parallel() 方法即可。在这个示例中,我们创建了一个包含整数的 List,并通过 stream() 方法将其转换为流。
2023-09-06 17:55:44 137
原创 day01-ES6新特性以及ReactJS入门
var 有一个问题,就是定义的变量有时会莫名奇妙的成为全局变量。之前,我们写js定义变量的时候,只有一个关键字: var。
2023-08-30 15:40:50 834
JWT登录 SpringSecurity基础 SpringSecurity进阶 SpringSecurity高级
2022-05-17
onlyoffcei使用时遇到的问题
2024-07-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人