java day18

继续学习,学习sringboot案例;
在这里插入图片描述
熟悉的三件套;比如做一个表,前端搭建好框架,然后返回给后端一个请求,说要这个表的数据吧;然后通过请求和规定的格式返回给后端之后,我们后端进行接收处理然后进行对数据库的操作,进行crud,然后,把数据库操作出来之后,你就可以根据你建立的表去筛查数据返回结果了;然后结果给后端层层封装返回,然后返回给前端;这样前端接收到了之后;就正常返回了,全栈就是全都得写;中间可能要解决跨域问题,还有一个并发量的问题啊,等等等等;

准备工程

每次做一个项目之前的准备工程

在这里插入图片描述
既然要接收前端请求,那就需要接收前端请求的依赖比如web,再一个就是比如后端工程需要调用数据库,那就需要数据库的依赖比如mybatis的依赖 mysql的驱动,再一个就是lombok的一个注解依赖;然后再对应准备所有的三层架构的代码;

中间的过程和包就不用再说了,就是三层架构的基本东西,还有一个如果你写了mapper层的东西,然后他找到了对应的xml文件,那你也可以进行对其的处理;但是有可能识别错误;因为同名,就有可能识别到别的地方去;
再一个是前端项目写完之后,部署就会部署到nginx平台;而后端就部署到tomcat服务器上了;
在这里插入图片描述
在这里插入图片描述
他们是通过接口文档进行响应;一般接口文档是根据产品需求做出来的,而且一般也是由后端人员去编写的;毕竟更多的是在于逻辑,而前端人员可能是会更少的参与其中;

restful接口风格规范

在这里插入图片描述
在这里插入图片描述
意思就是,前后本来就都能用get post,没人会特别规范场景使用,所以我们更好的是可以去了解把这些所有的请求定义成一个规范;比如就是rest风格;传统的开发文档里面的风格是全用get post;现在是定义成 url定位资源,http增删改查描述动作;增post 删delete 改put 查 get
在这里插入图片描述
在这里插入图片描述
返回结果类型;首先呢;需要定义一个返回结果,做成一个类;然后里面就写code响应码啊,msg响应信息啊,字符串啊,data是返回的数据,所以说返回这三个东西,给钱的看成功与否,返回的标题,返回的内容;这样更好分辨;
在这里插入图片描述
这确实就是一个很好的规范了;

在这里插入图片描述
开始做规范;需求文档看完之后再去看接口文档
在这里插入图片描述
然后接口文档里面吧;定义了所有的请求的东西; 相关的东西吧反正都在里面,我们需要跟着进行对照着敲;

这里,在请求路径里面吧,不是原来是可以写值的吗,现在可以进行对请求的限定;比如我们强烈要求,他必须是get或者post类型;比如给他get类型吧;就需要用到一个叫method的关键字,你加入进去之后呢,你就可以进行对请求方法的限定,不然,get请求或者post请求都能访问到,可能不太安全;在requestmapping后,可以增加路径的url,也可以增加方法的限定比如method;这个东西也很顾名思义了;
在这里插入图片描述
为了方便,你也可以直接吧注解名字改了,比如这个是requestmapping吧,可以改成getmapping
在这里插入图片描述
直接用getmapping的注解,可以直接进行限定;这就完全限定住了他必须是get请求下的东西;

他的一整个流程是,先看接口文档里面返回的是什么东西,然后确定自己怎么写, 先去定义一下返回的结果类型,在控制层进行测试返回;然后,开始写sql,一层层去写到mapper层,然后对其进行返回;看一下这个查出来的是个什么东西,然后封装到集合里面,然后就进行返回,既然之前这个接口通了,就直接在这个接口里面写要查询的东西和方法;

1.首先,建立result类,定义返回的结果类型;

package com.example.demo2.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {private Integer code;//响应码,1 代表成功; 0 代表失败private String msg;  //响应信息 描述字符串private Object data; //返回的数据//增删改 成功响应,定义几个方法:public static Result success(){return new Result(1,"success",null);//定义规则,走success方法的时候呢,我们就返回一个Result对象,// 对象里面code=1,msg=success,data=null  先试着调用返回}//查询 成功响应public static Result success(Object data){return new Result(1,"success",data);}//失败响应public static Result error(String msg){return new Result(0,msg,null);}
}

2.其次,定义控制层代码,可以进行对其正常的方法调用;把接口写通;

在这里插入图片描述
记录日志有什么作用;

基本crud

学会基本的crud就可以进入小公司进行实习了;因为毕竟也就是crud;
梳理思路,现在增,删,改,查,以及分页的思路,三层写完,一层层返回,然后一层层向上传递;
再一个就是要封装好统一的类,比如,result类,这个是返回给前端的统一模型;这是一个类,然后就是比如封装一个分页的类,这也是一个返回结果;
比如分页吧:
在这里插入图片描述

梳理一下现在欠缺的东西

1.异常处理、集合框架(List、Set、Map 等)、git,多线程编程以及 IO 流等知识。这些没有细学过,所有有些时候集合定义起来非常的麻烦;包括json序列化;
2.数据库事务、锁机制、存储过程等高级特性。非关系型数据库可以学习 Redis,用于缓存数据、实现分布式锁等场景
3.,Spring AOP(面向切面编程);基于 Spring 的 Spring Boot 框架,它简化了 Spring 应用的搭建和开发过程,能够快速构建独立运行的 Web 应用;另外,Spring Cloud 用于构建微服务架构,涵盖服务注册与发现、负载均衡、熔断器等组件。
4.javaScript 基本写法,包括 DOM 操作、事件处理、异步编程(如 Promise、async/await)等。
5.前端状态管理:当应用变得复杂时,学习 Vuex(针对 Vue.js)或 Redux(针对 React)等状态管理库,方便管理应用的全局状态。

坚持牛客啥的刷题拉满;
再一个是,项目的进度跟不上使用速度,给自己的强度压力不够大,就会少很多东西;用不到的时候,就永远想不起来;简单来说还是联系的太少,

在这里插入图片描述

集合

在这里插入图片描述

import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {// 创建3个User对象User user1 = new User("Alice", 25);//一个user类里面有两个属性,名字和年龄User user2 = new User("Bob", 30);//然后创建了三个对象,相当于3个人User user3 = new User("Charlie", 35);// 使用List集合管理多个User对象List<User> userList = new ArrayList<>();//一个集合吧这个类对应的所有对象管理起来;这些人得到了统一,但是别忘了都是这个类的所以方法是  类型<user> 集合名 = new ArrayList<>();  也就是new一个集合出来,ArrayList就是数组,就是给一个数组类型的集合,分配空间,创建出来;然后这个集合去管理哪个类的对象呢?需要标识;然后就是集合名字;userList.add(user1); // 添加对象userList.add(user2);//用集合名字去添加一个个对象从第一个人加到最后一个人;userList.add(user3);// 遍历集合,批量操作对象,遍历这个人的数组:写法有不同;用这个类,创建一个对象:然后是这个list类型的集合  for (User user : userList) {user.sayHello(); // 调用每个对象的方法}// 统计集合大小System.out.println("总用户数:" + userList.size()); // 输出:居然可以直接用集合名字去输出集合大小;类似遍历了吧就,确实可以理解成数组的遍历,本身就是arraylist里面出来的分支;}
}

在这里插入图片描述

关于项目请求:
在这里插入图片描述
首先每个控制层最好都要有输出数据;首先是log.info的这种记录日志,本身他是有那种需要先创建对象的;他现在有了一个注解@slf4j后,就不用再创建对象了;可以直接就入

nacos

简单将nacos理解成所有配置的配置中心则可,就比如之前的mysql的数据库配置啊还是什么的;
在这里插入图片描述

箭头函数;
比如我写一个方法定义;
const 方法名字 = (参数)=>{函数体就行} 就这么记忆,比如一个参数就记得要加等号,再来一个方法体的时候就记得要加=>和{}

最近遇到个问题首先:有个下拉框的加载类似这种的问题存在;他比如

最近的公司基本上就是crud的集合,然后再公司直接学习也不太好,之前看了一次视频被骂了0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
哎,只能自己回去学;好没动力,疲惫;准备辞职!现在学的还远远不够,基本上不让你做核心业务;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921875.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并发编程原理与实战(二十八)深入无锁并发演进,AtomicInteger核心API详解与典型场景举例

无锁并发演进背景 随着系统高并发的压力越来越大&#xff0c;传统同步机制在高并发场景下的性能瓶颈和缺点可能会逐渐显露&#xff1a; &#xff08;1&#xff09;性能损耗&#xff1a;synchronized等锁机制会导致线程阻塞和上下文切换&#xff0c;在高并发场景下性能损耗显著。…

整体设计 之 绪 思维导图引擎 之 引 认知系统 之 引 认知系统 之 序 认知元架构 之5 : Class 的uml profile(豆包助手 之7)

摘要&#xff08;AI生成&#xff09;三层中间件架构的约束逻辑体系1. 架构定位与功能分工三个中间层&#xff08;隔离层/隐藏层/防腐层&#xff09;构成数据处理管道&#xff0c;分别承担&#xff1a;隔离层&#xff1a;跨系统数据转换处理对象&#xff1a;异构数据&#xff08…

iframe引入界面有el-date-picker日期框,点击出现闪退问题处理

前言&#xff1a;iframe引入界面有el-date-picker日期框&#xff0c;点击出现闪退问题处理。问题情况&#xff1a;点击开始日期的输入部分&#xff0c;会出现闪退情况&#xff0c;该组件是iframe调用的内容问题分析&#xff1a;事件冒泡&#xff0c;点击与聚焦的时候&#xff0…

docker 拉取本地镜像

要在Docker中拉取本地镜像&#xff0c;通常有以下几种实现方法&#xff1a; 使用docker pull命令&#xff1a;可以使用docker pull命令从本地镜像仓库拉取镜像。例如&#xff0c;如果本地镜像的名称是my-image&#xff0c;则可以运行以下命令拉取镜像&#xff1a; docker pull …

嘉立创EDA从原理图框选住器件进行PCB布局

1、先选中需要布局的模块的相关器件2、设计-》布局传递3、在PCB会选中模块相关的元器件&#xff0c;拖动进行布局4、依次将每个模块都分类出来5、板框设计&#xff1a;如果有要求大小&#xff0c;可以先将单位设置为mm&#xff0c;然后画出来板框的尺寸

http接口幂等性

实现 HTTP 接口的幂等性是确保多次相同请求产生相同结果的重要设计原则&#xff0c;尤其在网络不稳定或分布式系统中非常关键。以下是几种常见的实现方式&#xff1a;1. 基于幂等性令牌&#xff08;Token&#xff09;的实现适合支付、订单创建等场景&#xff0c;步骤如下&#…

【华为OD】贪吃的猴子

文章目录【华为OD】贪吃的猴子题目描述输入描述输出描述示例示例一示例二解题思路解法一&#xff1a;前缀和枚举法Java实现Python实现C实现解法二&#xff1a;滑动窗口法Java实现Python实现C实现解法三&#xff1a;优化的动态规划法Java实现Python实现C实现算法复杂度分析解法一…

Flie ,IO流(一)

一.File&#xff0c;IO流概述二.File文件1.File文件对象的创建&#xff08;路径&#xff1a;&#xff09;2.常用方法1:判断文件类型、获取文件信息&#xff08;注意&#xff1a;&#xff09;3.常用方法2:创建文件、删除文件&#xff08;creatNewFile&#xff08;&#xff09;会…

第2讲 机器学习 - 导论

我们正处在一个"数据时代"&#xff0c;更强的计算能力和更丰富的存储资源使数据总量与日俱增。然而真正的挑战在于如何从海量数据中提取价值。企业与组织正通过数据科学、数据挖掘和机器学习的技术体系构建智能系统应对这一挑战。其中&#xff0c;机器学习已成为计算…

如何解决pip安装报错ModuleNotFoundError: No module named ‘python-dateutil’问题

【Python系列Bug修复PyCharm控制台pip install报错】如何解决pip安装报错ModuleNotFoundError: No module named ‘python-dateutil’问题 摘要 在日常 Python 开发过程中&#xff0c;我们经常会遇到各种 pip install 的报错&#xff0c;尤其是在 PyCharm 2025 控制台环境下&…

GitHub Pages 部署

地址&#xff1a;https://github.com/ 参考&#xff1a;https://blog.csdn.net/qq_45802269/article/details/127310952?ops_request_misc&request_id&biz_id102&utm_term%E5%9F%BA%E4%BA%8Egithub%E5%B9%B3%E5%8F%B0%EF%BC%8C%E5%8F%91%E5%B8%83vue%E9%A1%B9%E7%…

redis分布式锁为什么采用Lua脚本实现。而不是事务

Redis 分布式锁使用 Lua 脚本而非事务&#xff0c;核心原因是 Lua 脚本能保证分布式锁操作的 “原子性” 和 “灵活性”&#xff0c;而 Redis 事务在某些场景下无法满足分布式锁的核心需求。一、Redis事务的局限性redis分布式锁的核心是先判断自己是否持有锁&#xff0c;然后在…

Flutter之riverpod状态管理Widget UI详解

一、riverpod状态管理中所涉及到的widget UI组件对比分析UI 组件状态类型语法形式特点ConsumerWidget有状态无状态形式最常用&#xff0c;通过WidgetRef访问provider&#xff0c;所谓无状态&#xff0c;是指ConsumerWidegt不像StatefulWidegt那样创建state,在它内部不可以定义状…

什么是测试

文章目录软件测试是干什么的&#xff1f;软件测试开发工程师是干什么的&#xff1f;测试工程师是干什么的&#xff1f;软件测试开发工程师和测试工程师的区别效率工具能不能替代测试人员&#xff1f;测开人员的上手路线找工作/实习的时候怎么确定自己找的是测开还是测试呢&…

搭建分片集群

主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决&#xff1a;海量数据存储问题高并发写的问题使用分片集群可以解决上述问题&#xff0c;如图:分片集群特征&#xff1a;集群中有多个master&#xff0c;每个master保存不同数据每个master都可以有多个sla…

在ubuntu系统中如何将docker安装在指定目录

在 Ubuntu 系统中&#xff0c;Docker 默认安装路径&#xff08;程序文件&#xff09;通常在/usr/bin等系统目录&#xff0c;而核心数据&#xff08;镜像、容器、卷等&#xff09;默认存储在/var/lib/docker。若需将数据目录指定到其他位置&#xff08;这是更常见的需求&#xf…

服务器都是用的iis, 前端部署后报跨域,不是用同一个服务器 是前端项目的服务器做Nginx转发,还是后端项目的服务器做Nginx转发?

当服务器环境为 IIS&#xff08;而非 Nginx&#xff09;&#xff0c;且前端、后端部署在不同服务器导致跨域时&#xff0c;核心思路与 Nginx 场景一致&#xff0c;但实现工具从「Nginx」替换为「IIS 配置」。此时依然存在 “后端服务器配置跨域头” 和 “前端服务器配置反向代理…

【大前端】前端生成二维码

前端生成二维码有很多方法&#xff0c;常见的做法是使用 JavaScript 库 来生成二维码。下面整理几种常用方案&#xff0c;并附示例代码。1️⃣ 使用 qrcode 库&#xff08;推荐&#xff09;qrcode 是一个非常流行的前端 JS 库&#xff0c;可以生成 Canvas 或者 SVG 的二维码。安…

LeetCode 刷题【71. 简化路径】

71. 简化路径 自己做 解&#xff1a;遍历检查 class Solution { public:string simplifyPath(string path) {int p 0;string res;while(p < (int)path.size()){//情况1&#xff1a;遇到"/./" 》p跳过"/."if(p < (int)path.size() - 2 && p…

《算法闯关指南:优选算法-双指针》--01移动零,02复写零

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a;《C知识分享》《Linux 入门到实践&#xff1a;零基础也能懂》《数据结构与算法》《测试开发实战指南》《算法题闯关指南》 ⭐️人生格言&am…