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

JSX语法介绍

文章目录

    • JSX介绍
      • JSX的引入
      • JSX的全称
      • babel转换工具
    • JSX的基本语法
    • 创建组件的第一种方式
      • 创建组件
      • 父组件传值给子组件
    • class 关键字的介绍
      • class的基本用法:使用class创建对象
      • 使用 class 实现 JS 中的继承
    • 创建组件的第二种方式:使用 class 关键字
      • 父组件传值给子组件
    • 方式一和方式二的对比

JSX介绍

JSX的引入

如果直接让用户通过 JS 代码手动创建DOM元素,肯定是非常麻烦的。

于是,React 官方就提出了一套 JSX 语法规范,能够让我们在 JS 文件中,书写类似于 HTML 那样的代码,快速定义虚拟DOM结构。

JSX的全称

JSX:JavaScript XML,一种类似于XML的JS扩展语法。也可以理解成:符合 XML 规范的 JS 语法。

需要注意的是,哪怕你在 JS 中写的是 JSX 语法(即JSX这样的标签),但是,JSX内部在运行的时候,并不是直接把 我们的 HTML 标签渲染到页面上;而是先把 类似于HTML 这样的标签代码,转换成 React.createElement 这样的JS代码,再渲染到页面中。

从这一点我们可以看出,JSX是一个对程序员友好的语法糖。

JSX语法的本质:以 React.createElement 的形式来实现的,并没有直接把 用户写的 HTML代码,渲染到页面上。

babel转换工具

如果要直接使用 JSX 语法,需要先安装相关的 语法转换工具:

	运行 cnpm i babel-preset-react -D

这个babel包的作用是:将 JSX语法 转换为 JS语法。

安装完成后,就可以开始使用JSX语法了。

完整代码举例:

<!DOCTYPE html>
<html lang=""><head><meta /><meta /><meta /><title>Document</title></head><body><!-- 引入React相关的js库 --><script type="text/javascript" src="./libs/react.js"></script><script type="text/javascript" src="./libs/react-dom.js"></script><script type="text/javascript" src="./libs/babel.min.js"></script><div id="app"></div><!-- 注意,这一行的 type 是写 "text/babel",而不是 "text/javascript" --><script type="text/babel">//页面中的真实容器元素var containDiv = document.getElementById("app");//1、使用JSX语法 创建虚拟DOM对象var vDom = (<div>Hello, React!<h2>这是标题</h2></div>);//2、渲染虚拟DOM对象(将虚拟DOM对象渲染到页面元素中)ReactDOM.render(vDom, containDiv); // 参数1:虚拟DOM对象;参数2:页面中的容器</script></body>
</html>

JSX的基本语法

(1)在 JSX内部 写 JS代码:如果要在 JSX 语法内部,书写 JS 代码,那么,所有的JS代码必须写到 {} 的内部。在{}内部,可以写任何符合JS规范的代码。

例如:

	var myTitle = '这是使用变量定义的 tilte 值'// 使用JSX语法 创建虚拟DOM对象var vDom = (<div>Hello, React!<h2 title={myTitle + 'vae'}>这是标题</h2></div>);

(2)当编译引擎在编译JSX代码的时候,如果遇到了<,会把它当作 HTML代码 去编译;如果遇到了 {}, 会把方括号里面的代码当作 普通JS代码 去编译。

(3)在JSX中,如果要为元素添加class属性,则必须写成className,因为 class在ES6中是一个关键字;和class类似,label标签的 for 属性需要替换为 htmlFor

代码举例:

  // 使用JSX语法 创建虚拟DOM对象var vDom = (<div>Hello, React!<p className="qianguyihao">千古壹号</p><label htmlFor="" /></div>);

(4)在JSX创建DOM的时候,所有的节点,必须有唯一的根元素进行包裹。

(5)如果要写注释,注释必须放到 {} 内部。例如:

	// 使用JSX语法 创建虚拟DOM对象var vDom = (// 这一行是注释<div>Hello, React!<p className="qianguyihao">千古壹号</p>{/*这一行也是注释 */}</div>);

最后,再举个例子:

<!DOCTYPE html>
<html lang=""><head><meta /><meta /><meta /><title>Document</title></head><body><!-- 引入React相关的js库 --><script type="text/javascript" src="./libs/react.js"></script><script type="text/javascript" src="./libs/react-dom.js"></script><script type="text/javascript" src="./libs/babel.min.js"></script><div id="app"></div><!-- 注意,这一行的 type 是写 "text/babel",而不是 "text/javascript" --><script type="text/babel">//页面中的真实容器元素var containDiv = document.getElementById("app");var arr = []for (var i = 0; i < 6; i++) {var p = <p className="myp" key={i}>这个是p标签</p>  // 注意这个地方的写法: key = {i}arr.push(p)}//1、使用JSX语法 创建虚拟DOM对象var vDom = (<div>Hello, React!{arr}</div>);//2、渲染虚拟DOM对象ReactDOM.render(vDom, containDiv); // 参数1:虚拟DOM对象;参数2:页面中的容器</script></body>
</html>

创建组件的第一种方式

创建组件

在React中,构造函数就是一个最基本的组件。

如果想要把组件放到页面中,可以把构造函数的名称当作组件的名称,以 HTML标签形式引入页面中即可。

举例:

<!DOCTYPE html>
<html lang=""><head><meta /><meta /><meta /><title>Document</title></head><body><!-- 引入React相关的js库 --><script type="text/javascript" src="./libs/react.js"></script><script type="text/javascript" src="./libs/react-dom.js"></script><script type="text/javascript" src="./libs/babel.min.js"></script><div id="app"></div><!-- 注意,这一行的 type 是写 "text/babel",而不是 "text/javascript" --><script type="text/babel">// 这个构造函数,就相当于一个 组件function Hello() {return (<div><h3>这是 Hello组件 中定义的元素</h3></div>);}ReactDOM.render(<div><Hello> </Hello></div>,document.getElementById("app"));</script></body>
</html>

需要注意的是

React在解析所有标签的时候,是以标签的首字母来区分的:如果标签的首字母是小写,就按照普通的 HTML 标签来解析;如果首字母是大写,则按照 组件的形式来解析。

比如上方代码中,如果把大写的 Hello 改成小写的 hello,运行会报错,无法看到预期的结果。

结论:组件的首字母必须大写。

父组件传值给子组件

代码举例:

<!DOCTYPE html>
<html lang=""><head><meta /><meta /><meta /><title>Document</title></head><body><!-- 引入React相关的js库 --><script type="text/javascript" src="./libs/react.js"></script><script type="text/javascript" src="./libs/react-dom.js"></script><script type="text/javascript" src="./libs/babel.min.js"></script><div id="app"></div><!-- 注意,这一行的 type 是写 "text/babel",而不是 "text/javascript" --><script type="text/babel">// 父组件中的数据var person = {name: "qianguyihao",age: 27,gender: "男",address: "深圳"};// 在子组件中,如果想要使用外部传递过来的数据,必须显示的在 构造函数参数列表中,定义 props 属性来接收// 通过 props 得到的任何数据都是只读的,不能重新赋值function Hello(props) {return (<div><h3>这是 Hello子组件 中定义的元素: {props.name}</h3></div>);}ReactDOM.render(<!-- 注意:这里的 ...Obj 语法,是 ES6中的属性扩散,表示:把这个对象上的所有属性,展开了,放到这个位置 --><div><Hello {...person}> </Hello></div>,document.getElementById("app"));</script></body>
</html>

上方代码中,我们是想把整个person对象传递给子组件,所以采用了...Obj 语法语法。传递给子组件后,子组件获取的数据仅仅只是可读的。

class 关键字的介绍

面向对象语言的三个特性:封装、继承、多态。多态 和 接口、虚拟方法有关。

class的基本用法:使用class创建对象

myclass.js:

// 以前学习的:使用构造函数创建对象
function Person(name, age) {this.name = name;this.age = age;
}
Person.prototype.say = function() {console.log("呵呵哒");
};
Person.info = 123;var p1 = new Person("zs", 20);// 本次需要学习的:class 后面跟上类名,类名后面,不需要加 () ,直接上 {}
class Per {// 在每个class类内部,都有一个 constructor 构造器, 如果没有显示定义 构造器,那么类内部默认都有个看不见的 constructor// constructor 的作用,就好比 咱们之前的 function Person(){ }// 每当,使用 new 关键字创建 class 类实例的时候,必然会优先调用 constructor 构造器// constructor(){}constructor(name, age) {this.name = name;this.age = age;}// 这是实例方法,必须通过 new 出来的对象调用say() {console.log("ok a ");}static info = 123;static sayHello() {console.log("这是静态方法");}
}var p2 = new Per("壹号", 26);
console.log(p2);
console.log(Per.info);
console.log(Per.sayHello());

使用 class 实现 JS 中的继承

myclass2.js:

class Person {constructor(name, age) {console.log(3);this.name = name;this.age = age;}say() {console.log("这是 Person中的 say 方法");}static info = 123;
}// 使用 extends 实现继承,extends的前面的是子类,后面的是父类
class Chinese extends Person {constructor(name, age, color, language) {console.log(1);// 注意: 当使用 extends 关键字实现了继承, 子类的 constructor 构造函数中,必须显示调用 super() 方法,这个 super 表示父类中 constructor 的引用super(name, age);this.color = color;this.language = language;console.log(2);}
}var c1 = new Chinese("张三", 22, "yellow", "汉语");
console.log(c1);
// 父类中任何东西,子类都能继承到
c1.say();

注意上方 constructor处的注释:当使用 extends 关键字实现了继承, 子类的 constructor 构造函数中,必须显示调用 super() 方法,这个 super 表示父类中 constructor 的引用。也就是说,在子类当中,要么不写 constructor,如果写了 constructor,就一定要把 super()也加上。

为啥我们要引入 class这个功能?就是因为, class里,永远都存在着一个 constructor。我们可以利用 constructor做很多事情。

创建组件的第二种方式:使用 class 关键字

使用 class 创建的类,通过 extends 关键字,继承 React.Component 之后,这个类,就是一个组件的模板了。如果想要引用这个组件,可以把类的名称以标签的形式,导入到 JSX 中使用。

在 class 实现的组件内部,必须定义一个 render 函数。在 render 函数中,还必须 return 一个东西,如果没有什么需要被return 的,则需要 return null。

代码举例

index.html:

<!DOCTYPE html>
<html lang=""><head><meta /><meta /><meta /><title>Document</title></head><body><!-- 引入React相关的js库 --><script type="text/javascript" src="./libs/react.js"></script><script type="text/javascript" src="./libs/react-dom.js"></script><script type="text/javascript" src="./libs/babel.min.js"></script><div id="app"></div><!-- 注意,这一行的 type 是写 "text/babel",而不是 "text/javascript" --><script type="text/babel">// 使用 class 创建的类,通过 extends 关键字,继承 `React.Component` 之后,这个类,就是一个组件的模板了。// 如果想要引用这个组件,可以把类的名称以**标签的形式**,导入到 JSX 中使用。class Hello2 extends React.Component {// 在 class 实现的组件内部,必须定义一个 render 函数render() {// 在 render 函数中,还必须 return 一个东西,如果没有什么需要被return 的,则需要 return nullreturn (<div><h3>这是使用 class 类创建的组件 </h3></div>);}}ReactDOM.render(<div><Hello2> </Hello2></div>,document.getElementById("app"));</script></body>
</html>

父组件传值给子组件

代码举例:

index.html:

<!DOCTYPE html>
<html lang=""><head><meta /><meta /><meta /><title>Document</title></head><body><!-- 引入React相关的js库 --><script type="text/javascript" src="./libs/react.js"></script><script type="text/javascript" src="./libs/react-dom.js"></script><script type="text/javascript" src="./libs/babel.min.js"></script><div id="app"></div><!-- 注意,这一行的 type 是写 "text/babel",而不是 "text/javascript" --><script type="text/babel">// 使用 class 创建的类,通过 extends 关键字,继承 `React.Component` 之后,这个类,就是一个组件的模板了。// 如果想要引用这个组件,可以把类的名称以**标签的形式**,导入到 JSX 中使用。class Hello2 extends React.Component {constructor(props) {super(props);console.log(props.name);// 注意:`this.state` 是固定写法,表示当前组件实例的私有数据对象,就好比 vue 中,组件实例身上的 data(){ return {} } 函数// 如果想要使用 组件中 state 上的数据,直接通过 this.state.*** 来访问即可this.state = {msg: "这是 Hello2 组件的私有msg数据",info: "永不止步"};}// 在 class 实现的组件内部,必须定义一个 render 函数render() {// 在 render 函数中,还必须 return 一个东西,如果没有什么需要被return 的,则需要 return nullreturn (<div><h3>这是使用 class 类创建的组件 </h3></div>);}}ReactDOM.render(<div><Hello2 name="qianguyihao"> </Hello2></div>,document.getElementById("app"));</script></body>
</html>

方式一和方式二的对比

上面的内容里,我们使用了两种方式创建组件。这两种方式,有着本质的区别,我们来对比一下。

对比

  • 方式一:通过 function构造函数 创建组件。内部没有 state 私有数据,只有 一个 props 来接收外界传递过来的数据。

  • 方式二:通过 class 创建子组件。内部除了有 this.props 这个只读属性之外,还有一个专门用于 存放自己私有数据的 this.state 属性,这个 state 是可读可写的。

基于上面的区别,我们可以为这两种创建组件的方式下定义: 使用 function 创建的组件,叫做【无状态组件】;使用 class 创建的组件,叫做【有状态组件】。

本质区别

有状态组件和无状态组件,最本质的区别,就是有无 state 属性。同时, class 创建的组件,有自己的生命周期函数,但是,function 创建的 组件,没有自己的生命周期函数。

什么时候使用 有状态组件,什么时候使用无状态组件

  • (1)如果一个组件需要存放自己的私有数据,或者需要在组件的不同阶段执行不同的业务逻辑,此时,非常适合用 class 创建出来的有状态组件。

  • (2)如果一个组件,只需要根据外界传递过来的 props,渲染固定的页面结构即可的话,此时,非常适合使用 function 创建出来的无状态组件。(使用无状态组件的小小好处: 由于剔除了组件的生命周期,所以,运行速度会相对快一点点)。

相关文章:

JSX语法介绍

文章目录 JSX介绍JSX的引入JSX的全称babel转换工具 JSX的基本语法创建组件的第一种方式创建组件父组件传值给子组件 class 关键字的介绍class的基本用法&#xff1a;使用class创建对象使用 class 实现 JS 中的继承 创建组件的第二种方式&#xff1a;使用 class 关键字父组件传值…...

增强 HTNN 服务网格功能:基于 Istio 的BasicAuth 与 ACL 插件开发实战

目录 1.引言 什么是HTNN&#xff1f; 为什么开发 BasicAuth 和 ACL 插件&#xff1f; 2.技术背景 技术栈概览 Istio 与服务网格简述 HTNN 框架与插件机制概览 3.插件开发详解&#xff1a;BasicAuth 与 ACL 3.1 BasicAuth插件 功能点 实现细节 3.2 ACL插件 功能点 …...

c++从入门到精通(四)--动态内存,模板与泛型编程

文章目录 动态内存直接管理内存Shared_ptr类Unique_ptrWeak_ptr动态数组allocator类文本查询程序 模板与泛型编程定义模板函数模板类模板模板参数成员模板控制实例化 模板实参推断重载与模板可变参数模板模板特例化 动态内存 c中动态内存的管理是通过new和delete运算符来实现的…...

C盘清理秘籍:快速提升系统性能

C盘清理的重要性 C盘作为系统盘&#xff0c;存储着操作系统和关键程序文件。随着使用时间的增加&#xff0c;C盘空间会逐渐被占用&#xff0c;导致系统运行缓慢、程序启动延迟等问题。定期清理C盘可以有效提升系统性能&#xff0c;延长硬盘寿命。 清理临时文件 Windows系统在…...

从 Vue3 回望 Vue2:组件设计升级——Options API vs Composition API

文章目录 从 Vue3 回望 Vue2&#xff1a;组件设计升级——Options API vs Composition API1、组件范式&#xff1a;框架设计思想的投影2、Vue2&#xff1a;Options API 的结构与局限结构清晰&#xff1a;新手友好、职责分明核心痛点&#xff1a;逻辑分散&#xff0c;难以聚合复…...

寻找两个正序数组的中位数 - 困难

************* Python topic: 4. 寻找两个正序数组的中位数 - 力扣&#xff08;LeetCode&#xff09; ************* Give the topic an inspection. Do the old topic will give you some new sparks. Before that, I do some really good craetive things about my logo. …...

国产密码新时代!华测国密 SSL 证书解锁安全新高度

在数字安全被提升到国家战略高度的今天&#xff0c;国产密码算法成为筑牢网络安全防线的关键力量。华测国密SSL证书凭借其强大性能与贴心服务&#xff0c;为企业网络安全保驾护航&#xff0c;成为符合国家安全要求的不二之选&#xff01;​ 智能兼容&#xff0c;告别浏览器适配…...

【金仓数据库征文】从云计算到区块链:金仓数据库的颠覆性创新之路

目录 一、引言 二、金仓数据库概述 2.1 金仓数据库的背景 2.2 核心技术特点 2.3 行业应用案例 三、金仓数据库的产品优化提案 3.1 性能优化 3.1.1 查询优化 3.1.2 索引优化 3.1.3 缓存优化 3.2 可扩展性优化 3.2.1 水平扩展与分区设计 3.2.2 负载均衡与读写分离 …...

互联网大厂Java求职面试:AI与大模型集成的云原生架构设计

互联网大厂Java求职面试&#xff1a;AI与大模型集成的云原生架构设计 引言 在现代互联网企业中&#xff0c;AI与大模型技术的应用已经成为不可或缺的一部分。特别是在短视频平台、电商平台和金融科技等领域&#xff0c;如何高效地将大模型集成到现有的云原生架构中是一个巨大…...

股指期货套期保值怎么操作?

股指期货套期保值就是企业或投资者通过持有与其现货市场头寸相反的期货合约&#xff0c;来对冲价格风险的一种方式。换句话说&#xff0c;就是你在股票市场上买了股票&#xff08;现货&#xff09;&#xff0c;担心股价下跌会亏钱&#xff0c;于是就在期货市场上卖出相应的股指…...

基于IBM BAW的Case Management进行项目管理示例

说明&#xff1a;使用IBM BAW的难点是如何充分利用其现有功能根据实际业务需要进行设计&#xff0c;本文是示例教程&#xff0c;因CASE Manager使用非常简单&#xff0c;这里重点是说明如何基于CASE Manager进行项目管理&#xff0c;重点在方案设计思路上&#xff0c;其中涉及的…...

黑马k8s(七)

1.Pod介绍 查看版本&#xff1a; 查看类型,这里加s跟不加s没啥区别&#xff0c;可加可不加 2.Pod基本配置 3.镜像拉去策略 本地没有这个镜像&#xff0c;策略是Never&#xff0c;启动失败 查看拉去策略&#xff1a; 更改拉去策略&#xff1a; 4.启动命令 运行的是nginx、busv…...

九、HQL DQL七大查询子句

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月15日 专栏&#xff1a;Hive教程 Apache Hive 的强大之处在于其类 SQL 的查询语言 HQL&#xff0c;它使得熟悉 SQL 的用户能够轻松地对存储在大规模分布式系统&#xff08;如 HDFS&#xff09;中的数据进行复杂的查询和分析…...

基于中心点预测的视觉评估与可视化流程

基于中心点预测的视觉评估与可视化流程 基于中心点预测的视觉评估与可视化流程一、脚本功能概览二、可视化与评分机制详解1. 真实框解析2. 调用模型处理帧3. 预测中心点与真实值的对比4. 打分策略5. 图像可视化三、目录结构要求四、运行方式五、应用场景与拓展思路六、总结七,…...

RTSP 播放器技术探究:架构、挑战与落地实践

RTSP 播放器为什么至今无法被淘汰&#xff1f; 在实时视频传输领域&#xff0c;RTSP&#xff08;Real-Time Streaming Protocol&#xff09;作为最基础、最常见的协议之一&#xff0c;至今依然被广泛用于监控设备、IP Camera、视频服务器等设备中。然而&#xff0c;要构建一个稳…...

实验5 DNS协议分析与测量

实验5 DNS协议分析与测量 1、实验目的 了解互联网的域名结构、域名系统DNS及其域名服务器的基本概念 熟悉DNS协议及其报文基本组成、DNS域名解析原理 掌握常用DNS测量工具dig使用方法和DNS测量的基本技术 2、实验环境 硬件要求&#xff1a;阿里云云主机ECS 一台。 软件要…...

编程日志5.8

二叉树练习题 1.965. 单值二叉树 - 力扣(LeetCode) /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) :…...

【鸿蒙开发】性能优化

语言层面的优化 使用明确的数据类型&#xff0c;避免使用模糊的数据类型&#xff0c;例如ESObject。 使用AOT模式 AOT就是提前编译&#xff0c;将字节码提前编译成机器码&#xff0c;这样可以充分优化&#xff0c;从而加快执行速度。 未启用AOT时&#xff0c;一边运行一边进…...

2025-05-13 学习记录--Python-循环:while循环 + while-else循环 + for循环 + 循环控制

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、循环 ⭐️ &#xff08;一&#xff09;、while循环 &#x1f36d; 初始条件设置 -- 通常是重复执行的 计数器while 条件(判…...

Vue3学习(组合式API——生命周期函数基础)

目录 一、Vue3组合式API中的生命周期函数。 &#xff08;1&#xff09;各阶段生命周期涉及函数简单介绍。 <1>创建挂载阶段的生命周期函数。 <2>更新阶段的生命周期函数。 <3>卸载阶段的生命周期函数。 <4>错误处理的生命周期函数。 &#xff08;2&…...

全面指南:Xinference大模型推理框架的部署与使用

全面指南:Xinference大模型推理框架的部署与使用 Xinference(Xorbits Inference)是一个功能强大的分布式推理框架,专为简化各种AI模型的部署和管理而设计。本文将详细介绍Xinference的核心特性、版本演进,并提供多种部署方式的详细指南,包括本地部署、Docker-Compose部署…...

计量——检验与代理变量

1.非嵌套模型的检验 1Davidson-Mackinnon test 判断哪个模型好 log&#xff08;y&#xff09;β0β1x1β2x2β3x3u log&#xff08;y&#xff09;β0β1log&#xff08;x1&#xff09;β2log&#xff08;x2&#xff09;β3log&#xff08;x3&#xff09;u 1.对log&#xff…...

Cocos Creator 3.8.5 构建依赖环境配置文档

Cocos Creator 3.8.5 构建依赖环境配置文档 文章目录 Cocos Creator 3.8.5 构建依赖环境配置文档✅ 构建依赖汇总表✅ 构建平台配置说明&#x1f449; Windows 构建&#x1f449; Android 构建 ✅ 推荐构建环境组合&#xff08;稳定&#xff09;✅ 常见问题提示 适用于打包 An…...

实验五:以太网UDP全协议栈的实现(通过远程实验系统)

文章目录 FPGA以太网:从ARP到UDP的完整协议栈一、引言二、核心模块详解1. ARP协议处理模块1.1 `arp_cache`:ARP缓存模块1.2 `arp_tx`:ARP请求与应答发送模块1.3 `arp_rx`:ARP接收与解析模块2. MAC层处理模块2.1 `mac_layer`:MAC层顶层模块2.2 `mac_tx_mode`:MAC发送模式选…...

HTML-实战之 百度百科(影视剧介绍)

本系列可作为前端学习系列的笔记&#xff0c;代码的运行环境是在HBuilder中&#xff0c;小编会将代码复制下来&#xff0c;大家复制下来就可以练习了&#xff0c;方便大家学习。 系列文章目录 HTML-1.1 文本字体样式-字体设置、分割线、段落标签、段内回车以及特殊符号 HTML…...

了解光学影像

本文来源 &#xff1a; 腾讯元宝 光学影像是一种通过光学技术捕捉、记录和处理图像的技术&#xff0c;广泛应用于医学、工业、安防、科研等多个领域。以下是关于光学影像的详细介绍&#xff1a; 1. ​​基本原理​​ 光学影像基于光的传播、反射、折射和散射等物理现象。通过…...

计算机视觉---目标追踪(Object Tracking)概览

一、核心定义与基础概念 1. 目标追踪的定义 定义&#xff1a;在视频序列或连续图像中&#xff0c;对一个或多个感兴趣目标&#xff08;如人、车辆、物体等&#xff09;的位置、运动轨迹进行持续估计的过程。核心任务&#xff1a;跨帧关联目标&#xff0c;解决“同一目标在不同…...

Weblogic SSRF漏洞复现(CVE-2014-4210)【vulhub靶场】

漏洞概述&#xff1a; Weblogic中存在一个SSRF漏洞&#xff0c;利用该漏洞可以发送任意HTTP请求&#xff0c;进而攻击内网中redis、fastcgi等脆弱组件。 漏洞形成原因&#xff1a; WebLogic Server 的 UDDI 组件&#xff08;uddiexplorer.war&#xff09;中的 SearchPublicR…...

fakeroot 在没有超级用户权限的情况下模拟文件系统的超级用户行为

fakeroot 是一个在 Linux 环境中使用的工具&#xff0c;它允许用户在没有超级用户权限的情况下模拟文件系统的超级用户行为。它是一个在 Linux 环境中广泛使用的工具&#xff0c;通常包含在大多数 Linux 发行版的软件仓库中。‌ 主要功能 ‌模拟 root 权限‌&#xff1a;fake…...

AI大模型应用:17个实用场景解锁未来

任何新技术的普及都需要经历一段漫长的过程&#xff0c;人工智能大模型也不例外。 尽管某些行业的从业者已经开始将大模型融入日常工作&#xff0c;但其普及程度仍远未达到“人手必备”的地步。 那么&#xff0c;究竟是什么限制了它的广泛应用&#xff1f;普通人如何才能用好…...