
后端
Adellle
一点点技巧加上大量的训练。
展开
-
消息队列导致数据库数据读取不一致解决方案
具体问题:使用消息队列时,发送方给接收方发送消息,接收方修改了数据库的同时发送方查询数据库,由于是异步操作,会导致发送方读取的数据是修改前的数据,导致数据不一致的问题。我使用的是在数据库添加一个版本字段,记录版本,保证版本一致性,就能保证每次读取的是需要的内容。原创 2025-03-17 18:22:24 · 247 阅读 · 0 评论 -
微服务架构下前端如何配置 OpenAPI 接口
生成客户端代码:使用 OpenAPI 工具(如 `openapi-typescript-codegen` 或 `openapi-generator-cli`)生成前端可用的 API 客户端代码。OpenAPI 规范文件:通常是 `swagger.json` 或 `openapi.json`,可以通过后端服务的 `/v2/api-docs` 或 `/v3/api-docs` 路径获取。它定义了 API 的接口、参数、返回值等信息,并可以通过工具生成客户端代码。在项目中引入生成的客户端代码。原创 2025-03-16 14:19:32 · 510 阅读 · 0 评论 -
docker容器镜像拉取失败解决方案
docker容器镜像拉取失败解决方案。原创 2024-12-20 17:33:00 · 361 阅读 · 0 评论 -
Java原生实现代码沙箱的实现
代码沙箱:只负责接收代码和输入,返回编译运行的结果,不负责判题(可作为独立项目/服务,提供给其他需要执行代码的项目使用)新建一个新的SpringBoot项目并且成功运行(Java8、SpringBoot2.7)不同的编程语言对应领域和关键词都不同,成本太大。以Java语言为主,实现代码沙箱。4. 限制用户操作权限(文件、内存、CPU、网络、执行)新建目录,每个用户的代码都存放在独立的目录下,便于维护。目前为止,核心流程都已经实现,若真正上线,安全吗?(可扩展实现C、C++代码沙箱)原创 2024-12-19 22:41:48 · 1265 阅读 · 0 评论 -
判题机的开发(代码沙箱、三种模式、工厂模式、策略模式优化、代理模式)
如果所有的选择判题策略都写在判题服务代码中,代码会过于复杂,产生很多if-else,建议单独编写判断策略的方法。-->定义JudgeManager,尽量简化对判题功能的调用,原创 2024-12-18 20:40:37 · 1193 阅读 · 0 评论 -
工厂模式和普通的对象创建(使用多态)的区别
解耦直接创建对象:客户端代码直接与具体实现类(如Dog)绑定,缺乏解耦。工厂模式:通过工厂类来创建对象,客户端只关心如何获取对象,而不关心具体的实现类。工厂模式有助于解耦客户端代码和具体的实现类。灵活性和扩展性直接创建对象:如果以后需要增加新的对象类型,客户端代码需要修改来适应新类型(如添加new Cat()工厂模式:新增类型时,只需要扩展工厂类,不需要修改客户端代码。工厂模式支持更高的灵活性,特别是在对象的选择是动态的情况下(如配置驱动、条件驱动等)。多态的使用直接创建对象。原创 2024-12-18 16:19:06 · 852 阅读 · 0 评论 -
工厂模式(根据代码沙箱拓展)
最近写一个关于代码沙箱的项目,用到了工厂模式,简单记个笔记,总结一下。实现了一个简单的,根据传入的字符串参数创建不同类型的代码沙箱实例。这种方式的好处是简洁、易于理解,而且适用于需求较简单的场景。不过,它的扩展性在面对大量沙箱类型时可能不如其他更复杂的工厂模式。: 这是工厂方法的核心,接收一个参数,根据该参数选择不同的沙箱类型并返回相应的实例。switchtypetype"example"type"remote"type: 该方法返回的是一个接口或抽象类,具体的实现类(如)应该实现了该接口或继承了该类。原创 2024-12-18 16:11:06 · 460 阅读 · 0 评论 -
MarkDown父子组件传参
使用MarkDown父子组件绑定。原创 2024-12-16 10:37:42 · 127 阅读 · 0 评论 -
使用枚举类编程
使用枚举类编程。原创 2024-12-15 10:59:15 · 129 阅读 · 0 评论 -
对象和包装类之间的转换
对象和包装类之间的转换。原创 2024-12-14 22:22:34 · 373 阅读 · 0 评论 -
SpringBoot集成ChatGPT
首先你要有一个openai的账号,然后申请apikey,并且里面有一定的额度。原创 2024-06-20 16:30:37 · 553 阅读 · 0 评论 -
后端上传文件使用阿里云oss存储文件(图片)
前端向后端传文件,后端Controller层接收。3,读取配置文件application.yml中的配置。2,application.yml配置。1,pom.xml安装依赖。4,Service层接口。原创 2024-04-07 15:06:51 · 474 阅读 · 0 评论 -
SpringBoot集成Swagger功能
2,过滤器放行Swagger功能。1,配置Swagger接口。原创 2023-12-26 16:22:31 · 435 阅读 · 0 评论 -
SpringBoot+vue实现评论区分页效果
因为分页是SpringBoot已经封装好的,会在sql语句中自动加上limit去分页查询,加了分号springboot添加limit查询会产生语法错误。当评论区含大量数据时,一次性查询速度很慢,所以使用分页,实现分页效果。需要注意的是不要在sql语句最后加分号";javaScrip向后端传数据。不然你就会产生这样的错误。原创 2023-12-22 18:47:46 · 873 阅读 · 0 评论 -
SpringBoot过滤器过滤未登录操作的页面
【代码】SpringBoot过滤器过滤未登录操作的页面。原创 2023-12-21 00:15:38 · 534 阅读 · 0 评论 -
利用redis给邮箱发送邮件功能
【代码】利用redis给邮箱发送邮件功能。原创 2023-12-18 23:28:21 · 707 阅读 · 0 评论 -
关于在redis中查找键值对报java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to...的问题
返回linkedHashMap类型。它的设计使得我们可以更容易地按照插入顺序迭代元素的键值对。这样可以确保转换是安全的,并且不会导致任何意外的行为或错误。强制转换为其他对象类型时,你应该非常小心。有相同的语义和功能,并且不会破坏任何内部状态或依赖关系。转换为其他类型,最好的做法是创建一个新的对象,并手动复制。原创 2023-12-16 18:34:47 · 527 阅读 · 0 评论 -
基于SpringBoot+vue的token验证
1,写一个验证token的拦截器。1,axios响应拦截。原创 2023-11-21 20:20:02 · 539 阅读 · 0 评论 -
SpringBoot中文乱码问题解决方案
在Spring Boot中,确实没有像传统Web应用程序中需要使用web.xml配置文件。如果以上方法仍无法解决你的问题,可以尝试在控制器层对请求和响应进行编码设置。这个依赖会引入Tomcat的字符编码过滤器,有助于解决中文乱码问题。通过在请求和响应对象上设置字符编码,确保数据传输的正确性。这里将字符集设置为UTF-8,并启用了HTTP编码配置。原创 2023-11-20 18:02:16 · 6968 阅读 · 0 评论 -
Springboot集成JDBC
1,pom.xml配置jar包。原创 2023-11-18 17:43:42 · 207 阅读 · 0 评论 -
Spring集成JDBC
JdbcTemplate是Spring对jdbc的封装,提供了对数据库操作的方法,里面还可以直接包含数据源对象。配置阿里巴巴提供的数据库连接类,让Spring帮忙管理。原创 2023-11-15 19:11:02 · 236 阅读 · 0 评论 -
Spring框架中的bean管理(XML和注解及属性的注入)
各层类使用不同的注解标签和名字。在Spring框架中,一般把由Spring框架管理创建的对象称为一个bean对象,与我们普通的对象不同,因为Spring框架可以进行功能上的增强。如上我们新建UserDao类和UserService类,在UserService类中调用UserDao类中的方法,使用bean管理这两个类。就是将创建对象的权力反转给Spring框架,我们无需自己创建对象,直接在Spring框架的容器中获取即可。在Spring中配置当前标签,就可以通过注解,自动扫描指定包下的类,可自动解析注解。原创 2023-11-15 18:23:33 · 614 阅读 · 0 评论 -
Spring
scope:用来定义对象作用域(singleton(单例的,在容器启动时创建一个对象)/prototype(多例的,每次获取对象是就创建一个对象,每次对象都不一样))Spring已经完成对对象的创建,还需要在创建对象的同时对对象属性进行赋值------依赖注入。@Resourse(name="")是jdk提供的注解标签,给指定name,通过name去寻找。3,创建Spring配置文件,bean中配置的就是让Spring管理的类。Spring会扫描此包下的类,对类上的注解进行解析。1,属性的set方法注入;原创 2023-11-14 18:45:28 · 206 阅读 · 0 评论 -
Spring框架特点介绍
Spring是一个轻量级的IOC和AOP的一站式java开发框架,为了简化企业级开发而生。轻量级:Spring使用的jar包较小,一般1MB左右,Spring框架运行占用资源少,运行效率高。原创 2023-11-10 18:51:31 · 191 阅读 · 0 评论 -
Java中的反射机制
获取字节码文件对象的三种方式1,(常用)源代码阶段,2,(传参)加载阶段3,(前提有对象)运行阶段。原创 2023-11-10 18:40:11 · 485 阅读 · 0 评论 -
JAVA反射机制中获取字节码文件对象的三种方式
JAVA反射机制中获取字节码文件对象的三种方式原创 2023-11-09 16:38:14 · 101 阅读 · 0 评论 -
Mybatis的核心配置文件使用方法
1,environments中的表示配置数据库连接信息,在value中输入相关数据库信息即可。为文件路径或者包添加一个别名,仅用于 XML 配置,意在降低冗余的全限定类名书写。name="logImpl"表示配置日志信息,运行时会输出数据库的日志信息。1,属性(properties):在enviornments标签上加上。config.properties配置文件,配置数据库信息。代表导入一个外部配置文件,可进行动态替换。在配置之前需要搭建Mybatis环境。然后寻找需要取别名的类,在类上方添加。原创 2023-10-31 21:59:46 · 296 阅读 · 0 评论 -
sql语句数据库查询:如果当前元素已经使用过,下拉框不显示该元素该如何查询?
发现当管理员为空,查询结果也为空,即没有任何记录存在,那么查询结果将为空,因为在语句中使用了子查询。这是因为子查询会排除掉在子查询结果中出现的值。所以选择使用了左连接()和条件来找到在表中不存在的buildID。这样,无论表是否为空,都将返回正确的结果。原创 2023-10-22 16:06:31 · 257 阅读 · 0 评论 -
专业管理菜单的增删改、查重
如果id为空说明此时是新增专业,如果id不为空,说明是修改专业信息,从后端传来的id。我使用了两个方法,第一个是在DAO层数据库查询判断是否为空,为空则返回状态值“200”,表示可以新增,否则不可以。后端: POST请求,传入save字符串,获取传来的数据,新增到数据库。①点击删除按钮,弹出对话框,拿到专业id,传到后端,后端数据库删除。①点击修改按钮,弹出对话框,拿到专业id,传到后端,后端数据库查询。后端:后端接收数据,对数据库查询,获得数据,传回前端。②点击确认删除,保存到数据库,前端更新页面。原创 2023-10-18 19:37:30 · 650 阅读 · 0 评论 -
管理系统搭建一般步骤(会话跟踪 路由导航守卫 响应拦截器)
然后就是dao层的调用了,因为只要是对数据库进行增删改查操作时,我们都需要调用一次数据库,所以,将数据库连接打包成一个类,每当进行操作,调用该类即可。第一次登录成功时,在后端根据管理员信息以及密钥生成的token(字符串),响应给前端,之后每次请求都携带token到后端,后端对token进行验证。在写后端之前需要在数据库中创建一个管理员的表,代表登录人信息,因为后端需要和数据库进行比对,如果数据库中存在当前登录的信息才可以进入主页面。为axios框架配置响应拦截器,一旦后端做出响应,响应器拦截。原创 2023-10-15 15:56:27 · 577 阅读 · 0 评论 -
Java前后端交互实现班级管理(查询)
创建专业servlet:MajorServlet.java。以上仅完成了对专业信息的查询。1,数据库创建存储专业信息的表。原创 2023-10-15 13:43:08 · 536 阅读 · 0 评论 -
axios响应拦截器 路由导航守卫
通过响应拦截器,我们可以对响应数据进行统一的处理和转换,使其符合前端的需求,并减少重复的数据转换代码。通过路由导航守卫,可以在用户离开页面之前提醒用户保存未提交的表单数据,以防止数据丢失。4. 处理身份验证问题:在某些情况下,当后端返回特定的响应状态码,表示用户的身份验证已过期或无效时,我们可以在响应拦截器中进行相应的处理,例如跳转到登录页面或重新获取身份验证令牌。总之,使用axios响应拦截器可以帮助我们实现统一的错误处理、数据转换和公共逻辑,提高代码的可维护性和复用性,并且方便地处理身份验证等问题。原创 2023-10-13 01:24:31 · 831 阅读 · 0 评论 -
标准化后端向前端传来的Json数据
1,创建一个专门存储数据的类;分别存储响应状态码code,响应数据,传输的消息。3,前端接收后端传来的Json数据。原创 2023-10-12 23:54:11 · 578 阅读 · 0 评论 -
Java前后端交互的一些细节
前端代码需要注意,我们使用的是原生的servlet,前端传给后端的数据是JSON形式,后端无法识别,需要进一步对该数据进行处理才可以传给后端。注意传进来的对象为空说明未在数据库查到拥有该账号的用户,所以需要告诉前端“账号密码不正确”,如果不为空说明有该用户,所以可以登录。最开始置对象为空,如果没有查到该用户直接返回空。原创 2023-10-12 18:05:13 · 558 阅读 · 0 评论 -
Http请求响应 Ajax 过滤器
同步方式 异步方式 Ajax过滤器(Filter)作用:在请求进入到Servlet之前,让请求进入过滤器进行统一处理。例如:可以对编码进行统一处理(请求,响应),可以对权限验证进行统一处理....以对编码处理过滤为例:原创 2023-10-10 22:12:47 · 1023 阅读 · 0 评论 -
一些流程图(自用)
前端一次访问后端程序的请求流程web程序运行流程原创 2023-10-08 11:05:19 · 157 阅读 · 0 评论 -
tomcat安装,创建web后端项目,部署项目过程
conf:配置文件 server.xml (服务器配置文件,一旦修改需重启服务器,为放置端口冲突可修改端口号)3,创建java后端程序,部署到服务器,并且在浏览器访问,创建javaEE项目,在idea集成TomCat。1,安装服务器,使用 Apache免费提供的服务器TomCat,注意JDK版本。启动服务器:bin目录下点击startup.bat,出现小黑框,浏览器默认访问。lib:存放TomCat运行的jar包。关闭服务器:shutdown.bat。2,TomCat目录。原创 2023-10-07 16:25:45 · 377 阅读 · 0 评论