当前位置: 首页 > news >正文

SSM--SpringMVC复习(二)

请求 URL匹配: @RequestMapping

@RequestMapping 负责将请求映射到对应的控制器方法上。

@RequestMapping 注解可用于类或方法上。用于类上,表示类中的所有响应请求的方法都以该地址作为父路径。

在整个 Web 项目中,@RequestMapping 映射的请求信息必须保证全局唯一。

@RequestMapping 注解常用属性

value

@RequestMapping 注解的默认属性,如果只有 value 属性时,可以省略该属性名,如果有其它属性,则必须写上 value 属性名称。

// 斜杠可省略
@RequestMapping(value="/login")
@RequestMapping("/login")

value 属性支持通配符匹配,如 value="user/*" 表示 user/1user/login 都能够正常访问。

path

用法同 value。

name

用来添加描述信息,相当于方法注释。如 @RequestMapping(value = "/login",name = "用户登录")

method

method 属性用于表示该方法支持哪些 HTTP 请求。省略 method 则说明该方法支持全部的 HTTP 请求。

//表示该方法只支持 GET 请求
@RequestMapping(value = "login",method = RequestMethod.GET)
//说明该方法同时支持 GET 和 POST 请求
@RequestMapping(value = "login",method = {RequestMethod.GET,RequestMethod.POST})

params

用于指定请求中规定的参数 。

//请求中必须包含 type 参数时才能执行该请求,即 /login?type=x 可访问该方法,/login 则无法访问该方法。
@RequestMapping(value = "login",params = "type")
public String doLogin() {return "/test.jsp";
}
​
//请求中必须包含 type 参数且值为1时才能执行该请求,否则无法访问
@RequestMapping(value = "login",params = "type=1")
public String doLogin() {return "/test.jsp";
}

header

表示请求中必须包含某些指定的 header 值。

consumes

用于指定请求提交内容类型(Content-Type),例如:application/json、text/html。

@RequestMapping(value = "login",consumes = "application/json")

produces

用于指定返回的内容类型,返回的内容类型必须是 request 请求头(Accept)中所包含的类型。 除此之外,还可以指定返回值的编码。

// 指定返回内容类型
@RequestMapping(value = "login", produces = "application/json")
// 指定返回内容类型,同时指定返回值编码
@RequestMapping(value = "login",produces = "application/json,charset=utf-8") 

请求参数获取

Spring MVC Controller 接收请求参数的方式有很多种,有的适合 get 请求方式,有的适合 post 请求方式,有的两者都适合。主要有以下几种方式:

  • 通过处理方法的简单形参接收请求参数

  • 通过实体 Bean 接收请求参数

  • 通过 HttpServletRequest 接收请求参数

  • 通过 @RequestParam 接收请求参数

  • 通过 @PathVariable 接收 URL 中的请求参数

通过处理方法的简单形参接收请求参数

通过方法形参接收请求参数,是根据请求参数名和方法形参名相同原则进行赋值。该接收参数方式适用于 get 和 post 提交请求方式。

@RequestMapping("/login")
public String doLogin(String username,String pwd){return "/show.jsp"; //请求转发
}

通过实体Bean接收请求参数

实体 Bean 接收请求参数适用于 get 和 post 提交请求方式。Bean 的属性名称必须与请求参数名称相同。请求参数按同名原则,赋值给 Bean 的属性。如果 Bean 中的属性是 数字类型,则 SpringMVC 会自动尝试参数类型的转换。

@RequestMapping("/login")
public String doLogin(User user){return "/show.jsp"; //请求转发
}

通过HttpServletRequest接收请求参数

@RequestMapping("/login")
public String doLogin(HttpServletRequest request){String name = request.getParameter("username");String pwd = request.getParameter("pwd");return "/show.jsp"; //请求转发
}

通过@RequestParam接收请求参数

@RequestParam 有以下三个参数:

  • value | name:参数名

  • required:是否必须,默认为 true,表示请求中必须包含对应的参数名,若不存在将抛出异常

  • defaultValue:参数默认值

@RequestMapping("/login")
public String doLogin(@RequestParam(name = "name",defaultValue = "admin")String username, @RequestParam String pwd){return "/show.jsp"; //请求转发
}

通过@PathVariable接收URL中的请求参数

/*访问 /login/admin/123456, URL中的模板变量 {name} 和 {pwd} 将值 admin 和 123456 绑定到通过 @PathVariable 注解的参数 username 和 pwd 上。
*/
@RequestMapping("/login/{name}/{pwd}")
public String doLogin(@PathVariable("name") String username, @PathVariable String pwd){return "/show.jsp"; //请求转发
}

请求转发和重定向

请求转发

  • 方式 1

    @RequestMapping("/login")
    public String doLogin(){return "/show.jsp"; 
    }
  • 方式 2

    @RequestMapping("/login")
    public String doLogin(){return "forward:/show.jsp"; 
    }
  • 方式3

    @RequestMapping("/login")
    public ModelAndView doLogin(){ModelAndView mv = new ModelAndView("/show.jsp");return mv;
    }
  • 方式4

    @RequestMapping("/login")
    public void doLogin(HttpServletRequest request, HttpServletResponse response){request.getRequestDispatcher("show.jsp").forward(request,response);
    }

重定向

  • 方式1

    @RequestMapping("/login")
    public String doLogin(){return "redirect:/show.jsp"; 
    }
  • 方式2

    @RequestMapping("/login")
    public void doLogin(HttpServletResponse response){response.sendRedirect("/demo/show.jsp");
    }

传值到View

  • 方式1

    // 将放在 model 中的属性 m2 的作用域设置为 session 范围
    @SessionAttributes("m2")  
    public class LoginController {@RequestMapping("/login")public String doLogin(Model model){model.addAttribute("m1","info");        //requestmodel.addAttribute("m2","info2");       //sessionreturn "forward:/show.jsp"; }
    }
  • 方式2

    @RequestMapping("/login")
    public ModelAndView doLogin(){ModelAndView mv = new ModelAndView();mv.setViewName("/show.jsp");mv.addObject("m","info");return mv;
    }
  • 方式3

    @RequestMapping("/login")
    public String doLogin(HttpServletRequest request,HttpSession session){request.setAttribute("m1","info");      //requestsession.setAttribute("m2","info2");     //sessionreturn "forward:/show.jsp"; 
    }
  • 方式4

    @ModelAttribute 注解用于将其修饰的对象自动暴露为模型数据,在视图页面展示时使用。

    @RequestMapping("/login")
    //等价于 model.addAttribute("user",user)
    public String doLogin(@ModelAttribute("user") User user){return "/show.jsp";
    }
    ​
    @RequestMapping("/login")
    //等价于 model.addAttribute("User",yh)
    public String doLogin(@ModelAttribute User yh){return "/show.jsp";
    }

Ajax 响应

@Controller

@Controller
public class LoginController {@RequestMapping("/login")@ResponseBody       // 响应 Ajax 请求,必须添加此注解public Student doLogin(String name,String pwd){User user = userService.selectUser(name,pwd);return user;    // 返回到 view 的数据会自动转为 json(js) 对象}
}

@RestController

@RestController = @Controller+@ResponseBody

@RestController
public class LoginController {@RequestMapping("/login")public User login(String name,String pwd) {User user = userService.selectUser(name,pwd);return user;}
}

视图资源解析器

视图解析器(ViewResolver)是 Spring MVC 的重要组成部分,负责将逻辑视图名解析为具体的视图对象。

URLBasedViewResolver

UrlBasedViewResolver 是对 ViewResolver 的一种简单实现,主要提供了一种拼接 URL 的方式来解析视图。

UrlBasedViewResolver 通过 prefix 属性指定前缀,suffix 属性指定后缀。当 ModelAndView 对象返回具体的 View 名称时,它会将前缀 prefix 和后缀 suffix 与具体的视图名称拼接,得到一个视图资源文件的具体加载路径,从而加载真正的视图文件并反馈给用户。

使用 UrlBasedViewResolver 除了要配置前缀和后缀属性之外,还需要配置“viewClass”,表示解析成哪种视图。

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">            <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceViewResolver"/><!--不能省略--><!--前缀--><property name="prefix" value="/WEB-INF/jsp/"/><!--后缀--><property name="suffix" value=".jsp"/>  </bean>

 存放在 /WEB-INF/ 目录下的内容不能直接请求到,为了安全性考虑,通常把 jsp 文件放在 WEB-INF 目录下 

InternalResourceViewResolver

InternalResourceViewResolver 为“内部资源视图解析器”,是日常开发中最常用的视图解析器类型。它是 URLBasedViewResolver 的子类,拥有 URLBasedViewResolver 的一切特性。

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!--前缀--><property name="prefix" value="/WEB-INF/jsp/"/><!--后缀--><property name="suffix" value=".jsp"/>  
</bean>

相关文章:

SSM--SpringMVC复习(二)

请求 URL匹配&#xff1a; RequestMapping RequestMapping 负责将请求映射到对应的控制器方法上。 RequestMapping 注解可用于类或方法上。用于类上&#xff0c;表示类中的所有响应请求的方法都以该地址作为父路径。 在整个 Web 项目中&#xff0c;RequestMapping 映射的请求…...

Oracle 11gR2 坏块修复实例一则

背景 前段时间在 Oracle 11gR2 数据库中发现了坏块问题。环境是 64 位 Linux 平台。本文将详细介绍如何使用 DBMS_REPAIR 进行在线修复&#xff0c;当然也可以基于备份和 RMAN 的修复方法这里暂时不做介绍。 发现坏块 1. 从 alert.log 中发现错误 在 alert.log 文件中发现了…...

使用 Docker Compose 来编排部署LMTNR项目

使用 Docker Compose 来部署一个包含 Linux、MySQL、Tomcat、Nginx 和 Redis 的完整项目的例子。假设我们要部署一个简单的 Java Web 应用&#xff0c;并且使用 Nginx 作为反向代理服务器。 项目目录结构 首先需要确保 Docker 和docker-compose已经安装并正在运行。docker --v…...

el-table 根据屏幕大小 动态调整max-height 的值

<template><div><p>窗口高度&#xff1a;{{ windowHeight }} px</p></div> </template><script> export default {data() {return {// 下面的 -250 表示减去一些表单元素高度 这个值需要自己手动调整windowHeight: document.docume…...

el-cascader 使用笔记

1.效果 2.官网 https://element.eleme.cn/#/zh-CN/component/cascader 3.动态加载&#xff08;官网&#xff09; <el-cascader :props"props"></el-cascader><script>let id 0;export default {data() {return {props: {lazy: true,lazyLoad (…...

Cookie概念和API

Cookie概念 Cookie在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的&#xff0c;随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来&#xff0c;当下一次再访问服务器时把Cookie再发送给服务器。 Cookie是由服务器…...

Linux服务器安装mongodb

因为项目需要做评论功能&#xff0c;领导要求使用mongodb&#xff0c;所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo &#xff08;默认拉取最新的镜像&#xff09; 如果你想指定版本可以这样 docker pull mongo:4.4&#…...

32.4 prometheus存储磁盘数据结构和存储参数

本节重点介绍 : prometheus存储磁盘数据结构介绍 indexchunkshead chunksTombstoneswal prometheus对block进行定时压实 compactprometheus 查看支持的存储参数 prometheus存储示意图 内存和disk之间的纽带 wal WAL目录中包含了多个连续编号的且大小为128M的文件&#xff0c…...

两个生活中的例子反向理解正/反向代理?

正向代理 场景&#xff1a;你在学校里想访问一个被限制的网站&#xff0c;比如某个社交媒体平台。 操作方式&#xff1a; 你把访问请求发送给学校的代理服务器&#xff08;正向代理&#xff09;。代理服务器代表你向互联网发出请求&#xff0c;去访问那个受限的网站。网站的响…...

数据结构-线性表

数据结构-线性表 线性表的任意元素存放地址&#xff1a;Ai a1 L *(i-1) 当i0 则 Aia0L*i 少了一次计算 按照计算方法&#xff0c;当下标为0&#xff0c;可以少执行一次减法&#xff0c;这也是c数组下标取0的原因。 无论n多大都是一个固定时间称之为O(1) 时间复杂度 顺序表的运…...

Python酷库之旅-第三方库Pandas(245)

目录 一、用法精讲 1156、pandas.tseries.offsets.MonthEnd.is_month_start方法 1156-1、语法 1156-2、参数 1156-3、功能 1156-4、返回值 1156-5、说明 1156-6、用法 1156-6-1、数据准备 1156-6-2、代码示例 1156-6-3、结果输出 1157、pandas.tseries.offsets.Mon…...

贵阳思普信息技术有限公司 OA系统 apilogin 接口存在SQL注入漏洞风险

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

重学 Android 自定义 View 系列(九):侧边字母选择器

前言 本文来实现一个侧边字母选择器&#xff0c;很常见的一个控件&#xff0c;和上篇文章星星评分用到的关键技术点类似&#xff0c;难度不大&#xff0c;本篇再来温故知新一下。 最终效果如下&#xff1a; 1. 效果分析 每个字母被均匀分布在整个控件区域中&#xff1b;触摸…...

网络原理->DNS协议和NAT协议解

前言 大家好我是小帅&#xff0c;今天我们来了解应用层的DNS协议和NAT技术 个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G 文章目录 1.重要应⽤层协议DNS(Domain Name System)1.1 DNS背景 2. NAT技术3. 总结 1.重要应⽤层协议DNS(Domain Name System) DNS是⼀整套从域…...

亚马逊开发视频人工智能模型,The Information 报道

根据《The Information》周三的报道&#xff0c;电子商务巨头亚马逊&#xff08;AMZN&#xff09;已开发出一种新的生成式人工智能&#xff08;AI&#xff09;&#xff0c;不仅能处理文本&#xff0c;还能处理图片和视频&#xff0c;从而减少对人工智能初创公司Anthropic的依赖…...

【JS】React与Vue的异步编程对比:深度解析与实战案例全面指南

文章目录 前言更多实用工具React与Vue概述ReactVue 异步编程基础回调函数PromiseAsync/Await React中的异步编程使用Axios进行数据请求异步操作与组件生命周期React Hooks中的异步处理 Vue中的异步编程使用Axios进行数据请求异步操作与Vue生命周期Vue Composition API中的异步处…...

CTF-WEB: 2024强网杯青少年专项赛 ezFindShell writeup

打开直接下载www.zip 通过百度网盘分享的文件&#xff1a;ezFindShell.zip 链接&#xff1a;https://pan.baidu.com/s/1JQjOk-qxaOf0s4f3Fgww7w?pwd1111 提取码&#xff1a;1111 --来自百度网盘超级会员V2的分享使用阿里webshell进行检测,找到可利用文件,或者直接全全局搜索…...

docker网络配置

文章目录 前言一、docker网络访问原理二、docker配置多台机器可以相互访问三、高级网络配置四、最佳实践总结前言 在当今的软件开发和运维领域,Docker 已经成为了容器化服务的标准之一。它不仅简化了应用的部署过程,还大大提高了资源利用率。然而,随着Docker应用的深入,网…...

AI生成的一个.netcore 经典后端架构

下面是一个完整的 .NET Core 后端项目示例&#xff0c;使用 Dapper 作为轻量级 ORM 访问 Oracle 数据库&#xff0c;并实现高性能架构。我们将实现学生表、课程表、成绩表和班级表的基本增删改查功能&#xff0c;以及查询某个班级学生成绩的功能&#xff0c;并使用自定义缓存来…...

docker学习的初识

一、docker官方安装地址: 根据官网找对应的环境,相关的安装命令自行官网不在累赘; 查看Docker的版本号:docker -v Docker version 27.3.1, build ce12230查看相应的镜像docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker/wel…...

【Git】Git 完全指南:从入门到精通

Git 完全指南&#xff1a;从入门到精通 Git 是现代软件开发中最重要的版本控制工具之一&#xff0c;它帮助开发者高效地管理项目&#xff0c;支持分布式协作和版本控制。无论是个人项目还是团队开发&#xff0c;Git 都能提供强大的功能来跟踪、管理代码变更&#xff0c;并保障…...

webrtc ios h264 硬编解码

webrtc ios h264 硬编解码 一 ios 系统支持 从ios8开始&#xff0c;苹果公司开放了硬解码和硬编码API&#xff08;即 VideoToolbox.framework API&#xff09; 二 主要api 1 主要解码函数 VTDecompressionSessionCreate // 创建解码 session VTDecompressionSession…...

ubuntu20.04更换安装高版本CUDA以及多个CUDA版本管理

Ubuntu 20.04下多版本CUDA的安装与切换 CUDA安装配置环境变量软连接附上参考博客CUDA安装 cuda官方下载地址 因为我需要安装的是11.1版本的,所以这里按着11.1举例安装 安装命令如下: wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cu…...

生鲜食品o2o商城系统|Java|SSM|VUE| 前后端分离

【重要1⃣️】前后端源码万字文档部署文档 【重要2⃣️】正版源码有问题包售后 【重要3⃣️】可复制品不支持退换货 【包含内容】 【一】项目提供非常完整的源码注释 【二】相关技术栈文档 【三】源码讲解视频 【其它服务】 【一】可…...

C 语言静态库与动态库的生成和使用

在 YouTube 上找到一个视频 动态链接库静态链接库的生成和使用&#xff0c;它把用 GCC 生成静态库和动态库&#xff0c;以及如何使用他们说的很明白&#xff0c;有条件的可以直接看那个视频。本文就是一个观后的实操和笔记&#xff0c;加添了更多如何查看动态库&#xff0c;静态…...

分布式锁的实现方案有哪些?各自的原理是怎样的?使用场景有哪些?与单体架构中锁区别?存在哪些问题?如何解决?注意事项?

一、分布式锁的实现方案 分布式锁的实现方案主要包括以下几种&#xff1a; 基于数据库的分布式锁&#xff1a; 利用数据库的事务特性来实现锁功能。在数据库中创建一个具有唯一约束的锁表&#xff0c;加锁时插入一行记录&#xff0c;释放锁时删除这行记录。简单易用&#xf…...

企业如何落地搭建商业智能BI系统

随着新一代信息化、数字化技术的应用&#xff0c;引发了新一轮的科技革命&#xff0c;现代化社会和数字化的联系越来越紧密&#xff0c;数据也变成继土地、劳动力、资本、技术之后的第五大生产要素&#xff0c;这一切都表明世界已经找准未来方向&#xff0c;前沿科技也与落地并…...

python学习——元组的创建于删除

在 Python 中&#xff0c;元组&#xff08;tuple&#xff09;是一种内置的数据类型&#xff0c;用于存储不可变的有序元素集合。以下是关于 Python 元组的一些关键点&#xff1a; 文章目录 定义元组1. 使用圆括号 ()2. 使用 tuple() 函数3. 使用单个元素的元组4. 不使用圆括号…...

智能化图书馆导航系统方案之系统架构与核心功能设计

hello~这里是维小帮&#xff0c;点击文章最下方获取图书馆导航系统解决方案&#xff01;如有项目需求和技术交流欢迎大家私聊我们~撒花&#xff01; 针对传统图书馆在图书查找困难、座位紧张、空间导航不便方面的问题&#xff0c;本文深入剖析了基于高精度定位、3D建模、图书搜…...

Linux网络——IO模型和多路转接

通常所谓的IO&#xff0c;其本质就是等待通信和进行通信&#xff0c;即IO 等 拷贝。 那么想要做到高效的IO&#xff0c;就要在单位时间内&#xff0c;减少“等”的比重。 一.五种IO模型 阻塞 IO: 在内核将数据准备好之前, 系统调用会一直等待. 所有的套接字, 默认都是阻塞方…...

浅谈网络 | 应用层之HTTP协议

目录 HTTP 请求的准备HTTP 请求的构建HTTP 请求的发送过程HTTP 返回的构建HTTP 2.0QUIC 协议HTTP 3.0 在讲完传输层之后&#xff0c;我们接下来进入应用层的内容。应用层的协议种类繁多&#xff0c;那从哪里开始讲起呢&#xff1f;不妨从我们最常用、最熟悉的 HTTP 协议 开始。…...

【CSS】页面滚动到一定位置时,指定区域固定不变

一. 需求 移动端&#xff1a;下滑时&#xff0c;当下滑到一定位置时&#xff0c;指定区域不跟随下滑-【固定跟随区域】一直在顶部效果 &#xff08;1&#xff09;未滚动前 &#xff08;2&#xff09;滚动后 二. 实现 <template><div class"global-application…...

瀚高创库建表pgsql

1.瀚高下载地址&#xff1a; 下载 (highgo.com)https://www.highgo.com/down_main.html 2.瀚高linux安装 上传deb文件到ubuntu系统中 执行 dpkg -i hgdb-see-4.5.8-fe4791c.x86_64.deb 命令安装数据库 安装完成后&#xff0c;会在/opt 目录下生成安装目录 数据库安装完毕后…...

Vim 高级操作与技巧指南

在上一篇文章中&#xff0c;我们了解了 Vim 的基本操作和模式&#xff0c;掌握了如何进行文件编辑、光标移动、文本操作等基本技能。现在&#xff0c;我们将深入探讨 Vim 的一些高级功能&#xff0c;包括插件管理、脚本编写、定制快捷键等内容&#xff0c;以进一步提高你的工作…...

Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?

Vue 3.0 之所以使用 Proxy API 替代 Object.defineProperty,主要是为了提升性能、减少代码复杂性,并解决 Vue 2.x 在响应式处理中的一些局限性。下面我们通过对比这两种方式的工作原理、优缺点,并结合实际项目代码示例来详细讲解。 1. Object.defineProperty 的局限性 在 …...

【基于规则】n-sigma

在正态分布中: 约68%的数据点会落在均值1σ的范围内约95%的数据点会落在均值2σ的范围内约99.7%的数据点会落在均值3σ的范围内这称为68-95-99.7法则(Empirical Rule)。 假设我们有一组数据,其均值为μ,标准差为σ。某个数据点x的n-sigma计算公式如下: 若z=1.2,说明该…...

JavaScript 判断字符串是否包含子字符串的几种方法

这里写目录标题 方法 1: 使用 includes()方法 2: 使用 indexOf()方法 3: 使用正则表达式方法 4: 使用 search()方法 5: 用 startsWith() 或 endsWith()推荐使用 JavaScript 判断字符串是否包含子字符串&#xff0c;不要只知道 indexOf() &#xff0c;还可以尝试一下其他写法。 …...

goframe框架bug-记录

implement not found for interface ICompany, forgot register? 错误解决检查&#xff1a; 1.有没有init 2. 注入问题 3. 注入问题...

Docker:在 ubuntu 系统上生成和加载 Docker 镜像

本文将介绍在 ubuntu系统上进行 Docker 镜像的生成和加载方法和代码。 文章目录 一、下载和安装 docker二、加载 docker 文件三、保存你的镜像四、将镜像上传到云端并通过连接下载和加载 Docker 镜像五、Docker 容器和本地的文件交互5.1 从容器复制文件到本地宿主机5.1.1 单个文…...

长时间无事可做是个危险信号

小马加入的是技术开发部&#xff0c;专注于Java开发。团队里有一位姓隋的女同事&#xff0c;是唯一的web前端工程师&#xff0c;负责页面开发工作&#xff0c;比小马早两个月入职。公司的项目多以定制化OA系统为主&#xff0c;后端任务繁重&#xff0c;前端工作相对较少。在这样…...

【小白学机器学习39】如何用numpy生成总体,生成样本samples

目录 1 目的&#xff1a;研究 样本和总体之间的关系 2 先生成1个理论总体 2.0 下面是关于这一步的完整代码 2.1 一般情况下&#xff0c;我们先生成一个符合正态分布的总体 2.1.1 设置总体 &#xff0c;或者说生成一个总体 2.2 为什么一定要是一个符合正态分布的总体&…...

redis的主从复制

redis主从复制 一、主从复制概念二、主从模式运行原理2.1主从复制的演示&#xff1a;2.2查看主从结构信息&#xff1a;2.3AOF文件对主从关系的影响2.4主从节点建立复制流程图 三、主从复制的拓扑结构3.1 一主一从结构3.2 一主多从结构3.3 树形主从结构 四、数据同步psync4.1全量…...

数据结构与算法(排序算法)

排序的概念 1. 排序是指将一组数据&#xff0c;按照特定的顺序进行排列的过程。 2. 这个过程通常是为了使数据更加有序&#xff0c;从而更容易进行搜索、比较或其他操作。 常见的排序算法 插入排序 1. 把待排序的记录&#xff0c;按其关键码值的大小&#xff0c;逐个插入到一…...

极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【三】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

三格电子—EtherNet IP转Modbus RTU网关

EtherNet/IP转Modbus RTU网关 SG-EIP-MOD-210 产品用途 SG-EIP-MOD-210网关可以实现将Modbus接口设备连接到 EtherNet/IP网络中。用户不需要了解具体的Modbus和 EtherNet/IP协议即可实现将Modbus设备挂载到 EtherNet/IP接口的PLC上&#xff0c;并和Modbus设备进行数据交互。拓…...

centos7下安装haproxy2.2

1、安装epel yum install epel-release2、下载并安装ius的centos7软件镜像 wget https://repo.ius.io/ius-release-el7.rpm rpm -ivh ius-release-el7.rpm3、安装haproxy yum search haproxy yum install haproxy224、启动服务 systemctl status haproxy systemctl start h…...

Spring Boot英语知识网站:安全与维护

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了英语知识应用网站的开发全过程。通过分析英语知识应用网站管理的不足&#xff0c;创建了一个计算机管理英语知识应用网站的方案。文章介绍了英语知识应用网站的系…...

PHP实现终端表格提取

背景 刚开始使用restic想要获取终端的输出数据,默认的终端信息如下示例 restic snapshotsrepository 5816ba52 opened (version 2, compression level auto) ID Time Host Tags Paths Size ------------------------------------…...

c++ 拓扑排序

概念 拓扑排序是一种线性排序算法&#xff0c;主要用于有向无环图 (DAG, Directed Acyclic Graph) 中&#xff0c;对顶点进行排序&#xff0c;使得对于每一条边 u→v&#xff0c;顶点 u 都排在顶点 v之前。 特点 适用于有向无环图。 拓扑排序的结果不唯一&#xff08;如果有…...

Vue3的双向数据绑定

如果你有多个 ref 类型的数据需要在父子组件之间实现双向绑定&#xff0c;可以使用 v-model 来进行多个数据的双向绑定。在 Vue 3 中&#xff0c;v-model 默认是针对 modelValue 的&#xff0c;但你可以通过指定自定义的属性名来实现多个双向绑定。 多个 v-model 双向绑定的实…...