SSM整合(XML方式)

文章目录

  • SSM整合之后xml方式
  • 1 系统环境
    • 1.1 软件环境
    • 1.2 项目环境
    • 1.3 配置web.xml
    • 1.4 配置jdbc.properties文件
    • 1.5 配置SpringMVC核心文件
    • 1.6 配置Spring的核心文件
    • 1.7 配置MyBatis的核心文件
    • 1.8 配置数据库
    • 1.9 配置文件位置
  • 2 编写后端代码
    • 2.1 编写实体类
    • 2.2 编写Dao接口
    • 2.3 编写Dao映射文件(resource目录下)
    • 2.4 编写Service接口
    • 2.5 编写ServiceImpl实现类
    • 2.6 编写Controller类
    • 2.7 代码映射文件位置
  • 3 编写前端代码
    • 3.1 编写首页index.jsp
    • 3.2 配置Tomcat
    • 3.3 webapp下配置图片
    • 3.4 编写功能页面WEB-INF下
  • 4 运行访问
    • 4.1 请求路径
    • 4.2 增删改查界面
    • 4.3 项目源代码

SSM整合之后xml方式

1 系统环境

1.1 软件环境

软件版本:
IDEA 2021.3
Maven 3.6.3
MySql (Mariadb) 10.10
JDK 1.8

1.2 项目环境

1、创建Maven的web工程
在这里插入图片描述
2、引入pom依赖

 <dependencies><!--servlet的依赖--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope></dependency><!--jsp的依赖--><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version></dependency><!--JSTL表达式--><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--SpringWeb--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.1</version></dependency><!--spring事务--><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>5.3.1</version></dependency><!--jsckson的依赖--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.14.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.14.2</version></dependency><!--mybatis的依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.13</version></dependency><!--spring整合mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.1.1</version></dependency><!--mysql依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--Spring的JDBC--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.17</version></dependency><!--druid连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.16</version></dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!--lombok插件--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency></dependencies>

3 设置插件

 <build><resources><resource><!--所在的目录--><directory>src/main/java</directory><!--包括目录下的.properties .xml文件都会扫描到--><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build>

1.3 配置web.xml

配置前端控制器

    <!--配置前端控制器--><servlet><servlet-name>myssm</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:config/springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>myssm</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

注册监听器

    <!--注册监听器--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:config/applicationContext.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>

注册字符过滤器,处理中文乱码

    <!--注册字符过滤器--><filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>utf-8</param-value></init-param><init-param><param-name>forceRequestEncoding</param-name><param-value>true</param-value></init-param><init-param><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

1.4 配置jdbc.properties文件

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db002
jdbc.username=root
jdbc.password=root

1.5 配置SpringMVC核心文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--springMVC的配置文件  配置controller和其他web相关对象--><!--配置扫描--><context:component-scan base-package="com.hx.controller"/><!--配置视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!--配置注解驱动--><mvc:annotation-driven></mvc:annotation-driven>
</beans>

1.6 配置Spring的核心文件

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--spring的配置文件,声明Service dao等工具类对象--><!-- 加载配置文件 --><context:property-placeholder location="classpath:config/jdbc.properties" /><!-- 数据库连接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!--声明SqlSessionFactoryBean 创建 sqlSessionFactory--><!-- mapper配置,mybatis的SqlSessionFactoryBean --><!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource" ref="dataSource" /><!-- 加载mybatis的全局配置文件 --><property name="configLocation" value="classpath:config/mybatis-config.xml" /></bean><!--声明mybatis的扫描,创建dao对象--><!-- 配置Mapper扫描器 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><property name="basePackage" value="com.hx.dao"/></bean><!--声明service的扫描--><context:component-scan base-package="com.hx.service"/></beans>

1.7 配置MyBatis的核心文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!--设置实体类别名--><typeAliases><package name="com.hx.domain"/></typeAliases><!--配置接口文件映射--><mappers><!--使用package要求:1、mapper文件名称和mapper接口名完全一致,包括大小写2、mapper文件和mapper接口必须在统一目录--><package name="com.hx.dao"/></mappers>
</configuration>

1.8 配置数据库

创建数据库,数据表student
表字段如下:
在这里插入图片描述

1.9 配置文件位置

在这里插入图片描述

2 编写后端代码

2.1 编写实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {private Integer sid;private String sname;private Integer sage;
}

2.2 编写Dao接口

@Mapper
public interface StudentDao {//查询所有List<Student> findAll();//新增数据int addStu(@Param("student") Student student);//删除数据int delStuById(Integer sid);//修改数据int updateStu(Student student);
}

2.3 编写Dao映射文件(resource目录下)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hx.dao.StudentDao"><!--查询所有列表--><select id="findAll" resultType="Student">select sid, sname, sagefrom student;</select><!--新增数据--><insert id="addStu">insert into studentvalues (#{student.sid}, #{student.sname}, #{student.sage});</insert><!--删除数据--><delete id="delStuById">deletefrom studentwhere sid = #{sid}</delete><!--修改数据--><update id="updateStu" parameterType="Student">update studentset sname=#{sname},sage=#{sage}where sid = #{sid}</update>
</mapper>

2.4 编写Service接口

public interface StudentService {//查询所有List<Student> selectAll();//插入数据int insertStu(Student student);int delStuById(Integer sid);int updateStu(Student student);
}

2.5 编写ServiceImpl实现类

@Service
public class StudentServiceImpl implements StudentService {@Autowiredprivate StudentDao studentDao;@Overridepublic List<Student> selectAll() {return studentDao.findAll();}@Overridepublic int insertStu(Student student) {return studentDao.addStu(student);}@Overridepublic int delStuById(Integer sid) {return studentDao.delStuById(sid);}@Overridepublic int updateStu(Student student) {return studentDao.updateStu(student);}
}

2.6 编写Controller类

1、业务Controller

@Controller
@RequestMapping("/student")
public class StudentController {@Autowiredprivate StudentService studentService;@GetMapping("/getAll.do")public ModelAndView getAll() {List<Student> list = studentService.selectAll();ModelAndView mv = new ModelAndView();mv.addObject("list", list);mv.setViewName("listStu");return mv;}@PostMapping("/add.do")public ModelAndView saveStu(Student student) {String tips = "插入失败";ModelAndView mv = new ModelAndView();int i = studentService.insertStu(student);if (i > 0) {tips = "插入成功";}mv.addObject("data1", tips);mv.setViewName("success");return mv;}@RequestMapping("/put.do")public ModelAndView putStu(Student student) {String tips = "修改失败!";ModelAndView mv = new ModelAndView();int i = studentService.updateStu(student);if (i > 0) {tips = "修改成功";}mv.addObject("data2", tips);mv.setViewName("success");return mv;}@RequestMapping(value = "/del.do")public ModelAndView delStu(Integer sid) {String tips = "删除失败!";ModelAndView mv = new ModelAndView();int i = studentService.delStuById(sid);if (i > 0) {tips = "删除成功";}mv.addObject("data3", tips);mv.setViewName("success");return mv;}
}

2、页面相关Controller

@RestController
@RequestMapping("/index")
public class IndexController {@RequestMapping("/m1Add.do")public ModelAndView m1Add(){ModelAndView mv = new ModelAndView();mv.setViewName("add");return mv;}@RequestMapping("/m2Put.do")public ModelAndView m2Put(){ModelAndView mv = new ModelAndView();mv.setViewName("put");return mv;}@RequestMapping("/m3Del.do")public ModelAndView m3Del(){ModelAndView mv = new ModelAndView();mv.setViewName("del");return mv;}
}

2.7 代码映射文件位置

在这里插入图片描述

3 编写前端代码

3.1 编写首页index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title><style>div {background-color: antiquewhite;width: 400px;height: 200px;margin: 100px auto;text-align: center;background-image: url("images/p5.jpg");background-repeat: no-repeat;}a {text-decoration: none;color: orange;}button {margin: 10px 20px;}</style>
</head>
<body>
<div><h1>功能区首页</h1><br><button><a href="/student/getAll.do">查询数据</a></button><button><a href="/index/m1Add.do">插入数据</a></button><br><button><a href="/index/m2Put.do">修改数据</a></button><button><a href="/index/m3Del.do">删除数据</a></button>
</div>
</body>
</html>

3.2 配置Tomcat

在这里插入图片描述在这里插入图片描述

3.3 webapp下配置图片

在这里插入图片描述

3.4 编写功能页面WEB-INF下

在这里插入图片描述

1 编写 listStu.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%String basePath =request.getScheme() + "://" +request.getServerName() + ":" +request.getServerPort() + request.getContextPath() + "/";
%>
<html>
<head><title>展示所有学生信息</title><style>.box1 {width: 300px;height: 400px;text-align: center;margin: 10px auto;background-image: url("/images/p3.jpg");background-repeat: no-repeat;}.box2 {width: 80px;height: 25px;text-align: center;margin: 10px auto;}</style>
</head>
<body>
<div class="box1"><table border="1px" width="300px" height="30px" align="center" cellspacing="0" cellpadding="0"><caption style="font-size: 20px">学生信息表</caption><tr bgcolor="#a9a9a9" text-align="center"><td>学号</td><td>姓名</td><td>年龄</td></tr><%--数据行--%><c:forEach items="${list}" var="stu" varStatus="s"><tr><td>${stu.sid}</td><td>${stu.sname}</td><td>${stu.sage}</td></tr></c:forEach></table><%--返回到首页--%><div class="box2"><form action="<%=basePath%>index.jsp"><input type="submit" name="返回" value="返回功能区"></form></div>
</div>
</body>
</html>

2 编写 add.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%String basePath =request.getScheme() + "://" +request.getServerName() + ":" +request.getServerPort() + request.getContextPath() + "/";
%>
<html>
<head><title>新增学生信息</title><style>div {background-color: antiquewhite;width: 300px;height: 180px;margin: 100px auto;text-align: center;line-height: normal;background-image: url("/images/p1.jpg");background-repeat: no-repeat;}.box2 {width: 80px;height: 25px;text-align: center;margin: auto;}</style>
</head>
<body>
<div><h3>新增数据</h3><form action="/student/add.do" method="post">学号:<input type="text" name="sid" value=""><br>姓名:<input type="text" name="sname" value=""><br>年龄:<input type="text" name="sage" value=""><br><input type="submit" value="添加"><input type="reset" value="重置"></form><%--返回到首页--%><div class="box2"><form action="<%=basePath%>index.jsp"><input type="submit" name="返回" value="返回功能区"></form></div>
</div>
</body>
</html>

3 编写 put.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%String basePath =request.getScheme() + "://" +request.getServerName() + ":" +request.getServerPort() + request.getContextPath() + "/";
%>
<html>
<head><title>修改学生信息</title><style>div {background-color: antiquewhite;width: 300px;height: 180px;margin: 100px auto;text-align: center;line-height: normal;background-image: url("/images/p4.jpg");background-repeat: no-repeat;}.box2 {width: 80px;height: 25px;text-align: center;margin: auto;}</style>
</head>
<body>
<div><h3>根据学号修改数据</h3><form action="/student/put.do" method="post">学号:<input type="text" name="sid" value=""><br>姓名:<input type="text" name="sname" value=""><br>年龄:<input type="text" name="sage" value=""><br><input type="submit" value="修改"><input type="reset" value="重置"></form><%--返回到首页--%><div class="box2"><form action="<%=basePath%>index.jsp"><input type="submit" name="返回" value="返回功能区"></form></div>
</div>
</body>
</html>

4 编写 del.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%String basePath =request.getScheme() + "://" +request.getServerName() + ":" +request.getServerPort() + request.getContextPath() + "/";
%>
<html>
<head><title>删除学生信息</title><style>div {background-color: beige;width: 300px;height: 150px;margin: 100px auto;text-align: center;background-image: url("/images/p2.jpg");background-repeat: no-repeat;}.box2 {width: 80px;height: 25px;text-align: center;margin: auto;}</style>
</head>
<body>
<div><h3>根据学号删除数据</h3><form action="/student/del.do" method="get"><input type="text" placeholder="请输入学号" name="sid" value=""><input type="submit" value="删除"></form><%--返回到首页--%><div class="box2"><form action="<%=basePath%>index.jsp"><input type="submit" name="返回" value="返回功能区"></form></div>
</div>
</body>
</html>

5 编写success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%String basePath =request.getScheme() + "://" +request.getServerName() + ":" +request.getServerPort() + request.getContextPath() + "/";
%>
<html>
<head><title>Title</title><style>.box1{width: 200px;height: 150px;background-color: lightgoldenrodyellow;margin: 0 auto;text-align: center;}</style>
</head>
<body>
<div class="box1"><div class="box2"><div>插入:${data1}</div><div>修改:${data2}</div><div>删除:${data3}</div></div><%--返回到首页--%><div><form action="<%=basePath%>index.jsp"><input type="submit" name="返回" value="返回功能区"></form></div>
</div>
</body>
</html>

4 运行访问

4.1 请求路径

首页:http://localhost:8080
在这里插入图片描述

4.2 增删改查界面

  • 查询功能
    在这里插入图片描述
  • 新增功能
    在这里插入图片描述
  • 修改功能
    在这里插入图片描述
  • 删除功能
    在这里插入图片描述

4.3 项目源代码

https://gitee.com/allureyu/ssm__xml.git

以上纯属个人一手编写,欢迎指教,不喜勿喷!

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

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

相关文章

Postman接口自动化测试实战,从0到1一篇彻底打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 postman中的测试 …

【设计模式】责任链模式

顾名思义&#xff0c;责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;为请求创建了一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中&#xff0c;通常每个接收者…

SegFormer之模型训练

单卡训练&#xff0c;所有配置文件里的【SyncBN】改为【BN】 启动训练 &#xff08;1&#xff09;终端直接运行 python tools/train.py local_configs/segformer/B1/segformer.b1.512x512.ade.160k.py &#xff08;2&#xff09;在编辑器中运行 在 [config] 前面加上’–‘将…

React源码解析18(6)------ 实现useState

摘要 在上一篇文章中&#xff0c;我们已经实现了函数组件。同时可以正常通过render进行渲染。 而通过之前的文章&#xff0c;beginWork和completeWork也已经有了基本的架子。现在我们可以去实现useState了。 实现之前&#xff0c;我们要先修改一下我们的index.js文件&#x…

从零开始,快速打造租车服务小程序的分享

随着移动互联网的发展&#xff0c;小程序成为了企业推广和服务的重要手段之一。租车服务行业也不例外&#xff0c;通过打造一款租车服务小程序&#xff0c;企业可以更好地与用户进行互动和交流&#xff0c;提供更方便快捷的租车服务。本文将介绍如何利用第三方制作平台/工具快速…

webpack 创建VUE项目

1、安装 node.js 下载地址&#xff1a;https://nodejs.org/en/ 下载完成以后点击安装&#xff0c;全部下一步即可 安装完成&#xff0c;输入命令验证 node -vnpm -v2.搭建VUE环境 输入命令&#xff0c;全局安装 npm install vue-cli -g安装完成后输入命令 查看 vue --ver…

HCIP-OpenStack搭建

1、OpenStack概述 OpenStack是一种云操作系统&#xff0c;OpenStack是虚拟机、裸金属和容器的云基础架构。可控制整个数据中心的大型计算、存储和网络资源池&#xff0c;所有资源都通过具有通用身份验证机制的API进行管理和配置。管理员也可通过Web界面控制&#xff0c;同时授…

【C语言】小游戏-扫雷(清屏+递归展开+标记)

大家好&#xff0c;我是深鱼~ 目录 一、游戏介绍 二、文件分装 三、代码实现步骤 1.制作简易游戏菜单 2. 初始化棋盘(11*11) 3.打印棋盘(9*9) 4.布置雷 5.计算(x,y)周围8个坐标的和 6.排查雷 <1>清屏后打印棋盘 <2>递归展开 <3>标记雷 四、完整代…

jupyter默认工作目录的更改

1、生成配置文件&#xff1a;打开Anaconda Prompt&#xff0c;输入如下命令 jupyter notebook --generate-config询问[y/N]时输入y 2、配置文件修改&#xff1a;根据打印路径打开配置文件jupyter_notebook_config.py&#xff0c;全文搜索找到notebook_dir所在位置。在单引号中…

vue3-vuex

一、概念 &#xff08;1&#xff09;Vuex 是一个状态和数据管理的框架&#xff0c;负责管理项目中多个组件和多个页面共享的数据。 &#xff08;2&#xff09;在开发项目的时候&#xff0c;我们就会把数据分成两个部分&#xff0c;一种数据是在某个组件内部使用&#xff0c;我…

数据库相关面试题

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 mysql怎么优化 : MySQL的优化可以从以下几个方面入手&#xff1a; 数据库设计优化&#xff1a;合理设计表结构&#xff0c;选择合适的数…

《开放加速规范AI服务器设计指南》发布,应对生成式AI爆发算力挑战

8月10日&#xff0c;在2023年开放计算社区中国峰会(OCP China Day 2023)上&#xff0c;《开放加速规范AI服务器设计指南》&#xff08;以下简称《指南》&#xff09;发布。《指南》面向生成式AI应用场景&#xff0c;进一步发展和完善了开放加速规范AI服务器的设计理论和设计方法…

c语言——颠倒字符串顺序

//颠倒字符串顺序 //列如&#xff1a;我们将runningman利用递归翻转计算。 #include<stdio.h> void reverseSentence(); int main() {printf("字符串输入:");reverseSentence();return 0; }void reverseSentence() {char c;scanf("%c",&c);if(c!…

网络安全(自学)

想自学网络安全&#xff08;黑客技术&#xff09;首先你得了解什么是网络安全&#xff01;什么是黑客&#xff01; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全…

探讨uniapp的数据缓存问题

异步就是不管保没保存成功&#xff0c;程序都会继续往下执行。同步是等保存成功了&#xff0c;才会执行下面的代码。使用异步&#xff0c;性能会更好&#xff1b;而使用同步&#xff0c;数据会更安全。 1 uni.setStorage(OBJECT) 将数据存储在本地缓存中指定的 key 中&#x…

kafka集成篇

kafka的Java客户端 生产者 1.引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.6.3</version></dependency>2.生产者发送消息的基本实现 /*** 消息的发送⽅*/ …

LeetCode 热题 100(四):48. 旋转图像、240. 搜索二维矩阵 II、234. 回文链表

一.48. 旋转图像 题目要求&#xff1a;就是一个顺时针的旋转过程。 思路&#xff1a;观察矩阵&#xff0c;得出翻转前第i行的第J个元素 等于 翻转后倒数第i列的第J个元素&#xff0c;举例说明&#xff0c;第1行第2个元素为“2”&#xff0c;翻转后到了 倒数第1列的第2个元素…

Ghost-free High Dynamic Range Imaging withContext-aware Transformer

Abstract 高动态范围(HDR)去鬼算法旨在生成具有真实感细节的无鬼HDR图像。 受感受野局部性的限制&#xff0c;现有的基于CNN的方法在大运动和严重饱和度的情况下容易产生重影伪影和强度畸变。 本文提出了一种新的上下文感知视觉转换器&#xff08;CA-VIT&#xff09;用于高动态…

共读《科研论文配图绘制指南--基于Python》学习重点

Book 《科研论文配图绘制指南–基于Python》 特别提示 学习内容&#xff08;书籍前3章&#xff09;开营时在群内以PDF形式发放 课程背景 系统地介绍基于Python的科研论文配图的绘制技巧&#xff0c;提高科研工作者的绘图效率&#xff1b; 100多种图形的详细绘制方法&#…

ssh做端口转发

问题 主机1能访问外网&#xff0c;主机2 不能访问外网外部主机想要访问主机2 解决 在主机1和主机2之间建隧道。 在主机1上做本地端口转发。可以用ssh来做本地端口转发(转发到远端)。 方法&#xff1a; 在&#xff08;本地&#xff09;主机1上执行 ssh -C -f -N -g -L 10.…