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

WHAT - 前端安全性测试和常见攻击手段

目录

  • 一、安全性测试
  • 二、前端安全性测试
  • 三、跨站脚本(XSS)攻击
    • 1. 介绍
    • 2. 三大类型
      • 反射型 XSS(Reflected XSS)
      • 存储型 XSS(Stored XSS)
      • DOM 型 XSS(DOM-based XSS)
    • 3. xss 盲打
    • 4. xss 水坑攻击:XSS Watering Hole Attack
    • 5. 防范措施
  • 四、跨站请求伪造(CSRF)
    • 1. 介绍
    • 2. 防范措施
  • 五、身份认证机制现状
  • 六、任意文件上传
    • 1. 介绍
    • 2. 防范措施

一、安全性测试

安全性测试,指有关验证应用程序的安全等级识别潜在安全性缺陷的过程。

比如对于应用程序,安全测试的主要目的是:查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力

常规测试方法:

  • 基于风险的安全测试:信息搜集->威胁建模->可用性分析
  • 白盒测试(找出潜在安全性缺陷的最有效的方法):内部攻击,测试人员可以访问源代码、设计文档,可以进行威胁建模或逐行代码检查
  • 黑盒测试:以局外人的身份对系统进行攻击,使用工具检查系统的攻击面,并探查系统的内部信息
  • 灰盒测试:组合使用白盒测和黑盒测试。程序开发中的调试运行是典型的灰盒测试方法

二、前端安全性测试

前端项目的安全性测试需要关注以下几个方面:

  1. 跨站脚本(XSS)攻击防范:确保输入验证和输出编码以防止恶意用户注入脚本。

  2. 跨站请求伪造(CSRF)保护:使用随机生成的令牌验证请求的来源,以防止未经授权的请求。

  3. 内容安全策略(CSP):配置浏览器只加载信任的资源,防止恶意脚本的执行。

  4. 跨域资源共享(CORS)设置:限制跨域请求,确保仅受信任的域可以访问资源。

  5. 敏感数据保护:在传输和存储敏感数据时使用加密,避免敏感信息泄露。

  6. 认证和授权:实现安全的用户身份验证和授权机制,确保用户只能访问其有权限的资源。

  7. 安全的第三方库和依赖管理:定期更新和审查使用的第三方库,以确保不受已知漏洞的影响。

  8. 安全的前端框架和组件:选择安全可靠的前端框架和组件,避免使用存在漏洞或不安全的工具。

通过这些方面的测试和实施安全措施,可以提高前端项目的安全性,保护用户和数据免受恶意攻击。

三、跨站脚本(XSS)攻击

1. 介绍

XSS,Cross Site Scripting,跨站脚本攻击。

XSS 攻击通常指利用网页开发留下的漏洞,将恶意代码注入网页中,使用户加载并执行攻击者的程序。

具体来说,攻击者利用网页提供的输入能力,将攻击脚本构造 HTML 输出,并提交给后台服务。当后台服务在某些场景下将该内容返回其他正常用户时,由于给动态页面中插入的内容含有特殊字符(如 < )时,用户浏览器会将其误认为是插入了 HTML 标签,尤其当引入了一段 JavaScript 脚本 <script> 时,脚本程序将会在用户浏览器中执行。

当攻击成功后,攻击者可能得到包括但不限于劫持用户会话和 cookie、更高的权限和私密的网页内容和个人信息等各种敏感信息。

JavaScript 能做的事情,就是 xss 能做的事情。

常见脚本:

<script>alert(1)</script>
<input onfocus="alert(1)" autofocus />
<img src onerror="alert(1)" />
<svg onload="alert(1)"></svg>
<a href="javascript:alert(1)">跳转</a>

2. 三大类型

反射型 XSS(Reflected XSS)

在反射型 XSS 攻击中,恶意脚本通过攻击者用户在网站提供的输入功能注入到网站的响应中,然后从响应中反射回其他用户的浏览器,最终被执行。这种攻击下恶意脚本通过 URL 参数或其他输入途径传递给应用程序。

攻击者通常会诱使用户点击一个包含恶意脚本的链接。这个链接可能是通过电子邮件、社交媒体消息、钓鱼网站或其他方式传播的。一旦用户点击了这个链接,其中包含的恶意脚本就会被发送到目标网站的服务器,并被反射到返回给用户的页面中,然后在用户的浏览器中执行。

举个例子,假设攻击者通过电子邮件或社交媒体消息发送了一条诱人的信息给用户,内容可能是:

"您的账户出现异常登录尝试,请立即点击此链接查看详情并修改密码:http://www.example.com/login?username=attacker&password=<script>alert('XSS Attack!')</script>"

用户收到这条信息后,可能会因为担心账户安全而被吸引点击链接。当用户点击链接时,浏览器会向目标网站发送一个带有恶意脚本的请求,其中包含在 URL 参数中的 JavaScript 代码。

目标网站可能会验证用户的登录信息,然后将恶意脚本反射到返回给用户的页面中。用户的浏览器会执行这个恶意脚本,导致弹出一个对话框,显示 “XSS Attack!”。

这种方式下交互的内容一般不会存在数据库里,一次性的。

存储型 XSS(Stored XSS)

在存储型 XSS 攻击中,恶意脚本被用户无意中将其存储在网站的数据库或文件系统中,然后在其他用户访问页面时请求从存储位置检索到包含这些恶意脚本的数据,并在浏览器被执行。这种攻击通常需要攻击者能够向网站提交恶意内容,比如在评论框或表单中注入恶意脚本。

举个例子,假设一个网站有一个留言板功能,允许用户发布评论。攻击者利用这个功能,发布了一个包含恶意脚本的评论,比如:

<script>alert('XSS Attack!');</script>

该评论被存储在网站的数据库中。当其他用户加载包含该评论的页面时,恶意脚本将从数据库中检索并在其浏览器中执行,导致弹出一个对话框,显示 “XSS Attack!”。

这种方式下交互的内容会被存储在数据库里,并永久性存储。

DOM 型 XSS(DOM-based XSS)

在 DOM 型 XSS 攻击中,恶意脚本通过修改页面的 DOM 结构来执行,而不是通过服务器返回的响应或存储在数据库中的数据。这种攻击通常涉及恶意脚本被存储在 URL 中,并由客户端的 JavaScript 动态解析执行的攻击形式。

举个例子,假设一个网站有一个搜索功能,会通过 JavaScript 获取 URL 参数进行自动填充搜索,并将其动态插入到页面中的某个元素中。攻击者可以构造一个恶意 URL,比如:

http://www.example.com/search?q=<script>alert('XSS Attack!')</script>

当用户访问这个 URL 时,页面中的 JavaScript 将获取并解析 URL 中的参数,并将其插入到页面中的某个元素内。由于参数中包含恶意脚本,因此该脚本将被动态执行,导致弹出一个对话框,显示 “XSS Attack!”。

这种方式不与后台服务器产生内容的交互,而是一种通过一次性 DOM 操作进行攻击。

3. xss 盲打

简单来说,盲打就是在一切可能的地方(留言区、feedback等)尽可能多的提交 xss 攻击语句,然后看哪一条会被管理员执行,就能获取管理员的 cooike。比如在输入框输入提前准备的 xss 代码,通常是使用 <script> 标签引入远程的 JavaScript 代码,当有管理人员审核提交数据时候,并且点击了提交的数据,就很可能触发获取到有价值的敏感信息。

4. xss 水坑攻击:XSS Watering Hole Attack

来源于鳄鱼埋伏攻击来水边喝水的动物。

水坑攻击,其针对的目标多为特定的团体(组织、行业、地区等),攻击者首先通过猜测(或观察或分析)确定这组目标经常访问的网站,并入侵其中一个或多个,植入恶意软件,最后,达到感染该组目标中部分成员的目的,由于此种攻击借助了目标团体所信任的网站,攻击成功率很高。

XSS 水坑攻击是一种利用受害者经常访问的合法网站或网络服务来进行攻击的策略。攻击者会将恶意代码植入到一个受害者经常访问的网站中,通常是通过对网站的漏洞进行利用或注入恶意脚本来实现。

以下是一个可能的场景:

假设某个组织的员工经常访问一个特定的在线论坛,攻击者意识到这一点,并利用论坛的漏洞或弱点,在论坛的页面中植入了恶意代码,比如一个恶意的 JavaScript。这个 JavaScript 代码可能会窃取用户的登录凭据、会话令牌或其他敏感信息,然后将其发送给攻击者的服务器。

当员工继续访问论坛时,他们的浏览器会加载论坛页面并执行其中的恶意 JavaScript 代码。攻击者因此能够获取受害者的敏感信息,从而导致严重的安全问题。

XSS 水坑攻击的特点是攻击者利用受害者的习惯性行为来实施攻击,并通过植入恶意代码到受害者经常访问的合法网站中,从而使攻击更具隐蔽性和成功率。

5. 防范措施

防御 XSS 攻击是网站开发中至关重要的一环,以下是一些常见的防御措施:

  1. 输入过滤和转义: 对用户输入的数据进行过滤和转义是防御 XSS 攻击的基本手段。网站开发者应该在接收用户输入数据之后,对其进行严格的过滤和转义,以确保用户输入的内容不包含恶意脚本。常见的转义方法包括将特殊字符转换为对应的 HTML 实体,比如将 < 转义为 &lt;

  2. 严格的输入验证: 在接收用户输入数据之前,进行严格的输入验证,确保输入的数据符合预期的格式和类型。这可以有效地防止攻击者通过构造特殊的输入数据来绕过过滤和转义的防御措施。比如一个文本框接受的是一个标准的邮政编码,那唯一有效的输入即 0-9 数字类型,并且长度应该是 6.

  3. 内容安全策略(CSP): CSP 是一种通过定义允许加载的资源策略来防御多种类型的攻击,包括 XSS 攻击。开发者可以通过在 HTTP 响应头中设置 CSP 来限制页面可以加载的资源来源,从而阻止恶意脚本的注入和执行。

Content-Security-Policy: default-src 'self' https://trusted-domain.com; script-src 'self' https://trusted-scripts.com; style-src 'self' https://trusted-styles.com;

在这个示例中,default-src 指令指定了默认的资源加载策略,script-src 指令指定了可以加载 JavaScript 的来源,style-src 指令指定了可以加载样式表的来源。每个指令后面的值指定了允许加载资源的域名或 URL。

  1. 设置 HttpOnly 标志: 将 Cookie 的 HttpOnly 标志设置为 true 可以防止 JavaScript 代码访问该 Cookie,从而有效地防止了 XSS 攻击中的 Cookie 窃取行为。这样,即使攻击者成功注入了恶意脚本,也无法通过 JavaScript 代码来读取或修改用户的 Cookie。

  2. 安全的开发实践: 开发者应该采用安全的编程实践,避免在页面中直接使用用户输入的数据作为 JavaScript 代码的一部分,尤其是不应该使用 eval() 函数或 innerHTML 属性来执行动态生成的 HTML、JavaScript 代码。

综上所述,通过结合以上多种防御措施,网站开发者可以有效地保护其网站免受 XSS 攻击的危害。

四、跨站请求伪造(CSRF)

1. 介绍

CSRF,Cross-Site Request Forgery,是一种常见的网络安全攻击,攻击者通过伪造用户的身份,向网站发送恶意请求,以执行未经授权的操作。

攻击者通常会利用用户已经登录的状态,通过欺骗用户访问包含恶意请求的页面,或者在用户浏览器中执行恶意脚本,使得用户在不知情的情况下发起了对受害者账户的请求操作。这些操作可能包括修改个人信息、发起资金转账、更改密码等。

由于浏览器曾经认证过,所以被访问的后台会认为是真正的用户操作发起的请求,这利用了web中用户身份认证的一个漏洞:简单的cookie身份验证只能保证用户发自某个用户的浏览器,并不能保证请求本身是用户自愿发出的。

下面是一个详细的例子,说明了 CSRF 攻击的过程和如何利用用户登录状态来伪造请求:

  1. 假设用户已经登录到其银行账户,并在该银行的网站上保持了登录状态。

  2. 攻击者在另一个网站上发布了一个帖子,帖子内容包含一个图片标签 <img src="http://victimbank.com/transfer?to=attacker&amount=1000">。这个图片标签的 src 属性指向了攻击者模仿的银行网站上的一个转账请求,将1000美元转账到攻击者的账户。

  3. 当用户被某些手段吸引到这个网站时,浏览器会自动加载这个帖子中的图片,并向银行网站发送一个转账请求。

  4. 由于用户仍然保持在银行网站上的登录状态,浏览器会自动发送用户的登录凭证(比如 Cookie)给银行网站。银行网站会认为这个请求是合法的用户操作,并执行转账操作。

  5. 如此,攻击者成功地利用了用户的登录状态,伪造了一个转账请求,将1000美元转入了攻击者的账户,而用户在不知情的情况下完成了这次转账操作。

通过这个例子,我们可以看到,攻击者利用用户已经登录的状态,在用户不知情的情况下发送了恶意请求,从而实现了对用户账户的非法操作。这就是 CSRF 攻击的基本原理。通俗来讲,这就利用了 web 场景中用户身份认证的一个漏洞:简单的 cookie 身份验证仅仅能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。

利用条件:

  • 已知目标网站的请求格式
  • 发起的 http 请求可事先构造

2. 防范措施

主要是使得请求不可伪造:

  • 利用 SameSite Cookie。如设置为 lax,允许服务器要求某个 cookie 在跨站 post 请求时不会被发送
  • Token 机制验证。即以 token 来进行身份信息验证,一般是设置在请求头 Authorization: Bearer ${accessToken}
  • HTTP Refer 验证。即验证请求来源。如果是非正常页面过来的请求,则极有可能是 CSRF 攻击
  • 验证码。在表单中添加一个验证码功能,通过强制真实用户和应用进行交互,来有效地遏制 CSRF 攻击

五、身份认证机制现状

通过上面的学习,我们知道常见攻击手段目标都是涉及 Cookie 的获取。

在早期,开发者会使用 Cookie 进行登录验证,这存在一些安全问题,主要包括以下几点:

  1. 会话劫持:恶意攻击者可以窃取用户的 cookie,包括用于身份验证的会话 cookie。一旦攻击者获取了有效的会话 cookie,他们就可以冒充用户,访问用户的账户,并执行各种操作,比如修改用户资料、发送消息等。
  2. XSS 攻击:如果网站存在 XSS 漏洞,攻击者可以注入恶意脚本来窃取用户的 cookie。一旦攻击者成功注入了恶意脚本,他们就可以获取用户的 cookie,并进一步进行会话劫持等攻击。
  3. 跨站请求伪造(CSRF):攻击者可以利用 CSRF 攻击来伪造用户的请求,以用户的身份执行某些操作,而不需要知道用户的凭证。如果网站使用基于 cookie 的身份验证,那么攻击者可以利用用户的活动会话来发送恶意请求,从而执行未经授权的操作。

虽然很多网站在登录验证上已经转向了更安全的方法,比如使用基于令牌(token)的认证机制,但这并不意味着 XSS 攻击等攻击手段不再构成威胁,他们仍可以获取其他类型的敏感信息。因此,即使网站采用了更安全的登录验证方式,也不应忽视对 XSS 等攻击的防范。继续实施安全的编码实践定期审查和更新代码、以及使用安全框架和工具来防止 XSS 等攻击仍然是至关重要的。

六、任意文件上传

1. 介绍

上传漏洞这个顾名思义,就是攻击者通过上传木马文件,直接得到WEBSHELL,危害等级超级高,现在的入侵中上传漏洞也是常见的漏洞。

导致该漏洞的原因在于代码作者没有对访客提交的数据进行检验或者过滤不严,可以直接提交修改过的数据绕过扩展名的检验。

上传的文件包括:

  1. 木马
  2. 病毒
  3. 恶意脚本
  4. WebShell

2. 防范措施

  1. 系统开发阶段的防御

a. 校验文件后缀名,使用白名单方式只允许图片、文档等类型
b. 不可直接使⽤参数中的原文件名,要随机生成文件名,并限定后缀
c. 对文件路径配置,只允许读写权限

  1. 使用存放资源服务器进行单独存储
  2. 不可预测的ID对应文件名进行映射

相关文章:

WHAT - 前端安全性测试和常见攻击手段

目录 一、安全性测试二、前端安全性测试三、跨站脚本&#xff08;XSS&#xff09;攻击1. 介绍2. 三大类型反射型 XSS&#xff08;Reflected XSS&#xff09;存储型 XSS&#xff08;Stored XSS&#xff09;DOM 型 XSS&#xff08;DOM-based XSS&#xff09; 3. xss 盲打4. xss 水…...

重量and体积,不要在傻傻的花冤枉钱寄快递了!

寄快递时有没有遇到过明明不重却被按体积收费的情况&#xff1f;别急&#xff0c;今天就来给大家揭秘快递收费的奥秘&#xff01; 实际重量和体积重量&#xff01; 首先&#xff0c;我们要明白两个概念&#xff1a;实际重量和体积重量。实际重量就是你看到的物品重量&#xf…...

docker ps显示的参数具体是什么意思

1&#xff0c;运行一个容器 docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"这段命令的作用是使用 docker run 命令运行一个基于 ubuntu:15.10 镜像的 Docker 容器&#xff0c;并在容器中执行一个无限循环的命令。 具体解…...

【C++】多态:编程中的“一人千面”艺术

目录 一、多态的概念二、多态的定义及实现1.多态的构成条件2.虚函数的重写2.1 什么是虚函数&#xff1f;2.2 虚函数的重写是什么&#xff1f;2.3 虚函数重写的两个例外2.4 C11 override 和 final2.5 重载、覆盖(重写)、隐藏(重定义)的对比 三、抽象类3.1 概念3.2 接口继承和实现…...

【必备工具】gitee上传-保姆级教程

目录 1.gitee是什么 2.gitee怎么注册 ​编辑 3.gitee怎么提交代码 4.gitee的三板斧 Clone仓库 Q&A 1. Gitee 只有三板斧吗&#xff1f; 2. Git 教了&#xff0c;Gitee 上没有绿点怎么办&#xff1f; 3. 用户名和密码输入错误怎么办&#xff1f; 4. 操作时不小心…...

P1115 最长子段和

题目描述 给出一个长度为 &#x1d45b;n 的序列 &#x1d44e;a&#xff0c;选出其中连续且非空的一段使得这段和最大。 输入格式 第一行是一个整数&#xff0c;表示序列的长度 &#x1d45b;。 第二行有 &#x1d45b;n 个整数&#xff0c;第 &#x1d456; 个整数表示序列的…...

02 FreeRTOS 任务

1、创建任务函数 1.1 动态内存的使用 在之前我们如果要创建一个与学生有关的任务&#xff0c;我们会定义&#xff1a; //打印50个学生的信息 char name[50][100]; int age[50]; int sex[50]; //1表示男&#xff0c;0表示女 int score[50]; 如果之后要对其进行修改会非常麻烦&…...

NSS题目练习4

[LitCTF 2023]1zjs 打开后是一个游戏&#xff0c;用dirsearch扫描&#xff0c;什么都没发现 查看源代码搜索flag&#xff0c;发现没有什么用 搜索php&#xff0c;访问 出现一堆符号&#xff0c;看样子像是jother编码 解码得到flag&#xff0c;要删掉[] [LitCTF 2023]Http pro …...

【算法】合并k个已排序的链表

✨题目链接&#xff1a; NC51 合并k个已排序的链表 ✨题目描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 数据范围&#xff1a;节点总数 0≤&#x1d45b;≤50000≤n≤5000&#xff0c;每个节点的val满足 ∣&#x1d463;&#x1d44e;&#x1d459;∣&…...

【Muduo】三大核心之EventLoop

Muduo网络库的EventLoop模块是网络编程框架中的核心组件&#xff0c;负责事件循环的驱动和管理。以下是对EventLoop模块的详细介绍&#xff1a; 作用与功能&#xff1a; EventLoop是网络服务器中负责循环的重要模块&#xff0c;它持续地监听、获取和处理各种事件&#xff0c;…...

ubuntu安装完桌面后如何启动

ubuntu安装完桌面后如何启动 在Ubuntu服务器上安装桌面环境后&#xff0c;您可以使用以下命令启动图形界面&#xff1a; sudo systemctl start gdm3如果您使用的是Ubuntu 20.04或更新版本&#xff0c;可能需要使用gdm3作为显示管理器。在早期的Ubuntu版本中&#xff0c;可能使…...

知识融合概述

文章目录 知识融合知识融合过程研究现状技术发展趋势 知识融合 知识融合的概念最早出现在1983年发表的文献中&#xff0c;并在20世纪九十年代得到研究者的广泛关注。而另一种知识融合的定义是指对来自多源的不同概念、上下文和不同表达等信息进行融合的过程认为知识融合的目标是…...

LIO-EKF: High Frequency LiDAR-Inertial Odometry using Extended Kalman Filters

一、论文摘要 里程计估计是每个需要在未知环境中导航的自主系统的关键要素。在现代移动机器人中&#xff0c;3D LiDAR 惯性系统通常用于执行此任务。通过融合 LiDAR 扫描和 IMU 测量&#xff0c;这些系统可以减少因顺序注册各个 LiDAR 扫描而引起的累积漂移&#xff0c;并提供稳…...

Shell脚本学习笔记(更新中...)

一、什么是shell shell的作用是&#xff1a; 解释执行用户输入的命令程序等。 用户输入一条命令&#xff0c;shell就解释一条。 键盘输入命令&#xff0c;LInux给与响应的方式&#xff0c;称之为交互式。 shell是一块包裹着系统核心的壳&#xff0c;处于操作系统的最外层&a…...

leetcode 210.课程表II

思路&#xff1a;拓补排序 其实就是对于第一个题的问题变了一个问法&#xff0c;上一个题本质上是求有没有环&#xff0c;这道题本质上就是让你求出来符合没有环的路径输出而已&#xff0c;本质上没有什么区别。 不同就在于这里需要你额外开一个数组用来存储你遍历这个有向图…...

SpringBootTest测试框架五

示例 package com.xxx;import com.xxx.ut.AbstractBasicTest; import com.xxx.ut.uttool.TestModel; import...

赛事|基于SprinBoot+vue的CSGO赛事管理系统(源码+数据库+文档)

CSGO赛事管理系统 目录 基于SprinBootvue的CSGO赛事管理系统 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3参赛战队功能模块 4合作方功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&…...

线性化技巧:绝对值变量的线性化

文章目录 1. 问题2. 线性化3. 缺少 x i x i − 0 x_i^ \times x_i^- 0 xi​xi−​0 有什么问题4. 延伸思考5. 参考文献 1. 问题 以方述诚老师课件中的案例为例&#xff1a; m a x 3 x 1 − 2 x 2 − 4 ∣ x 3 ∣ s . t . − x 1 2 x 2 ≤ − 5 3 x 2 − x 3 ≥ 6 2 x 1 …...

List基本使用(C++)

目录 1.list的介绍 2.list的使用 list的构造 list的size() 和 max_size() list遍历操作 list元素修改操作 assign()函数 push_front(),push_back 头插&#xff0c;尾插 pop_front() pop_back 头删尾删 insert()函数 swap()函数 resize()函数 clear()函数 list类数…...

ELK 日志监控平台(一)- 快速搭建

文章目录 ELK 日志监控平台&#xff08;一&#xff09;- 快速搭建1.ELK 简介2.Elasticsearch安装部署3.Logstash安装部署4.Kibana安装部署5.日志收集DEMO5.1.创建SpringBoot应用依赖导入日志配置文件 logback.xml启动类目录结构启动项目 5.2.创建Logstash配置文件5.3.重新启动L…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...