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

Python Cookbook-5.14 给字典类型增加排名功能

任务

你需要用字典存储一些键和“分数”的映射关系。你经常需要以自然顺序(即以分数的升序)访问键和分数值,并能够根据那个顺序检查一个键的排名。对这个问题,用dict 似乎不太合适。

解决方案

我们可以使用 dict 的子类,根据需要增加或者重写一些方法。在我们使用多继承、将UserDict.DictMixin 放置在基类 dict、并仔细安排各种方法的委托或重写之前,我们可以设法获得一种美妙的平衡,既拥有极好的性能又避免了编写一些冗余代码。

我们可以在文档字符串中加入很多示例,还可以用标准库的 doctest 模块来提供单元测试的功能,这也能够确保我们在文档字符串中编写的例子的准确性:

#!/usr/bin/env python
'''一个反映键到分数的映射的字典'''
from bisect import bisect_left,insort_left
import UserDict
class Ratings(UserDict.DictMixin,dict):'''Ratings类很像一个字典,但有一些额外特性:每个键的对应值都是该键的“分数”,所有键都根据它们的分数排名。对应值必须是可以比较的,同样,键则必须是可哈希的(即可以“绑”在分数上)所有关于映射的行为都如同预期一样,比如:>>>r = Ratings({"bob":30,"john":30})>>>len(r)2>>>r.has_key("paul"),"paul" in r(False,False)>>>r["john"] = 20r.update({"paul":20,"tom":10})>>>len(r)4>>>r.has_key("paul"),"paul" in r(True,True)>>>[r[key} for key in ["bob","paul","john","tom"]][30,20,20,10]>>>r.get("nobody"),r.get("nobody",0)(None,0)除了映射的接口,我们还提供了和排名相关的方法。r.rating(key)返回了某个键的排名,其中排名为0的是最低的分数(如果两个键的分数相同,则直接比较它们两者,“打破僵局”,较小的键排名更低):>>>[r.rating(key) for key in ["bob","paul","john","tom"]][3,2,1,0]getValueByRating(ranking)和getKeyByRating(ranking)对于给定的排名索引,分别返回分数和键:>>>[r.getValueByRating(rating) for rating in range(4)][10,20,20,30]>>>[r.getKeyByRating(rating) for rating in range(4)]['tom','john','paul','bob']一个重要的特性是keys()返回的键是以排名的升序排列的,而其他所有返回的相关的列表或迭代器都遵循这个顺序:>>> r.keys()['tom','john','paul','bob']>>>[key for key in r]['tom','john','paul','bob']>>> [key for key in r.iterkeys()]['tom','john','paul','bob']>>> r.values()[10,20,20,30]>>>[value for value in r.itervalues()][10,20,20,30]>>> r.items()[('tom',10),('john',20),('paul',20),('bob',30)]>>>[item for item in r.iteritems()][('tom',10),('john',20),('paul',20),('bob',30)]实例可以被修改(添加、改变和删除键-分数对应关系)而且实例的每个方法都反映了实例的当前状态:>>>r["tom"] = 100>>> r.items()[('john',20),('paul',20),('bob',30),('tom',100)]>>>del r["paul"]>>>r.items()[('john',20),('bob',30),('tom',100)]>>>r["paul"] = 25>>>r.items()[('john',20),('paul',25),('bob',30),('tom',100)]>>>r.clear()>>>r.items()[  ]''''''这个实现小心翼翼地混合了继承和托管,因此在尽量减少冗余代码的前提下获得了不错的性能,当然,同时也保证了语义的正确性。所有未被实现的映射方法都通过继承来获得,大多来自DictMixin,但关键的__getitem__来自 dict。'''def init(self,*args,**kwds):'''这个类就像dict一样被实例化'''dict.__init__(self,*args,**kwds)#self._rating是关键的辅助数据结构:一个所有(值,键)#的列表,并保有一种“自然的”排序状态self._rating =[ (v,k) for k,v in dict.iteritems(self)]self._rating.sort()def copy(self):'''提供一个完全相同但独立的拷贝'''return Ratings(self)def __setitem__(self,k,y):'''除了把主要任务委托给dict,我们还维护self._rating'''if k in self:del self._rating[self.rating(k)]dict.__setitem__(self,k,v)insort_left(self._rating,(v,k))def __delitem__(self,k):'''除了把主要任务委托给dict,我们还维护self._rating'''del self._rating[self.rating(k)]dict.__delitem__(self,k)'''显式地将某些方法委托给dict的对应方法,以免继承了DictMixin的较慢的(虽然功能正确)实现'''__len__ = dict.__len____contains__ = dict.__contains__has_key = __contains__'''在self._rating和self.keys()之间的关键的语义联系————DictMixin“免费”给了我们所有其他方法,虽然我们直接实现它们能够获得稍好一点的性能。'''def __iter__(self):for v,k in self._rating:yield kiterkeys = __iter__def keys(self):return list(self)'''三个和排名相关的方法'''def rating(self,key):item = self[key],keyi = bisect_left(self._rating,item)if item == self._rating[i]:return iraise LookupError,"item not found in rating"def getValueByRating(self,rating):return self._rating[rating][0]def getKeyByRating(self,rating):return self.rating[rating][1]
def _test():'''我们使用doctest来测试这个模块,模块名必须为rating.py,这样docstring中的示例才会有效'''import doctest,ratingdoctest.testmod(rating)
if __name__ == "__main__":_test()

讨论

在很多方面,字典都是很自然地被应用于存储键(比如,竞赛中参与者的名字)和“分数”(比如参与者获得的分数,或者参与者在拍卖中的出价)的对应关系的数据结构。如果我们希望在这些应用中使用字典,我们可能会希望以自然的顺序访间–即键对应的“分数”的升序——我们也希望能够迅速获得基于当前分数的排名(比如,参与者现在排在第三位,排在第二位的参与者的分数,等等)。

为了达到这个目的,本节给dict的子类增加了一些它本身完全不具备的功能(rating方法、getValueByRating、getKeyByRating),同时,最关键和巧妙的地方是,我们修改了keys方法和其他相关的方法,这样它们就能返回按照指定顺序排列的列表或者可选代对象(比如按照分数的升序排列,对于两个有同样分数的键,我们继续比较键本身)。大多数的文档都放在类的文档字符串中——保留文档和示例是很重要的,可以用Python 标准库的 doctest模块来提供单元测试的功能,以确保给出的例子是正确的。

关于这个实现的有趣之处是,它很关心消除冗余(即那些重复和令人厌烦的代码,很可能滋生 bug),但同时没有损害性能。Ratings 类同时从 dict 和 DictMixin 继承,并把后者排在基类列表的第一位,因此,除非明确地覆盖了基类的方法,Ratings 的方法基本来自于 DictMixin,如果它提供了的话。

Raymond Hettinger 的 DictMixin 类最初是发布在 Python Cookbook 在线版本中的一个例子,后来被吸收到了 Python2.3的标准库中。DictMixin 提供了各种映射的方法,除了__init__
、copy以及四个基本方法:__getitem__、__setitem__、__delitem__和 keys。如果需要的是一个映射类并且想要支持完整映射所具有的各种方法,可以从DictMixin派生子类,并且提供那些基本的方法(具体依赖于你的类的语义————比如,如果你的类有不可修改的实例,你无须提供属性设置方法__setitem__和__delitem__)。还可以添加一些可选的方法以提升性能,覆盖 DictMixin 所提供的原有方法。整个 DictMixin 的架构可以被看做是一个经典的模板方法设计模式(Template Method Design Pattern),它用一种混合的变体提供了广泛的适用性。

在本节的类中,从基类继承了__getitem__(准确地说,是从内建的dict类型继承),出于性能上的考虑,我们把能委托的都委托给了dict。我们必须自己实现基本的属性设置方法(__setitem__和__delitem__),因为除了委托给基类的方法,还需要维护一个数据结构 self._rating——这是一个列表,包含了许多(score,key)值对,此列表在标准库模块 bisect 的帮助下完成了排序。我们也重新实现了keys(在这个步骤中,还重新实现了__iter__,即 iterkeys,很明显,借助__iter__可以更容易地实现 keys)来利用self._rating 并按照我们需要的顺序返回键。最后,除了上面三个和排名有关的方法,我们又为__init__和 copy 添加了实现。

这个结果是一个很有趣的例子,它取得了简洁和清晰的平衡,并最大化地重用了 Python标准库的众多功能。如果你在应用程序中使用这个模块,测试结果可能会显示,本节的类从 DictMixin 继承来的方法的性能不是太让人满意,毕竞 DictMixin 的实现是基于必要的通用性的考虑。如果它的性能不能满足你的要求,可以自己提供一个实现来获取最高性能。假设有个Ratings类的实例r,你的应用程序需要对r.iteritems()的结果进行大量的循环处理,可以给类的主体部分增加这个方法的实现以获得更好的性能:

def iteritems(self):for v,k in self._rating:yield k,v

相关文章:

Python Cookbook-5.14 给字典类型增加排名功能

任务 你需要用字典存储一些键和“分数”的映射关系。你经常需要以自然顺序(即以分数的升序)访问键和分数值,并能够根据那个顺序检查一个键的排名。对这个问题,用dict 似乎不太合适。 解决方案 我们可以使用 dict 的子类,根据需要增加或者重…...

第二十二: go与k8s、docker相关编写dockerfile

实战演示k8s部署go服务,实现滚动更新、重新创建、蓝绿部署、金丝雀发布-CSDN博客 go 编写k8s命令: 怎么在go语言中编写k8s命令 • Worktile社区 k8s中如何使用go 在K8s编程中如何使用Go-阿里云开发者社区 go build - o : -o:指定输出文件…...

Servlet、HTTP与Spring Boot Web全面解析与整合指南

目录 第一部分:HTTP协议与Servlet基础 1. HTTP协议核心知识 2. Servlet核心机制 第二部分:Spring Boot Web深度整合 1. Spring Boot Web架构 2. 创建Spring Boot Web应用 3. 控制器开发实践 4. 请求与响应处理 第三部分:高级特性与最…...

事件过滤器

1.简介 事件过滤器是指在程序分发到event事件之前进行的一次高级拦截。 2.使用步骤 给控件安装事件过滤器重写eventfilter事件 3.具体实现 3.1安装事件过滤器 代码: //给label1安装事件过滤器ui->label->installEventFilter(this); 3.2重写eventfilter…...

AI识别与雾炮联动:工地尘雾治理新途径

利用视觉分析的AI识别用于设备联动雾炮方案 背景 在建筑工地场景中,人工操作、机械作业以及环境因素常常导致局部出现大量尘雾。传统监管方式存在诸多弊端,如效率低、资源分散、监控功能单一、人力效率低等,难以完美适配现代工程需求。例如…...

Kubernetes nodeName Manual Scheduling practice (K8S节点名称绑定以及手工调度)

Manual Scheduling 在 Kubernetes 中,手动调度框架允许您将 Pod 分配到特定节点,而无需依赖默认调度器。这对于测试、调试或处理特定工作负载非常有用。您可以通过在 Pod 的规范中设置 nodeName 字段来实现手动调度。以下是一个示例: apiVe…...

Nacos注册中心

Nacos注册中心 本地环境搭建 准备挂载的文件夹 在拉取 Nacos 镜像之前,在 E:\docker 文件夹下,创建一个 /nacos 文件夹,等会运行容器时,用于将 Nacos 容器中的配置文件、持久化文件挂载出来,防止容器重启时数据丢失…...

除了 `task_type=“SEQ_CLS“`(序列分类),还有CAUSAL_LM,QUESTION_ANS

task_type="SEQ_CLS"是什么意思:QUESTION_ANS 我是qwen,不同模型是不一样的 SEQ_CLS, SEQ_2_SEQ_LM, CAUSAL_LM, TOKEN_CLS, QUESTION_ANS, FEATURE_EXTRACTION. task_type="SEQ_CLS" 通常用于自然语言处理(NLP)任务中,SEQ_CLS 是 Sequence Classif…...

二战蓝桥杯所感

🌴 前言 今天是2025年4月12日,第十六届蓝桥杯结束,作为二战的老手,心中还是颇有不甘的。一方面,今年的题目比去年简单很多,另一方面我感觉并没有把能拿的分都拿到手,这是我觉得最遗憾的地方。不…...

深度解析自动化工作流工具:n8n 与 Dify 的对比分析

深度解析自动化工作流工具:n8n 与 Dify 的对比分析 随着企业数字化转型的加速,自动化工具在提高工作效率、降低人工成本方面扮演着越来越重要的角色。市面上有多种自动化工作流工具可供选择,其中 n8n 和 Dify 是两个备受关注的开源和商业产品…...

深度剖析Python中的生成器:高效迭代的秘密武器

深度剖析Python中的生成器:高效迭代的秘密武器 在Python的编程世界里,生成器(Generator)是一个强大而又迷人的特性,它为开发者提供了一种高效处理大量数据的方式,尤其在涉及到迭代操作时,能显著…...

Mac 下载 PicGo 的踩坑指南

Mac 下载 PicGo 的踩坑指南 一、安装问题 下载地址:https://github.com/Molunerfinn/PicGo/releases 下载之后直接安装即可,此时打开会报错:Picgo.app 文件已损坏,您应该将它移到废纸篓。 这是因为 macOS 为了保护用户不受恶意…...

网页布局汇总

1. 盒模型 容器大小 内容大小 内边距(padding) 边框大小 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…...

基于 Maven 构建的 Thingsboard 3.8.1 项目结构

一、生命周期&#xff08;Lifecycle&#xff09; Maven 的生命周期定义了项目构建和部署的各个阶段&#xff0c;图中列出了标准的生命周期阶段&#xff1a; clean&#xff1a;清理项目&#xff0c;删除之前构建生成的临时文件和输出文件。validate&#xff1a;验证项目配置是否…...

MySQL 中为产品添加灵活的自定义属性(如 color/size)

方案 1&#xff1a;EAV 模型&#xff08;最灵活但较复杂&#xff09; 适合需要无限扩展自定义属性的场景 -- 产品表 CREATE TABLE products (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100),price DECIMAL(10,2) );-- 属性名表 CREATE TABLE attributes (id INT PRIMA…...

C++语言程序设计——02 变量与数据类型

目录 一、变量与数据类型&#xff08;一&#xff09;变量的数据类型&#xff08;二&#xff09;变量命名规则&#xff08;三&#xff09;定义变量&#xff08;四&#xff09;变量赋值&#xff08;五&#xff09;查看数据类型 二、ASCII码三、进制表示与转换&#xff08;一&…...

第三篇:Python数据结构深度解析与工程实践

第一章&#xff1a;列表与字典 1.1 列表的工程级应用 1.1.1 动态数组实现机制 Python列表底层采用动态数组结构&#xff0c;初始分配8个元素空间&#xff0c;当空间不足时按0,4,8,16,25,35...的公式扩容&#xff0c;每次扩容增加约12.5%的容量 通过sys模块可验证扩容过程&a…...

dcsdsds

我将为您在页面顶部添加欢迎内容&#xff0c;同时保持整体风格的一致性。以下是修改后的代码&#xff0c;主要修改了模板部分和对应的样式&#xff1a; vue 复制 <template><div class"main-wrapper"><!-- 新增欢迎部分 --><div class"…...

Vitis: 使用自定义IP时 Makefile错误 导致编译报错

参考文章: 【小梅哥FPGA】 Vitis开发中自定义IP的Makefile路径问题解决方案 Vitis IDE自定义IP Makefile错误&#xff08;arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument&#xff09;解决方法 Vitis 使用自定义IP时: Makefile 文件里的语句是需要修改的&#xff0c;…...

应急响应练习靶机-web1

1&#xff09;背景 小李在值守的过程中&#xff0c;发现有CPU占用飙升&#xff0c;出于胆子小&#xff0c;就立刻将服务器关机&#xff0c;这是他的服务器系统&#xff0c;请你找出以下内容&#xff0c;并作为通关条件&#xff1a; 1.攻击者的shell密码 2.攻击者的IP地址 3.攻击…...

cdp-(Chrome DevTools Protocol) browserscan检测原理逆向分析

https://www.browserscan.net/zh/bot-detection 首先,打开devtools后访问网址,检测结果网页显示红色Robot,标签插入位置,确定断点位置可以hook该方法,也可以使用插件等方式找到这个位置,本篇不讨论. Robot标签是通过insertBefore插入的. 再往上追栈可以发现一个32长度数组,里面…...

MCU刷写——Hex文件格式详解及Python代码

工作之余来写写关于MCU的Bootloader刷写的相关知识,以免忘记。今天就来聊聊Hex这种文件的格式,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问,可底下评论! 如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走一波!感谢…...

SpringBoot(一)

快速入门 1.概念 SpringBoot 简单、快速地创建一个独立的、生产级别的 Spring 应用&#xff08;说明SpringBoot底层是Spring&#xff09; 大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术 特性&#xff1a; 快速创建独立 Spring 应用 SSM&…...

学习Mysql对库和表的操作以及对数据的操作

对库操作 SHOW DATABASES;可以查看数据库服务器中有哪些数据库(注意databases最后的s不要忘记) SELECT DATABASE();可以查看到目前是在哪个数据库下。 CREATE DATABASE 库名;可以创建一个数据库 DROP DATABASE 库名;可以删除一个数据库 USE 库名;切换到当前数据库 对表操…...

微软office填表无法打勾✔,解决办法!

最近在使用office 填表的时候&#xff0c;碰到需要在选择框中打勾的情况&#xff0c;但是找了半天发现找不到打勾的按钮。为此&#xff0c;记录该问题解决办法&#xff1a; 以这个界面为例&#xff0c;如果点击打勾发现无法✔。 这里因为office和wps的编写不一样&#xff0c;所…...

Python实现链接KS3,并批量下载KS3文件数据到本地

前言 本文是该专栏的第56篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏的上篇文章《Python实现链接KS3,并将文件数据批量上传到KS3》中,笔者有详细介绍基于Python,实现链接KS3并将文件数据批量上传。而本文,笔者将基于在上一篇文章的基础之上,实现链接KS…...

构建智能期货交易策略分析应用:MCP与AI的无缝集成

引言 随着金融科技的快速发展&#xff0c;数据驱动的交易决策已成为期货交易领域的重要趋势。本文将深入探讨一个结合了Model Content Protocol (MCP)和AI技术的期货交易策略分析应用——Futures MCP。该应用不仅提供了丰富的技术分析工具&#xff0c;还通过MCP协议与大型语言…...

区块链点燃游戏行业新未来——技术变革与实践指南

区块链点燃游戏行业新未来——技术变革与实践指南 在数字时代&#xff0c;游戏行业无疑是创新的热土。从简单像素风的街机游戏到沉浸式的虚拟现实&#xff0c;我们见证了技术如何一步步塑造游戏的样貌。然而&#xff0c;在传统游戏模式中&#xff0c;玩家权益往往无法得到保障…...

Jmeter中如何实现关联?

在JMeter中实现关联(Correlation)是性能测试中处理动态数据(如Session ID、Token、动态参数等)的核心技能。以下是详细操作指南,涵盖原理、工具和实战示例: 一、关联的本质与场景 作用:从服务器响应中提取动态数据,供后续请求复用(如登录Token、订单ID、验证码等)。 …...

在MATLAB中使用MPI进行并行编程

在MATLAB中使用MPI进行并行编程 MATLAB支持通过MPI (Message Passing Interface) 进行并行编程&#xff0c;这通常通过Parallel Computing Toolbox和MATLAB Parallel Server实现。以下是使用MPI进行并行编程的基本方法&#xff1a; 基本设置 确保安装了必要的工具箱&#xff…...

15.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--如何拆分单体

单体应用&#xff08;Monolithic Application&#xff09;是指将所有功能模块集中在一个代码库中构建的应用程序。它通常是一个完整的、不可分割的整体&#xff0c;所有模块共享相同的运行环境和数据库。这种架构开发初期较为简单&#xff0c;部署也较为方便&#xff0c;但随着…...

C++: char类型既不是signed char也不是unsigned char

对于 int, short, long, long long 类型&#xff0c; 增加 signed&#xff0c; 类型不变。 对于 char 类型&#xff0c; 增加 signed&#xff0c; 类型变了。 char 既不是 signed char&#xff0c; 也不是 unsigned char。 虽然 char 的取值范围&#xff0c; 一定是&#xff1…...

测试第二课-------测试分类

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…...

16.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--微服务的部署与运维

部署与运维是微服务架构成功实施的关键环节。一个良好的部署与运维体系能够保障微服务的高可用性、可扩展性和可靠性。在这一阶段&#xff0c;重点包括微服务的容器化与编排、API 网关的实现以及日志与监控体系的建设。 一、容器化与编排 1.1 使用 Docker 容器化微服务 容器…...

什么是供应链金融

供应链金融&#xff08;Supply Chain Finance&#xff09; 是一种基于供应链上下游真实交易场景的金融服务模式&#xff0c;通过整合物流、信息流、资金流和数据流&#xff0c;为核心企业及其上下游中小企业提供灵活、高效的融资解决方案。其核心目标是优化供应链资金周转效率&…...

个人博客系统后端 - 注册登录功能实现指南

一、功能概述 个人博客系统的注册登录功能包括&#xff1a; 用户注册&#xff1a;新用户可以通过提供用户名、密码、邮箱等信息创建账号用户登录&#xff1a;已注册用户可以通过用户名和密码进行身份验证&#xff0c;获取JWT令牌身份验证&#xff1a;使用JWT令牌访问需要认证…...

微信小程序运行机制详解

微信小程序运行机制详解 微信小程序是介于 Web 和原生 App 之间的一种应用形态&#xff0c;具有无需安装、用完即走、体验流畅的特点。本文将从架构层面、运行环境、通信机制等方面深入剖析微信小程序的运行机制。 一、小程序运行架构概览 微信小程序采用双线程模型&#xff…...

GGML源码逐行调试(中)

目录 前言1. 简述2. 加载模型超参数3. 加载词汇表4. 初始化计算上下文5. 初始化计算后端6. 创建模型张量7. 分配缓冲区8. 加载模型权重结语下载链接参考 前言 学习 UP 主 比飞鸟贵重的多_HKL 的 GGML源码逐行调试 视频&#xff0c;记录下个人学习笔记&#xff0c;仅供自己参考&…...

高阶函数/柯里化/纯函数

本篇文章主要是介绍一下标题里面的概念&#xff0c;在面试的时候经常文档&#xff0c;结合阅读到的资料&#xff0c;结合本人的个人见解出品了该文章&#xff0c;如有写的不好的地方或理解有误的&#xff0c;还望阁下多多指教。 1、高阶函数 什么是高阶函数&#xff1f; 接受…...

docker部署scylladb

创建存储数据的目录和配置目录 mkdir -p /root/docker/scylla/data/data /root/docker/scylla/data/commitlog /root/docker/scylla/data/hints /root/docker/scylla/data/view_hints /root/docker/scylla/conf快速启动拷贝配置文件 docker run -d \--name scylla \scylladb/…...

Python创意:AI图像生成

1. 基本概念 AI 图像生成通常基于以下几种方法&#xff1a; 一.生成对抗网络 (GAN) 生成对抗网络&#xff08;GAN&#xff0c;Generative Adversarial Network&#xff09;是一种深度学习框架&#xff0c;主要用于生成新的、类似于训练数据的样本。自2014年由Ian Goodfellow及…...

十九、UDP编程和IO多路复用

1、UDP编程 服务端&#xff1a; #include<stdio.h> #include <arpa/inet.h> #include<stdlib.h> #include<string.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <pthread.h> #include &l…...

【MySQL】复合查询

文章目录 &#x1f449;基本查询回顾&#x1f448;select 子查询 &#x1f449;多表查询&#x1f448;&#x1f449;自连接&#x1f448;&#x1f449;子查询&#x1f448;单行子查询多行子查询多列子查询在from子句中使用子查询合并查询 &#x1f449;总结&#x1f448; &…...

并发编程--条件量与死锁及其解决方案

并发编程–条件量与死锁及其解决方案 文章目录 并发编程--条件量与死锁及其解决方案1.条件量1.1条件量基本概念1.2条件量的使用 2. 死锁 1.条件量 1.1条件量基本概念 在许多场合中&#xff0c;程序的执行通常需要满足一定的条件&#xff0c;条件不成熟的时候&#xff0c;任务…...

【NLP解析】多头注意力+掩码机制+位置编码:Transformer三大核心技术详解

目录 多头注意力&#xff1a;让模型化身“多面手” 技术细节&#xff1a;多头注意力如何计算&#xff1f; 实际应用&#xff1a;多头注意力在Transformer中的威力 为什么说多头是“非线性组合”&#xff1f; 实验对比&#xff1a;多头 vs 单头 进阶思考&#xff1a;如何设计更高…...

#关于数据库中的时间存储

✅ 一、是否根据“机器当前时区”得到本地时间再转 UTC&#xff1f; 结论&#xff1a;是的&#xff0c;但仅对 TIMESTAMP 字段生效。 数据库&#xff08;如 MySQL&#xff09;在插入 TIMESTAMP 类型数据时&#xff1a; 使用当前会话的时区&#xff08;默认跟随系统时区&#…...

C# --- yield关键字 和 Lazy Execution

C# --- yield关键字 和 Lazy Execution 延迟执行&#xff08;Lazy Execution&#xff09;yield关键字lazy execution与yield的关系LINQ 和 lazy exectuion 延迟执行&#xff08;Lazy Execution&#xff09; 延迟执行指操作不会立即计算结果&#xff0c;而是在实际需要数据时才执…...

Qt报错dependent ‘..\..\..\..\..\..\xxxx\QMainWindow‘ 或者 QtCore\QObject not exist

Qt5.15编译项目报错如下: dependent ‘..\..\..\..\..\..\Qt\5.15.2\msvc2019_64\include\QtW...

彻底掌握 XMLHttpRequest(XHR):前端通信的基石

一、XHR 的起源与演进 1.1 技术背景 XHR&#xff08;XMLHttpRequest&#xff09;是现代 Web 应用的异步通信基石&#xff0c;最早由微软在 IE5 中通过 ActiveXObject 引入&#xff0c;后来被 Mozilla 推广并成为 W3C 的标准接口。XHR 的出现推动了 AJAX&#xff08;Asynchrono…...

Bartender 5 for Mac 多功能菜单栏管理

Bartender 5 for Mac 多功能菜单栏管理 一、介绍 Bartender 5&#xff0c;是一款菜单栏管理软件&#xff0c;可以帮助用户隐藏、组织和自定义Mac菜单栏中的图标和通知。使用Bartender 5&#xff0c;用户可以将不常用的图标隐藏起来&#xff0c;使菜单栏保持整洁&#xff0c;并…...