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

JS宏进阶:XMLHttpRequest对象

一、概述

XMLHttpRequest简称XHR,它是一个可以在JavaScript中使用的对象,用于在后台与服务器交换数据,实现页面的局部更新,而无需重新加载整个页面,也是Ajax(Asynchronous JavaScript and XML)技术的核心组成部分。通过XHR对象,开发者可以在不干扰用户当前操作的情况下,向服务器请求数据,并动态更新网页内容。

二、对象的创建

1、在浏览器中的创建方式

根据浏览器的类型与版本差异,可能存在不同的创建方式。

1.1、现代流行的浏览器(如谷歌、火狐、Safari等等)中,可使用new关键字来进行创建,语法如下所示:

let xhr = new XMLHttpRequest();

1.2、旧版IE浏览器(IE6、IE7)等特立独行的浏览器中,需要使用ActiveXObject对象来进行创建,语法如下:

var xhr = new ActiveXObject("Microsoft.XMLHTTP");

因此,若是在浏览器中创建该对象,通常需要编写如下所示创建函数:

function createXMLHttpRequest() {let xhr;if (window.XMLHttpRequest) {//假设全局对象中存在 XMLHttpRequest 对象xhr = new XMLHttpRequest();} else if (window.ActiveXObject) {xhr = new ActiveXObject("Microsoft.XMLHTTP");} else {throw new Error("您的浏览器不支持XMLHttpRequest对象!");}return xhr;
}

2、在wps编辑器中的创建方式

在WPS的编辑器中,它是作为一个全局对象而存在的,因此创建方式与现代浏览器中一致,使用new关键字即可创建。

3、在node.js中的创建方式

在Node.js中,通常不会直接使用XMLHttpRequest对象,通常是作为第三方库而存在的,因此需要先行安装,命令如下:

npm install xmlhttprequest

随后通过require掉包,语法如下:

const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest

三、常用属性

1、表示请求状态的readyState属性

它是一个整数,共有五个值,分别是:

readyState的值作用
0请求未初始化(尚未调用 open 方法)
1请求已初始化(已调用 open 方法,尚未调用 send 方法)
2请求已发送(已调用 send 方法,尚未收到响应)
3请求处理中(已接收部分响应数据)
4请求已完成(已接收全部响应数据)

2、表示服务器响应的HTTP状态码的status属性

它是一个整数,表示响应状态码,常见的状态码如下所示(最为常见的以标红):

2.1、信息性状态码

信息性状态码通常是1开头的整数,如:100表示服务器已经接收到请求头,客户端应当继续发送请求的剩余部分,或者如果请求已经完成,则忽略这个响应;101表示服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。

2.2、成功响应状态码

表示响应成功的状态码通常是以2开头的整数,如:200(OK)表示请求已成功,请求所希望的响应头或数据体将随此响应返回;201(created)表示请求成功并且服务器创建了新的资源;202(accepted)表示请求已经接受,但处理尚未完成;204(no content)表示服务器成功处理了请求,但没有返回任何内容;206表示服务器成功处理了部分GET请求。

2.3、重定向

表示重定向的状态码通常是3开头的状态码,如:301表示请求的网页已永久移动到新位置;302表示请求的网页已临时移动到新位置;304表示自从上次请求后,请求的网页未修改过,客户端可以直接从本地缓存中获取数据;307表示临时性的重定向,与302类似,但与POST请求一起使用时有所不同。

2.4、客户端错误响应

此类状态码通常是以4开头的整数,如:400表示服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求;401表示请求未授权,需要用户通过表单提交一个包含适当的认证令牌来访问该网页;403表示服务器理解请求,但拒绝执行此请求;404表示服务器无法根据客户端的请求找到资源(网页);408表示请求超时,服务器等待客户端发送请求时等待时间过长。

2.5、服务器错误响应

这类状态码,通常是5开头的整数,如:500表示服务器遇到了一个未曾预料的情况,导致它无法完成对请求的处理;502表示作为网关或代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应;503表示由于临时的服务器维护或过载,服务器当前无法处理请求,这个状况是临时的;504表示网关在等待来自另一个服务器的响应时超时‌。

3、表示服务器响应的HTTP状态码对应的文本信息的statusText属性

它是一个字符串,与status一致表示响应状态,只是它是一个文本信息,例如:状态码200对应的文本就是OK,如果你发送的请求成功,且statuts的值是200,那么statusText的值就是OK。

4、表示服务器响应的文本内容的responseText属性

当且仅当readyState的值等于4时,才可以读取responseText的值。其类型一般来说是一个JSON字符串,也可能时网页源码等。

5、表示服务器响应的XML内容responseXML属性

当且仅当readyState的值等于4且响音内容的格式是XML时,才可以读取responseXML的值。

四、常用方法

1、打开一个url的open方法

open(method, url, async, username, password)

method:请求方式,是一个字符串,如:POST、GET、PUT等

url:请求地址,是一个字符串,如:https://www.baidu.com

async:一个布尔值,表示请求是否为异步请求

username(可选):用户名,用于身份验证

password(可选):用户密码,用于身份验证

该方法的作用是初始化一个请求,调用后,readyState属性的值会设置为1

2、发送请求到服务器send方法

send(data)

data:表示要发送的数据,对于GET请求,可以设置为空,因为get请求要发送的数据可以直接拼接在网址的后面,对于POST请求,应视网页情况而定,有可能是From Data、Blob等,如下图所示:

3、设置请求头setRequestHeader方法

setRequestHeader(header, value)

header:请求头名称

value:请求头的值

4、获取响应头的值getResponseHeader方法

getResponseHeader(headerName)

headerName:要获取的响应头的名称

注意:必须在readyState=4时,才能获取

5、获取响应头信息getAllResponseHeader方法

getAllResponseHeaders()

同样的,必须在readyState=4时,才能获取

6、取消请求abort方法

直接调用.abort()即可,主要作用是取消当前请求。

五、事件函数

1、onreadystatechange

它是一个函数,当readyState属性发生变化时调用的回调函数。开发者可以在此函数中检查readyState的值,以确定请求的状态,并据此执行相应的操作。

xhr.onreadystatechange = function() {if (xhr.readyState === 4 && xhr.status === 200) {console.log('请求成功', xhr.responseText);}
};

2、addEventListener

与onreadystatechange类似,但它是一个更为灵活的监听事件函数,可惜WPS编辑器不支持。

xhr.addEventListener('readystatechange', function() {if (xhr.readyState === 4 && xhr.status === 200) {console.log('请求成功', xhr.responseText);}
});xhr.addEventListener('load', function() {console.log('数据加载完成', xhr.responseText);
});xhr.addEventListener('error', function() {console.log('请求发生错误');
});

3、其他监听事件函数

//当请求成功完成时触发,即readyState变为4且status为200(或等效的成功状态码)时
xhr.onload = function() {console.log('数据加载完成', xhr.responseText);
};//在请求过程中发生错误时触发,例如网络错误。
xhr.onerror = function() {console.log('请求发生错误');
};//当请求被中止时触发,例如通过调用abort()方法。
xhr.onabort = function() {console.log('请求被中止');
};//当请求超时时触发。这需要在请求初始化时设置timeout属性。
xhr.ontimeout = function() {console.log('请求超时');
};//在请求开始时触发。
xhr.onloadstart = function() {console.log('请求开始');
};//在接收响应数据时持续触发,可以用于实现进度条。
xhr.onprogress = function(event) {if (event.lengthComputable) {console.log(`已接收: ${event.loaded} 字节,总大小: ${event.total}`);}
};//在请求完成或中止后触发,无论请求成功或失败。
xhr.onloadend = function() {console.log('请求结束');
};

上述监听事件函数,通常结合onreadystatechange一起使用,也可以只用onreadystatechange这一个事件来获取数据。

六、小试牛刀

function loadData() {var xhr = new XMLHttpRequest();// 设置响应处理函数xhr.onreadystatechange = function() {if (xhr.readyState == 4 && xhr.status == 200) {// 请求成功,处理响应数据console.log(xhr.responseText);}};// 初始化请求xhr.open("GET", "https://www.baidu.com", true);// 发送请求xhr.send(null);
}

效果如下所示:

七、注意事项

1、跨域

如果是在浏览器中,通常是不允许跨域请求的。因此,默认情况下,该对象只能请求与当前页面同源的资源。如果必要,需使用CORS机制。然在WPS编辑器中,没有这种限制。

2、同步

虽然该对象支持同步请求,但是不建议在生产环境中使用。因为同步请求会阻塞浏览器的UI线程,导致用户体验极差,也可能造成更为严重的后果。

3、错误处理

使用该对象进行请求时,需检查status属性,以确定请求是否成功。如果请求失败,应当采取适当的错误处理措施。

八、总结

XMLHttpRequest对象是一种强大的工具,用于在后台与服务器交换数据,实现页面的局部更新。通过合理使用XMLHttpRequest对象,可以显著提升网页的交互性和用户体验。然而,随着技术的发展,现代Web开发更倾向于使用更高级别的库(如fetch API)或框架(如React、Vue等)来处理HTTP请求,这些工具提供了更简洁、更现代的API,简化了开发过程。

注明:wps中也支持fetch API

相关文章:

JS宏进阶:XMLHttpRequest对象

一、概述 XMLHttpRequest简称XHR,它是一个可以在JavaScript中使用的对象,用于在后台与服务器交换数据,实现页面的局部更新,而无需重新加载整个页面,也是Ajax(Asynchronous JavaScript and XML)…...

点大商城V2-2.6.6源码全开源uniapp +搭建教程

一.介绍 点大商城V2独立开源版本,版本更新至2.6.6,系统支持多端,前端为UNiapp,多端编译。 二.搭建环境: 系统环境:CentOS、 运行环境:宝塔 Linux 网站环境:Nginx 1.21 MySQL 5.…...

Docker的深入浅出

目录 Docker引擎 Docker镜像 (镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包) Docker容器 应用容器化--Docker化 最佳…...

导航守卫router.beforeEach

router.beforeEach 是一个全局前置守卫,在每次路由跳转之前都会触发。 //index.jsrouter.beforeEach((to, from, next) > {// 打印即将要进入的目标路由信息console.log(即将要进入的目标路由信息:, to)// 打印当前正要离开的路由信息console.log(当前正要离开的…...

Perl语言的软件开发工具

Perl语言的软件开发工具 引言 在当今软件开发的世界中,随着互联网的快速发展和信息技术的不断进步,编程语言和开发工具的选择变得尤为重要。特别是在处理大量数据、实现快速原型以及网络编程等领域,Perl语言凭借其独特的优势而受到广泛青睐…...

在 Linux 系统下,解压 `.tar.gz`

在 Linux 系统下,解压 .tar.gz 文件通常使用 tar 命令。.tar.gz 文件是一种压缩归档文件,它首先使用 tar 命令将多个文件打包为一个 .tar 文件,然后再使用 gzip 压缩生成 .tar.gz 文件。 解压 .tar.gz 文件的命令 要解压 .tar.gz 文件,可以使用以下命令: tar -xzvf fil…...

Deepseek

1.Deepseek是什么? deepseek是一家人工智能科技公司所开发的能够进行人工智能对话的一个应用,它的主要目标是大规模的研发与应用。deepseek-R1是它的开源推理模型,主要负责处理复杂任务并且可以免费使用。 2.Deepseek可以做什么? Deepseek…...

oracle如何查询历史最大进程数?

oracle如何查询历史最大进程数? SQL> desc dba_hist_resource_limitName Null? Type---------------------------------------------------- -------- ------------------------------------SNAP_ID …...

强一致性算法:Raft

目录 什么是 Raft 算法? Leader的选举 投票分裂后的选举过程 Raft算法日志复制过程 修复不一样的日志 数据安全性的保证 什么是 Raft 算法? Raft 算法是一种是一种用于管理复制日志的强一致性算法,用于保证分布式系统中节点数据的一致…...

8.flask+websocket

http是短连接,无状态的。 websocket是长连接,有状态的。 flask中使用websocket from flask import Flask, request import asyncio import json import time import websockets from threading import Thread from urllib.parse import urlparse, pars…...

是德科技 | PCIe 7.0 互连— PCIe的尽头会是光吗?

伴随大语言模型和相关训练系统迅猛增长、对非结构化数据处理的需求急剧上升,市场对算力的需求也是呈指数级增加。PCIe作为计算机和服务器中使用广泛的高速数据传输技术发展迅猛,今年4月份PCI-SIG已经批准 Draft 0.5版基础规范,目前0.7版本基础…...

Aitken 逐次线性插值

Aitken 逐次线性插值 用 Lagrange 插值多项式 L n ( x ) L_n(x) Ln​(x)计算函数近似值时,如需增加插值节点,那么原来算出的数据均不能利用,必须重新计算。为克服这个缺点,可用逐次线性插值方法求得高次插值。 令 I i 1 , i 2…...

Orange 开源项目介绍

Orange 开源项目 项目兼容单体架构与微服务架构两种模式,集成了包括部门管理、用户管理、菜单配置、角色分配、字典维护以及日志记录在内的多种系统管理功能。 项目体验 Orange 官网: http://hengzq.cn在线体验: http://tiny.hengzq.cn项目文档: http://hengzq.cn/…...

【高级架构师】多线程和高并发编程(三):锁(下)深入ReentrantReadWriteLock

文章目录 4、深入ReentrantReadWriteLock4.1 为什么要出现读写锁4.2 读写锁的实现原理4.3 写锁分析4.3.1 写锁加锁流程概述4.3.2 写锁加锁源码分析4.3.3 写锁释放锁流程概述&释放锁源码 4.4 读锁分析4.4.1 读锁加锁流程概述4.4.1.1 基础读锁流程4.4.1.2 读锁重入流程4.4.1.…...

如何在Node.js中使用中间件处理请求

Node.js作为一种基于事件驱动、非阻塞I/O模型的运行环境,广泛用于构建高性能的Web应用。在Node.js中,处理中间件是处理HTTP请求和响应的一个常见方式,特别是在使用Express框架时,中间件扮演着至关重要的角色。本文将介绍如何在Nod…...

Kotlin 2.1.0 入门教程(十三)异常、Nothing

创建自定义异常 可以通过创建继承内置 Exception 类来定义自定义异常。这允许你创建更符合应用程序需求的特定错误类型。 要创建一个自定义异常,可以定义一个继承 Exception 的类: class MyException : Exception("My message")在这个例子中…...

Unity 打造游戏资源加密解密系统详解

在游戏开发中,保护游戏资源不被轻易破解和盗用至关重要。本文将详细介绍如何在 Unity 中打造一个游戏资源加密解密系统,并提供技术详解和代码实现。 一、加密方案选择 1.1 对称加密 优点: 加密解密速度快,适合加密大量数据。 缺点: 密钥管…...

HarmonyOS Next 方舟字节码文件格式介绍

在开发中,可读的编程语言要编译成二进制的字节码格式才能被机器识别。在HarmonyOS Next开发中,arkts会编译成方舟字节码。方舟字节码长什么样呢?我们以一个demo编译出的abc文件: 二进制就是长这样,怎么去理解呢&…...

二层、三层小总结

一、网络隔离 1、物理隔离。搭建两套完全独立的网络,这也是最土豪最安全的做法。 2、二层隔离。使用Vlan隔离,使用不同Vlan或者Pvlan等。 3、三层隔离。路由隔离。 4、设备特性隔离。比如端口隔离swichport protected,或者ACL等。 5、安全…...

Window系统通过Docker本地安装ollama和deepseek

在 Windows 系统上安装 Ollama 和 DeepSeek 的步骤如下: 安装 Ollama 安装 WSL(Windows Subsystem for Linux): 如果还没有安装 过WSL的(安装过的你直接跳过就行了),可以按照以下步骤进行安装&…...

云原生后端|实践?

云原生(Cloud Native)是一种构建和运行应用程序的方法,它充分利用云计算的优势,包括弹性、可扩展性、高可用性和自动化运维。云原生后端开发通常涉及微服务架构、容器化、持续集成/持续部署(CI/CD)、服务网…...

1.1 Spring生态全景解读

1.1 Spring生态全景解读 1.1.1 Spring Framework发展历程与技术演进(深度解析版) 技术演进路线图与里程碑事件: 2003.10 - Spring 1.0 发布→ 核心特性:XML Bean配置、AOP基础支持→ 企业痛点:解决EJB复杂性问题&am…...

跨境商家系统搭建||反向海淘系统的搭建

反向海淘系统的搭建主要涉及以下几个方面的工作: 一、需求分析 在搭建反向海淘系统之前,首先需要进行需求分析。这包括明确系统的目标用户群体,了解他们的购物习惯、需求和期望。同时,还需要分析市场上的竞争对手,了…...

LeetCode数学相关算法题(1)【C语言版】

2520. 统计能整除数字的位数 给你一个整数 num ,返回 num 中能整除 num 的数位的数目。 如果满足 nums % val 0 ,则认为整数 val 可以整除 nums 。 示例 1: 输入:num 7 输出:1 解释:7 被自己整除&…...

云消息队列 ApsaraMQ Serverless 演进:高弹性低成本、更稳定更安全、智能化免运维

如今,消息队列已成为分布式架构中不可或缺的关键服务,为电商、物联网、游戏和教育等行业,提供了异步解耦、集成、高性能和高可靠的核心价值。 过去一年,我们发布了云消息队列 ApsaraMQ 全系列产品 Serverless 化,面向…...

github - 使用

注册账户以及创建仓库 要想使用github第一步当然是注册github账号了, github官网地址:https://github.com/。 之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。 Git…...

cmos晶体管

CMOS晶体管 一、PMOS和NMOS介绍 PN结: P-type和N-type组合在一起,变成一个PN结(二极管)。在P端给高电压,N端给低电压时,可以导通。否则不导通。 NMOS:有四个端口:gate、source、…...

pip3命令全解析:Python3包管理工具的详细使用指南

pip3命令全解析:Python3包管理工具的详细使用指南 一、基本使用二、升级和更新三、其他常用命令四、换源操作五、注意事项六、帮助信息pip3命令使用说明 pip3 是 Python 3 的包管理工具,用于安装、升级和卸载 Python 3 的包。以下是 pip3 的常用命令及详细说明: 一、基本使…...

统计 product 表中 detail 字段包含 xxx 的产品数量

您可以使用以下 SQL 查询语句来统计 product 表中 detail 字段包含 oss.kxlist.com 的产品数量: SELECT COUNT(*) FROM product WHERE INSTR(detail, oss.kxlist.com) > 0;mysql> SELECT COUNT(*)-> FROM product-> WHERE INSTR(detail, oss.kxlist.co…...

Kafka 集群原来是使用ZK管理,现在新版本是怎么管理的?

目录 基于 ZooKeeper 的管理模式 基于 KRaft 的管理模式 迁移到 KRaft 模式的优势 迁移步骤 Kafka 早期依赖 ZooKeeper(ZK)进行元数据管理、集群协调等工作,但在新版本(Kafka 2.8.0 及之后)引入了 KRaft 模式来替代 ZooKeeper 进行管理。下面详细介绍这两种管理模式以…...

【Java并发编程之什么是指令重排序?如何避免指令重排序?】

Java并发编程之什么是指令重排序? 1.1 指令重排序的原因1.2 指令重排序的示例1.3 指令重排序的影响1.4 如何避免指令重排序带来的问题?1.5 使用原子类1.6 使用 final 关键字1.7 内存屏障(Memory Barrier)1.8 总结在Java中,指令重排序是指编译器和处理器为了提高程序执行效…...

渲影医析Lab学术版

渲影医析 Lab 是武汉渲影软件研发的框架式、模块化、流程化的影像组学分析设计软件,尤其适合处理多模态脑影像数据。通过将影像分析流程细分为可视化节点,并以节点连接的方式构建数据流程,赋予了临床医学研究者、生物医药科研工作者自主设计多…...

利用Minio实现大文件分片上传、断点续传、秒传

利用Minio实现大文件分片上传、断点续传、秒传 demo来自B站蜗牛哥,gitee仓库:minio-upload: 使用vue3 elementplus minio springboot 实现大文件的分片上传、断点续传、秒传的功能demo - Gitee.com 后端暴露端口方法 获取上传进度,identifier…...

查出 product 表中所有 detail 字段包含 xxx 的完整记录

您可以使用以下 SQL 查询语句来查出 product 表中所有 detail 字段包含 oss.kxlist.com 的完整记录&#xff1a; SELECT * FROM product WHERE INSTR(detail, oss.kxlist.com) > 0;下面是detail字段包含的完整内容 <p><img style"max-width:100%;" src…...

Linux系统编程之信号基础知识

概述 信号是Linux系统中用于进程间通信的一种机制&#xff0c;允许一个进程通知另一个进程发生了某些特定事件。信号可以来自硬件中断、用户输入&#xff0c;也可以来自其他进程或者内核本身。信号是一种异步通知机制&#xff0c;当某个事件发生时&#xff0c;操作系统会向目标…...

【C语言标准库函数】标准输入输出函数详解[4]:二进制文件读写函数

目录 一、fread() 函数 1.1. 函数简介 1.2. fread 使用场景 1.3. 注意事项 1.4. 示例 二、fwrite() 函数 2.1. 函数简介 2.2. fwrite 使用场景 2.3. 注意事项 2.4. 示例 三、总结 在 C 语言中&#xff0c;二进制文件读写函数允许以二进制形式对文件进行读写操作&…...

图像锐化(QT)

如果不使用OpenCV&#xff0c;我们可以直接使用Qt的QImage类对图像进行像素级操作来实现锐化。锐化算法的核心是通过卷积核&#xff08;如拉普拉斯核&#xff09;对图像进行处理&#xff0c;增强图像的边缘和细节。 以下是一个完整的Qt应用程序示例&#xff0c;展示如何使用Qt…...

Apache Kafka 消息清理之道

前言 消息的清理是 MQ 中间件的基本能力&#xff0c;可以避免 MQ 的存储占用空间无序增长。与其他消息产品不同&#xff0c;Apache Kafka(以下简称 Kafka) 中 topic 上的消息被消费后不会被马上清除&#xff0c;而是由 topic 级别的清理策略来控制。本文将简要介绍 Kafka 中的…...

JVM ①-类加载 || 内存区域

这里是Themberfue 终于结束了网络层的学习&#xff0c;当然&#xff0c;我们学习的知识也只是冰山一角&#xff0c;想要了解更多的知识&#xff0c;还请大家养成主动探索的习惯~~~接下来我们将对 JVM 的一些机制进行简单的讲解&#xff0c;对于 Java程序员来说&#xff0c;本身…...

物理信息机器学习(PIML)的基础探讨及技术实现

在传统机器学习方法迅速发展并在图像识别、语音处理、自然语言处理等领域取得显著突破的同时,科学计算、工程设计以及自然系统建模等领域常常面临数据不足、噪声干扰以及模型泛化能力弱的问题。单纯依赖数据驱动的“黑箱”模型在处理物理问题时,往往难以兼顾数据拟合与物理解…...

【浏览器多开】Google Chrome 谷歌浏览器分身术

谷歌浏览器分身术&#xff08;多开&#xff09;&#xff1a; 复制已有谷歌浏览器图标—>右键–>属性的目标栏中&#xff0c;添加 --user-data-dir自定义文件夹路径 参数。 例如&#xff1a; C:\MySpace\02Installed\Chrome\Chrome-bin\99.0.4844.51\chrome.exe –user-d…...

《量化绿皮书》Chapter 3 Calculus and Linear Algebra 微积分与线性代数(二)

《A Practical Guide To Quantitative Finance Interviews》&#xff0c;被称为量化绿皮书&#xff0c;是经典的量化求职刷题书籍之一&#xff0c;包含以下七章&#xff1a; Chapter 1 General Principles 通用技巧 Chapter 2 Brain Teasers 脑筋急转弯 Chapter 3 Calculus and…...

单片机成长之路(51基础篇) - 008 C51 的标示符和关键字

标准 C 语言定义了 32 个关键字&#xff0c;如下表(ANSI C的32个关键字)&#xff1a; C51在此基础上针对单片机功能进行了扩展&#xff0c;详情见下表(C51编译器扩充关键字)&#xff1a; C 51的数据类型 51单片机使用的C语言的存储器类型分为以下几种&#xff1a;...

嵌入式AI革命:DeepSeek开源如何终结GPU霸权,开启单片机智能新时代?

2025年&#xff0c;全球AI领域最震撼的突破并非来自算力堆叠的超级模型&#xff0c;而是中国团队DeepSeek通过开源策略&#xff0c;推动大模型向微型化、低功耗场景的跨越。相对于当人们还在讨论千亿参数模型的训练成本被压缩到600万美金而言&#xff0c;被称作“核弹级别”的操…...

Deno vs Node.js:性能对比深度解析

1. 引言 Deno 和 Node.js 都是基于 V8 引擎的 JavaScript 运行时环境&#xff0c;然而它们在架构、模块管理、安全性和性能方面存在显著差异。Deno 由 Node.js 的原始作者 Ryan Dahl 开发&#xff0c;旨在解决 Node.js 设计上的一些问题&#xff0c;比如包管理、安全模型和 Ty…...

【R】Dijkstra算法求最短路径

使用R语言实现Dijkstra算法求最短路径 求点2、3、4、5、6、7到点1的最短距离和路径 1.设置data&#xff0c;存放有向图信息 data中每个点所在的行序号为起始点序号&#xff0c;列为终点序号。 比如&#xff1a;值4的坐标为(1,2)即点1到点2距离为4&#xff1b;值8的坐标为(6,7)…...

网络安全治理架构图 网络安全管理架构

网站安全攻防战 XSS攻击 防御手段&#xff1a; - 消毒。 因为恶意脚本中有一些特殊字符&#xff0c;可以通过转义的方式来进行防范 - HttpOnly 对cookie添加httpOnly属性则脚本不能修改cookie。就能防止恶意脚本篡改cookie 注入攻击 SQL注入攻击需要攻击者对数据库结构有所…...

@emotion/styled / styled-components创建带有样式的 React 组件

一、安装依赖 npm install emotion/styled styled-components 二、使用 import styled from emotion/styled; import styled from styled-components;// 创建一个带样式的按钮 const StyledButton styled.buttonbackground-color: #4caf50;color: white;padding: 10px 20px…...

Gemini 2.0模型更新:谷歌最新AI大模型全面开启智能时代

引言 2025年2月5日&#xff0c;谷歌人工智能实验室&#xff08;Google DeepMind&#xff09;发布了最新的Gemini 2.0模型系列更新&#xff0c;包括2.0 Flash、Flash-Lite和Pro实验版本。这些AI大模型的发布标志着人工智能技术在性能、效率和多模态能力上的进一步突破&#xff…...

MySQL 主从复制原理及其工作过程

一、MySQL主从复制原理 MySQL 主从同步是一种数据库复制技术&#xff0c;它通过将主服务器上的数据更改复制到一个或多个从服务器&#xff0c;实现数据的自动同步。 主从同步的核心原理是将主服务器上的二进制日志复制到从服务器&#xff0c;并在从服务器上执行这些日志…...