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

news2024/12/31 7:00:26

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

文章目录

    • 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 {

    @Override
    public 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 {

    @Override
    public 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.coloradmin.cn/o/1715164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小短片创作-理论知识(三)

1、抗锯齿 1.相机移动的时候出现锯齿 2.当1个像素在三角形边缘的时候&#xff0c;可能取值为白色&#xff0c;也可能取值为黑色&#xff0c;表现出来就是闪烁&#xff0c;或锯齿 3.如果我们通过超采样将1个像素变成4个像素进行计算&#xff0c;得到的结果就会更准确&#x…

文件IO(二)

文件IO&#xff08;二&#xff09; 标准IO缓冲类型全缓冲行缓冲不缓冲 打开文件fopen 操作文件按字符读写(fgetc fputc)按行读写&#xff08;fgets fputs&#xff09;按块&#xff08;对象&#xff09;读写&#xff08;fread fwrite&#xff09;按格式化读写&#xff08;fscanf…

【考研数学】李艳芳900比李林880难吗?值得做吗?

差不多&#xff0c;只能说基础没搞好刷这两个都很费劲 李艳芳900题把每个章节题目划分为ABC三个难度级别&#xff0c;题目选取的难度较大也比较新颖&#xff0c;计算量也非常接近考研趋势&#xff0c;原创性很高&#xff0c;比较适合过完一轮的同学继续做补充和强化 880算是比…

深度学习:手撕 RNN(2)-RNN 的常见模型架构

本文首次发表于知乎&#xff0c;欢迎关注作者。 上一篇文章我们介绍了一个基本的 RNN 模块。有了 这个 RNN 模块后&#xff0c;就像搭积木一样&#xff0c;以 RNN 为基本单元&#xff0c;根据不同的任务或者需求&#xff0c;可以构建不同的模型架构。本节介绍的所有结构&#…

(函数)判断素数(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//声明素数判断函数&#xff1b; void prime(int number);int main() {//初始化变量值&#xff1b;int number 0;//获取用户输入的数据&#xff1b;printf(&quo…

有趣的css - 列表块加载动效

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用 css 打造一个极简的列表块加载动效。 最新文章通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页面渲染效果 整…

渗透测试工具Cobalt strike-2.CS基础使用

三、结合metasploit,反弹shell 在kali中开启使用命令开启metasploit msfconsole ┌──(root㉿oldboy)-[~] └─# msfconsole --- msf6 > use exploit/multi/handler [*] Using configured payload generic/shell_reverse_tcp --- msf6 exploit(multi/handler) > show …

excel表格里怎样不删除0,又不显示0呢?

在单元格里不显示0&#xff0c;大体上有这么几种方法&#xff1a; 1.设置单元格自定义格式 选中数据区域&#xff0c;鼠标右键&#xff0c;点一下设置单元格格式&#xff0c;选中数字&#xff0c;自定义&#xff0c;在右侧的类型栏&#xff0c;设置格式&#xff1a; [0]&quo…

FinRobot:一个由大型语言模型(LLM)支持的新型开源AI Agent平台,支持多个金融专业AI Agent

财务分析一直是解读市场趋势、预测经济结果和提供投资策略的关键。这一领域传统上依赖数据&#xff0c;但随着时间的推移&#xff0c;越来越多地使用人工智能&#xff08;AI&#xff09;和算法方法来处理日益增长的复杂数据。AI在金融领域的作用显著增强&#xff0c;它自动化了…

ch3运输层--计算机网络期末复习(持续更新中)

运输层位于网络层之上 运输层协议提供的某些服务受到网络层协议的限制。比如,时限和带宽保证。 运输层也提供自己的特殊服务。比如,可靠数据传输服务,安全性服务。 网络层:两个主机之间的逻辑通信 运输层:两个进程之间的逻辑通信 网络地址:主机的标识(IP地址) 传输地址: …

3.Linux系统环境搭建

一、虚拟化机&#xff1a;指的是通过虚拟化技术将一台计算机分为多台逻辑计算机。注&#xff1a;虚拟机共用CPU和内存资源。 二、虚拟机用途&#xff1a; 1.搭建学习环境&#xff1a;例如在同一间实验室里&#xff0c;物理机Windows系统&#xff0c;虚拟机可以用Linux系统。 …

【网络运维的重要性】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

大模型低秩适配器LoRA源码解读

一、引言 关于 LoRA 的具体理论原理可以参考&#xff1a;图解大模型微调系列之&#xff1a;大模型低秩适配器 LoRA&#xff08;原理篇&#xff09; 关于 LoRA 的源码解读实操可以参考&#xff1a;图解大模型微调系列之&#xff1a;大模型低秩适配器 LoRA&#xff08;源码解读…

四川汇聚荣聚荣科技有限公司是正规的吗?

在当今社会&#xff0c;随着科技的飞速发展&#xff0c;越来越多的科技公司如雨后春笋般涌现。然而&#xff0c;在这个信息爆炸的时代&#xff0c;如何判断一家公司是否正规成为了许多人关注的焦点。本文将围绕“四川汇聚荣聚荣科技有限公司是否正规”这一问题展开讨论&#xf…

【漏洞复现】大华智能物联综合管理平台 log4j远程代码执行漏洞

0x01 产品简介 大华ICC智能物联综合管理平台对技术组件进行模块化和松耦合&#xff0c;将解决方案分层分级&#xff0c;提高面向智慧物联的数据接入与生态合作能力。 0x02 漏洞概述 大华ICC智能物联综合管理平台/evo-apigw/evo-brm/1.2.0/user/is-exist 接口处存在 l0g4i远程…

Spring Cache自定义缓存key和过期时间

一、自定义全局缓存key和双冒号替换 使用 Redis的客户端 Spring Cache时&#xff0c;会发现生成 key中会多出一个冒号&#xff0c;而且有一个空节点的存在。 查看源码可知&#xff0c;这是因为 Spring Cache默认生成key的策略就是通过两个冒号来拼接。 同时 Spring Cache缓存…

展现市场布局雄心,ATFX再度亮相非洲峰会,开启区域市场新篇章

自2023年全球市场营销战略部署实施以来&#xff0c;ATFX在全球各区域市场取得了丰硕成果&#xff0c;其品牌实力、知名度、影响力均有大幅提升。在这场全球扩张的征程中&#xff0c;非洲市场日益成为集团关注的焦点。自2023年首次踏上这片充满潜力的市场以来&#xff0c;ATFX持…

技术架构设计指南:从需求到实现

技术架构是软件系统的骨架&#xff0c;它决定了系统的性能、可靠性、扩展性等关键特性。本文将介绍技术架构设计的一般步骤和方法。 第一步&#xff1a;需求分析 在设计技术架构之前&#xff0c;首先要对系统需求进行全面深入的分析。这包括功能需求、非功能需求&#xff08;如…

用户接入和认证技术

一、用户接入和认证配置 称为网络接入控制&#xff0c;通过对接入网络的客NAC (Network Admission Control)户端和用户的认证保证网络的安全&#xff0c;是一种“端到端”的安全技术。包括802.1x认证、MAC认证与Portal认证。 二、三种认证方式简介 1、Portal认证 Portal认证通…

最新上市公司控制变量大全(1413+指标)1990-2023年

数据介绍&#xff1a;根据2023年上市公司年报数据进行更新&#xff0c;包括基本信息、财务指标、环境、社会与治理、数字化转型、企业发展、全要素生产率等1413指标。数据范围&#xff1a;A股上市公司数据年份&#xff1a;1990-2023年指标数目&#xff1a;1413个指标&#xff0…