支付交易——BIN服务

摘要

老王的杂货店里货很多,国产的,进口的,不同种类、不同品牌、不同型号的货,应有尽有。
货多了,老王就弄了个小本本记下店里卖的货有哪些,记得很详细,包括有哪些种类,每个种类里有什么品牌,品牌里有什么型号,甚至具体到规格、颜色。客人来要货,老王记不清的时候看看本,就知道有没有。可是这生意就和生活一样,一个问题解决了又来一个问题,关关难过关关过。

大多数情况都挺好,可是时间长了,老王就发现有些问题。按道理,老王的小本本上记录有的货就肯定有,即使有时候卖得太好,货没了,老王找找供应商也就可以补货了。但有好几次,客人要指定型号的货,老王店里货卖没了,需要找供应商补货,理论上肯定能补到货,但结果询问的供应商也没有,既耽误了客人时间,自己也做了无用功。为什么店里明明记着有,供应商那边却没有呢?复盘发现,原因是问错了供应商。

刚开始发展的时候,供应商也就那一个,不存在找哪个供应商订货的问题;后来店开久了,供应商也多了,同样的品牌,江西和江苏的供应商都有。但是各个供应商都有一些当地特供,有的型号只有江苏供应商有,江西的没有;有的型号只有江西的供应商有,江苏的没有。

问题找到后,老王开始亡羊补牢,把 PDCA(计划—执行一检查-处理).方法论运用得淋漓尽致。既然问题出在供应商上,老王就在小本本上原来记录的内容上加上了供应商以及他们能提供的具体产品型号,这样就不会再做无用功,保证联系的供应商就肯定能支持。老王小本本的改变其实就是BIN服务。

老王用小本本管理各商品类目相当于支付中BIN管理的过程;老王小本本记录的格式相当于支付中BIN表字段结构设计的过程;老王根据自己记录的商品品牌、型号去联系具体供应商补货,相当于支付中通过BIN服务判定通道支持能力,把交易请求送到支持的通道,从而提高支付成功率。

一、BIN是什么

大家看看自己身边的银行卡,看看它们有什么差别。

  • 首先,如果你身边有多张银行卡,你会发现这些银行卡的发卡行不一样,它们有的来自同一家银行,有的来自不同银行。比如有的银行卡的发卡行是招商银行,有的是农业银行。
  • 其次,你会发现这些卡的卡性质不--样,有的是信用卡,有的是借记卡。比如你在某行办了两张银行卡,一张借记卡用作工资卡,一张信用卡用于消费,它们的特性不一样。
  • 再者,这些卡即使来自同一家银行,它们的卡级别、卡名称可能都不一样。比如你可能既有某家银行的普通卡,又有这家银行的白金卡,它们的级别是不同的;又如你有某家银行与东方航空的联名信用卡,叫作“某行东航联名信用卡”,而你同事的信用卡虽然与你的来自同一家银行,但他的叫作“某行南航联名信用卡”,因为他偏好南航。你们这两张卡虽然都是某家银行同一级别同一性质的卡,但是背后的福利、名称、卡面设计都不一样。
  • 不同点还有很多、比如卡组织不一样(有的卡组织是银联,有的是 Visa)、有公私区分(有的是公务卡,有的是私人卡),这里不再展开。

对于这些不同的卡,银行和支付平台是怎么通过用户输入的卡号获取对应银行卡的开户行、卡级别、随卡福利等信息的呢?

答案是通过BIN ( Bank Identification Nunber.发卡行标识码〕服务实现BIN服务是一种通过对BIN进行管理并提供外部查询用于识别和判断卡所属银行、卡组织、卡级别的支持服务。

我们再看看身边的银行卡,每张卡的卡号都是唯一的,且由三类属性构成:发卡行标识码、发卡行自定义位、检验码。如下图所示为一张招商银行借记卡,其卡号为6214 8321 9171 7276(无效卡,仅作演示用),总共16位数字,具体结构如下。

  1. 第1~6位是4514,这就是这张招商银行借记卡的BIN。62开头的银行卡是银联卡,这意味着这个卡号是银联作为卡组分配给招商银行的BIN。
  2. 第7~15位为发卡行自定义位,这里的121654738就是招商银行分配给某个用户,用于识别不同卡、不同用户的标识。
  3. 最后一位(第16位)为检验码,用于验证此卡为真实卡、有效卡,比如应用Luhn算法进行验证。

在图所示卡号的构成中,BIN是基础,是最为重要的构成,用于识别出一张卡的所属银行。形容支付系统与BIN的关系,九层之台,起于累土。我们可以把支付系统看作“九层之台”,把支付路由服务、通道服务等支付机制看作每一层或大或小的平台,那么构建起这些平台的“累土”就是BIN。

通过BIN不仅可以知道一张卡是由哪家银行发行的,还可以知道卡类型、卡种,这就是为什么大家在一些网站进行支付或者绑卡输入银行卡号时,只输入前几位数字,网站就显示了具体的银行卡名称。

BIN一般由6位数字组成。2014年年底,国际标准化组织(ISO)已经将BIN由6位数字调整到8位数字。目前绝大部分国内银行卡的BIN码是6位。BIN第1位为发卡行业标识号( Major Industry Identifier,MII),代表的是发卡机构所属行业。不同MII代表的行业见表。

标识所在行业
0ISO/TC68和其他行业
1航空
2航空和其他行业
3运输、娱乐和金融财务
4金融财务
5金融财务
6商业和金融财务
7石油和其他行业
8医疗、电信和其他行业
9有本国标准机构分配

在中国银联建立之前,我国各银行发行的银行卡基本只能在国内使用,因为其不符合国际标准,或者是按照表6-1中所列举的具体情况——由本国标准机构分配,发行的大多数为9开头的卡号。

现在已经很少见到9开头的卡号,但这类卡在当初是有历史意义的。为了推动国家的“金卡工程”,实现全国的银行卡业务规范和标准统一,中国人民银行在2000年特别发布342号文《中国人民银行关于颁布〈银行卡发卡行标识代码及卡号〉和〈银行卡磁条信息格式和使用规范〉两项行业标准的通知》,其中规定发卡行标识码第一位固定为9。

在2000年342号文颁布后,因为标准的建立与规范,国内银行卡互联互通发展迅速。到2001年年底,全国银行卡发行量已经达到3.83亿张,特约商户超过15万家,POS终端21.8万台,ATM 3.8万台,当年交易总金额达到8.43万亿元,银行卡消费占社会商品零售额的比重提高到了2.7%。这些数据表明,社会对银行卡的接受程度越来越高,银行卡使用更为广泛。342号文在当时的历史背景下意义重大。BIN由国际标准化组织( International Organization forStandardization , 1SO)分配给各从事跨行转接交换的银行卡组织,再由卡组织分配给各组织内银行,分配顺序见图6-2。

在2002年之前,我国是没有卡组织的,银行卡只能在国内使用,国际支付银行卡大多是使用Visa、Mastercard、JCB、美国运通等国外卡组织的银行卡。

2002年3月,经过国务院同意,中国人民银行批准设立了中国银联(简称“银联”)。银联有很多职能,其中有项是统银行卡跨行技术标准和业务规范,实现系统间互联互.通和资源共享,保征银行卡跨行、跨地区和跨境的使用。

这样的目标与职能促使银联在2003年8月推出“62”BIN的银联标准卡,并在日后逐步实现国内银行发行的内卡均为统一标准银行卡,也就是62开头。银联也成为BIN注册机构,国内银行在发行卡时需要向银联提出BIN分配申请。

银联标准卡62的BIN不仅是国内规范的统一,也是我国银行卡由国内可用走向国际通用的一步。银联按照ISO国际标准进行申请,由ISO分配给银联以62开头的BIN,银联根据ISO分配 BIN进行再分配,分配给各发卡行。

至此,国际有了六大卡组织:中国银联股份有限公司( UnionPay)、万事达卡国际卡组织(Mastercard)、维萨国际卡组织( Visa)、美国运通国际股份有限公司( AE)、日本国际信用卡公司(JCB)和大莱信用卡有限公司(Dincrs Club)。按照ISO分配情况。

卡组织中文名卡组织英文名字卡号范围
银联Union Pay620000-629999
维萨Visa400000-499999
万事达Mastercard510000-559999
日本国际信用卡JCB352800-358999
大莱Diners Club300000-305999
309500-309599
360000-369999
380000-399999
美国运通American Express340000-349999
370000-379999

二、BIN的表的设计

每一张银行卡的诞生,标准流程是发下行问对应卡纽织串请对应BTN,而卡组织的BIN由ISO分配发卡行拿到对应BIN后再去生成卡号、发绘持卡人。

如老王开店的故事一样,ISO 就相当于老王的杂货铺,用不同的商品编号来代表不同种类的商品。
银行卡就像生活百货这样比较大的领域,老王大手一挥,就划定了几个号段给生活百货。

卡组织就像生活百货的各个具体种类,比如衣服、食品等,哗的一声,老王就又从生活百货里划了几个号段给各个品类。

具体银行的卡种就像每个品类的厂商,如食品中的康师傅、统一,抽纸用品里的清风、心相印,哗的一声,老王又从每个品类的号段中分配一些给了各厂商的一些品牌。

康师傅红烧牛肉面的商品编号就像招商银行信用卡的BIN,商品条码后面的长度定义了这个产品最大产量和标准格式。比如招商银行16位的卡,去掉最后一-位校验码和前面6位BIN,还有9位,代表这个卡最多只能发行999 999 999张。

除此之外,还要考虑的一个问题是,同样的产品是有不同的供应商的,比如康师傅红烧牛肉面,既有江苏的供应商,又有江西的供应商;既有A厂生产的,又有B厂生产的。每个供应商供应的面品种可能重叠,也可能有不一样的地方;同样,每个工厂生产的品种可能一样,也可能不一样。就像支付里支付品牌对应的支付通道一样。招商银行信用卡会存在不同的支付通道,这些支付通道的支付能力可能不一样、也就是支持的卡种不一样.支持的BIN段不样.国此在这种多供应商、多品种的情况下.还需要划出编号来区分不同的供应商。

通道与BIN服务的关系是很多人在进行BIN服务设计时最容易忽视或者因为没有经验而忽略的地方﹒大家日常在线下或者线上进行卡类支付时,如果留心前端报错信息或者支付通道返回的错误码,会看到这样的文案:“BIN校验不通过”“卡号错误”“卡类型不对”,也可能直接就是“支付失败”等。造成这种情形的原因有很多,比如以下3条:

  1. 卡号错误。这包括卡号不存在、卡位数不对等原因。
  2. 卡号正确,但卡类型错误或者银行错误。比如拿着借记卡却选成了信用卡进行交易,系统把农业银行信用卡当作工商银行卡送到了工行通道进行交易。
  3. BIN不支持不管是通道出子港后刊4朵维护新的BIN 、还是其文付能力受限不支持此卡所对应的BIN,只要通道不支持的BIN|送交易到点付通.道.结染就公失败就像你去一家不是手冲店的星巴克店买手冲咖啡,不管去多少次、买多少杯都会失败,都会买不到,因为你去的店根本不具备这个能力。

支付从业人员如果要获取完整的BIN信息,可以联系具体卡组织、发卡行和通道服务商。这三者提供的BIN信息既有共同的部分,又有各自独有的部分,它们的并集构成了全集。

卡组织提供该组织下最为完整的各发卡行BIN信息.比如银联提供使用银联标准卡的各发卡行(招商银行、工商银行等)的各类型卡(经典卡、借记卡金卡等)的BIN信息,但其无法提供其他卡组织(Visa、Mastercard等)的BIN信息。

发卡行提供该银行下最为完整的各卡种BIN信息:比如招商银行作为发卡行,既发行银联卡,也发行Visa 卡、Mastercard卡,因此招商银行提供的BIN信息不仅包含银联的,也包含其他卡组织的,但是其无法提供其他发卡行的BIN信息。

通道服务商提供该通,道支付能力以内的BIN 信息,拿第三方支付通道服务商举例,它提供的支付能力有多银行、多卡种,比如既支持招商银行,又支持工商银行;同时支付能力也可能支持多卡组织,比如支付宝既能支持银联卡,又能支持万事达卡。通道服务商提供的BIN信息是由其支付能力覆盖范围而定的,既涵盖多家银行,又包括不同卡组织。通道服务商的缺陷在于其支付能力是有限的,不可能穷举全世界甚至只是全国所有银行的所有卡种,所以其无法提供不在其支付能力覆盖范围内的BIN信息。

当然还有些第三方网站提供查 BIN,这里不再列举,大家可以在网上自行搜索。根据以上所述,在进行BIN服务设计时,有两种方案:一种与通道无关.用于相对简j单场景,比如单通道场景;一种与通道有关.用来精确匹配、尽可能保证通道可用性。

2.1 不涉及通道方案

假设以招商银行作为发卡行,发行卡种为携程联名信用卡和东航联名信用卡,则其方案表结构见表。

银行名称卡种名称卡类型卡等级BIN长度卡号长度BIN段开始BIN段结束是否有效BIN图片是否为外卡
招商银行携程联名信用卡信用卡普卡616620000629999有效默认
招商银行东航联名信用卡信用卡白金卡616630000639999有效默认

在这种方案中,涉及的字段有银行名称、卡种名称、卡类型、BIN长度、卡号长度、BIN段开始、BIN段结束、是否有效、BIN图片、是否是外卡。具体字段说明如下。

  1. 银行名际:用于表示在BIN识别时识别的发卡行或卡组织,如表中的招商银行。
  2. 卡种名称:用于表示该银行的具体卡种,如表6-3中的携程联名信用卡、东航联名信用卡。这样的卡种区分可以用于营销合作,展示不同权益,或结合图片展示不同的卡界面,就像实物一样,增强体验。
  3. 卡类型:用于表示卡的借贷属性,卡类型有借记卡、贷记卡和准贷记卡。该字段用于判断卡类型,供支付系统识别进行不同支付逻辑处理。比如充值业务只支持使用借记卡进行支付,需要屏蔽贷记卡。
  4. 卡等级:用于表示具体卡的等级属性。卡等级可结合营销,用于做数据挖掘、会员权益等活动。
  5. BIN长度:用于表示BIN的长度。根据BIN长度截取卡号对应位数号码,与 BIN表进行匹配。
  6. 卡号长度:用于表示该卡种的卡号长度。将卡号长度结合其 BIN信息、校验码算法,可以进行匹配并判断用户输人卡号是否有效,进而拦截无效卡号。
  7. BIN段开始和BIN段结束:用于匹配BIN具体值区间。每个卡种的BIN区间都不一样,也不一定是连续的。如果遇到不连续的BIN信息,在设置BIN表的时候需要录入多条卡数据。比如大莱卡的BIN段有300000~305999、309500~309599、360000~369999、380000~399999,这样的BIN 段就需要设置多条数据。
  8. 是否有效:BIN 数据的有效性。用于筛选系统有效数据,避免进行无效匹配。
  9. BIN 图片:展示具体卡种图片。结合卡种名称,一起为用户带来真实卡片的感受。如果没有相关图片,可以设置默认图片,用来向用户展示该行图片
  10. 是否是外卡:用于标记卡片的内外卡属性。内外卡属性很重要,第⒉章介绍了支付过程如何避免“内卡外收”以及外卡的支付特点(如3DS安全认证、动态汇率转换)等知识。要避免这些错误和实现这些功能,必须先正确识别其卡属性,而识别的依据就是BIN数据。

这样的 BIN表设计就能够满足单一通道场景了。这种设计的优点是只与卡种相关,维护简单,缺点是覆盖场景不足。

2.2 涉及通道方案

支付有不同的场景,比如机票、酒店,在这些场景中需要用到不同的交易类型,比如机票用到的交易类型是消费,而酒店除了用到消费交易类型,还会用到预授权交易类型。不同的支付通道能力不一样,大多数规模以上企业从降成本、备份角度考虑也会接人多家通道,如果还沿用第一种方案就不能满足需求,甚至是有缺陷的。

在前面中介绍过,路由有各类算法逻辑来匹配最优通道,而最优通道的前提首先是可用性,即将交易上送给通道后不能返回“卡号错误”“BIN 不支持/该卡暂不支持”之类的返回码,于是就有了涉及通道的BIN表方案。

假设以招商银行作为发卡行,发行卡种为携程联名信用卡,但是支持的通道有银联和招行直连,则其表结构见表。多了一个字段“通道名称”。如我们在表中所见,同样的招商银行携程联名信用卡,它的BIN全集是620000~629998。通过前面的内容我们知道,所有的支付方式都是通过支付通道来支持的。

通道名称银行名称卡种名称卡类型卡等级BIN长度卡号长度BIN段开始BIN段结束是否有效BIN图片是否为外卡
银联招商银行携程联名信用卡信用卡普卡616620000629999有效默认
招行直连招商银行东航联名信用卡信用卡白金卡616630000639999有效默认

如表所示,招商银行携程联名信用卡的两个通道均可以支持其交易、分别是银联直连通道与招行直连通道,两者的BIN范围不同,这里就有了两条数据。

2.3 方案设计案例

我们通过以下案例进一步讲解上述两种设计方案。前置条件如下。

  1. 客户使用招商银行信用卡交易,BIN为620000。
  2. 可用支付通道有两个:银联通道,支持BIN为620000~629998;招行直连通道,支持BIN为620001~629999。
  3. 招行直连通道费率为0.1%,银联通道费率为0.3%。
  4. 路由中仅有按成本路由。

方案一:BIN不涉及道通道方案

  1. 判断该卡是否支持时,按照设计会判断BIN是否支持,经过校验,BIN服务支持该BIN;
  2. 判断最优通道,因为招行直连通道费率( 0.1%)低于银联通道( 0.3%),在没有其他算法参与的情况下,招行直连通道是最优通道。

路由算出最优通道,用户按照招行通道需要提交卡信息,上送通道处理。

最后结果是什么呢?支付失败。银行返回错误码“卡号错误”或“BIN不支持/该卡暂不支持”。其原因在于620000的BIN段虽然是招商银行信用卡,但是直连通道并不支持此BIN段。BIN服务设计中只体现了该卡与 BIN的关系,并没有体现通道与BIN的关系,系统无法判断是否支持。

方案二:BIN涉及通道方案

  1. 判断该卡是否支持时,按照设计会判断BIN是否支持,经过校验,BIN服务支持该BIN,且支持的通道只有一个,为银联通道。
  2. 判断最优通道,因为只有一个通道可用,所以最优通道就是银联通道。

路由算出最优通道,用户按照招行通道需要提交卡信息,上送通道处理。最后结果是什么呢?支付成功。银行返回返回码“交易成功”。其原因在于BIN服务设计保证了每个通道与BIN号段对应,保证了可用性。

三、卡号校验算法

BIN是卡号的一部分。在用户输人卡号时,输入前6~9位我们可以通过BIN提前判断出对应银行及卡号是否有通道支持。那么在用户输入完卡号之前,我们能否先检验出这个卡号是否有效,或者在测试的时候有没有一定的规则能模拟出卡号来?

答案是有的,这个卡号规则就是需要符合Luhn算法,也称为“模10算法”,它是一个专门用于验证银行卡号有效性的算法。Luhn算法由美国IBM科学家Hans Peter Luhn于20世纪60年代发明,对所有大型卡公司发行的银行卡都起作用,无论是我国的银联还是国外的美国运通、Visa、Mastercard、JCB等卡组织,甚至护照、社会保险号都符合这个算法。需要说明的是,这个算法并不是为了加密,而是为了防止意外出错。

银行卡验证Luhn算法的规则如下:

  1. 从卡号最后一位数字开始,逆向将奇数位相加;
  2. 从卡号最后一位数字开始,逆向将偶数位数字先乘以2(如果乘积为两位数,则将其减去9),再求和;
  3. 将奇数位总和加上偶数位总和,结果应该可以被10整除。

博文参考

《支付方法论》

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

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

相关文章

ClickHouse--05--MergeTree 表引擎

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MergeTree 系列表引擎前言MergeTree 系列表引擎 --功能MergeTree 系列表引擎 --种类 1.MergeTree1.1MergeTree 建表语句:1.2 MergeTree 引擎表目录解析查…

Acwing二分和前缀和(一)

数的范围 原题链接:https://www.acwing.com/problem/content/791/ 整数二分步骤,找一个区间,使得答案一定在区间中。找一个判断条件,使得该判断条件具有二段性,并且答案一定是该二段性的分界点。分析终点在该判断条件下…

toString()、equals()、clone()用法

Java中所有类的对象都可以直接使用Object类中提供的一些方法 1. toString():返回对象的字符串表示形式,通常在类中重写,以便于返回的是对象的内容 2. equals():判断两个对象的地址是否相等,直接使用也一样,…

社区店选址地理位置评估:大数据分析的力量

大家好,我是一名有着 5 年开店经验的鲜奶吧创业者。在这 5 年的时间里,我深切地体会到了选址对于一家社区鲜奶吧的重要性。一个好的地理位置可以为你的店铺带来源源不断的客流,而一个糟糕的位置则可能让你的创业之路充满坎坷。 在这里&#…

Qt之条件变量QWaitCondition详解

QWaitCondition内部实现结构图: 相关系列文章 C之Pimpl惯用法 目录 1.简介 2.示例 2.1.全局配置 2.2.生产者Producer 2.3.消费者Consumer 2.4.测试例子 3.原理分析 3.1.辅助函数CreateEvent 3.2.辅助函数WaitForSingleObject 3.3.QWaitConditionEvent …

一个小例子,告诉你什么是衍生式设计

之前好多小伙伴想让我介绍介绍Dynamo与衍生式设计,奈何最近太忙了,实在没时间弄这些~趁着端午节,今天用一个小案例,先简单让大家对衍生式设计有个初步认识,之后有时间,我再多写几篇关于这方面的文章&#x…

Java使用opencsv完成对csv批量操作

文章目录 前言一、maven二、造数三、代码部分1.OpenCsvController2.OpenCsvUtil3.StudentInfo4.CodeToValue 三、效果展示1.download2.upload 总结 前言 csv文件是不同于excel文件的另一种文件,常常以,作为分隔符,本篇将通过JavaBean的形式完成对csv文件…

Linux_进程地址空间

我们用c语言写的程序,经过编译后形成可执行程序存放在硬盘。当运行该程序时,操作系统将该程序加载到内存中,创建进程控制块,变为进程,然后开始执行该程序。大家是否想过,操作系统是如何加载的呢&#xff1b…

25天物理探索旅程 - 第三天:相对论时空观的构建

第三天的课堂,我们将踏上一段穿越时空的奇幻旅程,探索那个由爱因斯坦用天才智慧构建起来的相对论世界。想象一下,你手握一把名为“狭义相对论”的神奇钥匙,准备开启一扇通往全新宇宙观的大门。 首先,我们来聊聊同时性…

【c语言】字符串常见函数 下

🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:c语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&a…

幻兽帕鲁Palworld服务器设置参数(汉化)

创建幻兽帕鲁服务器配置参数说明,Palworld服务器配置参数与解释,阿腾云atengyun.com分享: 自建幻兽帕鲁服务器教程: 阿里云教程 https://t.aliyun.com/U/bLynLC腾讯云教程 https://curl.qcloud.com/oRMoSucP 幻兽帕鲁服务器 幻…

如何使用idea连通服务器上的Redis(详细版本)

这里我使用的是阿里云的服务器 打开阿里云的安全组,设置端口为6379 在redis.conf文件中,注释bind 127.0.0.1 将protected-mode设置为no,即关闭保护模式 更改服务器中的防火墙,放行6379端口 # 放行端口 firewall-cmd --zo…

Nacos 的配置管理和配置热更新

一、配置管理的必要性 1. 存在问题 微服务重复配置过多维护成本高:将各个微服务的配置都写到配置管理服务中,单个微服务不去编写配置,而是到配置管理服务中读取配置,实现配置共享,便于修改和维护 业务配置经常变动&a…

【AI视野·今日CV 计算机视觉论文速览 第299期】Mon, 29 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 29 Jan 2024 Totally 55 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Annotated Hands for Generative Models Authors Yue Yang, Atith N Gandhi, Greg TurkGAN 和扩散模型等生成模型已经展示了…

C++:priority_queue模拟实现

C:priority_queue模拟实现 什么是priority_queue模拟实现向上调整算法向下调整算法插入与删除 仿函数 什么是priority_queue priority_queue称为优先级队列。优先级队列是一种特殊的队列,其中每个元素都有一个相关的优先级。元素的优先级决定了它们在队…

Python数学建模之回归分析

1.基本概念及应用场景 回归分析是一种预测性的建模技术,数学建模中常用回归分析技术寻找存在相关关系的变量间的数学表达式,并进行统计推断。例如,司机的鲁莽驾驶与交通事故的数量之间的关系就可以用回归分析研究。回归分析根据变量的…

论文阅读:GamutMLP A Lightweight MLP for Color Loss Recovery

这篇文章是关于色彩恢复的一项工作,发表在 CVPR2023,其中之一的作者是 Michael S. Brown,这个老师是加拿大 York 大学的,也是 ISP 领域的大牛,现在好像也在三星研究院担任兼职,这个老师做了很多这种类似的工…

系统架构25 - 软件架构设计(4)

软件架构复用 软件产品线定义分类原因复用对象及形式基本过程 软件产品线 软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕…

九、OpenCV自带colormap

项目功能实现&#xff1a;每隔1500ms轮流自动播放不同风格图像显示&#xff0c;按下Esc键退出 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 colormap.h #pragma once #include<opencv2/opencv.hpp> using namespace cv;class ColorMap { public:vo…

Mybatis开发辅助神器p6spy

Mybatis什么都好&#xff0c;就是不能打印完整的SQL语句&#xff0c;虽然可以根据数据来判断一二&#xff0c;但始终不能直观的看到实际语句。这对我们想用完整语句去数据库里执行&#xff0c;带来了不便。 怎么说呢不管用其他什么方式来实现完整语句&#xff0c;都始终不是Myb…