JavaWeb
JavaWeb
- 一、JavaWeb 是什么?
- 二、JavaWeb 发展阶段
- 三、JavaWeb 常用架构
- Servlet + JSP 架构
- SSH 架构
- SSM 架构
- SpringBoot架构
- SpringCloud架构
- 四、JavaWeb 项目结构(带web.xml的)
- 五、如何打包
- 六、war包部署
- 1. Tomcat 介绍
- 2. Tomcat目录结构
- 3. 开始部署项目
- 七、jar 包部署
- 扩展:全局配置文件优先级
一、JavaWeb 是什么?
JavaWeb是指用Java技术来解决Web互联网领域的技术栈。基于B/S架构
知识小贴士:
Java 是什么?
Java不仅是一门编程语言,还是一个完整的技术体系。它包括了Java SE(标准版)、Java EE(企业版)和Java ME(微型版)等多个版本,以及Java虚拟机(JVM)、Java类库、Java开发工具等组成部分。此外,Java还拥有庞大的开源社区和丰富的第三方库和框架,为开发者提供了强大的支持和帮助。
Web 是什么?
- Web(万维网):是一个庞大的、分布式的信息系统,它使用超文本传输协议(HTTP)等协议在互联网上传输超文本标记语言(HTML)文档和其他类型的数据。
- Web由许多不同的组件和技术构成,包括Web服务器、Web客户端(如浏览器)、Web编程语言(如HTML、CSS、JavaScript)、Web框架(如React、Vue)、数据库等。
B/S架构 是什么?
- B/S架构:浏览器/服务器,我们上网时候所访问的网站基本上全是该模式的项目,用户不需要下载任何东西,只需要浏览器就可以访问到这个项目。
- C/S架构:客户端/服务器,比如QQ或者一些大型游戏,用户需要先下载软件的客户端,然后才能使用
Web客户端 是什么?
Web客户端是用户与Web应用进行交互的界面,它可以是浏览器、移动应用或其他类型的客户端软件。
在JavaWeb开发中,Web客户端主要涉及的技术包括:
- HTML/CSS/JavaScript:这是构建网页的基础技术。HTML用于定义网页的结构和内容,CSS用于美化网页的外观和布局,而JavaScript则用于实现网页的交互功能。
- 前端框架:如React、Vue等,这些框架提供了更高效的开发方式,允许开发者创建动态、响应式的用户界面。
- 浏览器:作为Web客户端的主要表现形式,浏览器负责解析和渲染HTML、CSS和JavaScript,呈现给用户一个可视化的界面。
Web服务端 是什么?
Web服务端是处理用户请求、执行业务逻辑并返回响应的后台系统。
在JavaWeb开发中,Web服务端主要涉及的技术包括:
- Java Servlet:Servlet是Java EE标准的一部分,用于处理HTTP请求和响应。它是Web服务端的核心组件之一。
- JSP(JavaServer Pages):JSP是一种用于生成动态网页内容的技术。它允许开发者在HTML页面中嵌入Java代码,从而动态地生成网页内容。
- Spring框架:Spring是一个轻量级的框架,广泛应用于企业级应用开发。它提供了依赖注入、面向切面编程等功能,并支持构建Web应用程序。
- 数据库:Web服务端通常需要与数据库进行交互,以存储和检索数据。常用的数据库包括MySQL、PostgreSQL、Oracle等。
- ORM(对象关系映射):如Hibernate、JPA、MyBatis等,ORM技术允许开发者使用面向对象的方式来操作数据库,简化了数据库操作的过程。
- Web服务器:如Tomcat、Jetty、Nginx等,Web服务器用于部署和运行Java Web应用程序,并处理来自客户端的请求。
- …
二、JavaWeb 发展阶段
JavaWeb的发展阶段可以划分为以下几个主要时期:
一、静态网页时代
- 特点:网站主要由静态的HTML页面组成,这些页面可能使用Dreamweaver等工具进行编写。静态页面无法满足动态内容的需求,因此很快迎来了动态网页的时代。
二、Servlet和JSP的兴起(1997年~2002年)
- Servlet:Servlet是一种在服务器端运行的Java应用程序,用于处理HTTP请求和响应。它提供了一种动态生成Web页面的方式。
- JSP(JavaServer Pages):JSP是Servlet技术的一个扩展,允许开发者将Java代码嵌入到HTML页面中,从而制作出动态网页。JSP的引入使得前端程序员能够更方便地修改代码,迎合了前后端专业分工的大趋势。
三、Java EE的建立与成熟(2002年~2013年)
- Java EE(Java 2 Platform, Enterprise Edition,后更名为Java Enterprise Edition):Java EE提供了一整套规范和技术,包括Servlet、JSP、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JTA(Java Transaction API)等,用于构建复杂的企业级应用程序。
- 发展阶段:Java EE的各个版本相继推出,引入了许多新的功能和技术,如JPA(Java Persistence API)、JSF(JavaServer Faces)、CDI(Contexts and Dependency Injection)等,使得Java Web开发更加高效和便捷。
四、MVC模式与框架阶段(2000年代中后期~至今)
- MVC模式:在Servlet + JSP模式的基础上,Java阵营进一步发展出了一种适合JavaWeb应用的设计模式,即MVC(Model-View-Controller)设计模式。它将程序分为显示层(Viewer)、控制层(Controller)和模型层(Model),提高了代码的可维护性和可重用性。
- Struts框架:Struts是JavaWeb时代早期的一个流行的MVC框架。它通过一个中央的servlet(ActionServlet)来协调不同的页面请求,并将这些请求映射到相应的业务逻辑处理单元上。然而,Struts的配置相对繁琐,随着应用规模的增长,配置管理变得越来越复杂。
- Spring框架:Spring Framework是一个开源的轻量级应用框架,通过依赖注入(IoC)和面向切面编程(AOP)等特性简化了Java应用程序的开发。Spring MVC是Spring框架的一个模块,它实现了Web MVC设计模式,为开发者提供了一种轻量级的方式来构建动态Web应用程序。Spring框架的出现极大地改变了Java Web开发的格局。
五、微服务架构的兴起(2010年至今)
- 微服务架构:随着云计算和分布式系统的发展,微服务架构逐渐成为了一种流行的架构风格。在微服务架构中,应用程序被拆分为一组小型、独立的服务,每个服务都运行在自己的进程中,并通过HTTP或消息队列等方式进行通信。
- Java在微服务架构中的应用:Java语言和技术在微服务架构中具有很好的适用性。Spring Cloud等技术成为了开发和部署Java微服务应用的主流选择。
六、Java EE向Jakarta EE过渡(2017年至今)
- 背景:随着Java EE的发展和Oracle对其的管理策略变化,Java社区决定将Java EE项目转交给Eclipse基金会,并更名为Jakarta EE。
- 目标:Jakarta EE旨在保持对Java企业级开发的继续支持,并积极推动云原生应用程序的开发和部署。这一变化为Java Web开发带来了新的发展机遇和挑战。
三、JavaWeb 常用架构
Servlet + JSP 架构
Servlet是由Java提供用于开发web服务器应用程序的一个组件,运行在服务端,由servlet容器管理,用来生成动态内容。一个Servlet实例是实现了特殊接口Servlet的Java类,所有自定义的servlet均必须实现Servlet接口。
JSP 本质上就是Servlet,它是Servlet的一种特殊新式(由SUN公司推出),每个jsp页面都是一个servlet实例。
区别:
- Servlet是HTML代码和Java代码分离,侧重逻辑控制
- jsp是HTML页面中内嵌的Java代码,侧重页面显示
SSH 架构
SSH是Struts、Spring和Hibernate的集成框架。这三个框架各自承担不同的职责:
- Struts:作为系统的整体基础架构,负责MVC(Model-View-Controller)的分离。在Struts框架的模型部分,控制业务跳转。
- Spring:做管理,管理struts和hibernate。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,提供了业务对象管理等功能。
- Hibernate:负责持久化层。通过持久化数据对象,进行对象关系的映射,并以对象的角度来访问数据库。Hibernate封装了JDBC,使得开发人员可以以面向对象编程的思想来操控数据库。
SSM 架构
SSM是Spring MVC、Spring和MyBatis的集成框架。这三个框架同样各自承担不同的职责:
- Spring MVC:是Spring中的一部分,负责请求的转发和视图管理。它分离了控制器、模型对象、分派器以及处理程序对象的角色,使得它们更容易进行定制。
- Spring:与SSH中的Spring相同,负责业务对象管理等功能。Spring框架是一个分层架构,由多个定义良好的模块组成,这些模块可以单独存在或与其他模块联合实现。
- MyBatis:是一个基于Java的持久层框架,它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
SpringBoot架构
SpringCloud架构
四、JavaWeb 项目结构(带web.xml的)
一般大致为以下:
上图的 web模块(默认名称是 webapp) 是Java Web项目中的一个重要部分,它通常包含了Web应用程序的所有资源和配置文件。
WEB-INF 是什么?
WEB-INF目录是一个受保护的目录,它不会被Web服务器直接暴露给外部用户。
所以可以存放Web应用程序的私有资源和配置文件。
- 私有资源:包括 Servlet类、JSP页面(虽然JSP页面通常放在webapp的根目录或特定子目录下,但JSP的编译结果和相关的Servlet类会放在WEB-INF下)、静态资源(如模板文件、配置文件等,但通常不包括直接供客户端访问的静态资源,如图片、CSS、JavaScript等,这些资源一般放在webapp的其他目录下)以及
- 配置文件:web.xml配置文件等。
web.xml文件 是什么?
web.xml文件是Java Web应用程序的核心配置文件之一,它位于WEB-INF目录下。
这个文件根据Java Servlet规范定义,用于配置Web应用的行为和组件设置。具体作用包括但不限于:
- 定义Servlet类及其映射URL,指定Servlet初始化参数和装载顺序。
- 设置过滤器(Filter),指定它们应用于哪些URL请求,并可以传递初始化参数给过滤器。
- 注册监听器,用于监听Web应用生命周期中的特定事件,如启动、停止、会话创建和销毁等。
- 配置HTTP状态代码对应的错误页面,以便在发生特定错误时显示相应的错误信息页面。
- 设置Web应用默认的会话超时时间。
- 定义安全角色、登录认证和授权规则,控制对Web资源的访问权限。
三层开发
Dao层+Service层+Servlet层(其实也是Controller层)
参考
【1】https://blog.csdn.net/m0_46988935/article/details/115693714
五、如何打包
存在 web.xml 文件的项目默认是打war包的(比如Servlet + JSP架构、SSH架构、SSM架构),
不存在web.xml 的默认是打jar包(比如SpringBoot架构、SpringCloud架构)
一、intellij idea打war包
1、第一步在我们的电脑上打开IntelliJ IDEA,按ctrl+alt+shift+s键打开Project Structure,点击+号图标,选择“Artifacts->Web Application Archive”,如下图所示:
2、第二步进去之后,可以修改打包的war包名字和存放路径,默认是项目路径\out\artifacts\下面,将右侧的全选,鼠标右键点击“Put into Output Root”,如下图所示:
3、第三步全部添加到左侧之后,点击ok,如下图所示:
4、第四步点击Build->Build Artifacts,进行打包项目成war,如下图所示:
5.第五步在项目下面的target文件夹中可以看到打包的war包,也可以自己打包之前选择存放的路径,如下图所示:
参考
【1】https://blog.csdn.net/cm15835106905/article/details/107927847
六、war包部署
war包是通过Tomcat进行部署的
1. Tomcat 介绍
Tomcat是常见的免费的web服务器.
Tomcat 这个名字的来历,Tomcat是一种野外的猫科动物,不依赖人类,独立生活。 Tomcat的作者,取这个名字的初衷是希望,这一款服务器可以自力更生,自给自足,像Tomcat这样一种野生动物一般,不依赖其他插件,而可以独立达到提供web 服务的效果。
2. Tomcat目录结构
3. 开始部署项目
1、将编写并编译好的web项目(注意要是编译好的,如果是 eclipse,可以将项目打成 war 包放入),放入到 webapps 中(webapps内默认有5个固定的文件夹,不用管)。
2、启动tomcat服务器(双击 apache-tomcat-6.0.16\bin 目录下的 startup.bat,启动服务器)
3、在浏览器输入:http://localhost:8080/项目名/访问的文件名
参考
【1】Tomcat 部署项目的三种方法
七、jar 包部署
SpringBoot、SpringCloud 由于内置Tomcat ,所以可以直接以jar包方式启动
扩展:全局配置文件优先级
全局配置文件优先级
优先级:以下图顺序号代表配置文件的优先级,并且相同配置文件按顺序加载可以实现互补,但是不会被覆盖。
优先级
在同一级目录下,会先比较前缀bootstrap、application,其中bootstrap比application的优先级高,其次再去比较后缀.properties、.yml,
其中2.4.0之前版本.properties比.yml优先级高
其中2.4.0的版本yml比.properties优先级高
配置覆盖
- 当同一个配置属性在bootstrap.properties和bootstrap.yml文件中都存在时,那么properties中的配置会被加载,而忽略yml文件中的配置(即优先级高的配置覆盖优先级低的配置),不同配置相互互补。此处application(.properties/yml)同理
- 但当同一配置在bootstrap和application中都存在时,那么虽然优先加载bootstrap但是会被applicatioin中的配置覆盖,
- 当同一个配置属性在四种配置(bootstrap.properties、bootstrap.ym、application.properties、application.yml)都存在
- 根据不同版本的 application配置文件会覆盖其他配置文件。
2.4.0之前版本是application.properties,2.4.0的版本是application.yml
相关文章:
JavaWeb
JavaWeb 一、JavaWeb 是什么?二、JavaWeb 发展阶段三、JavaWeb 常用架构Servlet JSP 架构SSH 架构SSM 架构SpringBoot架构SpringCloud架构 四、JavaWeb 项目结构(带web.xml的)五、如何打包六、war包部署1. Tomcat 介绍2. Tomcat目录结构3. 开…...
加快发展社会保障事业的必要性
题目 【2011年浙江公务员考试】(二)某市将召开一次加快发展社会保障事业的形势分析会。会上,某领导要就加快发展社会保障事业的必要性做主题发言。请结合给定资料7~8,为领导拟一份发言要点。(25分) 要求&a…...
责任链模式在spring security过滤器链中的应用
责任链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它允许多个对象按照顺序处理请求,并且每个对象可以选择自己是否处理该请求或将其传递给下一个对象。 在Spring Security中,责任链模式得到了广泛应…...
Netty基本原理
目录 前言 原生NIO VS Netty 原生NIO存在的问题 Netty的优点 线程模型 传统阻塞 I/O (Blocking I/O) 2. 非阻塞 I/O (Non-blocking I/O) 3. 多路复用 I/O (Multiplexed I/O) 4. Reactor 模式 常见的 Reactor 模式的变体: Netty线程模型 工作原理 前言 N…...
图论入门编程
卡码网刷题链接:98. 所有可达路径 一、题目简述 二、编程demo 方法①邻接矩阵 from collections import defaultdict #简历邻接矩阵 def build_graph(): n, m map(int,input().split()) graph [[0 for _ in range(n1)] for _ in range(n1)]for _ in range(m): …...
Haproxy
一、haproxy简介 HAProxy 是法国开发者 威利塔罗 (Willy Tarreau) 在 2000 年使用 C 语言开发的一个开源软件 是一款具备高并发 ( 万级以上 ) 、高性能的 TCP 和 HTTP 负载均衡器 支持基于 cookie 的持久性,自动故障切换,支持正则表达式及 web 状态统…...
旋转磁体产生的场 - 实验视频资源下载
先发几个视频,是2019年所作的实验内容 更多视频,到某宝找我吧。注意:是收费的。 20190312-180244-旋转磁体产生的场造成激光功率减小 https://download.csdn.net/download/u014161757/90038058 20190313-090956-旋转磁体产生的场对真空介电…...
Java Map
在Java的集合框架中,Map接口用于存储键值对,提供了一种基于键进行查找和操作的数据结构。Map接口的实现类提供了丰富的方法来操作键值对,例如添加、删除、更新和查找。本文将详细介绍Java中的Map接口及其常见实现类,包括HashMap、…...
长三角文博会:Adobe国际认证体系推动设计人才评价新标准
2024年11月22日,由上海、江苏、浙江、安徽三省一市党委宣传部共同发起的第五届长三角文化博览会(简称“长三角文博会”)在上海国家会展中心盛大启幕。长三角文博会自2018年起已成功举办多届,已成为展示区域文化产业发展成果、推动…...
GoogleTest做单元测试
目录 环境准备GoogleTest 环境准备 git clone https://github.com/google/googletest.git说cmkae版本过低了,解决方法 进到googletest中 cmake CMakeLists.txt make sudo make installls /usr/local/lib存在以下文件说明安装成功 中间出了个问题就是,…...
CSDN 博客自动发布脚本(Python 含自动登录、定时发布)
文章目录 关于 csdn auto publisher使用 关于 csdn auto publisher 源码地址:https://github.com/ezscode/csdn_auto_publisher 使用 def test_simple_pub():file_path /Users/xx/Documents/xxx/tool.md article Article(file_path) article.tags [python] art…...
RL78/G15 Fast Prototyping Board Arduino IDE 平台开发过程
这是一篇基于RL78/G15 Fast Prototyping Board的Arduino IDE开发记录 RL78/G15 Fast Prototyping Board硬件简介(背景)基础测试(方法说明/操作说明)开发环境搭建(方法说明/操作说明代码结果)Arduino IDE RL…...
VsCode 插件推荐(个人常用)
VsCode 插件推荐(个人常用)...
零基础学安全--云技术基础
目录 学习连接 前言 云技术历史 云服务 公有云服务商 云分类 基础设施即服务(IaaS) 平台即服务(PaaS) 软件即服务(SaaS) 云架构 虚拟化 容器 云架构设计 组件选择 基础设施即代码 集成部署…...
docker如何安装redis
第一步 如果未指定redis,则安装的是最新版的 docker pull redis 创建一个目录 mkdir /usr/local/docker/redis 然后直接可以下载redis,这是方式确实不怎么好,应该找在官网上找对应的redis配置文件 wget http://download.redis.io/redis-stab…...
搜维尔科技:仿人双臂遥操作系统,力反馈灵巧手操作解决方案
仿人双臂遥操作系统,力反馈灵巧手操作解决方案 搜维尔科技:仿人双臂遥操作系统,力反馈灵巧操作解决方案...
C++ 优先算法 —— 无重复字符的最长子串(滑动窗口)
目录 题目: 无重复字符的最长子串 1. 题目解析 2. 算法原理 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口(同向双指针) 3. 代码实现 Ⅰ. 暴力枚举 Ⅱ. 滑动窗口 题目: 无重复字符的最长子串 1. 题目解析 题目截图: 此题所说的…...
R语言绘图过程中遇到图例的图块中出现字符“a“的解决方法
R语言绘图过程中遇到图例的图块中出现字符的解决方法 因为我遇到这个问题的时候没在网上找到合适的方法,找到个需要付费的,算了。也许是因为问的方式不同,问了半天AI也回答出来,莫名有些烦躁,打算对代码做个分析&…...
海康面阵、线阵、读码器及3D相机接线说明
为帮助用户快速了解和配置海康系列设备的接线方式,本文将针对海康面阵相机、线阵相机、读码器和3D相机的主要接口及接线方法进行全面整理和说明。 一、海康面阵相机接线说明 海康面阵相机使用6-pin P7接口,其功能设计包括电源输入、光耦隔离信号输入输出…...
Lua--1.基础知识
Lua基础知识 变量简单的4种变量类型复杂的4种变量类型type函数 字符串操作长度获取--#多行打印字符串拼接别的类型转字符串-- tostring()字符串提供的公共方法 运算符算术运算符-- - * / % ^条件运算符-- > < > < ~(不等于 是 ~)逻辑运算符-- and or not位运算、…...
从Full-Text Search全文检索到RAG检索增强
从Full-Text Search全文检索到RAG检索增强 时光飞逝,转眼间六年过去了,六年前铁蛋优化单表千万级数据查询性能的场景依然历历在目,铁蛋也从最开始做CRUD转行去了大数据平台开发,混迹包装开源的业务,机缘巧合下做了实时…...
Qt桌面应用开发 第八天(读写文件 文件编码 文件流)
目录 1.读文件 2.写文件及编码格式 2.1写文件 2.2编码格式 3.文件信息读取 4.文件流 4.1QTextStream 4.2QDataStream 1.读文件 需求:一个pushButton,点击之后可以选择一个txt文件的路径,路径会显示在lineEdit上,txt文件的…...
玩转 Burp Suite (1)
内容预览 ≧∀≦ゞ 玩转 Burp Suite (1)声明Burp Suite 简介Dashboard(仪表盘)1. 默认任务管理2. 暂停任务3. 新建扫描任务4. 使用总结 Target(目标)1. SIte Map (站点地图)2. Scope(范围&#…...
MyBatis高级扩展
一、Mapper批量映射优化: 1.需求: Mapper 配置文件很多时,在全局配置文件中一个一个注册太麻烦,希望有一个办法能够一劳永逸 2.配置方式: Mybatis允许在指定Mapper映射文件时,只指定其所在的包: <mappers><package name"c…...
蓝桥杯c++算法秒杀【6】之动态规划【下】(数字三角形、砝码称重(背包问题)、括号序列、异或三角:::非常典型的必刷例题!!!)
别忘了请点个赞收藏关注支持一下博主喵!!!! ! ! ! ! 关注博主,更多蓝桥杯nice题目静待更新:) 动态规划 三、括号序列 【问题描述】 给定一个括号序列,要求尽可能少地添加若干括号使得括号序列变得合…...
MR30分布式 IO 模块在冷却水泵系统中的卓越应用
在当今各类工业生产以及大型设施运行的场景中,冷却水泵系统起着至关重要的作用,它犹如保障整个运转体系顺畅运行的 “血液循环系统”,维持着设备适宜的温度环境,确保其稳定、高效地工作。而随着科技的不断发展,明达技术…...
微前端基础知识入门篇(二)
概述 在上一篇介绍了一些微前端的基础知识,详见微前端基础知识入门篇(一)。本文主要介绍qiankun微前端框架的实战入门内容。 qiankun微前端实践 通过Vite脚手架分别创建三个程序,主应用A为:vite+vue3+ts,两个微应用分别为B:vite+vue3+ts;C:vite+React+ts。因为qiankun的…...
直接抄作业!Air780E模组LuatOS开发:位运算(bit)示例
在嵌入式开发中,位运算是一种高效且常用的操作技巧。本文将介绍如何使用Air780E模组和LuatOS进行位运算,并通过示例代码帮助读者快速上手。 一、位运算概述 位运算是一种在计算机系统中对二进制数位进行操作的运算。由于计算机内部数据的存储和处理都是…...
从零开始理解JVM:对象的生命周期之对象销毁(垃圾回收)
一、JVM参数 在学垃圾回收器之前,我们先要知道,jvm参数是怎么回事。因为配置各种回收器,必须对应各种参数设置。 标准参数(-) 所有的JVM实现都必须实现这些参数的功能,而且向后兼容 -help-version 非标准参…...
计算机网络的发展
目录 起源与早期发展 ARPANET与TCP/IP协议的诞生 互联网的诞生与普及 高速互联网与无线网络的兴起 移动互联网与云计算的崛起 物联网、区块链与自动驾驶技术的兴起 起源与早期发展 计算机网络的雏形最早可以追溯到20世纪60年代,主要是为了共享大型计算资源。当…...
python3 自动更新的缓存类
这个类会在后台自动更新缓存数据,你只需要调用方法来获取数据即可。 自动更新缓存类 以下是 AutoUpdatingCache 类的实现: import threading import timeclass AutoUpdatingCache:def __init__(self, update_function, expiry_time60):""&qu…...
PICO 获取设备号 SN码
Unity版本 2020.3.42f1c1PICO SDK版本PICO Unity Integration SDK-3.0.5-20241105Pico设备pico 4ultra 注意 此api暂时只测试企业版本 pico 4ultra 代码 using Unity.XR.PICO.TOBSupport;private void Awake() {bool result PXR_Enterprise.InitEnterpriseService();Debug.L…...
spf算法、三类LSA、区间防环路机制/规则、虚连接
1.构建spf树: 路由器将自己作为最短路经树的树根根据Router-LSA和Network-LSA中的拓扑信息,依次将Cost值最小的路由器添加到SPF树中。路由器以Router ID或者DR标识。广播网络中DR和其所连接路由器的Cost值为0。SPF树中只有单向的最短路径,保证了OSPF区域内路由计管不…...
计算机基础(下)
内存管理 内存管理主要做了什么? 操作系统的内存管理非常重要,主要负责下面这些事情: 内存的分配与回收:对进程所需的内存进行分配和释放,malloc 函数:申请内存,free 函数:释放内存…...
OpenCV从入门到精通实战(七)——探索图像处理:自定义滤波与OpenCV卷积核
本文主要介绍如何使用Python和OpenCV库通过卷积操作来应用不同的图像滤波效果。主要分为几个步骤:图像的读取与处理、自定义卷积函数的实现、不同卷积核的应用,以及结果的展示。 卷积 在图像处理中,卷积是一种重要的操作,它通过…...
Java基础——(一)Java概述
Java特性 简单性:Java与C很相似,但剔除了C中许多比较复杂并且很少使用的功能,比如头文件、指针运算、结构、联合、操作符重载、虚基类等,从而使Java更易于上手、学习。面向对象:Java是一门面向对象语言,具…...
关于IDE的相关知识之三【插件安装、配置及推荐的意义】
成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于ide插件安装、配置及推荐意义的相关内容…...
C++设计模式之组合模式的基本结构
组合模式的UML类图表示如下: ------------------ ------------------ | Component | <----- | Leaf | ------------------ ------------------ | operation() | | operation() | ------------------ --…...
Apache OFBiz xmlrpc XXE漏洞(CVE-2018-8033)
目录 1、漏洞描述 2、EXP下载地址 3、EXP利用 1、漏洞描述 Apache OFBiz是一套企业资源计划(ERP)系统。它提供了广泛的功能,包括销售、采购、库存、财务、CRM等。 Apache OFBiz还具有灵活的架构和可扩展性,允许用户根据业务需求…...
梯度——多元函数偏导数——梯度算子的理论基础
梯度是一个数学概念,在多维空间中表示函数在某一点处变化最快的方向和变化率。 对于一个多元函数 f ( x 1 , x 2 , ⋯ , x n ) f(x_1, x_2, \cdots, x_n) f(x1,x2,⋯,xn),其梯度是一个向量,记作 ∇ f \nabla f ∇f或者 grad f f f&…...
【GPT】力量训练的底层原理?
详细解读力量训练的每一个底层原理 力量训练之所以有效,是因为它利用了肌肉、神经系统和生物化学反应的基本机制。以下逐一详细解析,并解释相关概念。 1. 应力-恢复-适应理论 概念解析 应力(Stress):指训练带来的负…...
Django 路由层
1. 路由基础概念 URLconf (URL 配置):Django 的路由系统是基于 urls.py 文件定义的。路径匹配:通过模式匹配 URL,并将请求传递给对应的视图处理函数。命名路由:每个路由可以定义一个名称,用于反向解析。 2. 基本路由配…...
Unity项目性能优化列表
1、对象池 2、检查内存是否泄露。内存持续上升(闭包、委托造成泄露) 3、检查DrawCall数量,尽量减少SetPassCall 4、尽量多的利用四种合批 动态合批(Dynamic Batching)静态合批(Static Batching)GPUInstancingSRP Batcher 动态合批消耗内存把多个网格组合在一起合并…...
docker启动kafka、zookeeper、kafdrop
1、启动zookeeper docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper2、启动kafka docker run -d --name kafka --publish 9092:9092 --link zookeeper:zookeeper -e KAFKA_BROKER_ID1 -e HOST_IP127.0.0.1 -e KAFKA_ZOOKEEPER_CONNECTzookeeper:2181…...
Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation
问题描述 之前我们有讲过如何使用Jpype调用jar包,在成功调用jar包后,接着在Pytest框架下编写自动测试用例。但是在Pytest下使用Jpype加载jar包,并调用其中的方法会以下提示信息: 虽然提示信息显示有Windows显示致命…...
【AI赋能 Python编程】第十一章 Python技能提升指南:借助AI加速学习
AI赋能 Python编程-系列文章目录 第十一章 Python技能提升指南:借助AI加速学习 文章目录 AI赋能 Python编程-系列文章目录第十一章 Python技能提升指南:借助AI加速学习 前言明确学习目标基础入门指导进阶学习指导学习过程互动综合学习提示模板 前言 在…...
️ 爬虫开发中常见的性能优化策略有哪些?
在爬虫开发中,性能优化是确保爬虫稳定、高效运行的关键。以下是一些常见的性能优化策略,结合了搜索结果中的信息: 异步编程: 使用 asyncio 和 aiohttp 实现高并发,提高爬取效率。异步请求允许在等待一个请求完成的同时…...
Ubuntu安装不同版本的opencv,并任意切换使用
参考: opencv笔记:ubuntu安装opencv以及多版本共存 | 高深远的博客 https://zhuanlan.zhihu.com/p/604658181 安装不同版本opencv及共存、切换并验证。_pkg-config opencv --modversion-CSDN博客 Ubuntu下多版本OpenCV共存和切换_ubuntu20如同时安装o…...
《操作系统 - 清华大学》5 -4:虚拟技术
文章目录 0. 虚拟存储的定义1. 目标2.局部性原理3. 虚拟存储的思路与规则4. 虚拟存储的基本特征5. 虚拟页式存储管理5.1 页表表项5.2 示例 0. 虚拟存储的定义 1. 目标 虚拟内存管理技术,简称虚存技术。那为什么要虚存技术?在于前面覆盖和交换技术&#…...
网安瞭望台第5期 :7zip出现严重漏洞、识别网络钓鱼诈骗的方法分享
国内外要闻 7 - Zip存在高危漏洞,请立刻更新 2024 年 11 月 24 日,do son 报道了 7 - Zip 中存在的一个高严重性漏洞 CVE - 2024 - 11477。7 - Zip 是一款广受欢迎的文件压缩软件,而这个漏洞可能会让攻击者在存在漏洞的系统中执行恶意代码。…...