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

【鉴权】深入解析 Token:身份认证的核心技术

目录

  • 引言
  • 一、Token 的定义与概念
    • 1.1 Token 是什么?
    • 1.2 无状态性与自包含性
    • 1.3 Token 的工作流程
      • 1.3.1 基本工作流程
      • 1.3.2 工作流程图示
  • 二、Token 的常见用途
    • 2.1 用户身份验证
    • 2.2 授权控制
    • 2.3 防止跨站请求伪造(CSRF)
    • 2.4 跨域认证
  • 三、Token 的常见类型
    • 3.1 JWT(JSON Web Token)
      • 3.1.1 JWT 的结构
      • 3.1.2 JWT 工作示意图
    • 3.2 OAuth 2.0 Token
      • 3.2.1 OAuth 2.0 的 Token 类型
    • 3.3 API Token
  • 四、Token 的优缺点
    • 4.1 优点
    • 4.2 缺点
  • 五、Token 安全性和最佳实践
    • 5.1 使用 HTTPS 加密通信
    • 5.2 存储 Token 时要谨慎
    • 5.3 设置 Token 有效期
    • 5.4 签名和加密
    • 5.5 避免 Token 过度暴露
    • 5.6 处理 Token 失效和撤销
  • 六、Token 的应用场景
    • 6.1 Web 和移动应用的身份验证
    • 6.2 单点登录(SSO)
    • 6.3 微服务架构中的身份验证
    • 6.4 第三方应用的授权
  • 总结

引言

在现代 Web 开发中,身份认证(Authentication)是保证应用安全的重要一环。传统的基于会话(Session)的身份认证方式,在分布式架构和微服务环境中有诸多限制,而 Token 认证机制,尤其是 JWT(JSON Web Token),因其灵活性、无状态性和跨平台支持,逐渐成为业界的主流选择。

本文将深入解析 Token 的工作原理、常见类型、应用场景、安全性措施等内容,并通过图文帮助你更好地理解这一技术。

一、Token 的定义与概念

1.1 Token 是什么?

Token(令牌)是一个用于身份认证的凭证,通常是由服务器生成并返回给客户端。客户端在后续请求中携带该 Token,服务器通过解析 Token 验证用户身份,从而决定是否授权访问资源。Token 的一个显著特点是其 无状态性,这意味着服务器不需要存储关于用户会话的数据,而是通过解析客户端携带的 Token 来获取所有的身份信息。

1.2 无状态性与自包含性

  • 无状态性:在 Token 认证机制中,服务器不需要保存任何关于会话的状态数据。每次请求,客户端都会在请求头中附带 Token,服务器通过解析 Token 来验证身份。这样的设计有助于减少服务器存储压力,尤其适合分布式和微服务架构。

  • 自包含性:以 JWT 为代表的 Token,通常包含了用户的身份信息、权限信息等数据,这些信息直接存储在 Token 本身中。这样,服务器在接收到 Token 后无需查询数据库或其他后端服务,直接通过解析 Token 获取信息。

1.3 Token 的工作流程

1.3.1 基本工作流程

Token 认证的基本流程如下:

  1. 用户登录:用户通过登录界面提供用户名和密码,发送给服务器。
  2. 服务器验证并生成 Token:服务器验证用户身份(如验证用户名和密码),如果验证通过,生成一个 Token(例如 JWT),并返回给客户端。
  3. 客户端存储 Token:客户端收到 Token 后,将其存储在本地,常见的存储方式有 localStoragesessionStorageCookie
  4. 客户端在后续请求中携带 Token:在随后的 HTTP 请求中,客户端将 Token 附加到请求头的 Authorization 部分。
  5. 服务器验证 Token:服务器解析 Token,验证其有效性,确保 Token 没有过期,并根据 Token 中的信息(如用户身份、权限等)判断是否允许访问相应的资源。

1.3.2 工作流程图示

User Server Client Submit username & password CSDN @ 2136 Return Token (e.g., JWT) Attach Token in Authorization header CSDN @ 2136 Verify Token and respond with resources Client stores token in localStorage/sessionStorage Server validates the token for each request User Server Client

如上图所示,Token 认证的流程非常直观。用户登录后,服务器返回 Token,客户端存储 Token 并在后续请求中携带该 Token,服务器验证并提供资源。

解释

  • 用户向服务器提交用户名和密码进行身份验证。
  • 服务器返回一个 Token(如 JWT),该 Token 包含用户的身份信息和权限。
  • 客户端将该 Token 存储在本地存储中,以便后续使用。
  • 客户端在每次请求时,将 Token 通过 HTTP 请求头发送给服务器。
  • 服务器根据 Token 验证用户身份和权限,授权访问资源。

二、Token 的常见用途

2.1 用户身份验证

Token 最常见的用途是进行用户身份验证。例如,当用户登录时,服务器通过验证用户名和密码,生成一个 Token,返回给客户端。在之后的请求中,客户端将该 Token 附加到请求中,服务器通过验证 Token 确认用户身份,并授权访问相关资源。

2.2 授权控制

Token 不仅包含身份信息,还可以包含关于用户角色、权限等信息。因此,服务器可以根据 Token 中的数据来判断用户是否有权访问某些资源。例如,后台管理系统可能基于 Token 中的角色信息来决定用户是否有权限访问管理页面或执行管理操作。

2.3 防止跨站请求伪造(CSRF)

传统的基于 Cookie 的身份认证机制容易受到 CSRF(跨站请求伪造)攻击,因为攻击者可以诱导用户访问恶意网站,从而利用用户的身份信息发起请求。而 Token 认证通过将身份信息存储在客户端,并通过 HTTP 请求头传递(而非通过 Cookie),从而有效防止了 CSRF 攻击。

2.4 跨域认证

在现代的前后端分离架构中,前端和后端通常分布在不同的域名下。Token 认证非常适合跨域认证,因为 Token 是通过 HTTP 请求头传递的,不受浏览器的跨域限制。因此,Token 机制可以方便地用于跨域认证。

三、Token 的常见类型

3.1 JWT(JSON Web Token)

JWT 是一种开放标准,用于在网络应用环境中传递声明。JWT 包含三部分:Header(头部)、Payload(载荷)、Signature(签名)。

3.1.1 JWT 的结构

JWT 的结构非常简单,由三部分组成:

  1. Header(头部):通常包含 Token 的类型(即 JWT)和签名算法(如 HMAC SHA256 或 RSA)。

    {"alg": "HS256","typ": "JWT"
    }
    
  2. Payload(载荷):包含用户信息和其他元数据。JWT 中的 Payload 是 Base64Url 编码的,因此可以直接解码查看,但不应存储敏感信息。

    {"user_id": "123","role": "admin"
    }
    
  3. Signature(签名):签名用于验证 Token 是否被篡改。服务器使用 Header 和 Payload 部分以及密钥生成签名。

    HMACSHA256(encode(Header) + "." + encode(Payload), SECRET_KEY)
    

3.1.2 JWT 工作示意图

Base64Url
Base64Url
CSDN @ 2136
Header
Payload
Signature
CSDN @ 2136

JWT 的组成部分在传输中是编码的,可以确保在网络上传输时不会泄漏敏感数据。

3.2 OAuth 2.0 Token

OAuth 2.0 是一个授权框架,常用于授权第三方应用访问用户的数据。在 OAuth 2.0 中,Token 作为授权的凭证,允许第三方应用在不暴露用户凭证的情况下访问用户的资源。

3.2.1 OAuth 2.0 的 Token 类型

  • Access Token:用于访问受保护的资源。Access Token 的有效期通常较短。
  • Refresh Token:用于获取新的 Access Token。当 Access Token 过期时,客户端可以通过 Refresh Token 来重新获取一个新的 Access Token。

3.3 API Token

API Token 通常用于后台 API 的访问控制。API Token 是一种简单的身份认证方式,通常以字符串的形式存在,客户端将其附加到 HTTP 请求头中进行验证。API Token 适用于一些不需要用户登录的场景,或者在某些系统内部进行服务之间的身份验证。

四、Token 的优缺点

4.1 优点

优点详细说明
无状态服务器无需存储会话数据,减轻了服务器的负担,适用于分布式架构和微服务。
跨平台支持Token 可以跨域、跨平台传递,适用于前后端分离的架构。
灵活性高可以自定义 Payload,携带用户信息、权限等数据。
高效无需频繁查询数据库或其他服务,验证过程通过解析 Token 完成。
支持跨域认证使用 Token 作为身份认证机制,可以跨域验证,避免了 Cookie 的跨域限制。

4.2 缺点

缺点详细说明
Token 长度较大JWT 的大小通常较大,尤其是当 Payload 包含大量数据时,影响网络传输性能。
Token 被盗用风险如果 Token 被窃取,攻击者可以利用它访问用户数据,因此需要妥善保管 Token。
不易撤销Token 一旦颁发并使用后,无法轻易撤销或失效,除非通过设置短有效期或实现其他机制来定期更新 Token。这使得 Token 的失效管理较为复杂。

五、Token 安全性和最佳实践

虽然 Token 认证机制相较于传统的会话认证具有许多优点,但也存在一些潜在的安全风险。为确保 Token 认证的安全性,以下是一些常见的安全最佳实践:

5.1 使用 HTTPS 加密通信

无论是 JWT 还是 OAuth 2.0 Token,都需要通过 HTTPS(安全的 HTTP)进行传输。这样可以确保 Token 在传输过程中不会被中间人窃取(即防止 Man-in-the-Middle 攻击)。在没有 HTTPS 的情况下,攻击者可能通过监听网络流量获取 Token,从而伪造身份。

5.2 存储 Token 时要谨慎

Token 不应存储在浏览器的 localStoragesessionStorage 中,因为这些存储方式容易受到 XSS(跨站脚本攻击)攻击。更安全的做法是将 Token 存储在 HTTP-only 的 Cookie 中,这样可以防止 JavaScript 访问 Token,从而减少 XSS 攻击的风险。

  • HTTP-only Cookies:通过设置 Cookie 的 HttpOnlySecure 标志,可以使 Cookie 只能通过 HTTP 请求发送,浏览器 JavaScript 无法访问。
  • SameSite 属性:设置 SameSite 属性为 StrictLax,可以防止跨站请求伪造(CSRF)攻击。

5.3 设置 Token 有效期

为了减少 Token 被滥用的风险,建议为 Token 设置适当的有效期。JWT 允许在 Payload 中设置 exp(过期时间)字段,这样在过期后,Token 将自动失效,服务器不再接受该 Token。

  • 短有效期:Token 的有效期应尽可能短,以降低被盗用的风险。例如,可以将 JWT 的过期时间设置为 15 分钟或 1 小时。
  • 使用 Refresh Token:对于需要长期保持会话的应用,可以使用 Refresh Token 机制。当 Access Token 过期时,客户端可以使用 Refresh Token 获取一个新的 Access Token。

5.4 签名和加密

JWT 的安全性依赖于签名和加密机制,确保 Token 未被篡改和伪造。JWT 使用的 HMAC SHA256RSA 等加密算法,能够验证 Token 的完整性。

  • 使用强密码:确保签名密钥(secret key)足够复杂,避免使用简单或默认的密钥。可以使用环境变量来存储密钥,避免硬编码。
  • 加密敏感数据:虽然 JWT 中的 Payload 是 Base64 编码的,但并不加密。因此,对于存储敏感信息(如密码、个人身份信息等),建议使用加密机制,而不仅仅是签名。

5.5 避免 Token 过度暴露

  • 最小化信息暴露:JWT 的 Payload 可以存储身份信息,但不应存储敏感信息如密码、银行账户等。为了安全起见,尽量将敏感数据从 Token 中剔除,存储在服务器或数据库中,而只在 Payload 中存储必要的身份信息和权限。
  • 避免泄露 Token:确保 Token 不会通过 URL 参数传递或通过浏览器的历史记录暴露。应通过 HTTP 请求头的 Authorization 字段传递 Token,这样更加安全。

5.6 处理 Token 失效和撤销

由于 Token 是自包含且无状态的,服务器在收到 Token 后无法直接得知其是否已经失效或被撤销。因此,Token 撤销机制需要通过以下方法之一实现:

  • 短有效期:如前所述,通过设置短的有效期,可以减少 Token 被滥用的窗口。
  • Token 黑名单:使用一个中央黑名单存储 Token,当用户登出或需要撤销 Token 时,可以将其添加到黑名单中,服务器在每次验证时检查 Token 是否在黑名单中。
  • 使用 Refresh Token:通过定期刷新 Access Token,降低长时间有效的 Token 被滥用的风险。

六、Token 的应用场景

6.1 Web 和移动应用的身份验证

在传统的 Web 应用中,Token 常用于身份验证和权限控制。用户登录时,后端会返回一个 Token,客户端在随后的请求中携带该 Token 进行身份验证。这种方式特别适合于 前后端分离 的架构,其中前端和后端可以独立部署和扩展。

对于移动应用(如 iOS 和 Android),Token 认证机制也非常常见。在移动应用中,客户端会存储 Token,并在与服务器交互时附带 Token 进行身份验证。这种方式不仅能减轻服务器的负担,还能简化身份验证的流程。

6.2 单点登录(SSO)

单点登录(SSO, Single Sign-On)是指用户只需要登录一次,就可以访问多个不同的应用系统。Token 在单点登录中起着至关重要的作用。用户通过 SSO 系统登录后,SSO 系统会生成一个 Token,客户端可以使用该 Token 访问其他相关的应用系统,无需再次输入用户名和密码。

6.3 微服务架构中的身份验证

在微服务架构中,每个服务通常都有独立的身份验证和授权机制。Token 认证可以帮助微服务之间实现跨服务的身份验证。通过 Token,微服务之间可以无缝地验证请求来源,确保请求者具备必要的权限。

6.4 第三方应用的授权

在 OAuth 2.0 中,Token 被广泛应用于第三方应用授权。例如,用户可以使用 Google、Facebook 等第三方账号登录某个应用,授权该应用访问用户的基本信息。OAuth 2.0 使用 Access Token 和 Refresh Token 来管理这种跨应用的授权和认证。

总结

Token 认证是现代 Web 和移动应用中最常见的身份验证方式之一。它通过减少服务器存储会话的需求、增强跨平台支持以及提高灵活性,成为了前后端分离、微服务架构、跨域认证等场景的首选解决方案。尽管 Token 认证机制相较于传统的会话认证有许多优点,但它也带来了新的安全挑战。因此,在使用 Token 认证时,开发者需要遵循最佳实践,如使用 HTTPS、妥善存储 Token、设置合理的 Token 过期时间、签名和加密等措施,确保系统的安全性和可靠性。

随着技术的发展,Token 认证机制仍在不断进化。未来,我们可能会看到更多创新的身份验证和授权方案,这些方案将在安全性、易用性、性能等方面进一步优化和提升。


相关文章:

【鉴权】深入解析 Token:身份认证的核心技术

目录 引言一、Token 的定义与概念1.1 Token 是什么?1.2 无状态性与自包含性1.3 Token 的工作流程1.3.1 基本工作流程1.3.2 工作流程图示 二、Token 的常见用途2.1 用户身份验证2.2 授权控制2.3 防止跨站请求伪造(CSRF)2.4 跨域认证 三、Token…...

FastReport将停止 .NET Framework 上的 WebReport 更新

从2024/ 12 /1 日起,Fastreport将停止发布更新和提供对 FastReport.Web (.NET Framework) 的技术支持。该库一直是使用 Online Designer 的许多项目中报告的核心。这些更改意味着 FastReport.Web (Legacy) 库(FastReport.Net包的一部分)将不再…...

面试:TCP、UDP如何解决丢包问题

文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况(拓展)1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…...

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码 在Ubuntu下安装RabbitMQ可以按照以下步骤进行:步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …...

HTTPS通信和TCP通信有什么不一样

HTTPS通信和TCP通信的主要区别如下: ‌协议层次‌:HTTPS是应用层协议,建立在HTTP协议之上,并增加了SSL/TLS加密层;而TCP是传输层协议,提供可靠的数据传输服务。‌安全性‌:HTTPS通过SSL/TLS加密…...

Kafka 的一些问题,夺命15连问

kafka-中的组成员 kafka四大核心 生产者API 允许应用程序发布记录流至一个或者多个kafka的主题(topics)。 消费者API 允许应用程序订阅一个或者多个主题,并处理这些主题接收到的记录流 StreamsAPI 允许应用程序充当流处理器(s…...

unity3d————延时函数

1.public void InvokeRepeating(string methodName, float time, float repeatRate); 延迟重复执行函数 InvokeRepeating 参数一:函数名字符串 参数二:第一次执行的延迟时间 参数三:之后每次执行的间隔时间 注意: 1-1.延时函数第…...

计算机学生自我提升方法——善用搜索引擎

计算机学生自我提升方法——善用搜索引擎 在信息爆炸的时代,计算机专业的学生如何有效地自我提升?答案可能就藏在一个简单却强大的工具——搜索引擎中。搜索引擎不仅是获取知识的入口,更是解决问题的利器。下面,我将分享一些善用…...

游戏引擎学习第一天

视频参考: https://www.bilibili.com/video/BV1zGDCYHErA/ 创建一个保存项目的路径 VS的安装略过,个人自行百度 1. vs 创建第一个CMAKE的窗口项目 game.cpp 修改如下的代码 到https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain 去…...

uni-app view循环绑定click和 v-if

<view class"layout-wrap-item" v-for"(item, index) in menuItems" :key"index" click"item.clickHandler" :v-if"showMenu(item)"></view> const xxx (id) > { }; // 定义菜单项数组 const menuItems …...

Redis 高并发分布式锁实战

目录 环境准备 一 . Redis 安装 二&#xff1a;Spring boot 项目准备 三&#xff1a;nginx 安装 四&#xff1a;Jmeter 下载和配置 案例实战 优化一&#xff1a;加 synchronized 锁 优化二&#xff1a;使用 redis 的 setnx 实现分布式锁 优化三&#xff1a;使用 Lua 脚本…...

关于elementui el-radio 赋值问题

今天遇到这样的问题&#xff1a; 点击的时候&#xff0c;同时选中 照抄官网&#xff01; 后来发现了问题&#xff1a; 也就是说如果你的版本太低&#xff0c;就不能用value&#xff0c;而得用label&#xff0c;于是修改 <el-radio-group v-model"searchTime"&g…...

2024-11-6----Android 11(全志713m)----- 关于添加 Selinux 权限

需求 节点: /sys/devices/platform/motor0/motor_ctrl上层 APP 使用 JNI 需要对该节点进行 echo 的操作,操作失败。 添加前的验证工作 adb 进去验证下,如下图所示: 发现权限不够。su 以后再操作是OK的,如下图: 添加前的修改 为防止报权限错误,直接给777,因为该…...

shodan5(泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面&#xff0c;了解网络安全领域的见闻&#xff0c;了…...

【Linux】Ansible集中化运维工具(详解)安装、常用模块、playbook脚本

文章目录 一、Ansible安装及远程控制1、关闭防火墙和SELinux2、安装ansible3、配置SSH无密码登录1、在管理机上生成一对密钥2、将公钥下发到远程主机3、保管密钥 4、主机目录 二、常用模块1、setup模块2、copy模块3、file模块4、shell模块5、script模块6、ping模块7、group模块…...

惠州石湾DELL T130服务器黄灯不开机案例

惠州石湾一个朋友反馈一台DELL PowerEdge T130 塔式服务器故障为 通电后无法开机&#xff0c;前面同时亮3个故障灯。闪电灯&#xff0c;电压灯&#xff0c;高温灯 1&#xff1a;这种情况建议大家更换一个同型号的电源进行故障排除。 2&#xff1a;朋友把该服务器硬件最小化测…...

⭐SmartControl: Enhancing ControlNet for Handling Rough Visual Conditions

目录 0 Abstract 1 Motivation 2 Related Work 2.1 Text-to-Image Diffusion Model 2.2 Controllable Text-to-Image Generation 2.3 ControlNet 2.4 Control Scale Exploration 3 Method 3.1 Framework 3.2 Control Scale Predictor 3.3 Unaligned Data Constructi…...

wordpress站外调用指定ID分类下的推荐内容

在WordPress中&#xff0c;如果你想从站外调用指定ID分类下的推荐内容&#xff0c;你可以使用WordPress REST API来实现。以下是一个基本的步骤指南&#xff1a; 1. 启用REST API 确保你的WordPress站点已经启用了REST API。大多数现代WordPress版本默认启用此功能。 2. 获取…...

Ente: 我们的 Monorepo 经验

原文&#xff1a;manav - 2024.10.29 九个月前&#xff0c;我们切换到了 monorepo。在此&#xff0c;我将介绍我们迄今为止的切换经验。 这并不是一份规范性的建议&#xff0c;而是一个经验的分享&#xff0c;目的是希望能够帮助其他团队做出明智的决策。 与大多数岔路不同&…...

Kafka java 配置

前言&#xff1a; 大家好&#xff0c;大家在springboot项目中&#xff0c;经常采用 KafkaListener 做为消费者。这个是spring为我们封装的。 但是某些情况 注解的方式并不能满足需求。这个时候就需要手动版本了。 介绍&#xff1a; 我们已经集成spring-Kafka 就不需要再…...

网络安全现状:复杂的威胁形势导致压力水平飙升

《2024 年网络安全状况》报告深入分析了当前网络安全挑战和趋势。 该报告重点介绍了几个关键的关注领域&#xff0c;包括人员短缺、技能差距、不断演变的威胁和预算限制&#xff0c;同时还指出了取得进展的领域&#xff0c;例如对威胁响应能力的信心增强以及对网络风险评估的认…...

【机器学习】强化学习(1)——强化学习原理浅析(区分强化学习、监督学习和启发式算法)

文章目录 强化学习介绍强化学习和监督学习比较监督学习强化学习 强化学习的数学和过程表达动作空间序列决策策略&#xff08;policy&#xff09;价值函数&#xff08;value function&#xff09;模型&#xff08;model&#xff09; 强化学习和启发式算法比较强化学习步骤代码走…...

【SoC设计指南 基于Arm Cortex-M】学习笔记1——AMBA

AMBA简介 先进微控制器总线架构&#xff08;Advanced Microcontroller Bus Architecture&#xff0c;AMBA&#xff09;是用在arm处理器上的片上总线协议规范集。 AMBA总线协议规范集包含AHB、APB、AXI等。 AHB&#xff1a;先进高性能总线(Advanced High-performance Bus) APB&…...

flutter鸿蒙模拟器 Win环境调试报错问题记录(暂未解决)

前情提要&#xff1a; 1、flutter项目已经正确生成了ohos项目 2、flutter和鸿蒙的环境变量配置正确 3、ohos项目执行flutter build hap成功 4、没有真机&#xff0c;使用win环境创建的x86模拟器 问题状态 使用模拟器运行ohos&#xff0c;控制台提示“安装HAP 报 code:9568347错…...

详解Rust标准库:HashSet

## 查看本地官方文档安装rust后运行 rustup doc查看The Standard Library即可获取标准库内容 std::collections::hash_set::HashSet定义 HashSet是一种集合数据结构&#xff0c;它只存储唯一的元素。它主要用于检查元素是否存在于集合中&#xff0c;或者对元素进行去重操作&…...

记录学习react的一些内容

由于是在公司实际项目中学习&#xff0c;所以不是很完整 需要一点一点的学 1.React.useState 类似于vue中的ref 可以修改状态 但是是异步的 感觉不好用 const [wishData, setWishData] React.useState<any>(null); 只能使用setxxx来修改 2.useEffect(()>{},[]) 类…...

json绘制热力图

首先需要一段热力信息的json&#xff0c;我放在头部了。 然后就是需要de-geo库了。 实现代码如下&#xff1a; import * as d3geo from d3-geoimport trafficJSON from ../assets/json/traffic.jsonlet geoFun;// 地理投影函数// let info {max: Number.MIN_SAFE_INTEGER,mi…...

linux 下查看程序启动的目录

以azkaban为例 第一步、ps -ef | grep azkaban 查询出进程号 第二步、cd /proc/ 第三步 、cd 进程号 第四部 ll 查看详情 查看jar 位置 查看jar 启动命令...

书生浦语第四期基础岛L1G2000-玩转书生「多模态对话」与「AI搜索」产品

文章目录 一、MindSearch二、书生浦语三、书生万象四、进阶任务 一、MindSearch MindSearch 是一个开源的 AI 搜索引擎。它会对你提出的问题进行分析并拆解为数个子问题&#xff0c;在互联网上搜索、总结得到各个子问题的答案&#xff0c;最后通过模型总结得到最终答案。书生浦…...

保护Kubernetes免受威胁:容器安全的有效实践

安全并非“放之四海而皆准”的解决方案&#xff0c;相反地&#xff0c;它更多的是一个范围&#xff0c;受其应用的特定上下文的影响。安全领域的专业人士很少宣称什么产品是完全安全的&#xff0c;但总有方法可以实现更强的安全性。在本文中&#xff0c;我们将介绍各种方法来支…...

wordpress 配置七牛/女教师网课入06654侵录屏

实例代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine;//相机视角跟踪 public class FollowTarget : MonoBehaviour {//游戏人物 的位置private Transform player;//游戏人物与 相机的差private Vector3 offset;//相机的速度private…...

丰台做网站/2023年8月新闻热点事件

要在给定的String中找到辅音&#xff0c;请使用charAt()方法将其中的每个字符与元音字母进行比较&#xff0c;其余为辅音。示例public class FindingConsonants {public static void main(String args[]) {String str new String("Hi Welcome to Nhooo");for(int i0…...

网站建设的/百度推广怎么做最好

开头 在找工作的过程中&#xff0c;对于 Redis 技术知识的掌握已经成为必须的技能。美团面试常常就会被问到Redis相关知识&#xff0c;而这次我就差点倒在了美团3面&#xff0c;面试官连问我以下几个Redis的问题&#xff0c;然后就卡壳了… redis了解吗&#xff1f;你说说怎么…...

wordpress后台改css/seo快速排名利器

正文共&#xff1a; 2383字 5图 预计阅读时间&#xff1a; 6分钟每日分享If you change nothing, nothing will change如果你什么也不去改变&#xff0c;那么没什么会改变。小闫语录&#xff1a;想要一份好工作&#xff0c;那就好好学习扎实自己&#xff1b;想要气质&#xff0…...

主题资源网站建设/磁力猫引擎

Python是一门面向对象的编程语言&#xff0c;python中一切皆为对象&#xff0c;对每一个对象分配内存空间&#xff0c;python的内存管理机制主要包括引用计数、垃圾回收和内存池机制。本文简要介绍python对象及内存管理机制。 目录参数传递Python 参数传递1. 不可变数据类型2. …...

wordpress跳转https/百度账户代运营

国服新出的小活动&#xff0c;被玩家戏称为&#xff1a;在DNF之中玩DNF。不过国服出品&#xff0c;必然是BUG四起的精品&#xff0c;近日有玩家爆料&#xff0c;模拟器刷出的史诗和神话装备&#xff0c;通过特殊手段&#xff0c;是可以放入到背包的&#xff0c;这就让41、21和缺…...