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

【后端开发】Spring MVC-常见使用、Cookie、Session

文章目录

  • 代码总结
    • 初始化
    • 传递参数
      • 单参数
      • 多参数
    • 传递对象
    • 后端参数重命名(后端参数映射)
      • 必传参数
      • 设置非必传参数
    • 传递数组
    • 传递集合
    • 传递JSON数据
      • JSON语法
      • JSON格式转换
      • JSON优点
      • 传递JSON对象
    • 获取URL中参数
    • 传递文件
  • Cookie与Session
    • Cookie
      • Cookie机制
    • Session
    • Cookie与Session交互
    • 常见面试题
      • Cookie 和 Session 的区别
      • Session产生的SessionId放在Cookie里面,如果用户把Cookie禁止掉,是不是Session也不能用了呢?
    • 获取Cookie与session
      • 获取Cookie
        • 传统获取Cookie
        • 简洁获取Cookie
      • 获取Session
        • 设置Session
        • 传统获取Session
        • 简洁获取Session

代码总结

初始化

@RestController:该注解用于标记一个类作为RESTful Web 服务的控制器
@RequestMapping(“/request”):该注解用于将 HTTP 请求映射到对应的控制器方法上,将特定的 URL 路径(如 “/request”)映射到控制器类或方法。

url路径前加上"/"
建议类路径与方法路径一起使用
RequestMapping即支持get请求,也支持post请求,默认是get请求

@RequestMapping("/request")
@RestController//标记一个类作为RESTful Web 服务的控制器
public class RequestController {//后面这个是url,建立客户端与服务器之间的连接//可以修饰类,也可以修饰方法(修饰类时,访问路径: 类路径+访问路径)@RequestMapping("/hello")public String say(){return "Hello Spring MVC";}
}

在这里插入图片描述

传递参数

单参数

  • 传递单参数时,需要保持方法的参数变量的名称与请求的名称一致。
  • 使用基础类型与包装类型作为接收参数时,当请求为空时,包装类型只为null,基础类型会报出500错误,通常情况下只使用包装类型。
 @RequestMapping("/r1")public String r1(String name){return "接收到参数: "+name;}@RequestMapping("/r2")public String r2(Integer age){return "接收到参数: "+age;}@RequestMapping("/r3")public String r3(int age){return "接收到参数: "+age;}

多参数

当有多个参数时,前后端进⾏参数匹配时,是以参数的名称进⾏匹配的,因此参数的位置是不影响后端获取参数的结果。

@RequestMapping("/r4")public String r4(String name,Integer age){return "接收到参数name="+name+"  age="+age;}

传递对象

  • 如果参数⽐较多时,⽅法声明就需要有很多形参,并且后续每次新增⼀个参数,也需要修改⽅法声明,不妨把这些参数封装为⼀个对象。 Spring
  • 根据参数名称⾃动绑定到对象的各个属性上,如果某个属性未传递,则赋值为null(基本类型在创建对象时赋值为默认初识值,⽐如int类型的属性,会被赋值为0,此时不会报错)
    @RequestMapping("/r5")public String r5(Student student){return "接收到参数student: "+student;}

后端参数重命名(后端参数映射)

必传参数

@RequestParam:某些特殊的情况下,前端传递的参数key和后端接收的key可以不⼀致,⽐如前端传递了⼀个 name 给后端,而后端是使⽤ username 字段来接收,这样就会出现参数接收不到的情况,如果出现这种情况,使⽤ @RequestParam 来重命名前后端的参数值。

    @RequestMapping("/r6")public String r6(@RequestParam("name") String username){//接收前段的name赋值给后端的usernamereturn "接收到参数student: "+username;}

使⽤ @RequestParam 进⾏参数重命名时,请求参数只能和 @RequestParam 声明的名称一致,才能进⾏参数绑定和赋值。
使⽤ @RequestParam 进⾏参数重命名时,参数就变成了必传参数,也就是接收到为 null ,直接报错。

设置非必传参数

    @RequestMapping("/r7")public String r7(@RequestParam(value = "name",required = false) String username){return "接收到参数student: "+username;}

传递数组

Spring MVC可以⾃动绑定数组参数的赋值。

    @RequestMapping("/r8")public String r8(String[] arrays){return "arrays: "+ Arrays.toString(arrays);}

传递集合

集合参数:和数组类似,同⼀个请求参数名有为多个,且需要使⽤ @RequestParam 绑定参数关系。
这是因为后端不能直接接收集合这样的参数数组,所以先通过数组接收数据,再通过 @RequestParam 映射。

    @RequestMapping("/r9")public String r9(@RequestParam List<String> list){return "arrays: "+ list;}

传递JSON数据

JSON:JavaScriptObjectNotation 【JavaScript 对象表示法】
JSON是⼀种轻量级的数据交互格式,它基于ECMAScript(欧洲计算机协会制定的js规范)的⼀个⼦集,采⽤完全独⽴于编程语⾔的⽂本格式来存储和表示数据。

JSON是⼀种数据格式,有⾃⼰的格式和语法,使⽤⽂本表示⼀个对象或数组的信息,因此JSON本质是字符串。

JSON语法

数据在键值对(Key/Value) 中
数据由逗号 , 分隔
对象⽤ {} 表⽰
数组⽤ [] 表⽰
值可以为对象,也可以为数组,数组中可以包含多个对象

示例:

{"name":"zhangsan","id":1111,"age":22
}

JSON格式转换

工具:https://www.bejson.com/,可以对JSON字符串进行压缩整理。
将上述JSON字符串进行压缩:

{"name":"zhangsan","age":12,"id":1111}

JSON本质上是⼀个字符串,通过⽂本来存储和描述数据。
Spring MVC框架也集成了JSON的转换⼯具,可以直接使用,来完成JSON字符串和Java对象的互转。

    public static void main(String[] args) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();String jsonstr = "{\"name\":\"zhangsan\",\"age\":12,\"id\":1111}";//json字符串转对象,使用该方法时,类中必须要有无参数的构造函数Student student = objectMapper.readValue(jsonstr,Student.class);System.out.println(student);//对象转json字符串String s= objectMapper.writeValueAsString(student);System.out.println(s);}

JSON优点

  1. 简单易用:语法简单,易于理解和编写,可以快速地进⾏数据交换
  2. 跨平台⽀持:JSON可以被多种编程语⾔解析和生成,可以在不同的平台和语⾔之间进⾏数据交换和传输
  3. 轻量级:相较于XML格式,JSON数据格式更加轻量级,传输数据时占用宽带较小,可以提⾼数据传输速度
  4. 易于扩展:JSON的数据结构灵活,支持嵌套对象和数组等复杂的数据结构,便于扩展和使用
  5. 安全性:JSON数据格式是⼀种纯文本格式,不包含可执⾏代码,不会执⾏恶意代码,因此具有较⾼的安全性

传递JSON对象

接收JSON对象,需要使⽤ @RequestBody 注解。
RequestBody:请求正⽂,意思是这个注解作⽤在请求正⽂(body)的数据绑定,请求参数必须在写在请求正⽂中。
json格式字符串就在body(请求正文)中。

	@RequestMapping("/r10")public String r10(@RequestBody Student student) {return "接收到参数student: " + student;}

获取URL中参数

@PathVariable:该注解主要作⽤在请求URL路径上的数据绑定,默认传递参数写在URL上,SpringMVC就可以获取到。

    @RequestMapping("/article/{articleId}")public String r11(@PathVariable("articleId") Integer articleId){//@PathVariable从url中获取参数return "接收到参数articleId: " + articleId;}@RequestMapping("/article/{articleId}/{name}")public String r12(@PathVariable("articleId") Integer articleId,@PathVariable("name") String name){return "接收到参数articleId: " + articleId + " name: " + name;}

传递文件

@RequestPart(“file”) 也是起到类似于赋值的功能

    @RequestMapping("/r13")public String r13(@RequestPart("file") MultipartFile file) {//@RequestPart("file") 也是起到类似于赋值的功能String originalFilename = file.getOriginalFilename();return "接收文件,原始名称: " + originalFilename;}

Cookie与Session

Cookie

Cookie,其实就是储存在用户本地终端上的数据(通常经过加密),由用户计算机暂时或永久保存的信息,类型为“小型文本文件”。

可以理解是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据。

Cookie机制

HTTP是无状态的,不能保存每次提交的信息,如果用户发来一个新请求,服务器无法知道它是否与上次的请求有联系。

cookie的出现就是为了解决这个问题
登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地,当该用户再次发送请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器,服务器通过浏览器携带的数据就能判断当前用户的状态。
在这里插入图片描述

此时在服务器这边就需要记录"令牌"信息,以及令牌对应的用户信息,这个就是 Session 机制所做的工作。

Session

Session–回话、对话:在计算机领域,会话是⼀个客户与服务器之间的不中断的请求响应,当客户明确结束会话或服务器在⼀个时限内没有接受到客⼾的任何请求时,会话就结束了。

服务器同⼀时刻收到的请求是很多的,服务器需要清楚的区分每个请求是从属于哪个客户,也就是属于哪个会话,就需要在服务器这边记录每个会话以及与客户的信息的对应关系。
在这里插入图片描述

Session是服务器是为了保存用户信息⽽创建的⼀个特殊的对象。
Session的本质就是⼀个 “哈希表”,存储了⼀些键值对结构,Key 就是SessionID,Value 就是⽤户信息(⽤户信息可以根据需求灵活设计)。
SessionId 是由服务器⽣成的⼀个 “唯⼀性字符串”,从 Session 机制的⻆度来看,这个唯⼀性字符串称为 “SessionId”,但是站在整个登录流程中看待,也可以把这个唯⼀性字符串称为 “token”。

Cookie与Session交互

  1. 当用户登录的时候,服务器在 Session 中新增⼀个新记录,并把 sessionId 返回给客⼾端(通过 HTTP 响应中的
    Set-Cookie 字段返回) 。
  2. 客户端后续再给服务器发送请求的时候,需要在请求中带上 sessionId(通过 HTTP 请求中的 Cookie 字段带上)。
  3. 服务器收到请求之后,根据请求中的 sessionId在 Session 信息中获取到对应的用户信息,再进⾏后续操作,找不到则重新创建 Session ,并把SessionID返回。
    在这里插入图片描述
  1. Session 默认是保存在内存中的,如果重启服务器则 Session 数据就会丢失。
  2. 同一客户端启动二次session_start的话,session_id是不一样的。

常见面试题

Cookie 和 Session 的区别

Cookie 是客户端保存用户信息的⼀种机制,Session 是服务器端保存用户信息的⼀种机制。
Cookie 和Session之间主要是通过 SessionId 关联起来的,SessionId 是 Cookie 和 Session 之间的桥梁。
Cookie 和 Session 经常会在⼀起配合使⽤,但是不是必须配合。
Session 中的 sessionId 也不需要非得通过 Cookie/Set-Cookie 传递,比如通过URL传递。

Session产生的SessionId放在Cookie里面,如果用户把Cookie禁止掉,是不是Session也不能用了呢?

禁止掉cookie后,session当然可以用,不过通过其他的方式来获得这个sessionid,比如,可以跟在url的后面,或者以表单的形势提交到服务器端,从而使服务器端了解客户端的状态。

获取Cookie与session

获取Cookie

传统获取Cookie

Spring MVC是基于 Servlet API 构建的原始 Web 框架,也是在Servlet的基础上实现的。HttpServletRequest , HttpServletResponse 是Servlet提供的两个类,是 Spring MVC 的内置对象,要时直接在⽅法中添加声明即可。
HttpServletRequest 对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,通过这个对象提供的⽅法,可以获得客户端请求的所有信息。
HttpServletResponse 对象代表服务器的响应,HTTP响应的信息都在这个对象中,⽐如向客户端发送的数据,响应头、状态码等,通过这个对象提供的⽅法,可以获得服务器响应的所有内容。

该方法通过遍历 request 中所有 Cookie 得到一个 cookies数组。

 @RequestMapping("getC")public String getCookie(HttpServletRequest request, HttpServletResponse response) {Cookie[] cookies = request.getCookies();if (cookies != null) {Arrays.stream(cookies).forEach(cookie -> {System.out.println(cookie.getName() + " : " + cookie.getValue());});}return "获取Cookie";}

此时没有设置Cookie,通过浏览器访问:http://127.0.0.1:8080/getC ,得到Cookie为null
通过PostMan可以设置⼀下Cookie的值,进而进行测试。
在这里插入图片描述

简洁获取Cookie

@CookieValue(“Cookie_1”)只能获取Cookie数组中某个指定cookie,这里指定的是刚才通过PostMan创建的Cookie。

    @RequestMapping("/getC2")public String getCookie2(@CookieValue("Cookie_1") String cookie) {return "从Cookie中获取值,cookie"+cookie;}

获取Session

设置Session

Session是服务器端的机制,需要先存储,才能再获取。
该方法创建了一个Session----SessionId : {name:zhangsan}。

    @RequestMapping("/setSess")public String setSession(HttpServletRequest request) {//从Cookie中获取到了sessionID,根据senssionID获取session对象,如果没有获取到,会创建一个session对象HttpSession session = request.getSession();session.setAttribute("name","zhangsan");return "设置session成功";}
传统获取Session

Object getAttribute(String name):返回在该 session 会话中具有指定名称的对象,如果没有指定名称的对象,则返回null。
该方法返回服务器端name的信息。

    @RequestMapping("/getSess")public String getSession(HttpServletRequest request) {//从Cookie中获取到了sessionID,根据senssionID获取session对象HttpSession session = request.getSession();String name = (String)session.getAttribute("name");return "从session中获取name: "+name;}
简洁获取Session
@RequestMapping("getSess2")public String getSession(HttpSession session) {String name = (String) session.getAttribute("name");return "name:" + name;}

相关文章:

【后端开发】Spring MVC-常见使用、Cookie、Session

文章目录 代码总结初始化传递参数单参数多参数 传递对象后端参数重命名&#xff08;后端参数映射&#xff09;必传参数设置非必传参数 传递数组传递集合传递JSON数据JSON语法JSON格式转换JSON优点传递JSON对象 获取URL中参数传递文件 Cookie与SessionCookieCookie机制 SessionC…...

Element Plus 去掉表格外边框

使用el-table组件拖拽时&#xff0c; 想使用自定义样式进行拖拽, 想去掉外边框&#xff0c; 并在表头加入竖杠样式 css代码&#xff1a; <style lang"less" scoped>// 表格右边框线 .el-table--border::after {width: 0; }// 表格上边框线 :deep(.el-table__i…...

安全厂商安全理念分析

奇安信&#xff08;toB企业安全&#xff09; 安全理念&#xff1a;率先提出 “内生安全” 理念。即把安全能力内置到信息化环境中&#xff0c;通过信息化系统和安全系统的聚合、业务数据和安全数据的聚合、IT 人才和安全人才的聚合&#xff0c;让安全系统像人的免疫系统一样&a…...

GaussDB Plan Hint调优实战:从执行计划控制到性能优化

GaussDB Plan Hint调优实战&#xff1a;从执行计划控制到性能优化 一、GaussDB Plan Hint核心价值 执行计划控制原理 mermaid graph TD A[SQL提交] --> B(优化器决策) B --> C{使用Hint?} C -->|是| D[强制指定执行路径] C -->|否| E[自动生成最优计划] D --&g…...

【力扣hot100题】(078)跳跃游戏Ⅱ

好难啊&#xff0c;我愿称之为跳崖游戏。 依旧用了两种方法&#xff0c;一种是我一开始想到的&#xff0c;一种是看答案学会的。 我自己用的方法是动态规划&#xff0c;维护一个数组记录到该位置的最少步长&#xff0c;每遍历到一个位置就嵌套循环遍历这个位置能到达的位置&a…...

基于 DeepSeek API 实现一个简单的数据分析 Agent

写在前面 本文将带你一步步了解: 什么是(简单的)数据分析 Agent?为什么使用 LLM 进行数据分析?如何利用 DeepSeek API 的能力?设计并实现一个基于 Python 和 Pandas 的基础数据分析 Agent。探讨其局限性、安全考量及未来方向。我们的目标是构建一个简单的 Agent,它能理…...

VUE3+TS+elementplus+Django+MySQL实现从前端增加数据存入数据库,并显示在前端界面上

一、前言 前面实现了从数据库读取数据&#xff0c;显示在前端界面上VUE3TSelementplusDjangoMySQL实现从数据库读取数据&#xff0c;显示在前端界面上&#xff0c;以及使用VUE3TSelementplus创建一个增加按钮。今天通过在前端的增加功能&#xff0c;新增数据&#xff0c;传到后…...

Django 创建CSV文件

Django使用Python内置的CSV库来创建动态的CSV&#xff08;逗号分隔值&#xff09;文件。我们可以在项目的视图文件中使用这个库。 让我们来看一个例子&#xff0c;这里我们有一个Django项目&#xff0c;我们正在实现这个功能。创建一个视图函数 getfile() 。 Django CSV例子 …...

最新版RubyMine超详细图文安装教程,带补丁包(2025最新版保姆级教程)

目录 前言 一、RubyMine最新版下载 二、RubyMine安装 三、RubyMine补丁 四、运行RubyMine 前言 RubyMine是由JetBrains开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为Ruby和Ruby on Rails开发者设计&#xff0c;提供智能代码补全、调试、测试、版本控制集…...

spring之JdbcTemplate、GoF之代理模式、面向切面编程AOP

一、JdbcTemplate JdbcTemplate是Spring提供的一个JDBC模板类&#xff0c;是对JDBC的封装&#xff0c;简化JDBC代码。 当然&#xff0c;你也可以不用&#xff0c;可以让Spring集成其它的ORM框架&#xff0c;例如&#xff1a;MyBatis、Hibernate等。 接下来我们简单来学习一下&…...

【QT】QT中的文件IO

QT中的文件IO 一、有关文件IO的类二、步骤1、定义QFile的对象,与要读写的文件绑定在一起2、打开文件3、读写文件1&#xff09;读取文件2&#xff09;写入文件 4、关闭文件5、示例代码&#xff1a; 三、QString和QByteArray之间的转换1、方法2、示例代码&#xff1a; 四、QFileI…...

linux安装mysql常出现的问题

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum update yum install mysql-server 权限设置&#xff1a; chown -R mysql:mysql /var/lib/mysql/ 初始化 MySQL&#xff1a; mysqld --initiali…...

ArcGIS Engine开发教程--从零搭建GIS桌面应用

目录 一、ArcGIS Engine简介 1.1 什么是ArcGIS Engine&#xff1f; 1.2 应用场景 二、环境搭建 2.1 安装准备 2.2 配置项目 三、核心对象与基础概念 3.1 核心组件 3.2 接口编程 四、实战&#xff1a;开发简易地图查看器 4.1 加载地图文档 4.2 添加矢量图层 4.3 实…...

DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…...

Conda使用方法详解

Conda是一个开源的包管理和环境管理系统&#xff0c;主要用于Python/R等科学计算领域&#xff0c;可以轻松管理不同项目的依赖关系。以下是Conda的详细使用方法&#xff1a; 一、安装与配置 1.安装Miniconda/Anaconda Miniconda是精简版&#xff0c;只包含conda和Python Ana…...

CausalML 基于机器学习算法的因果推理方法

CausalML 是一个 Python 包&#xff0c;它使用基于最新研究的机器学习算法提供一套提升建模和因果推理方法。它提供了一个标准界面&#xff0c;允许用户从实验或观察数据中估计条件平均处理效应 &#xff08;CATE&#xff09;&#xff0c;也称为个体治疗效应 &#xff08;ITE&a…...

HTML的svg元素

<svg>元素 <svg>是一种用于描述二维矢量图形的 XML 格式&#xff0c;可以直接嵌入 HTML 文档中。 <svg>基本用法 <svg>的几种基本用法,包括圆形&#xff0c;正方形&#xff0c;三角形&#xff0c;直线 &#xff0c;折线等 <body><svg widt…...

文件上传、读取与包含漏洞解析及防御实战

一、漏洞概述 文件上传、读取和包含漏洞是Web安全中常见的高危风险点&#xff0c;攻击者可通过此类漏洞执行恶意代码、窃取敏感数据或直接控制服务器。其核心成因在于开发者未对用户输入内容进行充分验证或过滤&#xff0c;导致攻击者能够绕过安全机制&#xff0c;上传或执行…...

物联网与边缘计算之物联网架构(感知层、网络层、应用层)

一、感知层&#xff1a;数据采集与智能终端 1. 核心功能 感知层是物联网的数据入口&#xff0c;通过物理设备&#xff08;如传感器、RFID标签&#xff09;实时采集环境、设备或生物体的物理量&#xff08;温度、湿度&#xff09;、标识信息&#xff08;如二维码&#xff09;及…...

nvm使用手册

一、安装前准备 1. 卸载现有 Node.js&#xff08;如已安装&#xff09; # 删除全局 node 模块 sudo rm -rf /usr/local/lib/node_modules# 删除 node 可执行文件 sudo rm -rf /usr/local/bin/npm sudo rm -rf /usr/local/bin/node# 删除其他残留文件 sudo rm -rf ~/.npm sudo…...

Maven error:Could not transfer artifact

问题描述 当项目从私有仓库下载依赖时&#xff0c;Maven 报错&#xff0c;无法从远程仓库下载指定的依赖包&#xff0c;错误信息如下&#xff1a; Could not transfer artifact com.ding.abcd:zabk-java:pom from/to releases (http://192.1122.101/repory/mavenleases/): 此…...

【操作系统(Linux)】——通过案例学习父子进程的线程异步性

本篇旨在通过几个案例来学习父子进程的线程异步性 一、父进程与子进程 我们将要做的&#xff1a; 创建父子进程&#xff0c;观察父子进程执行的顺序&#xff0c;了解进程执行的异步行为 源代码&#xff1a; #include <stdio.h> #include <sys/types.h> #include…...

汽车CAN总线采样点和采样率详解

写在前面 本篇文章主要讲解在汽车电子中CAN总线采样率的相关知识点,内容涉及CAN波特率、采样点、时间份额、同步跳转宽度以及采样率的计算。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 1、CAN波特率 CAN波特率常规分为250kbps和500kbps,本文章主要以这两个波特率为…...

一款基于 .NET 8 + Vue 开源的、企业级中后台权限管理系统

前言 今天大姚给大家分享一款基于 .NET 8 Vue 开源、前后端分离的企业级中后台权限管理系统&#xff0c;助力快速完成常规业务需求开发&#xff1a;ApeVolo.Admin。 项目介绍 ApeVolo.Admin 一款基于.NET 8、SqlSugar、Vue、Elment UI、RBAC、前后端分离、开源&#xff08;…...

创建两个进程

文章目录 创建两个进程**2. 实现思路及源代码**2.1 实现思路2.1.1 fork() 函数2.1.2 思路分析 2.2 源代码2.2.1 源代码分析2.2.2 源代码测试结果 **3. 打印进程树**3.1 tmux操作步骤3.1.1 启动 tmux3.1.2 分屏操作&#xff08;Ctrlb是在告诉系统准备输入一个快捷键&#xff09;…...

Zephyr、FreeRTOS、RT-Thread 定时器区别分析

一、核心特性对比 特性ZephyrFreeRTOSRT-Thread定时器类型系统定时器&#xff08;k_timer&#xff09;、硬件定时器软件定时器&#xff08;基于系统tick&#xff09;软件定时器、硬件定时器定时模式单次、周期性单次、自动重载&#xff08;周期性&#xff09;单次、周期、自定…...

.NET 中的深拷贝实现方法

在 .NET 中实现深拷贝&#xff08;Deep Copy&#xff09;有几种常用方法&#xff0c;深拷贝是指创建一个新对象&#xff0c;并递归地复制原对象及其所有引用对象&#xff0c;而不仅仅是复制引用。 目录 1. 使用序列化/反序列化2. 使用 JSON 序列化&#xff08;Newtonsoft.Json…...

Vue/React组件/指令/Hooks封装的基本原则以及示例

一、组件封装原则与示例 Vue组件封装 核心原则 • 单一职责:每个组件只解决一个功能(如分页、过滤表单) • Props控制输入:通过定义明确的Props接口接收外部数据(类型校验、默认值) • Emit事件通信:子组件通过$emit向父组件传递动作(如分页切换) • 插槽扩展性:使用…...

医学分割新标杆!双路径PGM-UNet:CNN+Mamba实现病灶毫厘级捕捉

一、引言&#xff1a;医学图像分割的挑战与机遇 医学图像分割是辅助疾病诊断和治疗规划的关键技术&#xff0c;但传统方法常受限于复杂病理特征和微小结构。现有深度学习模型&#xff08;如CNN和Transformer&#xff09;虽各有优势&#xff0c;但CNN难以建模长距离依赖&…...

软考-高项,知识点一览十六 采购管理

十六 采购管理 项目采购管理包括从项目团队外部采购或获取所需产品、服务或成果的各个过程。被授权采购项目所需货物、服务的人员可以是项目团队、管理层或组织采购部的成员 。 管理基础 协议&#xff0f;采购合同 协议可以是合同、服务水平协议 (SLA) 、谅解备忘录、协议备…...

Spring MVC 视图解析器(JSP、Thymeleaf、Freemarker、 JSON/HTML、Bean)详解

Spring MVC 视图解析器详解 1. 视图解析器概述 视图解析器&#xff08;ViewResolver&#xff09;是 Spring MVC 的核心组件&#xff0c;负责将控制器返回的视图名称&#xff08;如 success&#xff09;转换为具体的 View 对象&#xff08;如 Thymeleaf 模板或 JSP 文件&#x…...

Joomla 常用模块 - 在线用户与Joomla 常用模块 - 自定义HTML模块

Joomla 常用模块 - 在线用户 在这一节中&#xff0c;我们将介绍如何建立在线用户模块。在线用户模块是显示当前访问网站的匿名用户&#xff08;如访客&#xff09;和注册用户&#xff08;登录用户&#xff09;的数量。 建立在线用户模块你可以参考以下步骤&#xff1a; 1、选…...

缓存工具类

这里写目录标题 背景代码使用 背景 写oj系统过程中&#xff0c;需要使用缓存工具类。其功能为&#xff0c;先从缓存中获取数据&#xff0c;如数据不存在&#xff0c;从数据库中获取。 代码 package xyz.wry.utils;import org.springframework.util.ObjectUtils;import java.…...

【C++】list底层封装和实现

目录 节点类基本框架构造函数 list类构造函数拷贝构造函数赋值重载析构函数 迭代器类前言(string和vector的区别)迭代器模版参数的说明构造函数运算符重载- -运算符的重载运算符重载!运算符的重载*运算符的重载->运算符的重载 迭代器相关函数插入和删除函数inserterase函数p…...

一种替代DOORS在WORD中进行需求管理的方法 (二)

一、前景 参考&#xff1a; 一种替代DOORS在WORD中进行需求管理的方法&#xff08;基于WORD插件的应用&#xff09;_doors aspice-CSDN博客 二、界面和资源 WORD2013/WORD2016 插件 【已使用该工具通过第三方功能安全产品认证】&#xff1a; 1、 核心功能 1、需求编号和跟…...

学习海康VisionMaster之多直线查找

一&#xff1a;进一步学习了 今天学习下VisionMaster中的多直线查找&#xff0c;这个还是拟合直线的衍生应用&#xff0c;可以在测量框内同时查找多段时间 二&#xff1a;开始学习 1&#xff1a;什么是多直线查找&#xff1f; 一个检测框&#xff0c;就可以在检测框里面同时检…...

MATLAB的24脉波整流器Simulink仿真与故障诊断

本博客来源于CSDN机器鱼&#xff0c;未同意任何人转载。 更多内容&#xff0c;欢迎点击本专栏目录&#xff0c;查看更多内容。 目录 0 引言 1 故障数据采集 2 故障特征提取 3 故障诊断分类 4 结语 本博客内容是在MATLAB2023下完成。 0 引言 对于电力电子电路的故障诊断…...

顺序表专题(C语言)

文章目录 前言一、数据结构相关概念类比说明&#xff1a;书架与数据结构 二、线性表基本概念两种实现方式对比 三、顺序表的概念及结构1. 顺序表的定义2. 静态顺序表的基本结构关键点解析&#xff1a; 3. 结构体成员解释 四、顺序表分类五、动态顺序表的实现总结 前言 在C语言…...

Python Cookbook-5.9 在排序完毕的序列中寻找元素

任务 你需要寻找序列中的一系列元素。 解决方案 解决方案如果列表L已经是排序完毕的状态&#xff0c;则Python 标准库提供的 bisect 模块可以很容易地检查出元素x是否在L中: import bisect x_insert_point bisect.bisect_right(L,x) x_is_present L[x_insert_point-1:x_i…...

Johnson算法 流水线问题 java实现

某印刷厂有 6项加工任务J1&#xff0c;J2&#xff0c;J3&#xff0c;J4&#xff0c;J5&#xff0c;J6&#xff0c;需要在两台机器Mi和M2上完 成。 在机器Mi上各任务所需时间为5,1,8,5,3,4单位; 在机器M2上各任务所需时间为7,2,2,4,7,4单位。 即时间矩阵为&#xff1a; T1 {5, …...

10:00开始面试,10:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

[Vue]App.vue讲解

页面中可以看见的内容不再在index.html中进行编辑&#xff0c;而是在App.vue中进行编辑。 组件化开发 在传统的html开发中&#xff0c;一个页面的资源往往都写在同一个html文件中。这种模式在开发小规模、样式简单的项目时会相当便捷&#xff0c;但当项目规模越来越大&#xf…...

python中的*args和**args

在 Python 里&#xff0c;*args 和 **kwargs 是两个特殊的语法&#xff0c;它们能让函数接收不定数量的参数。下面分别对它们进行介绍。 *args *args 用于向函数传递不定数量的非关键字参数&#xff0c;这些参数会被封装成一个元组。以下是示例代码&#xff1a; def sum_num…...

解决Spring Boot上传默认限制文件大小和完善超限异常(若依框架)

文章目录 报错信息问题分析技术原理解决方法1️⃣调整 Spring Boot 配置文件2️⃣检查内嵌 Tomcat 配置&#xff08;可选&#xff09;3️⃣ 代码自定义配置&#xff08;覆盖配置文件&#xff09; 全局异常处理代码 报错信息 org.springframework.web.multipart.MaxUploadSizeE…...

Pyside6使用QtWebEngine实现GUI嵌入网页内容

Pyside6是由Qt官方维护和开发的一个用于创建跨平台桌面应用程序的Python绑定库。QtWebEngine是Qt提供的一个模块&#xff0c;它基于Chromium项目&#xff0c;允许开发者在他们的应用程序中嵌入网页内容。通过结合Pyside6和QtWebEngine&#xff0c;开发者可以轻松地创建具有现代…...

【每日一个知识点】多项式回归(Polynomial Regression)

多项式回归&#xff08;Polynomial Regression&#xff09;是一种对非线性关系建模的回归方法&#xff0c;它是在线性回归的基础上&#xff0c;引入特征的高次项&#xff0c;从而捕捉自变量与因变量之间的非线性关系。 &#x1f539;一、基本概念 多项式回归的形式&#xff1a…...

最新版PhpStorm超详细图文安装教程,带补丁包(2025最新版保姆级教程)

目录 前言 一、PhpStorm最新版下载 二、PhpStorm安装 三、PhpStorm补丁 四、运行PhpStorm 前言 PhpStorm 是 JetBrains 公司推出的 专业 PHP 集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为提升 PHP 开发效率设计。其核心功能包括智能代码补全、实时语法错误检…...

C++:模拟实现string

目录 一&#xff1a;string类 二&#xff1a;构造函数、拷贝构造函数及析构函数 1、构造函数 2、拷贝构造函数 3、析构函数 三、实现string中对容量操作的成员函数 1、size 2、capacity 3、reserve 4、resize 5、clear 6、empty 四、string类中对象的增删查改操作 …...

Python 小练习系列 | Vol.14:掌握偏函数 partial,用函数更丝滑!

&#x1f9e9; Python 小练习系列 | Vol.14&#xff1a;掌握偏函数 partial&#xff0c;用函数更丝滑&#xff01; 本节的 Python 小练习系列我们将聚焦一个 冷门但高能 的工具 —— functools.partial。它的作用类似于“函数的预设模板”&#xff0c;能帮你写出更加灵活、优雅…...

处理Excel的python库openpyxl、xlrd、xlwt、pandas有什么区别,搞懂它

openpyxl、xlrd、xlwt、pandas 都能处理 Excel 表格&#xff0c;但用途和适合的场景不同。今天做个总结&#xff1a; 库名功能支持格式读写支持样式备注openpyxl全面的.xlsx处理库.xlsx&#xff08;Excel2007&#xff09;✅✅✅首选xlrd读取.xls文件的老牌工具.xls&#xff08…...