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

03:Spring之Web

一:Spring整合web环境

1:web的三大组件

  • Servlet:核心组件,负责处理请求和生成响应。

  • Filter:用于请求和响应的预处理和后处理,增强功能。

  • Listener:用于监听 Web 应用中的事件,实现事件驱动的功能。

2:Spring整合Web的思路与具体实现

Spring 整合 Web 应用的思路是通过将 Spring 框架与 Java Web 技术(如 Servlet、Filter 等)结合,利用 Spring 的 IoC(控制反转)和 AOP(面向切面编程)等特性,简化 Web 开发的复杂性,并提供更强大的功能支持。

2.1:思路

  1. 核心思想

    • 将 Spring 容器与 Web 应用的生命周期绑定,确保 Spring 管理的 Bean 可以在 Web 应用中使用。

    • 使用 Spring MVC 框架处理 Web 请求,替代传统的 Servlet 开发模式。

    • 通过配置或注解的方式,简化 Web 组件的开发和依赖注入。

  2. 关键点

    • Spring 容器的初始化:在 Web 应用启动时初始化 Spring 容器,并将其存储到 ServletContext 中。

    • DispatcherServlet:作为 Spring MVC 的核心组件,负责接收所有请求并将其分发给对应的控制器(Controller)。

    • 依赖注入:通过 Spring 的 IoC 容器管理 Web 层、服务层和数据层的 Bean,实现松耦合。

    • AOP 支持:通过 AOP 实现日志、事务、权限等横切关注点的统一管理。

2.2:具体实现步骤

1:引入依赖

在 Maven 或 Gradle 项目中引入 Spring 和 Spring MVC 的相关依赖:

xml

<!-- Spring Web MVC -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.23</version>
</dependency><!-- Servlet API -->
<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope>
</dependency>

2:配置 Spring 容器

Spring 容器需要在 Web 应用启动时初始化。可以通过以下两种方式实现:

方式 1:基于 web.xml 配置

在 web.xml 中配置 ContextLoaderListener 和 DispatcherServlet

<!-- 初始化 Spring 容器 -->
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value>
</context-param><!-- 监听器:启动时加载 Spring 容器 -->
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener><!-- 配置 DispatcherServlet -->
<servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

方式 2:基于 Java 配置(无 web.xml

public class MyWebAppInitializer implements WebApplicationInitializer {@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {// 创建 Spring 根容器AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext();rootContext.register(AppConfig.class); // 注册 Spring 配置类servletContext.addListener(new ContextLoaderListener(rootContext));// 创建 Spring MVC 容器AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();mvcContext.register(WebConfig.class); // 注册 Spring MVC 配置类// 配置 DispatcherServletDispatcherServlet dispatcherServlet = new DispatcherServlet(mvcContext);ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", dispatcherServlet);dispatcher.setLoadOnStartup(1);dispatcher.addMapping("/");}
}
package com.zgs.web.config;import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.InternalResourceViewResolver;import java.util.List;/*** @author guisong.zhang* @date 2025/2/12 23:50* @description 类描述*/
@Configuration // 标记为配置类
@EnableWebMvc  // 启用 Spring MVC
@ComponentScan(basePackages = "com.zgs.controller") // 扫描控制器所在的包
public class WebConfig implements WebMvcConfigurer {// 配置视图解析器@Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/"); // 视图文件的前缀resolver.setSuffix(".jsp");            // 视图文件的后缀registry.viewResolver(resolver);}// 配置静态资源处理@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**") // 静态资源的 URL 路径.addResourceLocations("/static/"); // 静态资源的实际存放位置}// 配置消息转换器@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {// 添加 JSON 消息转换器converters.add(new MappingJackson2HttpMessageConverter());}
}

3. 配置 Spring MVC

在 Spring MVC 配置文件中(如 spring-mvc.xml 或 Java 配置类),配置视图解析器、静态资源处理、注解驱动等:

<!-- 启用注解驱动 -->
<mvc:annotation-driven /><!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/" /><property name="suffix" value=".jsp" />
</bean><!-- 静态资源处理 -->
<mvc:resources mapping="/static/**" location="/static/" />

或者使用 Java 配置:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.zgs.controller")
public class WebConfig implements WebMvcConfigurer {@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/");resolver.setSuffix(".jsp");return resolver;}@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/static/**").addResourceLocations("/static/");}
}

4. 编写 Controller

使用 @Controller 注解定义控制器,处理请求并返回视图或数据

@Controller
public class HomeController {@RequestMapping("/")public String home(Model model) {model.addAttribute("message", "Hello, Spring MVC!");return "home"; // 返回视图名称}@GetMapping("/api/data")@ResponseBodypublic String getData() {return "This is a JSON response";}
}

5. 部署和运行

将应用打包为 WAR 文件并部署到 Tomcat 或其他 Servlet 容器中,访问 / 路径即可看到效果。

2.3:Spring 整合 Web 的优势

  1. 松耦合:通过依赖注入管理 Bean,降低组件之间的耦合度。

  2. 简化开发:注解驱动和自动配置减少了 XML 配置的复杂性。

  3. 强大的功能支持:Spring MVC 提供了数据绑定、表单处理、文件上传、国际化等功能。

  4. 易于测试:Spring 的依赖注入使得单元测试和集成测试更加方便。

  5. 扩展性强:可以轻松集成其他 Spring 生态组件(如 Spring Security、Spring Data 等)。

通过以上步骤,Spring 可以很好地与 Web 应用整合。

2.4:其他方式创建servlet

可以直接在页面访问这个servlet来执行对应的业务,但是这样有一个弊端就是每个业务都需要对应的servlet,增加代码量且每次都创建容器浪费资源。

@WebServlet(urlPatterns = "/accountServlet")
public class AccountServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringConfig.class);AccountService accountService = applicationContext.getBean(AccountService.class);accountService.transBalance("zgs", "yh", 500);}
}
所以,我们现在需要做如下优化
ApplicationContext创建一次,配置类加载一次;
最好web服务器启动时,就执行第1步操作,后续直接从容器中获取Bean使用即可;
ApplicationContext的引用需要在web层任何位置都可以获取到。
优化方法如下
1:在ServletContextListener的contextInitialized方法中执行ApplicationContext的创建。或在Servlet的init 方法中执行ApplicationContext的创建,并给Servlet的load-on-startup属性一个数字值,确保服务器启动 Servlet就创建;
2:将创建好的ApplicationContext存储到ServletContext域中,这样整个web层任何位置就都可以获取到了。

二:MVC的框架思想与设计思路

相关文章:

03:Spring之Web

一&#xff1a;Spring整合web环境 1&#xff1a;web的三大组件 Servlet&#xff1a;核心组件&#xff0c;负责处理请求和生成响应。 Filter&#xff1a;用于请求和响应的预处理和后处理&#xff0c;增强功能。 Listener&#xff1a;用于监听 Web 应用中的事件&#xff0c;实…...

OpenWebUI使用DeepSeek R1满血版,DeepSeek R1 API调用

https://www.dong-blog.fun/post/1935 API调用 登录这里&#xff1a; https://console.volcengine.com/ark/region:arkcn-beijing/endpoint?config%7B%7D 注册后&#xff0c;创建DeepSeek R1 API接入点&#xff1a; 接着Python就可以直接调用了&#xff1a; import os fro…...

DeepSeek模型场景应用:基于腾讯云HAI搭建IDEA开发助手

前言 这段时间国产大模型DeepSeek十分火爆&#xff0c;DeepSeek模型凭借其强大的语言理解和生成能力&#xff0c;为开发场景带来了全新的可能性&#xff0c;DeepSeek模型场景应用也是十分广泛&#xff0c;而基于腾讯云HAI搭建IDEA开发助手&#xff0c;更是将这种潜力发挥到了极…...

HttpServletRequest 作用

HttpServletRequest 接口在 Java Servlet API 中扮演着至关重要的角色&#xff0c;它是 Servlet 处理客户端 HTTP 请求的核心对象。 每次客户端&#xff08;例如浏览器&#xff09;向服务器发送一个 HTTP 请求时&#xff0c;Servlet 容器&#xff08;例如 Tomcat&#xff09;都…...

Python----PyQt开发(PyQt高级:手搓一个简单的记事本)

一、效果展示 二、设计PyQt界面 2.1、设置图标 self.setWindowIcon(QIcon(./images/icon/1.png)) # 窗口图标 2.2、设置标题 self.file_name 无标题-新建文本文档 # 默认文件名 self.setWindowTitle(self.file_name) # 窗口标题 2.3、添加菜单栏、工具栏、状态栏 # 创…...

MySQL 索引失效案例:字符集不匹配的隐蔽影响

引言 在 MySQL 数据库世界里&#xff0c;索引失效往往是性能问题的罪魁祸首。你是否曾遇到过这样的情况&#xff1a;明明加了索引&#xff0c;查询却慢如蜗牛&#xff1f;你是否曾以为小表查询就一定高效&#xff1f;本文将揭示一个真实的案例&#xff0c;一个容易被忽视的“隐…...

MySQL中类似PostgreSQL中的string_agg函数--GROUP_CONCAT函数的使用

文章目录 结论&#xff1a;MySQL没有string_agg&#xff0c;但有GROUP_CONCATGROUP_CONCAT函数的基本用法示例注意事项 系统变量 group_concat_max_len 如何查看和设置查看当前的group_concat_max_len值设置group_concat_max_len值 相关源码相关链接 结论&#xff1a;MySQL没有…...

科普:数据血缘理论中:任务血缘、表血缘、字段血缘

在讨论数据血缘时通常我们提到的是数据库血缘、数据表血缘和数据字段血缘&#xff0c;而“任务血缘”这一术语更多是在特定技术场景&#xff08;如实时任务运维&#xff09;中使用。 数据血缘分类 表血缘 表血缘&#xff08;或数据表血缘&#xff09;是指数据在不同数据表之…...

凸性相关问题

内容大致上包括&#xff1a; 四边形不等式&#xff0c;决策单调性闵可夫斯基和优化 d p dp dpslope trick 优化 d p dp dp其他凸性相关问题 决策单调性 1.1 一些约定 对于 n m n\times m nm 的矩阵 A A A&#xff0c;定义&#xff1a; 子矩阵 A [ i 1 , . . . , i p …...

WPS计算机二级•文档的文本样式与编号

听说这是目录哦 标题级别❤️新建文本样式 快速套用格式&#x1fa77;设置标题样式 自定义设置多级编号&#x1f9e1;使用自动编号&#x1f49b;取消自动编号&#x1f49a;设置 页面边框&#x1f499;添加水印&#x1fa75;排版技巧怎么分栏&#x1f49c;添加空白下划线&#x…...

开源堡垒机 JumpServer 社区版实战教程:一步步构建企业安全运维环境

文章目录 开源堡垒机 JumpServer 社区版实战教程&#xff1a;一步步构建企业安全运维环境一、访问JumpServer1.1 登录1.2 功能模块1.3 系统设置1.3.1 基本设置1.3.2 邮件设置 二、用户管理2.1 场景2.2 创建用户2.3 用户登录密码重置 三、资产管理3.1 准备工作3.2 登录控制台3.3…...

二、数据类型、运算符

1. 数据的表示详解 1.1 算术运算符 整数在计算机中的存储原理先从最基本的算术运算符开始学习&#xff0c;算术运算符有 - * / % &#xff0c;其中*表示乘法&#xff0c;/表示除法&#xff0c;%表示取余数 需要我们注意以下几点 /: 两个整数相除&#xff0c;结果也是一个…...

结构形模式---桥接模式

概念 桥接模式是一种结构化模式&#xff0c;是将一个大类或者一系列的紧密相关的类拆分为抽象和现实两个独立部分的层次结构&#xff0c;通过引用独立层次对象的组合实现类。 桥接模式可以将庞杂类拆分为几个类层次结构。 此后&#xff0c; 你可以修改任意一个类层次结构而不…...

计算机网络知识速记:HTTP1.0和HTTP1.1

计算机网络知识速记&#xff1a;HTTP1.0和HTTP1.1 1. 基本概念 1.1 HTTP1.0 HTTP1.0是1996年发布的第一个正式版本&#xff0c;主要用于客户端与服务器之间的简单请求和响应交互。它的设计理念相对简单&#xff0c;适合处理一些基本的网页服务。 1.2 HTTP1.1 HTTP1.1是HTT…...

Windows下查看WIFI密码

目录 命令行查看历史WIFI netsh wlan show profiles 命令行查看某一特定WIFI密码 netsh wlan show profile name “WIFI名” keyclear 打开命令行https://blog.csdn.net/weixin_70822378/article/details/145598560?spm1001.2014.3001.5502 命令行查看历史WIFI nets…...

Android车机DIY开发之软件篇(十二) AOSP12下载编译

Android车机DIY开发之软件篇(十二) AOSP12下载编译 sudo apt-get update sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib gmultilib libc6-dev-i386 lib32ncurses5-dev libx11-dev lib32z-dev ccache libgl1-mesa-…...

Datawhale Ollama教程笔记2

本期学习易错点&#xff1a; 改文件后缀 改了models的存储地址后&#xff0c;把下载和新建的文件存储在什么地方 注册hugging face,找到token. 学习手册&#xff1a;https://datawhalechina.github.io/handy-ollama/#/ 第 3 章 自定义导入模型https://datawhalechina.gith…...

ClickHouse的前世今生

ClickHouse是一款由Yandex开发的高性能列式存储数据库管理系统,专为在线分析处理(OLAP)设计,适用于实时数据分析、大规模数据处理和复杂查询场景。以下是关于ClickHouse的安装、使用及应用场景的详细介绍: 一、ClickHouse的安装 ClickHouse支持多种操作系统,包括Linux、…...

SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)

SSH隧道Nginx&#xff1a;内网资源访问的绿色通道 问题背景 模拟生产环境&#xff0c;使用两层Nginx做反向代理&#xff0c;请求公网IP来访问内网服务器的网站。通过ssh隧道反向代理来实现&#xff0c;重点分析一下nginx反代的基础配置。 实验环境 1、启动内网服务器的tomca…...

html文件怎么转换成pdf文件,2025最新教程

将HTML文件转换成PDF文件&#xff0c;可以采取以下几种方法&#xff1a; 一、使用浏览器内置功能 打开HTML文件&#xff1a;在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框&#xff1a;按下CtrlP&#xff08;Windows&#xff09;或CommandP&#xff08;M…...

大促备战中稳定性建设策略与总结

文章目录 接口流量评估、上下游依赖梳理降级能力建设应急响应预案建设压力测试监控报警建设容灾演练 之前也专门写过日常稳定性建设的一些策略&#xff0c;传送门 -> 日常稳定性建设策略与总结&#xff0c;本文想专门聊聊大促期间做的一些稳定性保障&#xff0c;顺便记录自己…...

vscode/cursor+godot C#中使用socketIO

在 Visual Studio Code(VS Code)中安装 NuGet 包&#xff08;例如SocketIOClient&#xff09;&#xff0c;你可以通过以下几种方法&#xff1a; 方法 1&#xff1a;使用dotnet cli 打开终端&#xff1a;在 VS Code 中按下Ctrl 或者通过菜单View -> Terminal打开终端。 导…...

Uniapp 原生组件层级过高问题及解决方案

文章目录 一、引言&#x1f3c5;二、问题描述&#x1f4cc;三、问题原因❓四、解决方案&#x1f4af;4.1 使用 cover-view 和 cover-image4.2 使用 subNVue 子窗体4.3 动态隐藏原生组件4.4 使用 v-if 或 v-show 控制组件显示4.5 使用 position: fixed 布局 五、总结&#x1f38…...

jQuery介绍(快速、简洁JavaScript库,诞生于2006年,主要目标是简化HTML文档操作、事件处理、动画和Ajax交互)

文章目录 **核心功能 & 亮点**1. **简化 DOM 操作**2. **链式调用**3. **跨浏览器兼容**4. **便捷的事件绑定**5. **Ajax 封装**6. **动画效果** **现状与适用场景**- **传统项目维护**&#xff1a;许多旧系统&#xff08;如 WordPress 插件、老企业网站&#xff09;仍依赖…...

第三节 docker基础之---Commit+Dockerfile制作

docker目前镜像的制作两种方法&#xff1a; 1&#xff0c;基于docker Commit制作镜像 2&#xff0c;基于dockerfile制作镜像&#xff0c;Dockerfile 为主流的制作方式 如果不制作镜像删除容器之后则里面配置的文件也随之删除&#xff1a; [rootdocker ~]# docker images 查看…...

通过openresty和lua实现随机壁纸

效果&#xff1a; 图片存放路径&#xff1a; /home/jobs/webs/imgs/ ├── default/ │ ├── image1.jpg │ ├── image2.png ├── cats/ │ ├── cat1.jpg │ ├── cat2.gif ├── dogs/ │ ├── dog1.jpg访问http://demo.com/imgs/default 随机返回…...

企业网站如何快速实现全站HTTPS安全访问?

当用户访问您的网站时&#xff0c;若您的企业网站仍以HTTP协议运行&#xff0c;浏览器“不安全”警告不仅会吓退潜在客户&#xff0c;还会拖累搜索引擎排名&#xff0c;直接影响业务转化和品牌声誉。实现全站HTTPS安全访问&#xff0c;已成为企业网站运营的必选项。 本文为您详…...

《花未眠》夜间四时醒来,海棠花未眠

《花未眠》夜间四时醒来&#xff0c;海棠花未眠 川端康成&#xff08;1899-1972&#xff09;日本作家。新感觉派。1968年以“敏锐的感受&#xff0c;高超的叙事技巧&#xff0c;表现日本人的精神实质”获诺贝尔文学奖。诺贝尔文学奖提名作有《雪国》《千羽鹤》《古都》。 陈德文…...

在nodejs中使用RabbitMQ(三)Routing、Topics、Headers

示例一、Routing exchange类型direct&#xff0c;根据消息的routekey将消息直接转发到指定队列。producer.ts 生产者主要发送消息&#xff0c;consumer.ts负责接收消息&#xff0c;同时也都可以创建exchange交换机&#xff0c;创建队列&#xff0c;为队列绑定exchange&#xff…...

kubeconfig存放内容有哪些

kubeconfig 文件是 Kubernetes 用于配置和认证的核心文件。它包含了关于如何访问 Kubernetes 集群的信息。以下是 kubeconfig 文件中常见的一些内容结构&#xff1a; apiVersion: 指定 kubeconfig 的版本&#xff0c;通常是 v1。clusters: 定义了集群的信息&#xff0c;包括集…...

图神经网络是什么,有什么实际应用

图神经网络是什么 图神经网络(Graph Neural Network,GNN)是一种专门用于处理图结构数据的神经网络,它能对图中的节点、边和整个图进行学习和推理,在社交网络分析、生物信息学、推荐系统等领域应用广泛。以下是其原理及示例说明: 图神经网络原理 节点表示学习:为图中每…...

如何将DeepSeek配置到离线电脑(内网)中?— 附Ollama夸克下载链接

1、在外网和内网电脑中分别安装Ollama 如下载速度较慢&#xff0c;安装包附在本文最后。 下载完成后傻瓜一键安装即可。 2、下载deepseek 在外网电脑中启动命令行输入下载命令。以下载8B为例&#xff0c;其他版本同。 ollama run deepseek-r1:8b 3、资源转移 在外网电脑…...

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动

拯救者Y9000P双系统ubuntu22.04安装4070显卡驱动 1. 前情&#xff1a; 1TB的硬盘&#xff0c;分了120G作ubuntu22.04。/boot: 300MB, / : 40GB, /home: 75G, 其余作swap area。 2. 一开始按这个教程&#xff1a;对我无效 https://blog.csdn.net/Eric_xkk/article/details/1…...

vue项目 Axios创建拦截器

Axios 1. Axios 和 Ajax 简介2. Axios 和 Ajax 的区别3. 从 按钮 到 Axios请求后端接口的 大致顺序 1. Axios 和 Ajax 简介 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09; 不是一种技术&#xff0c;而是一个编程技术概念&#xff0c;核心是通过 XMLHttpReques…...

web前端第三次作业

题目 本期作业 WEB第三次作业 请使用JS实一个网页中登录窗口的显示/隐藏&#xff0c;页面中拖动移动&#xff0c;并且添加了边界判断的网页效 代码图片 效果展示 代码 <!DOCTYPE html> <html lang"zh"> <head> <meta charset"UTF-8&qu…...

滑动窗口算法笔记(C++)

滑动窗口算法是一种基于双指针技巧的高效算法, 常用于解决数组或字符串上的一些特定问题. 算法讲解 基本概念 滑动窗口算法可以想象成在一个数组或字符串上有一个固定大小或者可变大小的窗口, 该窗口在数组或字符串上从左到右滑动. 在滑动的过程中, 根据具体问题的要求, 对窗…...

day02冒泡排序

思路&#xff1a; 外层循环控制循环次数(i<len)&#xff0c;设置swapFlagfalse内层循环j1(j<len-i)&#xff0c;两两(j和j-1)比较&#xff0c;逆序则交换内层每次循环结束&#xff0c;没有交换&#xff0c;则break结束 内层循环j从1开始&#xff0c;小于len&#xff0c;…...

【工业场景】用YOLOv8实现火灾识别

火灾识别任务是工业领域急需关注的重点安全事项,其应用场景和背景意义主要体现在以下几个方面: 应用场景:工业场所:在工厂、仓库等工业场所中,火灾是造成重大财产损失和人员伤亡的主要原因之一。利用火灾识别技术可以及时发现火灾迹象,采取相应的应急措施,保障人员安全和…...

管式超滤膜分离技术都可以应用到哪些行业?

管式超滤膜分离技术由于其高效、稳定和适应性强的特点&#xff0c;在多个行业都有广泛的应用&#xff1a; 1. 生物制药与医药行业 纯化与浓缩&#xff1a;在生物药品的下游处理阶段&#xff0c;管式超滤膜被用来纯化抗体、疫苗、蛋白质等生物大分子&#xff0c;通过精确筛选分子…...

数智百问 | 制造企业如何降低产线检测数据的存储和管理成本?

在《“十四五”智能制造发展规划》等政策的推动下&#xff0c;以及新能源汽车、消费电子等品牌商对产品质量和供应商智能化水平要求的提升&#xff0c;半导体、电子制造、动力电池等先进制造行业企业纷纷推进产线智能化升级&#xff0c;并投入大量机器视觉检测设备以实现自动化…...

Linux中getifaddrs函数

文章目录 **函数原型****参数****返回值****释放资源****`struct ifaddrs` 结构****示例代码****输出示例****相关函数****总结**getifaddrs 是 Linux(以及其他 Unix-like 系统)中用于获取本机网络接口信息的系统调用。它提供了一种简单的方法来获取所有网络接口的地址信息,…...

Barra多因子模型

Barra模型 1. Barra模型概述1.1 Barra模型的历史与发展1.2 Barra模型在全球市场中的应用 2. Barra模型的基本原理2.1 APT理论基础2.2 Barra模型的基本原理&#xff1a;因子模型的核心假设因子暴露 β i j \beta_{ij} βij​的假设因子收益率 f j f_j fj​的假设 3. Barra模型的…...

P5:使用pytorch实现运动鞋识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 我的环境 语言环境&#xff1a;python 3.7.12 编译器&#xff1a;pycharm 深度学习环境&#xff1a;tensorflow 2.7.0 数据&#xff1a;本地数据集-运动鞋 一…...

redis持久化原理相关面试题剖析

一、Redis 持久化的机制是什么&#xff1f; Redis是内存数据库&#xff0c;数据都是存储在内存中&#xff0c;为了避免进程退出导致数据的永久丢失&#xff0c;需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘&#xff1b;当下次 Redis重启时&#xff0c;利用…...

动态规划LeetCode-1049.最后一块石头的重量Ⅱ

有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; 如果 x y&…...

Linux Media 子系统 V4l2

一 创建 V4l2 的 entity 在Linux内核的Media Controller框架中&#xff0c;V4L2设备作为实体&#xff08;entity&#xff09;的注册过程涉及以下步骤&#xff1a; 1. 初始化Media Controller结构 驱动首先创建一个media_device实例&#xff0c;并与V4L2设备&#xff08;如v4…...

民兵装备管理系统DW-S300|支持国产化、自主研发

民兵装备器材管理系统&#xff08;智装备DW-S301&#xff09;是一套成熟系统&#xff0c;依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 装备接收与登记 民兵装备抵达仓库时&#…...

Pro Git --(Windows)总结

Pro Git --Windows 文章目录 Pro Git --Windows知识来源Git入门与进阶 知识来源 廖雪峰的官方网站 Git教程 Git入门与进阶 # 初步学习Git #个人建议先大致过一遍&#xff0c;对Git有个大致的理解&#xff0c;然后在实操项目# 创建一个空目录 $ mkdir learngit $ cd learngit …...

加油口,电梯门的对称性对 TCP/IP 传输协议的启示

春节期间河南穷游屡次加油站排队加油之启示。 不考虑有意的设计因素&#xff0c;汽车加油口概率性分布在车身的左边或者右边&#xff0c;这个偶然的小细节让加油机同时为两辆车加油而无需额外的加油管。 如果所有车辆加油口都在同一侧&#xff0c;加油站的加油机就只能给一边的…...

【进阶】JVM篇

为什么学习jvm 1、面试的需要 学过java的程序员对jvm应该不陌生&#xff0c;程序员为什么要学习jvm呢&#xff1f;其实不懂jvm也可以照样写出优质的代码&#xff0c;但是不懂jvm会被大厂的面试官虐的体无完肤。 2、高级程序员需要了解 jvm作用 jvm负责把编译后的字节码转换…...