Cookie和Session的对比

news2024/12/22 23:06:37

Cookie和Sesion

一、cookie和session创建对象

2024/9/15 10:23:59

你想了解的是如何在某种编程语言中创建和管理 cookies 和 sessions 吗?如果是的话,具体是哪个语言或框架呢?

img

2024/9/15 10:24:09

二、创建对象是客户端还是服务器

2024/9/15 10:24:17

在 web 开发中,cookiessessions 都涉及到客户端和服务器端的交互,但它们的创建和管理分别发生在不同的地方:

Cookies

  • 创建对象: 客户端和服务器端都可以影响 cookies 的创建。一般来说,服务器端通过 HTTP 响应头设置 cookies,当浏览器接收到这个响应时,客户端(浏览器)将 cookies 存储在本地。

  • 存储: Cookies 存储在客户端的浏览器中。

  • 示例(服务器端设置 cookie):

    pythonCopy Code# 使用 Flask 框架的 Python 示例
    from flask import Flask, make_response
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        resp = make_response("Setting a cookie!")
        resp.set_cookie('my_cookie', 'cookie_value')
        return resp
    

Sessions

  • 创建对象: Session 通常在服务器端创建和管理。服务器生成一个唯一的 session ID,并将其发送到客户端(通常以 cookie 的形式)。客户端将这个 session ID 存储在浏览器的 cookies 中,随后每次请求时都会发送回服务器。

  • 存储: 实际的 session 数据存储在服务器端的某种存储介质中,如内存、数据库、文件等。客户端只存储 session ID。

  • 示例(服务器端管理 session):

    pythonCopy Code# 使用 Flask 框架的 Python 示例
    from flask import Flask, session
    
    app = Flask(__name__)
    app.secret_key = 'supersecretkey'  # 用于加密 session 数据
    
    @app.route('/')
    def index():
        session['username'] = 'user'
        return "Session set!"
    
    @app.route('/get_session')
    def get_session():
        username = session.get('username', 'Not logged in')
        return f'Hello, {username}'
    

总的来说,cookies 的创建和存储涉及客户端,而 sessions 的创建和管理主要发生在服务器端。

img

2024/9/15 10:24:46

三、本质来说只是存储位置不同吗

2024/9/15 10:24:53

对的,本质上,cookies 和 sessions 的区别主要在于它们的存储位置和管理方式。以下是它们的主要区别:

1. 存储位置

  • Cookies:
    • 存储在客户端(用户的浏览器)中。
    • 通过 HTTP 响应头由服务器设置,并且浏览器会在之后的请求中发送这些 cookies。
    • 可以被用户查看和修改,具体取决于浏览器的隐私设置。
  • Sessions:
    • 存储在服务器端。
    • 客户端只存储一个唯一的 session ID,通常以 cookie 形式存储在浏览器中。
    • 服务器根据这个 session ID 查找存储在服务器上的 session 数据。

2. 主要特点

  • Cookies:
    • 适用于存储少量的信息(如用户设置或跟踪信息)。
    • 可以设置过期时间(如持久 cookie)或者在会话结束时自动删除(会话 cookie)。
    • 不适合存储敏感信息,因为客户端可以访问这些数据。
  • Sessions:
    • 适用于存储较复杂或敏感的信息(如用户登录状态)。
    • 一般来说,session 数据在服务器上会有更高的安全性,因为客户端只持有 session ID。
    • 通常在用户关闭浏览器或者 session 超时后会过期。

3. 管理方式

  • Cookies:
    • 由服务器通过 HTTP 响应头设置,也可以由客户端通过 JavaScript 操作。
    • 管理和验证需要在客户端和服务器之间进行协作。
  • Sessions:
    • 由服务器生成和管理,存储在服务器端(如内存、数据库等)。
    • 客户端仅负责存储和发送 session ID。

总结

虽然 cookies 和 sessions 在设计和使用上有不同的考虑,但它们都是用来在客户端和服务器之间保持状态和传递信息的工具。主要区别在于存储位置和信息的敏感性。

img

2024/9/15 10:25:37

四、那cookie值存储在客户端,不存储在服务器吗

2024/9/15 10:25:42

对,cookie 的值确实存储在客户端(用户的浏览器)中。服务器通过 HTTP 响应头设置 cookies,浏览器将这些 cookies 存储在本地,并在每次请求时将 cookies 发送回服务器。因此,服务器端不直接存储 cookies 的值,而是依赖客户端的浏览器来管理这些信息。

img

2024/9/15 10:25:58

那怎么判断是否正确

2024/9/15 10:26:09

要判断 cookie 的值是否正确或有效,通常可以通过以下几种方式:

1. 服务器端验证

在服务器端,你可以验证客户端发送的 cookie 是否符合预期。常见的方法包括:

  • 检查 Cookie 值: 服务器接收到请求时,可以检查 cookie 中的值是否与预期的值匹配。例如,服务器可以检查某个身份验证 cookie 是否有正确的用户 ID 或 Token。

    pythonCopy Code# 使用 Flask 框架的 Python 示例
    from flask import Flask, request, make_response
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        cookie_value = request.cookies.get('my_cookie')
        if cookie_value == 'expected_value':
            return "Cookie is correct!"
        else:
            return "Cookie is incorrect."
    
  • 数据库验证: 如果 cookie 值是某种令牌(如 session ID 或 JWT),可以在服务器端查询数据库或其他存储机制以验证这个令牌是否有效和对应的用户状态。

    pythonCopy Code# 伪代码示例
    def verify_cookie(cookie_value):
        # 查询数据库或内存中的 session 数据
        session_data = database.get_session_data(cookie_value)
        if session_data:
            return True
        else:
            return False
    

2. 客户端验证

虽然主要验证通常在服务器端进行,但你可以在客户端做一些基本检查,例如:

  • JavaScript 检查: 在客户端,可以使用 JavaScript 来读取和检查 cookie 值,但请注意这不是绝对安全的,因为用户可以修改客户端的 cookies。

    javascriptCopy Code// JavaScript 示例
    function getCookie(name) {
        let value = "; " + document.cookie;
        let parts = value.split("; " + name + "=");
        if (parts.length == 2) return parts.pop().split(";").shift();
    }
    
    let cookieValue = getCookie('my_cookie');
    if (cookieValue === 'expected_value') {
        console.log("Cookie is correct!");
    } else {
        console.log("Cookie is incorrect.");
    }
    

3. 安全措施

为了确保 cookie 的安全性,可以采取以下措施:

  • 使用 HttpOnly 标志: 使 cookie 无法通过 JavaScript 访问,从而降低 XSS 攻击的风险。

    pythonCopy Code# 使用 Flask 框架的 Python 示例
    resp.set_cookie('my_cookie', 'cookie_value', httponly=True)
    
  • 使用 Secure 标志: 使 cookie 仅通过 HTTPS 传输,从而避免在不安全的网络中泄露 cookie。

    pythonCopy Code# 使用 Flask 框架的 Python 示例
    resp.set_cookie('my_cookie', 'cookie_value', secure=True)
    
  • 加密 Cookie 值: 对 cookie 中存储的敏感数据进行加密,以防止其被篡改或泄露。

    pythonCopy Code# 使用 Flask 框架的 Python 示例
    from cryptography.fernet import Fernet
    
    key = Fernet.generate_key()
    cipher_suite = Fernet(key)
    
    # 加密 cookie 值
    encrypted_value = cipher_suite.encrypt(b'cookie_value')
    resp.set_cookie('my_cookie', encrypted_value)
    
    # 解密 cookie 值
    decrypted_value = cipher_suite.decrypt(encrypted_value)
    

通过这些方法,你可以确保客户端发送的 cookie 值是否符合预期,并增强应用的安全性。

img

2024/9/15 10:27:13

五、cookie主要应用于登录验证的吗

2024/9/15 10:27:16

不仅仅是登录验证。Cookie 主要用于:

  1. 会话管理:如保存用户登录状态。
  2. 个性化设置:如保存用户的主题或语言偏好。
  3. 跟踪和分析:如记录用户的浏览行为以进行分析或广告定位。

它们在许多 Web 应用程序中都扮演着重要角色。

img

2024/9/15 10:27:30

六、会保存密码吗

2024/9/15 10:27:39

通常情况下,不应该在 cookie 中保存密码。以下是为什么以及如何处理密码的原因:

为什么不保存密码

  1. 安全性风险:将密码直接存储在 cookie 中会增加被窃取或泄露的风险。如果攻击者能够访问客户端的 cookies,他们就能获取用户的密码,从而进行非法操作。
  2. 密码应加密:密码应该始终以加密形式存储,并且在安全的环境中进行验证。保存明文密码或简单的加密密码在 cookie 中是非常不安全的。

更安全的做法

  1. 使用会话 ID:而不是存储密码,将一个唯一的会话标识符(session ID)存储在 cookie 中。服务器会根据这个标识符来查找用户的会话信息和状态。这样即使 cookie 被窃取,也不会直接暴露用户的密码。

    pythonCopy Code# Flask 示例
    from flask import Flask, session, redirect, url_for
    
    app = Flask(__name__)
    app.secret_key = 'your_secret_key'
    
    @app.route('/login', methods=['POST'])
    def login():
        # 验证用户凭证
        session['user_id'] = user_id  # 存储用户 ID 或会话 ID
        return redirect(url_for('home'))
    
    @app.route('/home')
    def home():
        if 'user_id' in session:
            return f'Logged in as {session["user_id"]}'
        return 'You are not logged in'
    
  2. 使用安全的 cookie 标志:设置 HttpOnlySecure 标志来保护 cookie。例如,HttpOnly 防止客户端 JavaScript 访问 cookie,Secure 确保 cookie 仅通过 HTTPS 传输。

    pythonCopy Code# Flask 示例
    resp.set_cookie('session_id', 'some_session_id', httponly=True, secure=True)
    
  3. 密码哈希:在服务器端存储用户密码时,使用哈希算法(如 bcrypt、argon2)进行加密。哈希后的密码与原始密码不同,但能够进行安全比较。

    pythonCopy Code# Python 示例使用 bcrypt
    import bcrypt
    
    password = b"super_secret_password"
    hashed_password = bcrypt.hashpw(password, bcrypt.gensalt())
    
    # 比较密码
    if bcrypt.checkpw(password, hashed_password):
        print("Password matches")
    
  4. 实施多因素认证:进一步增强安全性,除了密码,还要求其他认证因素(如短信验证码、邮件验证码等)。

通过这些方法,你可以在不将敏感信息(如密码)存储在 cookie 中的情况下,仍然有效地管理用户会话和身份验证。 [Something went wrong, please try again later.]

img

2024/9/15 10:28:19

即使是保存ID,那用什么判断密码是否正确

2024/9/15 10:28:28

在 Web 应用中,保存用户 ID(或会话标识符)和验证密码是两个不同的步骤,通常涉及以下过程:

1. 用户登录过程

当用户尝试登录时,通常会涉及以下步骤:

  • 用户提交登录表单:用户输入用户名和密码。

  • 服务器验证密码

    • 服务器接收用户名和密码后,会从数据库中检索用户记录。
    • 服务器会将提交的密码与数据库中存储的密码进行比较。为了安全性,通常会比较加密后的密码(如哈希值)。
    pythonCopy Code# 伪代码示例
    def verify_password(stored_hash, provided_password):
        return hash_function(provided_password) == stored_hash
    
  • 生成会话 ID 或 Token

    • 一旦密码验证通过,服务器生成一个会话 ID 或 Token,并将其作为 cookie 发回给客户端。
    • 这个会话 ID 或 Token 在服务器端存储,与用户的会话信息(如用户 ID、登录时间等)关联。
    pythonCopy Code# 伪代码示例
    session_id = generate_session_id()
    store_session(session_id, user_id)
    
  • 客户端存储会话信息

    • 服务器将会话 ID 或 Token 作为 cookie 发送到客户端,客户端浏览器会自动存储这个 cookie。

2. 后续请求验证

在用户登录后,每次用户发起请求时,客户端会自动附带存储的 cookie。服务器在处理这些请求时会:

  • 提取会话 ID 或 Token:从请求的 cookie 中提取会话 ID 或 Token。

    pythonCopy Code# 伪代码示例
    def get_session_id_from_cookie(request):
        return request.cookies.get('session_id')
    
  • 验证会话 ID 或 Token

    • 服务器根据提取的会话 ID 或 Token 查找与之相关的用户会话信息。
    • 确认该会话是否有效(如会话是否过期、用户是否被注销等)。
    pythonCopy Code# 伪代码示例
    def validate_session(session_id):
        session = find_session_by_id(session_id)
        if session and not is_session_expired(session):
            return session.user_id
        else:
            return None
    

总结

  • 密码验证:在用户登录时,服务器直接验证密码的正确性。
  • 会话管理:在用户登录成功后,服务器生成会话 ID 或 Token,并通过 cookie 保存。后续请求通过会话 ID 或 Token 验证用户身份。

通过这种方式,密码验证和会话管理可以安全地分开处理,同时利用会话 ID 或 Token 来维护用户的登录状态。

img

2024/9/15 10:28:53

七、就是携带的ID只是一部分,重要的是登录的时候密码的验证

2024/9/15 10:28:56

正是如此。携带的 ID(如会话 ID 或 Token)用于识别和维持用户的会话状态,而密码验证则是在用户登录时确保其身份的关键部分。这种分离确保了系统的安全性,并使得会话管理更加高效。

img

2024/9/15 10:29:08

那密码验证通常是什么方式

2024/9/15 10:29:16

密码验证是确保用户身份真实性的关键步骤,通常涉及以下几个步骤和技术:

1. 密码存储和保护

  • 哈希加密:密码通常不会以明文形式存储在数据库中,而是通过哈希算法加密。常用的哈希算法包括 SHA-256、bcrypt、argon2 等。使用加密后的哈希值进行验证,而不是存储和比较明文密码。

    pythonCopy Code# 伪代码示例
    import hashlib
    def hash_password(password):
        return hashlib.sha256(password.encode()).hexdigest()
    
  • 盐值(Salt):为了增加安全性,通常会为每个密码添加一个独特的盐值,然后再进行哈希。盐值是一个随机生成的字符串,可以防止相同密码生成相同的哈希值,抵御预计算攻击(如彩虹表攻击)。

    pythonCopy Codeimport bcrypt
    def hash_password(password):
        salt = bcrypt.gensalt()
        hashed = bcrypt.hashpw(password.encode(), salt)
        return hashed
    

2. 密码验证过程

  • 用户提交密码:用户在登录时提交密码。

  • 从数据库中检索哈希值:系统从数据库中检索与用户帐户相关联的密码哈希值(以及盐值,如果使用的话)。

  • 比较密码哈希值:系统对用户提交的密码进行哈希处理,并将其与存储的哈希值进行比较。

    pythonCopy Code# 伪代码示例
    def verify_password(stored_hash, provided_password):
        return bcrypt.checkpw(provided_password.encode(), stored_hash)
    

3. 增强安全措施

  • 多因素认证(MFA):除了密码之外,增加其他认证方式(如短信验证码、认证应用生成的动态码等)进一步提高安全性。
  • 密码复杂性要求:强制密码包含大写字母、小写字母、数字和特殊字符,且长度足够长,以增强密码的安全性。
  • 账户锁定和延迟:如果多次尝试登录失败,系统可以暂时锁定账户或增加登录延迟,以防止暴力破解攻击。

总结

密码验证的核心在于将用户提交的密码与存储的哈希值进行比较。通过使用哈希算法、盐值、以及其他增强安全措施,可以有效保护用户的密码,并提高整体系统的安全性。

img

2024/9/15 10:29:34

八、加密之后存在浏览器的哪里

2024/9/15 10:29:43

在浏览器中,密码或其他敏感信息的存储方式有几种,主要包括:

1. 浏览器的密码管理器

  • 内置密码管理器:现代浏览器(如 Chrome、Firefox、Safari 和 Edge)都有内置的密码管理器。这些管理器可以保存网站的用户名和密码,并在用户访问相应网站时自动填充这些信息。密码在存储时通常经过加密,以保护用户的隐私。
    • 存储位置:密码管理器将加密的密码保存在浏览器的专用存储区域中。这些存储区域通常是加密的,只有在浏览器解锁或通过操作系统的身份验证后才能访问。

2. Cookies

  • Session Cookies:用于维持用户的会话状态。虽然 cookies 可以存储登录状态等信息,但不建议将敏感信息如密码直接存储在 cookies 中,因为 cookies 是可以被窃取或篡改的。
    • 存储位置:Cookies 存储在浏览器的内存或硬盘上,并在每次请求时发送给服务器。现代浏览器提供了机制来限制 cookies 的存取和使用,例如通过设置 HTTPOnly 和 Secure 属性来增强安全性。

3. Local Storage 和 Session Storage

  • Local Storage:用于在浏览器的本地存储较长时间的数据。Local Storage 适合存储非敏感的用户数据,但不建议用于存储敏感信息或密码。
  • Session Storage:用于在浏览器会话期间存储数据。Session Storage 在浏览器窗口关闭时清空。
    • 存储位置:这些存储区域位于浏览器的客户端存储系统中,以明文形式存储数据,因此不适合存储敏感信息。

4. IndexedDB

  • IndexedDB:一种较为复杂的客户端存储解决方案,可以存储大量结构化数据。IndexedDB 提供了更多的数据处理能力,但仍然建议避免存储敏感信息,如用户密码。
    • 存储位置:IndexedDB 数据存储在浏览器的内部数据库中,数据是以明文形式存储的。

总结

对于敏感信息(如密码),最佳实践是依赖浏览器的内置密码管理器,这些管理器在保存和检索密码时会进行加密,并且提供额外的保护措施。避免使用 cookies、Local Storage、Session Storage 或 IndexedDB 存储敏感数据,因为这些存储机制的安全性通常不如专用的密码管理器。如果需要在客户端存储数据,请确保采取适当的安全措施和加密手段。

img

2024/9/15 10:40:10

九、目前cookiesession依旧是主流吗

2024/9/15 10:40:14

是的,cookies 和 session cookies 仍然是主流的技术,广泛用于维持用户会话和存储短期数据。尽管有更现代的存储解决方案(如 Local Storage 和 IndexedDB),cookies 的简便性和兼容性使其在许多应用中依然被广泛使用。

img

2024/9/15 10:40:19

十、或者说是最常用的

2024/9/15 10:40:25

是的,cookies 仍然是最常用的技术之一,尤其在处理会话管理和状态保持方面。以下是一些主要原因:

1. 会话管理

  • 用户登录状态:cookies 用于保存用户的登录状态,使得用户在访问网站时无需重复登录。这是一种简单有效的方式,许多网站依赖 cookies 来维持会话。

2. 兼容性

  • 广泛支持:几乎所有的浏览器都支持 cookies,这使得它们成为一种通用的解决方案。

3. 简单易用

  • 方便实现:实现 cookies 的功能相对简单,服务器和客户端都可以很容易地设置和读取 cookies。

4. 功能

  • 用户跟踪:除了会话管理,cookies 还用于跟踪用户的活动、个性化用户体验和存储用户偏好等。

对比其他存储技术

  • Local Storage 和 Session Storage:这些存储机制提供了更大的存储容量,但它们通常不用于会话管理,因为它们不自动随请求发送,且需要额外的编程工作来处理数据存储和访问。
  • IndexedDB:这种技术适用于更复杂的数据存储需求,尤其是大规模的数据和 [Something went wrong, please try again later.]

img

2024/9/15 10:40:28

十一、令牌技术呢

2024/9/15 10:40:32

令牌技术(Token-Based Authentication)在现代应用中也非常常用,尤其是在处理身份验证和授权时。它通常用于无状态的 API 认证,允许用户在不使用 cookies 的情况下进行认证。与传统的 cookies 方案相比,令牌技术提供了更好的灵活性和安全性。例如,JWT(JSON Web Tokens) 是一种流行的令牌格式,它可以包含用户的身份信息,并且可以被客户端和服务器端用来验证用户的权限。你对令牌技术有具体的应用场景或问题吗?

img

2024/9/15 10:40:54

相比而言session和令牌技术哪种更常用呢

2024/9/15 10:40:58

这取决于应用的需求和架构。Session-Based Authentication 通常在传统的 Web 应用中更常用,因为它简单且与服务器端会话状态紧密集成。Token-Based Authentication(如 JWT)则在现代 Web 和移动应用中更常用,尤其是在分布式系统或微服务架构中,因为它不依赖服务器端存储状态,更适合无状态的 RESTful API。总体上,Token-Based Authentication 在现代应用中越来越流行,特别是在需要跨平台或跨服务认证的场景下。

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

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

相关文章

20Kg载重30分钟续航多旋翼无人机技术详解

一、机架与结构设计 1. 材料选择:为了确保无人机能够承载20Kg的负载,同时实现30分钟的续航,其机架材料需选用轻质高强度的材料,如碳纤维或铝合金。这些材料不仅具有良好的承重能力,还能有效减轻无人机的整体重量&…

一步一步搭建AI智能体应用

您可以在百炼控制台以零代码的方式快速创建智能体应用,并将RAG(Retrieval-Augmented Generation,检索增强生成)以及插件能力集成进来。应用创建完成后,您可以通过控制台或API的方式来使用。 以下均以 大模型应用指代 智…

微信小程序使用 ==== 粘性布局

目录 Chrome杀了个回马枪 position:sticky简介 你可能不知道的position:sticky 深入理解粘性定位的计算规则 粘性定位其他特征 代码实现 微信小程序在scroll-view中使用sticky Chrome杀了个回马枪 position:sticky早有耳闻也有所了解,后来,Chro…

通过API接口获取下来的数据需要怎样应用?

在当今数字化时代,通过API接口获取数据已成为企业获取、处理和分析信息的重要手段。API接口不仅能够提高数据交互的效率,还能促进数据的安全性和灵活性。以下是如何将通过API接口获取的数据有效应用的一些方法和策略。 数据整合与分析 企业可以通过API接…

QPS和TPS的区别简单理解

QPS(Queries Per Second) QPS是指每秒查询率,它是衡量服务器处理能力的一个指标,表示服务器在一秒钟内能够响应的查询次数。这个指标通常用于数据库或服务器的性能测试,反映了服务器在规定时间内处理流量的能力。QPS …

浮动元素详解

浮动元素 代码实现&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>浮动元素</title><style>#container1 {width: 400px;height: 50px;background-color: lightgrey;border: 1px solid;}#contai…

世界杯足球赛网站---附源码73185

摘 要 随着互联网的普及和足球运动的全球性影响力&#xff0c;建立一个专门的世界杯足球赛网站成为了与球迷互动和传播赛事信息的重要途径。本论文聚焦于世界杯足球赛网站的设计与实现&#xff0c;旨在探讨如何利用现代技术为球迷提供一个全方位的足球赛事体验。 通过对 Spring…

上传头像,访问本地图片

文件大坑&#xff1a; web项目&#xff1a;首先不能直接访问本地资源&#xff0c;只能够访问服务器上的资源。 所以我想就储存数据到服务器&#xff0c;但是这样有个问题就是&#xff0c;当重新启动程序时&#xff0c;服务器上的所有文件会被重新编译&#xff0c;导致之前的文…

HarmonyOS开发实战( Beta5.0)自动生成动态路由实践

鸿蒙HarmonyOS开发往期必看&#xff1a; HarmonyOS NEXT应用开发性能实践总结 最新版&#xff01;“非常详细的” 鸿蒙HarmonyOS Next应用开发学习路线&#xff01;&#xff08;从零基础入门到精通&#xff09; 介绍 本示例将介绍如何使用装饰器和插件&#xff0c;自动生成动…

【UE5】使用2DFlipbook图作为体积纹理,实现实时绘制体积纹理

这是一篇对“Creating a Volumetric Ray Marcher-Shader Bits”的学习心得 文章时间很早&#xff0c;因此这里针对UE5对原文做出兼容性修正&#xff08;为避免累赘不做出注明。链接如上&#xff0c;有需要自行学习&#xff09; 以及最后对Custom做可能的蓝图移植&#xff0c;做…

Qt中样式表常用的属性名称定义

Qt中&#xff0c;用好样式表&#xff0c;不但可以做出意想不到的酷炫效果&#xff0c;有时候也能减轻开发量&#xff0c;可能由于你不了解某些样式使用&#xff0c;想破脑袋通过代码实现的效果&#xff0c;反倒不如别人用样式&#xff0c;一两句样式脚本就搞定。 Qt中&#xff…

第T8周:猫狗识别

本文为365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 ●难度&#xff1a;夯实基础⭐⭐ ●语言&#xff1a;Python3、TensorFlow2 要求&#xff1a; 1.了解model.train_on_batch()并运用 2.了解tqdm&#xff0c;并使用tqdm实现可视化进度条 拔高&#xff08…

Day11-K8S日志收集及搭建高可用的kubernetes集群实战案例

Day11-K8S日志收集及搭建高可用的kubernetes集群实战案例 0、昨日内容回顾1、日志收集1.1 K8S日志收集项目之架构图解三种方案1.2 部署ES1.3 部署kibana1.4 部署filebeat 2、监控系统2.1 部署prometheus 3、K8S二进制部署3.1 K8S二进制部署准备环境3.2 基础组件安装3.3 生成K8S…

OpenCV-Python笔记(上)

安装 全局安装 pip install opencv-python项目虚拟环境安装 # 进入项目根路径执行 .venv/bin/pip install opencv-python计算机眼中的图像 一张图片由大小比如&#xff08;100*100&#xff09;决定&#xff0c;说明存在100*100的像素点&#xff0c;每个像素点存在颜色通道&…

Science:学术大咖揭秘审稿内幕,你的稿件在审稿人那里经历了什么?

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 同行评审是每篇论文能够顺利发表的必经之路。Science期刊采访了来自全球各领域研究人员&#xff0c;分享关于他们作为审稿人&#xff0c;为什么接受审稿、给出审稿意见的依据、…

怎么让手机ip地址变化?介绍几种实用方法

随着网络技术的发展&#xff0c;IP地址作为网络设备的唯一标识&#xff0c;其变动对于保护个人隐私、规避网络限制等方面具有重要意义。本文将介绍几种实用的方法&#xff0c;帮助用户实现手机IP地址的变化&#xff0c;并提醒注意事项。 一、连接不同的WiFi网络‌ 连接不同的W…

记一次实战中对fastjson waf的绕过

最近遇到一个fastjson的站&#xff0c;很明显是有fastjson漏洞的&#xff0c;因为type这种字符&#xff0c;fastjson特征很明显的字符都被过滤了 于是开始了绕过之旅&#xff0c;顺便来学习一下如何waf 编码绕过 去网上搜索还是有绕过waf的文章&#xff0c;下面来分析一手&a…

ICM20948 DMP代码详解(21)

接前一篇文章&#xff1a;ICM20948 DMP代码详解&#xff08;20&#xff09; 上一回终于解析完了inv_icm20948_read_mems_reg函数&#xff0c;本回回到inv_icm20948_initialize_lower_driver函数中&#xff0c;继续往下解析该函数接下来的内容。为了便于理解和分析&#xff0c;在…

[进阶]面向对象之多态(练习)

需求: //父类animal package polymorphism.Test;public abstract class Animal {private int age;private String color;public Animal() {}public Animal(int age, String color) {this.age age;this.color color;}public int getAge() {return age;}public void setAge(i…

深入理解 C 语言中的结构体 —— 原理与实践

引言 在 C 语言中&#xff0c;结构体是一种非常强大的数据类型&#xff0c;用于组织不同类型的数据成员。通过结构体&#xff0c;我们可以创建复杂的数据结构&#xff0c;用于表示现实生活中的对象。本文将详细介绍 C 语言中结构体的基本概念、语法、使用方法以及一些高级主题…