用到Spring的 一些 核心技术
1 Spring Framework
- Spring Core
- IOC 、AOP ==> 管理对象的一种思想
- IOC ==> 面向对象的管理思想
- AOP ==> 面向切面的管理思想
- IOC ==> 面向对象的管理思想
- IOC 、AOP ==> 管理对象的一种思想
- Spring Data Access ==》访问数据库的功能
- Transaction、Spring MyBatis
- Transaction ==》管理事务
- Spring MyBatis ==> 整合MyBatis
- myBatis是访问数据库的一种框架
- Transaction、Spring MyBatis
- Web Servlet ==>用于Web 开发
- Spring MVC
- Integration
- Email、Scheduling、AMQP、Security
2 Http (HyperText Transfer Protocal)
==》 超文本传输协议
what
用于 传输 HTML 等有关内容的 应用层协议
规定了 浏览器和服务器 之间 如何通信 + 以及通信时 的数据格式
详细信息网址:https//developer.mozilla.org/zh-CN
Http 流
客户端与服务端进行通信(信息交互)的步骤
1. 建立一条 tcp 连接
客户端 可能打开 一条新的连接、 or 几个新的TCP连接、 or 重用已经存在的连接 连向 服务端
2.发送一个 http 报文
客户端 发送 HTTP报文 到服务端
HTTP报文 (在HTTP/2 之前)是语义可读的
GET / HTTP/1.1
Host: developer.mozilla.org
Accept-Language: zh
HTTP/2 这些简单的消息 被封装到了 帧中 (这使得报文不能被直接读取,原理是相同的)
3. 读取服务端 返回的 报文消息
HTTP/1.1 200 OK
Date: Sat, 09 Oct 2010 14:28:02 GMT
Server: Apache
Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
ETag: "51142bc1-7449-479b075b2891b"
Accept-Ranges: bytes
Content-Length: 29769
Content-Type: text/html
4. 关闭连接 或者 为后续请求重用连接
当启用 HTTP 流水线时,后续请求都可以直接发送,而不用等待第一个响应被全部接收。然而 HTTP 流水线已被证明很难在现有的网络中实现,因为现有网络中有老旧的软件与现代版本的软件同时存在。因此,HTTP 流水线已在 HTTP/2 中被更健壮、使用帧的多路复用请求所取代。
3.Spring MVC
- 三层架构
- - 表现层 、 业务层 、 数据访问层
- MVC ==> 设计模式 ,将复杂的代码分为三个层次
- - Model: 模型层
- - View:视图层
- - Controller:控制层
- 核心组件
- -前端控制器:DispatcherServlet
4.MyBatis
- 核心组件
- sqlSessionFactory : 用于创建SqlSession的工厂类(spring整合了!)
- SqlSession:Mybatis的核心组件,用于向数据库执行SQL(spring整合了!)
- 主配置文件:XML配置文件,可以对MyBatis的底层做出更详细的配置(spring整合了!)
- Mapper接口:DAO接口
- Mapper映射器: 用于编写SQL,并将SQL和实体类映射的组件,采用XML、注解均可实现
- 示例
- 使用MyBatis对用户表进行CRUD操作
7 项目调试的方法与技巧
1.响应状态码的含义
200 ok 请求成功
3开头 ==》重定向 ==》以一个低耦合的方式 进行资源跳转 (注册-》登录)
302 found 请求的资源现在从不同的URL响应请求
4开头 ==》客户端 响应错误
404 Not found 向服务器请求的功能不存在
常见的可能情况:
1.地址栏 or 超链接的 url写错了
2.表单配置出错
5 开头 ==》 服务端 响应错误
500 : 服务器 遇到了 不知道如何处理的情况
处理方法:检查服务端程序
2.服务端断点调试技巧
3.客户端断点调试技巧
4.设置日志级别,并将日志输出到不同的终端
https://logback.qos.ch
Logger rootLogger = LoggerFactory.getLogger(org.slf4j.Logger.ROOT_LOGGER_NAME);
package org.slf4j;
public interface Logger {
// Printing methods:
//跟踪 级别
public void trace(String message);
//调试 级别
public void debug(String message);
//调度 级别
public void info(String message);
public void warn(String message);
public void error(String message);
}
8.版本控制
PS C:\Desktop\软件开发\项目\miao_backend\demo-dev> git config --list
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
core.autocrlf=true...
PS C:\Desktop\软件开发\项目\niuke_coder\community> git init
Initialized empty Git repository in C:/Desktop/软件开发/项目/niuke_coder/community/.git/
PS C:\Desktop\软件开发\项目\niuke_coder\community> git status
On branch masterNo commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
.gitignore
.mvn/
log/
mvnw
mvnw.cmd
pom.xml
src/
文件临时添加到了本地仓库
PS C:\Desktop\软件开发\项目\niuke_coder\community> git add *
warning: in the working copy of '.gitignore', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of '.mvn/wrapper/maven-wrapper.properties', LF will be replaced by CRLF the next time Git touches it
warning: in the working copy of 'mvnw', LF will be replaced by CRLF the next time Git touches it
PS C:\Desktop\软件开发\项目\niuke_coder\community> git commit -m '仿牛客首次提交'
[master (root-commit) 4341e7a] 仿牛客首次提交
69 files changed, 6729 insertions(+)
create mode 100644 .gitignore
create mode 100644 .mvn/wrapper/maven-wrapper.jar
create mode 100644 .mvn/wrapper/maven-wrapper.properties
//连接远程仓库 之 创建rsa 密钥
PS C:\Desktop\软件开发\项目\niuke_coder\community> ssh-keygen -t rsa -C "isyi@126.com";
Generating public/private rsa key pair.//添加 ssh密钥,并新建对应仓库
PS C:\Desktop\软件开发\项目\niuke_coder\community> git remote add origin https://github.com/IsYlPaoCoin/Like_Niuke_Community.git
PS C:\Desktop\软件开发\项目\niuke_coder\community> git push -u origin main