Spring OAuth2:开发者的安全盾牌!(下)

上文我们教了大家如何像海盗一样寻找宝藏,一步步解锁令牌的奥秘,今天将把更加核心的技巧带给大家一起学习,共同进步!

文章目录

    • 6. 客户端凭证与密码模式
      • 6.1 客户端凭证模式应用
        • 适用于后端服务间通信
      • 6.2 密码模式考量
        • 直接传递用户凭证的风险与对策
      • 实践指导
    • 7. 刷新令牌机制
      • 7.1 令牌有效期管理
        • 刷新令牌的作用
        • 实现自动刷新逻辑
      • 7.2 刷新令牌的安全性
    • 8. 经典问题与解决方案
      • 8.1 跨域资源共享(CORS)配置
        • OAuth2与CORS的兼容问题
      • 8.2 安全最佳实践
        • 8.2.1. 使用HTTPS,让数据穿上防弹衣
        • 8.2.2. 存储令牌,不是玩捉迷藏
        • 8.2.3. 设置合理的过期时间,让令牌不会变成“老古董”
        • 8.2.4. 最小权限原则,不是“多多益善”
        • 8.2.5. 定期轮转密钥,让安全始终保持新鲜
        • 8.2.6. 监控和审计,让安全问题无处藏身
        • 8.2.7. 教育和培训,让团队成为安全专家
      • 8.3 性能优化:让OAuth2服务器飞起来
        • 8.31. 缓存:不仅仅是为了速溶咖啡
        • 8.3.2. 异步处理:不是所有的英雄都穿披风
        • 8.3.3. 负载均衡:分享负担,共享快乐
        • 8.3.4. 限流:不是每辆车都能上高速公路
        • 8.3.5. 多级缓存:叠叠乐,缓存的魔法
        • 8.3.6. 服务端推送:不是所有的信使都骑马
        • 8.3.7. 无状态设计:自由飞翔的服务器
        • 8.3.8. 监控和调优:医生和教练的双重角色
    • 9. 结论
      • Spring OAuth2实施总结
        • 授权模式的多样性
        • 安全与便利的平衡
        • 持续的维护与优化
      • 未来安全趋势展望
        • 持续学习与适应
    • 10. 参考文献

在这里插入图片描述

6. 客户端凭证与密码模式

6.1 客户端凭证模式应用

想象一下,你是一个拥有大量机密宝藏图的地图收藏家。你的宝藏图(资源)是如此珍贵,只有那些经过严格审查的探险家(客户端)才能访问。在OAuth2的世界里,客户端凭证模式就是那些探险家用来证明他们身份的方式。

适用于后端服务间通信

客户端凭证模式适用于后端服务之间的通信,就像是一个探险家团队内部的密语,只有团队成员才知道。

  • 适用场景:服务间的直接通信,如微服务架构中的服务。
  • 特点:客户端直接使用它们的凭证(客户端ID和密钥)来获取访问令牌。

例子

假设你有一个在线购物平台,它由多个微服务组成,比如商品服务、订单服务和支付服务。这些服务需要相互通信,交换数据。在这种情况下,客户端凭证模式就非常合适,因为这些服务都是平台的一部分,它们之间可以安全地共享凭证。

代码示例

// 客户端使用客户端ID和密钥获取访问令牌
@PostMapping("/token/client")
public ResponseEntity<?> getClientAccessToken(@RequestHeader("Authorization") String authHeader) {// 解析客户端ID和密钥// 验证凭证// 发放访问令牌AccessToken accessToken = new AccessToken("access_token", "user_id");return ResponseEntity.ok(accessToken);
}

在这个示例中,客户端通过HTTP头部发送它们的凭证,并请求访问令牌。

6.2 密码模式考量

直接传递用户凭证的风险与对策

密码模式就像是用户把自己的钥匙(用户名和密码)直接交给了他们信任的探险家(客户端),让探险家代表他们去访问宝藏。

  • 适用场景:用户对客户端有高度信任,如移动应用或单页应用。
  • 风险:如果客户端被破解,用户的凭证可能会泄露。

例子

假设你有一个健身应用,用户可以在任何设备上登录并同步他们的健身数据。用户信任这个应用,并愿意提供他们的凭证来获取访问令牌,以便在不同设备间同步数据。

代码示例

// 用户通过用户名和密码获取访问令牌
@PostMapping("/token/password")
public ResponseEntity<?> getPasswordAccessToken(@RequestBody MultiValueMap<String, String> formData) {// 验证用户名和密码// 发放访问令牌AccessToken accessToken = new AccessToken("access_token", "user_id");return ResponseEntity.ok(accessToken);
}

在这个示例中,用户通过客户端发送他们的用户名和密码,并请求访问令牌。

实践指导

  • 安全性:确保客户端是安全的,能够保护用户的凭证。
  • 最小权限原则:只授予客户端完成其功能所需的最小权限。
  • 监控和审计:定期监控和审计客户端的访问行为,确保没有异常。

通过这些模式,我们可以在不同的场景下安全地访问和交换数据。在下一章中,我们将探讨刷新令牌机制,这是确保用户持续访问他们资源的关键。准备好了吗?让我们继续这段OAuth2的冒险旅程,看看如何管理访问令牌的生命周期!

7. 刷新令牌机制

7.1 令牌有效期管理

在OAuth2的奇妙世界里,访问令牌就像是一张进入宝藏室的入场券,但这张入场券是有有效期的。一旦时间到了,海盗们(客户端)就需要一张新的入场券才能继续访问宝藏。这就是刷新令牌的作用所在。

刷新令牌的作用

刷新令牌就像是一张特殊的宝藏图,它可以帮助海盗们在入场券过期后,找到宝藏守护者(授权服务器)来换取一张新的入场券。

  • 减少用户操作:用户不需要每次都重新授权,提高了用户体验。
  • 避免频繁重新授权:客户端可以自动刷新令牌,避免频繁打扰用户。
实现自动刷新逻辑

在Spring Security中,实现自动刷新逻辑就像是设置一个自动导航系统,当海盗们的入场券即将过期时,系统会自动引导他们去换取新的入场券。

代码示例

// 自动刷新令牌的客户端逻辑
public class TokenRefreshInterceptor implements Interceptor {@Overridepublic Response intercept(Chain chain) throws IOException {Request request = chain.request();// 检查令牌是否即将过期if (TokenUtils.isTokenExpiringSoon()) {// 构造刷新令牌请求Request newRequest = request.newBuilder().header("Authorization", "Bearer " + refreshToken).build();// 执行刷新令牌请求Response response = chain.proceed(newRequest);// 从响应中获取新的访问令牌和刷新令牌String newAccessToken = response.header("new_access_token");String newRefreshToken = response.header("new_refresh_token");// 更新令牌TokenUtils.updateTokens(newAccessToken, newRefreshToken);// 重新构造原始请求,使用新的访问令牌request = request.newBuilder().header("Authorization", "Bearer " + newAccessToken).build();}// 继续执行链中的下一个拦截器return chain.proceed(request);}
}

在这个示例中,我们创建了一个拦截器,它会在请求被发送之前检查当前的访问令牌是否即将过期。如果是,它会使用刷新令牌自动获取新的访问令牌和刷新令牌,然后使用新的访问令牌继续执行原始请求。

例子

假设你有一个天气预报应用,用户希望在他们的设备上持续接收最新的天气信息。使用刷新令牌机制,即使用户的访问令牌过期了,应用也可以自动刷新令牌,继续获取天气数据,而不需要用户每次都重新登录。

7.2 刷新令牌的安全性

虽然刷新令牌提供了便利,但它们也带来了安全风险。因此,我们需要采取一些措施来保护刷新令牌:

  • 限制刷新次数:限制刷新令牌可以被用来获取新访问令牌的次数。
  • 短期有效:设置刷新令牌的有效期较短,减少泄露后的风险。
  • 绑定设备:将刷新令牌与特定设备绑定,减少跨设备滥用的风险。

通过这些措施,我们可以确保即使在需要自动刷新令牌的情况下,用户的资源仍然得到保护。

在下一章中,我们将探讨一些常见的OAuth2问题及其解决方案,包括跨域资源共享(CORS)配置、安全最佳实践、性能优化等。准备好了吗?让我们继续这段旅程,看看如何克服这些挑战,保护我们的数字宝藏!
在这里插入图片描述

8. 经典问题与解决方案

8.1 跨域资源共享(CORS)配置

在数字世界的探险中,海盗们(客户端)经常需要跨越不同的海域(域)去访问宝藏。但是,每个海域都有自己的规则,这就涉及到跨域资源共享(CORS)的问题。

OAuth2与CORS的兼容问题

当客户端尝试从不同的域请求授权服务器时,浏览器出于安全考虑,会阻止这种跨域请求。这就需要我们配置CORS,以便允许这种跨域通信。

解决方案

在Spring中,我们可以通过添加CORS配置来解决这个问题。

@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/api/**") // 配置允许跨域的路径.allowedOrigins("*")     // 允许所有域名访问.allowedMethods("GET", "POST", "PUT", "DELETE") // 允许的方法.allowedHeaders("*")     // 允许的头信息.allowCredentials(true); // 是否允许证书(cookies)}
}

8.2 安全最佳实践

在数字世界里,安全就像是我们的超级英雄,时刻保护着我们的虚拟家园不受恶势力的侵害。在OAuth2的领域,安全更是至关重要,因为这里存放着我们最宝贵的资源——数据。现在,让我们以幽默有趣的方式,深入了解如何将安全最佳实践融入到我们的OAuth2实施中。

8.2.1. 使用HTTPS,让数据穿上防弹衣

首先,让我们谈谈HTTPS。在数字世界里,HTTP就像是一条繁忙的街道,任何人都可以在这里闲逛,窥探你的一举一动。而HTTPS则像是给这条街道加上了监控摄像头和安全护栏,确保只有授权的人才能看到你的数据。简单来说,HTTPS就是HTTP的安全版,它通过SSL/TLS加密协议保护数据传输过程中的安全。所以,让你的数据穿上HTTPS这件防弹衣,让窥探者无从下手。

8.2.2. 存储令牌,不是玩捉迷藏

接下来,让我们聊聊令牌的存储。在现实世界中,你会把自己的家门钥匙藏在一个只有你知道的秘密地方。在数字世界里,令牌的存储也应该如此。不要把令牌像玩捉迷藏一样到处乱放,这会让找到它们变得既困难又危险。相反,使用安全存储解决方案,比如HttpOnly的cookies或者安全存储API,确保令牌不会被前端脚本访问。记住,安全存储令牌,就像是把宝藏藏在只有你知道的秘密洞穴里。

8.2.3. 设置合理的过期时间,让令牌不会变成“老古董”

令牌的过期时间设置也是一个重要的安全考虑。想象一下,如果你的家门钥匙永远不会旧,那么任何人都可能拿着它闯入你的家。同样,如果令牌永远不会过期,那么一旦它落入坏人之手,你的数据宝藏就会面临巨大的风险。因此,设置合理的过期时间,让令牌在一定时间后自动失效,可以有效减少令牌被盗用的风险。就像定期更换家门钥匙一样,让令牌保持新鲜,让安全始终保持活力。

8.2.4. 最小权限原则,不是“多多益善”

在授权令牌时,遵循最小权限原则至关重要。这就像是你不会把自己的所有家当都放在一个钱包里,而是会根据需要携带适量的现金和卡片。同样,在OAuth2中,只授予客户端完成其功能所需的最小权限。这样,即使令牌被盗,攻击者也无法访问到所有的资源。记住,权限不是越多越好,而是越少越安全。

8.2.5. 定期轮转密钥,让安全始终保持新鲜

就像我们定期更换家门钥匙一样,定期轮转客户端的密钥也是保持安全的重要措施。想象一下,如果你的邻居或朋友曾经拥有过你的家门钥匙,而现在他们不再是你的朋友了,那么他们仍然可以自由进出你的家,这是多么可怕的事情。同样,在OAuth2中,定期更换密钥可以确保即使旧密钥泄露,也不会对系统安全造成长期影响。让密钥保持新鲜,让安全始终保持警惕。

8.2.6. 监控和审计,让安全问题无处藏身

监控和审计是安全的最佳伙伴。通过监控系统的行为和审计日志,我们可以及时发现和响应安全问题。这就像是在你的虚拟家园周围安装了警报系统和摄像头,任何可疑的行为都会被立即发现并记录下来。定期审查这些记录,确保没有未授权的访问或异常行为。记住,监控和审计是安全的眼睛和耳朵,让安全问题无处藏身。

8.2.7. 教育和培训,让团队成为安全专家

最后,但同样重要的是,教育和培训你的团队。安全不仅仅是技术问题,更是人的问题。确保你的团队了解OAuth2的安全最佳实践,知道如何识别和防范潜在的安全威胁。通过定期的教育和培训,让你的团队成为安全专家,让每个人都成为保护数据宝藏的勇士。

我们探讨了从HTTPS到监控和审计的各种策略。记住,安全是一场永无止境的战斗,我们需要时刻保持警惕,不断学习和适应。通过实施这些最佳实践,我们可以确保我们的数字家园安全无虞,让我们的数据宝藏远离那些不怀好意的海盗和黑客。现在,让我们扬起安全的风帆,继续在数字世界的海洋中航行,保护我们的宝藏,享受我们的冒险!

8.3 性能优化:让OAuth2服务器飞起来

在这个数字化飞速发展的时代,性能优化就像是给一辆老爷车换上涡轮增压器,让它瞬间变身为一辆赛车。在OAuth2的世界里,性能优化同样至关重要。想象一下,如果用户在尝试访问他们的数据宝藏时,遭遇了缓慢的响应时间,那就像是在炎热的夏天,空调突然停止工作一样令人难以忍受。因此,让我们以幽默有趣的方式,探讨如何让OAuth2服务器飞起来。

8.31. 缓存:不仅仅是为了速溶咖啡

缓存是性能优化的瑞士军刀。就像速溶咖啡可以迅速让你从睡梦中清醒过来,缓存可以迅速提供数据,减少不必要的数据库查询。在OAuth2服务器中,实现缓存可以显著提高性能。你可以缓存用户会话、令牌信息、客户端详情等。这样,当相同的请求再次到来时,服务器就可以快速响应,而不是每次都去查询数据库,就像是在超市里快速结账,而不是在收银台前排队等待。

8.3.2. 异步处理:不是所有的英雄都穿披风

异步处理是OAuth2服务器的隐形斗篷。就像蝙蝠侠在夜间行动,悄无声息地处理犯罪,异步处理可以让服务器在后台处理任务,而不会影响用户的体验。例如,在发放令牌时,服务器可以异步地验证客户端的凭证,这样即使验证过程耗时较长,用户也不会感觉到延迟。记住,异步处理就像是英雄的斗篷,让你的服务器在处理请求时更加敏捷。

8.3.3. 负载均衡:分享负担,共享快乐

负载均衡就像是数字世界的交通指挥员。想象一下,如果没有交通灯,所有的车辆都会挤在十字路口,导致交通瘫痪。同样,如果没有负载均衡,所有的请求都可能涌向同一台服务器,导致性能瓶颈。通过负载均衡,可以将请求分散到多台服务器上,这样每台服务器都只需处理一部分请求,从而提高整体的处理能力。这就像是在聚会上分享美食,每个人都能得到满足,而不是让一个人独自面对所有的盘子。

8.3.4. 限流:不是每辆车都能上高速公路

限流是保护OAuth2服务器免受洪水般请求冲击的堤坝。就像高速公路有限速,以确保交通流畅和安全,限流可以确保服务器不会因为过多的请求而崩溃。通过设置合理的请求频率限制,可以防止恶意攻击和滥用服务。这就像是在健身房里使用跑步机,适当的速度可以让你保持健康,而不是一开始就全速冲刺,导致筋疲力尽。

8.3.5. 多级缓存:叠叠乐,缓存的魔法

多级缓存就像是缓存的魔法师,它可以将缓存的效果放大数倍。就像叠叠乐游戏,每一层都建立在前一层之上,多级缓存可以在不同的层次上提供数据,从而进一步提高性能。例如,你可以在内存中缓存热点数据,在分布式缓存中存储更多的数据,在数据库中存储最全的数据。这样,当用户请求数据时,服务器可以在多个层次上快速找到并提供数据,就像是在魔法世界中,用魔杖一指,宝藏就出现在你的面前。

8.3.6. 服务端推送:不是所有的信使都骑马

服务端推送是一种先进的技术,它可以让服务器主动向客户端发送数据。这就像是数字世界的信使,不再是骑马送信,而是通过无线电波瞬间传递信息。当服务器有新数据时,它可以直接推送给客户端,而不需要客户端不断地轮询服务器。这样不仅可以减少网络拥塞,还可以提高用户体验。这就像是在电影院里,电影直接播放在你眼前,而不是你在家里等待快递送来DVD。

8.3.7. 无状态设计:自由飞翔的服务器

无状态设计是让OAuth2服务器自由飞翔的翅膀。就像鸟儿在天空中自由飞翔,不受地面的束缚,无状态的服务器可以在任何时候处理任何请求,而不需要依赖之前的上下文。这样,服务器可以轻松地扩展和收缩,以适应不同的负载。这就像是在音乐节上,DJ可以随时加入或离开,音乐永远不会停止。

8.3.8. 监控和调优:医生和教练的双重角色

监控和调优是OAuth2服务器的医生和教练。就像医生检查你的身体状况,教练指导你的训练,监控和调优可以帮助你发现性能瓶颈,并提供改进的方向。通过实时监控服务器的性能指标,如响应时间、内存使用率、CPU负载等,可以及时发现问题并进行调优。这就像是在马拉松比赛中,教练在旁边观察你的呼吸和步伐,给你提供实时的建议,帮助你保持最佳状态。

我们探讨了从缓存到监控和调优的各种策略。记住,性能优化是一场永无止境的马拉松,我们需要不断地学习、尝试和改进。通过实施这些策略,我们可以确保我们的OAuth2服务器像赛车一样快速,像鸟儿一样自由,让用户体验像在高速公路上驰骋一样顺畅。现在,让我们继续在性能优化的道路上前进,让我们的OAuth2服务器飞得更高,更快,更远!

通过这些解决方案,我们可以确保OAuth2的安全性和性能,同时提供良好的用户体验。在下一章中,我们将总结Spring OAuth2的实施,并展望未来的安全趋势。准备好了吗?让我们继续这段旅程,迎接未来的挑战!
在这里插入图片描述

9. 结论

Spring OAuth2实施总结

在这段充满冒险的OAuth2之旅中,我们从引言出发,一步步深入到这个协议的神秘世界。我们了解了OAuth2的重要性,探索了Spring Framework如何与这个强大的协议集成,一起揭开了授权码模式、简化模式、客户端凭证模式和密码模式的秘密。我们学会了如何管理令牌的生命周期,处理跨域问题,以及实施安全最佳实践。

授权模式的多样性

我们见识了OAuth2提供的多种授权模式,每种模式都像是一把钥匙,适用于不同的场景和需求。就像海盗们根据不同的宝藏选择不同的工具一样,开发者也可以根据不同的应用场景选择合适的授权模式。

安全与便利的平衡

在OAuth2的实施过程中,我们不断寻求安全与便利之间的平衡。就像海盗们在追求宝藏的同时,也要确保自己的船只不被风浪击沉,开发者在提供用户友好的体验的同时,也要确保用户数据的安全。

持续的维护与优化

我们还学习了如何维护和优化OAuth2的实施,包括处理CORS问题、实施安全最佳实践、进行性能优化,以及管理令牌的撤销和黑名单。这些措施就像是海盗们对船只的日常维护,确保它能够在远航中稳定前行。

未来安全趋势展望

随着技术的发展,我们预见到未来的安全领域将会有更多创新。比如,随着区块链技术的发展,我们可能会看到一种去中心化的认证机制,它将提供更高的安全性和透明度。同时,随着人工智能的加入,我们可能会有更智能的安全系统,能够预测和防御未知的安全威胁。

持续学习与适应

在这个快速变化的时代,持续学习和适应是每个开发者和安全专家的必修课。就像海盗们需要不断学习新的航海技能和宝藏知识一样,我们也需要不断学习新的安全技术和最佳实践,以应对不断变化的网络安全环境。

至此,我们的OAuth2之旅即将结束。希望这段旅程不仅给你带来了知识和启发,也带来了乐趣和冒险的感觉。记住,无论你在数字世界的哪个角落,保护好你的宝藏,并且享受每一次的探险。

在未来的日子里,无论是在代码的海洋中航行,还是在数据的岛屿上探险,愿OAuth2成为你可靠的伙伴,保护你的每一步旅程。准备好迎接新的挑战了吗?让我们扬帆起航,向着未知的海域进发!


希望你喜欢这段有趣的OAuth2之旅!如果你有任何问题或想要继续探索更多,请随时回来,我们随时准备迎接新的冒险!

10. 参考文献

  1. Spring Security OAuth官方文档

    • 官方网站:Spring Security Reference
    • 描述:Spring Security的官方文档是理解和实施Spring Security OAuth模块的权威指南。
  2. OAuth2.0 官方规范

    • RFC链接:RFC 6749 - The OAuth 2.0 Authorization Framework
    • 描述:这是OAuth2协议的官方技术规范,详细描述了协议的工作原理和各种授权流程。
  3. 相关书籍

    • 《OAuth 2.0 in Action》by John Bradshaw and Vinay Sahni
    • 描述:这本书提供了OAuth 2.0协议的全面介绍,包括理论基础和实践应用。
  4. 博客文章链接

    • A Simplified Guide to OAuth 2.0
    • 描述:这是一篇简化OAuth 2.0概念的指南,适合初学者快速理解OAuth 2.0的核心概念。
  5. 在线教程和课程

    • OAuth 2.0 Tutorial by Auth0
    • 描述:Auth0提供的OAuth 2.0教程,涵盖了OAuth 2.0的基本概念和实现步骤。
  6. 社区论坛和讨论

    • Stack Overflow - OAuth tag
    • 描述:Stack Overflow上的OAuth标签包含了大量的问题和讨论,是解决实际问题的好去处。
  7. 安全最佳实践

    • OWASP OAuth Security Cheat Sheet
    • 描述:OWASP(开放式Web应用程序安全项目)提供的OAuth安全备忘单,包含了实施OAuth时的安全最佳实践。
  8. 技术文档和API参考

    • Google API Client Libraries for Java
    • 描述:Google提供的Java API客户端库文档,包含了使用OAuth 2.0进行认证的示例和指南。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/336088.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Effective Objective-C 2.0》读书笔记——熟悉Objective-C

目录 第一章&#xff1a;熟悉Objective-C第1条&#xff1a;了解Objective-C语言的起源第2条&#xff1a;在类的头文件中尽量少引入其他头文件第3条&#xff1a;多用字面量语法&#xff0c;少用与之等价的方法第4条&#xff1a;多用类型常量&#xff0c;少用#define预处理指令第…

研发设计管理、研发设计管理系统有哪些

研发设计管理系统种类繁多&#xff0c;每种系统都有其特定的功能和用途。以下是一些常见的研发设计管理系统及其主要功能&#xff1a; PLM&#xff08;产品生命周期管理&#xff09;研发管理系统&#xff1a; 功能&#xff1a;管理产品从概念、设计、开发、制造、销售到维护的…

对比方案:5款知识中台工具的优缺点详解

知识中台工具为企业和组织高效地组织、存储和分享知识&#xff0c;还能提升团队协作的效率。在选择搭建知识中台的工具时&#xff0c;了解工具的优缺点&#xff0c;有助于企业做出最佳决策。本文LookLook同学将对五款搭建知识中台的工具进行优缺点的简单介绍&#xff0c;帮助企…

docker-file 网络

docker挂载 1.绑定挂载&#xff08;Bind Mounts&#xff09;&#xff1a;绑定挂载是将主机上的文件或目录挂载到容器中。 docker run -v /host/path:/container/path image_name 2.卷挂载&#xff08;Volume Mounts&#xff09;&#xff1a;卷挂载将 Docker 数据卷挂载到容器中…

OpenMv图片预处理

本博客讲述的是获取一张图片首先对图像进行处理,比如畸形矫正,图像滤波等操作。 1.histeq()自适应直方图均衡 # 自适应直方图均衡例子 # # 此示例展示了如何使用自适应直方图均衡来改善图像中的对比度。 #自适应直方图均衡将图像分割成区域,然后均衡这些区域中的直方图,…

前端项目开发,3个HTTP请求工具

这一小节&#xff0c;我们介绍一下前端项目开发中&#xff0c;HTTP请求会用到的3个工具&#xff0c;分别是fetch、axios和js-tool-big-box中的jsonp请求。那么他们都有哪些小区别呢&#xff1f;我们一起来看一下。 目录 1 fetch 2 axios 3 js-tool-big-box 的 jsonp 请求 …

操作系统复习-操作系统概述

操作系统概述 操作系统的基本功能 操作系统统一管理着计算机资源&#xff1a; 处理器资源IO设备资源存储器资源文件资源 操作系统实现了对计算机资源的抽象&#xff1a; 用户无需向硬件接口编程IO设备管理软件&#xff0c;提供读写接口文件管理软件&#xff0c;提供操作文…

2.1.2 基于配置方式使用MyBatis

文章目录 实战目标实战步骤1. 创建Maven项目2. 添加项目依赖3. 创建用户实体类4. 创建用户映射器配置文件5. 创建MyBatis配置文件6. 创建日志属性文件7. 测试用户操作8. 运行测试方法 预期结果实战方法结论 实战目标 本实战的目标是演示如何使用MyBatis框架来操作数据库。通过…

磁带存储:“不老的传说”依然在继续

现在是一个数据指数增长的时代&#xff0c;根据IDC数据预测&#xff0c;2025年全世界将产生175ZB的数据。 这里面大部分数据是不需要存储的&#xff0c;在2025预计每年需要存储11ZB的数据。换算个容易理解的说法&#xff0c;1ZB是10^18Bytes, 相当于要写5556万块容量18TB的硬盘…

五种不寻常的身份验证绕过技术

身份验证绕过漏洞是现代web应用程序中普遍存在的漏洞&#xff0c;也是隐藏最深很难被发现的漏洞。 为此安全防护人员不断在开发新的认证方法&#xff0c;保障组织的网络安全。尽管单点登录(SSO)等工具通常是对旧的登录用户方式的改进&#xff0c;但这些技术仍然可能包含严重的…

Spring Cloud Gateway 集成 Nacos、Knife4j

目录 1、gateway网关配置1.1 pom 配置2.2 配置文件1.3 yaml 配置 2、其他服务配置2.1 pom 配置2.2 配置文件2.3 yaml 配置 3、界面访问4、其他 官方文档地址&#xff1a;Spring Cloud Gateway集成Knife4j 官方完整源码&#xff1a;https://gitee.com/xiaoym/swagger-bootstrap-…

景源畅信电商:抖音开店步骤是什么?

随着社交媒体的兴起&#xff0c;抖音已经成为一个不可忽视的电商平台。许多人都希望通过抖音开店来实现自己的创业梦想。那么&#xff0c;抖音开店的具体步骤是什么呢?接下来&#xff0c;我们将详细阐述这一问题。 一、明确回答问题抖音开店的步骤主要包括&#xff1a;注册账号…

探索标准差与方差的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、标准差与方差的基础理解 代码案例 二、标准差与方差的计算方法 方差的计算 标准差的…

SaltStack

SaltStack 官方文档 1.简介 作用&#xff1a;批量处理状态管理&#xff08;配置管理&#xff09;事件驱动&#xff08;通过事件触发操作&#xff09;管理私有云/公有云 yum仓库&#xff1a;http://repo.saltstack.com 安装1.master和minionrpm --import https://repo.saltproj…

【前端学习——react坑】useState使用

问题 使用useState 时&#xff0c;例如 const [selectedId, setSelectedId] useState([false,true,false]);这样直接利用&#xff0c;无法引发使用selectedId状态的组件的变化&#xff0c;但是selectedId是修改了的 let tempselectedId;temp[toggledId]selectedId[toggledId…

A2B V2.0协议学习笔记(非正式版本)

一、说明 A2B全称是 Automotive Audio Bus 汽车音频总线,主要是解决传统音频总线线多、线重、成本贵等问题。 A2B V2.0总线相对V1.0主要变化点: 速率提升,高达98.304Mbps,全双工模式 编码方式,由之前的曼彻斯特编码变为QPSK(正交相移键控)编码,每个符合2bit数据,因此…

【busybox记录】【shell指令】mkdir

目录 内容来源&#xff1a; 【GUN】【mkdir】指令介绍 【busybox】【mkdir】指令介绍 【linux】【mkdir】指令介绍 使用示例&#xff1a; 创建文件夹 - 默认 创建文件夹 - 创建的同时指定文件权限 创建文件夹 - 指定多级文件路径&#xff0c;如果路径不存在&#xff0c…

HAL库使用FreeRTOS实时操作系统时配置时基源(TimeBase Source)

需要另外的定时器&#xff0c;用systic的时候生成项目会有警告 https://blog.51cto.com/u_16213579/10967728

k8s部署calico遇到的问题

kubernetes安装calico calico官网 环境&#xff1a;centos7.9&#xff0c;calico 3.23&#xff0c;kuberadm 1.26 问题1&#xff1a;执行kubectl create -f calico.yml后报错如下 error: resource mapping not found for name: “tigera-operator” namespace: “” from “…