据支付宝公司官方数据,截止到2008年5月6日,使用支付宝的全球用户已经超过8000万,支付宝每日交易总额超过3.5亿人民币,日交易笔数超过150万笔。看到这儿,我想很多软件开发者朋友可能会问的问题是:这么庞大的支付平台是谁设计的,如何设计的,有什么经验和教训?在2008年5月份阿里巴巴举办的第二届网络工程师侠客行大会上,InfoQ中文站有幸认识了支付宝首席架构师程立先生,并邀请其分享了软件架构设计心得,对当前热门技术的看法,以及在自己团队中对这些热门技术的实践经验等。
InfoQ中文站:请给InfoQ中文站的读者介绍一下您自己。
程立:InfoQ中文站的读者,大家好,我叫程立,来自支付宝架构团队。和大家一样,我也是InfoQ的忠实读者。从2004年起,我开始参与淘宝网与支付宝系统的建设,并于2005年正式加入支付宝,此后一直从事支付宝系统的研发工作。现阶段,我的兴趣在于适合电子支付行业的敏捷、高可用、可伸缩的面向服务架构与开放架构。非常高兴InfoQ中文站提供了这样的机会,让我能够代表支付宝的工程技术人员和大家进行交流,希望这样的交流能增进我们的相互了解。
InfoQ中文站:支付宝技术架构的发展过程是什么样的?
程立:三年多前的支付宝系统只有一个应用程序,而今天,仅仅在你点击支付宝支付按钮的一瞬间,取决于你选择支付方式,很可能调动了数十个独立的系统同时为你提供服务:有的帮你联系银行,有的帮你支付货款,有的推进你的交易,有的帮你联系商家发货,有的警惕地盯着这一切,为这个过程保驾护航……支付宝系统从一个朴素的轻量级Java应用程序,发展到现在由很多自主的服务系统构成的全分布式系统,是一个朝着明确的方向、迈着小而快的步伐、与业务齐肩并进的发展过程。这个过程大致分为两个大的阶段。
第一阶段是基于良好的业务边界,将一根粗烟囱似的应用程序拆成若干个细一些的烟囱。这种切分方式,可以使应用程序间的通信尽量小,只有少量的页面跳转与组合,以及基于JMS的异步消息交换。这种简单的分布就带来一些相当直接的好处,如单个系统的复杂性降低了,研发的并行度提高了,每个系统可以单独进行伸缩。公共的业务,比如账务与交易的处理等,被实现成可共享的类库,打包在每一个应用程序中,这样,可以仍然使用单数据源上简单、低成本的本地事务来保证业务处理所要求的原子性、一致性、隔离性与持久性。在这个阶段,新业务只要是自成体系的,都尽量作为单独的应用程序实现。
在第二阶段,为了使业务核心更加专业化,前端应用能够轻装上阵,我们将原来类库形式的业务核心一个接一个地拿出来,做成了自主的服务系统。这是一个充满业务与技术挑战的过程。仅从技术架构上说,为了使服务能够快速构建、灵活扩展,我们研发了组件式平台,使服务自身能够通过插件式体系进行灵活扩展;为了提供电子支付业务所要求的严格事务一致性、快速响应与高并发处理能力,发展了分布式服务系统中事务协调技术;我们也发展了企业服务总线技术,以提供统一、易于功能扩展、满足各种服务质量要求与集成模式的服务通信机制。每个服务系统连同它操作的数据都是一个自主的业务单元、系统单元与研发单元,很好地支持了业务模型创新、系统伸缩、研发组织小型化与专业化。
总体说来,虽然发展速度较快,但支付宝的技术架构仍然处于一个布局与打基础的阶段,对技术高度重视的态度,和紧紧抓住“服务”不放、持续小步快跑的执行策略,使我们在这个阶段打下了一个良好的发展基础。面对前方业务发展的巨大空间,架构与技术大有用武之地,在这里欢迎有志之士加入我们,共同开拓未来。
nfoQ中文站:请谈一谈您对架构的认识。
程立:老子说“道生一、一生二、二生三、三生万物”。在业务愿景的技术实现过程中,假设“道”为愿景、一为方向、二为战略的话,三就应该是架构了,架构既出,万物化生可矣。战略是整体的、长期的,让架构直接承接战略,带来的最大好处是可以得到一个整体的可持续发展的系统平台。而如果只是让架构从属于项目或者产品,很可能产生的系统也是烟囱型的,短视的。
这是支付宝公司内部对架构的定位。作为技术人员,常常遇到的问题是“提供一个X产品,它的流程为Y,高峰期处理量达到Z。”;也有一些问题的提法有所不同,比如“我们希望进入X市场,Y是我们的主要价值点,这个市场未来三年可能有Z倍的增长,系统能帮我们做什么?”。在我所在的团队中,第二类问题总是由架构师出马,而第一类问题,只要X、Y、Z不太离谱,基本不需要架构师操心。当然,如果现有架构难以支撑这个需求的话,那架构师也是责无旁贷的。
InfoQ中文站:一个成功的架构应该具备什么特点?
程立:架构必须能够达到功能与质量要求,以合理的研发、运行与管理成本产生使客户满意的系统,这是一个基本要素,否则是不及格的。但仅仅满足功能与质量要求的架构,还谈不上成功。
在长距离赛跑中,能够让系统以轻松的步伐始终跑在业务前面,是成功架构的一个显著特点。为了支持这几年业务的快速发展,支付宝的每个重要子系统都历经了若干个大的版本升级。这些升级有些是沿着事先规划好的迭代式发展路线进行的,在保持整体架构稳定的情况下,通过增加功能、扩展数据模型、引入新的处理模式、不断地扩展着功能与性能,持续给予业务强劲的支撑;但也有一些系统的升级则是接近于返工,架构重新设计、代码重写、数据模型重新设计、已有数据大迁移。路遥知马力,虽然这些系统在上线的当时都达到了功能与质量要求,但时间可以判定架构成功与否。
成功架构的另一个显著特点是能够对公司的核心竞争力形成有力的支撑。最近,马云先生在一次公开演讲中,举了一个例子,沃尔玛要增加一万个买家,需要买面积巨大的地,需要买很多的设备,需要很多的仓储;而淘宝只需要增加一台电脑就可以了。这个优势是商业模式带来的,但其背后,是需要有一个高度可伸缩的技术架构来支撑的。
InfoQ中文站:如何最大限度避免一个架构设计的失败?
程立:首先说点外因,架构设计的失败不全是架构师的责任。假如一个企业战略不清,或者虽然定义了清晰的战略,但没有很好的沟通机制让架构师了解战略,很难设计出全局上下一盘棋、富有生命力的架构。当发现看不清全局、看不清未来时,架构师应该设法多沟通、推动改进。如果始终推而不进、沟而不通,就该考虑换个舞台去发展了。不过,对于处于创业期的企业,这一条不大适用,这类企业中,架构发展与业务发展在开始阶段往往是一个快速犯错、快速调整的试错过程,这样的企业走向成功的同时,也常常能够培养出好的架构师。
在做架构设计时必须以业务为本。不是说让架构师去抠业务的枝节,比如流程中的某个环节究竟应该有几个分支、或者某个业务参数应该是多少,而是将精力放在理解业务本质,看清不同业务之间的关系上。在一个业务思想混乱的头脑中产生的系统也一定是结构模糊、行为混乱的。
业务清晰之后,架构师就像导演读透了剧本,可以在脑海中构思与创作了。拟定时空结构、选择风格样式、物色演员、规划每一幕的内容以及幕与幕之间的衔接等等。待一切可以在头脑中栩栩如生、流畅地上演之后,架构其实就出来了。这一步工作做得是好是坏,主要取决于架构师长期以来积累的能力、知识与素养,没有太多的捷径。
有几个算不上新鲜的经验还是值得提一下。首先,架构师要建立自己的QA工具,比如一个质量检查表,能够全方位地从研发、运行、管理等维度,对架构的质量属性进行客观地评估,这个检查表中各项指标的值范围与权重需要针对实际情况进行个性化定制。到了一个新环境中的架构师往往需要一个适应期,在这个适应期中除了熟悉新公司的现有业务与系统之外,很重要的一个工作就是调整原来的质量评估体系,使之新公司的业务相匹配。其次,在架构师头脑中的虚拟舞台上,演员是一个个系统,对每种系统的能力与特性的理解会决定他构思出来的剧情在真实上演时能在多大程度上符合期望,这需要在实践中关注并积累,如果引入了全新的演员,一定得让他试镜。还有一个是习惯问题:不要把脑海中出现的第一个设计当作最终版本,只要时间允许,要多创作几个版本,其间多与同事讨论、做些换换脑筋的事,避免陷于某种定式跳不出来。这需要架构师养成习惯,也需要公司研发流程的支持,比如让架构师尽量早地介入项目,有充分的时间酝酿与斟酌。
最后,架构设计不可能不犯错,因此很重要一点是当发现架构设计有错误时,一定不要尝试掩盖或者固执地坚持自己的错误,调整得越早,付出的代价就越低。好的企业一定有一个非常宽容的氛围、允许犯错并且鼓励及时改正。我曾经有过几次在开发已经进行到三分之一甚至更久时,发现架构设计有严重缺陷的经历,由于及时调整,加上团队的理解与配合,最终项目仍然取得成功,因此对这一点感受很深。
InfoQ中文站:在支付宝的技术团队中,也采用了敏捷的方法,请谈谈这方面的经验。
程立:支付宝的研发体系是从自身实际出发制定的,既要保障产品的高品质,又要保持对业务变化的快速响应,加上协调多个团队高度并行开发的需要,整套研发体系是一个精心设计的严谨结构,也是比较重量型的。但我们还是可以从中找到敏捷方法中的一些重要元素。
首先谈谈迭代。这里,以我所熟悉的支付宝架构团队的研发模式举一些例子。之前提到,支付宝技术架构是采用与业务发展齐肩并进的策略,这个过程就像给F1比赛中的赛车换轮胎,所有架构改进的实施必须安全、快速,尽量不打断正常的产品研发的节奏。因此,在确定技术架构的基本发展方向或者基础设施产品的蓝图之后,我们会将研发工作切分成很短的迭代,每一个迭代的目标明确,一般只解决少数几个技术问题。
以引入企业服务总线为例,第一个迭代的任务是调研,目标是概念验证与产品选型;第二个迭代是试水,我们选择了一个新的业务产品作为服务总线应用的小白鼠,当时的目标是解决高可用部署模式问题、以及集成逻辑的统一管理问题,架构师进入到该项目中,通过服务总线提供该产品与其它系统的集成方案,这个迭代与新产品发布的同时完成;以后的迭代是一系列推广使用的迭代,几次之后,我们完全替换了原来不够灵活的商用JMS服务器集群,并且整个技术团队可以不依赖架构组使用服务总线了;再以后的迭代是服务总线的自身的改进,如QoS的改进、服务治理功能的增加等等。采用这种方式,每一次迭代都有实际可运行的产出,并且其结果可以作为选择下一轮迭代目标的依据。以这种模式,架构发展以一种稳健的方式小步快跑着。但与有些敏捷方法学建议的固定迭代时长有些不同,当“搭顺风车”时,是宿主项目的规模决定迭代的时长。
保证高效的沟通是另一个重要的问题,这通常是采用我们俗称为“闭关”的形式来解决的。项目上到一定规模,就会包下一个会议室,项目经理、架构、系分、开发、测试等人员都会坐在一起,保持沟通的高效率,也减少不必要的干扰。对于长周期的项目、或者需求难以在初期完全确定时,在一个项目内部也设计一些迭代,开发人员增量地交付功能,测试并行进行功能验证,畅通无阻的沟通以及项目经理在场的协调管理是这种工作模式能够顺畅运转的关键。
InfoQ中文站:阿里巴巴和淘宝网的很多架构也是基于SOA的,请谈一下选择和实施SOA的前因后果。
程立:支付宝早期的单一应用程序架构只存在了很短一段时间就受到了挑战。
首先对这种架构发起挑战的是团队组织结构与分工的变化。随着业务领域的拓展,并行的项目越来越多,研发团队也迅速扩大,为了使团队更好地配合业务,走向专业化,我们内部开始按照业务线分组。跨组之间的沟通成本的提高要求必须将各自负责的系统严格切开,降低相互间的耦合度。
另一个挑战与支付宝业务特点密切相关。作为互联网上的新型服务,必须快速变化才能满足需要,曾经有很长一段时间,我们保持每周两次的新版本发布速度;而作为电子支付服务,它又必须绝对可靠、高度可用。为了解决这个稳定与快速的矛盾,我们必须将系统中的业务核心独立出来,由专业的团队、通过更严格的研发体系来支持它的发展;前端应用程序则继续以互联网速度高速发展。
业务、技术、管理上同时提出了解耦的需要,而“服务”很好地统一了这三者,所以,选择SOA作为技术架构的发展方向是很自然的。
现在,我们已经围绕着公司的基础业务建设了几大核心服务系统,并且搭建了以 ESB 为骨干、以服务框架为基础的面向服务基础设施。太极拳中讲究腰功,拳论中说“腰为主宰,腰为轴,刻刻留意在腰间”。这些核心服务以及配套的基础设施很像支付宝系统的“活腰”,它们的高可靠与高可用性是支付宝系统整体稳定性的基础,它们的灵活性与可重用性支持前端业务有条不紊地创新、整合与优化,它们的可伸缩性保证了系统能够支撑持续的快速业务增长。
InfoQ中文站:现在你们也对外开放了很多服务,在架构设计上有做特殊的考虑,或者经验吗?
程立:支付宝很早就提供了外部API,为互联网上的电子商务提供安全交易与资金流解决方案。现在支付宝已有上百个开放的API服务,连接了数十万大大小小的商户系统。
我们觉得设计开放API平台的思路与基于SOA原则进行架构设计很相似:业务上,需要理顺业务关系、划分清晰的企业业务边界、并制定业务处理规范;从技术上说,需要制定统一的技术标准、建设统一的通信基础设施。由于新产品会不断推出,因此,支付宝在内部建立了一个API容器,方便扩展新产品。将SOA搬到互联网上,SOA体系中固有的一些问题,如安全性、可靠性、接口契约的稳定性等问题就会被放大,在架构设计与标准制定时,必须很好地考虑这些问题。
出于安全与合规的需要,支付宝在制定API的业务规范与技术标准时,特别关注身份与安全体系;安全与方便是一对矛盾,为了更好地处理这两者的关系,支付宝在架构上支持灵活的安全体系,可以根据业务特性与商户个性需要,在安全性与方便性之间进行折衷。
互联网上系统交互的非可靠性与交易与支付类业务的可靠性要求之间也是一对矛盾,因此,接口标准与统一的通信基础设施中我们针对可靠性进行了专门的设计。
从接口契约稳定性上说,我们当时的做法是将技术标准设计成允许API接口增加新参数,提供版本参数,提供API接口的个性化配置能力,允许商户定义一部分API上交换的数据与处理行为等。
随着支付宝业务领域不断拓展,原来的从需求->解决方案->产品->API的方式,周期太长,已经难以快速满足大量合作伙伴的需求。因此,支付宝现在正在由产品式的开放转向平台式服务的开放,通过加强开放基础设施的建设,向合作伙伴提供更基础、更可重用、更体系化的服务,达到与合作伙伴充分协同,建设繁荣、共赢的电子商务生态圈的目标。同时,开放的业务服务与开放的技术平台也正在推动支付宝的业务与技术架构向前发展,对构建更大规模的分布式系统、更大规模的并行研发模式都带来了积极而深远的影响。
InfoQ中文站:我们知道,支付宝的架构平台中采用了不少开源系统,为何作此选择?
程立:除了支付宝与阿里巴巴集团自主研发的很多基础系统与开发框架、以及一些商业系统之外,支付宝也使用了很多优秀的开源软件。具有蓬勃的生命力的开源软件对支付宝的技术体系是一个很重要的补充。
在某些领域,一些开源软件几乎已经是事实的标准了,它们的高质量也是经过社区的严格考验的,比如Spring和它的POJO编程模型。通过使用这些开源软件,不但让系统可以在开始阶段就站在一个比较高的起点上,而且对于加入团队的新同事,一开始就可以在一个相对熟悉的环境下工作。
在另一些尚未形成标准的领域,在产品选型阶段,我们一般会在开源系统与商业产品间进行细致地选型,必须能够满足业务所要求的主要功能特性与关键质量要求。在同样能够满足主要功能特性与关键质量要求的前提下,谁具有良好的可扩展性,谁更简单,谁具有长期发展的生命力,谁有好的服务支持,都是最后做出选择的重要因素。其中,可扩展性往往是一个选择的关键因素。基于社区集体贡献模式的开源软件在可扩展性方面往往做得很好。当业务发展到一定阶段,在技术上一定会有大量个性化的需求,所选择的系统必须能够支持快速满足这些需求。开放的源代码也使我们在问题响应时,具有更大的主动性。随着开源系统走向商业化运作,在服务支持方面也开始做得更好,这些都进一步增加了开源系统的竞争力。
InfoQ中文站:请谈一下当前架构师所面临的挑战。
程立:“瞻前”、“顾后” ――这是我现在体会到的最大挑战。
先谈谈“瞻前”。当业务个性不明显、业务规模也不大时,架构师还是有很多容易模仿的定式与先例的。但当业务的个性与规模到达一定阶段时,一定会有一些别人从未遇到过的非常困难的问题需要你去解决。作为站在企业技术金字塔塔尖上的一群人,当过去的经验用不上,搜索引擎也不能向你提供任何有用的答案,只有独立去思考,去做出重大决定时,如果没有充分的准备,对企业对个人都是巨大的风险。这需要架构师建立未雨绸缪的意识,不断推演未来可能的变化并思索应对之策,持续而有方向地积累知识、发展能力,建立广泛的技术交流圈子,并且“顾后”。
再谈谈“顾后”。架构师的另一个重要的职责是发掘团队中的好苗子,帮助他们,使他们赶上并超越自己。无论这一点是否写入你的KPI,这样做都是必须的。站在架构师的立场看,架构必须有一个好的技术梯队一层层传递下去,才能够有效、持续地贯彻执行,如果只是架构师们冲在前面,背后空了一大片,架构永远只能停留在蓝图上。站在企业的立场看,企业真正的技术实力,不在于已经有怎样的系统或者平台,而在于是否有一个强大而有生命力的技术团队,通过快速复制架构师的技术与经验,可以帮助发展并壮大这样的团队,而企业整体技术实力的提升也促进了架构师提升。
http://www.infoq.com/cn/articles/chengli-arch-agile-soa
相关推荐
**SOA(Service-Oriented Architecture,面向服务架构)是一种软件设计模式,它提倡将功能作为独立的服务,这些服务可以通过网络进行交互,实现...通过深入理解和实践这些知识点,可以更好地设计和实施SOA解决方案。
级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,级联H桥SVG无功补偿系统在不平衡电网中的三层控制策略:电压电流双闭环PI控制、相间与相内电压均衡管理,不平衡电网下的svg无功补偿,级联H桥svg无功补偿statcom,采用三层控制策略。 (1)第一层采用电压电流双闭环pi控制,电压电流正负序分离,电压外环通过产生基波正序有功电流三相所有H桥模块直流侧平均电压恒定,电流内环采用前馈解耦控制; (2)第二层相间电压均衡控制,注入零序电压,控制通过注入零序电压维持相间电压平衡; (3)第三层相内电压均衡控制,使其所有子模块吸收的有功功率与其损耗补,从而保证所有H桥子模块直流侧电压值等于给定值。 有参考资料。 639,核心关键词: 1. 不平衡电网下的SVG无功补偿 2. 级联H桥SVG无功补偿STATCOM 3. 三层控制策略 4. 电压电流双闭环PI控制 5. 电压电流正负序分离 6. 直流侧平均电压恒定 7. 前馈解耦控制 8. 相间电压均衡控制 9. 零序电压注入 10. 相内电压均衡控制 以上十个关键词用分号分隔的格式为:不
GTX 1080 PCB图纸,内含图纸查看软件
内容概要:本文档详细介绍了利用 DeepSeek 进行文本润色和问答交互时提高效果的方法和技巧,涵盖了从明确需求、提供适当上下文到尝试开放式问题以及多轮对话的十个要点。每一部分内容都提供了具体的示范案例,如指定回答格式、分步骤提问等具体实例,旨在指导用户更好地理解和运用 DeepSeek 提升工作效率和交流质量。同时文中还强调了根据不同应用场景调整提示词语气和风格的重要性和方法。 适用人群:适用于希望通过优化提问技巧以获得高质量反馈的企业员工、科研人员以及一般公众。 使用场景及目标:本文针对所有期望提高 DeepSeek 使用效率的人群,帮助他们在日常工作中快速获取精准的答案或信息,特别是在撰写报告、研究材料准备和技术咨询等方面。此外还鼓励用户通过不断尝试不同形式的问题表述来进行有效沟通。 其他说明:该文档不仅关注实际操作指引,同样重视用户思维模式转变——由简单索取答案向引导 AI 辅助创造性解决问题的方向发展。
基于FPGA与W5500实现的TCP网络通信测试平台开发——Zynq扩展口Verilog编程实践,基于FPGA与W5500芯片的TCP网络通信测试及多路Socket实现基于zynq开发平台和Vivado 2019软件的扩展开发,基于FPGA和W5500的TCP网络通信 测试平台 zynq扩展口开发 软件平台 vivado2019.2,纯Verilog可移植 测试环境 压力测试 cmd命令下ping电脑ip,同时采用上位机进行10ms发包回环测试,不丢包(内部数据回环,需要时间处理) 目前实现单socket功能,多路可支持 ,基于FPGA; W5500; TCP网络通信; Zynq扩展口开发; 纯Verilog可移植; 测试平台; 压力测试; 10ms发包回环测试; 单socket功能; 多路支持。,基于FPGA与W5500的Zynq扩展口TCP通信测试:可移植Verilog实现的高效网络通信
Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警及记录、自动实验、数据处理与查询存储,报表生成与打印一体化解决方案。,Labview液压比例阀伺服阀试验台多功能程序:PLC通讯、液压动画模拟、手动控制与调试、传感器标定、报警管理及实验自动化,labview液压比例阀伺服阀试验台程序:功能包括,同PLC通讯程序,液压动画,手动控制及调试,传感器标定,报警设置及报警记录,自动实验,数据处理曲线处理,数据库存储及查询,报表自动生成及打印,扫码枪扫码及信号录入等~ ,核心关键词:PLC通讯; 液压动画; 手动控制及调试; 传感器标定; 报警设置及记录; 自动实验; 数据处理及曲线处理; 数据库存储及查询; 报表生成及打印; 扫码枪扫码。,Labview驱动的智能液压阀测试系统:多功能控制与数据处理
华为、腾讯、万科员工职业发展体系建设与实践.pptx
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
电网不对称故障下VSG峰值电流限制的柔性控制策略:实现电流平衡与功率容量的优化利用,电网不对称故障下VSG峰值电流限制的柔性控制策略:兼顾平衡电流与功率控制切换的动态管理,电网不对称故障下VSG峰值电流限制的柔性不平衡控制(文章完全复现)。 提出一种在不平衡运行条件下具有峰值电流限制的可变不平衡电流控制方法,可灵活地满足不同操作需求,包括电流平衡、有功或无功恒定运行(即电流控制、有功控制或无功控制之间的相互切),注入电流保持在安全值内,以更好的利用VSG功率容量。 关键词:VSG、平衡电流控制、有功功率控制、无功功率控制。 ,VSG; 峰值电流限制; 柔性不平衡控制; 电流平衡控制; 有功功率控制; 无功功率控制。,VSG柔性控制:在电网不对称故障下的峰值电流限制与平衡管理
1、文件内容:libpinyin-tools-0.9.93-4.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/libpinyin-tools-0.9.93-4.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、更多资源/技术支持:公众号禅静编程坊
数据集是一个以经典动漫《龙珠》为主题的多维度数据集,广泛应用于数据分析、机器学习和图像识别等领域。该数据集由多个来源整合而成,涵盖了角色信息、战斗力、剧情片段、台词以及角色图像等多个方面。数据集的核心内容包括: 角色信息:包含《龙珠》系列中的主要角色及其属性,如名称、种族、所属系列(如《龙珠》《龙珠Z》《龙珠超》等)、战斗力等级等。 图像数据:提供角色的图像资源,可用于图像分类和角色识别任务。这些图像来自动画剧集、漫画和相关衍生作品。 剧情与台词:部分数据集还包含角色在不同故事中的台词和剧情片段,可用于文本分析和自然语言处理任务。 战斗数据:记录角色在不同剧情中的战斗力变化和战斗历史,为研究角色成长和剧情发展提供支持。 数据集特点 多样性:数据集整合了角色、图像、文本等多种类型的数据,适用于多种研究场景。 深度:不仅包含角色的基本信息,还涵盖了角色的成长历程、技能描述和与其他角色的互动关系。 实用性:支持多种编程语言(如Python、R)的数据处理和分析,提供了详细的文档和示例代码。
基于protues仿真的多功公交站播报系统设计(仿真图、源代码) 该设计为基于protues仿真的多功公交站播报系统,实现温度显示、时间显示、和系统公交站播报功能; 具体功能如下: 1、系统使用51单片机为核心设计; 2、时钟芯片进行时间和日期显示; 3、温度传感器进行温度读取; 4、LCD12864液晶屏进行相关显示; 5、按键设置调节时间; 6、按键设置报站; 7、仿真图、源代码; 操作说明: 1、下行控制报站:首先按下(下行设置按键),(下行指示灯)亮,然后按下(手动播报)按键控制播报下一站; 2、上行控制报站:首先按上(上行设置按键),(上行指示灯)亮,然后按下(手动播报)按键控制播报下一站; 3、按下关闭播报按键,则关闭播报功能和清除显示
采用Java后台技术和MySQL数据库,在前台界面为提升用户体验,使用Jquery、Ajax、CSS等技术进行布局。 系统包括两类用户:学生、管理员。 学生用户 学生用户只要实现了前台信息的查看,打开首页,查看网站介绍、琴房信息、在线留言、轮播图信息公告等,通过点击首页的菜单跳转到对应的功能页面菜单,包括网站首页、琴房信息、注册登录、个人中心、后台登录。 学生用户通过账户账号登录,登录后具有所有的操作权限,如果没有登录,不能在线预约。学生用户退出系统将注销个人的登录信息。 管理员通过后台的登录页面,选择管理员权限后进行登录,管理员的权限包括轮播公告管理、老师学生信息管理和信息审核管理,管理员管理后点击退出,注销登录信息。 管理员用户具有在线交流的管理,琴房信息管理、琴房预约管理。 在线交流是对前台用户留言内容进行管理,删除留言信息,查看留言信息。
MATLAB可以用于开发人脸识别考勤系统。下面是一个简单的示例流程: 1. 数据采集:首先收集员工的人脸图像作为训练数据集。可以要求员工提供多张照片以获得更好的训练效果。 2. 图像预处理:使用MATLAB的图像处理工具对采集到的人脸图像进行预处理,例如灰度化、裁剪、缩放等操作。 3. 特征提取:利用MATLAB的人脸识别工具包,如Face Recognition Toolbox,对处理后的图像提取人脸特征,常用的方法包括主成分分析(PCA)和线性判别分析(LDA)等。 4. 训练模型:使用已提取的人脸特征数据集训练人脸识别模型,可以选择支持向量机(SVM)、卷积神经网络(CNN)等算法。 5. 考勤系统:在员工打卡时,将摄像头捕获的人脸图像输入到训练好的模型中进行识别,匹配员工信息并记录考勤数据。 6. 结果反馈:根据识别结果,可以自动生成考勤报表或者实时显示员工打卡情况。 以上只是一个简单的步骤,实际开发过程中需根据具体需求和系统规模进行定制和优化。MATLAB提供了丰富的图像处理和机器学习工具,是开发人脸识别考勤系统的一个很好选择。
hjbvbnvhjhjg
HCIP、软考相关学习PPT提供下载
绿豆BOX UI8版:反编译版六个全新UI+最新后台直播管理源码 最新绿豆BOX反编译版六个UI全新绿豆盒子UI8版本 最新后台支持直播管理 作为UI6的升级版,UI8不仅修复了前一版本中存在的一些BUG,还提供了6套不同的UI界面供用户选择,该版本有以下特色功能: 在线管理TVBOX解析 在线自定义TVBOX 首页布局批量添加会员信息 并支持导出批量生成卡密 并支持导出直播列表管理功能
vue3的一些语法以及知识点
西门子大型Fanuc机器人汽车焊装自动生产线程序经典解析:PLC博图编程与MES系统通讯实战指南,西门子PLC博图汽车焊装自动生产线FANUC机器人程序经典结构解析与MES系统通讯,西门子1500 大型程序fanuc 机器人汽车焊装自动生产线程序 MES 系统通讯 大型程序fanuc机器人汽车焊装自动生产线程序程序经典结构清晰,SCL算法堆栈,梯形图和 SCL混编使用博图 V14以上版本打开 包括: 1、 PLC 博图程序 2 触摸屏程序 ,西门子1500; 大型程序; fanuc机器人; 汽车焊装自动生产线; MES系统通讯; SCL算法; 梯形图; SCL混编; 博图V14以上版本。,西门子博图大型程序:汽车焊装自动生产线MES系统通讯与机器人控制