仿牛客网开发笔记

用到Spring的 一些 核心技术

1 Spring Framework

  • Spring Core
    • IOC 、AOP    ==>  管理对象的一种思想
      • IOC  ==> 面向对象的管理思想
      • AOP  ==> 面向切面的管理思想
  • Spring Data Access   ==》访问数据库的功能
    • Transaction、Spring MyBatis
      • Transaction  ==》管理事务
      • Spring MyBatis  ==> 整合MyBatis
        • 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 master

No 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Centos上安装Harbor并使用

harbor的安装与使用 Harbor介绍安装前的准备工作为Harbor自签发证书安装Harbor安装docker开启包转发功能和修改内核参数安装harbor扩展 Harbor 图像化界面使用说明测试使用harbor私有镜像仓库从harbor仓库下载镜像 Harbor介绍 容器应用的开发和运行离不开可靠的 镜像管理&…

探索超净实验室:高纯电子级PFA洗瓶特氟龙材质清洗瓶的特性

PFA洗瓶&#xff0c;实验中常用的清洗工具之一&#xff0c;是一个带有弯曲管状喷嘴的柔性瓶子&#xff0c;因此可以用手挤压瓶身以产生压力&#xff0c;迫使瓶内液体通过塑料管以单滴或窄流的形式流到需要清洁的表面。 ​ 由于需要多次挤压&#xff0c;瓶体要有良好的回弹性和…

动态规划——斐波那契问题(Java)

目录 什么是动态规划&#xff1f; 练习 练习1&#xff1a;斐波那契数 练习2&#xff1a;三步问题 练习3&#xff1a;使用最小花费爬楼梯 练习4&#xff1a;解码方法 什么是动态规划&#xff1f; 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;&…

关于VS项目无法找到源文件或者,代码更改项目却不更改的问题

Studio\workShop\......\obj\Debug\net6.0\GraduationProjectEX.Shared.AssemblyInfo.cs”。 像上面这个&#xff0c;说无法找到源文件&#xff0c;然后我去目录找&#xff0c;果然是没有的&#xff0c;我的是依赖方面的错误&#xff0c;莫名其妙&#xff0c;因为我更改了项目…

超快的 AI 实时语音转文字,比 OpenAI 的 Whisper 快4倍 -- 开源项目 Faster Whisper

faster-whisper 这个项目是基于 OpenAI whisper 的模型&#xff0c;在上面的一个重写。 使用的是 CTranslate2 的这样的一个库&#xff0c;CTranslate2 是用于 Transformer 模型的一个快速推理引擎。 在相同精度的情况下&#xff0c;faster-whisper 的速度比 OpenAI whisper …

鸿蒙Harmony应用开发—ArkTS-if/else:条件渲染

ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态&#xff0c;使用if、else和else if渲染对应状态下的UI内容。 说明&#xff1a; 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 使用规则 支持if、else和else if语句。 if、else if后跟随的条件语句…

心脏滴血漏洞详解(CVE-2014-0160)

参考链接&#xff1a;心脏滴血漏洞利用&#xff08;CVE-2014-0160&#xff09;_cve-2014-0160漏洞禁用443端口-CSDN博客 目录 OpenSSL简介 漏洞原理 影响版本 漏洞复现 漏洞利用 修复方案 OpenSSL简介 OpenSSL是一个开放源代码的软件库包&#xff0c;提供了一组加密和认…

【leetcode热题】 位1的个数

编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 1 的个数&#xff08;也被称为汉明重量&#xff09;。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;如 Java&#xff09;中…

【算法】回溯与深搜

方法论 1.构建决策树 2.设计代码&#xff1a;全局变量、dfs函数 3.剪枝&#xff0c;回溯 全排列 给定一个不含重复数字的整数数组 nums &#xff0c;返回其 所有可能的全排列 。可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff…

探索超融合服务器:是否助力企业飞跃数字化挑战?

在数字化不断深化的今天&#xff0c;企业面临着前所未有的转型压力和机遇。IT基础设施作为支撑企业运营的重要基石&#xff0c;其性能、效率及可管理性都直接关系到企业的竞争力。超融合服务器作为一种创新的IT架构&#xff0c;被许多业内专家视为应对现代业务挑战的有效手段。…

移动硬盘变NTFS无法访问:原因分析与数据恢复全攻略

一、遭遇困境&#xff1a;移动硬盘变NTFS打不开 在日常的数据存储与传输中&#xff0c;移动硬盘无疑是我们的得力助手。然而&#xff0c;当移动硬盘突然显示NTFS格式且无法打开时&#xff0c;这无疑给我们带来了巨大的困扰。面对这种突发情况&#xff0c;许多用户会感到焦虑和…

⾃定义类型:结构体

目录 1. 结构体类型的声明 1.1 结构体回顾 1.1.1 结构的声明 1.1.2 结构体变量的创建和初始化 1.2 结构的特殊声明 1.3 结构的⾃引⽤ 2. 结构体内存对⻬ 2.1 对⻬规则 2.2 为什么存在内存对⻬? 2.3 修改默认对⻬数 3. 结构体传参 4. 结构体实现位段 4.1 什么是位段…

二进制王国(蓝桥杯备赛)【sort/cmp的灵活应用】

二进制王国 题目链接 https://www.lanqiao.cn/problems/17035/learning/?contest_id177 题目描述 思路 这里就要灵活理解字典序排列&#xff0c;虽然string内置可以直接比较字符串字典序&#xff0c;但是在拼接时比较特殊&#xff0c;比如 11的字典序小于110&#xff0c;但…

故障诊断模型 | 基于图卷积网络的轴承故障诊断

文章目录 文章概述模型描述模型描述参考资料文章概述 故障诊断模型 | 基于图卷积网络的轴承故障诊断 模型描述 针对基于图卷积网络(GCN)的故障诊断方法大多默认节点间的权重相同、导致诊断精度较低与鲁棒性较差的问题,提出了一种基于欧式距离和余弦距离的 GCN 故障诊断方法…

HCIP实验02

实验步骤 1、R1和R2使用ppp链路之连&#xff0c;R2和R3把2条ppp链路捆绑为ppp直连 [R2]int Mp-group 0/0/0 [R2]int Serial 3/0/1 [R2-Serial3/0/1]ppp mp Mp-group 0/0/0 [R2-Serial3/0/1]int Serial 4/0/0 [R2-Serial4/0/0]ppp mp Mp-group 0/0/0 [R3]int Mp-group 0/0/…

代码随想录算法训练营 DAY 17 | 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和

110.平衡二叉树 平衡二叉树的定义&#xff1a;任何节点的左右子树高度差绝对值不超过1 空树也是AVL! 确定遍历顺序&#xff1a; 求高度用后序&#xff0c;求深度用前序。&#xff08;取决于需不需要从下往上返回结果&#xff09; 先判断它是不是平衡二叉树 如果是就返回 如…

MT2191 整数大小比较(高精度)

给出两个正整数&#xff0c;判断他们的大小。 输入格式&#xff1a; 两个正整数。 输出格式&#xff1a; 若前者大&#xff0c;输出>&#xff1b; 若后者大&#xff0c;输出<&#xff1b; 若一样大&#xff0c;输出。 输入&#xff1a; 1412894619244619891 23762842…

G1垃圾回收器深入探索——卡表、记忆集和SATB算法

G1垃圾回收器&#xff0c;我们常常会提到里面的分区和垃圾回收算法&#xff0c;这次我们撇开表层&#xff0c;仔细看看里面的三个核心组成部分及其原理。 Card Table&#xff08;卡表&#xff09; 在进行YoungGC时&#xff0c;我们会判断一个对象是否被引用&#xff0c;但这个过…

软考复习笔记day3(计算机体系结构和指令系统基础)(精简版)

计算机体系结构分类 处理机数量分类&#xff1a; 单处理&#xff08;一个处理单元&#xff09;并行处理系统&#xff08;两个以上处理机互联&#xff09;.分布式处理系统 Flynn分类&#xff1a;&#xff08;常考&#xff09; 以指令流和数据流进行区别 指令流由控制部分进…

Keepalive与idle监测及性能优化

Keepalive 与 idle监测 Keepalive&#xff08;保活&#xff09;: Keepalive 是一种机制&#xff0c;通常用于TCP/IP网络。它的目的是确保连接双方都知道对方仍然存在并且连接是活动的。这是通过定期发送控制消息&#xff08;称为keepalive消息&#xff09;实现的。如果在预定时…