【前端知识】Cookie, Session,Token和JWT的发展及区别(中)

news2025/5/20 3:08:03

【前端知识】Cookie, Session,Token和JWT的发展及区别(中)

  • 4. Session
    • 4.1 Session的背景及定义
    • 4.2 Session的特点
      • 👍4.2.1 Session的特点
      • 👀4.2.2 Session保存的位置
    • 4.3 Session的一些重要/常用属性
    • 4.4 Session的认证流程
    • 4.5 Session的优缺点
      • 😎4.5.1 优点
      • 🤢4.5.2 缺点
      • ✍4.5.3 作用及常用场景
    • 4.6 Session可能带来的问题
    • 4.7 Session的作用域及相关思考
      • 4.7.1 Session的作用域
      • 4.7.2 当客户端关闭后,服务端不关闭,两次获取Session是同一个?
      • 4.7.3 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
      • 4.7.4 Session什么时候被销毁?失效时间?
  • 5. Cookie与Session的区别及相关知识点
    • ✨ 5.1 区别
    • 🤔 5.2 一个思考:既然盗取了Cookie,无论是Session还是Cookie都一样会被冒充,那为什么需要Session呢?
  • 6. 下篇章笔记

五一假期第4天,继续上篇笔记的分享啦。本文为原创,未经同意请勿转载

由于篇幅有点长😂,所以笔者将我关于这部分的笔记分为上中下三个篇章(文章开头后面附录上下篇链接),避免读者的阅读疲倦感😵,同时也方便大家的阅读啦🤗。如果下面笔记中存在错误,欢迎大家及时指正,学习与讨论。

  • 上章:主要介绍一下背景和Cookie。
    链接:【前端知识】Cookie, Session,Token和JWT的发展及区别(上)
  • 中章:主要介绍一下Session并总结一下Cookie和Session。
  • 下章:主要介绍Token,JWT以及总结一下啦。

4. Session

4.1 Session的背景及定义

虽然Cookie机制可以让服务器与浏览器相互认识,但是因为Cookie是保存在客户端的,所以Cookie被入侵窃取的风险很大,这样子如果我们将用户信息存在Cookie的话,一旦被窃取,那不仅网站不安全而且用户信息也没了。考虑到Cookie保存在客户端被窃取的风险较大,Session机制把服务器与浏览器的会话信息(验证信息)临时的保存在服务器上,并利用Session ID 进行客户端的识别。这样子,用户就没有权限操作服务器,可以避免非法用户窃取Session中的数据,从而保证数据的安全性。

Session可以理解为一个通信状态列表,用来跟踪用户在浏览器的行为。Session 对象存储特定用户会话所需的属性及配置信息。而且Session是基于Cookie实现的,存储在服务器端,而对应的Session ID存储在客户端的Cookie中。当浏览器关闭会或者Session超时的时候,Session也会自动失效。这样子,可以避免占用过多的服务资源。

4.2 Session的特点

👍4.2.1 Session的特点

(1)基于Cookie实现,由服务器生成并且数据存储在服务器端:Session通常使用Cookie来标识一个会话,但是存储的数据不会放置在Cookie中,只有一个关键字Session ID。Session 数据存储在服务器端,不会暴露给客户端,客户端只能拿到 Session ID,以此来区分不同用户的会话。
(2)可以存储任意类型的数据:Session 可以存储任意类型的数据,包括字符串、数字、对象等。
(3)具有独立性,会话隔离:每个用户在与服务器建立会话时,会分配一个唯一的 session ID。所有这个用户在会话期间提交的请求都会携带这个 session ID,服务器利用这个 ID 把用户的请求关联到相应的 Session,从而达到会话隔离的效果。每个Session是独立的,不会因为其他Session的变化而受到影响。
(4)具有临时性,时效性:Session 会话是临时的并且有一个过期时间,一般情况下默认为 20 分钟到 30 分钟不等。如果用户关闭浏览器或者在这个时间范围内没有发出请求,那么服务器会自动销毁这个 session,释放占用的资源。
(5)安全性高:因为 Session 数据存储在服务器端,因此它比使用客户端(例如Cookie)存储信息更安全。这是由于Session的标识符(即Session id)是由服务器生成,在有效期内随机,并且存储在服务器端,客户端无法修改。如果服务器对Session 数据进行加密和验证,可以保证 Session 数据的安全,防止被伪造和篡改。
(6)状态保持:Session可以通过将信息存储在服务器端,使得web应用能够维护用户的状态。如果用户在访问web应用时需要提交数据或者状态,这些数据和状态会被存储在Session对象中。
(7)可以跨页面访问:Session允许在同一应用程序的多个页面之间共享数据。
(8)可灵活配置,可扩展性好,适用性广,支持集群部署:Session可以根据开发需求定期清理并保存到数据库中,以实现高可扩展性,并且支持集群部署,适合大规模应用场景。Session适用于各种Web应用,如购物车、用户登录、会话状态等。
(9)存储数据多,资源占用较多:Session用于存储一次会话的多次请求的数据。因为Session 数据存储在服务器端,所以会占用服务器的一定资源,包括内存和存储空间,如果同时有大量的用户进行会话,可能会导致服务器压力较大。

👀4.2.2 Session保存的位置

  • 在HTTP通信中的数据位置
    Session ID 在 HTTP请求和响应的 headerSession ID字段中进行传输和存储。
  • 存储位置:服务器端

4.3 Session的一些重要/常用属性

  • Session ID(会话ID):用于唯一标识一个会话,可以是任何形式的字符串,用于区分不同用户的会话。SessionID 是连接 Cookie 和 Session 的一道桥梁
  • 创建时间(Creation Time):指示会话开始的时间,用于确定会话的有效期。
  • 最后访问时间(Last Accessed Time):指示上一次访问该会话的时间,用于检测会话是否过期。
  • 最大不活动时间间隔(Max Inactive Interval)一个整数,表示Session最长的空闲时间(单位秒)。Session对象在没有被访问的情况下能够保持的最长时间,超过此时间后Session将被销毁。
  • 超时时间(TimeOut):设置Session对象的过期时间,单位为秒。当session超时时,它将被自动销毁。可以通过配置来设置session的过期时间,默认情况下为30分钟。
  • 键集合(Keys):表示当前Session对象保存的所有属性的名称集合。可以通过调用getAttributeNames()方法来获取键的集合。
  • 活动Session数目(Count):表示当前服务器上活动的Session数量。可以通过调用ServletContext对象的getActiveSession()方法来获取活动Session数目。
  • 属性(Attribute):用于存储会话特定的数据,每个属性都有一个名称和一个值,并且可以通过名称进行访问。
  • 生命周期(Lifecycle):指示会话从创建到销毁的整个过程,包括创建、活动、过期和销毁等阶段。
  • maxSessions:设置允许同一个用户最多能够拥有的Session数量,如果超出则后续登录将被拒绝或之前的Session将会被销毁。
  • isNew:判断Session是否为新创建的,如果是则返回true,否则返回false。

4.4 Session的认证流程

在这里插入图片描述

  • 认证流程简述:对于 Session,在服务器与客户端建立连接时,服务器会为每个客户端生成唯一的Session ID,并记录这个ID和对应的用户信息和操作记录等,同时将这个ID发送到浏览器。浏览器收到会话ID之后,会在会话期间将这个ID保存在Cookie中,同时Cookie 还会记录这个SessionID 属于哪个域名。在会话期间,当浏览器再次访问时,服务器就可以根据收到的Cookie,解析出对应的Session ID,然后通过它查询Session列表中对应的Session,这样子就可以知道用户的状态和行为信息了。当关闭浏览器后,Session 会自动失效,会话的变量也会被删除。这样子,可以避免占用过多的服务资源。如果需要永久储存信息,就需要把数据存储在数据库中。
  • 认证流程步骤叙述
    • 用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的Session
    • 请求返回时将此 Session 的唯一标识 SessionID 返回给浏览器
    • 浏览器接收到服务器返回的 SessionID 后,会将此信息存入到 Cookie 中,同时 Cookie 记录此SessionID 属于哪个域名
    • 当用户第二次访问服务器的时候,请求会自动把此域名下的 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。

4.5 Session的优缺点

😎4.5.1 优点

  • 优点总结:具有较好的安全性,灵活性(可扩展性),唯一性,便于调用,可以主动清除
  • 优点展开
    • 相对于Cookie,具有较好的安全性:相较于Cookie,Session保存在服务器端,更加安全。Session可以保存敏感数据,如用户登录信息、支付信息等,防止这些数据暴露到客户端,提高了应用程序的安全性。此外,Session ID可以防止网络钓鱼攻击和会话劫持攻击等安全问题,确保会话数据的保密性和完整性。
    • 可以存储任意类型的数据:Session 可以存储任意类型的数据,包括字符串、数字、对象等。
    • 较好的灵活性和可扩展性,支持集群部署:Session机制是可扩展的。通过在Session对象中保存自定义属性,可以实现更加灵活的业务需求。此外,Session可以根据开发需求定期清理并保存到数据库中,以实现高可扩展性,并且支持集群部署,适合大规模应用场景。
    • 具有唯一性,独立性:每个Session是独立的,不会因为其他Session的变化而受到影响。
    • 相较于JWT,具有自动清除机制:服务器会有Session回收机制,可自动删除过期Session。
    • 更少的网络负载:使用会话可以避免在每个请求中重复传输相同的数据,因此减少了网络流量和服务器负载。使用Session可以避免频繁访问数据库或其他外部资源,从而减轻服务器的负担。
    • 可跨页面共享信息:Session可以跨不同的页面进行信息共享,实现相同用户在多个页面中获取同样的信息。
    • 状态保持,实现会话跟踪及个性化服务:Session可以在不同请求间保持数据状态,使得服务器可以识别同一个用户的连续请求,并为该用户提供个性化的服务。会话可以在用户与应用程序之间保持状态,以便在多个页面或请求之间跟踪用户信息。
    • 兼容性好:因为Session是由服务器端创建和管理的,与浏览器本身无关,只要浏览器能够发送HTTP请求并支持Cookie,就可以正常使用Session。

🤢4.5.2 缺点

  • 缺点总结:虽然Session相较Cookie更具安全性,但Session过度依赖Cookie,并且由于存储在服务端,所以其占用服务器内存,导致性能上的损失,可能导致更多的延迟。另外Session还需要考虑负载均衡和分布式部署的问题。Session的生命周期控制难度也比较大。
  • 缺点展开
    • 过度依赖Cookie:Session ID通常以Cookie的形式存储在客户端,如果浏览器禁用Cookie,则可能导致Session失效,影响用户体验。
    • 占用服务器资源,降低系统性能:使用Session需要在服务器端存储和管理会话数据,特别是当用户量较大时,会占用服务器的内存和处理能力,影响Web应用程序的性能。
    • 可能导致更多的延迟:存储获取Session需要进行网络通信,而且查询Session信息可能会有数据库查询操作,可能导致更多的延迟。
    • 跨进程通信困难:当Web应用程序运行在多进程环境下时,如分布式系统,不同进程之间共享Session数据时会比较困难。
    • 负载均衡问题:如果应用程序使用了负载均衡技术,那么同一个用户的请求可能会被分配到不同的服务器处理,从而导致无法识别原先建立的Session,这就需要做不同服务器之间的Session同步,否则会造成Session不一致的问题。
    • 分布式问题:Session是基于服务器端的,在分布式环境中,如果用户访问的是另外一台服务器,那么原先建立的Session可能无法被识别,因此需要使用其他技术来解决分布式问题,确保Session能够正确地在不同服务器之间共享和同步(多机共享Session机制),例如使用集中式Session管理服务,或者使用Cookie传递SessionID。
    • 生命周期问题,生命周期控制难度大:Session默认的生命周期是会话级别,即用户关闭浏览器或Session超时后自动清除,这可能导致一些重要数据被丢失。用户需要自己管理Session的生命周期,例如手动清除过期的Session,或者将一些数据存储在其他的持久化保存器中。同时,Session生命周期的管理和控制需要考虑到多种情况,如Session的超时问题、Session的过期问题等。
    • 安全问题:基于Cookie的机制容易被CSRF。此外,Session中保存的信息很重要,因此必须确保Session ID 的唯一性,避免会话劫持攻击。同时,将敏感信息存储在Session中也会增加被攻击的风险,可以考虑采用加密的方式进行存储和传输。
    • 状态存储依赖于自身应用程序或第三方模块。

✍4.5.3 作用及常用场景

  • 常用场景总结:(1)登录状态及用户信息的管理;(2)跟踪用户行为,统计分析,个性化推荐;(3)实现数据共享,多步骤操作;(4)网站安全;(5)处理后台任务;(6)消息提醒及表单数据存储等 …
  • 展开
    • 登录状态及用户信息的管理——》用户登录认证,登录状态保持:当用户成功登录网站时,服务器会创建一个Session,保存用于标识该用户的id等信息,在用户注销或超时后清除Session。这样,在用户持续访问网站时,服务器就可以识别匹配上述信息的Session,从而知道该请求来自哪个用户。
    • 跟踪用户行为(自动性)——》统计分析,个性化推荐:通过Session保存用户活动信息,比如搜索历史记录,点击次数等,可以更好地了解用户的兴趣和喜好,从而为用户提供更好的服务和推荐。
    • 实现数据共享,多步骤操作:Session可以被多个页面和请求之间共享使用,如在购物车中添加多个商品时,可以使用Session来保存这些数据,并在结账时将它们全部加载出来。当用户需要通过多个步骤完成某项操作时,如注册、预订、支付等,使用Session可以在不同的页面间共享数据,并确保数据的完整性和正确性。
    • 网站安全:某些网站采用Session技术来记录用户的行为。例如,如果网站监测到同一个ip地址下连续登录失败次数过多,则可能认为攻击者正在尝试用暴力破解的方式攻击该帐号,那么服务器就可以采取措施比如限制登录尝试次数等。
    • 处理后台任务:某些web应用程序利用后台任务处理框架,以便在后台执行后台操作。 Session是一种适合处理此类情况的方法,可以保障任务执行的独立性和任务的执行状态。
    • 消息提醒:当应用程序需要在某些页面上显示未读消息数目时,可以将未读消息数量保存在Session中,这样在用户访问页面时直接从Session中获取未读消息数量即可。
    • 表单数据存储:当用户填写表单或提交数据时,使用Session来缓存表单数据,以便用户在一定时间内重新打开页面时可以继续编辑。

4.6 Session可能带来的问题

面临的挑战当然也包括Cookie的缺点,这里主要从解决的角度来讲:

  • 内存占用问题 ——》解决方法:需要合理利用Session存储数据,避免存储过多的无用信息,定时清理过期Session,使用缓存等技术。
  • 分布式问题 ——》解决方法:可以从存储和分布的角度分别来解决。
    • 从存储的角度,可以使用集中式Session存储方案,如使用Redis或Memcached等缓存中间件存储Session信息,将Session交由这些中间件来管理。
    • 从分布的角度,可以让相同 IP 的请求在负载均衡时都打到同一台机器上。以 Nginx 为例,可以配置 ip_hash 来实现。
  • 安全问题 ——》解决方法:在传输过程中使用加密技术,使用HTTPS协议,在服务端对Session进行有效期和有效性等方面进行控制等。
  • 生命周期问题,Session过期问题 ——》解决方法:使用定时器定时刷新Session,或者将Session的过期时间设置得更长一些,以确保Session不会过早失效。
  • 负载均衡问题 ——》解决方法:可以使用集中式Session存储方案,如使用Redis或Memcached等缓存中间件存储Session信息,将Session交由这些中间件来管理;也可以使用Session复制或Session共享等技术。
  • Session固定攻击问题:Session固定攻击是一种攻击方式,攻击者通过获取到攻击目标的Session ID,然后模拟该Session ID进行攻击。为了避免这种攻击,应该在Session创建时随机生成一个Session ID,不要使用容易猜测和重复的ID。
  • 并发问题:当多个用户同时访问同一个资源时,容易发生并发问题,例如两个用户同时修改一个Session中的值,会造成数据不一致。为了避免这种问题,应该使用同步技术来保证数据的一致性。

4.7 Session的作用域及相关思考

4.7.1 Session的作用域

  • 一般来说,每次请求不同的域都会新创建一个Session。
  • 对于多标签的浏览器来说,在一个浏览器窗口中,多个标签同时访问一个页面,Session是一个
  • 对于多个浏览器窗口之间,同时或者相隔很短时间访问一个页面,Session是多个的,和浏览器的进程有关。
  • 对于一个同一个浏览器窗口,直接录入URL访问同一应用的不同资源,Session是一样的。

4.7.2 当客户端关闭后,服务端不关闭,两次获取Session是同一个?

  • 默认情况下不是
  • 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让Cookie持久化保存。
  • 在客户端关闭后,服务端并不会立即关闭Session。但是取决于Session的实现方式和配置。
    • 如果使用基于Cookie的Session,首次创建Session时会往客户端浏览器发送一个Cookie,当浏览器关闭后该Cookie会被删除。当用户再次访问站点时,浏览器并不会发送已经删除掉的Cookie,因此会重新创建一个新的Session。所以两次获取Session是不同的
    • 如果使用基于URL重写的Session实现,URL中会带有Session ID参数,服务器会基于这个Session ID来匹配已经存在的Session。当用户关闭浏览器后,打开一个新的浏览器访问时,URL中不再带有上一个Session的ID,服务器就会认为这是一次新的会话,并重新创建一个新的Session。因此,两次获取Session也是不同的
    • 如果使用了持久化Session管理技术,例如集中式缓存、数据库等存储机制,服务端的Session在客户端关闭后并不会受到影响,并且通过相同的Session ID,可以继续访问这个Session。因此两次获取Session是同一个。但需要注意的是,在设置Session的过期时间等方面需要进行合理的控制,以防Session信息长时间占用服务器资源,影响系统性能。

4.7.3 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?

不是同一个,创建Session的对象分配的地址值是随机的。但是要确保数据不丢失。tomcat自动完成以下工作

  • Session的钝化:在服务器正常关闭之前,将Session对象系列化到硬盘上。
  • Session的活化:在服务器启动后,将Session文件转化为内存中的Session对象即可。

4.7.4 Session什么时候被销毁?失效时间?

  • 服务器关闭。
  • Session对象调用invalidate()。
  • Session默认失效时间:30分钟,可以配置修改

5. Cookie与Session的区别及相关知识点

✨ 5.1 区别

Session更像用户信息档案表,里面包含了用户的认证信息和登录状态等信息。而Cookie就更像用户通行证

  • 存储位置不同:Cookie数据是存储在客户端(浏览器)的,而Session数据则是存储在服务器端的,通常会保存在内存或者数据库中。
  • 安全性: Session 比 Cookie 安全,Cookie 以明文形式存储在客户端,Session数据只保留了一个会话ID在客户端,具体数据都存放在服务端,相对来说具有较高的安全性。
  • 支持的数据类型不同:Cookie 只支持存字符串数据,Session 可以存任意数据类型。
  • 有效期不同: Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能。Cookie可以设置生命周期,即在设置的时间段内一直存在于客户端,过期后才会被删除。Session则一般是在用户关闭浏览器或者长时间不操作后自动失效。
  • 存储大小不同:单个Cookie通常最多支持4KB的数据存储,而Session则没有严格的限制,可以存储更大的数据量。
  • 主要场景不同:对于简单而且不敏感的数据通常使用Cookie保存,如购物车信息、用户在站点的行为记录等;而对于复杂且敏感的数据使用Session保存,如用户的账号信息等。

🤔 5.2 一个思考:既然盗取了Cookie,无论是Session还是Cookie都一样会被冒充,那为什么需要Session呢?

在这里插入图片描述
(1)安全性:虽然Session和Cookie都可以被盗取,但Session比Cookie更安全,因为在使用Session时,Session信息是保存在服务器端的,而非客户端。当客户端请求服务器时,服务器会验证Session是否合法,只有合法的Session才会返回相应的数据。这样做的好处是在一定程度上确保了客户端请求的安全性,即使有人盗取了Session ID,也无法通过合法的请求来获取数据。
(2)设计目的:当然,如果应用程序不安全,存在漏洞或弱口令等问题,那么盗取 Cookie 的行为可能会绕过 Session 验证,从而访问到 Session 数据。尽管盗取 Cookie 可以被用于冒充身份,但 Session 本身并不是为了防范盗取 Cookie 而设计的。相反,Session更加偏向是一种数据存储方式,用于在用户与 Web 应用程序之间保持联系,目的是提供一个安全的、可靠的方式来标识和跟踪用户身份,以便对其进行访问控制和授权。
(3)Cookie只是实现Session机制的其中一种方案,并不是唯一的方法。:除了使用Cookie来存储Session ID外,还可以使用其他方式来实现Session机制。比如URL 重写,隐藏表单域等。
(4)考虑客户端压力:用Session只需要在客户端保存一个ID,实际上大量数据都是保存在服务端。如果全部用Cookie,数据量大的时候客户端是没有那么多空间的。并且客户端数据量变大,网络传输的数据量也会变大。

💡 现在大多都是Session + Cookie,但是只用Session不用Cookie,或是只用Cookie,不用Session在理论上都可以保持会话状态。可是实际中因为多种原因,一般不会单独使用。

6. 下篇章笔记

通过上面的知识,我们也对Session有了一个大概的了解,所以在下篇中,笔者我将主要介绍一下Token及JWT的相关要点以及总结一下Cookie,Session及Token的区别。
笔记链接:【前端知识】Cookie, Session,Token和JWT的发展及区别(下)【未更】

码字不易,可能当中存在某些字体错误(笔者我没有发现),如果有错误,欢迎大家指正。🤗

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

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

相关文章

算法之美~分治算法

如何理解分治算法? 分治算法(divide and conquer)的核心思想其实是,分而治之,也就是将原问题划分成n个规模较小,并且结构与原问题相似的子问题,递归第解决这些子问题,然后再合并其结…

什么是 Docker?它能用来做什么?

文章目录 什么是云计算?什么是 Docker?虚拟化技术演变特点架构镜像(Image)仓库(Registry )容器(Container) 应用场景 什么是云计算? 云计算是一种资源的服务模式&#x…

应急响应概述

一、应急响应事件类型 常见的应急响应事件分类: Web 入侵:主页篡改、Webshell 系统入侵:病毒木马、勒索软件、远控后门 网络攻击:DDOS 攻击、DNS 劫持、ARP 欺骗 二、可疑账号排查 2.1Windows 1)‘WinR’…

世界坐标系、相机坐标系和图像坐标系的转换

本文转载于:https://blog.csdn.net/weixin_38842821/article/details/125933604?spm1001.2014.3001.5506 1. 世界坐标 世界坐标系是一个特殊坐标系,它建立了描述其他坐标系需要的参考框架。能够用世界坐标系描述其他坐标系的位置,而不能用更…

stack、queue和priority_queue的使用介绍--C++

一、stack介绍 1. stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组…

YOLOv5 更换Neck之 BiFPN:如何替换YOLOv5的Neck实现更强的检测能力?

目录 一、BiFPN是什么?1、什么是BiFPN2、BiFPN的优势 二、为什么要用BiFPN替换YOLOv5的Neck?1、YOLOv5原有的Neck存在的问题2、BiFPN的适用场景 三、如何在YOLOv5中实现BiFPN1、下载并替换BiFPN代码2、修改配置文件3、遇到的问题及解决方法 四、BiFPN超参…

IronOCR 2023.4.13 Crack

IronOCR能够允许用户软件工程师直接从图片中读取文本文章,以及从.NET的程序和互联网网站中读取PDF。从扫描的图像中读取文本和条形码,能够支持多种外语,并且输出为纯文本甚至信息结构。IronOCR库能够供用户在互联网游戏控制台中使用。MVC&…

PyQt6: 多网卡适配器的选择与显示(GPT4帮写)

PyQt6: 多网卡适配器的选择与显示 1. 背景2. Python获取本机网卡适配器信息3. PyQT6 UI显示网卡信息4. PyQT6 后台处理:ButtonComboBox 附:GPT Output:博主热门文章推荐: (本文部分文案由ChatGPT生成,但代码…

企企通:为什么成长型企业,需要SaaS采购管理平台?

根据艾瑞咨询发布的《2022年中国企业级SaaS行业研究报告》,未来三年SaaS行业的增长也将与宏观经济恢复速度相挂钩,在中性预期下,到2024年中国企业级SaaS市场规模将有望达到1201亿元。 由于SaaS和云模式出现,采购角色在慢慢发生了变…

perf record对C++程序耗时进行分析

本节将介绍如何使用perf工具的perf record对C代码进行性能分析,一切操作都是在ubuntu 20下进行。 perf工具安装 由于perf工具和内核版本有关,因此直接安装容易出错,建议直接通过如下指令安装: sudo apt-get install linux-tool…

【Access】Access:SQL 语句汇总

目录 一、SQL 的功能 二、考试重点 三、关系的定义 (1)新建关系 (2)删除关系 四、SQL 的「数据查询」功能 (1)基本结构 ① Select 语句的基本结构 ② Select 子句 ③ Where 子句 ④ 空值的处…

HTB-TheNotebook

HTB-TheNotebook 信息收集80端口JWT攻击 立足www-data -> noahnoah -> root 信息收集 80端口 存在一个登录和注册用户业务。先看看登录业务,在登录中如果我输入不存在的用户就会出现: Login Failed! Reason: User doesn’t exist. 如果是存在的用…

Value for SWIFT_VERSION cannot be empty错误解决

出错: 解决方法: 选择后 重新编译成功

【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码

【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 42页论文及代码 相关链接 【2023 年第十三届 MathorCup 高校数学建模挑战赛】 B 题 城市轨道交通列车时刻表优化问题 详细建模方案及代码实现 1 题目 列车时刻表优化问题是轨道交通…

​力扣解法汇总1376. 通知所有员工所需的时间

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 公司里有 n 名员工,每个员工的 ID 都是独一无二的,编号从…

【五一创作】【笔记】Git|如何将仓库中所有的 commit 合成一个?又名,如何清除所有 git 提交记录?(附 git rebase 机制的简要分析)

在对代码进行开源时,我们往往并不希望代码开发过程中的提交记录被其他人看到,因为提交的过程中往往会涵盖一些敏感信息。因此会存在 将仓库中所有 commit 合成一个 的需求。 直觉上,往往会用 rebase 和 squash 或 reset,不过我尝…

【Unity-UGUI控件全面解析】| Button 按钮组件详解

🎬【Unity-UGUI控件全面解析】| Button 按钮组件详解一、组件介绍二、组件属性面板2.1 Transition 类型三、代码操作组件四、组件常用方法示例4.1 监听点击事件4.2 按钮过度动画示例💯总结🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首…

JavaWeb——JavaScript

定义: js引入方式(两种方式) js基础语法 输出语句 变量 var的变量特点1:作用域大,是全局变量 var的变量特点2:可以重复声明 ES6最新增的关键字 数据类型,运算符,流程控制语句 js中也有着类似java的8大基本数据类…

企业级信息系统开发讲课笔记3.3 基于XML配置方式SSM框架西蒙购物网

文章目录 零、本节学习目标一、网站功能需求二、网站设计思路(一)设计模式(二)网站前台(三)网站后台1、用户管理2、类别管理3、商品管理4、订单管理 (四)购物流程图 三、网站运行效果…

Iron Web Scraper 2023.4.13 Crack

Iron Web Scraper 被认为是 C# 的互联网抓取库,它能够让用户和开发者激发和最终的个人浏览行为,以提取文件、内容甚至图片和应用程序。动词作为 .NET 的本机项。IronWebScraper 具有从后台处理礼貌和多线程进程的能力,这使得用户程序很容易简…