全球化安全生产 质量保障体系建设探索
作者:肖刚毅、张俊、李晶磊(全球化业务平台团队)
全球化电商中的业务、技术及架构和国内技术都有一定差异,从安全生产保障和质量保障角度,这些差异带来了更多的挑战,本文将为大家分享安全生产和质量保障相关的经验。
一、前言
作为有丰富国内电商技术沉淀的团队,在服务全球化电商业务中,一方面会自然传承国内电商技术体系去解决电商业务通用问题。另一方面,面对业务、技术、组织、文化、政策等维度差异,促使我们演进新的或更合适的技术体系。比如,国际电商业务发展的阶段特征、海外基础设施特征、国际业务区别国内业务的特征、用户和文化特征、以及更不可控的政策和合规等。在我们摸索多年形成的技术体系中,我们上一篇分享讲解了开发技术和架构相关经验,在本文中,我们想分享技术领域不可或缺的另一大块,安全生产和质量保障相关的经验。
分享技术经验以前,我们先把所服务的全球化电商这个对象,在一些关键维度稍作拆解,也是多年经验对全球化电商的一些关键特征的理解,而这些理解对我们的技术构建是至关重要的。
1.1 业务差异
在业务上,全球化电商主要有本对本和跨境两种最基本的类型。
东南亚电商品牌Lazada就是典型的海外本对本业务,主要实现在国外某国或地区,敏捷的构建一套支持本地买卖家交易的电商系统。这样的模式,决定了商家大部分在海外国本地,币种会相对单一,运营能力需要更加本地化等等。
跨境电商品牌AliExpress就是典型的跨境模式业务,主要实现中国商家能在中国货品优势下通过我们的系统将货物销售给跨境的买家,这里涉及的问题会大不相同。从语言、币种、时差、品类、活动、汇率差、物流、供应链等方面,我们需要有种种差异的技术解决差异的问题。电商业务,主要由电商系统、支付系统、物流系统组成,这三大系统的国际技术实现和国内技术实现都有一定差异。
1.2 技术架构差异
在技术和架构方面,也有显著区别:
-
基础架构差异:海外电商服务的对象大部分场景是跨国家的,同时海外的硬件设施和国内是有差异的。所以我们的系统要在考虑稳定的前提下,更低成本的实现数据同步、系统可复用、合规等等。这里我们的技术关键词是多单元部署、多机房部署、云原生。这些点对我们构建的质量体系的差异,十分关键。
-
应用架构差异:在电商技术领域,我们常常是通过不同的应用或微服务,构建出一套大的技术系统网,各个应用依据各自的领域拆分而来。区别国内电商的是,我们的应用或服务需要考虑站点,也就是国家站,甚至一个服务器同时通过多个域名服务多个国家站。除此之外,在应用架构上,敏捷中台如何支持好业务的问题中,我们设计了教堂&集市的应用架构,让应用的灵活度和研发生产关系实现了质的提升。同时,也对如何保障好系统质量和稳定性提高了要求。
-
研发过程差异:中台需要尽可能抽象和合并电商逻辑,但国家差异化的本质一定会推演出大量国别定制需求,也因此而形成更复杂的组织架构,无论是本对本的业务,还是跨级业务中的本地化运营。所以我们的系统会同时有更多的、更接近电商用户的工程师一起开发。我们需要实现更灵活的应用编排、代码并行编写、隔离发布、流量调度等能力。在更灵活、更大型的研发过程中,质量把控的难度自然上了一个阶梯。
-
运行态差异:考虑到QPS特征等,在运行态,从成本和效能的角度,我们实现了多租户并行和架构隔离。这也决定了我们系统在复杂度、可测性、问题排查、测试环境、自动化、数据构造等方面的工作会更加复杂。
-
数据同步差异:即便我们的系统在运行态可能是租户复用的,但在数据上,考虑隐私、安全、合规、性能、可扩展等,我们是按站点进行物理或逻辑隔离的。在跨境场景中,要实现中国的商品在全球可以快速访问,必然需要实现秒级的数据同步能力。这对系统的稳定性带来了难度,也提高了测试用例的复杂性。
这些差异,有的天然由业务属性决定。有的是我们从技术上解决业务或架构问题时带来的新问题。从安全生产保障和质量保障角度,这些差异给我们带来了更多挑战,也是技术创新的机会,这也正是整个全球化技术体系的内核。
二、安全生产体系
2.1 全球化高可用架构概述
系统可用性(Availability) 最早在Patrick O‘Connor的 Practical Reliability Engineering 一书被提出。
其中,MTTR 为 Mean Time To Repair,即系统故障后平均修复时间,表示系统可维护性。MTBF 为 Mean Time Between Failure,即平均非故障时间,表示系统可靠性。
因此,保障系统实现日常态高可用主要分为两个方向:提升MTBF,增加系统非故障时间,通过保持稳定性模式、系统冗余等手段,提升整体系统可靠性&容错性。以及,降低MTTR,缩短故障恢复所需时间,从事故、变更、监控运维等方便,增加系统可维护性。
除了上述两个日常态高可用建设方向,对于大型电商系统,大促时如何在洪峰冲击下保持服务高稳态,大促前又如何在相对短暂的备战阶段摸清系统瓶颈,掌握全局核心链路,也是高可用体系构建中不可忽视的一环。
因此,本文将分为三个领域对全球化高可用架构展开论述:
-
高可用体系建设
-
大促稳定性保障建设
-
应用高可用架构
2.2 高可用体系建设
目前业界通用衡量高可用的标准是1-5-10。1分钟发现,5分钟响应/定位,10分钟恢复。在过往的实践中,1-5-10的达成,非常依赖SRE团队,团队的业务熟悉程度、问题排查手段,实操的熟练程度。不过随着系统的复杂度越来越高,链路依赖关系越来越复杂,1-5-10对SRE团队的要求越来越高。
高可用故障跟业务故障是有一定的区别,高可用故障是有通用性的。围绕着故障,我们可以做有针对性的布防。接下来我们介绍的是在国际化板块,我们围绕着故障定义建设的一套高可用故障体系。
下面我们将从一个交易下单成功率下跌的故障来分析整个高可用体系处理的过程。先假设存在一个故障定义:下单成功率下跌 5%持续10分钟。
2.2.1 一分钟发现
在故障发现的场景,过往是等待下跌了5%持续10分钟才会发出故障通告。SRE团队开始介入问题的处理。
下单成功率下降了 1%、2%的时候,或者下跌了5%持续了5分钟的时候,大家是缺少感知的。我们希望将故障响应的时间提前。提前到系统指标发生异常的时候就开始介入。
我们在系统指标异常发现之后,在故障发生之前,加入了风险预警的机制(图1实线所示)。风险预警由GOC触发,触发后 SRE团队开始介入问题的处理。这样问题很有可能在故障发生时,完成风险的解除。
图1 风险预警流程与原故障应急流程对比
2.2.2 五分钟定位
当问题发现后,我们需要尽快的定位原因。高可用故障,分为两类:变更类与运行类。
这两类故障的定位,都需要知道几个信息:
-
故障关联的系统有哪些,及其依赖关系?
-
当前报错是哪个系统导致的,哪个是表象哪个是根因?
-
故障是否存在相关的变更:时间相关、范围相关?
图2 五分钟定位产品
在全球化业务中,针对核心应用,通过了一套统一的日志框架,进行应用信息的收集。收集的信息包括所有的RPC调用链路、核心的出参(错误码、是否成功)、中间件信息。通过该日志框架收集的日志信息,我们能够还原所有核心应用的链路拓扑信息,与其接口的成功率、错误码、RT等实时信息。
当风险预警发生时,可以得知两个核心的信息
-
入口应用
-
问题场景
通过入口应用与问题场景,及链路拓扑信息,我们能够定位到链路下游可能出问题的节点。
除了链路信息的收集,我们还做了变更信息的收集,包括发布变更、配置变更、运营操作变更。通过变更大脑中相关度的算法,计算出与当前故障场景最相关的变更。
通过上述的方式,对于高可用的发生,能做到90%以上的2分钟定位准确率。当定位后,接下来就要考虑如何恢复了。
2.2.3 十分钟恢复
在1-5-10三项中,10分钟恢复往往是最难的。
针对变更类故障,其中配置变更的回滚速度比较快,能够在10分钟内完成回滚。针对发布类的变更,由于涉及应用启动时间,10分钟恢复很难做到。针对发布过程中的情况,建立精细化切流的能力,能够切走有问题的机器的流量(已发布的机器)。但针对已经发布完的情况,还是基于应用完整的回滚。
2.3 大促稳定性保障建设
大促是每年投入人力最大的项目,光是大促稳定性保障,往往需要上千人日的投入。其中包括各种梳理的专项、多次全链路压测。另外机器资源也到了每年的峰值。在确保大促稳定的情况下,怎么降低人和硬件成本,成为了大促保障的主要命题。
2.3.1 保障大促稳定,打造大促确定性
在备战过程中,最关键的是压测。而压测又分为几个关键的步骤:流量评估、施压、压测复盘。
流量评估,我们将流量评估的过程和数据全部上翻到了系统,大促确认了关键指标后,将关键指标输入系统,将会得出各个核心链路的流量值,后续的保障我们会基于该流量值进行硬件资源的准备。各个业务域的开发同学只需要持续的维护关键指标与系统入口流量的计算公式即可。
在过往的压测中,时常会出现少压漏压而导致大促峰值出现异常流量的问题,这些异常流量还曾引起过P1的故障。为此,在施压过程中,我们通过关键系统流量、性能指标的收集,与上述的流量评估结果进行对比,发现流量不符合预期的链路。通过增加流量或者补压消除风险。另外通过链路的拓扑引擎,进行日常流量与施压流量的对比,发现可能漏压的链路。
通过这个方式,我们发现了多起的少压漏压的情况,确保了压测的真实性,保障了大促的稳定性。
2.3.2 降本提效
2.3.2.1 硬件成本
大促往往具有一个特点,周期短,流量大。在非压测、非大促峰值的情况,硬件资源并不需要那么多。因此,我们考虑从施压到链路,都具备自动扩缩容的能力,从而大大缩小我们使用的容器资源。
压测:在压测开始之前,进行施压机、业务容器的扩容。在压测结束后,对施压机、业务容器进行缩容。
大促日:大促周期进行扩容,非大促周期缩容。通过这个方式,我们能降低50%容器资源。
图3 自动化压测
2.3.2.2 人力时效
全球化大促备战,涉及多个国家、多个时区,我们为了每个大促备战的专项,基本都把备战内容进行了系统上翻。除了review的工作,大部分都能在系统上完成。这样大大的减少了大家协同、数据整合的工作。大促的负责人也能从系统上,了解到当前大促备战的进展与风险。结合着自动化压测、无人守值等自动化工具,大大的减少了人员的投入。
过往几次大促看,施压人员减少80%,大促保障项目组投入减少了30%人次。
图4 大促工作台
2.4 系统高可用架构
上述章节讲述了面向故障发生、大促备战的高可用的考虑。接下来主要是系统高可用架构。每个系统都具备高可用是整个业务高可用的基础。SRE团队做不到对每个系统十分了解,怎么做到所有的系统都具备相同的、较高的水准是我们要考虑的方向。
这里我们引入了一套高可用的度量体系。针对系统的可靠性、高吞吐、可监管、容错性进行了定量的评估。针对每项的分数,我们提供了建议的优化策略与方法。每个业务系统的同学,就可以有针对性的对系统进行优化。而SRE团队也有了一个运营的阵地。通过不断的完善度量体系,增添指标,可以不断的驱使系统负责人进行优化治理工作。
图5 高可用度量体系
这些指标的统计往往都是根据线上的数据进行事后的统计。每次的变更质量,还是需要技术质量团队保障。安全生产体系是构建在技术质量体系上的二次防护,安全生产是质量体系的右移,质量体系是安全生产的底座。要确保系统和业务的稳定,我们在质量保障体系上也做出同样的努力和探索。
三、质量保障体系
全球化电商系统的质量保障,首先要解决电商业务的质量问题,需要在不同的电商链路构建不同的质量体系,解决各个领域最关键的问题。同时,考虑到国际电商和国内电商的业务、技术差异,质量体系或实现手段,也会有差异。比如:
-
因为多站点而出现的站点应用,应用数相对更加膨胀,业务中台负责的内核代码需要在各个业务各个站点应用同时运行,如何高效测试和覆盖,如何能准确的度量覆盖率。
-
因为线上qps相对较低,测试环境/正式环境的比例会显著变高,测试成本大幅提升。同时多个业务因为并行运营会有更多的并行迭代,更加显著提高了所需测试环境数量,加剧了被测对象的测试资源耗费过高问题。如何构建一套测试环境体系可以在更高效支撑业务并行迭代的同时,让环境成本大幅降低。
通过多年技术迭代,历经全球电商系统的各项大型技术重构战役,在支持好业务和技术升级的同时,解决了许多难题,不断迭代着质量保障体系。我们构建了高效的自动化和持续集成能力、建设了更高效的测试环境技术和运营体系,把资损防控从单点变为可左移和可右移的长周期可覆盖体系,在实践中推行了标准研发流程及配套工具度量和运营能力。这些努力,在技术和效能提升上有明显体现,同时通过质量平台将各领域测试能力产品化,友好的服务其他业务团队。
3.1 自动化体系
自动化建设的挑战
全球部署&法律合规
在上一篇文章里面介绍国际化基础设施方面的挑战,自动化测试也面临着同样的挑战。由于被测对象的全球部署特点,再加上各国法律合规上数据不准出境、不准入境等规定的限制,测试用例与测试数据的展示、测试用例的运行与维护这些原本非常基本的诉求都面临着很大的挑战。
开源架构
国际化最新一代的架构实现了业务(集市层)和中台(教堂层)各自闭环、独立迭代,这就意味着需要能够独立测试,传统的接口测试只针对完整的应用进行测试,集市层和教堂层的独立测试需要自动化测试粒度更细,也要求自动化测试的重点从黑盒自动化转向灰盒自动化。
3.1.1 自动化实践
我们按照经典分层测试理论设计自动化体系,并将流量回放技术应用于分层测试中的多个环节中,包括单元测试生成、模块测试生成、接口测试、链路测试用例,并为其提供测试数据支撑。
图6 分层测试金字塔
3.1.1.1 单元测试
单元测试作为开发工程师保障质量的首选方法,但仍有几个问题需要解决。
-
存量的老应用缺乏单元测试基础,需要快速补齐;
-
复杂系统的测试数据构造难,需要配套工具;
-
系统重构会导致单元测试大批量失效,需要低成本的快速修复。
对于旧系统的存量代码,通过流量直接构建完整的单元测试用例,快速补齐存量代码的单元测试用例。
对于新增函数,我们通过静态分析快速生成单元测试用例的基本“骨架”,开发工程师补充测试数据后即可快速完成一个单元测试用例。
对于系统重构场景,通过静态分析、流量重采集方式批量重新生成单元测试用例,让单元测试成为可持续汰换资产,避免成为开发工程师的负担。
3.1.1.2 接口测试
国际化业务涉及到多租户、多站点的特性,用例维护管理的成本会随着业务的水平扩展而显著增加,因此需要更高效的进行用例收集、用例维护管理。
在用例收集上,采用了自动特征分析及去重的策略,在无人参与的情况下,就可以自动沉淀用例集,然后有人工输入专家经验,提升特征丰富度和用例覆盖率。
在用例管理上,弱化了传统相对复杂的用例集管理功能,使用系统托管的方式进行用例维护,并且用例运行时自动根据多租户、合规等条件进行调度,保证准确性同时降低人工介入成本。
在回放结果上,通过对错位、断言等聚合分析,有效减少失败分类数量,降低人工排查的成本,并在运行后提供代码覆盖率和业务覆盖率度量结果。
图8 接口测试原理示意图
3.1.1.3 模块测试
对于开发工程师来说,除单元测试外,对于单一业务场景的小范围集成测试有很强的诉求。因此,我们提出了一种新的测试方法——模块测试。模块测试的测试粒度介于单元测试和接口测试之间,主要对逻辑相对比较内聚的模块进行测试。
图9 模块测试与单元测试、接口测试的测试范围比较
模块测试的思想是将用例直接运行在应用中,可以在测试用例运行的过程中访问到应用中的资源、实例,更加简单、真实,但是测试用例仍就为一个JUnit用例,与单元测试一致。
整个方案利用JavaAgent技术,实现了测试用例与被测应用实时通信,保证了测试用例修改即时生效,实现了即改即测。
表1 模块测试与单元测试、接口测试的特点对比
模块测试不仅解决开发工程师小范围集成测试的问题,同时也能够满足国际化开源架构下对于集市层、教堂层独立测试诉求。
3.1.1.4 研发辅助
在分层测试之外,为了提升研发自测效率和将质量保证前置,我们为开发工程师提供了自测辅助工具,包括提测前的本地接口测试能力和本地独立联调能力。
接口自测
接口自测一般在单元测试和模块功能测试完成之后进行,策略是复用接口测试能力,在IDE中为研发提供一套完整的自测流程和相关功能,并与当前代码分支(变更)绑定,使开发工程师在其编码环境中即可快速完成测试。
图10 接口自测流程
本地联调
联调是研发自测最后一个环节,也是上下游高度耦合、相互依赖和效率较低的环节。为了提高联调效率,我们实现了一套本地自测联调的方案。其思想是参与联调的上下游共用同一条链路用例,并按照接口约定为其依赖方修改对应的数据,使得所有参与联调的开发工程师仅依靠链路用例即可完成联调,实现彻底解耦。
图11 本地联调原理
3.1.2 度量体系
3.1.2.1 代码覆盖率
代码覆盖率是测试度量的有效手段之一,但是全量代码覆盖率往往基数庞大,不利于精细化管理。在日常迭代过程中,增量代码覆盖率更加直观,可以对每次代码变更做精细化的覆盖率管理,持续提升代码覆盖率。
图12 增量代码覆盖率原理
3.1.2.2 影响面分析
在度量体系中,度量风险也是重要一环,影响面分析可以帮助研发工程师更加准确的评估每个函数改动对全局的影响。通过对生产环境采集流量中的函数调用关系进行建模,形成一张包含全部函数间关系的“图”,通过这张“图”可以分析出每个函数上游的调用方,即受影响的函数。
影响面分析不仅可以评估函数变更对分布式系统的影响,在国际化的开源架构体系中,还可以帮助教堂层的开发工程师准确评估教堂层变更对集市层的影响。
图13 影响面分析原理示意图
3.1.3 自动化用例持续集成
3.1.3.1 什么是自动化用例持续集成?
区别传统的持续集成是面向被测对象的概念,自动化用例持续集成是为解决自动化用例腐化问题而进行的创新。以主干预发部署单元为最小回放单位进行持续回放,降低了运行噪音和精细了用例运行态粒度,并提供更友好的量化能力,包括用例通过率,接口覆盖率,代码覆盖率,业务覆盖率等,帮助用例持续迭代。
3.1.3.2 方案&实现
为了提高通用和可扩展能力,我们通过产品功能实现用例的生产、消费、防腐,替代人工维护。持续集成平台支持应用接入、用例集合管理、定时执行配置。
图14 自动化持续集成
持续集成平台主要分为4个模块:
-
用例管理:支持集团内多种自动化用例平台
-
精准回放:定义用例源,提高用例的管理精度
-
用例防腐:通过规则可配置、环境管控、实时告警,实现用例及时防腐
-
结果度量:提供多维度的覆盖率报告,更有效便捷的帮助用例迭代
3.1.3.3 效果
可以便捷清晰的观测到核心被测对象最近20天的用例运行结果、各类覆盖率,也会给出其他优化建议。
图15 持续集成效果
3.2 测试环境
3.2.1 测试环境问题
-
测试效率问题:测试环境的稳定性,会严重影响上下游测试效率;
-
测试环境资源问题:需求高峰期并发,涉及测试环境抢占;需求低峰期,多余测试环境被闲置;
-
测试环境隔离问题:子域内需求需要相互隔离;子域之间快速支撑联调;
-
测试环境使用成本:测试环境答疑成本,以及构建成本;
3.2.2 测试环境难点
-
测试环境隔离支持同步接口/HTTP服务和异步消息隔离;
-
测试环境资源根据需求情况,弹性占用,同时也要控制预发环境膨胀的问题;
-
测试环境问题答疑:往往业务问题、系统问题都会被上报为环境问题,导致排查耗时,如何快速定位问题?
3.2.3 测试环境方案
3.2.3.1 测试环境管控方案
方案:主干、项目预发建设;环境防腐与管控;环境问题排查工具建设
-
线下环境:针对DB、Tair以及资金相关的变更进行管控,其他需求不在管控范围内;
-
预发环境:引入项目预发环境支持日常需求变更,项目预发环境无管控,即用即建,变更发布或者关闭之后释放资源。项目预发环境用环境标签隔离,对其他应用的依赖,且不在变更列表中,路由主干预发环境。
-
发布阶段:发布阶段包含两类情况,一是测试完成之后,生产部署,在预发主干环境部署之后,进行功能回归验证。二是业务UAT验收,主干预发环境基于UAT变更进行部署;主干预发:增加功能回归和测试用例门禁(主干预发是指和生产环境代码版本一一致的环境,用于提供稳定的上下游依赖环境)
图16 一个变更在测试环境中的扭转
3.2.3.2 项目预发环境隔离方案
-
流量转发流程:
1)用户HTTP请求进入接入层,集团网络层将流量路由到主干预发环境;
2)主干预发环境将流量标组装项目预发环境的流量路由标识;
3)通过流量调度服务返回目标项目预发环境,由主干预发环境转发到目标项目预发环境。
-
流量隔离方案:
1)子域项目隔离:通过流量环境标进行隔离,需求之间互不影响,包含消息、接口服务;
2)多域联调需求:项目预发环境一键加入联调,将涉及变更的应用归属于一个预发联调环境中,相同隔离标识的应用相互调用,支持联调测试。
图17 项目预发环境隔离
3.2.3.3 环境防腐&问题排查
目的:对预发、项目预发、线下主干环境采取监控等手段,保障环境可用,发现环境腐化现象并治理。
策略:通过服务可用性及业务正确性监测,主动发现环境异常。
图18 环境稳定性
目前已累计产出治理项如“hsf服务异常”和“业务健康度不达标”若干,监测衡量环境是否腐化。
上文所说,目前业务中台流量隔离方案采取集团通用流量隔离方案,该隔离方案存在如下好处:
-
保障不同需求同一时间提测不互相干扰;
-
开发自测修复bug和测试环境之间的隔离,保障高效率的开发和测试。
但是使用过程中可能会遇到以下问题:
-
隔离环境服务异常,导致流量路由至主干预发;
-
云上云下没有对等部署,用户流量被路由到主干预发。
隔离失败带来的危害包括测试分支错误等导致的漏测,因此测试过程中需确认环境隔离生效正确。对于长链路应用来说,排查较麻烦。基于此,我们也提供了链路排查工具,可根据请求ID查询并分析经过的所有应用环境与机器信息,帮助业务测试同学能快速的排查出环境问题,在实战中效果很好。
3.3 质量工具平台
3.3.1 问题
为了降低重复工作量和提升测试专家经验的可传承度,很多测试团队都会建设效能工具门户,比如数据构造工具、度量工具等。但工具建设更深层次的问题是如何持续运营,如何持续正确迭代。
-
业务庞大团队历史悠久,导致工具分散,前后端链路复杂,也没有统一品牌心智。
-
工具之间没有整体规划,有工具能力缺失和重叠,重复轮子泛滥。
-
各领域新增测试工具开发&维护有成本,对新手不友好。
-
在devops研发体系、云原生等架构升级中,质量工具难以整合同步升级。
-
工具效果没有统一度量指标,难以运营迭代。
3.3.2 架构和设计
图19 质量工具平台设计
图20 质量工具平台方案
3.3.3 效果
-
统一了多个分散的领域测试工具的产品和技术架构,提高可持续运营能力;
-
对外提供10+种平台测试能力,并且进行了2.0升级,包括自动化、环境、资金安全、测试账号、开放工具等;
-
平台服务超过8个不同业务部门,日均UV>100,日均PV>1000。
3.3.4 质量平台孵化的一个案例:特征识别&业务度量
质量平台的升级不但实现了对提升已有工具能力的目标,借助对各产品关系的厘清、对新问题的重新定义,也促成了不少新的工具产生。其中借助标签系统升级而实现的业务度量工具就是一个典例。对资深的测试而言,测试用例覆盖全不全是一定会面对的难题,区别代码覆盖率,我们打磨业务度量工具的目标是从更客观真实的视角去度量用力的有效覆盖度。
业务痛点
用例多:国际化电商各应用自动化主要基于流量采集沉淀用例,单应用的用例从几千~几十万不等。
-
场景多:消费者链路业务场景复杂,场景梳理困难,各域的场景梳理方式各不相同。
-
存量场景覆盖不足:用例虽多,但场景覆盖率不足,以交易为例只能覆盖到主干链路,一些特殊场景易遗漏。
-
场景覆盖更新不及时:新增功能新增场景,用例更新不及时,往往会遗漏对应场景的覆盖。
-
无法度量:项目交付时无覆盖率计算口径,难以评估覆盖结果,发布标准只能依赖人的经验
设计思路
图21 测试用例特征识别与业务度量方案
对线上流量的更全面采集,通过算法分析以及少量的人工参与,实现对单应用业务标签可自动化获取,提高获取的准确度和降低标签维护成本。通过流量染色和其他数据分析能力,对标签链关系进行分析和在线管理,实现全量业务场景可分析。当然,这个过程需要多次的迭代,降低部分特殊参数的噪音,以及被测对象在不断迭代的同时需要对已经产出的全量业务场景同步维护。目前我们已经在部分核心应用落地,有效的补充了大量未覆盖测试用例。
3.4 资损防控
资金安全故障是指因技术原因(包括编码缺陷、变更执行、系统设计类漏洞、安全漏洞等)导致的线上产生资金损失的故障。根据产生资损的对象将资损场景分为以下两类
-
平台多出:买家、卖家、平台、供应商、合作伙伴等蒙受直接资金损失,或未获得相应的优惠折扣(例如红包、购物津贴无法使用等),且最终均需由平台赔偿或平台多出流量/权益/钱等。
-
平台少收:平台佣金、运费等应收款少收或收入减少。
国际电商技术服务多个业务和国家站,部署架构、运营模式都给资损防控加大了难度,如多单元部署架构下的数据同步延迟风险、跨境模式下多币种计算涉及复杂的汇率转换、财税合规问题、多时区、多语言等。我们主要通过持续在资损场景分析、监控降噪、智能监控规则三个方面投入,确保整体资损风险可控。
3.4.1 资损场景分析
-
业务拆分:对有资损风险的业务模块,比如交易下单、库存扣减、营销冻结等,针对业务模块的特性,开展接近白盒测试的内部一致性梳理和对账核对补充。一般会涉及业务梳理、技术风险梳理、强弱依赖梳理等。
-
与上游一致性:对调到本应用的请求,或者本应用需要消费的消息,做一致性核对。
-
与下游一致性:对本应用调到的应用,或者本应用发出消息的消费方,做一致性核对。
3.4.2 资损监控降噪
如果监控有大量噪音,那么监控本身就是无效的。特别在资损监控领域,如果不加治理,告警量往往在10W/天的级别。目前我们已经将电商中台、LAZADA、AE等所有站点的监控核对规则统一收拢到资金安全大盘,对已有的大量对账脚本进行逻辑持续防腐和脚本告警的持续防腐。
图22 资金安全监控大盘
3.4.3 智能监控规则
目前主流的资损监控工具都需要人工参与脚本的编写和调试工作,在站点和业务扩展很常态的国际电商中,边际成本很高,因此需要一种低成本且完善的资金安全核对脚本生成方式来降低技术投入成本。我们基于流量的字段级别进行算法分析关联度,自动化生成资金安全规则。
产品架构图:
图23 资金安全监控规则生成
其中,算法模块使用流量解析模块生成的数据集进行算法的分析,包括数据处理、字段关系分析、条件关系分析、结果处理,整体流程图如下:
图24 字段相关性判断
通过以上分析和数据聚合,算法模块的产出物为字段间关系 + 可靠度,供监控规则生成模块自动或者手动生成监控项。
3.5 研发过程SOP
3.5.1 研发过程中已有的痛点
根据调研,在没有SOP前,研发过程的痛点很多,其中Top痛点如下:
-
需求评审/技术评审/提测都是线下操作,线上数据缺失;
-
预发环境不稳定,研发环境和测试环境互相干扰;
-
CR时机过晚,未发挥出CR最佳的效果;
-
单元测试和持续集成测试覆盖不足,未发挥完整作用;
-
业务覆盖率难衡量,无卡点约束。
3.5.2 逐步建设研发过程SOP
构建整个研发SOP的推导过程如下:
1)观察:现有研发流程不规范影响了研发效能和研发质量。
2)调研:通过调研不同的干系人(PD、开发、测试等),获取不同视角的诉求或痛点。
3)筛选:筛选出TOP-N亟待解决的诉求或痛点。
4)分析:分析这些节点的现状,推导出解决方案。
5)落地:分析哪些痛点是可以复用或定制现有工具就可以解决,不需要重复造轮子,哪些痛点是需要开发新产品来支持的。
6)度量:SOP度量采用的是差异化运营方式,基础度量指标可以直接复用现有研发效能产品来分析和下钻数据,新增指标需要单独维护一套可视化报表来差异化运营。
7)生长:通过分析数据或干系人反馈会生成新的Top-N的痛点,进而形成持续迭代泛化的研发流程SOP体系。
图25 研发流程SOP
研发流程SOP体系终态结果如下:
SOP覆盖了整个研发过程,采用“筛选关键节点+线下会议对焦+线上流程管控”的方式来规范研发过程,对在此过程中获取到的关键节点数据统计、分析和下钻,定位出研发流程中瓶颈问题,进而提升工程质量和研发效能。
图26 研发流程SOP管控
3.5.3 SOP数字化运营
研发SOP目标是将研发流程数字化产品化,提高研发交付过程顺畅度,规范研发流程,提升工程质量。
SOP实施路径主要将部门内的商家和交易两个团队作为试点,根据不同团队的习惯和研发流程现状采用不同的策略因地制宜地实施:
1)交易团队采用绑定技术架构升级项目的方式,推进研发效率升级,落地关键数据获取。
2)商家团队采用绑定卓越工程项目及OKR,分应用地推进SOP的落地和效能提升,重点关注过程增量指标。
获得关键指标数据后便可以用来做SOP的深度运营,SOP度量采用的是差异化运营方式,即基础度量指标直接复用现有集团研发效能产品的数据可度量方式,新增指标需要重新维护一套定制化度量报表,收集并分析研发流程关键节点信息 ( 需求评审、技术评审、创建变更、部署、提测、发布 ),助力研发效能治理。
图27 研发过程SOP运营目标
图28 研发过程SOP数字化运营结果
3.6 全球化中台质量保障体系
以上各领域的质量建设,汇为质量体系,即质量工作开展侧重点和关键路径。这是构建在质量基础设施的、可度量的、和业务关键指标绑定的体系,通过SOP建设和运营,贯穿和落地在全球化电商中台质量保障过程中。我们也通过质量月报持续的运营各维度质量数据,对体系迭代升级。
四、未来展望
跨境电商、海外电商、全球化电商,是近年互联网的热点,越来越多的公司开始构建各个维度的跨境电商技术能力或产品。在国际形式、政策不可预测的大背景中,我们面对的机会和挑战也很不确定。但从技术的角度看,被测对象、稳定性保障对象,一定有确定性。我们需要用经验和功底去摸索积累,支持好全球化电商技术的演进。未来我们会在安全生产高可用治理、质量保障的可度量可托管、自动化测试更接近智能化等方面继续探索,更高效、清晰、低成本的支持好全球化技术和产品快速迭代,能灵活的应对更多的变化。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4925952.html
如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!
5G移动通信系统设计与标准详解-学习笔记
第五章 系统初始接入与移动性管理设计 本章实际讲了小区搜索,初始接入,以及移动性管理设计三个过程。其中移动性管理指的是终端移动(切换小区)的过程。 小区搜索是基于SSB突发集来实现的,UE可以进行下行时间同步以…...

Jenkins的安装和使用
环境:Windows 一、jenkins的安装 下载Jenkins,地址https://jenkins.io/download/,仅下载war包 下载好的jenkins.msi双击安装,安装好后,会自动打开浏览器,地址:localhost:8080按照提示的路径,输…...

QT 篇 QT上位机串口编程
QT 篇 QT上位机串口编程 最近因为项目需要,需要用到上位机,通过串口与上位机进行通讯,来上传和下发一些数据以及控制指令,所以用QT写了一个上位机,并记录下来,免得到时候要用又到处翻资料。 QT版本&#…...

Python语法都会,一写程序就懵,有解么?
以下内容全部来源,78 技术人-Python 事业部 文章目录社群技术问题与【技术人生】问题1. 在 pycharm 中导入模块,出现红色“异常”下划线,但是函数可以运行2. 我 Python 语法都会了,但是一写程序就懵了3. 做网站,是不是…...

python3 django mysql5.5_Django+MySql+python3+uwsgi+nginx部署阿里云ECS
梦想就像是你走夜路的时候前面有个灯,你知道往哪里走这样也很幸福......取消关注rootiZuf68gwfieb0xtgl7suihZ:/opt/myblog/bin# 部署工具:Xshell5xftpNavicat for MySql阿里云ECS 操作系统ubuntu16.04,python3自己的Django框架代码1)使用 xshell 连接阿里云ECS服务…...

ajax报错 illegal invocation,参数处理报错
问题描述 ajax抛出illegal invocation不合法调用时,多为无法解析参数(ajax请求data{}里的参数),即传入参数不合法。 解决方法:此时需要调试查看所有的参数是否合法。 不能以为只改了入参1,所以一直关注入参1,实际在改…...

Image-embodied Knowledge Representation Learning
摘要 实体图像可以为知识表示学习提供重要的视觉信息。大多数传统方法仅仅从结构化的三元组中学习知识表示,忽略了从实体图像中提取的丰富的视觉信息。在本文中,我们提出了一种新的基于图像的知识表示学习模型(IKRL),该模型同时使用三重事实…...

一文搞清商旅酒店数据治理——酒店数据问题分析及治理方案
问题背景 对于商旅用户而言,通过商旅系统进行酒店预订时,都希望酒店预订体验良好。并且商旅用户通过预订页面进行酒店预订时希望所见即所得(也就是说,所看见的酒店相关信息就是用户最终预订的结果),包括能…...

算法题:42. 接雨水(困难)一次AC 1ms(题目+思路+代码+注释)
题目 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,…...

6-arm-PEG-amine,6-arm-PEG-NH2,六臂-聚乙二醇-氨基聚乙二醇衍生物
一:产品描述 1、名称 英文:6-arm-PEG-NH2,6-arm-PEG-amine 中文:六臂-聚乙二醇-氨基 2、CAS编号:N/A 3、所属分类:Amine PEG Multi-arm PEGs 4、分子量:1000、2000、3400、5000、20000、1…...
手机选购:看懂这几个参数,买手机肯定不会买亏!
来源:中国移动,ID:cmccguanfang智能手机应用在我们生活的方方面面选择购买一部称心如意的手机非常重要一部手机性能好不好、使用寿命长不长该怎么衡量呢?贴心小编已经为伙伴们整理好了No.1 CPU手机CPU在日常生活中很容易被伙伴们忽…...

手机怎么打开f12_手机App调试(Android)
方法一: 用Chrome手机来调试。1) 在PC上安装谷歌的USB驱动:http://developer.android.com/sdk/win-usb.html#top2) 在手机上打开Developer开关3) 在手机上运行app (用IONIC或PhoneGap跨平台方案开发的。 需要是开发版, 不能是release版)( 确…...

js中的循环语句
循环语句 循环的作用 循环目的 在实际问题中,有许多具有规律性的重复操作,因此在程序中要完成这类操作就需要重复执行某些语句 js中的循环方法: 1.while 2.do…while 3.for 它们的相同之处,都能够实现循环。 不同的地方ÿ…...

美图android手机刷机教程,美图手机如何刷机
美图手机如何刷机使用美图手机m4的妹子和汉子注意了,如果你碰到手机系统崩溃、无法开机等系统问题,使用今天绿茶介绍的.美图手机m4刷机教程能够完美解决你的问题,在教程开始前请仔细阅读美图手机m4刷机准备工作,为刷机做好前提工作…...

inFace发布618战报:蝉联造型梳TOP1,销售额相比去年双11增长906%
今天,美护工具品牌inFace正式发布618战报: 从6月1日起截止20日,inFace蝉联天猫618离子梳/电动梳/造型梳类目品牌成交榜榜首。 同时,今年618前10分钟销售额突破去年双11全天,618总销售额相比去年618增长906%,inFace直卷发梳成为离子梳/电动梳/造型梳类目单品第一名。 直卷发梳…...
MySQL——事务(Transaction)详解
该博客详解MySQL中的事务 一、事务定义 Transaction事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元)一个完整的业务需要批量的DML(insert、update、delete)语句共同…...

Java:异常分类
异常:程序不正常的行为或者状态。 如: int a5/0; 数组越界访问 读取文件,结果该文件不存在 异常处理: 程序返回到安全状态。 允许用户保存结果,并以适当方式关闭程序 Throwable:所有错误的祖先…...

JavaScript循环打印案例
JavaScript循环打印案例 一、打印5行5列 * 运行代码 var str ;for (var i 1; i < 5; i) {//外部控制换行for (var j 1; j < 5; j) {//内部负责控制打印str str *;}// 内部执行结束换行str str \n;}console.log(str);//输出打印结果运行结果 二、打印n行m列的 *…...

html鼠标悬停改变背景,为HTML元素实现鼠标悬停背景颜色更改的最简单方法是什么?...
a.button {background-color: orange;margin: .2cm;padding: .2cm;color: black;font-family: sans-serif;text-decoration: none;font-weight: bold;border: solid #000000;}a.buttonMouseover {background-color: darkGoldenRod;margin: .2cm;padding: .2cm;color: black;fo...

clickhouse使用clickhouse-keeper代替zookeeper
目录 异常现象: 1. clickhouse的异常日志 2. 追踪对应节点的zookeeper日志 使用clickhouse-keeper代替 zookeeper的步骤: 1: 准备 clickhouse-keeper的配置文件 1.1- 设置通信地址,以便对外通信 1.2- 在config.xml中…...

无人机控制算法验证与数据集收集
随着我国低空空域开放步伐的加快以及传感器、自动控制、计算机等技术领域的发展,近几年微小型无人机得到了快速的发展。旋翼无人机作为无人机家族中的重要成员,由于其具有空中悬停、垂直起降、贴地飞行等独特的飞行特性,更是成为国内外大学和…...

黑马头条项目 10.1Elasticsearch简介与原理
You know, for search! 文档 Elasticsearch: 权威指南 | Elastic 1 简介 Elasticsearch是一个基于Lucene库的搜索引擎。 它提供了一个分布式、支持多用户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。所有其他语言可以使用 RESTful API 通过端口 9200 和 Elasticsea…...

用3dmax测试软件会烧掉硬件吗,以3ds Max软件为例 3D渲染和三维建模是CPU重要还是显卡重要?...
以3ds Max的图形制作用电脑为例,其作用包括三个阶段:第一阶段是建立模型,第二阶段是光源材质,第三阶段是渲染。这三个阶段对工作站的子系统的要求侧重点各不相同,在3ds Max里面,对硬件的要求也主要集中在这…...

C++多态的一些记录
文章目录俩概念例子多态要满足如何实现纯虚函数和抽象类几个黑马的例子虚析构和纯虚析构俩概念 首先记住俩概念,地址的早绑定和晚绑定 静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址 (我的理解&a…...

node.js小结
什么是node.js -node.js是一个基于Chrome v8引擎的javascript 运行环境。Node.js使用了一个事件驱动、非阻塞式 I/O的模型,使其轻量又高效。(由c++语言编写的)Node.js的包管理器npm,成为世界上最大的开放源…...

张经理的员工 (西工大校赛A题)
链接:https://ac.nowcoder.com/acm/contest/5403/A 张经理的公司的办公室长达100000米,从最左端开始每间隔1米都有一个工位(从第1米开始有工位),位于第i米的工位称为i号工位,且这些工位都在一条水平线上。…...

C语言:for循环下的金字塔
今天以牛客上的一道例题来讲解一下金字塔。 如图中所示,金字塔的雏形为 11 11 1 11 1 1 1 1 1 1 1 1 仔细分析该金字塔,观察塔中每一行的空格数和字符数 我们不难发现: 第一行有四个空格,一个数字, 第二行有三个空…...

5年市场规模翻5倍的网络解决方案,都解决了什么问题?
前段时间 Gartner发布了一则报道 到2024年SASE市场规模 从2019年的19亿美元 攀升至110亿美元 并且还预测 到2024年 至少有40%的大公司 将采用SASE的战略 图片来源:Gartner 【小科普】SASE ,全称是Secure Access Service Edge(安全访问…...

git提交代码添加作者信息
git提交代码时,如果没有设置作者信息,提交记录可能看不出来时谁提交的,如下: 修改方式如下: 这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新…...

邓迪大学信息无障碍典型文献技术剖析
文章来源:北京联合大学信息无障碍辅助技术学科 邓迪大学 信息无障碍典型文献 相关人物 涉及的计算机技术 邓迪大学计算机系 研究团队:人机交互中的辅助计算 成员:David Flatla Rolf Black Rachel Menzies John Arnott Alan Newe…...

Python将两个图像合并成一个图像(横向合并)
Python将两个图像合并成一个图像(横向合并) 目录 Python将两个图像合并成一个图像(横向合并) #原始图像...

In-Depth Introduction of BiDi SFP Modules
Ordinary SFP transceivers use fiber optic cables with two strands of fibers (duplex fiber optic cable) to transmit and receive data respectively. However, the BiDi SFP works differently. It doesnt require a cable to send data and a separate one to receive...

事物
事物 1.脏读 a事物中修改了name数据,为提交。 b事物读取了name数据。 a事物回滚。 b事物读取的name数据为错误数据。 2.不可重复读 a事物第一次读取name。 b事物修改/删除了name。 a事物再次读取name。 a事物前后两次读取的name不一样。 3.幻读 a事物第…...

全同态加密:BFV
参考文献: O. Regev. On lattices, learning with errors, random linear codes, and cryptography. In H. N. Gabow and R. Fagin, editors, STOC, pages 84–93. ACM, 2005. Full version in J. ACM 56(6), 2009.V. Lyubashevsky, C. Peikert, and O. Regev. On …...

可能是最漂亮的Spring事务管理详解
Java面试通关手册(Java学习指南):github.com/Snailclimb/… 微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. …...

js:运用JavaScript循环制作一个简易ATM机
需求:1.里面现存100元 2.如果存钱就输入钱数加上先存的钱数,之后弹出余额提示框。 3.如果取钱,就减去取的钱数,之后弹出余额提示框。 4.如果显示余额,就输出余额。 5.如果退出,就弹出信息提示框。 效果如下…...

Windows 11数据备份软件怎么选?
Windows 11 有数据备份软件吗? 备份和还原(Windows 7)以及 Windows 10 中的文件历史记录也保留在 Windows 11 中。因此你可以使用它来备份你的用户文件。但是,仅限于此。备份和还原 (Windows 7) 允许你在 Windows 11 中选择其他文…...

利用基站定位手机
利用基站定位手机 在手机拨号键盘处输入以下各机型对应的命令,点拨号,然后选择 “手机信息”,能查看手机的如基站CELLID,LAC等GSM信息。通过基站的CELLID,附近CELLID、LAC、信号强度等信息反查推算就能精确到十几米级地…...
js循环语句练习题
1.for 2.while 3.do while 99乘法表三种实现方式: <script> // 方式一:for循环//创建外层循环、用来控制乘法表的高度for(var i 1;i< 9;i){//创建内层循环、来控制图形的宽度for (var j1;j<i;j){document.write(j"*"i"…...

LeetCode23: 合并K个升序链表
合并K个升序链表 问题描述:给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。 合并k个有序链表,与合并两个有序列表类似,但是难点在于如何快速得到k个链表中的最小节…...

JavaScript诞生二十年,作者Brendan Eich自述10天内开发出JS语言
JavaScript 作者 Brendan Eich 制作了一个幻灯片,回顾了他在 1995 年 5 月的 10 天内开发出 JS 语言,描绘了 JS 在当前的演化。 Brendan Eich 称,JS 是 Java 的小兄弟,Java 的字节码设计影响了他在 JS 上的工作。Java 是一种静态类…...

136.只出现一次的数字Java
136.只出现一次的数字Java 题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素 输入输出样式 示例1: 输入: [2,2,1] 输出: 1 示例2: 输入: [4,1,2,1,2] 输出: 4…...

计算机领域,客观事物的属性,客观事物
[k guān sh w]客观事物语音编辑锁定讨论上传视频客观事物是真实的——真实就是不变的、普遍的——柏拉图:感观事物是变化与具体的,它是不真实的,它们的不变性、普遍性来自理念——亚里士多德:知识的体系,我们从哪些方…...
手机版h5城市选择
1. 效果图 2. 下载地址 链接: http://download.csdn.net/download/yuzhiqiang_1/10026485...

JavaSE_02:数据类型转换、运算符
JavaSE_02:数据类型转换、运算符一、数据类型转换(Conversion)基本数据类型之间的转换二、常量(Constant)、变量(Variable)常量 (Constant)变量(Variable&…...

148. 排序链表_再次刷
文章目录题目描述做题思路代码实现题目链接题目描述 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。 示例 1: 输入:head [4,2,1,3] 输出:[1,2,3,4] 示例 2: 输入:head [-1,5,3,4,0] 输…...

135 最大子序和(单调队列优化)
1. 问题描述: 输入一个长度为 n 的整数序列,从中找出一段长度不超过 m 的连续子序列,使得子序列中所有数的和最大。注意: 子序列的长度至少是 1。 输入格式 第一行输入两个整数 n,m。第二行输入 n 个数,代表长度为 …...

什么是Portal认证
一、什么是Portal认证 根据国家有关上网规定,上网前必须进行身份认证。考虑到移动终端的复杂性,在终端上安装认证客户端进行身份认证是不现实的。几乎所有智能终端都配备了Web浏览器。最好通过网页进行身份验证。 Portal认证(也称为Web认证&…...

【LeetCode】链表问题
...

js循环加载图片,鼠标移入切换
js循环加载图片,鼠标移入切换 循环载入图片 HTML <div id"box"><ul><li class"item"><img src"img/img1.webp" /></li><li class"item"><img src"img/img2.webp" />…...

Docker-compose 八步部署Django + Uwsgi + Nginx + MySQL + Redis升级篇
Django在生产环境的部署还是比较复杂的, 令很多新手望而生畏, 幸运的是使用Docker容器化技术可以大大简化我们Django在生产环境的部署并提升我们应用的可移植性。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#x…...

JavaScript 实现 -- 插入排序及优化
什么是插入排序 先看一下百度百科的定义: 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 [1] 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从…...

数据分析-常用分析方法-(1)描述性分析-用Excel实现
由于我目前还没有熟练掌握SPSS,Python等高级一点的工具,而且描述性分析过于简单,所以本文将介绍如何用Excel实现描述性分析。 一、描述性分析基本概念 描述分析(描述性统计分析)就是用来概括、描述数据的整体状况以及…...
MySQL数据库---事物(Transaction)
MySQL数据库—事物(Transaction) 事物是一组SQL语句,要么全部执行成功,要么全部执行失败。通常一个事物对应一个完整的业务(比如银行账户转账业务,该业务就是一个最小的工作单元)。 事物的操作: …...

LaoCat带你认识容器与镜像(实践篇一下)
实践篇主要以各容器的挂载和附加命令为主。 本章内容 本文实操全部基于Ubuntu 20.04 宿主机 > linux服务器本身 Docker > 20.10.22 从该章开始,我们就进入了Docker实践篇系列了,主要介绍Docker相关附加命令,与实际日常生产部署注意点…...

Arduino实现基本环境监测(1:实现传感器数值反馈)
前面几篇文章分别测试了火焰传感器、烟雾传感器(MQ-2)和温湿度传感器,对这几类传感器的使用方法和输出规律有了基本认识。这三类传感器监测的都是环境中的一些数据,包括可燃气体、火焰、温度及湿度,本文及后续相关文章…...

JS循环遍历中使用异步
参考:https://blog.csdn.net/qq_45265059/article/details/119892746 JS循环遍历中使用异步 对于同步顺序执行异步操作,并且每次异步操作都需要随着循环顺序执行 对于forEach来说 forEach 方法是同步的,也就是 forEach 的回调函数都是同步…...

华为手机如何连接到电脑
第一种方式: 知识点分析: Huawei Share是华为手机上的一项技术,支持此功能的手机可以通过此功能把手机上的内容共享至电脑。 操作步骤:测试环境:荣耀Note10(系统版本:9.0.0.192);ThinkPad T590笔…...

我对计算机感兴趣作文500字,我的兴趣爱好作文500字10篇
我的兴趣爱好作文500字10篇萝卜白菜,各有所爱。任何一种兴趣都包含着天性中有倾向性的呼声,也许还包含着一种处在原始状态中的天才的闪光。下面给大家分享我的兴趣爱好作文,欢迎借鉴!我的兴趣爱好作文1我的兴趣有很多种࿰…...

学python大数据培训
为迅速补齐审计信息化应用短板,东台市审计局建立常态化学习培训机制,实行大数据技能每周一练。 一是分层分类定要求。在全员熟练运用Excel等常用办公软件的基础上,针对年龄结构和知识层次,要求50周岁以下人员掌握Oracle、SqlServe…...

手机发射机的功能电路(4)---上变频器、功率放大器
一、发射上变频器 发射上变频器实际上是一个频谱搬移电路,它存在于带发射上变频的发射机电路结构中。在发射上变频器中,发射中频处理电路输出的发射已调中频信号,与RXVCO或UHFVCO、RFVCO)信号进行混频,得到最终发射信号。发射上变频器也是一个混频电路,前面讲混频器时说,混频器…...

记一次 Mockito.mockStatic 泄漏导致的单元测试偶发报错排查过程
相信用 Java 写过单元测试的读者们对 Mockito 不会陌生。至于 Mockito 是什么,为什么要用 Mockito,本文不再赘述。本文记录了一次在 Apache ShardingSphere 项目中,由 Mockito.mockStatic 使用不当导致的单元测试偶发报错排查过程。 文章目录…...

Python学习-----流程控制2.0(循环结构-->while循环、for循环、range()函数)
目录 循环结构 (1)while循环 (2)for循环 range()函数 循环的嵌套 编辑 上一期我们讲了Python中的选择结构,链接在下面Python学习-----流程控制1.0(选择结构、缩进法则)_守约斯维奇的博客-CSDN博客 这一期&am…...

2022年高职组软件测试赛项赛题及评分标准
任务 考查点 评分标准 评分细则 分值 任务一 环境搭建及系统部署 (5分) 环境搭建及系统部署包括搭建与配置测试环境,安装与部署应用系统等,对过程和结果进行截图,完成环境搭建及系统部署报告 1.测试环境搭建与…...

不坑盒子:强大的word插件,让工作更高效
不坑盒子简介 很多朋友在工作过程中需要对Word文档进行编辑处理,如果想让Word排版更有效率可以试试小编带来的这款不坑盒子软件,这是一个非常好用的插件工具,专门应用在Word文档中,支持Office 2010以上的版本,用户可以…...

非标自动化设备ERP系统能够帮助企业解决哪些管理难题?
非标自动化设备产品的多样化和个性化要求企业能够将客户需求、设备结构管理与配置、智能设计、生产协作管理等过程有机地结合在一起,非标自动化设备行业传统的企业管理模式已经不能适应市场需求的个性化变迁。非标自动化设备行业常见的管理难点:信息孤岛…...

20230207英语学习
Startup Plans to Bring the Dodo Back From the Dead 这家公司拟复活已灭绝几百年的渡渡鸟?! Billion-dollar startup Colossal Biosciences claims it has come a step closer to reviving the dodo, a flightless bird that has been extinct since …...

学习如何使用GPT2进行文本生成(torch+transformers)
学习如何使用GPT2进行文本生成(torchtransformers) GPT2是OPen AI发布的一个预训练语言模型,见论文《Language Models are Unsupervised Multitask Learners》,GPT-2利用单向Transformer的优势,做一些BERT使用的双向T…...

基于UEFI的数据传输工具
摘要:由于UEFI框架下没有提供数据传输的模块,使得测试或者调试开发时需要经常对数据文件进行人工拷贝,导致了实现测试自动化或远程调试的不便。采用Socket数据传输方式设计并实现了UEFI下数据传输的工具,通过使用串口线来连接Host…...

Linux 并发与竞争实验
目录 一、原子操作实验 1、利用点灯工程创建模板 修改makefile编辑 2、atomic.c代码添加 ①、定义 atomic_t 的变量 ②初始化变量 atomic_set函数原型 ③判断是否被使用 atomic_read函数原型 atomic_dec函数原型 ④释放原子变量 atomic_inc函数原型 3、atomicAPP.…...

Golang 提取视频中音频,存为WAV格式 | Golang工具
目录 前言 环境依赖 代码 总结 前言 本文提供将视频中音频提取出来存为wav格式,一如既往的实用主义。 主要也是学习一下golang使用ffmpeg工具的方式。 环境依赖 ffmpeg环境安装,可以参考我的另一篇文章:windows ffmpeg安装部署_阿良的博…...

145、【动态规划】leetcode ——70. 爬楼梯:暴力法+动态规划(C++版本)
题目描述 原题链接:70. 爬楼梯 解题思路 1、暴力法 递归方式 class Solution { public:int res 0;void traversal(int n) {if(n 0) { // 每遍历出一种情况,就将结果加一res;return ;} else if (n < 0) {return ;}climbStairs(n - 1); // 探…...

【手写 VueRouter 源码】第七篇 - 路由变化触发视图更新
一,前言 上篇,介绍了路由匹配的实现,包括以下几个点: 路由匹配的分析;路由匹配的实现:router.match、matcher.match、createRoute; 本篇,继续介绍路由变化触发视图更新; 二&#…...

机器学习之朴素贝叶斯分类器原理详解、公式推导(手推)、面试问题、简单实例(python实现,sklearn调包)
目录1. 朴素贝叶斯原理1.1. 特性1.2. 思路2. 公式推导3. 简单实例3.1. 数据集脱单数据集2.0脱单数据集1.0西瓜数据集3.2. python实现3.3. sklearn实现3.4. 实验结果4. 几个注意点(面试问题)5. 运行(可直接食用)1. 朴素贝叶斯原理 1.1. 特性 朴素贝叶斯…...

什么样的光源不伤眼睛?精选优秀的全光谱护眼台灯
日光对眼睛最好,所有人造灯都不如日光对眼睛友好,日光指的是全光谱照射,而现在许多护眼灯做到全光谱照射,所以护眼灯成为很多家庭的必备产品之一,晚上学习、工作,有了护眼灯的陪伴,既明亮又不伤…...

复杂因子秒级计算,文谛资产是这样做到的...
上海文谛资产管理有限公司(以下简称“文谛资产”)秉持理性、务实、高效、专业的投资精神,凭借科学的量化投资战略、先进的量化交易技术和成熟的风险管理能力深耕量化领域,以创造长期稳定收益为投资目标,为国内外投资者…...

投稿计算机SCI期刊,什么是同行评议? - 易智编译EaseEditing
首先,初审论文的可能不是审稿人,有些稿源丰富的相对高端期刊,还会由作为大同行的编辑对稿件的内容本身,尤其是创新性等方面对稿件进行评估。 这个编辑内部初审,对于牛期刊而言也会拒掉许多投稿,这一过程通…...

如何添加 WhatsApp按钮打开Facebook页?SaleSmartly(ss客服)为您解答
关键词:SaleSmartly(ss客服);Facebook WhatsApp 按钮想要了解如何添加 WhatsApp 按钮到您的 Facebook 页?您来对地方了。在本文中,我们将概述合并 WhatsApp 按钮 Facebook 页面,并提供有关如何执…...

【CodeFroces】【DP】Maximum White Subtree
CodeForces 1324F Maximum White Subtree 题目传送门 题目大意 给定一棵树,每个节点为白色或黑色,现对每个节点 uuu,选出任意大小的包含该节点的连通图,使得图上白色点数目与黑色的数目的差距最大。 分析 不妨记白点权值为1&…...

RTC直播与RTMP直播
RTC直播与RTMP直播 RTMP传统直播成本低廉,已大规模部署稳定运行,延时较高直播场景。 RTC直播主要用于对延迟要求高实时互动直播场景。 传统直播与RTC直播对比 以下整理了一下传统直播与RTC直播的不同之处: MR直播 MR直播实例(混合现实直播…...

Elasticsearch7.8.0版本入门——集群部署(linux环境-centos7)
目录一、三台服务器信息二、Elasticsearch7.8.0单机部署三、Elasticsearch7.8.0集群部署3.1、分别再三台服务器中都安装Elasticsearch7.8.03.2、修改192.168.136.23服务器中elasticsearch配置文件3.2、修改192.168.136.24服务器中elasticsearch配置文件3.3、修改192.168.136.25…...

STM32开发(五)STM32F103 通信 —— CAN通信编程详解
文章目录一、基础知识点二、开发环境1、硬件开发准备2、软件开发准备三、STM32CubeMX相关配置1、STM32CubeMX基本配置2、STM32CubeMX CAN相关配置四、Vscode代码讲解五、结果演示CAN 内部回环测试CAN 正常模式测试使用ADALM2000分析工具解析CAN时序一、基础知识点 了解CAN通讯…...

VOC/YOLO/COCO数据集格式转换及LabelImg/Labelme/精灵标注助手Colabeler标注工具介绍
数据集格式:VOC(xml)、YOLO(txt)、COCO(json) 本文主要对Label格式,以及LabelImg、Labelme、精灵标注助手Colabeler这常用的三种数据标注软件进行介绍。 1 Label格式 LabelImg是目标检测数据标注工具,可以标注标注两种格式: VOC…...

linux下原子操作指令
目录 原子操作CAS 原子操作 Demo CAS C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 原子操作CAS 原子操作 所谓原子操作是指不会被线程调度机制打断的操作,当某次操作一旦开始,就一直运行到结束,中间不会有任何中…...

Kafka入门(二)
1、Kafka集群工作进程 下面了解一下Kafka的工作流程,Kafka集群会将消息存储在Topic中,每条记录会由一个Key、一个Value和一个Timestamp组成。 Kafka中的消息是以Topic进行分类的,生产者生产消息,消费者消费消息,读取和…...

古月居ros2机器人系列修改图片后如何编译问题
A(我):你好删掉这两个文件后它出现了learning——node未找到这种错误;不仅如此,我建立了另一个同样的文件,而这次我是先修改了路径再编译的,尽管这次新生成的build是修改后的,并且也并未出现多余的…...

PTA Advanced 1164 Good in C C++
目录 题目 Input Specification: Output Specification: Sample Input: Sample Output: 易错测试点 易错点&C知识UP 代码 题目 When your interviewer asks you to write "Hello World" using C, can you do as the following figure shows? Input …...

数学建模练习——非线性规划
...

十、数据库操作
数据库操作 一旦创建 数据模型后,Django 自动给予你一套数据库抽象 API,允许你创建(create),检索(retrieve),更新(update)和删除(delete)对象。 为了方便调试我们通过下面的命令进入交互式python命令行: python man…...

Linux -终端中的编辑器vi(2)
4.常用命令4.8缩排和重复执行命令功能>>向右增加缩进<<向左减少缩进.重复上次命令缩排命令 在开发程序时,统一增加代码的缩进比较有用!一次性在选中代码前增加4个空格,就叫做增加缩进一次性在选中代码前删除4个空格,就…...

鼎盛合方案——轮胎充气泵方案
轮胎的质量好坏直接影响到备胎上位的时间长短,而在轮胎的使用中如果充气不恰当则是又给了备胎一个摩拳擦掌准备登场的机会。诶、怎么今天老是说备胎备胎的,对象和她的蓝颜知己这几天确实走的近了一些。发展方向有点不对……她们昨天还一起吃饭也没叫我&a…...

Python常见异常类型
开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。总的来说,编写程序时遇到的…...

测试工作杂记
1、安卓 测试过程中系统突然卡住不能动了、系统直接(Crash)崩溃掉了、应用程序无响应(ANR),即出现闪退或者异常的情况下 adb logcat -c && adb logcat > d:\logcat.txt 抓包工具android studio (接口、参…...

数据库笔记(三)
havingwhere后面只能写普通字段条件,不能写聚合函数条件having关键字专门用来写聚合函数条件的,并且需要和group by结合使用,写在分组的后面查询每个部门的平均工资,要求平均工资大于2000;select dept_id, avg(sal) a from emp group by dept_id having a>2000;查询每种工作…...

AD硬件电路学习笔记(四)四层板实战(上)之常见模块要求
系列文章目录 AD硬件电路学习笔记(一)常见的管脚名字以及FPGA、Lora AD硬件电路学习笔记(二) GND的种类及PCB布线实战 AD硬件电路学习笔记(三)mos管开关电路学习总结 文章目录系列文章目录常见要点防静电…...

Grafana 系列文章(十):为什么应该使用 Loki
👉️URL: https://grafana.com/blog/2020/09/09/all-the-non-technical-advantages-of-loki-reduce-costs-streamline-operations-build-better-teams/ 📝Description: 我们都知道为什么 Loki 对日志管理有很大帮助。但这里有所有的原因,为什…...

((蓝桥杯 刷题全集)【备战(蓝桥杯)算法竞赛-第7天-贪心专题】( 从头开始重新做题,记录备战竞赛路上的每一道题 )距离蓝桥杯还有60天
🏆🏆🏆🏆🏆🏆🏆 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录&a…...

Anchor Free的孪生目标跟踪
Anchor Free的孪生目标跟踪 跟踪任务可以看成是分类任务与状态估计任务的结合。分类任务的目的是精确定位目标的位置,而状态估计获得目标的姿态(即目标框)。SiamFC一文将当前的跟踪器按照不同状态估计的方法分为三类: 以DCF和Si…...

【6s965-fall2022】神经架构搜索 Neural Architecture Search
在很长一段时间里,研究人员都是手动设计神经网络的架构。神经网络架构的设计空间非常大,它包括#layers、#channel width、#branches、kernel sizes、input resolutions。因此,手动调整这些参数非常困难。而神经架构搜索,NAS&#…...

如何从脚本小子变成黑客大神?【网络安全】
学前感言: 1.这是一条坚持的道路,三分钟的热情可以放弃往下看了. 2.多练多想,不要离开了教程什么都不会了.最好看完教程自己独立完成技术方面的开发. 3.有时多google,baidu,我们往往都遇不到好心的大神,谁会无聊天天给你做解答. 4.遇到实在搞不懂的,可以先放放,以后再来解决. …...

Suflo-Cyanine5.5 Tyramide,Suflo-Cyanine3 TSA,磺酸基-花青素Cy5 酪酰胺
一、试剂基团反应特点(Reagent group reaction characteristics):TSA主要原理是利用酪胺Tyramide的过氧化物酶反应(酪胺盐在HRP催化H202下形成共价键结合位点),产生大量的酶促产物,该产物能与周围的蛋白残基(包括色氨酸…...

LaoCat带你认识容器与镜像(实践篇一下)
实践篇主要以各容器的挂载和附加命令为主。 本章内容 本文实操全部基于Ubuntu 20.04 宿主机 > linux服务器本身 Docker > 20.10.22 从该章开始,我们就进入了Docker实践篇系列了,主要介绍Docker相关附加命令,与实际日常生产部署注意点…...

Android设备的各种唯一标识符 ID
IMEI 只有Android手机才有, IMEI号是一串15位的号码,比如像这样 359881030314356 TelephonyManager TelephonyMgr (TelephonyManager)getSystemService(TELEPHONY_SERVICE); String szImei TelephonyMgr.getDeviceId();需要权限android.permission.R…...

git串讲笔记
1.注册2.gitee 创建 仓库3. 你的电脑 git软件4. 将上边软件的安装路径需要设置到idea中file settting git path to git executeable: C:\Program Files\Git\bin\git.exe5.vcs create git repository6.点 对号 将idea代码提交本地仓库中7.点 斜右上 方绿色箭头 : 将本…...

ChIP-seq 分析:原始数据质控(2)
1. ChIPseq 简介 染色质免疫沉淀,然后进行深度测序 (ChIPseq) 是一种成熟的技术,可以在全基因组范围内识别转录因子结合位点和表观遗传标记。 ChIPseq1.1. 实验处理 ChIPseq2交联和蛋白质结合的 DNA。通过抗体富集特定蛋白质或 DNA 。添加 末端修复、A 尾…...

对几万行数据的调优操作,调优后系统性能提升明显
文章目录 前言一、问题一:对几万条数据筛选二、问题二:对几万条数据增删查改总结前言 对几万行的数据的处理或者对几万行数据与数据库的交互操作,虽然严格意义上来说,并不是很多,但是如果按照传统普通的流程一次性的遍历处理操作数据,也是会性能很差,有可能到分钟级别;…...

索尼官方答疑,你关心的PS VR2问题都在这里
随着索尼PS VR2即将开售,索尼在近期也逐渐公布更多关于PS VR2的消息,包括首发阵容(2-3月期间)共计37款。与此同时,外界对于索尼PS VR2提出了更多担心,彭博社爆料称:因PS VR2的预订量未及预期&am…...

SSM企业权限管理项目(一)
AdminLTE AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具,它提供了一系列响应的、 可重复使用的组件,并内置了多个模板页面;同时自适应多种屏幕分辨率,兼容PC和移动端后台模板框架github获取AdminLTE源码&#…...

C++设计模式(10)——原型模式
亦称: 克隆、Clone、Prototype 意图 原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 问题 如果你有一个对象, 并希望生成与其完全相同的一个复制品, 你该如何实现呢&…...

uniCloud 云函数/云对象 node版本改变成12或18解决方案
爆红信息 right-hand side of instanceof is not an object 今天卡到一个本地跑好好的云对象部署云端直接报错了。 原因是这样的!! 1、你去看看你云函数依赖那npm install的插件node版本是不是有要求,博主开github看了尽然是node>12 2、…...

面对元宇宙算力瓶颈,AI算力专家宁畅开出三大秘方
文 | 智能相对论作者 | 沈浪元宇宙这把火,从2022继续烧到了2023。目前来看,资本市场对扎克伯格的元宇宙故事依旧抱以希望。2月1日美股收盘,Meta涨2.79%,报收153.12美元/股,盘后股价一度涨逾19%,市值暴涨将近…...

(考研湖科大教书匠计算机网络)第三章数据链路层-第七节:MAC地址、IP地址和ARP协议
pdf下载:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:MAC地址(1)概述(2)IEEE 802局域网的MAC地址A:地址格式B:地址表示方法C&…...

LeetCode刷题模版:273 - 275、278 - 279、283 - 284、287、289 - 290
目录 简介273. 整数转换英文表示【未理解】274. H 指数275. H 指数 II278. 第一个错误的版本279. 完全平方数283. 移动零284. 顶端迭代器287. 寻找重复数289. 生命游戏290. 单词规律结语简介 Hello! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕ…...

HDFS基本命令
目录 1.上传文件到HDFS文件系统 2.查看HDFS文件系统中的文件 3.查看上传到HDFS文件系统中指定文件的内容 4.从HDFS文件系统下载指定文件,并存放在指定文件中 5.删除HDFS文件系统中的指定文件 6.创建目录 7.创建多级目录 8.递归删除目录下的所有文件 9.删除…...

Java中if结构语句有几种格式?怎样执行?
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执 行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。流程控制类语句包括顺序、分支、循环三个结构语句。下面就来了…...

百趣代谢组学分享:基于大规模多中心人群的肝癌血清标志物研究
为什么都是多组学发的高分文章,我只想做代谢组学可以发高分吗? 答案当然是 Yes。接下来Lavender就为大家分享由大连物化所许国旺老师课题组发表在HEPATOLOGY上面的一篇文章。 百趣代谢组学文献分享,文章的题目为:A Large-Scale,…...

java面试题(十四)数据库之sql
开启掘金成长之旅!这是我参与「掘金日新计划 2 月更文挑战」的第 N 天,点击查看活动详情 1.1 介绍一下数据库分页 参考答案 MySQL的分页语法: 在MySQL中,SELECT语句默认返回所有匹配的行,它们可能是指定表中的每个…...

Java顺序表模拟实现 + ArrayList介绍
文章目录前言一、模拟实现顺序表成员属性成员方法1,构造方法2,add——新增元素,默认在数组末尾新增2.1, isFull——判断顺序表是否已满2.2, expandCapacity——扩容3,add——在 pos 位置新增元素3.1&#x…...

html+css网页练习四
文章目录一、购物网站页面1、要求2、效果图3、index.html4、style.css二、活动页面1、要求2、效果图3、index.html4、style.css三、电商网站页面1、要求2、效果图3、index.html4、style.css四、搜索引擎页面1、要求2、效果图3、index.html3.1、index1.html3.2、index2.html4、s…...

行云洞见|为何行业权威都预测“云原生IDE 将成为常态”?
原文:《The year of the Cloud Development Environment 》 作者:RedMonk创始人 James Governor 最近CNCF在2023年云原生预测中谈到“云原生IDE 成为常态”,让CloudIDE又成为了云原生的焦点,市场上对CloudIDE的态度以及发展趋势讨…...

算法之链表反转
算法系列 1、链表反转 文章目录算法系列一、核心思路二、循环反转2.1 示例代码三、递归反转3.1 示例代码四、总结一、核心思路 现在有一个单向链表,链表的第一个节点指向第二个,第二个节点指向第三个,以此类推,组成一个链表&…...

django 运用pycharm的各种故障汇总(1)
一.用django入门第一个问题:pycharm的[community]社区版-免费开源与[professional]专业版注册收费两个版本:用django只能有[professional]版本便捷、专业; 解决方案的各种学习总结: 1.破解版:网上找了很多资料,基本已经没效果,不要报太大希望; 2.找中间途径然后有:Python 、…...

基于Prometheus的jvm监控指标详解
使用Prometheus 监控Springboot应用参考 Prometheus Operator实战—— Prometheus、Alertmanager、Grafana 监控Springboot服务 下面来看看jvm的监控指标 # HELP jvm_gc_collection_seconds Time spent in a given JVM garbage collector in seconds. # TYPE jvm_gc_collection…...

电机PID参数调节笔记
规则1 1)降低比例增益P,可以获得较小的振动2)有可能不需要调节I环和D环3)提升比例增益P环可以增加灵敏度,但可能会出现不稳定的情况(如振动)4)可以设定电机速度最大幅值,…...

Spark SQL实战(08)-整合Hive
1 整合原理及使用 Apache Spark 是一个快速、可扩展的分布式计算引擎,而 Hive 则是一个数据仓库工具,它提供了数据存储和查询功能。在 Spark 中使用 Hive 可以提高数据处理和查询的效率。 场景 历史原因积累下来的,很多数据原先是采用Hive…...

【Java版oj】day21小易的升级之路、找出字符串中第一个只出现一次的字符
目录 一、小易的升级之路 (1)原题再现 (2)问题分析 (3)完整代码 二、找出字符串中第一个只出现一次的字符 (1)原题再现 (2)问题分析 (3&…...

windows 下C++生成Dump调试文件与分析
目录1、前言2、依赖库下载3、项目配置3.1、设置输出路径3.2、拷贝依赖资源3.3 将dbghelp.h添加在工程中3.4、配置lib文件路径3.5、添加生成minidump文件方法4、测试效果5、打开dump文件进行定位1、前言 dump文件是C程序发生异常时,保存当时程序运行状态的文件&…...

unserialize3(php序列化、反序列化及绕过)
打开链接 审计一下代码 这里出现了一个__wakeup()函数,在进行PHP反序列化时,会先调用这个函数,但是如果序列化字符串中表示对象属性个数的值大于真实的属性个数时就会跳过__wakeup()的执行。 在php中与序列化相关的函…...

C++ STL:queue的常见用法
queue 队列,在STL中实现先进先出的容器。 1. 定义 使用queue,需要先添加头文件 #include <queue>using namespace std;基本定义格式: queue<typename> name; //typename可以是任意基本数据类型或容器2. 容器内元素的访问 q…...

HulaCWMS呼啦企业网站管理系统 v3.0.4
HulaCWMS(呼啦企业网站管理系统)是基于ThinkPHP5框架开发,安全高效,包括ThinkPHP5的所有特性。专注于企业、政府单位网站建设,以免费开源的方式,帮助广大站长、个人或企业开发者大大降低了开发成本和维护成本。快速锁定意向客户&a…...

【CE】Mac下的CE教程Tutorial:基础篇(第5关:代码查找器)
▒ 目录 ▒🛫 导读开发环境1️⃣ 第五关:代码查找器翻译操作步骤🛬 文章小结📖 参考资料🛫 导读 开发环境 版本号描述文章日期2023-03-操作系统MacOS Big Sur 11.5Cheat Engine7.4.3 1️⃣ 第五关:代码查…...

13_I.MX6ULL串口UART实验
目录 UART简介 UART电平标准 I.MX6U UART简介 相关寄存器 UART的配置步骤 实验源码 UART简介 串口全称叫做串行接口,通常也叫做COM接口,串行接口指的是数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。串口通信距离远,但是…...

个人练习-Leetcode-1942. The Number of the Smallest Unoccupied Chair
题目链接:https://leetcode.cn/problems/the-number-of-the-smallest-unoccupied-chair/ 题目大意:给出一群人到达一个排队的时间和离开派对的时间[arr, lev]。有无数个座位,下标从0开始。当一个人在tm时刻离开时,如果一个人在tm…...

winsock与BSD socket异同
winsock与BSD socket WinSock是Windows操作系统中用于网络通信的应用程序接口(API),它允许应用程序通过TCP/IP协议栈进行网络通信。WinSock提供了一套与套接字相关的函数,这些函数包括socket、bind、listen、accept、connect等。…...

【Flink基础】-- 高效学习 flink kubernetes operator 的一些建议
目录 1.了解 Kubernetes 的基本概念和组件,如 Pod、Deployment、Service 等。 2.熟悉 Flink 的基本概念和架构,如 JobManager...

JVM 程序计数器(PC)
PC寄存器的概念 JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。这里,并非是广义上所指的物理寄存器&#…...

调用openai接口的正确打开方式
调用openai接口的正确打开方式: 1.安装anaconda 为更好使用openai的功能,技术专家建议用py3.10。我问chatgpt它说只要py3.6及以上就行。我个人建议尽可能用anaconda较新的,但用anaconda2022.10的版本即可,可适配python3.10或pyt…...

栈(Stack)
目录 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1. 改变元素的序列 2. 将递归转化为循环 1.1 概念 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为…...

VS2019连接Linux
1>将Linux系统设置为静态IP 原来设置: auto eth0 iface eth0 inet dhcp dhcp表示动态获取ip 1>查看ip 在Linux下输入 ip addr 2>查看网关 在Linux下输入 ip route show 3>修改/etc/network/interfaces 地址配置文件 vi /etc/network/interfaces iface eth0…...

第三天基础框架篇
一、介绍一下spring spring的核心作用是框架整合,简化开发; spring通过IOC与AOP两大核心实现以上效果: 1.首先说IOC,Spring提供了一个容器,用来创建对象,初始化对象,管理对象,也就是对象的控制权…...

new和malloc两个函数详细实现与原理分析
1.申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是C基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储…...

CUDA编程(二):核函数与线程层级
核函数与线程层级CUDA核函数线程层级线程排布blockId和threadId的计算CUDA核函数 在GPU上并行执行的函数称为CUDA核函数(Kernel Function),它属于CUDA编程中最为重要且核心的一个环节。 核函数用__global__符号声明,在devie(GPU…...

断点调试与零钱通系统
目录 断点调试 基本介绍 断点调试的一些快捷键 断点调试例题 简易版零钱通系统 面向对象版 面向过程版 断点调试 基本介绍 1.断点调试是指在程序的某一行设置一个断点,调试时,程序运行到这一行就会停住,然后你可以一步一步往下调试&a…...

人工智能专业就业方向盘点
今年无论是chatgpt还是扩散模型,都成功火爆出圈,让曾被质疑进入“寒冬期”的AI重新回到了大众的视野。巨大的市场潜力背后是对人才的渴求,AI专业又成为了热门。 今天就来盘点一下AI专业毕业后的就业方向,给同学们做个参考。 1.机…...

浮点数的加减乘除运算及流水线
浮点数的加减运算 设两个浮点数如下: x2Ex∗Mxy2Ey∗MyE表示阶码,M表示尾数x2^{E_x}*M_x\\y2^{E_y}*M_y\\ E表示阶码,M表示尾数\\ x2Ex∗Mxy2Ey∗MyE表示阶码,M表示尾数 两个浮点数的加减运算规则是 xy(Mx∗2Ex−EyMy)∗…...

docker安装以及springboot项目打包运行
我们都知道docker是一个非常好用的虚拟化容器,所谓虚拟化容器其实就是说可以将各个应用都隔离开来,每个应用都可以有自己的独立的运行时环境,这对于我们程序开发是非常有好处的,可以不需要去配置环境,每个组件都有独立…...

977. 有序数组的平方
977. 有序数组的平方 力扣题目链接(opens new window) 给你一个按非递减顺序排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。 示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,10…...

FrIf - Fr驱动收发器和状态管理
总目录链接==>> AutoSAR入门和实战系列总目录 总目录链接==>> AutoSAR BSW高阶配置系列总目录 文章目录 1FlexRay 收发器驱动程序2 FlexRay 状态管理器1FlexRay 收发器驱动程序 FlexRay 收发器的不同状态由 FlexRay 接口通过 FlexRay 收发器驱动程序 控制,上…...

springboot自动配置浅析
springboot本质上就是一个spring脚手架,其实仍然是spring,只是springboot帮我们做了我们使用spring时需要进行的那些配置。本文就简单讨论一下sprigboot是如何帮我们配置spring的。 参考:https://www.bilibili.com/video/BV1eD4y1w7Rp?p2&am…...

chatgpt实际是怎样工作的?
文章翻译自: https://www.assemblyai.com/blog/how-chatgpt-actually-works/ ChatGPT 是 OpenAI 的最新语言模型,比其前身 GPT-3 有了重大改进。与许多大型语言模型类似,ChatGPT 能够为不同目的生成多种样式的文本,但具有更高的精…...

项目开发——企业软件项目开发流程《项目开发的流程是怎样的》
软件项目开发流程:需求分析、设计、编码、测试、上线运维 一般而言,软件项目开发流程包括以下步骤: 需求分析:对客户需求进行分析和理解,明确软件项目的目标和功能。 规划阶段:确定项目的范围、时间和预算…...

嵌入式编程中的 __attribute__ 到底是什么
嵌入式编程中的 attribute 到底是什么 相信阅读嵌入式代码的老铁经常看到一些类型定义、变量、函数有 attribute 标识符,这个标识符号到底是做什么的?有哪些用法,咱们今天就来聊一聊。 attribute 可以指定编译时的细节。其可作用于变量、函…...

基于LiFePO4和硅/还原氧化石墨烯纳米复合材料的锂离子电池
A lithium-ion battery based on LiFePO4 and silicon/reduced graphene oxide nanocomposite highlights: 硅纳米颗粒(nSi)和还原氧化石墨烯(RGO)作为阳极;微波辐射,对混合物进行热处理,合成nSi/RGO复合物;通过不同充…...

CAS问题
CAS🔎什么是CAS🔎伪代码解析🔎CAS是如何实现原子性的🔎CAS的应用🌻实现原子类🌻实现自旋锁🔎ABA问题🌻ABA问题可能引起的BUG🌻ABA问题的解决方案🔎结尾&#…...

java入门-W2
一. 输入输出 输入的作用,就是由使用者告诉程序要操作的数据 例如,我要通过饿了么订餐,你得告诉程序你要吃什么,送货地址是什么吧 输出的作用,就是由程序向使用者展现执行的结果 还是订餐的例子,程序向你展…...

Windows下配置Golang开发环境,并安装配置GoLand IDE
作者:非妃是公主 专栏:《Golang》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录一、安装Go编译器1. 下载GoLang2. 安装GoLang3.…...

从零开始学架构——高性能NoSQL
高性能NoSQL 关系数据库经过几十年的发展后已经非常成熟,强大的SQL功能和ACID(Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性)的属性,使得关系数据库广泛应用于各式各样的系统中,但是关系数…...

cannot re-initialize CUDA in forked subproess
该问题描述了pytorch 中使用cuda 初始化时, 与 DataLoader 中使用num_worker 多进程, 这两者之间发生了冲突, 根据错误提示, 在DataLoader 中使用 multiprocessing_context 该参数,并设置为spawn, 由…...

Kafka3.0.0版本——生产者回调异步发送消息 (API代码示例)
目录一、回调函数的异步发送消息概述二、生产者带回调函数的异步发送消息(API代码示例)2.1、pom文件导入依赖2.2、API代码2.3、在 kafka集群服务器上开启 Kafka 消费者一、回调函数的异步发送消息概述 回调函数会在 producer 收到 ack 时调用࿰…...

【Python】《我的世界》简简单单就可以完成?OMG~(附教学)
文章目录前言一、准备二、运行及操作三.代码解读与自定义总结前言 《我的世界 Minecraft》大家应该都听说过,但你有没有想过自己写一个这样的游戏呢?太难、太复杂了?也许吧,但是不试一试你怎么知道能不能成呢? 国外有…...

Scala 中的foreach和map、flatMap方法比较
Scala中的集合对象都有foreach和map、flatMap方法,都是用来遍历当前集合,但他们都有不同点。这几个方法的共同点在于:都是用于遍历集合对象,并对每一项执行指定的方法。而他们的差异在于:foreach无返回值(准…...

【nacos优化】定时删除access日志
按理说 Nacos 作为服务注册中心,不会应该会产生太多日志的,本身涉及的服务也不多,但几天就会产生 1G 以上的日志,的确有点疯狂。这篇文章就聊聊 Nacos 的日志系统。 经过排查,其中输出最多的日志为 /usr/local/nac…...

哪款蓝牙耳机打电话好用,盘点几款口碑不错的骨传导耳机
骨传导耳机是通过骨头振动传递声音,而不是通过耳道或鼓膜,因此它具有许多优势,比如可以在运动过程中保持对环境的感知,并避免对听力造成伤害。随着科技的进步和用户需求的增加,骨传导耳机也在不断更新。目前市面上的骨…...

JS中的事件监听
详解事件监听事件监听的基本概念事件类型事件处理函数事件传播事件对象移除事件监听器总结JavaScript中的事件监听是Web开发中非常重要的一个概念。它允许我们在特定的事件发生时执行特定的代码,从而实现交互效果和动态行为。本篇博客将详细介绍JavaScript事件监听的…...

SpringBoot 异步与线程池的关系
目录 1、简介 1、Async ① 使用方法: ② 注意事项: 2、parallelStream 并发遍历数组 ① 使用方法: ② 注意事项: 3、自定义线程池 ① 使用方法: ② 注意事项: 1、简介 SpringBoot 中基本上存在三种异步的关系,分别为 1、 使用 Async,标记在方法上 2…...

《版本特性百事通》
《版本特性百事通》 注:数据截至日期2021年 常见jdk种类 常见的JDK版本主要包括以下几种: Oracle JDK:Oracle公司的官方JDK,是商业授权,支持Java SE和Java EE平台。Oracle JDK包含了完整的Java类库和工具ÿ…...

英语——疑问词
疑问词可以分为: 疑问代名词: who /what/which 疑问副词:when/where/why/how 1 疑问代名词 当主词补语 Who is singing in the room? What makes you laugh so? 当受词 Which of these singers do you like. What do you think of my new hat? …...

谷歌的Bard和OpenAI的GPT4的对比
前言 随着上个月21日谷歌面向公众开放人工智能聊天机器人Bard的访问权限,同样是上个月的14日OpenAI为聊天机器人ChatGPT发布的最新语言模型:GPT-4的问世,可以说关于ChatGPT应用的推出进入了百家争鸣的情况,而且竞争变得激烈起来&a…...

云端数据科学平台Deepnote,相当于云上的Jupyter Note
Deepnote是一个先进的云端数据科学平台,可以帮助数据科学家和开发者轻松创建、管理和共享他们的数据科学项目。它提供了一个易于使用的界面,可以轻松编写代码、访问数据和执行任务,而无需管理服务器或编写复杂的部署代码。 1、Deepnote概述…...

钉钉协作Tab前端进化之路
作者:马赟 阿里云钉钉业务平台团队 技术人应当发挥对业务前瞻性的理解,好的架构设计背后一定是对于业务的高度认知与抽象,过程中要对业务关键指标有正确的理解,而不是简单纯功能的堆砌。 钉钉新版协作Tab作为千万级访问量下前端新…...

架构整洁之道-22章-整洁架构
按照更好架构设计出的系统特点: 独立于框架可被测试独立于UI独立于数据库独立于任何外部机构 外层的变化不影响内层的逻辑 外层变化同时修改对应适配器么 层次划分-按需划分并非固定多少层 图22.1中所显示的同心圆只是为了说明架构的结构,真正的架构很可…...

Redis高可用之主从复制 哨兵 集群
Redis高可用之主从复制 哨兵 集群一、Redis主从复制1、主从复制概念2、主从复制的作用3、Redis主从复制原理二、搭建Redis主从复制1、安装Redis,三台机子都需要安装2、编译安装三、修改节点配置文件1、修改Redis配置文件(Master节点、Slave1节点、Slave2…...

轻松拿结果-第二部分 同力 -第五章 用制度保障业绩
第五章 用制度保障业绩 制度的保障,体现的是管理者的监管能力,也是守护胜利果实的有力保障。 只有铁的纪律,才能拿到铁的结果 商场如战场,在公司您们就是带兵打仗的将军。 有一个销售员踢球时伤到了腿,在他休息的两个月里,业绩却没有落下一点,都是整个团队的人在帮他…...

Github + Sphinx+Read the docs 实战入门指南(二)
目录引言Sphinx渲染文档托管到Github部署到Read the docs网站继续阅读引言 接上一篇Github SphinxRead the docs 实战入门指南(一),这一篇主要讲解如何自动将指定文档内容部署到Read the docs中。对于文档,一般有以下基本要求: 只维护一份&…...

模拟实现常见的strlen、strcpy、strcmp库函数,深入理解它们的原理
⛩️博主主页:威化小餅干📝系列专栏:【C语言】藏宝图🎏 绳锯⽊断,⽔滴⽯穿!一个编程爱好者的学习记录! 文章目录🚀模拟实现strlen高仿版my_strlen函数🚀模拟实现strcpy高仿版my_st…...

mysql主从复制原理及一主一从搭建过程—2023.04
文章目录一、MySQL主从复制介绍1、主从复制概念2、为什么要做主从复制3、主从复制原理4、主从复制形式5、主从复制主要用途二、MySQL一主一从搭建1、准备工作2、MySQL主从复制部署流程1. 关闭防火墙,两台主机都操作2. 修改配置文件,两台主机都操作3. 修改…...

MongoDB 6.0 (五)索引操作
一、 什么是索引 1. 索引概念 索引对文档部分内容进行排序的数据结构 合适的索引可以极大的提升数据库的搜索性能 2. 单键索引 db.accounts.find({name:”alice”}) 对姓名经过索引之后,对姓名进行排序。下面的就是索引,通过索引指向上面原文档位置。 3. 复合键索引(多…...

页面替换算法
1.FIFO页面替换算法(先进先出) 需要向内存页中加载不存在的数据时,如果内存页已经没有空余,那么就需要按目前所有页中的数据谁先被加载进来的,谁就被替换掉的原则,来将最先被加载进来的数据替换为新的数据。 1.1例题 有一个虚拟存储器,主存有4个实页,页号为0-3;程序有…...

Metasploit入门到高级【第五章】
来自公粽号:Kali与编程预计更新第一章:Metasploit 简介 Metasploit 是什么Metasploit 的历史和发展Metasploit 的组成部分 第二章:Kali Linux 入门 Kali Linux 简介Kali Linux 安装和配置常用命令和工具介绍 第三章:Metasploi…...

由于链接地址长度过长引起的”HTTP Error 400. The request URL is invalid”错误解决办法:修改注册表
网站中,设计了一个批量搜索的功能,用户可以输入多个关键词进行批量查询搜索,但不出意外的话还是出意外了,有些用户可能会输入 N 多个关键词,我为了性能等考虑,会限制个数,比如每次批量查询仅限 …...