关于程序员:2023还不知道原子化样式你就out了

原子化定义原子化的款式是一种将款式属性拆分为小的、独立的类的设计办法。在原子化款式中,每个类对应一个具体的款式属性,如色彩、字体大小、边距、宽度等。 与传统的CSS样式表相比,原子化的款式更加细粒度、离散化。通过将款式属性拆分为独自的类,并依据须要组合这些类,能够疾速创立各种款式组合,从而实现高度可重用性和灵活性。 应用原子化的款式有以下几个劣势: 可读性和可维护性:原子化款式使样式表更具可读性。通过应用描述性的类名,开发人员能够更清晰地理解每个款式属性的作用。同时,当须要批改某个款式时,只需更改相应的类名,而不用深刻样式表查找具体的款式规定。灵活性:通过组合不同的类,能够轻松创立多样化的款式组合。这种灵活性使开发人员可能疾速构建自定义款式,适应不同的设计需要。可重用性:原子化款式的设计使得款式类能够在不同的元素上重复使用。这种可重用性有助于缩小冗余的款式代码,并进步开发效率。代码示例根据下面的设计办法和思维形式。简略的提供一个示例来阐明原子化款式的概念和利用。 假如你有以下三个款式属性:色彩、字体大小和边距。你能够将它们拆分为原子化的类,每个类对应一个款式属性。而后,通过组合这些类,你能够疾速创立各种款式组合。 <div class="text-red-500 text-lg p-4"> 这是一个红色文本,字体大小为大号,并且具备肯定的边距。</div>在下面的示例中,咱们应用了以下类: text-red-500:设置文本色彩为红色(#ff0000)。text-lg:设置字体大小为大号。p-4:设置上下左右边距为4个单位。通过组合这些类,咱们能够疾速创立一个具备特定款式的元素。如果须要批改款式,只需更改相应的类名,而不用批改具体的款式规定。 请留神,上述示例应用的类名是基于 Tailwind CSS 的命名规定,但其余 CSS 框架或自定义款式也能够采纳相似的原子化款式的设计思维。 实现本人我的项目的原子化款式设计思路要本人实现一个原子化款式库,能够依照以下步骤进行: 确定款式原子: 定义您心愿在款式库中具备的原子化款式。这些能够是常见的款式属性,如色彩、字体大小、边距、宽度等。将这些属性拆分为最小的款式单元,使其易于组合和复用。创立类名约定: 设计一套类名约定来示意款式原子。类名应该简洁、具备描述性,并遵循统一的命名标准,以便于应用和记忆。编写 CSS: 应用类名约定编写 CSS 规定,将款式属性与类名绝对应。确保款式规定具备高度的可复用性和组合性,使其易于在不同的元素和组件上应用。构建工具: 能够思考应用构建工具(如 webpack、Parcel 或 Gulp)来自动化款式库的构建过程。例如,应用预处理器(如 Sass、Less 或 Stylus)能够更不便地编写和治理款式。文档和示例: 提供清晰的文档和示例,阐明如何应用您的原子化款式库。包含类名约定、款式示例、示例代码和应用阐明,以帮忙其余开发者了解和应用您的款式库。测试和优化: 对您的款式库进行测试,确保它在不同的环境和利用场景下失常工作。依据反馈和需要进行优化和改良,以提供更好的开发体验和性能。本人实现一个原子化款式库须要肯定的 CSS 和设计常识,同时须要思考到可扩展性、可维护性和性能等方面。确保您的款式库具备良好的组织构造和文档,以便其余开发者可能轻松地应用和扩大它。 具体实现以下是一个简略的示例,展现如何实现一个根本的原子化款式库: 确定款式原子: 字体大小:.fs-12、.fs-16、.fs-20等色彩:.color-red、.color-blue、.color-green等边距:.m-0、.m-2、.p-4等宽度:.w-full、.w-50、.w-auto等创立类名约定: 字体大小:.fs-{size}色彩:.color-{color}边距:.m-{value}、.p-{value}宽度:.w-{value}编写 CSS: /* 字体大小 */.fs-12 { font-size: 12px;}.fs-16 { font-size: 16px;}/* 色彩 */.color-red { color: red;}.color-blue { color: blue;}/* 边距 */.m-0 { margin: 0;}.m-2 { margin: 2px;}/* 宽度 */.w-full { width: 100%;}.w-50 { width: 50%;}应用示例: ...

May 26, 2023 · 1 min · jiezi

关于程序员:M洞察MOBA还是MMO2023上半年热门手游大盘点来了拯救你的游戏荒

2023年Q1中国移动游戏市场整体体现不迭预期,理论销售收入为486.94亿元,同比降落19.42%。虽整体有所下滑,但新鲜血液仍然爆发强劲。 3月22日,一款玩法轻松、新鲜的种田类手游《桃源深处有人家》正式上线,玩家纷纷投入其中,化身萝萝山的村民,独特建设漂亮新农村。而4月26日备受关注的米哈游新游——《崩坏:星穹铁道》正式开服,上线首日就火爆全网,寰球下载量超3000万。心动网络出品的《火炬之光:有限》也于5月10日开启公测,作为一款端游移植的ARPG类手游,一经上线就迎来原粉丝和路人的追捧好评。 自游戏版号放开以来,针对不同玩家群体所打造的格调迥异的手游更是层出不穷。上面咱们就一起来看看这四类特色显明的玩家们更爱玩哪些游戏。 超级奶爸超级奶爸指80、90后这代曾经成家立业并成为人父的群体。作为随同着游戏行业倒退独特成长的一代,在身份转变为父亲后,他们也仍然没有放弃本人的喜好,在顾家育娃的同时,也会忙里偷闲,关上手机,来上一局充斥着热血与自在的对战,放松本人。 【超级奶爸】最爱手游榜单《穿梭前线》、《战争精英》、《英雄联盟手游》这类贯通奶爸群体整个青春的游戏仍然是他们的心头好,尽管已没有那么多的工夫和精力来玩端游,但这类从电脑移植到手机上的游戏却是他们隔三岔五就要组队开黑的第一抉择。 而像《开心消消乐》、《地铁跑酷》这类耗时较短的休闲娱乐游戏,则是他们在安置好宝宝后的闲暇碎片工夫里,会常常关上来放松一下的休闲工具。 【超级奶爸】人群画像与传统意义上庄重刻板的老一辈父亲形象不同,“新奶爸”群体大多领有更好的教育背景,本科及以上学历的占比超5成,只有1.77%的人未承受高等教育。 “新奶爸”群体乐于承受新事物,重视于自我晋升和自我满足的同时,也没有放下养家的责任,有房、有车的占比别离是60.06%和77.42%,有将近半数的“奶爸”支出在8000以上,仅5%支出在6000以下,为家人打拼出一个美好生活是他们从头至尾的谋求。  Z世代女性Z世代女性是指出生于1995-2009年之间的女性群体。她们的成长随同着互联网生态从无到有的倒退,多元这一网络时代的特点在她们身上得以展示。 【Z世代女性】最爱手游榜单Z世代女性手游榜单中,《王者光荣》虽是一款热血反抗类MOBA手游,但其凭借欠缺的社交零碎和精美的英雄皮肤也吸引了不少年老女玩家,甚至一跃成为中国游戏史上第一款女性玩家破亿的游戏。 而《光与夜之恋》、《恋与制作人》、《未定事件簿》这类女性向手游以丰满的剧情和沉迷式的恋爱体验也使得一大批年老小姐姐沉迷其中,为本人可爱的“纸片人男友”抽干卡池是司空见惯的事件。《蛋仔派对》这款以Q萌喜感的蛋仔为次要卖点的休闲竞技手游,更是牢牢地抓住女性玩家的注意力,自主打扮的角色形象、个性化翻新玩法和欢畅冷落的线上社交,无一不戳在小姐姐们的爱点上。 【Z世代女性】人群画像Z世代女性大多是还在读大学的学生或者是刚刚迈入社会的白领,因而她们的收入水平广泛不算太高,超4成占比的人支出在6000元以下。 Z世代女性玩家在四线城市散布最多,半数为小镇玩家;细分城市来看,多散布于重庆、成都等绝对劳碌的城市。 银发高知银发高知人群是指60岁以上,承受过专科以上高等教育的人群。他们个别在精力层面有着更高的谋求,消费观念和生存理念也追随时代的倒退一起一直降级。 【银发高知】最爱手游榜单因为退休后闲暇工夫较多,他们更偏爱《欢畅斗地主》、《欢畅麻将选集》、《天天象棋》这类学习老本不高,玩法较为相熟,又能打发工夫的棋牌类游戏。 而《成语闯关记》以其丰盛的成语典故、乏味的玩法吸引了不少常识储备渊博的银发玩家。《战争精英》、《王者光荣》以及《蛋仔派对》这类游戏之所以能上榜,很有可能是他们的手机成为孙辈与小伙伴开黑的工具。 【银发高知】人群画像他们个别有较高的退休工资,半数人群退休后的支出集中在6k到8k这个区间,他们有闲有钱,并且对陈腐事物接受度更高,“老有所乐”是他们新的谋求指标。 从安卓设施使用率上看,四分之一的老年玩家应用华为挪动设施玩游戏。步步高旗下的两大品牌紧随其后,OPPO和VIVO的使用率都达到21%。 90后高支出高支出90后高支出人群是指出生于1990年之后,月支出超过2万的人群。他们对本身有着较高的谋求,生产能力更强,重视生活品质和质价比。 【90后高支出】最爱手游榜单因为领有较高的生产能力,90后高支出人群在玩游戏时更重视于本人的游戏体验,在面对本人青睐的游戏角色或者配备时,更违心氪金来获取它。他们所玩的游戏类型较为丰盛,市面上的支流游戏都是他们违心去尝试的对象。 其中《原神》、《崩坏:星穹铁道》这类画面精美、玩法乏味的二次元MMORPG是其最爱,为失去可爱的角色他们会挥金如土,毫不悭吝。《王者光荣》里的贵族V9、V10是他们特有的标签,满英雄、满皮肤是他们所谋求的指标。 【90后高支出】人群画像从性别散布上看,90后高支出人群中有76%的是男性。而从学历上看,超过8成的人都具备本科以上的学历,这个比例要远远高于整体程度,能够看到更高学历的群体退职场上往往能更快地独当一面,从而取得高薪岗位。 而从职业散布上看,高薪岗位大多集中在金融、互联网、媒体等行业。依据国家统计局最新数据,IT行业排名第一,信息传输、软件和信息技术服务业的均匀薪资为220418元,而紧随其后的是老牌的金融行业,均匀薪资为174341元。 从各类人群的手游偏爱榜单上能够看到,《王者光荣》和《战争精英》深受各类人群的青睐,霸揽各个榜单的头筹;《开心消消乐》、《欢畅斗地主》等休闲策略类游戏同样广受欢迎;而《欢畅斗地主》、《天天象棋》等棋牌类游戏更受银发、奶爸人群的偏爱。 移动游戏市场虽整体规模增速放缓,“宅经济”红利逐步隐没,增量市场也在向存量市场转变,但女性向手游市场仍放弃高增长,“她经济”缓缓绽开力量。《恋与制作人》、《光与夜之恋》这类女性向手游的倒退也逐步成熟。

May 26, 2023 · 1 min · jiezi

关于程序员:分布式事务的21种武器-5

在分布式系统中,事务的解决散布在不同组件、服务中,因而分布式事务的ACID保障面临着一些非凡难点。本系列文章介绍了21种分布式事务设计模式,并剖析其实现原理和优缺点,在面对具体分布式事务问题时,能够抉择适合的模式进行解决。原文: Exploring Solutions for Distributed Transactions (5) 在不同业务场景下,能够有不同的解决方案,常见办法有: 阻塞重试(Blocking Retry)二阶段和三阶段提交(Two-Phase Commit (2PC) and Three-Phase Commit (3PC))基于后盾队列的异步解决(Using Queues to Process Asynchronously in the Background)TCC弥补(TCC Compensation Matters)本地音讯表(异步保障)/发件箱模式(Local Message Table (Asynchronously Ensured)/Outbox Pattern)MQ事务(MQ Transaction)Saga模式(Saga Pattern)事件驱动(Event Sourcing)命令查问职责拆散(Command Query Responsibility Segregation, CQRS)原子提交(Atomic Commitment)并行提交(Parallel Commits)事务复制(Transactional Replication)一致性算法(Consensus Algorithms)工夫戳排序(Timestamp Ordering)乐观并发管制(Optimistic Concurrency Control)拜占庭容错(Byzantine Fault Tolerance, BFT)分布式锁(Distributed Locking)分片(Sharding)多版本并发管制(Multi-Version Concurrency Control, MVCC)分布式快照(Distributed Snapshots)主从复制(Leader-Follower Replication)本文将介绍一致性算法、工夫戳排序以及乐观并发管制三种模式。 13. 一致性算法(Consensus Algorithms) 零碎中的所有节点都批准最终后果或决策。波及如下步骤: 提议(Proposal) —— 一个节点向零碎中的其余节点提出一个值播送(Broadcast) —— 将倡议的值播送到零碎中所有节点确认(Acknowledgment) —— 每个节点确认提议并向提议者返回确认音讯决定(Decision) —— 一旦提议者收到大多数节点的确认,就能够对提议的值做出决定承诺(Commitment) —— 零碎中所有节点提交决定Paxos算法还包含以下几个步骤: 筹备阶段(Prepare phase) —— 提议者选定提案,并向零碎中的大多数节点发送筹备申请承诺阶段(Promise phase) —— 如果某个节点收到的筹备音讯序列号高于之前看到的序列号,将以承诺响应,并不再承受任何低于该序列号的提案承受阶段(Accept phase) —— 如果提议者收到大多数节点的承诺,j就向大多数节点发送带有提案序列号的"承受"申请已承受阶段(Accepted phase) —— 如果某个节点收到的承受音讯序列号高于以前见过的任何承受申请序列号,就承受该提案,并向提议者和所有其余节点发送承受音讯学习阶段(Learn phase) —— 一旦提议者从大多数节点接管到被承受的音讯,就能够提交提议。from typing import List, Tupleclass PaxosNode: def __init__(self, node_id: int, nodes: List[int]): self.node_id = node_id self.nodes = nodes self.state = "proposed" self.proposed_value = None self.accepted_value = None self.accepted_round = -1 def run_paxos(self, value: int) -> int: while True: if self.state == "proposed": self.proposed_value = value self.state = "prepare" if self.state == "prepare": max_round, max_val = self.prepare() if max_val is None: self.state = "accept" else: self.state = "proposed" if self.state == "accept": self.accepted_value = self.proposed_value self.accepted_round = max_round self.send_accept() self.state = "decided" if self.state == "decided": return self.accepted_value def prepare(self) -> Tuple[int, int]: max_round = -1 max_val = None for node in self.nodes: round, val = node.receive_prepare() if round > max_round: max_round = round max_val = val return max_round, max_val def send_prepare(self, round: int): for node in self.nodes: node.receive_prepare_request(round, self.node_id) def receive_prepare_request(self, round: int, sender_id: int): if round > self.accepted_round: self.accepted_round = round self.send_prepare(round) def receive_prepare(self) -> Tuple[int, int]: return self.accepted_round, self.accepted_value def send_accept(self): for node in self.nodes: node.receive_accept_request(self.accepted_round, self.accepted_value) def receive_accept_request(self, round: int, value: int): if round >= self.accepted_round: self.accepted_round = round self.accepted_value = value self.send_accepted() def send_accepted(self): for node in self.nodes: node.receive_accepted(self.accepted_round, self.accepted_value) def receive_accepted(self, round: int, value: int): if round == self.accepted_round: self.proposed_value = value示例代码 ...

May 26, 2023 · 4 min · jiezi

关于程序员:Hackathon-代码黑客马拉松采访复盘

AIGC Hackathon 2023 北京站 我加入了选手采访提纲,这里我感觉有些点能够分享给大家。之前复盘的链接: 上面是采访我的答复内容: 1. 请向大家简略介绍一下本人吧?子木,社区名称为程序员泥瓦匠,年龄三十岁,毕业于温州医科大学。有8年SaaS教训,曾在有赞和售后宝等SaaS公司工作。趣味是写文章,职业钻研方向是出海SaaS软件,包含技术、产品、市场增长等。这是我第一次加入黑客马拉松,之前没有相干经验。2. 求学或职业经验对你们的钻研方向和职业倒退有何帮忙和启发?在大学期间,因为色弱被调剂到温州医科大学的医疗相干信息系统与信息管理业余,并开始了对程序员职业的布局。大学期间围绕这个方向进行学习,加入了学校的ACM校队并退出导师的工作室,开始学习Java并参加相干互联网我的项目。我在大学期间创作了300多篇原创技术博客,并积极参与开源我的项目建设。感激我的导师和敌人们给予的倡议和帮忙,对我的钻研方向和职业倒退有着很大的帮忙和启发。3. 如何决定这次黑客马拉松的利用方向?这是一种偶尔。我看到队友子玄开发了一个十分受欢迎的 IDEA GPT 插件,发现其中有很多可做的刚需点。然而,在加入黑客马拉松之前,我发现许多人都在做这个方向的我的项目,因而咱们从新探讨了这次黑客马拉松的利用方向。依据我在黑客增长、SEO和内容营销方面的教训和痛点,咱们决定以这个痛点作为利用的方向。原文:bysocket.com 4. 子木在复盘中提到了还有很多未实现的性能,是否会持续欠缺?是否有打算开源这款利用?目前临时不会持续欠缺,因为咱们有其余工作工作,而细节和欠缺性能须要投入大量的工夫老本。对于开源,也没有具体的打算。5. "解决方案不肯定是软件,还有服务",能具体分享一下这个观点吗?对于开发者来说,有时候他们可能认为软件是解决问题的惟一路径,但事实并非如此。软件只是解决方案的一种模式,而客户的需要千差万别。在某些状况下,服务是不可或缺的。就像一家餐厅一样,食物的口味是首要思考的,而店铺环境和服务质量则是主要的。在软件开发中也是如此,尤其是在面向企业的SaaS方向,服务是至关重要的。通常由客户胜利团队负责提供服务。因而,不要把软件视为解决问题的惟一路径,有时候服务同样重要,特地是在面向企业的畛域。6. 作为程序员,你们如何对待AI和程序员工作之间的关系?它对待业有帮忙还是会导致就业?AI会淘汰那些不违心学习或不懂AI的人,这也实用于程序员。AI的倒退可能会淘汰掉一部分工作岗位,但同时也会发明新的岗位和机会。对于程序员来说,学习和把握AI技术是十分重要的,这样能力在新的工作环境中放弃竞争力。7. 在加入黑客马拉松中,你们印象最粗浅的是什么?有什么播种?咱们印象最粗浅的是其余参赛选手的创意和思路。有些人专一于基础设施层,十分技术化;有些人则专一于面向消费者的利用,具备很大的意义。咱们播种很多,通过观察其余参赛选手的思路和演示,咱们看到了将来AI在各个领域的利用后劲,从集体生存到工业生产,都会有AI的利用。8. 黑客马拉松对于开发者的意义是什么?你们如何放弃加入黑客马拉松的激情?对于开发者来说,黑客马拉松是一个展现本人技能、挑战自我的机会。加入黑客马拉松能够让开发者在短时间内与其余开发者单干,独特解决问题,疾速迭代并实现一个具备创新性的我的项目。加入黑客马拉松能够提供一个锤炼本人技术能力、学习新技术和思维形式的平台。同时,黑客马拉松还能够与其余开发者进行交换和单干,扩大人脉圈和团队单干能力。咱们放弃加入黑客马拉松的激情是因为咱们酷爱编程和技术创新,并享受在短时间内解决问题和构建创意我的项目的挑战。黑客马拉松激发了咱们的创造力和单干精力,让咱们一直成长和提高。9. 黑客马拉松对你们的生存或者工作方面有什么晋升?加入黑客马拉松给咱们带来了许多方面的晋升。首先,它进步了咱们的团队合作能力。在短时间内与队友严密单干,独特解决问题,须要高效的沟通和协调能力。其次,黑客马拉松造就了咱们的翻新思维和解决问题的能力。在无限的工夫内,咱们须要疾速思考和实际,找到切实可行的解决方案。此外,黑客马拉松还晋升了咱们的技术实际能力。在我的项目开发过程中,咱们尝试了各种新技术和工具,学习并利用了最新的开发方法和技巧。总的来说,加入黑客马拉松促使咱们在各个方面一直晋升,同时也为咱们的职业倒退打下了松软的根底。10. 加入黑客马拉松的教训和倡议不要把黑客马拉松仅仅看作是一场较量,而是将其视为对本人能力的测验和学习的机会。在极短的工夫内,致力尝试做出有意思的小作品,这是对本人能力的一种测验。黑客马拉松是一个学习的过程,利用这个机会踊跃学习新的技术和思维形式。愿大家在黑客马拉松中,充斥高兴并激情地输入本人的作品,同时也享受高兴并疯狂地学习输出新的常识。如果大家加入,期待大家黑客马拉松时获得好问题,并享受这个学习和发明的过程。 原文:bysocket.com 出处:公号「程序员泥瓦匠」博客: https://bysocket.com/ 内容涵盖 Java 后端技术、Spring Boot、Spring Cloud、微服务架构、运维开发、系统监控等相干的钻研与常识分享。

May 26, 2023 · 1 min · jiezi

关于程序员:华为云Toolkit活动领取云计算8大领域50本干货电子书

怎么更好应用华为云开发者生态工具?快来体验插件界的全家桶Huawei Cloud Toolkit! 【流动详情】 即日起至【6月30日】,登录华为云账号并点击下方链接拜访产品页面, 可获取华为云云享书库8大畛域50本技术畛域干货电子书,同时还能够参加华为云周边礼包抽奖!没有注册华为云账号的请先注册账号哦 【产品链接】  https://developer.huaweicloud.com/develop/toolkit.html?utm_so... 【电子书支付形式】 步骤1:通过上方链接进产品首页 步骤2:发问:Huawei Cloud Toolkit反对几种IDE平台?(请在产品页寻找答案数字)失去一个数字 步骤3:将步骤二发问所失去的数字填入替换下列链接的“?”处,复制到地址栏关上链接即可下载电子书 https://bbs.huaweicloud.com/blogs/?99600 【抽奖阐明】 流动完结一周内后,后盾将抽出三位送出华为云周边定制礼包,并在下方流动帖颁布获奖名单,记得回来看看你获奖了没有哦! 【流动帖链接】  https://bbs.huaweicloud.com/forum/thread-0232119069272414022-... 华为云周边礼包蕴含:保温杯1+定制扑克牌1+攻城狮鼠标垫*1 具体礼品依据理论发货为准,可能因礼品库存等不可抗力因素,替换为其余同价值礼品。

May 26, 2023 · 1 min · jiezi

关于程序员:对话-ONES-联合创始人兼-CTO-冯斌技术管理者如何打造一支自驱型团队

相熟冯斌的人,大都间接称说其网名 Kid,包含他在 ONES 的共事。人如其名,Kid 的寓意就是「用孩子的眼光看世界」,返璞归真的思维形式能力发现新大陆。正如毕加索说的:「我毕生都在向孩子学习。」 在 ONES 联结创始人兼 CTO 冯斌(下称 Kid )眼里,无论是集体的体重治理,还是团队的技术治理,都能够采纳回归常识的「孩童般」的简略准则,即置信「方法总比艰难多」,哪怕是之前感觉不可能达到的指标,只有保持寻找解决方案,最初总能找到适合的办法。 具体而言,无论是饮食还是静止,Kid 都找到了衰弱形式与本人舒服区的交加:他从零起步,5 个月内能够跑 21 公里的半程马拉松,减重超过 15 公斤,且多项体检指标陆续复原到正常值,堪称是「一夜回到十年前」。Kid 对体重治理的感悟是:价值观的可贵不在于「晓得」,而在于「真正保持」。保持价值观很艰难,是因为人们很容易受到事实的挑战,轻易放弃本人的指标。只有保持尝试,才有可能找到无效的办法,这个世界上很多看似因难的事件都须要如此看待。 ONES 致力于帮忙企业进步技术团队合作效率,而现在,ONES 本身也要随着技术团队规模的变大而进一步晋升合作。用 ONES 的理念和办法来「办好本人的事」,这自身就是最有说服力的实际案例。 「ONES 作为研发治理和团队合作畛域的专家,只有咱们有勇气直面各种挑战,就能找到最合适的路径,实现 ONES 本身的技术治理改革。」Kid 认为,一旦失当的办法失去使用后,能够推动团队工作效率晋升,并让团队播种技能的成长与心田的满足感,为进一步的自我摸索和改良打下好的根底。 稻盛和夫已经说,正如物质能够分为可燃物、不燃物和自燃物一样,人也有三种类型:点火就焚烧的「可燃型的人」,点火也不会焚烧的「不燃型的人」,以及靠本人就能够熊熊燃烧的「自燃型的人」——这正是「自我驱动的人」。 「在成为自驱型团队的路线上,咱们要回溯企业文化价值观的根源,将价值观的逻辑内化为咱们的直觉,并且放弃一生学习,能力实现团队的一直成长。」Kid 还示意,身处人工智能利用突飞猛进的时代,ONES 也要与时俱进地把握新工具的应用,缩小反复和低效的工作,从而进一步开释生产力,让团队聚焦在技术创新和创造力方面的自我驱动。 ONES 对话 Kid (ONES 联结创始人兼 CTO)自驱型治理ONES:具体来说,企业文化价值观是如何促成团队的自我驱动力的?Kid:ONES 的员工文化价值观是「好奇心、勇气、责任」。随着我缓缓加深对逻辑和直觉的了解,我发现,从「好奇心」到「勇气」再到「责任」,是层层递进的关系。正如《大学》里的八条目:格物、致知、诚意、正心、修身、齐家、治国、平天下。这个链条里就蕴含着从物理世界到心理世界的扭转,总结了一个人认知渐次递进降级的过程。其中,格物致知是前提,代表了认知模式——我认为,对应的是咱们公司提倡的「好奇心」,意味着人要有摸索的人造动机;诚意、正心、修身则对应的是咱们提倡的「勇气」,因为勇气是基于自尊的意识而倒退成的能力;齐家、治国、平天下对应的是咱们提倡的「责任」,而责任是源自人们的外在谋求。 很多人通常只关怀「自我晋升」,也就是怎么样让本人变得更好;这当然很重要,然而「让团队变得更好」的能力其实更有价值。起因很简略,一个人肩负的责任越大,就越不可能仅靠集体力量来实现。真正的「成就」不是世俗意义上的胜利,而是通过成就团队来成就本人。团队每个成员都器重本人的责任,使整个群体长期保持良性的自驱力。这样一来,责任让个体从「小我」变成了「大我」,即实现了超越自我。 ONES 的职级体系也很好地反映团队和集体的关系,无论是「治理线」还是「业余线」,越往上走,就越看重集体对团队的侧面影响。这两条线的区别是:「治理线」次要通过确定指标、沟通合作形式来实现,「业余线」则通过为团队积淀业余的最佳实际来实现。 我感觉,颖奇(ONES 创始人兼 CEO)当年将「好奇心、勇气、责任」敲定为员工价值观关键词时,这是颖奇与他本人直觉的一次对话,从而牵头构建了这样具备整体性和全局性的价值观。 ONES:除了自驱力,还有其余哪些因素会促使团队研发治理做得更好?Kid:以前,听到很多共事和我说的一句话是:Kid 的技术不错,让共事们服气。其实,对于一个团队而言,整体的工作高效是更重要的。当初 ONES 的产品研发团队规模更大了,而对于大型团队合作,标准化是更高效的。因而,我当初会聚焦将所有技术工作清晰化和量化。所谓清晰化,指的是列举出产品研发的每个要害流程中的查看清单,继续改善研发团队的工作效率,正如飞机落地时空姐会手持清单进行查看。 量化则是清晰化和标准化很重要的前提,咱们很多指标都是能够被量化的,我想借用《数据化决策》这本书里的一些理念来解释。大数据时代充斥复杂性、多样性,这为咱们探测数据与信息的有形价值带来了艰难。价值不可见就不可治理,没有数据,价值也无奈评估,而没有量化思路咱们更无奈驾驭数据。《数据化决策》这本书的外围,在于阐释了「无测量、无治理」的理念,只有找到适合的办法,万事万物皆可被量化治理。 ONES 作为一家时刻追踪数字化前沿的软件公司,为了满足客户和研发治理数字化的需要,咱们会动静地调整无关量化治理和标准化的决策,继续更新无效的标准化动作来促使共事们保持良好的工作效率。 思考的底层逻辑ONES:据说你平时也玩游戏,游戏对于你在技术了解方面有哪些启发?Kid:近年来,玩游戏的工夫很少了,所以我会尽量抉择对本人有启发的游戏。例如,去年玩了《文化6》《群星》,从中能感触到文化倒退的特点是「偶尔的」「忽然跃升的」。 玩这两个游戏给我一个很大的感触是:信息乃至人工智能时代的最大特色就是不确定性,技术的倒退历程出现非间断的状态,跳跃式的变化趋势越来越显著。 ChatGPT 3.5 问世后,AIGC 减速遍及,咱们从 ChatGPT 信息输入的品质和它能力的泛用性能够推断出,这又是一个技术革命性时刻的降临;这很像《文化6》里给咱们出现的「文化与科技的忽然跃升」,也很像是《群星》的游戏设定。人工智能突飞猛进的提高,和我对游戏的种种感悟十分类似,而这些感悟都源自我对技术追踪的好奇心,并由此放弃对技术最新动向的关注和学习,从而适应内部趋势和拥抱变动,把每一次变动都看成一次全新的机会。ONES:对于由 ChatGPT 开启的这一波人工智能利用遍及浪潮,如何影响你对新技术的抉择和使用? Kid:对于新技术的抉择,咱们的底层逻辑是不变的。这里所谓的底层逻辑,指的是这项技术是否能提供更高效的形式来解决日常问题,以及晋升工作效率。合乎这些简略而求实的特点,咱们就会思考采纳一项新的技术。 AIGC 是咱们当初高度关注的技术方向。例如,ChatGPT 3.5 和 4.0 在解决自然语言方面曾经十分欠缺,那么 ONES 日常工作中的自然语言相干的交互场景就能够失去优化。一个具体的小场景是,提交测试时测试工程师可能须要询问项目经理「提测的流程是怎么」的,但当初 AIGC 只有有足够的数据可能很好地答复这些问题。 ...

May 25, 2023 · 1 min · jiezi

关于程序员:分布式事务的21种武器-4

在分布式系统中,事务的解决散布在不同组件、服务中,因而分布式事务的ACID保障面临着一些非凡难点。本系列文章介绍了21种分布式事务设计模式,并剖析其实现原理和优缺点,在面对具体分布式事务问题时,能够抉择适合的模式进行解决。原文: Exploring Solutions for Distributed Transactions (4) 在不同业务场景下,能够有不同的解决方案,常见办法有: 阻塞重试(Blocking Retry)二阶段和三阶段提交(Two-Phase Commit (2PC) and Three-Phase Commit (3PC))基于后盾队列的异步解决(Using Queues to Process Asynchronously in the Background)TCC弥补(TCC Compensation Matters)本地音讯表(异步保障)/发件箱模式(Local Message Table (Asynchronously Ensured)/Outbox Pattern)MQ事务(MQ Transaction)Saga模式(Saga Pattern)事件驱动(Event Sourcing)命令查问职责拆散(Command Query Responsibility Segregation, CQRS)原子提交(Atomic Commitment)并行提交(Parallel Commits)事务复制(Transactional Replication)一致性算法(Consensus Algorithms)工夫戳排序(Timestamp Ordering)乐观并发管制(Optimistic Concurrency Control)拜占庭容错(Byzantine Fault Tolerance, BFT)分布式锁(Distributed Locking)分片(Sharding)多版本并发管制(Multi-Version Concurrency Control, MVCC)分布式快照(Distributed Snapshots)主从复制(Leader-Follower Replication)本文将介绍原子提交、并行提交以及事务复制三种模式。 10. 原子提交(Atomic Commitment)原子提交是一种事务性流程,确保事务中的所有操作都胜利实现,如果其中任何一个操作失败,则所有操作都失败。单个事务中可能波及多个流程。波及如下步骤: 开始事务(Begin Transaction) ,事务开始于客户端或用户执行一系列操作的申请,这些操作被视为单个事务。事务协调器治理整个事务,负责将事务标记为"正在进行中"。筹备阶段(Prepare Phase) ,事务协调器向事务中波及的所有参与者发送音讯,确保他们可能执行所申请的操作。参与者回复音讯,示意是否能够执行操作。如果任何参与者不能执行操作,事务将被终止。提交阶段(Commit Phase) ,如果事务中的所有参与者都能够执行操作,事务协调器将向所有参与者发送提交音讯,参与者依照批示执行操作,并回复"确认"音讯,表明曾经胜利实现了操作。确认阶段(Finalize Phase) ,事务协调器期待所有参与者回复"确认"音讯。如果所有参与者都响应"确认"音讯,事务协调器将事务标记为"已提交"。如果任何参与者响应失败,事务将被终止。停止阶段(Abort Phase) ,如果事务在任何阶段被停止,事务协调器将向所有参与者发送停止音讯,要求吊销可能曾经执行的任何操作。参与者用"确认"音讯进行回复,表明曾经胜利吊销了操作。import pymysql# Connect to the databaseconnection = pymysql.connect( host='localhost', user='user', password='password', db='mydatabase', autocommit=False)try: # Start the transaction with connection.cursor() as cursor: cursor.execute("START TRANSACTION") # Perform the SQL statements with connection.cursor() as cursor: cursor.execute("INSERT INTO products (name, price) VALUES ('Product A', 10)") cursor.execute("UPDATE customers SET balance = balance - 10 WHERE id = 1") # Commit the transaction connection.commit()except: # Rollback the transaction if there is an error connection.rollback()finally: # Close the database connection connection.close()示例代码 ...

May 25, 2023 · 4 min · jiezi

关于程序员:恭喜又一名小伙伴上岸大厂

大家好,我是冰河~~ 星球里有不少小伙伴通过本人的致力,认真学习和总结,最终拿到了本人心仪的大厂Offer!原本想给大家分享下的,然而,过来挺长一段时间冰河都处于“全天候工作状态”,常常加班到早晨12点当前,没工夫给大家分享这些内容,导致很多小伙伴反馈拿到大厂Offer后,我这边只是记录了下,没跟大家分享这些内容。 播种大厂Offer正好这两天有一个星球的小伙伴反馈其拿到两家公司Offer,要我帮忙剖析下抉择哪家。 其实对于这名星球的小伙伴来说,处于实习期,依据他的反馈:爱奇艺那边的Leader为他被动布局了学习路线,并且有问题能够问这位Leader。在面试交换过程中,一位面试官可能被动为应聘者布局学习路线,阐明他是违心让上司学习和提高的。而不像有些所谓的领导看到上司能力比本人强就过分担心,打压和排斥。 另一方面,如果一个Leader在后续工作过程中,违心带本人的上司,这一点在这个内卷十分重大的期间就显得更加宝贵了。总之,这位面试官的三观很正,给其点赞!所以,我是偏向于爱奇艺的。 面试真题这位小伙伴后续发来了百度的面试题,值得一提的是这名小伙伴与面试官交换的过程中,具体探讨了RPC的实现细节,而你想要的这些波及到分布式、高并发、高性能、高牢靠、高可扩大的RPC实现细节,星球都有。 一面自我介绍 初步面试: 算法题:无序数组的第k大优化工夫复杂度:设置 pq 大小计算工夫复杂度我的项目 我的项目介绍服务端和客户端启动的时候执行的流程别离是什么为什么肯定要用注册核心客户端是怎么调用服务的注解的设计思路是什么注解是怎么起作用的ZK的作用是什么ZK是怎么保障一致性的二面编程 把一个无序数组拆分成两个和雷同的子数组网络 tcp/ip三次握手四次挥手发送的信息及状态变动客户端被动敞开,从业务上来讲表白的意思是什么?从数据链路层面上表白了哪些含意发送代表啥? 建设链接是干啥的?Spring IoC讲下对它的了解被bean正文的办法注册的原理是什么说说你对AOP的了解SpringMVC 的实现的差别常见的注解, 比方我的项目中的自定义注解、元注解的运行原理实现原理,怎么起到作用在一个办法上定义一个注解,就能work吗? 扫描到这个注解之后,有哪些工作,怎么实现失效其余 比如说mysql有应用到吗? 没有数据库的应用教训?职业规划、学习布局并发是有过接触?缓存这块有什么理解?怎么做学习筹备的,平时是怎么学的理解哪些设计模式? 简略工厂、策略 形象工厂模式反诘:java做哪些业务 智能办公、平台 能力撑持三面自我介绍车间调度零碎,解决什么问题,遇到的最大的艰难论文,发表在哪个期刊,次要工作是什么,怎么利用的强化学习RPC 我的项目好了,这些面试题你都会吗?明天就到这儿吧,我是冰河,咱们下期见~~

May 25, 2023 · 1 min · jiezi

关于程序员:DevRun华为云昇腾联合云上应用开发AI训练营来咯

Serverless被业界称为云计算的下一个10年,“Serverless 简化了云计算的编程,其代表了程序员生产力的又一次的改革,如编程语言从汇编时代演变为高级语言时代。本体验营将带你理解无服务计算概念,学会如何基于Severless技术构建可用于集体学习以及生产开发的集体网站,一站式高效体验华为的云端利用开发!>> 点击疾速报名流动<<

May 24, 2023 · 1 min · jiezi

关于程序员:分布式事务的21种武器-3

在分布式系统中,事务的解决散布在不同组件、服务中,因而分布式事务的ACID保障面临着一些非凡难点。本系列文章介绍了21种分布式事务设计模式,并剖析其实现原理和优缺点,在面对具体分布式事务问题时,能够抉择适合的模式进行解决。原文: Exploring Solutions for Distributed Transactions (3) 在不同业务场景下,能够有不同的解决方案,常见办法有: 阻塞重试(Blocking Retry)二阶段和三阶段提交(Two-Phase Commit (2PC) and Three-Phase Commit (3PC))基于后盾队列的异步解决(Using Queues to Process Asynchronously in the Background)TCC弥补(TCC Compensation Matters)本地音讯表(异步保障)/发件箱模式(Local Message Table (Asynchronously Ensured)/Outbox Pattern)MQ事务(MQ Transaction)Saga模式(Saga Pattern)事件驱动(Event Sourcing)命令查问职责拆散(Command Query Responsibility Segregation, CQRS)原子提交(Atomic Commitment)并行提交(Parallel Commits)事务复制(Transactional Replication)一致性算法(Consensus Algorithms)工夫戳排序(Timestamp Ordering)乐观并发管制(Optimistic Concurrency Control)拜占庭容错(Byzantine Fault Tolerance, BFT)分布式锁(Distributed Locking)分片(Sharding)多版本并发管制(Multi-Version Concurrency Control, MVCC)分布式快照(Distributed Snapshots)主从复制(Leader-Follower Replication)本文将介绍Saga、事件驱动以及CQRS三种模式。 7. Saga模式(Saga Pattern) 治理跨多个微服务的长时间事务。将事务合成为一系列较小的、独立的步骤,每个步骤都由独自的微服务治理。蕴含如下步骤: 协调微服务负责接管事务初始申请。协调微服务通过向第一个负责处理事务的微服务发送音讯来启动事务。第一个微服务执行事务,并将音讯发送回协调微服务,反馈其是否胜利。如果第一步胜利,协调微服务将向负责事务下一步的微服务发送音讯。如果第一步失败,协调微服务发送弥补动作来吊销失败步骤的影响。反复步骤3-5,直到每个微服务要么实现其步骤,要么在失败时触发弥补操作(回滚)。一旦所有步骤都胜利实现,协调微服务就会发送一条音讯,表明整个事务曾经胜利。如果任何步骤失败并且触发了弥补操作(回滚),则协调微服务将发送一条音讯,批示整个事务失败。import pikaimport json# Define the RabbitMQ connection parameterscredentials = pika.PlainCredentials('guest', 'guest')parameters = pika.ConnectionParameters('localhost', 5672, '/', credentials)# Define the messages to be sent between servicesstart_order_message = {'order_id': '12345', 'items': [{'id': '1', 'name': 'item1'}, {'id': '2', 'name': 'item2'}]}payment_message = {'order_id': '12345', 'amount': 100.0}shipping_message = {'order_id': '12345', 'items': [{'id': '1', 'name': 'item1'}, {'id': '2', 'name': 'item2'}]}# Define the compensation messages to be sent in case of failurecancel_payment_message = {'order_id': '12345', 'amount': 100.0}cancel_shipping_message = {'order_id': '12345', 'items': [{'id': '1', 'name': 'item1'}, {'id': '2', 'name': 'item2'}]}# Define the function to send messages to the RabbitMQ brokerdef send_message(queue_name, message): connection = pika.BlockingConnection(parameters) channel = connection.channel() channel.queue_declare(queue=queue_name) channel.basic_publish(exchange='', routing_key=queue_name, body=json.dumps(message)) connection.close()# Define the function to handle the start of the orderdef start_order(): # Send the start order message to the Order service send_message('start_order', start_order_message)# Define the function to handle the payment of the orderdef payment(): try: # Send the payment message to the Payment service send_message('payment', payment_message) except Exception as e: # Send the cancel payment message to the Payment service in case of failure send_message('cancel_payment', cancel_payment_message) raise e# Define the function to handle the shipping of the orderdef shipping(): try: # Send the shipping message to the Shipping service send_message('shipping', shipping_message) except Exception as e: # Send the cancel shipping message to the Shipping service in case of failure send_message('cancel_shipping', cancel_shipping_message) raise e# Define the function to handle the cancellation of the orderdef cancel_order(): # Send the cancel payment message to the Payment service send_message('cancel_payment', cancel_payment_message) # Send the cancel shipping message to the Shipping service send_message('cancel_shipping', cancel_shipping_message)# Define the main function to execute the Sagadef execute_saga(): try: # Start the order start_order() # Perform the payment payment() # Perform the shipping shipping() except Exception as e: # Cancel the order in case of failure cancel_order() raise e# Call the main function to execute the Sagaexecute_saga()示例代码 ...

May 24, 2023 · 5 min · jiezi

关于程序员:阿里云云原生容器考试内容是什么考试费用是多少

容器是信息通信行业外部的根底单位,当初很多人都会考取相干的证书,来进步本人的职业竞争力,上面小编简略介绍一下容器相干内容,有须要的能够在认证大使上具体理解。 阿里云容器认证概述 阿里云云原生容器工程师认证(Alibaba Cloud Certified Professional - Cloud Container)是蕴含了云原生容器人才所需技能及常识的工程师认证,定义云原生容器畛域人才的考量规范,也是阿里巴巴云原生容器产品相干体系认证打算的外围局部。 阿里云容器认证内容 容器综述 容器服务 ACK 容器镜像服务 ACR 服务网格 ASM Serverless 容器服务 ASK 边缘容器服务 ACK@Edge 阿里云容器解决方案 阿里云容器考试事项 1、考试题型 单选题 70题 每题1分多选题 30题 每题1分 2、考试费用 1200 3、考试工夫 120min

May 24, 2023 · 1 min · jiezi

关于程序员:Ruby教程编程入门自学教程菜鸟教程免费教程分享

教程简介Ruby,一种简略快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,恪守GPL协定和Ruby License。它的灵感与个性来自于 Perl、Smalltalk、Eiffel、Ada以及 Lisp 语言。由 Ruby 语言自身还倒退出了JRuby(Java平台)、IronRuby(.NET平台)等其余平台的 Ruby 语言替代品。 Ruby入门教程 - 从简略的步骤理解Ruby,从根本到高级概念,包含概述,环境设置,语法,类,变量,运算符,正文,If ... else,case,除非,循环,文件, I / O,函数,对象,TK,范畴,迭代器,数组,字符串,办法,块,异样,面向对象,正则表达式,DBI,多线程,哈希,日期和工夫,模块,LDAP,Web服务,Web编程,发送电子邮件,套接字编程,脚本语言,预约义常量,关联工具。 教程目录Ruby教程Ruby - 概述Ruby - 环境设置Ruby - 语法Ruby - 类和对象Ruby - 变量,常量和文字Ruby - 运算符Ruby - 正文Ruby - if ... else,case,unlessRuby - 循环Ruby - 办法Ruby - 块Ruby - 模块和混合Ruby - 字符串Ruby - 数组Ruby - 哈希Ruby - 日期和工夫Ruby - RangesRuby - 迭代器Ruby - 文件I/O.Ruby - 例外Ruby - 面向对象Ruby - 正则表达式Ruby / DBI教程Ruby Web应用程序 - CGI编程应用Ruby发送电子邮件 - SMTPRuby - Socket编程Ruby - XML,XSLT和XPath教程应用Ruby的Web服务 - SOAP4RRuby - Tk指南Ruby - LDAP教程Ruby - 多线程Ruby - 内置函数Ruby - 预约义变量Ruby - 预约义常量Ruby - 相干工具Ruby - 有用的资源

May 24, 2023 · 1 min · jiezi

关于程序员:实力上榜ONES-荣获深圳市专精特新企业认定

近日,ONES 胜利入选 2022 年深圳市专精特新中小企业名单,这标记着 ONES 在研发治理畛域专业化、企业数字化水平、品质管理水平、研发翻新程度等多个方面失去充沛认可和必定。 深圳市专精特新企业评比是以工业和信息化部、国家统计局、国家倒退改革委、财政部联结印发的《中小企业划型标准规定》为政策领导,优先遴选专业化、精细化、特色化、新鲜化特色显著,创新能力强,倒退速度快,运行品质高,融资能力强,经济效益好的企业。入选「专精特新」的企业是企业群体中的优良代表,也是推动经济社会倒退的重要力量。 ONES 自 2015 年成立起,深耕研发治理畛域,打造出了更适宜中国企业的研发治理平台及服务,旗下产品笼罩需要收集、我的项目布局、软件研发、软件测试和上线交付等研发全生命周期,致力于帮忙企业晋升研发效力、保障交付品质、促成团队无缝合作。ONES 胜利帮忙浪潮软件、招商基金、中国电信、人民日报新媒体等多个行业的 500 强及标杆客户实现研发效力晋升。 一方面,ONES 保持自主翻新研发,凭借弱小灵便的产品组装能力和平台开放性,为不同研发治理场景、不同规模、不同行业的客户提供成熟解决方案;另一方面,在软件国产化的浪潮之下,ONES 积极响应信创号召,现已反对麒麟软件 NeoCertify、华为鲲鹏技术、达梦数据库多项根底软硬件适配,保障产品安全合规、自主可控。 作为国内当先的企业级研发治理平台,ONES 建设了精细化的治理流程,企业治理标准、知识产权治理健全,并通过自有管理工具实现全业务数字化治理。此外,凭借业余成熟的产品及服务,ONES 的产品取得多个权威认证,通过了 SOC2 Type1 平安审计、信息系统安全等级爱护三级认证、CMMI 3 级能力成熟度模型集成认证、可信云企业级 SaaS 认证、ISO9001 品质管理体系认证、ISO20000 信息技术服务管理体系认证、ISO27001 信息安全管理体系认证,有实力为客户提供平安稳固、值得信赖的产品和服务。 将来,ONES 将持续保持「助力企业更好更快地公布产品」的企业使命,充分发挥「专精特新」企业的示范引领作用,助力企业实现数字化降级。

May 24, 2023 · 1 min · jiezi

关于程序员:阿里云云原生微服务考什么费用多少钱

阿里云云原生微服务是阿里云旗下的认证,蕴含了云原生微服务人才所需技能及常识的工程师认证,定义行业云原生微服务畛域人才的考量规范,是阿里巴巴云原生微服务产品(利用托管平台、音讯队列、运维工具等)相干体系认证的外围局部。上面小编简略介绍一下,有须要的能够在认证大使上征询。 考试内容: 云原生微服务概述 企业级分布式应用服务 EDAS (ACM、ScheduleX) 音讯队列 RocketMQ 版 音讯队列 Kafka 版 Serverless 利用引擎 SAE 函数计算(Function Compute) MSE & GTS 业务实时监控服务 ARMS 性能测试 PTS 利用高可用服务 AHAS 题型:单选题 70题 每题1分多选题 30题 每题1分

May 23, 2023 · 1 min · jiezi

关于程序员:Axel-–-用于-Linux-的命令行文件下载加速器

动动发财的小手,点个赞吧! 如果您是那种喜爱下载和试用多个 Linux 发行版的人,咱们置信您会张开双臂欢送一个说到做到的下载加速器——一个依照其形容进行操作的下载加速器。 在本指南中,咱们将向您介绍 Axel,这是一个没有依赖项(除了 gcc 和 makeutils)的轻量级 wget 克隆。 尽管它的形容表明它特地实用于字节要害零碎,但 axel 能够装置在任何中央并且不仅能够用于通过 HTTP/FTP 链接同时下载多个文件,还能够放慢它们的速度。 装置正如咱们之前提到的,axel 不仅仅是另一个下载工具。它通过应用多个连贯从指标检索文件来减速 HTTP 和 FTP 下载,也能够配置为应用多个镜像。 如果这还不足以让你有能源去尝试,让咱们补充一下,axel 反对主动停止和复原在给定时间段后无响应或不返回任何数据的连贯。 此外,如果您有权这样做,您能够利用 axel 关上多个同时的 FTP 连贯到一个服务器,以减少每个连贯调配的带宽。 如果您不容许这样做或不确定,您能够改为关上多个连贯到独自的服务器并同时从所有服务器下载。 最初但同样重要的是,axel 与其余 Linux 下载加速器的不同之处在于它在下载时将所有数据放在一个文件中,而不是将数据写入独自的文件并在稍后阶段退出它们。 在 CentOS/RHEL 8/7 中,您须要启用 EPEL 存储库能力装置 axel: yum install epel-releaseyum install axel在 Fedora 中,它能够从默认存储库中取得。 yum install axel dnf install axel [On Fedora 23+ releases]在 Debian 及其衍生版如 Ubuntu、Linux Mint 中,能够间接应用 aptitude 装置 axel: aptitude install axel在 Arch Linux 和相干发行版(例如 Manjaro Linux 和 OpenSUSE Linux)上,您能够间接装置 axel: ...

May 23, 2023 · 1 min · jiezi

关于程序员:分布式事务的21种武器-2

在分布式系统中,事务的解决散布在不同组件、服务中,因而分布式事务的ACID保障面临着一些非凡难点。本系列文章介绍了21种分布式事务设计模式,并剖析其实现原理和优缺点,在面对具体分布式事务问题时,能够抉择适合的模式进行解决。原文: Exploring Solutions for Distributed Transactions (2)") 在不同业务场景下,能够有不同的解决方案,常见办法有: 阻塞重试(Blocking Retry)二阶段和三阶段提交(Two-Phase Commit (2PC) and Three-Phase Commit (3PC))基于后盾队列的异步解决(Using Queues to Process Asynchronously in the Background)TCC弥补(TCC Compensation Matters)本地音讯表(异步保障)/发件箱模式(Local Message Table (Asynchronously Ensured)/Outbox Pattern)MQ事务(MQ Transaction)Saga模式(Saga Pattern)事件驱动(Event Sourcing)命令查问职责拆散(Command Query Responsibility Segregation, CQRS)原子提交(Atomic Commitment)并行提交(Parallel Commits)事务复制(Transactional Replication)一致性算法(Consensus Algorithms)工夫戳排序(Timestamp Ordering)乐观并发管制(Optimistic Concurrency Control)拜占庭容错(Byzantine Fault Tolerance, BFT)分布式锁(Distributed Locking)分片(Sharding)多版本并发管制(Multi-Version Concurrency Control, MVCC)分布式快照(Distributed Snapshots)主从复制(Leader-Follower Replication)本文将介绍TCC弥补、本地音讯表/发件箱以及MQ事务三种模式。 4. TCC弥补(Try-Confirm-Cancel Compensation Matters) 用于解决跨多个服务的长时间事务。将一个简单事务合成为多个步骤,每个步骤都是一个独自的服务调用或数据库操作。事务中的每个步骤都有3个阶段: 尝试、确认和勾销。尝试(Try)阶段 —— 服务尝试执行操作,执行一系列查看,以确保执行操作是平安的。如果所有查看都通过,则执行该操作,并将状态保留在长期存储中。确认(Confirm)阶段 —— 服务确认操作胜利,验证事务状态,并确保满足所有依赖关系。如果所有内容都无效,则将长期状态提交给主数据库。勾销(Cancel)阶段 —— 如果在尝试阶段或确认阶段呈现谬误,将进入勾销阶段。服务将撤销在尝试阶段所做的更改,将状态复原到事务开始之前。import requestsclass OrderService: def __init__(self): self.session = requests.Session() def create_order(self, order_data): try: # Step 1: Reserve stock res = self.session.post('http://inventory-service/reserve-stock', json=order_data) res.raise_for_status() # Step 2: Charge payment res = self.session.post('http://payment-service/charge-payment', json=order_data) res.raise_for_status() # Step 3: Confirm order res = self.session.post('http://order-service/confirm-order', json=order_data) res.raise_for_status() except requests.exceptions.RequestException as e: # Step 4: Cancel order self.session.post('http://order-service/cancel-order', json=order_data) self.session.post('http://payment-service/refund-payment', json=order_data) self.session.post('http://inventory-service/release-stock', json=order_data) raise e示例代码 ...

May 23, 2023 · 4 min · jiezi

关于程序员:让AI替你打工GPT提升开发效率指南

腾小云导读开发者日常的整个工作流中,AI 大模型能做什么?ChatGPT 等 AI 大模型能不能通过开发者的指引,一步步实现从技术计划输入、编码、测试、公布到经营保护的整套流程?应用中有什么避坑点?本文从理论研发流程的各个环节登程,总结分享了 AI 大模型对研发效力的晋升实际。欢送围观~ 目录1 需要剖析2 技术计划3 编码4 测试5 公布6 经营7 开发者应用AI大模型的注意事项    7.1 准确性    7.2 幻觉    7.3 时效性    7.4 知识产权    7.5 平安隐衷和合规8 总结 01、需要剖析· 提取需要关键点 ChatGPT 通过对需要文档的剖析,主动提取要害需要和性能点,不便开发团队更好地了解我的项目需要。· 绘制流程图 通过总结和演绎需要单的内容,能够将需要单转化成流程图,不便了解。 @startumlactor 用户actor 发起者 actor 参团者 box "拼多多平台" #LightBlue participant "商品详情页" as G participant "拼团发动/参加" as P participant "领取页面" as Pay participant "订单确认" as O participant "拼团胜利/失败" as S end box 用户 -> G : 查看商品详情 G -> P : 抉择发动拼团或参加别人拼团 P -> Pay : 跳转至领取页面 Pay -> O : 领取胜利,生成订单 O -> S : 拼团胜利或失败 note over P : 发动拼团:创立新拼团\n参加拼团note over S : 拼团胜利:人数达到要求\n拼团失败:超时未达到人数要求 @enduml ...

May 23, 2023 · 1 min · jiezi

关于程序员:通过CodeArts-IDE插件调用API高效合成语音

试验内容: CodeArts IDE定位华为云开发者桌面,是利用华为自研IDE内核技术,面向华为云开发者提供的智能化可扩大桌面集成开发环境(IDE),内置华为自研JAVA语言开发反对,搭载华为云行业和产业开发套件,提供极致的一站式用云和开发体验。 本试验基于华为云自研CodeArts IDE,领导用户通过应用华为云API,来实现一个文字合成语音的利用。试验分为了初阶、高阶、进阶三个版本。 初阶版:预置好了一段工程示例,用户通过应用华为云API来实现语音合成的性能,从而合成语音文件高阶版:领导开发者如何利用华为云提供的SDK来编写代码,从而实现语音合成的程序试验目标: 通过实现此试验让开发者学习应用华为云CodeArts IDE,通过其弱小性能实现利用开发通过实现此试验让开发者更加理解华为云API,基于华为云弱小的API能够实现更多简单的性能和利用实现的注意事项: 1.用户须要实名认证能力收费体验 2.用户如果被华为云判断为黑产用户,则没有收费体验的权限 3.用户收费体验示例,必须进入体验页面 前提条件:华为云账号注册&实名认证 请注册华为云账号并实现实名认证,试验过程中请应用Chrome浏览器实现相干操作。 华为云账号注册步骤请参考:https://support.huaweicloud.com/usermanual-account/zh-cn_topi... 实名认证操作步骤请参考:https://support.huaweicloud.com/usermanual-account/account_au... CodeArts IDE Online 云端体验 “点击拜访CloudIDE产品首页”(需登录华为云账号),点击“收费体验云开发”按钮,进入IDE界面 CodeArts IDE(客户端)体验 1.1.1 下载CodeArts IDE(客户端)“点击此处下载”CodeArts桌面版(需登录华为云账号),下载实现后装置到本地; 1.1.2 登录华为云,体验API装置实现后,关上CodeArts IDE客户端,点击右上角登录按钮,登录华为云账号; 点击客户端右侧边栏中的华为云API插件,理解集成的华为云API能力 1.2 初阶版:体验语音合成API,合成一段语音1.2.1 环境筹备(一键式小程序)点击此处下载一键式环境搭建小程序到任意目录(此目录不蕴含中文目录,否则可能会呈现未知问题) 此小程序依赖你本地装置了7zip/WinRAR等解压工具,双击关上,如果你曾经装置,输出y回车。 此时小程序会将2.2.2中的代码工程以及OpenJDK下载到小程序所在的目录中,并实现解压,关上代码工程,为工程配置JDK(如果呈现未知问题,也能够依照2.2.2中一步步手动操作) 1.2.2 环境筹备(手动初始化)下载OpenJDK11到本地目录,而后解压到任意门路(须要记住此门路) 点击下载工程,解压到任意目录在CodeArts IDE客户端点击“文件”-> “关上…”、“关上文件夹”,找到刚刚的工程目录,抉择文件夹,而后抉择此工程内关上 第一次加载Java插件须要实现初始化,须要期待一会儿,期待右下角的Initializing Java Language Server Features实现后开始下一步 为工程配置JDKJava Smart Assist插件加载实现后,此时右下角会显示Language Server is ready 以及 提醒为配置JDK。 点击左下角的“治理”按钮,抉择“设置”,在弹出设置选项中顺次抉择“Java SmartAssist开发套件”->“Project Settings”-> “Project SDK目录抉择”-> 找到刚刚JDK的解压目录 ->抉择文件夹,此时工程右下角会显示加载JDK,须要稍等片刻 ...

May 23, 2023 · 1 min · jiezi

关于程序员:腾讯认证TCA都有什么内容容易通过吗

对于当初的社会来说, 信息通信技术是一个很热门的行业,很多人甚至会在毕业后抉择再教育,来取得进入这个行业的机会,同时业余认证也是必不可少的背书工具,而腾讯云的认证在业界内有很高的名气,像是咱们日常生活中罕用的软件,都是腾讯旗下的,尤其是游戏和社交方面,目前国内观看人数最多的电竞游戏,也是由腾讯云提供的技术支持。上面大使简略介绍一下,有须要的人能够在认证大使上具体理解。 腾讯云认证概述 1、行业权威:腾讯在行业领先地位,认证同样处于行业权威; 2、集体能力增值:取得认证可晋升自我价值,还可取得行业认可; 3、针对性强:云计算 AI 大数据等行业,知识点实在匹配岗位; 4、优先就任机会:通过认证优先取得腾讯云,及合作伙伴面试机会。 腾讯云TCA认证分类 1、云运维 腾讯云运维工程师培训将通过实践精讲与上机试验相结合的形式,系统性的介绍如何应用腾讯云监控台在腾讯云平台上开明、部署利用零碎,并进行根底保护。 考试内容: 腾讯云运维概述腾讯云产品概览和控制台应用办法。 平安拜访腾讯云云服务器平安管理机制和拜访治理。 弹性计算部署实战包含云服务器实例、云服务磁盘和云服务器镜像的操作演示和实操。 云网络部署实战包含公有网络和子网、路由表,弹性网卡,网络连通,平安和域名治理的操作演示和实操。 数据存储部署实战包含对象存储、文件存储、存储网关、归档存储和云硬盘的配置演示和实操。 云数据库配置实战包含关系型数据库(MySQL、MariaDB、SQL Server、PostgreSQL)、弹性缓存Redis、文档数据库MongoDB、分布式数据库DCDB的配置演示和实操。 存储&云数据库部署实战包含迁徙数据到腾讯云存储&云数据库演示和实操。 部署可扩大&高可用业务实战包含弹性伸缩、负载平衡、CDN减速的配置演示和实操。 云上业务监控云监控CM的性能介绍和演示。 2、云架构 腾讯云架构工程师培训将通过实践精讲与上机试验相结合的形式,系统性的介绍云架构设计的根本准则和办法,并联合腾讯云产品实际高可用、高性能、分层解耦的架构设计,为腾讯云架构设计师提供零碎和全面的培训课程。 考试内容: 腾讯云产品常识 云计算的倒退历史、基本概念及技术架构以及腾讯云产品概览。 云架构设计根底 云架构设计的高可用、高平安和老本优化准则、正当的设计方案案例。 设计腾讯云基础架构 部署区域抉择的办法和思考因素、服务性能抉择的办法和思考因素、网络环境设计的步骤和关键因素、数据存储设计的步骤和关键因素。 设计高可用的云架构 高可用设计准则,利用负载平衡、弹性伸缩和无服务器架构实现高可用设计架构。 设计分层解耦的云架构 分层解耦的设计理念和基本概念、设计组件间通信计划、设计分布式服务框架方法论,API网关基本功能和应用场景。 设计高性能的云架构 利用CDN实现数据减速设计方案,利用动静减速网络实现网络减速设计方案。 架构设计优化 常见云架构设计问题,云架构改良计划。 3、云开发 腾讯云开发工程师培训将通过实践精讲与上机试验相结合的形式,系统性地介绍传统利用迁徙上云的劣势及其实现,以及基于腾讯云产品进行云原生利用和散布式微服务设计与开发,从而实现平安可扩大的云利用程序开发。您还将理解如何应用腾讯云TCB,进行微信小程序的无服务器后端开发,以及如何应用图像识别等人工智能技术进行利用程序开发。同时还将理解DevOps的理念及麻利项目管理实际。 考试内容: 云开发根底传统利用开发的瓶颈、 云计算根底和云开发根底。 本地利用迁徙到云端本地利用上云的劣势、本地利用的迁徙步骤、应用云服务器部署利用和应用云容器服务部署利用。 云原生利用设计与开发云原生的概念,基于云数据库、对象存储和云API进行云原生利用的设计与开发。 散布式微服务设计与开发微服务根底,应用分布式缓存、音讯队列、腾讯微服务平台、负载平衡和API网关进行微服务的设计与开发。 小程序云及人工智能利用开发小程序简介、无服务器云函数、小程序云开发和人工智能利用开发。 DevOpsDevOps根底、麻利项目管理和实现自动化开发

May 22, 2023 · 1 min · jiezi

关于程序员:分布式事务的21种武器-1

在分布式系统中,事务的解决散布在不同组件、服务中,因而分布式事务的ACID保障面临着一些非凡难点。本系列文章介绍了21种分布式事务设计模式,并剖析其实现原理和优缺点,在面对具体分布式事务问题时,能够抉择适合的模式进行解决。原文: Exploring Solutions for Distributed Transactions (1)") 因为良好的可伸缩性和容错性,分布式系统当初变得越来越广泛,但在分布式系统中保护数据一致性可能十分艰难,尤其是在在须要解决跨多个节点的事务时。接下来咱们就来探讨那些能够确保分布式系统数据一致性的技术、模式和算法。 分布式事务波及多个节点,它们一起工作以执行单个事务。确保所有节点对事务后果达成统一,同时保持数据一致性是一项具备挑战性的工作。传统事务的ACID(原子性、一致性、隔离性、持久性)属性在分布式环境中变得更加难以实现。 本文旨在全面介绍可用于保护分布式系统数据一致性的不同办法,探讨每种办法的优缺点,以及在什么场景下实用。 在不同业务场景下,能够有不同的解决方案,常见办法有: 阻塞重试(Blocking Retry)二阶段和三阶段提交(Two-Phase Commit (2PC) and Three-Phase Commit (3PC))基于后盾队列的异步解决(Using Queues to Process Asynchronously in the Background)TCC弥补(TCC Compensation Matters)本地音讯表(异步保障)/发件箱模式(Local Message Table (Asynchronously Ensured)/Outbox Pattern)MQ事务(MQ Transaction)Saga模式(Saga Pattern)事件驱动(Event Sourcing)命令查问职责拆散(Command Query Responsibility Segregation, CQRS)原子提交(Atomic Commitment)并行提交(Parallel Commits)事务复制(Transactional Replication)一致性算法(Consensus Algorithms)工夫戳排序(Timestamp Ordering)乐观并发管制(Optimistic Concurrency Control)拜占庭容错(Byzantine Fault Tolerance, BFT)分布式锁(Distributed Locking)分片(Sharding)多版本并发管制(Multi-Version Concurrency Control, MVCC)分布式快照(Distributed Snapshots)主从复制(Leader-Follower Replication)本文将介绍阻塞重试、2PC/3PC、后盾队列三种模式。 1. 阻塞重试(Blocking Retry)解决与近程服务或资源交互时可能产生的谬误或失败。当产生谬误时,能够主动重试,通常在重试之前会期待一段时间,重试直到操作胜利或达到最大重试次数为止。业务执行代码同步期待操作实现(胜利或失败),而后再尝试重试操作。这意味着执行操作的线程在期待操作实现时被阻塞,在操作实现或失败之前,不能在该线程上执行其余工作。在Python中应用retrying库实现阻塞重试。import retrying@retrying.retry(wait_fixed=1000, stop_max_delay=10000)def my_function(): # code to retry goes here # if this function throws an exception, it will be retried according to the parameters specified above示例代码: ...

May 22, 2023 · 3 min · jiezi

关于程序员:数据驱动运营增长

利用数据来剖析、优化和晋升产品或服务的各个方面,从而实现业务指标的办法叫数据驱动经营增长。用好数据,在经营中能精准地定位用户需要、痛点、偏好和行为,细分用户群体以提供个性化的产品或服务,精细化地治理和优化每一个环节和指标,以进步用户满意度、留存率、转化率、支出等。更多的益处还有能帮忙企业更主观、迷信、高效地做出决策,更无效地分配资源和投入,更灵便地应答市场变动和竞争压力,更继续地发明价值和增长。 那么如何施行数据驱动经营增长?一般来说分为以下几个步骤: 明确业务指标和要害指标 企业想要达成的具体、可量化、有时限的后果,比方晋升用户量、增加收入、降低成本等。要害指标是指可能掂量业务指标是否达成的数据指标,如用户数、收入额、老本率。明确业务指标和要害指标能够帮忙企业聚焦重点,制订正当的打算,评估执行成果。 收集整理相干数据 通过各种渠道和工具,获取并存储与业务指标和要害指标相干的用户行为数据、用户反馈数据、渠道数据、市场数据。收集并整顿相干数据帮忙企业建设残缺的数据库,为后续的剖析和利用提供根底。 可视化数据 将简单的数据转化为直观的模式,像转化漏斗图、留存图表、用户分群模型等,从中发现问题、机会、趋势和法则。可视化并剖析数据能够帮忙企业深刻了解用户和市场,发现劣势和劣势,找出改良点和突破点。 开掘并利用数据 从海量的数据中提取有价值的信息和洞察,并依据这些信息和洞察制订策略、执行计划、评估成果和继续改良,如A/B测试、多变量测试、机器学习等。开掘并利用数据能够帮忙企业验证假如,优化产品或服务,晋升用户体验,实现业务增长。 以下是Airbnb应用数据驱动经营增长办法的胜利案例:Airbnb是一个在线短租平台,通过连贯房东和房客,提供寰球各地的住宿抉择。Airbnb在创建之初遇到了很多艰难,比方流量少、转化率低、支出微薄等。为了解决这些问题,Airbnb利用了大数据来优化其产品和服务。比方: 一个问题:房源照片品质不佳。Airbnb收费为房东提供业余摄影服务,通过A/B测试验证了这一动作对于转化率的显著晋升。 一个机会:国内市场潜力微小。Airbnb决定进行国际化扩张,通过多变量测试优化了其网站设计和本地化策略。 一个趋势:社交媒体对于品牌推广的影响力越来越大。Airbnb增强其社交媒体营销,通过机器学习建设了一个举荐零碎,依据用户社交网络信息举荐适合的房源。 通过以上等一系列的数据驱动经营增长动作,Airbnb胜利地从一个小众平台成长为一个寰球当先的短租平台。

May 22, 2023 · 1 min · jiezi

关于程序员:Flutter-Overlay-你用上了么

Flutter Overlay 你用上了么<img src="https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/05/019d70aac9f69a63abd4fb93d169de05.jpeg" alt="Flutter overlay did you use it?" style="width:90%;" /> 前言Flutter中的Overlay是一个用于在屏幕上显示浮层的组件。它能够用来在应用程序中创立弹出窗口、提示框、菜单、对话框等等。 Overlay通常用于在用户与应用程序交互时显示临时性的UI元素,例如:用户点击按钮时显示下拉菜单、用户长按屏幕时显示上下文菜单、显示正告或谬误音讯等等。 Overlay通常蕴含一个Stack布局,每个浮层都是一个Positioned widget,能够增加到Stack中。这样,能够将多个浮层叠加在一起,并管制它们的档次关系。 Flutter中的Overlay能够让开发者轻松创立简单的UI,同时还能够放弃应用程序的性能和响应度。 本文中提供的代码示例演示了如何在Flutter中应用Overlay制作工作覆盖层。Overlay包含两个根本组件:OverlayState和OverlayEntry。OverlayState治理所有OverlayEntry,OverlayEntry定义覆盖层中的内容。在示例中,OverlayEntry蕴含一个带有文本和色彩的容器,能够在屏幕上显示。这些条目能够通过OverlayState的insert和remove办法增加和删除。 原文 https://ducafecat.com/blog/flutter-overlay-did-you-use-it<img src="https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/05/15894a6d156e574b80aa96dc62a13740.png" alt="image-20230518102503338" style="width:50%;" /> 视频https://www.bilibili.com/video/BV1qX4y1C7rb/ 代码https://github.com/ducafecat/flutter_develop_tips/tree/main/flutter_application_overlay 参考https://api.flutter.dev/flutter/widgets/Overlay-class.html https://api.flutter.dev/flutter/widgets/OverlayEntry-class.html OverlayEntryOverlay 通过将独立的子窗口小部件插入到重叠的堆栈中,使它们在其余窗口小部件之上“浮动”可视元素。笼罩容许每个小部件应用 OverlayEntry 对象治理它们在笼罩中的参加。 构造函数OverlayEntry({ required this.builder, bool opaque = false, bool maintainState = false,})builder:此属性用于此条目,并将在条目地位的笼罩中蕴含此构建器构建的小部件。opaque:此属性用于获取bool值,该值决定此条目是否阻止整个笼罩。如果条目申明为不通明,则为了提高效率,除非它们具备maintainState设置,否则笼罩将跳过在该条目上面构建条目。maintainState:如果您须要在OverlayEntry中应用有状态的小部件,那么您须要将maintainState设置为true,以便小部件能够放弃其状态并接管生命周期办法。如果您只是在OverlayEntry中显示一个动态小部件,则能够将maintainState设置为false,以便小部件能够开释内存和资源,不会对性能产生过多影响。OverlayEntry办法 只有一个OverlayEntry的办法 remove:此办法用于从覆盖层中删除此条目OverlayStateOverlay的以后状态用于将OverlayEntries插入覆盖层中。 OverlayState办法debugIsVisible:此办法用于查看给定的OverlayEntry是否可见,并返回布尔值。insert:此办法用于将给定的OverlayEntry插入覆盖层中。insertAll:此办法用于获取OverlayEntries的List,并将所有条目插入覆盖层中。您还能够指定上述和下述属性以阐明要插入条目标程序。rearrange:它能够重新排列以后在屏幕上叠加的所有小部件。具体来说,rearrange办法会将最初增加的OverlayEntry小部件挪动到最下面,并将其余小部件挪动到上面。这能够用于确保最新的OverlayEntry始终位于最下面,并且能够接管用户的触摸事件等。步骤第一步:成员变量 /// overlay 状态 OverlayState? overlayState; /// overlay 层汇合 List<OverlayEntry> entriesList = []; @override void initState() { super.initState(); // 获取 overlay 状态 overlayState = Overlay.of(context); } @override void dispose() { // 销毁 overlayState?.dispose(); super.dispose(); }第二步:随机层显示 // 随机地位显示层 void showRandomOverlay(BuildContext context) { // 随机色彩 final bgColor = Color.fromARGB( 255, 1 + Random().nextInt(254), 1 + Random().nextInt(254), 1 + Random().nextInt(254), ); // 屏幕宽度 final screenWidth = MediaQuery.of(context).size.width; // 随机屏幕高度 final randomHeight = MediaQuery.of(context).size.height * Random().nextDouble(); OverlayEntry? overlayEntry; overlayEntry = OverlayEntry(builder: (context) { return Positioned( // 指定地位 left: 0, top: randomHeight, child: GestureDetector( // 点击删除 onTap: () { overlayEntry?.remove(); entriesList.remove(overlayEntry); }, // 背景随机色 child: Container( width: screenWidth, height: 100, color: bgColor, child: Center( // 提醒文字 child: Text( "这是一个 overlay ${Random().nextInt(100)} 层, 点击敞开", style: const TextStyle( color: Colors.white, fontSize: 20, decoration: TextDecoration.none, ), ), ), ), ), ); }); overlayState?.insert(overlayEntry); entriesList.add(overlayEntry); }第三步:管制按钮 // 管制按钮 Widget _buildBtns() { return Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ // 随机新增 ElevatedButton( onPressed: () => showRandomOverlay(context), child: const Text("随机新增"), ), // 敞开所有 ElevatedButton( onPressed: () { for (final entry in entriesList) { entry.remove(); } entriesList = []; }, child: const Text("敞开所有"), ), // 随机排序 ElevatedButton( onPressed: () { // 从屏幕上移除 for (final entry in entriesList) { entry.remove(); } // 应用Random类创立随机数生成器 Random random = Random(); // 应用List的sublist()办法创立一个新列表 List<OverlayEntry> shuffledEntries = entriesList.sublist(0); // 调用List的shuffle()办法,传入一个随机数生成器 shuffledEntries.shuffle(random); // 插入界面 overlayState?.insertAll(shuffledEntries); }, child: const Text("随机排序"), ), ], ); }最初:主视图显示 // 主视图 Widget _mainView() { return Padding( padding: const EdgeInsets.only(top: 100), child: Align( alignment: Alignment.topCenter, child: _buildBtns(), ), ); } @override Widget build(BuildContext context) { return Scaffold( body: _mainView(), ); }残缺代码lib/overlay_view.dart ...

May 22, 2023 · 3 min · jiezi

关于程序员:华为云应用运维管理平台获评中国信通院可观测性评估先进级

近日,华为云利用运维治理平台参加了中国信息通信研究院(以下简称“中国信通院”)主办的“稳保口头”的可观测性平台能力评估。通过中国信通院的测验,华为云利用运维治理平台满足云上软件系统稳固-可观测性平台技术要求,达到了可观测性平台技术测验的先进级程度。 作为云计算和软件的权威评估机构,中国信通院在可观测性平台和工具的评测中,以通信行业标准《可观测性平台技术要求》为根据,主观实在地评估了厂商的可观测能力程度。经中国信通院的粗疏评估,华为云利用运维治理平台在数据采集、数据处理、数据利用、平台运维这4项测验中,满足了可观测性平台先进级能力要求,这也意味着华为云在可观测性畛域曾经达到业内领先水平。 图1 可观测性平台能力 华为云利用运维治理平台是云上利用的一站式立体化运维治理平台,实时监控利用及相干云资源,采集并关联资源的各项指标、日志及事件等数据独特剖析利用衰弱状态,提供灵便的告警及丰盛的数据可视化性能,帮忙用户及时发现故障,全面把握利用、资源及业务的实时运行状况。 图2 华为云利用运维治理平台  一、牢固的基石——利用资源管理和采集治理 利用资源管理传统信息技术基础设施库(Information Technology Infrastructure Library,简称ITIL)流程中面向基础设施资源的治理形式,易造成各运维服务之间数据割裂、信息不统一等问题。 华为云利用运维治理平台的利用资源管理(简称CMDB)是基于DevOps理念打造的面向利用全生命周期的资源管理平台,是古代自动化运维的基石服务,对立集中管理资源对象与利用之间的关系。 利用资源管理CMDB以利用为核心,实现多层级利用、子利用、组件到环境的模型治理,建设利用与云资源依赖关系。 通过利用资源管理,能够找到利用与上级微服务以及部署在不同环境(开发环境、测试环境或生产环境等)下的资源实例,包含ECS、RDS、ELB、CCE等云服务实例,为利用监控、告警关联剖析以及自动化运维提供配置数据。同时也反对通过凋谢配置数据接口,辅助第三方零碎运维场景建设。 图3 利用资源管理能力示意 采集治理 作为数据的起源,采集插件至关重要。华为云利用运维治理平台提供无侵入式采集插件,用户无需批改利用代码,只须要部署探针包,批改相应的利用启动参数,就能对利用进行全方位的数据采集,以便全面把握利用的运行状况,采集范畴包含但不限于: 1.根底资源:蕴含云主机、容器、网络等;2.中间件:蕴含数据库、音讯队列、利用容器、存储、日志等;3.IOT设施:蕴含各种边缘设施、采集的数据范畴包含指标等;4.前端组件:蕴含H5、ios、android、小程序等;5.后端组件:蕴含java、python、nodejs、c#、go等。 另外华为云利用运维治理平台还提供插件生命周期治理能力,不同的插件分工采集不同的数据,用户能够按需装置、降级、卸载各类插件。 二、弱小的外围——指标监控、云日志、利用性能治理 随着云原生技术逐步遍及,传统监控零碎正朝可观测性零碎演进,业界对可观测性的共识,是基于可观测性的三大支柱“metrics、logging、tracing”。 华为云利用运维治理平台将云监控服务(Cloud Eye,简称CES)的指标数据、云日志服务(Log Tank Service,简称LTS)的日志数据、利用性能治理服务(Application Performance Management,简称APM)的性能剖析数据进行对立监控,从而提供了对云资源、利用和性能的全面监控和诊断。 指标——云监控服务CES 云监控CES是华为云上资源监控的服务,提供80多种云服务、上千类资源指标,涵盖弹性云服务器、带宽、数据库等服务,满足用户各类云上资源监控需要。CES可提供多聚合形式、最长六个月的历史监控图表,不便用户查看近半年业务监控数据。 除了云监控提供的云服务指标外,用户还能够自定义上报业务指标,通过Open API、SDK形式上报,可更全面、深刻地监控业务运行状况。 日志——云日志服务LTS 在海量数据的时代,让贵重的原始日志数据躺在磁盘里日渐寂静,无奈在云时代“一展宏图”,齐全是湮没了日志数据的价值。而应用华为云日志服务就能够从我的项目初始便赋予日志数据搜寻、剖析和摸索能力,让日志数据活起来、变有用。华为云日志服务提供日志采集、秒级搜寻、海量存储、结构化解决、转储和可视化图表等各项能力,可满足利用运维、可视化剖析、等保合规等各类利用场景。 场景1日志剖析、保障系统安全:实时收集零碎产生的日志数据,对日志数据进行剖析、归档,反对每天百TB级日志的接入,十亿级日志秒级搜寻 场景2日志审计:通过实时收集日志,防止数据被误删和被非法入侵者删除的可能性,同时将日志转储长期存储,满足合规要求 场景3 问题诊断:零碎呈现问题或故障时,通过日志疾速查问、精准定位问题所在 场景4 零碎改良:通过阻塞记录发现站点性能瓶颈,优化缓存策略、数据传输策略 图4 日志服务示意图 性能——利用性能治理服务APM 在华为外部,有上百万微服务应用着利用性能治理服务APM,在日常性能诊断、故障定位和排查等场景中,通过应用APM实现故障1分钟感知、5分钟定界、10分钟恢复能力的构筑。APM无力地撑持了华为云、终端、车、能源等各类型产品的利用性能治理和日常运维保障。 当初,华为云将外部多年积攒的利用性能治理能力积淀到华为云利用性能治理服务APM上,向云上用户提供端到端的全链路性能治理服务,蕴含前端监控、利用性能监控、全面拥抱开源生态,帮忙用户在简单的业务环境下疾速发现利用性能问题,升高MTTR(均匀故障复原时长),全面掌控利用的性能健康状况。 图5 利用性能治理拓扑示意  三、丰盛的周边能力——对立监控大盘、容器洞察、告警降噪 华为云利用运维治理平台除了牢固的基石及弱小的外围,还提供了丰盛的周边能力。对立监控大盘集中管理云监控、云日志、性能、Prometheus等多维度可观测性数据源,提供对立监控与剖析,用户能够将来自不同数据源定义在一张监控大屏中显示,对立治理告警等。 图6 对立监控大盘示意 容器洞察 无缝对接华为云云容器引擎CCE,基于原生Kubernetes容器和集群模型,用户可通过Cluster、Namespace、Deployment、POD和Container进行逐渐运维剖析,包含Prometheus监控、日志和性能治理等;反对将Promethues服务器近程接入(Remote-Write)到华为云利用运维治理平台,还可通过PromQL查问原生指标并配置告警。 图7 容器洞察示意  告警降噪 华为云利用运维治理平台的告警降噪性能,提供分组、克制和屏蔽告警降噪策略,大大减少了运维人员须要关注的告警量,减少了要害告警、高优先级问题的关注度,突出告警的重点问题,进步告警的可靠性,缩小误判和漏警的状况,节俭了人力和工夫老本,进步了工作效率,无效保障系统的稳定性和安全性。 图8 告警降噪示意 如果软件系统外部状况都不可观测,更无从谈起故障剖析和零碎改良等稳定性保障伎俩。依靠牢固的基石、弱小的外围及丰盛的周边能力,华为云利用运维治理平台助力企业进步软件系统的品质和效率,晋升用户体验和要害业务的稳定性,优化业务流程和方向,进步业务决策的品质。

May 22, 2023 · 1 min · jiezi

关于程序员:为什么以及如何在多重假设检验中调整-P-值

动动发财的小手,点个赞吧! 低于某个阈值的 P 值通常用作抉择相干特色的办法。上面的倡议倡议如何正确应用它们。 当咱们在多个特色上反复测试模型时,就会产生多重假设检验,因为取得一个或多个谬误发现的概率会随着测试次数的减少而减少。例如,在基因组学畛域,科学家们常常想测试数千个基因中的任何一个是否对感兴趣的后果具备显着不同的活性。 在本文中,咱们将介绍几种通过调整模型 p 值来解释多重假设检验的风行办法: False Positive Rate (FPR)Family-Wise Error Rate (FWER)False Discovery Rate (FDR)并解释何时应用它们是有意义的。 本文档能够用下图概括: 测试数据咱们将创立一个模仿示例,以更好地了解对 p 值的各种操作如何导致不同的论断。要运行此代码,咱们须要装置有 pandas、numpy、scipy 和 statsmodels 库的 Python。 出于本示例的目标,咱们首先创立一个蕴含 1000 个特色的 Pandas DataFrame。其中 990 个 (99%) 的值将从均值 = 0 的正态分布生成,称为 Null 模型。 (在上面应用的函数 norm.rvs() 中,应用 loc 参数设置均值。)其余 1% 的特色将从均值 = 3 的正态分布生成,称为非空模型。咱们将应用这些来示意咱们想要发现的乏味特色。 import pandas as pdimport numpy as npfrom scipy.stats import normfrom statsmodels.stats.multitest import multipletestsnp.random.seed(42)n_null = 9900n_nonnull = 100df = pd.DataFrame({ 'hypothesis': np.concatenate(( ['null'] * n_null, ['non-null'] * n_nonnull, )), 'feature': range(n_null + n_nonnull), 'x': np.concatenate(( norm.rvs(loc=0, scale=1, size=n_null), norm.rvs(loc=3, scale=1, size=n_nonnull), ))})对于 1000 个特色中的每一个,如果咱们假如它是从 Null 散布生成的,则 p 值是察看到该值至多一样大的概率。 ...

May 21, 2023 · 3 min · jiezi

关于程序员:使用Python编写Wox插件

最近正再应用Wox,这个软件还挺高效的,而且还能本人编写一些插件,这里打算本人写点插件用用. Wox官网 Plugin (wox.one)插件,此外官网也提供了编写文档,编写插件 · GitBook (wox.one)提供Python和C#两种优良的语言编写计划。我这里就应用Python写了. 首先须要做的是创立新的虚拟环境作隔离,个别应用python自带的venv或者virtualenv,当然也有比拟新的pipenv和被认为比拟重的Anaconda,后两者也是包管理器,性能比拟多。 以下是创立虚拟环境的代码示例: 应用 virtualenv: # 装置 virtualenvpip install virtualenv# 创立名为 myenv 的虚拟环境virtualenv myenv# 激活虚拟环境(Windows 平台)myenv\Scripts\activate.bat# 激活虚拟环境(Linux 和 Mac 平台)source myenv/bin/activate# 退出虚拟环境deactivate应用 venv: # 创立名为 myenv 的虚拟环境python3 -m venv myenv# 激活虚拟环境source myenv/bin/activate# 退出虚拟环境deactivate这一步还是很重要的,环境不能乱。 我的项目构造能够看看官网案例以及其余插件的目录构造 在创立Wox的时候,用户必须在插件的根目录形式一个名为plugin.json的文件。该文件中蕴含了该插件的一些根本信息。 plugin.json的格局如下: 请在粘贴上面代码的时候移除其中的正文 重点是触发词ActionKeyword以及IcoPath插件图标,ID须要一个32位不与其余插件反复的随机数,本人生成即可。 { "ID":"D2D2C23B084D411DB66FE0C79D6C2A6H", //插件ID,32位的UUID "ActionKeyword":"wpm", //插件默认的触发关键字 "Name":"WPM", //插件名字 "Description":"Wox Package Management", //插件介绍 "Author":"qianlifeng", //作者 "Version":"1.0.0", //插件版本,必须是x.x.x的格局 "Language":"csharp", //插件语言,目前反对csharp,python "Website":"http://www.getwox.com", //插件网站或者集体网站 "IcoPath": "Images\\pic.png", //插件图标,门路是绝对插件根目录的门路 "ExecuteFileName":"PluginManagement.dll" //执行文件入口,如果是C#插件则填写DLL门路,如果是pyhton则填写python文件门路}而后就是主文件以及插件图标文件 ...

May 21, 2023 · 2 min · jiezi

关于程序员:ChatGPT-官方-iOS-应用上线|微软-CEO-反驳马斯克|思否周刊

40 S 新闻速递ChatGPT 官网 iOS 利用上线Meta 官宣 AI 芯片我的项目 MTIA,首款定制 AI 芯片超低功耗微软 CEO 反驳马斯克:咱们没有管制 OpenAI特斯拉人形机器人个体出街!已与 FSD 算法买通OpenAI 创始人呐喊美国国会为 AI 零碎制订平安规范AI 绘画工具 Midjourney 官网中文版在 QQ 开启内测申请Google 公布 AI 文本音乐生成工具 MusicLM.NET 8 Preview 4JavaScript 运行时 Bun 0.6 公布SQLite 3.42.0 公布Rocky Linux 9.2 现已公布Ember.js 5.0 公布Apache StreamPark 2.1.0 公布行业资讯ChatGPT 官网 iOS 利用上线OpenAI 正式在苹果的 App Store 利用商店上架了 ChatGPT 的 iOS 版本,iPhone 用户当初能够间接在 iPhone / iPad 上间接应用 ChatGPT 了! iPhone 用户只需关上 App Store 并搜寻「ChatGPT」即可间接下载,也能够复制下方链接在 Safari 浏览器中关上,就会疏导你跳转到 ChatGPT 下载页面。不过,有些遗憾的是,该 App 目前仅限于美国地区用户应用。OpenAI 称将来几周内会逐渐扩大到其余国家/地区,也会“很快”推出实用于 Android 设施的 ChatGPT 应用程序。 ...

May 21, 2023 · 2 min · jiezi

关于程序员:人手一个-MidjourneyStableStudio-重磅开源

人手一个 Midjourney,StableStudio 重磅开源!Stability AI 公司在上个月 19 号推出了 Alpha 版本 StableLM 大语言模型,蕴含了 30 亿和 70 亿参数,并且反对商用。现在他们再次推出了 AI 图像生成平台 StableStudio,这可是距上次大开发仅过来一个月啊! 该平台是 DreamStudio 开源版的实现,目前能够在线实现 AI 图像生成、编辑、修复工作,将来还将新增 AI 聊天机器人、插件零碎、桌面利用、WebGPU 本地推理、ControlNet 工具等新个性,让人期待不已。 GitHub:https://github.com/Stability-AI/StableStudio 自 2020 年来到 OpenAI 团队后,Stability AI 的创始人 Emad Mostaque 始终致力于开源凋谢的理念,推出了多款 AI 开源模型。其中最广为人知的是文本生成图像模型 Stable Diffusion。 近几个月,Stability AI 继续一直地进行开源,这也让许多网友大呼过瘾,称其为"真正的 OpenAI"! 该项目标装置与应用也比较简单,上面讲下具体装置流程。 装置 & 应用首先,克隆该我的项目到本地,并进入文件夹: git clone https://github.com/Stability-AI/StableStudio.gitcd StableStudio而后装置 yarn 依赖,并运行本地服务器: yarnyarn dev我的项目运行胜利后,在网页拜访地址(端口默认为 3000):localhost:3000 而后,你便能看到如下所示界面: 到这一步,证实我的项目已胜利部署。 如果要应用 AI 绘图性能,你须要配置下 DreamStudio API Key。 ...

May 20, 2023 · 1 min · jiezi

关于程序员:通过容器认证有什么好处考试难不难

想考业余的认证帮本人背书,是大多数人工作后的想法,甚至很多人在刚毕业就会抉择考一份证书,对于从事信息通信行业的人来说,能够抉择的认证有很多,像是Linux基金会所有官网认证考试,以及配套的培训服务,就是为了晋升,为企业输送更多优秀人才。而通过容器认证的益处有很多,上面大使就简略介绍一下,有须要的人能够在认证大使上具体理解。 容器认证概述 CKA认证考试是由Linux基金会和云原生计算基金会(CNCF)创立的,以促成Kubernetes生态系统的继续倒退。该考试是一种近程在线、有监考、基于实操的认证考试,须要在运行Kubernetes的命令行中解决多个工作。CKA认证考试是专为Kubernetes管理员、云管理员和其余治理Kubernetes实例的IT业余人员而设的。 已取得认证的K8s管理员具备了进行根本装置以及配置和治理生产级Kubernetes集群的能力。他们将理解Kubernetes网络、存储、平安、保护、日志记录和监控、利用生命周期、故障排除、API对象原语等要害概念,并可能为最终用户建设根本的用例。 容器认证含金量 1、Linux基金会在业界内具备肯定的权威性,其旗下的认证,能够帮忙学员找到更好的工作。 2、领有容器证书的人更容易找到工作,对于在岗多人来说,也更能升职加薪。 容器认证考试内容 集群架构,装置和配置:25% • 治理基于角色的访问控制(RBAC) • 应用Kubeadm装置根本集群 • 治理高可用性的Kubernetes集群 • 设置基础架构以部署Kubernetes集群 • 应用Kubeadm在Kubernetes集群上执行版本升级 • 施行etcd备份和还原 工作负载和调度:15% • 理解部署以及如何执行滚动更新和回滚 • 应用ConfigMaps和Secrets配置应用程序 • 理解如何扩大应用程序 • 理解用于创立强壮的、自修复的应用程序部署的原语 • 理解资源限度如何影响Pod调度 • 理解清单治理和通用模板工具 服务和网络:20% • 理解集群节点上的主机网络配置 • 了解Pods之间的连通性 • 理解ClusterIP、NodePort、LoadBalancer服务类型和端点 • 理解如何应用入口控制器和入口资源 • 理解如何配置和应用CoreDNS • 抉择适当的容器网络接口插件 存储:10% • 理解存储类、长久卷 • 理解卷模式、拜访模式和卷回收策略 • 了解长久容量申明原语 • 理解如何配置具备持久性存储的应用程序 故障排除:30% • 评估集群和节点日志 • 理解如何监督应用程序 • 治理容器规范输入和规范谬误日志 • 解决应用程序故障 • 对群集组件故障进行故障排除 • 排除网络故障

May 19, 2023 · 1 min · jiezi

关于程序员:520继续卷再来盘一盘js中this的指向问题

JavaScript 中的 this 关键字是一个十分重要且罕用的概念,它代表以后函数执行时的上下文对象。this 的指向在 JavaScript 中是非常灵活的,不同的状况下指向不同的对象,上面咱们来具体解说 this 的指向问题。 常见this的绑定1. 默认绑定当函数没有明确指定 this 的绑定对象时,即在非严格模式下,this 的指向会默认绑定到全局对象上(在浏览器环境下是 window 对象,在 Node.js 环境下是 global 对象),例如: function foo() { console.log(this);}foo(); // 在浏览器环境下输入 window 对象,在 Node.js 环境下输入 global 对象2. 隐式绑定当函数作为对象的办法进行调用时,this 的指向会隐式绑定到调用该办法的对象上,例如: const obj = { name: 'John', sayName() { console.log(this.name); }};obj.sayName(); // 输入 John在下面的例子中,sayName 办法的调用者是 obj 对象,因而 this 的指向就会隐式地绑定到 obj 对象上,从而拜访到 obj 对象的 name 属性。 须要留神的是,如果在对象外部定义一个函数,并将其作为参数传递到其余函数中,那么该函数外部的 this 指向可能会产生扭转,例如: const obj = { name: 'John', sayName() { console.log(this.name); }, foo() { setTimeout(this.sayName, 1000); }};obj.foo(); // 在一些状况下会输入 undefined,而不是 John在下面的例子中,foo 办法外部通过 setTimeout 调用了 sayName 办法,因为 setTimeout 是一个独立的函数调用,因而其中的 this 指向会被绑定到全局对象上,导致 sayName 办法外部拜访不到 obj 对象的 name 属性。 ...

May 19, 2023 · 3 min · jiezi

关于程序员:CodeArts-Check-IDE插件VSCode版本下载量突破1000

庆贺CodeArts Check IDE插件VSCode版本下载量冲破1000! CodeArts Check IDE插件致力于守护开发人员代码品质,成为开发人员的助手和利器。 秉承极简、极速、即时看护的理念,提供业界标准(含华为云)的查看、代码格调一键格式化及代码主动修复性能。反对Java/C/C++语言扫描,欢送宽广开发者体验! VSCODE版本插件下载链接:https://marketplace.visualstudio.com/items?itemName=HuaweiClo... IDEA版本插件下载链接:https://plugins.jetbrains.com/plugin/20956-huawei-cloud-codea... Cloud IDE版本插件下载链接:https://marketplace.ide.huaweicloud.com/plugin/f8d1b76e-0826-... 同时,CodeArts Check代码查看服务也提供了性能更全面,扫描更深刻的云服务。 建设在华为30年自动化源代码动态查看技术积攒与企业级利用教训的积淀之上,CodeArts Check云服务为用户提供了代码格调、通用品质与网络安全危险等丰盛的查看能力,提供全面品质报告、便捷的问题闭环解决,帮忙企业无效管控代码品质,欢送大家应用! CodeArts Check云服务体验链接:https://www.huaweicloud.com/product/codecheck.html?ticket=ST-...

May 19, 2023 · 1 min · jiezi

关于程序员:Lerna-备忘清单开发速查表分享

Lerna 备忘清单lerna 是一种多包管理工具, 能够让你在主我的项目下治理多个子项目,从而解决了多个包相互依赖,且公布时须要手动保护多个包的问题,每个 package 都有本人的依赖项(package.json),可能作为独立的 npm package 公布,只是源码放在一起保护,公共包能够放在根目录中的 package.json 中保护。 Lerna速查清单本备忘单旨在疾速了解 Lerna v6 所波及的次要概念,显示了它的常用命令应用清单入门,为开发人员分享疾速参考备忘单。 开发速查表纲要入门 介绍疏导程序 (Bootstrap)useWorkspaces工作运行命令索引 run/exec 运行命令publish 公布包version 批改版本号bootstrapinfo 本地环境信息过滤选项listchangedinitimportadddiffcleanadd-cachinglinkrepair

May 19, 2023 · 1 min · jiezi

关于程序员:5分钟体验华为云代码仓托管CloudIDE云端代码编辑调试运行

您将会学到什么您将学会如何通过代码托管(CodeHub)创立代码仓,解决软件开发者在跨地区协同、多分支并发、代码版本治理、安全性等方面的问题,晋升开发效率;通过华为云CloudIDE,仅需一个浏览器就能够编辑、调试、运行您的代码,随时、随地、随心体验! 环境筹备注册华为云账号、实名认证 若您还没有通过实名认证的账号,可通过下方领导,实现集体或企业账号的实名认证。 • 企业 帐号 如何实现实名认证 • 集体 帐号 如何实现实名认证 资源筹备1. 戳我进入CodeArts 主页,点击“收费试用”进入开明页面,收费开明CodeArts根底套餐; 2、点击“收费开明5人版”; 3、进行套餐信息确认,留神“勾销主动续费”,勾选“浏览并批准申明”,点击“确认开明” 4、至此,根底版 0元套餐开明胜利!能够开始体验啦~ 一、Cloud IDE在线体验1、点击拜访CloudIDE产品首页,点击“收费体验云开发”按钮,进入IDE界面,即可编辑、调试、运行您的代码  二、创立代码仓1、 戳我进入代码托管,单击“一般新建”旁的下扩按钮,在扩大框中抉择“按模板新建”,进入“按模板新建”页面:   2、任意抉择一个模板,点击“下一步”依照规定自在填写项目名称信息 3、代码仓名称可依照规定自在填写,其余默认即可,点击“确认”,可查看已创立的代码仓    

May 19, 2023 · 1 min · jiezi

关于程序员:谈一谈CMDB

大家好,我是易安!明天咱们谈一谈运维相干的话题,配置管理,业余一点就叫作 CMDB(Configuration Management DataBase)。 概念CMDB并不是一个新概念,它源于ITIL(Information Technology Infrastructure Library,信息技术基础架构库)。而ITIL这套理论体系在80年代末就曾经成型,并在过后和起初的企业IT建设中作为服务治理的领导实践失去宽泛推广和施行。然而为什么这个概念近几年才被咱们熟知?为什么咱们当初才无意识把它作为一个运维的核心部件去建设呢? 我想次要有两个因素,一个起了限度作用,一个起了助推作用。 CMDB这个概念自身的定义问题,限度了CMDB的施行;互联网技术的倒退驱动了运维技术的倒退和演进,进而从新定义了CMDB。传统运维阶段的CMDB依照ITIL的定义: CMDB,Configuration Management DataBase,配置管理数据库,是与IT零碎所有组件相干的信息库,它蕴含IT基础架构配置项的详细信息。 看完下面这个形容,咱们能感觉到,这是一个很宽泛的概念形容,实际上并不具备可落地的指导意义。 同时,CMDB是与每个企业具体的IT软硬件环境、组织架构和流程强相干的,这就决定了CMDB肯定是高度定制化的体系。尽管咱们都晓得它不仅仅是一个存储信息的数据库那么简略,然而它的具体状态是什么样子的,并没有对立的规范。 从传统IT运维的角度来看,运维的外围对象是资源层面,所谓的基础架构也就是网络设备和硬件设施这个层面;各种关联和拓扑关系,根本也是从服务器的视角去看。所以更多地,咱们是把CMDB建设成为一个以设施为核心的信息管理平台。 这也是以后绝大多数公司在建设运维平台时最优先的切入点,因为这些运维对象都是实体存在的,是最容易被辨认的和治理的;像利用和分布式中间件这种形象的逻辑对象反而是不容易被辨认的。 这种状态,如果是在软件架构变动不大的状况下,比方单体或分层架构,以服务器为核心去建设是没有问题的。因为无论设施数量也好,还是申请回收这些变更也好,都是很无限的,也就是整个IT基础设施的状态变动不大。 高大上的ITIL体系更多的是被当做流程标准来落地的,真正体现在技术计划和技术产品上的落地并不多。我想这是施行过程中对ITIL了解和使用的一大误区。 互联网运维中的CMDB进入到互联时代, 随着互联网运维力量的崛起,CMDB这个概念也真正地失去了落地实际,从实践概念的方法论阶段过渡到了具备具体技术计划的可施行阶段,而且失去了业界的继续分享和流传。咱们当初可能看到的CMDB教训分享,基本上都是中大型互联网公司的运维最佳实际。 不过,值得注意的是,“此CMDB”曾经非“彼CMDB”。咱们后面提到,传统运维阶段,咱们更多是以设施为外围进行治理,然而到了互联网技术阶段,这个外围就变了,变成了利用这个外围对象。互联网技术的疾速倒退,大大推动了微服务技术架构的落地和实际,这种场景下,利用各维度的治理复杂度、利用的复杂度就逐步体现进去了,所以咱们的很多运维场景就开始围绕着利用来发展。 与此同时,云计算技术也在蓬勃发展,逐渐屏蔽了IDC、网络设备以及硬件服务器这样的底层基础设施的复杂度,有私有云或公有云厂商来专一聚焦这些问题,让咱们的运维不用再花过多的精力在这些基础设施下面;同时,单纯以硬件为外围的CMDB状态也被逐渐弱化。 所以,此时的CMDB,依然能够叫做配置管理数据库,然而这个配置管理的内涵曾经产生了很大的变动。之前所指的简略的硬件资源配置管理,只能算是广义的了解;从狭义上讲,以后的利用以及以利用为外围的分布式服务化框架、缓存、音讯、DB、接入层等根底组件,都应该纳入这个配置管理的领域。 所以在这个期间,咱们提到的运维自动化,远不是自动化的服务器装置部署交付或网络自动化配置这种繁多场景,而是呈现了继续交付、DevOps、SRE等更适宜这个时代的对运维职责的定义和新的方法论。 到了这个阶段, 传统运维思路下的CMDB,因为治理范畴无限,能够定义为广义上的CMDB;而互联网运维思路下的CMDB内涵更广,咱们称它为狭义的CMDB。新的期间,对于CMDB的了解也要与时俱进,这个时候, 思路上的转变,远比技术上的实现更重要。 面向资源管理我来梳理一下,在建设运维的根底治理平台时通常要做的事件。 第1步,把服务器、网络、IDC、机柜、存储、配件等这几大维度先定下来;第2步,把这些硬件的属性确定下来,比方服务器就会有SN序列号、IP地址、厂商、硬件配置(如CPU、内存、硬盘、网卡、PCIE、BIOS)、维保信息等等;网络设备如交换机也会有厂商、型号、带宽等等;第3步,梳理以上信息之间的关联关系,或者叫拓扑关系。比方服务器所在机柜,虚拟机所在的宿主机、机柜所在IDC等简略关系;简单一点就会有外围交换机、汇聚交换机、接入交换机以及机柜和服务器之间的级联关系;第3.5步,在下面信息的梳理过程中必定就会遇到一些布局问题,比方,IP地址段的布局,哪个网段用于DB,哪个网段用于大数据、哪个网段用于业务利用等等,再比方同步要做的还有哪些机柜用于做虚拟化宿主机、哪些机柜只放DB机器等。以上信息梳理分明,通过ER建模工具进行数据建模,再将以上的信息固化到DB中,一个资源层面的信息管理平台就根本成型了。 然而, 信息固化不是目标,也没有价值,只有信息动静流转起来才有价值(跟货币一样)。接下来咱们能够做的事件: 第4步,基于这些信息进行流程标准的建设,比方服务器的上线、下线、培修、装机等流程。同时,流程过程中状态的变更要同步治理起来;第5步,拓扑关系的可视化和动静展现,比方交换机与服务器之间的级联关系、状态(失常or故障)的展现等,这样能够很直观地关注到资源节点的状态。至此,从资源维度的信息梳理,以及基于这些信息的平台和流程标准建设就算是根本成型了。这个时候,以服务器简略示例,咱们的视角是上面这样的: 面向利用治理下面阐明了CMDB的根底信息局部,如果从传统的SA运维模式,这些信息曾经足够,然而从利用运维的角度,这些就远远不够了。 这时咱们就须要一个十分十分重要的句柄: 利用名,或者叫利用标识。至此,利用运维外面最最重要的一条分割也就产生了: “利用名-IP“的关联关系(这里也能够是定义的其它惟一主机标识,如主机名、容器ID等等,因为咱们应用的形式是IP,所以这里就以IP示例)。 之所以说“利用名”和“利用名-IP关联关系”十分重要,是因为它的影响力不仅仅在运维外部,而是会始终延长到整个技术架构上。前面咱们会介绍到的所有平台和零碎建设,都跟这两个概念无关。 CMDB是IP为标识的资源管理维度,有了利用名之后,就是以利用为视角的治理维度了。首先看一下利用会波及到的信息: 利用根底信息,如利用责任人、利用的Git地址等;利用部署波及的根底软件包,如语言包(Java、C++、GO等)、Web容器(Tomcat、JBoss等)、Web服务器(Apache、Nginx等)、根底组件(各种agent,如日志、监控、系统维护类的tsar等);利用部署波及的目录,如运维脚本目录、日志目录、利用包目录、长期目录等;利用运行波及的各项脚本和命令,如启停脚本、衰弱监测脚本;利用运行时的参数配置,如Java的jvm参数,特地重要的是GC形式、新生代、老生代、永生代的堆内存大小配置等;利用运行的端口号;利用日志的输入标准;其余。下面的梳理过程理论就是标准化的过程。咱们梳理完上述信息后就会发现,这些信息跟CMDB外面的资源信息齐全是两个维度的货色。所以从信息管理维度上讲,把资源配置和利用配置离开会更清晰,解耦之后也更容易治理。 好了,依照下面CMDB说的套路,梳理实现后,就是要进行信息的建模和数据的固化,这时就有了咱们的“利用配置管理”。再往后,就是基于利用配置管理的流程标准和工具平台的建设,这就波及到咱们常常说的继续集成和公布、继续交付、监控、稳定性平台、老本治理等等。 从利用的视角,咱们配置管理,应该是上面这样一个视图(简略示例): 好了,有了资源配置信息和利用配置信息,这两个信息应该怎么对立治理起来呢。间接看图: 至此,CMDB和利用配置管理的分层合成就实现了,利用名关联着利用配置信息,IP关联着资源信息,二者通过“利用名-IP”的对应关系,分割到一起。 如何治理利用微服务架构下会有很多利用产生进去,少则十几、几十个,多则上百甚至上千个。这时咱们面临的第一个问题就是如何无效地组织和治理这些利用,而不是让它们在各处散乱,命名形式和层次结构可能还不对立。 你可能接触过“ 服务树”的概念,这个提法是小米在晚期互联网运维实际的分享中流传进去的。 从服务树这个名字中,咱们就能够理解到,无效组织和治理利用的形式,就是把它组织成一个树形的层次结构。这种管理模式,无论是在BAT,还是在其它的互联网公司,根本都是一样的思路和模式,所以叫法尽管不同,然而思路上却是相通的,堪称殊途同归。 基于业务维度的拆分,对应产生了咱们的利用拆分准则。比方对于电商公司,大的维度会有电商、领取、广告、流量和搜寻等业务畛域;进一步,电商业务畛域里最典型的会有用户、会员、商品、交易、商家、店铺以及物流等;这外面还能够再进一步细分,比方商品会有详情、SKU、SPU、库存、评估、标签等。 讲到这里,咱们再看一下技术团队的组织架构,基本上是对应着整个业务技术架构的拆分的。也就是 业务架构决定了技术架构,而技术架构又决定了一个研发团队的组织架构,这个组织架构中不同的团队单元别离承当着对应业务的需要开发和实现职责。 下面这个组织架构建设的逻辑和思路,也是咱们在组建团队和职责划分时能够参考的。 这样一个逻辑讲下来,咱们的 利用治理思路 其实也就清晰了: 产品线-业务团队-利用。 这里举个电商商品的例子就是:电商技术-商品团队-商品核心-商品详情等。 当然因为每个公司对组织架构定义的形式不同,也能够用一、二级部门这样的形式来指代。然而具体团队的分工和职责,肯定是来自于业务架构决定的技术架构,只有这样,各业务团队才会职责清晰,配合合作才会顺畅起来。 对于利用名定义,要设定标准,比方: 利用名必须以大小写英文字母以及下划线组合;利用名长度不超过40个字符,尽量简略易懂;不容许呈现机房代号和主机名称这样的信息。简略举例,商品核心命名为itemcenter,商品详情命名为detail。 这里做个小结: 到了软件运维阶段,运维工作是否能够高效地组织发展,很大水平上,在后面的业务架构拆分阶段就决定了。也就是业务架构拆分得是否正当、职责是否清晰,决定了后续团队组织架构是否正当、团队职责是否清晰。如果这点没做好,到了运维阶段必然就是凌乱的。 运维能力的体现,肯定是整体技术架构能力的体现,割裂两者独自去看,都是没有意义的。同时,对于以后依然把运维割裂建设的研发团队,也须要去思考一下在组织架构建设上的合理性了。 利用的集群服务分组上述讲到的是利用的组织治理,看上去逻辑思路绝对清晰,组织起来也不简单,然而再往下,利用的集群服务分组建设就会绝对简单了。 为什么会有集群服务分组呢?咱们一起来看这么几个需要场景。 ...

May 19, 2023 · 1 min · jiezi

关于程序员:Unity3D-PlayableGraph

举荐:将NSDT场景编辑器退出你的3D工具链https://www.mvrlink.com/unity3d-the-playablegraph/3D工具集:NSDT简石数字孪生https://www.mvrlink.com/unity3d-the-playablegraph/ PlayableGraphPlayableGraph 定义一组绑定到 GameObject 或组件的可播放输入项。PlayableGraph 还定义一组可播放项及其依赖关系。图 1 提供了一个示例。PlayableGraph 负责管理可播放项及其输入的生命周期。应用 PlayableGraph 可创立、连贯和销毁可播放项。图 1:PlayableGraph 示例在图 1 中,显示 PlayableGraph 时,为了紧凑,从图形节点的名称中移除了“Playable”一词。例如,名为“AnimationClipPlayable”的节点显示为“AnimationClip”。可播放项是一种继承 IPlayable 接口的 C# 构造体。它用于定义其与其余可播放项的关系。同样,可播放项输入是继承 IPlayableOutput 接口的 C# 构造体,用于定义 PlayableGraph 的输入。图 2 显示了最常见的外围可播放项类型。图 3 显示了外围可播放项输入类型。图 2:外围可播放项类型图 3:外围可播放项输入类型The playable core types and playable output types are implemented as C# structs to avoid allocating memory for garbage collection.“Playable”是所有可播放项的根本类型,这意味着您总是能够隐式将一个可播放项转换为 Playable。相同的状况并不成立,如果将“Playable”显式转换为不兼容类型,则会抛出异样。它还定义能在可播放项上执行的所有根本办法。要拜访特定于类型的办法,您须要将可播放项转换为相应类型。PlayableOutput 也是如此,它是所有可播放项输入的根本类型,定义了根本办法。留神:Playable 和 PlayableOutput 未裸露大量办法。但“PlayableExtensions”和“PlayableOutputExtensions”动态类提供了扩大办法。所有非形象可播放项都有一个私有静态方法 Create(),该办法创立相应类型的可播放项。“Create()”办法始终将 PlayableGraph 作为其第一个参数,该图领有新创建的可播放项。某些类型的可播放项可能须要其余参数。非形象可播放项输入还会裸露 Create() 办法。无效的可播放项输入应链接到可播放项。如果可播放项输入未链接到可播放项,则可播放项输入不执行任何操作。要将可播放项输入链接到可播放项,请应用 PlayableOutput.SetSourcePlayable() 办法。对于该特定可播放项输入,链接的可播放项充当可播放项树的根。要将两个可播放项连贯在一起,请应用 PlayableGraph.Connect() 办法。请留神,某些可播放项不能有输出。应用 PlayableGraph.Create() 静态方法来创立 PlayableGraph。应用 PlayableGraph.Play() 办法来播放 PlayableGraph。应用 PlayableGraph.Stop() 办法来进行播放 PlayableGraph。应用 PlayableGraph.Evaluate() 办法来评估 PlayableGraph 在特定工夫的状态。应用 PlayableGraph.Destroy() 办法来手动销毁 PlayableGraph。此办法会主动销毁 PlayableGraph 创立的所有可播放项和可播放项输入。必须手动调用此销毁办法来销毁 PlayableGraph,否则 Unity 会收回一条谬误音讯。

May 19, 2023 · 1 min · jiezi

关于程序员:如何反转ggplot2中的图例键顺序

动动发财的小手,点个赞吧! 在本教程中,咱们将学习如何反转 ggplot2 中图例键的程序。 在 ggplot2 中,当咱们在 aes() 中应用色彩或填充参数为变量着色时,咱们会失去一个带有键的图例,显示哪些键匹配哪些色彩。在这里,咱们将展现如何应用 guides() 参数为两种类型的图反转图例键的程序,一种是带有由“色彩”参数制作的图例的散点图,另一种是带有色彩的条形图增加了“填充”参数。 让咱们从加载 tidyverse 开始。 library(tidyverse)theme_set(theme_bw(16))咱们将应用 tidyverse 提供的钻石数据。 diamonds %>% head() 带黑白点的散点图让咱们在两个变量之间绘制散点图,并应用 aes() 中的色彩参数为第三个(分类)变量着色。 在这里,咱们应用从钻石数据中随机抽取的 200 个数据点,应用 slice_sample() 函数制作散点图。 diamonds %>% slice_sample(200) %>% ggplot(aes(x=carat, y=price, color=cut))+ geom_point()ggsave("how_to_reverse_legend_key_order_legend_with_color.png")这就是应用默认图例键排序的散点图的样子。 咱们能够应用带有色彩参数的 guides() 函数来反转图例键程序。咱们应用色彩参数来反转,因为咱们之前在 aes() 函数中应用色彩参数创立了图例。 reverse = TRUE 的 guide_legend() 函数实际上颠倒了 kegend 键程序。 diamonds %>% slice_sample(n=200) %>% ggplot(aes(x=carat, y=price, color=cut))+ geom_point()+ guides(color = guide_legend(reverse = TRUE))ggsave("reverse_legend_key_order_legend_with_color.png") 带填充色彩的条形图在第二个示例中,让咱们制作一个条形图,其中填充了第二个变量指定的色彩。咱们在这里应用 aes() 中的 fill 参数来增加色彩,用色彩填充条形图。 ...

May 18, 2023 · 1 min · jiezi

关于程序员:民间最大社区倒闭了

咫尺神贴合集(500篇):https://pan.quark.cn/s/ba1e0577bfd8 最近几天大家应该发现天涯社区网站打不开了。 天涯社区开办于1999年,此时的中国,互联网产业方兴未艾,那时天涯社区相当火爆。 2007年时,天涯社区的注册用户就冲破了2000万,号称是寰球最大的中文互联网社区。到了2013年中国网民规模才6亿多,也就是说当年均匀7个中国网民就有1个是咫尺用户。 过后网民绝对较高的素质和真挚,也让咫尺上的帖子品质十分高。即便有很多文章放到当初,它们也能经得起工夫的考验,这是天涯社区最吸引人的中央。 在咫尺论坛敞开之前,我收集了天涯社区神贴合集共 500篇(兽性,社会,历史,金融,房地产),包含KK三部曲、大鹏金翅明王在内的金融、房产、人文历史等等。 在这里分享给大家: https://pan.quark.cn/s/ba1e0577bfd8 目录: ├<历史人文> │ ├(长篇)女性秘史◆那些风华绝代、风情万种的女人,为你关上女人的所有机密.pdf │ ├《二战秘史》——纵论二战全史——邀你一起与假相贴身肉搏.pdf │ ├《覆帝记》鲜于冶銋原创长篇:天下巨变时,那些人经验的波澜诡谲事.pdf │ ├【咫尺头条】回首细数旧中国.pdf │ ├一贴扫尽咫尺谬论:当今中国的前世今生(正名帖)-文盲来上课-无s.pdf │ ├不被了解的mzd(明码是123).zip │ ├两个局外人的对谈录.pdf │ ├从共和国建国后的和平看透明天的大国博弈!-关外李员外.pdf │ ├从内斗的华夏到固化的中国.pdf │ ├办公室实用暴力美学——用《资治通鉴》的智慧打造职场金饭碗.pdf │ ├地缘看世界.zip │ ├地缘看世界——欧洲局部-温骏轩.pdf │ ├太平洋战争.pdf │ ├宝钗比黛玉大八岁!重解红楼全副诗词!血泪文字逐段解释!所有谜团残缺公开!.pdf │ ├桃花读水浒:凛冬将至,暗夜无际,末世穷途,无路可逃.pdf │ ├侧面抗日战争-关河五十州.pdf │ ├<永不消失的电磁波合集> │ │ ├卡宾达的灯塔.pdf │ │ ├美索不达米亚之眼.pdf │ │ └马里亚纳玄燕鸥.pdf │ ├沙梨熊选集.pdf │ ├古代金融经济的眼重看历史-谁是谁非任评说.pdf │ ├生在南北朝你就死定了_浮生若梦87 .pdf │ ├英雄末路:历史上那些小人物之死.pdf │ ├蒋介石为什么得到大陆:1945——1949-flp713.pdf │ ├铁血雄兵川军团.pdf ...

May 18, 2023 · 3 min · jiezi

关于程序员:自助迁移工具升级如何从-Confluence-切换至-ONES-Wiki

近日,ONES 降级了 Confluence 自助迁徙工具,对迁徙数据类型、迁徙范畴、迁徙模式等多个维度的能力进行了晋升,帮忙企业更高效率、更低成本地将 Confluence 中的数据残缺、精确地迁徙至 ONES Wiki 中。 在 Confluence 与 ONES 服务资源短缺的前提下,迁徙助手的用时速率最高可达 1.2 min/G。也就是说,如果迁徙数据包总量为 50G,数据迁徙的预计耗时仅为 1 小时,不影响企业业务的失常运行。 Confluence 自助迁徙工具劣势ONES 的 Confluence 自助迁徙工具次要采纳 「调用 API 主动批量迁徙数据」的模式进行迁徙,可能将 Confluence 中的空间、用户、权限等多种数据类型迁徙至 ONES Wiki 中。相比行业内广泛的「手工导入单个数据包」,ONES 在数据导入上更残缺、高效,安全性也更高。 01 迁徙数据残缺、精确 Confluence 作为团队日常应用的常识管理工具,积淀的文档类型多样,波及的用户组、权限也较为简单。而 ONES 迁徙助手能够做到整站迁徙,数据迁徙更全面、残缺: 全方位的迁徙范畴:反对导入集体&团队空间,也反对页面、博客、用户、用户组、权限等数据导入,确保迁徙数据的可用性;数据迁徙的完整性:可保留文本、表格、代码块、图片、音视频、附件、超链接等大部分文本款式,确保权限匹配、应用逻辑统一。 具体的迁徙成果可参见下图: 02 灵便的迁徙模式 在自助迁徙时,如果企业的 Confluence 空间数据量较大,ONES 的迁徙助手反对分批次进行迁徙工作,保障系统安全稳固运行。 在迁徙开始之前,管理员可先剖析 Confluence 中的空间应用状况;而后依据工作的活跃度、价值度、业务关联度等,按需选取要迁徙的空间;最初安顿工夫分批次执行。比方先布局活跃度较高的空间,防止同时迁徙大批量数据,造成迁徙工夫期待。 此外,在迁徙测试阶段,亦可选取局部空间进行试点演练,验证迁徙成果,通过后再开始正式的迁徙,升高迁徙失败危险。 03 实时监控迁徙过程 数据质量保证也是数据迁徙过程中的要害一环。 一方面,在迁徙工作列表中,管理员可浏览或查问全副迁徙工作及其状态,实时监控空间迁徙与页面迁徙的进度,及时辨认危险、响应问题。另一方面,对于已实现或正在进行的工作,迁徙助手还反对迁徙报告下载,便于管理员理解迁徙失败的空间、页面与附件等相干信息,辅助验证迁徙成果,确保迁徙十拿九稳。 Confluence 自助迁徙工具使用指南为了帮忙企业更高效地实现自助迁徙,ONES 提供了清晰扼要的操作指引。管理员能够在「配置核心」中「新建迁徙工作」,而后依据迁徙指南在每个步骤给出的操作提醒,轻松开启数据迁徙: 治理迁徙工作,理解迁徙停顿抉择打算迁徙的空间 整个数据迁徙过程可分为六个步骤,如下图所示: 迁徙实现后,能够下载迁徙报告,帮忙验证迁徙成果: 业余的 Confluence 数据迁徙服务 以后,迁徙助手反对 Confluence 6.x、7.x Server 或 Data Server 版本的数据迁徙至 ONES。 ...

May 18, 2023 · 1 min · jiezi

关于程序员:Boost-Your-Strategy-With-The-Content-Marketing-Tools

Boost Your Strategy With The Content Marketing Tools In today’s digital landscape, content marketing tools have emerged as a crucial component of any successful online business. Delivering valuable and engaging content to your target audience drives traffic, builds brand awareness, and increases conversions. However, managing and optimizing content marketing efforts can only be challenging with the right tools. Content Management Systems (CMS)A reliable CMS forms the foundation of your content marketing efforts. With a friendly interface, efficient organization, and powerful publishing capabilities: a CMS empowers you to create, edit and manage your content seamlessly. ...

May 17, 2023 · 3 min · jiezi

关于程序员:Python-连接-MySQL-数据库

在理论数据分析和建模过程中,咱们通常须要从数据库中读取数据,并将其转化为 Pandas dataframe 对象进行进一步解决。而 MySQL 数据库是最罕用的关系型数据库之一,因而在 Python 中如何连贯 MySQL 数据库并查问数据成为了一个重要的问题。 本文将介绍两种办法来连贯 MySQL 数据库,并将查问后果转化为 Pandas dataframe 对象:第一种办法应用 pymysql 库来连贯 MySQL 数据库;第二种办法则应用 SQLAlchemy 的 create_engine 函数创立 MySQL 数据库连贯引擎。同时,针对这两种办法,咱们还将对代码进行封装和优化,进步程序的可读性和健壮性。 办法一:应用 pymysql 库连贯 MySQL 数据库步骤 1:连贯 MySQL 数据库 首先,咱们须要应用 pymysql 库来连贯 MySQL 数据库。具体代码如下: import pymysql# 连贯 MySQL 数据库conn = pymysql.connect( host='159.xxx.xxx.216', # 主机名 port=3306, # 端口号,MySQL默认为3306 user='xxxx', # 用户名 password='xxxx', # 明码 database='xx', # 数据库名称)在下面的代码中,咱们通过 pymysql 库的 connect() 函数连贯 MySQL 数据库,并指定主机名、端口号、用户名、明码和数据库名称等参数。如果连贯胜利,则该函数将返回一个数据库连贯对象 conn。 步骤 2:执行 SQL 查问语句连贯 MySQL 数据库之后,咱们就能够应用游标对象来执行 SQL 查问语句,如下所示: ...

May 17, 2023 · 3 min · jiezi

关于程序员:基于BS架构的OA系统的设计与实现

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档] 摘 要一个企业实现办公自动化的水平是掂量其实现现代化治理的规范。办公自动化(OA: OFFICE AUTOMATION)就是采纳Internet技术,基于工作流的概念,使企业内部人员方便快捷地共享信息,高效协同工作。本文采纳结构化与原型法联合的零碎开发方法。整个零碎分为用户登录验证模块、员工信息管理模块、日程治理模块、论坛模块、审批流转模块等。该零碎的利用扭转了过来简单、低效的手工办公形式,实现迅速、全方位的信息采集、信息处理,为企业的治理和决策提供迷信的根据。 关键词:办公自动化 SSH Activiti5 AbstractThe extent of an enterprise's realization of office automation is the standard of its realization of the modernization management. AUTOMATION OA: (OFFICE) is the use of Internet technology, based on the concept of workflow, so that the enterprise internal personnel to quickly and easily share information, and efficiently work together. In this paper, the structure and the prototype method of the system development method. The whole system is divided into user login verification module, employee information management module, schedule management module, forum module, approval and transfer module, etc.. The application of this system has changed the complicated and inefficient manual office methods, and realized the information collection and information processing, which can provide scientific basis for the management and decision of enterprise. ...

May 17, 2023 · 1 min · jiezi

关于程序员:阿里云大数据分析师ACP考试内容是什么需要准备什么

作为目前市场占比最大的云计算厂商,阿里云旗下的认证也是相当具备含金量的,想通考据来晋升本人的职业竞争力,那么抉择阿里云的证书准没错了,上面小编就简略介绍一下阿里云ACP大数据分析师认证,有须要的人能够在认证大使上具体理解。 阿里云ACP大数据分析师认证概述 该证书是面向大数据分析师、BI工程师的专业技能认证,涵盖数据分析相干的常识体系,如大数据基础知识、大数据存储技术、数据分析工具、数据可视化、数据编程、数据品质管制、数据分析项目管理、机器学习等。 阿里云ACP大数据分析师考试内容 大数据基础知识 大数据存储技术 数据分析工具 数据可视化 数据编程 25%数据品质管制 数据分析项目管理 机器学习 阿里云ACP大数据分析师考试题型 1、口试 单选 70道;多选 30道,每题一分 2、试验考试 阿里云ACP大数据分析师考试备考 1、应用题库进行筹备 2、观看学习视频进行筹备 3、追随指引进行试验

May 17, 2023 · 1 min · jiezi

关于程序员:2分钟快速上手华为云流水线-CodeArts-Pipeline的创建与运行

体验介绍 服务简介 软件继续交付流水线CodeArts Pipeline是华为云软件开发生产线CodeArts的一个子服务,是一个可视化的自动化工作编排调度平台。 可串联编译构建、代码查看、自动化测试、部署公布等工作,承载软件从代码提交到公布上线全自动化流程。一次配置后即可反复触发执行,防止频繁低效的手工操作,提供可视化、可定制的继续交付流水线服务,实现缩短交付周期和晋升交付品质的成果。 通过此文您将播种: 通过流水线老手体验模板,体验一条含代码查看、构建阶段、部署公布罕用流水线的创立与执行;疾速上手和相熟流水线的基本操作和流程。试验筹备 环境筹备: 1、注册账号、实名认证若您还没有通过实名认证的账号,请注册华为云账号,而后实现实名认证(举荐应用“扫码认证”形式,即时实现)。 参考如何实名认证 和如何扫码认证 。 2、 点我去开明CodeArts体验套餐 舒适提醒:如已开通过CodeArts套餐,此步能够跳过;    创立我的项目 1、 点我进CodeArts我的项目首页来到新建我的项目操作界面,如下图所示: 2、创立我的项目流程及示例截图 鼠标悬停在"Scrum"上,点击“选用”。 点击标注的“Scrum”区域,创立“Scrum”类型我的项目,参数如下: ① 我的项目设置模板:Scrum, ② 项目名称:自定义, ③ 其余:默认, 如下图:  2.4 点击“确定”后会跳转到Backlog列表治理页,如下图: 创立流水线 1 进入Scrum我的项目,在我的项目左侧导航栏,顺次抉择“继续交付”->“流水线”切换到流水线列表   2 在流水线列表点击“新建流水线”,开始新建流水线    3 流水线根本信息系统曾经主动填写,流水线源暂不抉择,单击“下一步”进入流水线模板抉择页  4 流水线会预置一个“新手上路”零碎模板,选中模板,而后点击“确认”进编排流水线页面 5 在流水线编排页,“新人上路”体验模板曾经创立了“代码查看”、“构建”、“部署”三个阶段工作  执行流水线  1、点击右上角的“保留并运行”按钮,页面右侧会弹出“运行配置”弹窗,不须要填写配置,间接点击下方“运行”按钮,运行流水线 2、运行流水线会停留在流水线详情页,详情页内展现了流水线的阶段工作运行状况  3、单击阶段下的工作可查看具体日志信息  4、所有阶段工作都运行胜利后,流水线运行胜利 祝贺您实现了体验,欢送点击下方进华为云PaaS产品体验交换群,交换和体验更多功能和服务。  https://bbs-img.huaweicloud.com/blogs/img/20230414/1681441141...

May 17, 2023 · 1 min · jiezi

关于程序员:高效研发团队都在看一套方法论带你找到适合自己的效能提升路径

近日,ONES 受邀加入 2023 QECon 寰球软件品质&效力大会(深圳站)。在会上,ONES 研发效力改良征询参谋陈仪,发表了主题为《如何为研发团队打造专属的效力晋升门路》的演讲。 陈仪有着丰盛的征询教训,曾率领团队深度、残缺地参加过全球化的麻利转型,并帮忙客户实现麻利转型的实际及效力晋升。本次演讲,他次要从征询视角登程,分享本人总结的一套帮忙团队晋升效力的方法论,同时也会提炼研发效力实际中的常见误区。 效力晋升的下限与上限 研发效力是近十年软件研发畛域的热门话题。很多软件研发企业或部门,在这个畛域投入了大量的人力资源,并设立专职的岗位。 那么,为什么研发效力会失去企业的高度关注呢? 依据继续改良的理念,团队须要被容许停下手头的一些工作,定期回顾团队里存在的问题,思考如何改良。能够说,继续改良是为了让团队变得更好、更有竞争力,避免现存问题连累团队。研发效力晋升也是如此,其指标是让团队更好更快地交付客户想要的产品。 在我看来,晋升研发效力是继续改良思维的一种具体表现形式,研发效力的范畴也应该是宽泛且全面的,不应该将研发效力的了解只限定在某一个或某几个非凡畛域。 研发团队所面临的常见问题,次要分为四类: 研发侧的响应能力跟不上业务翻新;研发合作效率低;零碎稳定性难以保障;不足对立的一体化平台。这些问题凸显了晋升研发效力的紧迫性和必要性。通过这些思考,咱们再定义一下什么是研发效力。我比拟认可的一个观点是:研发效力是顺畅、高质量、继续地交付无效价值的闭环。这个定义里一共蕴含了五个要点,这里重点解读其中两个要点: 顺畅,代表整个研发团队工作流顺畅,没有节约,或者说尽量少的节约、尽量少的期待、尽量少地呈现瓶颈。所以,在研发效力实际中,不光要思考工程侧的实际,还要思考研发过程侧的实际,比方工作流的优化、研发治理流程的标准。无效价值,代表交付物是不是客户真正想要的。有时候团队十分致力,但客户并不称心最终的交付物。所以在做效力度量时,须要蕴含客户价值这个维度。 通过定义,咱们能够认为,研发效力是宽泛且全面的。然而,咱们往往谋求研发效力工程侧的实际,比方 DevOps 平台建设、DevOps 工具的应用,而疏忽了研发治理过程侧的实际。但后者正是整个研发我的项目的根底,所以我想提出一个观点:研发合作治理的成熟度,决定了效力晋升的上限,同时间接影响了效力晋升的下限。 如果把研发效力比作成正在建设的摩天大厦,那么一直晋升大厦的层数,从 10 层、20 层到 50 层、100 层,意味着研发效力程度的一直攀升。研发合作治理就是大厦的地基,没有稳固地基的保障,整个研发效力大厦就没方法始终向上建设。 效力晋升的必要门路在我看来,每一个企业、组织、团队都是举世无双的,因而在摸索研发效力晋升门路时,也要依据团队个性来定制策略。如果将一套普适性的工具推广到所有团队,实际效果个别会低于团队预期,因为普适性的工具与办法,往往不会解决团队的某些具体问题,反而可能带来新的问题。 我把方法论一共演绎为六点,也叫「打造团队专属研发效力晋升门路六个实际」: 评估团队现状。只有理解了团队现状,才能量身制订下一步打算; 从痛点、问题登程。优先解决最要紧的痛点和问题,会最大化短期收益;优化工作流程标准。简化流程、简化节约,从底层优化效力治理的根基;逐渐工具线上化。从晋升部分垂直能力登程,逐渐实现全局优化和拉通;建设度量指标库。度量指标库并不是一次性就能残缺建设,因而咱们能够从先解决最紧急的问题,之后再一直保护指标库,保障指标库的继续更新,为效力全面度量做根本筹备;继续验证度量收益,打造效力治理闭环,迭代式探寻本身组织最须要的度量指标及工。 通过这六个实际,能够打造一套比拟适宜本身组织的效力晋升门路。接下来咱们通过一个客户实例,具体看看每一个实际的具体利用。 研发效力征询客户案例 这是一家世界 500 强国有独资企业,业务畛域涵盖金融、地产、供应链、翻新等。它的组织架构为:团体下有科技公司及各个行业板块子公司,比方金融行业、地产行业、供应链行业,局部子公司下设有本人的 IT 部门。咱们此次对接的是团体下的科技子公司。 第一步,从规范化、线上化、数字化和智能化四个维度,评估客户团队的现状。具体评估时,每一个大的维度上面也会细分出很多子方向,每一个子方向也会有很多具体的条目。通过和团队一起对每个具体条目标打分(0~5分),最终以雷达图的模式展示全面评估后果,可视化地评估团队在每个维度的现状。 规范化评估,次要针对团队的交付模式规范化的水平;线上化评估,次要针对研发治理过程侧、工程侧的工具平台化水平;数字化评估,次要针对效力指标管理体系的成熟度;智能化评估,次要针对数据驱动战略决策的能力。通过评估,咱们认为案例中客户团队的现状是,在规范化、线上化和数字化上都有初步停顿,然而在智能化上绝对单薄。 第二步,咱们基于客户现状开始梳理痛点。 比拟常见的梳理形式是跟不同要害角色进行访谈,组织群体性工作坊、麻利回顾会等,尽可能让研发团队高度参加。一方面能够更全面地收集痛点和问题,另一方面团队从问题梳理上就高度参加,之后在推广任何改良措施时,会有更高的主观能动性。通过痛点收集,咱们将客户遇到的问题演绎为三类:业务数字化转型,急需 IT 项目管理的晋升;团队、不同角色间的协同效率较低;不足对立的研发合作平台。 梳理完之后,咱们会造成一个痛点的待办事项,从多个维度去辨别问题的紧急性,从而打造下一步的施行策略。 第三步,用价值流图剖析(VSM)优化研发流程。通过可视化团队中的工作流程,让团队有更好的视角对目前的工作流进行扫视,辨认其中的节约,从而优化整体工作流。 在该客户案例中,咱们通过优化组织级的治理标准、项目管理标准,以及一些专门痛点,比方需要治理、测试治理、运维治理等,进行重点优化。当咱们把团队的基础性问题解决掉,再去构建效力平台时,就会有一个很好的根基。 第四步,从全局为客户布局效力晋升蓝图,按阶段逐渐施行。 基于痛点梳理及流程优化,咱们为客户团队整体规划了以优化流程标准、整合平台工具、晋升继续集成测试能力等为次要方向的效力晋升体系蓝图。整个计划施行分为两个阶段: 在第一阶段,从优化现有团队研发标准开始,联合客户现有工具的应用状况,依照最小 MVP 的准则,打造了以 ONES 研发治理平台为核心的初始版研发效力平台,买通企业外部的工具链,实现从业务需要提出到需要实现、公布上线的端到端的集成。此外,在继续集成阶段,咱们也将动态代码扫描和平安代码审计作为品质保障的伎俩。 第二阶段,在继续集成和继续交付能力上,除了动态代码扫描外,咱们也集成了更多的品质保障体系,包含接口自动化测试、平安动态扫描、平安动静扫描等一系列性能侧的实际,逐步晋升整个效力体系的质量保证。同时,持续深入效力研发一体化平台,让工具更加集成,为效力度量体系做筹备。将优良实际推广到其余子公司,造成团体级常识财产。 第五步,建设效力指标库。咱们通过定义指标体系,包含了指标定义、计算公式、指标意义、数据源以及面向角色等因素的考量,从不同角度来定义指标、保护指标。比方从管理层、我的项目管理层、业务视角,咱们更关注资源投入、我的项目品质、我的项目老本,更关注我的项目周期、交付周期等指标。然而从运维角度来看,他可能更关怀故障响应的时效、故障解决的时效等指标。 与此同时,在验证效力指标时,也要先验证紧迫性较高的指标,解决紧迫性较高的痛点。 最初一步,打造效力指标的治理闭环。 通过 MVP 的模式,咱们以麻利迭代的形式,在每个迭代中选取大量指标,联合痛点,优先选取紧迫性较高的痛点,而后以相干指标作为前几个迭代的施行对象,定期剖析,造成改良口头项,最终造成闭环。 在每一个迭代中,咱们都会依照剖析问题、选取指标、选取指标、获取数据、剖析反馈、改良落地的程序去施行。 有了改良指标后,接下来是打造效力指标的治理闭环。 最终极的指标,就是联合咱们构建的研发效力一体化平台,实现效力治理的闭环,打造出一个数据驱动的效力度量可视化平台。 通过这样一个平台,咱们能够自动化地产出各种视角的效力指标以及后果剖析,对整个企业将来的布局产生踊跃的影响作用。 最初总结一下,通过打造效力晋升门路的六个实际,咱们为客户打造了一个效力晋升蓝图。其中实现门路能够演绎为三个环节: 搭建组织级的流程标准,引入麻利及工程的相干实际,实现效力晋升的基础性筹备工作。以 ONES 研发治理平台为核心,买通上下游的公布平台,造成一体化平台;同时反对稳敏双态的项目管理,也就是麻利和瀑布双模式的项目管理能力。利用数据驱动效力改良闭环,打造出一个比拟成熟的效力治理平台。 ...

May 17, 2023 · 1 min · jiezi

关于程序员:Python-结合多进程和-Asyncio-以提高性能

动动发财的小手,点个赞吧! 简介多亏了 GIL,应用多个线程来执行 CPU 密集型工作素来都不是一种抉择。随着多核 CPU 的遍及,Python 提供了一种多解决解决方案来执行 CPU 密集型工作。然而直到现在,间接应用多过程相干的API还是存在一些问题。 在本文开始之前,咱们还有一小段代码来帮忙演示: import timefrom multiprocessing import Processdef sum_to_num(final_num: int) -> int: start = time.monotonic() result = 0 for i in range(0, final_num+1, 1): result += i print(f"The method with {final_num} completed in {time.monotonic() - start:.2f} second(s).") return result该办法承受一个参数并从 0 开始累加到该参数。打印办法执行工夫并返回后果。 多过程存在的问题def main(): # We initialize the two processes with two parameters, from largest to smallest process_a = Process(target=sum_to_num, args=(200_000_000,)) process_b = Process(target=sum_to_num, args=(50_000_000,)) # And then let them start executing process_a.start() process_b.start() # Note that the join method is blocking and gets results sequentially start_a = time.monotonic() process_a.join() print(f"Process_a completed in {time.monotonic() - start_a:.2f} seconds") # Because when we wait process_a for join. The process_b has joined already. # so the time counter is 0 seconds. start_b = time.monotonic() process_b.join() print(f"Process_b completed in {time.monotonic() - start_b:.2f} seconds")如代码所示,咱们间接创立并启动多个过程,调用每个过程的start和join办法。然而,这里存在一些问题: ...

May 16, 2023 · 2 min · jiezi

关于程序员:量化之-win-平台下部署与执行定时任务

量化之 win 平台下部署与执行定时工作该教程在 win 11 的平台下是没问题的,其余版本零碎唤醒计算机可能须要本人调试下。创立工作打算执行 python 脚本流程如下: 效果图 每天股市开盘后,工作打算唤醒计算机执行数据更新,指标计算,而后生成主动复盘文档,主动推送到 github ,主动部署动态网站,而后告诉到我创立的微信群,这样复盘就省心省力了。 告诉到微信群 主动复盘文档归档动态网站 以上效果图全副是由程序自动化实现 创立工作打算唤醒计算机须要创立工作打算,创立工作打算流程如下: 控制面板,关上工作打算程序 新建工作,并配置重要信息 惯例: 应用最高权限 触发器: 设置触发工作条件 操作: 按文件截图配置 条件: 唤醒计算机运行此工作 设置: 按图勾选和选中 唤醒计算机执行 python 脚本所遇到的问题命令窗口执行 python 脚本环境问题 其实,唤醒计算机执行 python 脚本所在的环境即是命令窗口的 python 环境,所以须要解决命令窗口环境与工程环境统一。 查看工程 python 环境 配置命令 python 环境的环境变量 查看命令 python 环境是否和量化工程环境是否统一 命令窗口执行 python 脚本 ModuleNotFoundError 问题 因为本人写的量化工程代码未能被命令环境辨认,所以会呈现以上谬误,把本人的写的代码被命令窗口发现即可,在工作 python 脚本以下代码即可。 # 增加模块被发现curPath = os.path.abspath(os.path.dirname(__file__))rootPath = os.path.split(curPath)[0]sys.path.append(rootPath)肯定要把这代码放在工作脚本的顶部,如下图所示: ...

May 16, 2023 · 2 min · jiezi

关于程序员:阿里云云原生微服务的认证费用是多少考试内容是什么

“云”是当初的热门概念,咱们的社会被网络、信息通信技术、云计算扭转了,天南海北的间隔越变越短,人们购买物品的形式也愈发便当,现在云对于生存的方方面面都起到了至关重要的作用。 因而市场上须要大量的人才来保护企业运行,而阿里云作为当初市场上占比最大的云厂商,其旗下的认证是相当具备含金量的,阿里云ACP云原生微服务就是专门针对于从事微服务岗位的人设立的,上面小编简略介绍一下,有须要的能够在认证大使网站上具体理解。 阿里云ACP云原生微服务概述 认证蕴含了云原生微服务人才所需技能及常识的工程师认证,定义行业云原生微服务畛域人才的考量规范,是阿里巴巴云原生微服务产品(利用托管平台、音讯队列、运维工具等)相干体系认证的外围局部。 阿里云ACP云原生微服务考试内容 云原生微服务概述企业级分布式应用服务 EDAS (ACM、ScheduleX)音讯队列 RocketMQ 版 音讯队列 Kafka 版 Serverless 利用引擎 SAE 函数计算(Function Compute) MSE & GTS 业务实时监控服务 ARMS 性能测试 PTS 利用高可用服务 AHAS 阿里云ACP云原生微服务考试题型 单选题 70题 每题1分多选题 30题 每题1分

May 16, 2023 · 1 min · jiezi

关于程序员:直播预告|脑机接口学术周来袭2023世界机器人大赛赛题解读学术分享抢先看

世界机器人大赛被誉为机器人界的“奥林匹克”,已成为国内外影响宽泛的机器人畛域官网业余赛事。“世界机器人大赛—BCI脑控机器人大赛” 至今已胜利举办了6届,大赛旨在打造集科技性、创新性、实用性于一体的世界级脑-机接口赛事,推动脑-机接口技术的翻新冲破。 2023年世界机器人大赛—BCI脑控机器人大赛“腾讯云杯”技术赛行将启动,腾讯云自2022年起就为技术赛全程提供技术支持,以弱小稳固的算力为开发者和科研工作者保驾护航! <p align=center>扫码进入赛事专区 获取赛事资讯及独家备赛材料</p> 5月15-19日期间,腾讯云与2023世界机器人大赛联合推出“世界机器人大赛-BCI脑控机器人大赛”脑机接口学术周直播,将通过腾讯会议网络研讨会,公布“2023世界机器人大赛—BCI脑控机器人大赛”比赛内容,具体解读“腾讯云杯”技术赛各赛题内容和教训分享。 还有脑机接口、云计算专家、企业家和投资人独特缺席,从“脑机接口翻新利用成绩”、“脑机接口与云计算”、“脑机接口时机与挑战”等方面,独特分享并探讨脑机接口技术多样化利用场景、智能脑机技术成绩转化、脑机接口产业发展趋势等话题。 扫码即刻预约直播

May 16, 2023 · 1 min · jiezi

关于程序员:Unity3D-重要的类-Gizmos-和-Handles

举荐:将NSDT场景编辑器退出你的3D工具链3D工具集:NSDT简石数字孪生重要的类 - Gizmos 和 HandlesGizmos 和 Handles 类用于在 Scene 视图和 Game 视图绘制线条和形态以及交互式手柄和控件。这两个类独特提供了一种办法来扩大这些视图中显示的内容,并构建交互式工具以您喜爱的任何形式编辑我的项目。例如,您能够在游戏中围绕非玩家角色创立一个可拖动的圆圈辅助图标,代表它可听到或看到玩家的区域,而不用在 Inspector 中输出数字。本页面提供了 Gizmos 和 Handles 类的简略概述。无关 Gizmos 和 Handles 类每个成员的残缺文档和详尽参考,请参阅 Gizmos 和 Handles 脚本参考页面。GizmosGizmos 类容许您将线条、球体、立方体、图标、纹理和网格绘制到 Scene 视图中,在开发我的项目时用作调试、设置的辅助伎俩或工具。例如,要在游戏对象四周绘制一个 10 个单位的黄色线框立方体,您能够应用以下代码:using UnityEngine;public class GizmosExample : MonoBehaviour{ void OnDrawGizmosSelected(){ // 在变换位置绘制一个黄色立方体 Gizmos.color = Color.yellow; Gizmos.DrawWireCube(transform.position, new Vector3(10, 10, 10));}}这是将立方体搁置在一个方向光游戏对象上时的外观。A light GameObject with an extra script applied which draws a cube gizmo around its position无关如何应用 Gizmos 的残缺文档,请参阅 Gizmos 脚本参考页面。HandlesHandles 相似于 Gizmos,但在交互性和操作方面提供了更多功能。Unity 自身提供的用于在 Scene 视图中操作我的项目的 3D 控件是 Gizmos 和 Handles 的组合。内置的 Handle GUI 有很多,如通过变换组件定位、缩放和旋转对象等相熟的工具。不过,您能够自行定义 Handle GUI,以与自定义组件编辑器联合应用。此类 GUI 对于编辑以程序形式生成的场景内容、“不可见”项和相干对象的组(如门路点和地位标记)十分实用。例如,以下是如何创立带有箭头手柄的圆弧区域,用于在 Scene 视图中批改 “shield area”:using UnityEditor;using UnityEngine;using System.Collections; ...

May 16, 2023 · 1 min · jiezi

关于程序员:浅析垃圾回收

大家好,我是易安! Java虚拟机的主动内存治理,将本来须要由开发人员手动回收的内存,交给垃圾回收器来主动回收。不过既然是主动机制,必定没法做到像手动回收那般精准高效 ,而且还会带来不少与垃圾回收实现相干的问题。明天咱们来简略分析下垃圾回收的概念。 援用计数法与可达性剖析垃圾回收,顾名思义,便是将曾经调配进来的,但却不再应用的内存回收回来,以便可能再次调配。在Java虚拟机的语境下,垃圾指的是死亡的对象所占据的堆空间。这里便波及了一个要害的问题:如何分别一个对象是存是亡? 咱们先来讲一种古老的分别办法:援用计数法(reference counting)。它的做法是为每个对象增加一个援用计数器,用来统计指向该对象的援用个数。一旦某个对象的援用计数器为0,则阐明该对象曾经死亡,便能够被回收了。 它的具体实现是这样子的:如果有一个援用,被赋值为某一对象,那么将该对象的援用计数器+1。如果一个指向某一对象的援用,被赋值为其余值,那么将该对象的援用计数器-1。也就是说,咱们须要截获所有的援用更新操作,并且相应地增减指标对象的援用计数器。 除了须要额定的空间来存储计数器,以及繁琐的更新操作,援用计数法还有一个重大的破绽,那便是无奈解决循环援用对象。 举个例子,假如对象a与b互相援用,除此之外没有其余援用指向a或者b。在这种状况下,a和b实际上曾经死了,但因为它们的援用计数器皆不为0,在援用计数法的心中,这两个对象还活着。因而,这些循环援用对象所占据的空间将不可回收,从而造成了内存泄露。 目前Java虚拟机的支流垃圾回收器采取的是可达性剖析算法。这个算法的本质在于将一系列GC Roots作为初始的存活对象合集(live set),而后从该合集登程,摸索所有可能被该汇合援用到的对象,并将其退出到该汇合中,这个过程咱们也称之为标记(mark)。最终,未被摸索到的对象便是死亡的,是能够回收的。 那么什么是GC Roots呢?咱们能够临时了解为由堆外指向堆内的援用,一般而言,GC Roots包含(但不限于)如下几种: Java办法栈桢中的局部变量;已加载类的动态变量;JNI handles;已启动且未进行的Java线程。可达性剖析能够解决援用计数法所不能解决的循环援用问题。举例来说,即使对象a和b互相援用,只有从GC Roots登程无奈达到a或者b,那么可达性剖析便不会将它们退出存活对象合集之中。 尽管可达性剖析的算法自身很扼要,然而在实践中还是有不少其余问题须要解决的。 比如说,在多线程环境下,其余线程可能会更新曾经拜访过的对象中的援用,从而造成误报(将援用设置为null)或者漏报(将援用设置为未被拜访过的对象)。 误报并没有什么挫伤,Java虚拟机至少损失了局部垃圾回收的机会。漏报则比拟麻烦,因为垃圾回收器可能回收事实上仍被援用的对象内存。一旦从原援用拜访曾经被回收了的对象,则很有可能会间接导致Java虚拟机解体。 Stop-the-world以及平安点怎么解决这个问题呢?在Java虚拟机里,传统的垃圾回收算法采纳的是一种简略粗犷的形式,那便是Stop-the-world,进行其余非垃圾回收线程的工作,直到实现垃圾回收。这也就造成了垃圾回收所谓的暂停工夫(GC pause)。 Java虚拟机中的Stop-the-world是通过平安点(safepoint)机制来实现的。当Java虚拟机收到Stop-the-world申请,它便会期待所有的线程都达到平安点,才容许申请Stop-the-world的线程进行独占的工作。 我已经看到过一种比拟另类的解释:平安词。一旦垃圾回收线程喊出了平安词,其余非垃圾回收线程便会一一停下。 当然,平安点的初始目标并不是让其余线程停下,而是找到一个稳固的执行状态。在这个执行状态下,Java虚拟机的堆栈不会发生变化。这么一来,垃圾回收器便可能“平安”地执行可达性剖析。 举个例子,当Java程序通过JNI执行本地代码时,如果这段代码不拜访Java对象、调用Java办法或者返回至原Java办法,那么Java虚拟机的堆栈不会产生扭转,也就代表着这段本地代码能够作为同一个平安点。 只有不来到这个平安点,Java虚拟机便可能在垃圾回收的同时,持续运行这段本地代码。 因为本地代码须要通过JNI的API来实现上述三个操作,因而Java虚拟机仅需在API的入口处进行平安点检测(safepoint poll),测试是否有其余线程申请停留在平安点里,便能够在必要的时候挂起以后线程。 除了执行JNI本地代码外,Java线程还有其余几种状态:解释执行字节码、执行即时编译器生成的机器码和线程阻塞。阻塞的线程因为处于Java虚拟机线程调度器的掌控之下,因而属于平安点。 其余几种状态则是运行状态,须要虚拟机保障在可预感的工夫内进入平安点。否则,垃圾回收线程可能长期处于期待所有线程进入平安点的状态,从而变相地进步了垃圾回收的暂停工夫。 对于解释执行来说,字节码与字节码之间皆可作为平安点。Java虚拟机采取的做法是,当有平安点申请时,执行一条字节码便进行一次平安点检测。 执行即时编译器生成的机器码则比较复杂。因为这些代码间接运行在底层硬件之上,不受Java虚拟机掌控,因而在生成机器码时,即时编译器须要插入平安点检测,以防止机器码长时间没有平安点检测的状况。HotSpot虚拟机的做法便是在生成代码的办法进口以及非计数循环的循环回边(back-edge)处插入平安点检测。 那么为什么不在每一条机器码或者每一个机器码基本块处插入平安点检测呢?起因次要有两个。 第一,平安点检测自身也有肯定的开销。不过HotSpot虚拟机曾经将机器码中平安点检测简化为一个内存拜访操作。在有平安点申请的状况下,Java虚构机会将平安点检测拜访的内存所在的页设置为不可读,并且定义一个segfault处理器,来截获因拜访该不可读内存而触发segfault的线程,并将它们挂起。 第二,即时编译器生成的机器码打乱了本来栈桢上的对象散布情况。在进入平安点时,机器码还需提供一些额定的信息,来表明哪些寄存器,或者以后栈帧上的哪些内存空间寄存着指向对象的援用,以便垃圾回收器可能枚举GC Roots。 因为这些信息须要不少空间来存储,因而即时编译器会尽量避免过多的平安点检测。 不过,不同的即时编译器插入平安点检测的地位也可能不同。以Graal为例,除了上述地位外,它还会在计数循环的循环回边处插入平安点检测。其余的虚拟机也可能选取办法入口而非办法进口来插入平安点检测。 不论如何,其目标都是在可承受的性能开销以及内存开销之内,防止机器码长时间不进入平安点的状况,间接地缩小垃圾回收的暂停工夫。 除了垃圾回收之外,Java虚拟机其余一些对堆栈内容的一致性有要求的操作也会用到平安点这一机制。 垃圾回收的三种形式当标记完所有的存活对象时,咱们便能够进行死亡对象的回收工作了。支流的根底回收形式可分为三种。 第一种是革除(sweep),即把死亡对象所占据的内存标记为闲暇内存,并记录在一个闲暇列表(free list)之中。当须要新建对象时,内存治理模块便会从该闲暇列表中寻找闲暇内存,并划分给新建的对象。 革除这种回收形式的原理及其简略,然而有两个毛病。一是会造成内存碎片。因为Java虚拟机的堆中对象必须是间断散布的,因而可能呈现总闲暇内存足够,然而无奈调配的极其状况。 另一个则是调配效率较低。如果是一块间断的内存空间,那么咱们能够通过指针加法(pointer bumping)来做调配。而对于闲暇列表,Java虚拟机则须要一一拜访列表中的项,来查找可能放入新建对象的闲暇内存。 第二种是压缩(compact),即把存活的对象汇集到内存区域的起始地位,从而留下一段间断的内存空间。这种做法可能解决内存碎片化的问题,但代价是压缩算法的性能开销。 第三种则是复制(copy),即把内存区域分为两等分,别离用两个指针from和to来保护,并且只是用from指针指向的内存区域来分配内存。当产生垃圾回收时,便把存活的对象复制到to指针指向的内存区域中,并且替换from指针和to指针的内容。复制这种回收形式同样可能解决内存碎片化的问题,然而它的毛病也极其显著,即堆空间的应用效率极其低下。 当然,古代的垃圾回收器往往会综合上述几种回收形式,综合它们长处的同时躲避它们的毛病。 垃圾回收具体实现大部分的Java对象只存活一小段时间,而存活下来的小局部Java对象则会存活很长一段时间。 (pmd中Java对象生命周期的直方图,红色的示意被逃逸剖析优化掉的对象) Java虚拟机的分代回收思维,简略来说,就是将堆空间划分为两代,别离叫做新生代和老年代。新生代用来存储新建的对象。当对象存活工夫够长时,则将其挪动到老年代。 Java虚拟机能够给不同代应用不同的回收算法。对于新生代,咱们猜想大部分的Java对象只存活一小段时间,那么便能够频繁地采纳耗时较短的垃圾回收算法,让大部分的垃圾都可能在新生代被回收掉。 对于老年代,咱们猜想大部分的垃圾曾经在新生代中被回收了,而在老年代中的对象有大概率会持续存活。当真正触发针对老年代的回收时,则代表这个假如出错了,或者堆的空间曾经耗尽了。 这时候,Java虚拟机往往须要做一次全堆扫描,耗时也将不计成本。(当然,古代的垃圾回收器都在并发收集的路线上倒退,来防止这种全堆扫描的状况。) 咱们先来看看Java虚拟机中的堆具体是怎么划分的。 Java虚拟机的堆划分后面提到,Java虚拟机将堆划分为新生代和老年代。其中,新生代又被划分为Eden区,以及两个大小雷同的Survivor区。 默认状况下,Java虚拟机采取的是一种动态分配的策略(对应Java虚拟机参数-XX:+UsePSAdaptiveSurvivorSizePolicy),依据生成对象的速率,以及Survivor区的应用状况动静调整Eden区和Survivor区的比例。 当然,你也能够通过参数-XX:SurvivorRatio来固定这个比例。然而须要留神的是,其中一个Survivor区会始终为空,因而比例越低节约的堆空间将越高。 通常来说,当咱们调用new指令时,它会在Eden区中划出一块作为存储对象的内存。因为堆空间是线程共享的,因而间接在这里边划空间是须要进行同步的。 否则,将有可能呈现两个对象共用一段内存的事变。如果你还记得前两篇我用“停车位”打的比如的话,这里就相当于两个司机(线程)同时将车停入同一个停车位,因此产生剐蹭事变。 ...

May 16, 2023 · 2 min · jiezi

关于程序员:每日一算冒泡排序

冒泡排序是最简略的排序算法,如果相邻元素的程序谬误,则通过反复替换它们来工作。该算法不适用于大数据集,因为它的均匀和最坏状况工夫复杂度都很高。 原理 输出: arr[] = {6, 3, 0, 5} 第一步: 冒泡排序从最后面的两个元素开始,比拟它们以查看哪个更大。( 6 3 0 5 ) –> ( 3 6 0 5 ),这里,算法比拟前两个元素,并从 6 > 3 开始替换。( 3 6 0 5 ) –> ( 3 0 6 5 ), 从 6 > 0 开始替换( 3 0 6 5 ) –> ( 3 0 5 6 ), Swap since 6 > 5第二步: 当初,在第二次迭代期间,它应该如下所示:( 3 0 5 6 ) –> ( 0 3 5 6 ), Swap since 3 > 0( 0 3 5 6 ) –> ( 0 3 5 6 ), 不变为 5 > 3第三步: ...

May 16, 2023 · 3 min · jiezi

关于程序员:每日一算选择排序算法

大家好,我是易安! 明天咱们开始每日一算的篇章,明天带来的是抉择算法。 抉择排序是一种简略而高效的排序算法,它通过从列表的未排序局部中反复抉择最小(或最大)元素并将其挪动到列表的已排序局部来工作。该算法重复从列表的未排序局部中抉择最小(或最大)的元素,并将其与未排序局部的第一个元素替换。对列表中残余的未排序局部反复此过程,直到整个列表排序结束。抉择排序的一种变体称为“双向选择排序”,它通过在最小元素和最大元素之间交替遍历元素列表,这种形式在某些状况下能够更快。 抉择排序算法 该算法在给定数组中保护两个子数组。 曾经排序的子数组。残余的子数组未排序。在抉择排序的每次迭代中,从未排序的子数组中选取最小元素(思考升序)并将其挪动到已排序子数组的结尾。 每次迭代后,已排序的子数组大小减少一,未排序的子数组大小缩小一。 在 N(数组的大小)次迭代之后,咱们将失去一个排序的数组。 抉择排序流程图: 抉择排序原理?让咱们以上面的数组为例:arr[] = {64, 25, 12, 22, 11} 第一步: 对于排序数组中的第一个地位,整个数组从索引 0 到 4 顺次遍历。以后寄存64的第一个地位,遍历整个数组后显然11是最低值。6425122211 因而,将 64 替换为11。通过一次迭代后,恰好是数组中最小值的 11 往往会呈现在排序列表的第一个地位。1125122264 第二步: 对于存在 25 的第二个地位,再次按程序遍历数组的其余部分。1125122264 遍历后发现12是数组中倒数第二的值,应该呈现在数组的第二位,因而替换这些值。1112252264 第三步: 当初,对于第三位,再次出现25 的中央遍历数组的其余部分并找到数组中第三小的值。1112252264 遍历时,22是第三小的值,它应该呈现在数组的第三位,因而将22与第三位的元素替换。1112222564 第四步: 同样,对于第四个地位,遍历数组的其余部分,找到数组中第四小的元素因为25是第四低的值,因而它将排在第四位。1112222564 第五步: ...

May 16, 2023 · 1 min · jiezi

关于程序员:华为的认证哪个最好考试费用是多少

目前信息通信行业是社会最为热门的认证之一,很多人为了进入这一行都会通过考据书来给本人背书,华为云作为当初最有热度的云厂商之一,其旗下的认证是相当具备含金量的,上面小编就热门的云计算和数通介绍一下,有须要的能够在认证大使上具体理解。 华为云云计算概述 培训与认证具备用云能力的云计算高级经营工程师和具备管云能力的云计算高级运维工程师 华为云云计算考试内容 1、开源OpenStack架构、要害组件的工作原理及调用关系介绍 2、华为云Stack架构、产品组件及公共组件介绍 3、华为云Stack计算、存储、网络等根底IaaS层服务的原理及应用介绍 4、华为云Stack经营理念及应用介绍 5、华为云Stack运维理念及应用介绍 华为云数通概述 培训与认证具备数通根底通用常识和技能程度的工程师 华为云数通考试内容 1、数据通信与网络根底 2、构建互联互通的IP网络 3、构建以太替换网络 4、网络安全根底与网络接入 5、网络服务与利用 6、WLAN根底 7、广域网根底 8、网络管理与运维 9、IPv6根底 10、SDN与自动化根底

May 15, 2023 · 1 min · jiezi

关于程序员:Java并发教程编程入门自学教程菜鸟教程免费教程分享

教程简介Java并发入门教程 - 从简略的步骤理解Java并发,从根本到高级概念,包含概述,环境设置,次要操作,线程通信,同步,死锁,ThreadLocal,ThreadLocalRandom,Lock,ReadWriteLock,Condition,AtomicInteger, AtomicLong,AtomicBoolean,AtomicReference,AtomicIntegerArray,AtomicLongArray,AtomicReferenceArray,Executor,ExecutorService,ScheduledExecutorService,newFixedThreadPool,newCachedThreadPool,newScheduledThreadPool,newSingleThreadExecutor,ThreadPoolExecutor,ScheduledThreadPoolExecutor,Futures and Callables,Fork-Join框架,BlockingQueue,ConcurrentMap,ConcurrentNavigableMap。 线程的劣势1.充分利用多CPU的能力,进步零碎吞吐量:在蒸煮(工作1)的过程中,同时能够炒菜(工作2)。当然你的煤气灶是单灶就没法了。。。即便在单CPU的机器上,多线程也可能进步程序的吞吐量,如果某个操作被阻塞(同步I/O操作),后续的逻辑不得不期待其实现。如果将其离开,放入不同的线程中,则在I/O上被阻塞的线程不会影响另一个线程被调度执行。比方你等烧水的工夫能够刷朋友圈。 这样做的前提是,程序首先是能够被离开,另一个线程的执行并不依赖I/O操作的后果。 2.简化建模:你有三个工作要解决,改BUG,给老板写报告,关注股市行情等。当你正在搜索枯肠地改bug,老板突然发消息让你尽快交报告,还同时高频察看股价以便出手解套。有时候你要兼顾几个工作,经常让人倍感疲乏。程序也一样,有很多task要解决,如何以优雅的形式进行是一个设计问题。JAVA容许将简单利用合成为不同的工作,每个任务分配给独立的线程运行。从而使编程逻辑清晰。很多框架如Servlet,RMI都是利用此模型开发,框架来治理申请,创立线程,均衡负载,散发(dispatch)申请给相应的业务解决组件。屏蔽了底层的细节,开发人员只须要关注业务逻辑。 3.进步用户界面响应:用Eclipse IDE都晓得,如果触发一个长时间的工作(编译工程,搜寻文件,更新等),界面仍然能够承受用户的其余操作。对于长时间的工作,会放入独自的线程外面实现,从而不影响Event Thread解决用户别的很快实现的申请。 4.异步事件处理的简单化: Java NIO提供了一种非阻塞IO机制,在超大量申请来时,可能会触到多线程的性能瓶颈,通过NIO实现单线程内的异步IO,从而缩小线程的创立数量,并且不阻塞其余逻辑。然而NIO绝对比较复杂也容易出错。而通过简略的多线程,同步IO曾经能够满足大部分需要。 教程目录Java并发教程Java并发 - 概述Java并发 - 环境设置Java并发 - 次要操作深刻沟通Java并发 - 同步Java并发 - 死锁Java并发 - ThreadLocal类ThreadLocalRandom类Java并发 - 锁接口Java并发 - ReadWriteLock接口Java并发 - 条件接口Java并发 - AtomicInteger类Java并发 - AtomicLong类Java Concurrency - AtomicBoolean类Java并发 - AtomicReference类Java并发 - AtomicIntegerArray类Java Concurrency - AtomicLongArray类AtomicReferenceArray类Java并发 - Executor InterfaceExecutorService接口ScheduledExecutorService接口newFixedThreadPool办法newCachedThreadPool办法newScheduledThreadPool办法newSingleThreadExecutor办法ThreadPoolExecutor类ScheduledThreadPoolExecutor类Java并发 - Futures和CallablesJava Concurrency - Fork-Join框架Java并发 - BlockingQueue接口Java并发 - ConcurrentMap接口ConcurrentNavigableMap接口Java并发 - 有用的资源

May 15, 2023 · 1 min · jiezi

关于程序员:程序员不得不了解的计算机进制转换

程序员不得不理解的计算机进制转换最近在备考软考的软件设计师考试,学到了对于计算机的数据表示,因为我是科班出身学的Java,导致计算机基础知识很差,在这里记录一下学习感触 为啥要用二进制晚期计算机的存储介质是晶体管,晶体管依据电压不同,只能示意2种状态,也就是0和1计算机应用二进制运算更加不便更具体的请参考计算机为啥采纳二进制 为啥要用十六进制首先,如果你的计算机是32位的机器,数字1在计算机中的示意就是0000000000000000001,如果你是要操作内存,用这么长一串二进制数,是不是感觉有拍板大,1位16进制数能够示意4位二进制数,那数字1用16进制来示意就是1H,是不是感觉清新多了。 进制转换的原理浏览本章之前须要明确的点 进制数的位数从右到左,别离示意从高到低,咱们称左边的数为高位,右边的数为低位一位八进制数最多示意三位二进制数,一位十六进制数最多示意4位二进制数十进制转二进制、八进制、十六进制对于10进制转其余进制,个别是应用除法取余数的形式进行计算 例如将数字151 转换为二进制 被除数 ÷ 除数 = 商 ... 余数151 ÷ 2 = 75 ... 1 75 ÷ 2 = 37 ... 1 37 ÷ 2 = 18 ... 1 18 ÷ 2 = 9 ... 0 9 ÷ 2 = 4 ... 14 ÷ 2 = 2 ... 0 2 ÷ 2 = 1 ... 0 1 ÷ 2 = 0 ... 1将每一步失去的余数从下往上顺次排列,失去 10010111,即151的二进制示意。转为八进制 ...

May 15, 2023 · 1 min · jiezi

关于程序员:Lua-备忘清单开发速查表分享

Lua 备忘清单Lua 是一个玲珑的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的钻研小组于1993年开发的。 其设计目标是为了通过灵便嵌入应用程序中从而为应用程序提供灵便的扩大和定制性能。Lua由规范C编写而成,简直在所有操作系统战争台上都能够编译,运行。Lua并没有提供弱小的库,这是由它的定位决定的。所以Lua不适宜作为开发独立应用程序的语言。Lua 有一个同时进行的JIT我的项目,提供在特定平台上的即时编译性能。 Lua脚本能够很容易的被C/C++ 代码调用,也能够反过来调用C/C++的函数,这使得Lua在应用程序中能够被广泛应用。不仅仅作为扩大脚本,也能够作为一般的配置文件,代替XML,ini等文件格式,并且更容易了解和保护。 Lua由规范C编写而成,代码简洁柔美,简直在所有操作系统战争台上都能够编译,运行。 一个残缺的Lua解释器不过200k,在所有脚本引擎中,Lua的速度是最快的。这所有都决定了Lua是作为嵌入式脚本的最佳抉择。 Lua开发速查蕴含最重要概念、函数、办法等的 Lua 备忘单。 初学者的残缺疾速参考。入门,为开发人员分享疾速参考备忘单。 开发速查表纲要入门 下载hello world正文type() 函数numberstringtable变量赋值运算符类型转换条件语句 运算符while 循环if 语句for 循环repeat...until 循环break函数 初始化返回值参数多个返回值可变参数(...)字符串 字符串办法正则匹配数学方法 罕用办法工具办法其它办法table 初始化数组多维数组初始化 tabletable 办法迭代器模块 定义模块导入模块公有函数另见

May 15, 2023 · 1 min · jiezi

关于程序员:基于容器和Kubernetes的应用无限扩容

基于利用负载动静治理CPU、内存等资源的应用是云原生架构的最佳实际之一,Kubernetes通过资源申请和限度以及HPA/VPA等机制,为云原生利用资源管理提供了很好的反对。原文: Infinite Scaling with Containers and Kubernetes如果没有足够资源让容器实现工作,那么即便把世界上最好的代码容器化也没有任何意义。 我在写对于容器状态探测的文章时产生了这篇文章的想法,很显著,对kubelet查问返回精确响应只是解决方案的第一局部。 第二局部是本文的主题: 为容器分配资源。咱们须要摸索资源分配的所有畛域,从Kubernetes pod中的单个容器直到云上近乎有限的容量。 Kubernetes资源管理: 概述"如何确保容器始终领有所需资源?" 本节只是为刚开始应用Kubernetes治理资源的人简略介绍一下资源管理,对于命名空间限度范畴和Kubernetes容器资源管理的官网文档依然是必读材料,如果你对这一主题比拟相熟,能够跳到下一部分。 Kubernetes资源管理次要包含CPU、内存和本地长期存储,容器标准能够为每种资源类型定义资源申请和资源限度。 资源申请(resource request) 是容器运行时所需的最小资源量,节点调度器只有在节点满足pod中所有容器的最小资源申请时,才会将pod调度到该节点上。 资源限度(resource limit) 是kubelet在其生命周期内应该调配给容器的最大资源量。当容器设置了资源限度但没有资源申请时,相当于将资源申请设置为与资源限度雷同的值。 容器能够设置资源申请和限度的任意组合,CPU和内存预留的不同组合定义了父pod的服务质量,如下所示: pod中每个容器都有资源申请和限度,并且每个容器的申请和限度具备雷同的值: Guaranteed。pod中至多有一个容器没有设置资源申请或限度: BestEfford。不属于前两种的pod: Burstable。 当kube-scheduler决定在工作节点上调度某个pod时,理解这些类别的含意会很有帮忙: "Guaranteed"意味着调度程序只将pod调配给具备足够资源的工作节点,以满足pod中所有容器的申请。"Burstable"意味着调度程序会寻找具备足够内存的工作节点来满足pod中所有容器的资源申请,调度器并不关怀工作节点是否可能满足pod中容器的资源限度或资源申请之上的任何限度。"BestEffort"是指调度程序在调度"BestEffort" pod之前,将首先满足"Guaranteed"或"Burstable" pod的资源申请。调度器会一直从新评估,如果"Guaranteed"或"Burstable" pod须要资源,可能会标记"BestEffort" pod以便驱赶。决策工夫:谁来定义容器资源?首先须要了解,资源申请是用来爱护容器的,而资源限度是用来爱护集群的。 做出决策的次要参与方是产品开发人员和系统管理员,因为决策会随着工夫的推移而扭转,因而他们之间的"会谈"充斥挑战: 产品开发人员将大部分工夫用于建设与部署与生产环境隔离的资源边界。系统管理员通常在解决Kubernetes工作负载标准时不足足够的文档阐明资源申请和限度的变动会如何影响工作负载。产品开发人员能够更好的理解工作负载的需要及其在不同资源分配下的行为,一般来说,应该可能在公布前确定以下阈值: 相对最小(Absolute minimum)资源申请。这个值是加载运行时所需的资源,并且可能轻松响应来自kubelet的探测申请。最大可用(Maximum usable)资源限度。这个值是容器的性能开始遇到内部限度的点,比方磁盘I/O或调用第三方服务的瓶颈。 现实状况下,产品开发人员还应该建设并记录容器性能在边界内的变动状况,这些信息能够帮忙零碎架构师在部署之前布局初始容量,并使系统管理员可能调整生产环境中的资源申请。 配额、范畴和公地喜剧系统管理员能够查看集群容量及可用容量。作为偶然兼顾SRE的人,我比拟观赏"Guaranteed"工作负载。对于组织来说,在pod中所有容器上设置固定的资源边界并信赖pod能够在边界内牢靠工作须要非凡的信念(以及大量测试)。 "Burstable"工作负载在信赖范畴内的排名略低。当我做SRE时,最大的心愿是在burstable pod中的所有容器都设置了上一节提到的"相对最小"资源申请。 对于burstable工作负载的资源限度,我的观点来自资源限度背地的开发理念: (好的理念) 在工作负载内进行主动伸缩(例如,启动具备最小和最大内存限度的Java虚拟机)。这种安顿(资源限度设置高于资源申请)意味着开发团队花工夫确定了工作负载的可用操作范畴,并能很好的管制和治理资源。(不好的理念) 避免最终谬误。这种设计理念让我想起了"公地喜剧",即每个人都预期资源最终将被耗尽,因而须要占有更多共享资源,从而减速了共享资源的耗尽。当开发团队低估了资源需要时,这种理念尤其具备灾难性,在这种状况下,工作负载继续在其资源开销的突发区域内运行,使其容易受到CPU节流、内存耗尽和工作节点kubelet终止的影响。最初留下来的是"BestEffort"工作负载,它们不受约束的耗尽集群资源的能力,以及面对其余申请雷同资源的pod时软弱的调度状态,让咱们时刻放心集群的运行。 在解决这些类型的工作负载时,系统管理员必须花工夫思考以下选项: 用限度范畴(limit ranges)")为命名空间中的容器和pod设置默认资源申请和限度。我认为,对跨命名空间的工作负载调配雷同的资源限度,再加上不足产品开发人员的投入,让这一主张并不事实。用资源配额(resource quotas)")限度命名空间中所有pod的组合资源。这种办法是更有前途的解决方案,缩小了最终容器对该命名空间失控的"爆炸半径",长处是防止了资源平安缓冲区叠加命名空间中pod数量所造成的节约。深吸一口气,咱们无望从下一节中介绍的pod主动缩放技术中解脱进去。 Pod主动缩放: 超过动态大小许多读者可能曾经筹备好提出解决难以管制的工作负载的罕用办法: Horizontal pod autoscaling (HPA)")Vertical pod autoscaling (VPA)")这两种风行的主动扩容技术能够依据资源指标在集群内动态分配容量。HPA能够更改部署pod正本的数量,而VPA能够更改pod的资源申请和限度。留神,在Kubernetes加强倡议增加到Kubernetes之前,VPA对pod的更改会导致pod重启。 尽管可能主动扩大容量,但这些组件并不能在不足对工作负载的操作范畴的准确定义。例如,如果pod中的容器没有对该度量的资源申请,HPA将不会对该度量采取行动。HPA也不适宜部署依赖于集群中pod的特定数量的正本的场景。 对于须要固定数量正本的工作负载或没有预设限度的工作负载,应用VPA成果更好。不过会有一个绝对较长的限度列表。此外,如果设置限度范畴,则须要思考的因素可能会非常复杂。 这些工具在主动伸缩工作负载方面最终是否无效取决于开发期间通过充沛钻研的资源申请和限度的剖析工作。在这方面我必须给予VPA额定的信赖,因为它可能"学习"部署的资源范畴。 自动化运维operator: 即开即用的SRE?Kubernetes operator引入了自定义资源的概念来管理应用程序和工作负载。从概念上讲,operator继续监控自定义资源并将其内容映射到工作负载资源。 Operator成熟度模型定义了五个不同级别的自动化,最高是5级,即"主动驾驶(Auto Pilot)"。处于该成熟度阶段的operator应该对其治理的工作负载主动利用包含程度或垂直扩大在内的自主行为。 ...

May 14, 2023 · 1 min · jiezi

关于程序员:OpenAI-开源-3D-模型生成器-ShapE|马斯克宣布将卸任推特CEO|思否周刊

40 S 新闻速递iOS 17 外部爆料人士被苹果抓获OpenAI 开源 3D 模型生成器 Shap-E谷歌推出 AI 一键 P 图工具 Magic Editor:魔法换天、人物挪动马斯克再次杠上扎克伯格:WhatsApp 不可信ChatGPT 之父推出加密货币钱包,或成 AI 时代的“身份证”盖茨称 AI 利大于弊:它将扭转人类思考问题的形式微软押注核聚变发电马斯克发表将卸任推特CEOJulia 1.9.0 公布OpenAPI Generator v6.6.0 公布Flutter 3.10 公布Firefox 113 正式公布,带来平安性能、辅助性能改良...RHEL 10 将不蕴含 Xorg行业资讯iOS 17 外部爆料人士被苹果抓获此前,爆料人 analyst941 泄露了大量对于苹果 iOS 17 的细节,但依据最新报道,他们的内幕消息人士在一次口头中被苹果抓获。据报道,消息人士已被苹果辞退,并将面临法律诉讼。analyst941 的消息来源此前爆料了 iOS 17 的多个重大改良,包含对控制中心的大改、苹果地图锁屏细节、改良的 Wallet 和 Health 利用 UI 等。然而,苹果进行了一次“钓鱼执法”,向不同员工告知了 iPad 版 Logic Pro 和 Final Cut Pro 的不同公布日期,因而当 analyst941 的消息人士爆料该音讯后,立马被苹果官网发现了。目前,analyst941 推特账号已被删除。 OpenAI 开源 3D 模型生成器 Shap-E日前,OpenAI 公开了其最新的开源模型 Shap-E,这款创新型 3D 模型生成器能将描述性的文本转化为相应的 3D 模型。用户只需提供描述性的文本,就能生成具备高度细节和复杂度的 3D 模型,大大提高了创作的效率和品质。有业内人士认为,此次开源意义重大,它意味着通用人工智能外围利用技术的自然语言形容技术 Prompt Engineering(PE)在 3D 畛域迎来重大突破。(上证报)谷歌推出 AI 一键 P 图工具 Magic Editor:魔法换天、人物挪动在今日凌晨举办的谷歌 I/ O 2023 开发者大会上,谷歌将重点放在了生成式 AI 上,并推出了一项名为 Magic Editor 矇的性能,该性能让用户无需业余工具即可对照片进行重大编辑。在另一张照片中,Magic Editor 矇让一个坐在长凳上的孩子向右挪动,并且主动生成了新的长凳和气球局部,天空也更加生机勃勃了。 ...

May 14, 2023 · 2 min · jiezi

关于程序员:微服务分布式事务处理

当咱们向微服务架构迁徙时,如何解决好分布式事务是必须思考的问题。这篇文章介绍了分布式事务处理的两种计划,能够结合实际采纳适合的解决方案。原文:Handling Distributed Transactions in the Microservice world[1]现在每个人(包含我)都在思考、构建微服务,分布式系统是微服务的外围准则和所有实现的上下文。 什么是分布式事务?逾越网络上多个物理零碎或计算机的事务被简略的称为分布式事务。在微服务世界中,事务被宰割到多个服务中,须要按顺序调用这些服务以实现整个事务。 上面是一个单体电子商务系统应用事务的例子: 在下面的零碎中,如果用户向平台发送Checkout申请,平台将创立一个本地数据库事务,该事务操作多个数据库表,以解决订单并从库存中保留商品。如果有任何步骤失败,事务(包含订单和保留的商品)能够回滚。这被称为ACID(原子性 Atomicity、一致性 Consistency、隔离性 Isolation、持久性 Durability),由数据库系统保障。 上面是电子商务系统合成为微服务的状况: 当咱们解耦这个零碎时,创立了微服务OrderMicroservice和InventoryMicroservice,各自有独立的数据库。当用户发动Checkout申请时,这两个微服务都将被调用从而将更改利用到各自的数据库中。因为事务是通过多个零碎跨多个数据库的,所以当初这是一个分布式事务。 微服务中的分布式事务有什么问题?随着微服务体系架构的呈现,事务能够逾越多个微服务,从而逾越数据库,因而咱们当初无奈利用数据库的ACID个性,从而面临以下关键问题: 如何放弃事务的原子性?原子性意味着事务要么实现所有步骤,要么没有实现任何步骤。在下面的例子中,如果InventoryMicroservice办法中的“保留商品”失败,如何回滚OrderMicroservice利用的“解决订单”? 如何解决并发申请?如果某个微服务的对象被长久化到数据库中,同时有另一个申请读取雷同的对象。服务应该返回旧数据还是新数据?在下面的例子中,一旦OrderMicroservice曾经实现,那么InventoryMicroservice在执行更新的过程时,客户下单的申请中应该包含以后的订单吗? 现在,零碎应该为失败而设计,其中次要的问题就是解决分布式事务。上面援用Pat Helland的话: 一般来说,应用程序开发人员不会简略的就能实现反对分布式事务的大型可伸缩利用零碎。—— Pat Helland可能的解决方案在设计和构建基于微服务的利用时,上述两个问题十分要害。为了解决这些问题,上面列举几种办法: 两阶段提交(Two-Phase Commit)最终一致性和弥补(Eventual Consistency and Compensation )/ SAGA1. 两阶段提交顾名思义,这种处理事务的形式有两个阶段,筹备阶段和提交阶段,其中起到重要作用的是事务协调器(Transaction Coordinator),负责保护事务的生命周期。 工作形式: 在筹备阶段,所有波及到的微服务都筹备提交,并告诉协调器曾经筹备好实现事务。而后在提交阶段,事务协调器向所有微服务收回提交或回滚命令。 以电子商务系统为例: 在下面的示例中(图3),当用户发送Checkout申请时,TransactionCoordinator将发动一个带有所有上下文信息的全局事务。首先,向OrderMicroservice发送prepare命令创立订单。而后,向InventoryMicroservice发送prepare命令保留商品。当两个服务都能够执行更改时,它们将锁定对象,不再承受其余更改,并告诉TransactionCoordinator。一旦TransactionCoordinator确认所有微服务都已筹备好利用更改,就会通过申请事务commit来要求这些微服务长久化所作的更改,而后所有对象能力被解锁。 在失败的场景中(图4)——如果在任何时候有某个微服务没有做好筹备,TransactionCoordinator将停止事务并发动回滚流程。图中因为某种原因,OrderMicroservice未能创立订单,然而InventoryMicroservice曾经回复说它筹备创立订单。TransactionCoordinator将申请InventoryMicroservice停止创立订单,并回滚所做的任何更改、解锁数据库对象。 长处 该办法保障事务是原子的。交易完结时,要么所有微服务都胜利,要么所有微服务都没有扭转。其次,容许读写拆散,在事务协调器提交更改之前,对象上的更改是不可见的。这种办法通过同步调用告诉客户端胜利或失败。毛病 没什么事件是完满的,两阶段提交与单个微服务的解决工夫比起来慢很多,并且高度依赖于事务协调器,在高负载期间,事务协调器的确会升高零碎的速度。另一个次要毛病是数据库行锁定,该锁可能成为性能瓶颈,并且可能呈现两个事务互相锁定造成的死锁。2. 最终一致性和弥补/SAGA最终一致性的最佳定义之一是microservices.io[2]形容的:每个服务在更新数据时公布一个事件。其余服务订阅事件,当接管到事件时,更新其数据。 在这种办法中,分布式事务由相干微服务上的异步本地事务来实现,微服务通过事件总线互相通信。 工作形式: 再以电子商务系统为例: 在下面的例子中(图5),客户端申请零碎解决订单。在处理过程中,Choreographer收回一个Create Order事件,示意开始一个事务。OrderMicroservice监听到这个事件并创立一个订单,如果胜利,收回一个Order Created事件。Choreographer侦听此事件,并通过收回Reserve items事件持续保留商品。InventoryMicroservice侦听此事件并保留商品,如果胜利,收回Items Reserved事件。在这个例子中,这意味着事务的完结。 微服务之间所有基于事件的通信都是通过事件总线进行的,并由另一个零碎编排以解决复杂性问题。 如果因为任何起因InventoryMicroservice未能保留商品(图6),它会收回Failed to Reserve Items事件。Choreographer侦听此事件,并通过收回Delete Order事件启动弥补事务。OrderMicroservice侦听此事件并删除所创立的订单。 长处 这种办法的一大长处是每个微服务只关注本人的原子事务。如果某个服务破费了更长的工夫,其余微服务不会被阻塞,这也意味着不须要数据库锁。因为其基于异步事件的解决方案,这种办法能够使零碎在高负载下具备高度的可伸缩性。 毛病 该办法的次要毛病是没有读取隔离。这意味着在下面的示例中,客户端能够看到已创立的订单,但在下一秒中,因为弥补事务,订单会被删除。此外,当微服务的数量减少时,调试和保护就变得更加艰难。 论断首先尽量避免分布式事务,如果正在构建新利用,那么就从单体开始,如Martin Fowler在MonolithFirst[3]中所形容的那样: 更常见的办法是从单体开始,逐步剥离边缘的微服务。这种办法能够在微服务体系架构的外围留下一个微小的单体,大多数新的开发都产生在微服务中,而这个单体相对来说变动不大。— Martin Fowler当一个事件须要在两个中央更新数据时,与两阶段提交相比,最终一致性/SAGA计划是解决分布式事务的更好的形式,次要起因是两阶段提交在分布式环境中不能伸缩。不过最终一致性计划引入了新问题,例如如何以原子形式更新数据库和收回事件,因而采纳这种计划须要开发和测试团队扭转思维形式。 ...

May 13, 2023 · 1 min · jiezi

关于程序员:经验正交分解EOF详解及案例

本文的jupyter notebook已上传至github,欢送fork测试~ 0.导言咱们都晓得,气象钻研的时间跨度个别都较长,根本都在30年以上,这就意味着对应的数据集非常宏大,既不能简略地对数据进行形容,也无奈轻易地从数据中提取特色。那么面对如此宏大的数据集,咱们如何能力从中提取出最能形容它的次要特色呢? 在这种场景下,EOF合成就显示出它的弱小劣势了。它能够把随着工夫变动的气象要素场,合成为 空间函数局部 和 工夫函数局部,从而便于咱们发展剖析和钻研,让咱们可能从宏大的气象数据中抓住他们的次要特色。本文将介绍EOF的基本原理,以及在python中如何实现EOF合成。如有不妥之处,还请大家不吝赐教! 1.什么是教训正交合成教训正交合成(Empirical orthogonal function,EOF,以下简称“EOF合成”)又被称为主成分剖析(Principal component analysis,PCA),最早由Pearson提出,20世纪50年代Lorenz将该办法引入大气迷信畛域,随后被广泛应用至今。 EOF合成是一种剖析矩阵数据中的结构特征、提取次要数据特色量的办法。 EOF合成的剖析对象,就是咱们在气象科研和业务工作中,常常要剖析各种气象要素场,如海表温度场、气压场、降水场等。这些气象要素场大多由不规则的网格点所组成。如果咱们抽取这些场的某一段历史期间的材料,就形成一组以网格点为空间点(可看作多个变量)的随工夫变动的样本。 EOF合成所做的,就是把随工夫变动的气象要素场合成为 空间函数局部 和 工夫函数局部,且这两局部互相正交。 其中,空间函数局部可在肯定水平上概括因素场的空间散布特点,这部分是不随工夫变动的;而工夫函数局部则由空间点(即多个变量)的线性组合所形成,称为主重量。 因为这些主重量中前几个就可能占有原空间点(即多个变量)总方差的很大部分,即通过EOF合成能够很容易地将原始因素场的变动信息稀释在前几个主重量及其对应的空间函数上,所以,EOF合成常被用于气象要素场时空变动特色法则的提取和钻研。 2.基本原理在气象科研和业务工作中,咱们常常会剖析某一气象要素的时空数据集,它们大多是3维的,包含2维的空间场以及1维的工夫序列。其中2维空间场对应着一个个的空间点,1维的工夫序列对应着观测的工夫点。 当初假如咱们要对某一个气象要素的时空数据集进行钻研,它共有 m 个空间点 ($x_1,x_2,···,x_m$), n 个工夫点 ($t_1,t_2,···,t_n$)。那对于这样一个时空数据集,咱们就能够用一个 $m×n$ 的矩阵 $F$ 来示意。 其中 $F$ 的行对应着某个空间点在观测期内所有工夫点上的值,$F$ 的列对应着某个工夫点在观测区域内所有空间点上的值。 $$F=\begin{pmatrix} f_{11} & f_{12} & ··· & f_{1n}\\ f_{21} & f_{22} & ··· & f_{2n}\\ ··· & ··· & ··· & ···\\ f_{m1} & f_{m2} & ··· & f_{mn}\\\end{pmatrix}$$ 而咱们的EOF合成办法,就是将时空数据集 $F$ 合成为空间函数 $V$ 和工夫函数 $Z$ 两局部,即 ...

May 12, 2023 · 5 min · jiezi

关于程序员:译-Dart-3-发布了

[译] Dart 3 公布了 原文 https://medium.com/dartlang/announcing-dart-3-53f065a10635 https://ducafecat.com/blog/dart-3 来自 Google I/O 2023 的问候。明天,咱们在 Mountain View 现场发表 Dart 3——迄今为止最大的 Dart 公布!Dart 3 蕴含三个次要停顿。首先,咱们实现了通往 100% 无空平安的旅程。其次,咱们为记录、模式和类修饰符增加了重大的新语言个性。第三,咱们预览了将来,通过 Wasm 编译,咱们将扩充咱们的平台反对,为 web 提供本地代码反对。当初,让咱们进入细节。 100% 无空平安在过来的四年里,咱们将 Dart 倒退成了一种疾速、便携、现代化的语言。当初,通过 Dart 3,它是一种 100% 无空平安的语言!正如咱们之前所探讨的,咱们认为没有其余编程语言已经为现有语言增加过无空平安。所以,这是一个相当漫长的旅程。 在 Dart 中实现了 100% 的 null 平安之后,咱们领有了 sound 类型零碎。您能够信赖,如果一个类型说一个值不是 null,那么它永远不会是 null。这防止了某些类别的编程谬误,如空指针异样。它还容许咱们的编译器和运行时以不可能没有空平安的形式优化代码。这个设计抉择波及到一个折衷。尽管迁徙变得有点艰难,但咱们认为咱们为 Dart 做出了正确的抉择。 迁徙到 Dart 3实现 sound null safety 的一个要害局部是 Dart 社区的不懈反对:pub.dev 的前 1000 个包中有 99% 反对 null safety! 鉴于此,咱们预计曾经迁徙到 null safety 的绝大多数包和应用程序将与 Dart 3 兼容。只有在多数状况下,Dart 3 中的一些相干清理可能会影响一些代码。一些旧的外围库 API 曾经被删除(#34233, #49529),一些工具曾经进行了调整(#50707)。如果您在应用 Dart 3 SDK 迁徙时遇到任何问题,请参阅 Dart 3 迁徙指南。除此之外,咱们心愿您会喜爱新的理性化外围库和工具。 ...

May 12, 2023 · 3 min · jiezi

关于程序员:Flutter-GetX-Tag-属性使用详解

Flutter GetX Tag 属性应用详解理解 Flutter GetX Tag 属性的定义、用处、实现形式和常见问题。 <img src="https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/05/5348fa28c99630c08bc1d42d2ecfde65.jpeg" style="width:90%;" /> 前言Flutter中,GetX是一款十分风行的状态治理库。它不仅提供了状态治理的性能,还有路由、依赖注入和许多其余性能。在这篇文章中,我将介绍如何在Flutter中正确应用GetX的标签(Tag)性能。 很多同学在问我 Getx 问题的时候,我发现都对 tag 属性不分明,明天咱们就来讲一讲。 视频https://www.bilibili.com/video/BV1eP411R7ft/ 知识点在 Flutter GetX 中,tag 属性是用于标识控制器(Controller)实例的字符串,具体作用如下: 辨别不同的控制器实例在一个 Flutter GetX 应用程序中,可能会存在多个雷同类型的控制器实例,例如多个页面应用雷同的数据控制器。应用 tag 属性能够为不同的控制器实例调配不同的标识,以便在不同的页面中应用不同的控制器实例。 保留控制器状态应用 tag 属性能够为控制器实例调配惟一的标识,以便在应用程序生命周期中保留控制器的状态。例如,在页面切换时,能够通过 tag 属性保留以后页面的控制器状态,以便在页面从新关上时复原控制器状态。 防止控制器反复创立应用 tag 属性能够防止雷同类型的控制器实例反复创立。例如,在多个页面中应用雷同的数据控制器时,应用雷同的 tag 标识能够确保只创立一个控制器实例,以缩小资源的耗费。 注释<img src="https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/05/e90ff886f51d46e6f971bdda8fd8b2c2.png" style="width:50%;" /> 如果不设置 tag 将应用雷同的控制器控制器 lib/pages/post_detail/controller.dart import 'package:get/get.dart';import 'index.dart';class PostDetailController extends GetxController { PostDetailController(); int num = 0; _initData() { update(["post_detail"]); } void onTap() { num++; update(["post_detail"]); } void onNextPage() { // 以后工夫戳 final int timestamp = DateTime.now().millisecondsSinceEpoch; Get.to(PostDetailPage(), routeName: "/post/$timestamp", arguments: {"timestamp": "$timestamp"}); } @override void onReady() { super.onReady(); _initData(); }}视图 ...

May 12, 2023 · 2 min · jiezi

关于程序员:官宣开发者学习中心重磅首发

敬爱的开发者敌人们,由腾讯专家团以及业界头部IT培训机构倾力打造的开发者一站式学习平台上线啦!一行一行手敲代码,带你晋升理论业务场景利用能力。更有独家结营证书&官网处分等你来拿。学习传送门:https://mc.tencent.com/2ErjVGOP 欢送大家扫描海报下方二维码退出学习群和大咖交换,同时把您想学习的内容倡议反馈给咱们。期待与您漫游技术的陆地

May 12, 2023 · 1 min · jiezi

关于程序员:看完这个再不懂什么是闭包准备卷铺盖走人吧

在本文中,咱们将具体解说 JavaScript 闭包的概念、原理和利用。闭包是 JavaScript 中一个十分重要的概念,了解闭包对于编写高效、可保护的代码至关重要。 什么是闭包?闭包(Closure)是指一个函数能够拜访并操作其内部作用域中的变量。换句话说,闭包使得一个函数能够“记住”它所在的词法环境,即便该函数在其原始词法环境之外执行。在 JavaScript 中,闭包通常由一个函数和一个函数所在的作用域对象组成。当函数被创立时,它会创立一个闭包,并将其与以后的作用域对象绑定在一起。在函数执行期间,闭包会继续存在,即便函数执行结束,它也依然存在。这就容许函数拜访并操作其创立时所在的作用域对象中的变量。 闭包的原理JavaScript 采纳词法作用域(lexical scoping),也就是说,函数的作用域在函数定义时就曾经确定。当一个函数嵌套在另一个函数外部时,外部函数能够拜访内部函数的变量。这种能力就是闭包。 闭包的原理能够归结为以下两点: 函数能够作为参数或返回值传递。函数能够拜访其内部作用域的变量。闭包的利用闭包在 JavaScript 中有很多利用场景,以下是一些常见的例子: 模块化:通过闭包,咱们能够创立公有变量和办法,从而实现模块化。这有助于爱护外部实现细节,防止全局变量净化。function createCounter() { let count = 0; return { increment: function () { count++; }, getCount: function () { return count; }, };}const counter = createCounter();counter.increment();console.log(counter.getCount()); // 输入 1下面的例子中,咱们不必关注count的具体实现逻辑,咱们通过调用办法来获取count的值,内部无奈间接操作count,从而对count起到了爱护作用。 事件处理:闭包能够用于在事件处理程序中保留状态信息。function createButton(text) { const button = document.createElement("button"); button.textContent = text; let clickCount = 0; button.addEventListener("click", function () { clickCount++; console.log(`${text} button clicked ${clickCount} times.`); }); return button;}document.body.appendChild(createButton("Click me!"));函数柯里化(Currying):闭包能够用于实现函数柯里化,将多参数函数转换为一系列单参数函数。function curry(fn) { const arity = fn.length; return function curried(...args) { if (args.length >= arity) { return fn.apply(this, args); } else { return function (...moreArgs) { return curried.apply(this, args.concat(moreArgs)); }; } };}function add(a, b, c) { return a + b + c;}const curriedAdd = curry(add);console.log(curriedAdd(1)(2)(3)); // 输入 6上例中,fn.length能得出一个函数的参数个数。当你传入的参数小于原函数参数个数时,会把参数concat起来并返回curried函数给你让你能够接着调用,直到你的参数大于等于原函数参数个数是,才调用原函数。 ...

May 11, 2023 · 2 min · jiezi

关于程序员:文创商城项目实战

我的项目背景介绍本我的项目咱们将综合使用后面学习过的常识,基于前端 vue 框架来开发一个网上商城,商城的商品次要分为文创产品、助农产品、时代经典图书等,让同学们在学习前端常识的同时,能理解一些比拟有创意想法的产品,感触咱们国家的历史文化以及新时代思维。我的项目性能介绍我的项目为一个繁难的文创商品购物网站,次要包含用户登录登出、顶部菜单、轮播图、商品展现、商品筛选、商品详情查看、退出购物车、购物车查看等性能我的项目框架搭建一.创立我的项目vue create mall二.装置依赖库 npm i axios vue-axios vue-router@3.x element-ui三.在 main.js 中配置import App from './App.vue'import axios from "axios"import VueAxios from 'vue-axios'import VueRouter from 'vue-router'import ElementUI from 'element-ui'import 'element-ui/lib/theme-chalk/index.css';import Login from './components/Login.vue';import Home from './components/Home.vue';import Cultural from "./components/CulturalFolder/Cultural.vue";import Clothe from "./components/ClotheFolder/Clothe.vue";import Fresh from "./components/FreshFolder/Fresh.vue";import Book from "./components/BookFolder/Book.vue";import Cart from "./components/ShoppingCart/Cart.vue"import ProdectDetail from './components/CulturalFolder/ProdectDetail'Vue.config.productionTip = falseVue.use(VueAxios, axios)Vue.use(VueRouter)Vue.use(ElementUI)四、配置跨域转发在根目录下新建 vue.config.jsmodule.exports = defineConfig({ transpileDependencies: true, lintOnSave: false, devServer: { proxy: { '/v1': { target: 'http://140.246.26.182:7070' } } }})初始化 vue-router1.先把页面分成两个,一个主页 Home,一个登录页 Login。创立 Home 和 Login 组件2.在 main.js 中,配置路由表/* 配置路由表 */const routes = [ { path: '/login', name: 'login', component: Login, }, { path: '/', name: 'home', component: Home, children: [ { path: '/cultural', name: 'cultural', component: Cultural }, { path: '/clothe', name: 'clothe', component: Clothe }, { path: '/fresh', name: 'fresh', component: Fresh }, { path: '/book', name: 'book', component: Book }, { path: '/cart', name: 'cart', component: Cart }, { path: 'detail/:id', //商品详情页路由,id示意一个变量(任取) component: ProdectDetail, props: true //把path上的变量作为参数传递到ProductDetail组件中 } ] }]3.在 App 组件中放入 router-view ...

May 11, 2023 · 2 min · jiezi

关于程序员:一次查找分子级Bug的经历过程太酸爽了

"Debugging is like trying to find a needle in a haystack, except the needle is also made of hay." Debug调试就像是在大片的干草堆中找针一样,只不过针也是由干草制成的。 在软件开发的世界里,偶然会呈现一些十分荫蔽的 Bug,这时候工程师们像探险家一样,须要深刻代码的丛林,寻找暗藏在其中的“幽灵宝藏”。前段时间,我和我的团队也踏上了这样一段刺激、乏味的探险之旅。 最近忙碌的工作告一段落,我总算轻松下来了,想趁这个机会,跟大家分享咱们的这次“旅途”。 01 引子我是 ShowMeBug 的 CEO 李亚飞,是一个古老的 Ruby 工程师。因为2019年招聘工程师的噩梦经验,我立志打造一个实在模仿工作场景的 IDE,用来终结八股文、算法横行的技术招聘时代。 这个云上的 IDE 引擎,我称之为轻协同 IDE 引擎——因为它不是为了繁冗重度的工作场景筹备的,而是适应于大部分人的习惯、能疾速上手相熟、加载速度快、能协同(面试用)、低提早感,让用户感触十分敌对。 多环境启动与切换 为了达成秒级启动环境的性能要求,咱们设计了一套精美的分布式文件系统架构,其外围是一个能够霎时复制大量小文件的写时复制(COW)技术。IO吞吐能达到几万人同时在线,性能相对是它的一大劣势。 咱们对此信念满满,然而没想到,很快就翻车了。 02 探险启程2023年1月,南方曾经白雪皑皑,而深圳却仍难以感触到冬天的寒意。 我和我的团队在几次关上文件树的某个文件时,会显得有点慢——过后没有人在意,依照惯例思路,“网速”背了这个锅。预先咱们复盘才发现,这个看似微不足道的小问题,其实正是咱们开始这次探险之旅的终点。 1月底,北方的寒意缓缓侵入。这时候咱们的轻协同 IDE 引擎曾经开始陆续反对了 Vue2、Vue3、React、Django、Rails 等框架环境,一开始体现都很棒,加载和启动速度都很快。然而,跑了一段时间,咱们开始觉察,线上环境就呈现个别环境( Rails 环境)启动要 20-30s 能力实现。 尽管其余环境依然放弃了极快的加载和启动速度,但敏锐的第六感通知我,不行,这肯定有什么猫腻,如果不立即行动,势必会对用户体验带来很不好的影响。于是,我开始安顿团队排查眼前这个不起眼的问题,咱们的探险之旅正式开始。 03 初露心愿湿冷的夏季,夜已深,我和咱们的团队仍旧坐在电脑前苦苦摸索,瑟瑟发抖。 探险之旅的第一站,就是老大难的问题:定位Bug。目前只有某一个环境启动很慢,其余的环境都体现不错。大家想了很多方法都没有想明确为什么,甚至狐疑这个环境的模板是不是有问题——但把代码放在本地启动,最多就2秒。 哎,太诡异了。咱们在这里卡了至多一周工夫,一直追踪代码,剖析日志文件,尝试各种计划,都没有弄清楚一个失常的程序启动为什么会慢。咱们一度陷入了疲乏和焦虑的情绪中。 “Debug 是种信奉,只有深信本人能找到 Bug,才有可能找到 Bug。” 软件开发界始终有一个低级Bug定律:所有诡异的问题都来自一个低级起因。在这“山重水复疑无路”之际,咱们决定从新扫视咱们的探险门路:为什么只有 Rails 更慢,其余并不慢?会不会只是一个十分渺小的起因而导致? 这时候,恰好有一个架构师敌人来访,向咱们倡议,能够用 perf 火焰图剖析看看Rails的启动过程。 perf火焰图实例 当咱们用 perf来剖析时,诧异地发现:原来 Rails 的启动要加载更多的文件!紧接着,咱们又从新用了一个文件读写监控的工具:fatrace,通过它,咱们看到 Rails 每次启动须要读写至多 5000 个文件,但其余框架并不需要。 ...

May 11, 2023 · 1 min · jiezi

关于程序员:思否-CTO-祁宁社区问答是激荡高级智慧的头脑风暴

VOL.05 Answer在祁宁家里,有一套残缺的赛车模拟器,他甚至还请人到国外代购了最新的 VR 设施。作为沉迷式赛车游戏发烧友,除了享受速度与激情带来的愉悦感,祁宁在玩的过程中更多的是思考如何将技术能力进行产品化的问题。 Answer.dev 就是将技术问答社区能力提炼而成的产品,也是祁宁深度思考的一个成绩。 开源问答社区软件 Answer.dev 于 2022 年 10 月 24 日在 GitHub 上线,公布后就在 GitHub Tending 上继续霸榜了一周左右,不到一个月就拿到了逾 4,000 个 Star,四个月内播种的 Star 数更是超过 6,300 个。 须要补充阐明的是,Star 数是 GitHub 上最间接的热度指标,意味着该开源我的项目对开发者的吸引和关注水平,体现了该项目标风行水平。 Answer.dev 在 GitHub 上的受欢迎水平,远远超出了其创始人祁宁的预期。在国内开发者的印象中,祁宁更为人熟知的身份是 SegmentFault 思否(下称「思否」)联结创始人兼 CTO——同样为人所相熟的还有他的网名昵称 joyqi 。开办于 2012 年的思否,是目前中文畛域最大的编程问答交换社区平台,累计注册开发者用户近 700 万。在思否 10 余年的倒退中,祁宁积攒了大量问答社区畛域的教训和资源。 近年来,不少 B 端企业用户向祁宁提出需要:是否帮忙搭建企业本人的问答社区,或者帮助建设相似思否这样的企业社区。过后,囿于商业经营条件等限度,祁宁和思否团队很难去响应这样的需要,只能提议对方在思否建一个专区或子站。但实际上,企业的需要此时并没有被齐全满足,因为客户心愿能自定义社区内容,自主掌控数据,而不是「寄居」于一个公共社区之下。 于是,祁宁和思否团队始终都在思考:能不能将思否在问答社区畛域多年积淀下来的能力齐全凋谢进去呢?最好的状态就是做成一个开源我的项目让所有人都能应用,也就是将思否的技术问答社区状态转化为一个软件产品。 直到 2022 年 5 月,研发治理平台 ONES 实现对思否的收买后,祁宁及思否团队得以将输入问答社区能力的「夙愿」变成事实。「ONES 是一家对市场和商业化都有深刻理解的软件公司,对于将问答社区能力产品化,ONES 给予了思否很多灵感。」祁宁说,开发 Answer.dev 相当于颠覆了思否的商业模式——之前思否是一个社区公司,次要通过广告服务来盈利;现在,思否变成了一家开源商业公司和软件公司,提供的是软件产品,「咱们开始用社区来驱动开发,跟咱们此前的驱动形式齐全不一样。」 然而,祁宁又说:「思否和 Answer.dev 两者最终要做的事件其实没区别,归根到底还是做一个社区。」在他看来,开发 Answer.dev 的指标是把社区当作一个产品来应用,具体就是,一个商业软件公司把本人的代码收费让其他人应用。建设一个真正以开发者为核心的开源社区,用社区的力量去推动我的项目开发,这是思否和 Answer.dev 独特的指标和使命。 ...

May 11, 2023 · 1 min · jiezi

关于程序员:金三银四好像消失了IT行业何时复苏

疫情时候不敢到职,认为熬过来疫情了,行情会好一些,可是疫情完结了,反而行情更差了,这是要哪样 我心中不禁一万个 草泥 路过 我心中不惊有了很多纳闷和感叹 接着上一篇 一个28岁程序员入行自述和感触 自我10连问我的情绪自去年下半年以来,互联网行业一片寒冬传言,泛滥企业倒闭,裁员。本认为随着疫情、秋季和金融楼市的回暖,所有都会变好。然而,站在这个应该是光明的时刻,举世瞩目的现象却显得毫无怄气。令人悲观的是,咱们盼望已久的春天仿佛仍未到来。 我的工作生涯我曾经从业近十年,然而最近两年始终在小公司中工作, 我的技术和经验并不杰出。随着年龄的增长,是否我的技能也在疾速进步呢?咱们该如何后退呢 ,转产品,产品达到极限,转治理,可是不会人情事故,咱们该如何继续前进呢?目前还没有人给出答案。 第一家公司我记得那是很早的时候了,那个时候简历投递进来,就马上会收到很多回复,不像当初 ,失联招聘, 前程堪忧,boss直坑, 你辛苦的写完简历,满怀期待投递了各大招聘平台,可等来的 却是已读未回,等的心也凉透了。 好怀念之前的高光时刻 神仙打架日子 后面我面试 简直一周都安顿满了,都面试不过去,我记得那会最多时候一天能够跑三家面试哈哈哈,也是很拼命的,有面试机会谁不想多试试呢 我第一家进入的是一个外包公司,叫xxx东软团体, 那个时候也不不懂,什么是外包给公司,只看工资给的所有offer中最高的,而后就去了哈哈哈哈。 入职第一天,我背着我本人的电脑满怀着冲动就去了,而后被眼前一幕吸引了,办公的人真多啊,办公室都是拿通明玻璃隔开那种,人挺多,我一想公司还挺大的,随后我就被带到也是一个玻璃格子办公室,外面就三个人,加我一个4个。 我胆怯极了,这个时候一个略微有一些秃顶的 大叔过去了 哈哈哈(心田台词,早就晓得这一行干就了,会秃头这不会就是下一个我把) 他把我安顿在了凑近玻璃门的也就是大门地位,这是晓得我筹备随时跑路节奏吗。而后就去忙他本人的了。整个上午我就像是一个被忘记在角落里的人一样。基本没人管我,就这样第一天完结了,我难堪了做了一整天。 这工作和我设想的有点不太一样啊! 前面第三天还是如此,办公室里仍旧是那么几个人,直到第四天,大叔来了,问我直到多线程吗,让我用多线程写一个抽奖的流动我的项目。(心田我想终于有事件干了,可是也快乐不起来谁晓得怎么写) 不过好在,他也没有说什么时候交,只是说写完了给他看一下,通过我几天的,复制粘贴工程师 一顿谷歌,百度,终于是勉强写进去了。。。。。 前面,就又陆陆续续来了几个小伙伴,才开始新我的项目和散会,第一份工作大抵就是这样开始了我的职业生涯。怎么说呢和我设想的有所不一样,但又有一些悲观。 前面干了1年多,我就到职了起因是太累了没工夫劳动,一个我的项目接着一个我的项目的 第二家公司在来到第一家公司时候,我劳动了好长一段时间,调整了我本人的状态 也理解了什么是外包公司,什么是工作外派,也是我这一次就在投递简历,和面试时候刻意去防止进那种外包,和外派公司。 面试什么也还算顺利,不到半个月就拿到了offer。 然而工资总体来说比上一家是要少一点,然而我也承受了,是一家做本地生鲜电商公司,,原本生存科技有公司, 我感觉公司气氛,和公司都挺不错的,就入职了。 入职了咱们那个项目经理还算很激情的,让共事帮我开git账号,开了邮箱,我本人拉取了公司我的项目,而后共事帮我运行调试环境第一天,我的项目什么都跑了起来, 你晓得的,每次去一家新公司,开始新我的项目难的是我的项目简单配置文件,和各种mave包依赖,接口,环境抵触,所以跑起来我的项目本人一个人摸索还是须要一些工夫的。 在这家公司后期也还不错,公司保护本人我的项目,工作工夫也比拟自在和灵便, 大体流程是,每次有新的pm时候 产品经理就会组织各个部门散会 h5端-挪动端-接口端开会讨论需要细节和实现,如果有问题头就会pass掉 而后产品经理就会把需要指派到每一个头,头把需要指派给组员,而后组员依照redmine 上截止工夫开发需要, 开发过程中本人去找对应接口负责方,其余业务负责方 去对接数据,没有问题了就能够提交给指定测试组测试了。 而后测试组头会把,测试调配给他们组员,进行测试。 有问题了就会在指派回来给对应负责各个开发同学去解决bug,直到测试实现。测试会让你提交堡垒环境 而后期待告诉公布上线, 咱们个别是早晨8点时候公布,公布时候,个别开发人员都要留守,直到公布上线没有问题了,才能够回家。如果弄得很晚的话,第二天能够晚点下班。 这一点是我感觉比拟好的中央,工作工夫弹性比拟自在。 记得有一次生产事变。 我影响很粗浅,货色上线了,而后产品经理说这个和他设计的预期的不符合要求,须要从新写,那一晚咱们整组弄得很晚,就是为了等我弄好去吃饭。 你晓得人在心急如焚状况下,是写不好代码的最初还是共事帮我一起实现了产品经理变态需要批改。。。。。。(也就在那时候我才晓得产品经理和开发为什么不和了) 因为五行相克 因为常常这样发版,而后一起吃饭公司报销。咱们组员和领导关系还算不错气氛还挺好。在这一家公司我待了挺久的。 到职起因前期因为说公司我的项目策略降级。空降了一位携程cto,还带来了他的手下人,咱们组头,职权被减弱了,我不在由原来头治理了。再加上前面一些其余起因。老同事一个一个走了。 最初这个组只剩下我,和一个进来不久新共事。 不久我也到职了。 第三家公司这次到职后,我调整劳动了差不多有一年,两头来到上海去了江苏,因为家里,女朋友等各种事件。前面我才又从新去了上海,开始找工作。 找工作期间投奔的共事,合同事住一起。 这次面试我显著感觉,有一些慌乱了,可能是太久没下班起因,有一些底气不足。好在也是找到了工作尽管不太现实。 这个过程太波折了,前面公司究竟没有扛过疫情,能够说在疫情边缘开张了,钱抵偿也没拿到,。。。这里就不赘述了。 IT行业如何破局 大家有什么想法和故事吗。能够关注 程序员三时公众号 进行技术交换探讨 ...

May 11, 2023 · 1 min · jiezi

关于程序员:R-中的探索性相关分析

动动发财的小手,点个赞吧! 本文 相干剖析是摸索两个或多个变量之间关系的最根本和最根底的办法之一。您可能曾经在某个时候应用 R 执行过相干剖析,它可能看起来像这样: cor_results <- cor.test(my_data$x, my_data$y, method = "pearson")cor_results输入看起来像: 这是为您预先选择的两个变量运行简略关联的根本 R 办法。 然而,如果您真的不晓得本人在寻找什么怎么办?如果您只是处于进行一些探索性数据分析的阶段,您可能不晓得您对哪些变量感兴趣,或者您可能想在哪里寻找关联。在这种状况下可能有用的是可能抉择一个感兴趣的变量,而后查看具备多个甚至数百个变量的数据集,以便为进一步剖析找出一个好的终点。感激 kassambara 开发的 rstatix 包,有一种疾速且绝对轻松的办法能够做到这一点。 获取数据例如,我将应用来自世界银行的世界倒退指标 (WDI) 数据集的数据——一个对于寰球倒退指标的凋谢拜访数据存储库。咱们能够从下面链接的网站拜访 WDI,但也有一个 R 包 install.packages("WDI")library(WDI)能够应用 WDI() 函数从 WDI 导入特定的数据系列,然而因为咱们对涵盖大量变量之间可能关系的探索性剖析感兴趣,所以我将批量下载整个数据库…… bulk <- WDIbulk(timeout = 600)假如咱们有趣味尝试找出哪些其余国家特色可能与贸易更多的国家相干,绝对于其经济规模,咱们也对 2020 年的数据感兴趣。 一旦咱们确定了正确的变量(这里我将应用贸易占 GDP 的百分比),咱们须要略微清理一下数据。咱们将创立一个咱们能够过滤的年度系列列表,而后利用另一个过滤步骤以确保咱们只应用具备大量察看值的变量用于剖析(任意,n> 100在上面的示例中)。 # Create a filtered set with only annual variablesfiltered <- bulk$Series %>% filter(Periodicity == "Annual")# Create a list of variables to correlate against trade levelsbulk$Data %>% filter(Indicator.Code %in% c(filtered$Series.Code)) %>% filter(year == 2020) %>% group_by(Indicator.Code) %>% filter(!is.na(value)) %>% count() %>% arrange(n) %>% filter(n>100) -> vars_list剖析所以当初咱们有一个变量列表要运行——大概 790 个——看看哪些可能与咱们的贸易程度变量相干。这将永远须要手动运行,或者从 base R 循环运行 cor.test() 。这是 rstatix 中的 cor_test() 函数闪耀的中央——它运行得十分快,相干剖析的输入被转储到一个小标题中格局(使执行额定的操作和剖析变得容易),并且函数是管道敌对的,这意味着咱们能够将过滤、变异和执行步骤组合到一个管道框架中,咱们还能够将变量输出分组以进行分组输入来自 rstatix(咱们稍后会看一些例子)。 ...

May 10, 2023 · 2 min · jiezi

关于程序员:JS中的面向切片编程AOP

JS中面向切面编程(AOP)利用什么是面向切面编程面向切面编程(Aspect-Oriented Programming,AOP)是一种编程范式,是在面向对象编程(OOP)的根底上的一种补充。AOP提供了一种灵便的、易于保护和跨多个对象和组件的切面(Aspect)的形式,能够在不批改原有代码的状况下实现代码的特定性能。 上面是一个简略的JS示例代码,实现了AOP的日志记录性能: //定义一个用于包装函数的高阶函数function withLogging(fn) { return function() { console.log(`entering ${fn.name}`); const result = fn.apply(this, arguments); console.log(`exiting ${fn.name}`); return result; }}//定义一个须要包装的函数function add(x, y) { return x + y;}//将函数用withLogging包装const loggedAdd = withLogging(add);//调用通过包装的函数loggedAdd(2, 3);在下面的代码中,withLogging是一个高阶函数(Higher Order Function),它返回的函数能够包装一个函数,并可能记录该函数的输出和输入。add是一个须要包装的函数,它的性能是相加两个数。用withLogging包装add失去的loggedAdd函数,能够在add函数执行前输入"entering add",在add函数执行后输入"exiting add",并返回add函数的执行后果。 扩大优化在 JavaScript 中实现函数调用前和调用后执行某个办法的形式,能够应用 AOP(面向切面编程)的思维。具体实现形式是,应用一个函数对指标函数进行包装,而后在原始函数调用前或调用后进行相干操作。 以下是实现 before 和 after 函数并绑定到函数原型上的示例代码: Function.prototype.before = function(beforeFn) { const self = this; // 保留原函数的援用 return function() { // 返回蕴含原函数和前置函数的新函数 beforeFn.apply(this, arguments); return self.apply(this, arguments); };};Function.prototype.after = function(afterFn) { const self = this; // 保留原函数的援用 return function() { // 返回蕴含原函数和后置函数的新函数 const result = self.apply(this, arguments); afterFn.apply(this, arguments); return result; };};在上述代码中,咱们先给 Function 原型增加了两个办法:before 和 after,这两个办法都承受一个函数作为参数。 ...

May 10, 2023 · 2 min · jiezi

关于程序员:图片文字识别如何实现高效准确的文字识别应用

随着科技的一直倒退,图片文字辨认技术曾经成为了一种十分重要的利用技术,能够广泛应用于多个畛域,如文档治理、信息检索、人工智能等。本文将从图片文字辨认的基本原理、利用场景以及将来发展趋势三个方面进行论述。 一、 图片文字辨认的基本原理 图片文字辨认是指将图片中的文字内容转换为文本文件的过程。具体来说,就是通过图像处理、机器学习、自然语言解决等技术,将图片中的像素点宰割进去,再依据不同的字符集和文字分类模型进行辨认,最终将图片中的文字内容转换为文本文件。 二、 图片文字辨认的利用场景 图片文字辨认技术的利用场景十分宽泛,次要包含以下几个方面: 1、图书治理:图书馆、图书馆书目治理、文献治理等畛域,能够通过图片文字辨认技术疾速、精确地检索、治理大量的图书、文献等资源。 2、信息检索:在信息检索畛域,图片文字辨认技术能够用于实现高效、精确的搜寻,进步信息检索的效率。 3、网络安全:在网络安全畛域,图片文字辨认技术能够用于实现文档内容的疾速辨认、避免网络攻击。 4、自然语言解决:在自然语言解决畛域,图片文字辨认技术能够用于实现文本分类、情感剖析等利用。 三、 图片文字辨认的将来发展趋势 随着科技的一直倒退,图片文字辨认技术将会有以下几个方面的发展趋势: 1、深度学习算法的利用:深度学习算法能够通过大规模的训练数据,进步图片文字辨认的准确率和速度。 2、多模态辨认技术的利用:随着语音辨认、图像识别等技术的倒退,图片文字辨认技术将会越来越多地利用于多个畛域,如语音辨认、图像识别、手写辨认等。 3、生物特色辨认技术的利用:生物特色辨认技术能够通过生物特色的辨认,实现个性化的图片文字辨认服务,将来将会成为图片文字辨认技术的重要倒退方向。 4、计算机视觉技术的利用:计算机视觉技术能够通过深度学习、神经网络等技术,实现图片文字的疾速辨认和解决。 总之,图片文字辨认技术是一种十分重要的利用技术,能够广泛应用于多个畛域,将来将会有更多的技术创新和利用场景的拓展。 本文由mdnice多平台公布

May 10, 2023 · 1 min · jiezi

关于程序员:B树

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档] 数据结构试验的实验报告--B树 环境及工具环境:C 工具:AnyivewCL B 定义一棵 m 阶 B 树(Balance Tree of order m), 或为空树,或满足下列的个性的 m 叉树:(本次试验采纳链式存储构造) (1)树中每个结点最多含有 m 棵子树。 (2)若根结点是非终端结点,则至多有 2 棵子树 (3)除根结点之外的所有非终端结点至多有「m/2 棵子树。 (4)每个非终端结点中蕴含信息:(n,A,K1,A1,K2,A2,…,Kn,An)。其中: ①K(1≤i≤n)为关键字,且关键字按升序推入指针。 ②A(0≤≤n)指向子树的根结点,A(i-1)指向子树中所有结点的关键字均小于 Ki,且大于 K(i-1)。 ③ 关键字的个数 n 必须满足「m/2-1≤n≤m-1。 (5)所有叶子结点都呈现在同一层,叶子结点不蕴含任何信息(能够看作是内部结点或查找失败的结点,实际上这些结点不存在,指向这些结点的指针为空。实际上,B 树的结点还应蕴含 n 个指向每个关键字相应记录的指针。这与利用相干,从略。 存储构造定义和宏定义 define M 4 //B树的阶,本次试验设置为4 # define MAX M – 1 //每个节点存储的最多关键字的数目 # define MIN M/2 //每个节点存储的起码关键字的数目 # define N 14 //选取14个关键字的树作为例子 # define ERROR 0 # define SUCCESS 1 # define TRUE 1 # define UNSUCCESS 0 # define OVERFLOW -1 # define FALSE -1 typedef int Status; typedef int KeyType;//关键字类型为整形 typedef struct BTNode { int keynum; //以后节点的关键字数目 KeyType key[M + 1]; //关键字数组,key[0]未用 struct BTNode parent; //双亲结点指针 struct BTNode ptr[M + 1]; //孩子节点指针数组 //Record recptr[M + 1]; //记录指针向量,0号单元未用 } BTNode, BTree; //B树的节点及指针类型 //B树查找的后果类型 typedef struct { int tag; //1:查找胜利,0:查找失败 BTree pt; //指向找到的后果类型 int index; //1 <= index <= M 在节点中的关键字位序 } Result; ...

May 9, 2023 · 1 min · jiezi

关于程序员:树莓派之人脸识别与智能家居

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档] 树莓派加上摄像头之后就能够拍照、录视频等各种性能了,这样做一个树莓派相机曾经是非常简单的事件了。咱们在这里做一个简略的人脸区域检测的性能试验,而后咱们在下一个试验让树莓派来管制风扇转动。发现有人脸了,就开始转动风扇。这也是生存中的一个场景,当然退出试验3的温度检测依据温度和人脸一起决定是否吹风扇会更加精确化。 raspberry4树莓派之人脸识别与智能家居 树莓派加上摄像头之后就能够拍照、录视频等各种性能了,这样做一个树莓派相机曾经是非常简单的事件了。咱们在这里做一个简略的人脸区域检测的性能试验,而后咱们在下一个试验让树莓派来管制风扇转动。发现有人脸了,就开始转动风扇。这也是生存中的一个场景,当然退出试验 3 的温度检测依据温度和人脸一起决定是否吹风扇会更加精确化。 试验资料筹备:原装树莓派 800 万像素 CSI 摄像头。 软件:rasbian 零碎、opencv 装置必要的依赖库: 装置 OpenCV sudo apt-get update sudo apt-get upgrade sudo apt-get install libopencv-dev sudo apt-get install python-opencv 装置 PiCamera 库: sudo apt-get install python-pip sudo apt-get install python-dev sudo pip install picamera 测试人脸识别代码import ioimport picameraimport cv2import numpy Create a memory stream so photos doesn't need to be saved in a filestream = io.BytesIO() Get the picture (low resolution, so it should be quite fast)Here you can also specify other parameters (e.g.:rotate the image)with picamera.PiCamera() as camera: ...

May 9, 2023 · 1 min · jiezi

关于程序员:阿里云的ACE认证考试费用是多少考什么内容

想要在工作中被赏识,取得更多的支出,除了过硬的技术之外,还须要有能够背书的证书,阿里云认证是当初市场上最受认可的证书之一,其中ACE是最高等级的,上面小编简略介绍一下,有须要的能够加在认证大使上具体理解。 阿里云ACE认证概述 阿里云云计算架构师ACE认证(Alibaba Cloud Certified Expert - Cloud Computing)是针对云架构师,解决方案架构师,云运维专家等技术人员的阿里云高级别技术认证。通过该技术认证能够无效证实该认证人员具备丰盛的需要剖析能力,云架构设计能力,云架构部署施行能力,云架构诊断和调优能力,洞察业务痛点,制订无效的技术改良计划,最大限度地进步零碎架构可扩展性,安全性,可靠性,耐用性和老本效益等个性。 阿里云ACE认证内容 1、口试 私有云-平安-基础设施、业务&数据 私有云-存储 私有云-计算 私有云-架构 私有云-数据库 私有云-网络、组网私有云-原生-容器、微服务&中间件 混合云 2、试验 考试地点:浙江省杭州市西湖区阿里巴巴云谷园区 3、面试 阿里云ACE认证费用 口试2400 试验3600 面试3600

May 9, 2023 · 1 min · jiezi

关于程序员:Copilot-Hub-基于私有数据的人格化AI-平台-创建自定义ChatGPT知识库AI的简明操作指南

Copilot Hub 是一个帮忙你基于公有数据创立智能知识库 & 人格化 AI 的平台。你能够基于文档、网站、Notion database 或其余数据源在几分钟内创立一个自定义的 ChatGPT。https://app.copilothub.ai/copilots须要先登录一下Copilot Hub输出邮箱就能登录胜利了我当初应用本人的文原本创立一个接下来,应用自定义的ChatGPT来聊天最初,这个是按问答和自定义条数免费的整体的性能体验下来,根本和我本人实现的基于向量数据库知识库的ChatGPT性能统一,免费上还是挺贵的所以,你还在等什么,来看看我实现的智能客服零碎整合ChatGPT集体知识库的性能吧。我的网址是:https://gofly.v1kf.com

May 9, 2023 · 1 min · jiezi

关于程序员:JS中常见的函数式编程

JS中常见的函数式编程常见的编程范式编程范式(Programming Paradigm)是指在编程中应用的一种思维、办法、格调以及标准。不同的编程范式对程序员的思维形式、程序的构造和实现形式都有影响。常见的编程范式有: 面向过程编程(Procedural Programming):以过程为核心,顺次实现各个步骤,在程序中应用变量、数组、构造体等数据结构。通常包含程序、分支和循环构造。C语言就是一种面向过程的编程语言。面向对象编程(Object-Oriented Programming):以对象为核心,将数据和办法封装在一个对象中,通过继承、多态等形式解决程序的复用和扩大问题。Java和C++等语言就是一种面向对象的编程语言。函数式编程(Functional Programming):强调应用纯函数和不可变数据,并尽可能减少对状态和可变数据的应用,从而防止副作用。Haskell和Clojure等语言就是一种面向函数的编程语言。逻辑式编程(Logic Programming):通过定义事实和规定,利用推理机制主动导出论断。Prolog就是一种逻辑式编程语言。申明式编程(Declarative Programming):通过申明程序的逻辑和目标,而不是明确指定每个步骤和如何实现工作来解决问题。HTML和CSS就是一种申明式语言。这些编程范式都有本人的长处和毛病,在实践中须要依据具体的利用场景和需要来抉择。同时,不同编程范式的组合和穿插也能够产生新的编程形式,如面向对象和函数式的联合产生了面向对象的函数式编程。 什么是函数式编程函数式编程(Functional Programming)是一种编程范式,它强调应用纯函数(Pure Function)和不可变数据(Immutable Data),并尽可能减少对状态和可变数据的应用,从而防止副作用(Side Effect)。在函数式编程中,函数被当作第一等公民,即函数能够作为参数传递给其余函数,也能够作为返回值返回给其余函数。函数式编程通常基于演算(Lambda Calculus)实践,其核心思想是无状态和数据不可变。函数式编程次要利用于数学、迷信和工程计算等畛域。 函数式编程范式的特点如下: 函数是一等公民:函数能够作为参数传递给其余函数,也能够作为返回值返回给其余函数。这能够不便地应用高阶函数,实现代码复用和简化代码。函数式编程的目标是让程序更加简洁,可读性更高,易于测试和保护,最终进步代码的品质和效率。在函数式编程中,函数被视为独立的工具,能够像数学中的函数一样进行组合,以实现简单的计算工作。无状态和数据不可变:在函数式编程中,咱们不能扭转已有的数据,只能通过函数的计算生成新的数据。这是为了防止数据状态的不确定性,从而更容易实现并发执行。这种形式使代码不依赖于内部状态,缩小了出错的机会,进步了代码的可读性和可维护性。可组合性和可复用性:函数式编程中的函数通常只依赖于它的输出,与外部环境无关,因而函数之间能够互相组合和复用,从而实现更加拆分的代码。惰性计算和有限序列:函数式编程通常应用惰性计算和有限序列等技术,从而实现更为高效和灵便的算法。函数式编程罕用的技术和办法包含高阶函数、纯函数、柯里化、函数组合、惰性求值等。而在JavaScript中,也提供了函数式编程的反对,例如ES6中的箭头函数、高阶函数、Map/Reduce等办法,以及函数式库Lodash和Underscore.js,还有React和Redux等也采纳了函数式编程的思维。罕用的函数式编程语言有Lisp、Haskell、Erlang、Clojure等。 函数式编程是一种十分弱小的编程模式,它提供了一种对数据进行纯函数操作的范式,让程序员可能更加容易地了解和维护程序。它实用于那些须要解决大量数据的场景,同时也对于简化可并发零碎的设计有着很大的帮忙。 函数式编程罕用的应用场景高阶函数高阶函数指的是能够接管函数作为参数或者返回一个新函数的函数。在JS中,罕用的高阶函数有map、reduce、filter等,这些函数能够不便地解决数组和对象等数据类型。 上面是一个应用JS实现高阶函数的示例代码: // 定义一个高阶函数,接管一个函数作为参数,并调用它function higherOrderFunc(func) { console.log("调用高阶函数"); func();}// 定义一个函数作为参数function someFunc() { console.log("调用了函数作为参数");}// 调用高阶函数,并传入函数作为参数higherOrderFunc(someFunc);在这个例子中,咱们定义了一个高阶函数 higherOrderFunc,它接管一个函数作为参数,并在外部调用它。咱们还定义了一个函数 someFunc,并将其作为参数传递给 higherOrderFunc。当 higherOrderFunc 被调用时,它首先打印一条音讯,而后调用传入的函数。 除了接管一个函数作为参数外,高阶函数还能够返回一个函数。上面是一个示例,它创立并返回一个新函数: // 定义一个返回函数的高阶函数function createNewFunction() { console.log("创立新的函数"); // 返回一个新函数 return function() { console.log("这是一个新的函数"); };}// 调用createNewFunction()函数,它返回一个函数const newFunc = createNewFunction();// 调用返回的函数newFunc();在这个示例中,咱们定义了一个高阶函数 createNewFunction。它打印一条音讯,而后返回一个新函数。咱们还将返回的函数存储在 newFunc 中,并在接下来的代码中调用它。 这样就实现了利用JS实现函数式编程中的高阶函数。 纯函数纯函数指的是对于雷同的输出,总是返回雷同的输入,而且没有任何副作用的函数。在JS中,咱们通常会应用纯函数来确保程序的可靠性和可维护性。 上面是一个非纯函数和纯函数的示例代码比照: // 非纯函数function nonPureAdd(arr, num) { arr.push(num); // 批改了函数内部的数据 return arr;}const numbers = [1, 2, 3];nonPureAdd(numbers, 4);console.log(numbers); // [1, 2, 3, 4]// 纯函数function pureAdd(arr, num) { const newArray = [...arr]; // 创立了新的数组正本,不扭转原有数据 newArray.push(num); return newArray;}const numbers2 = [1, 2, 3];pureAdd(numbers2, 4);console.log(numbers2); // [1, 2, 3]在这个例子中,非纯函数 nonPureAdd 承受一个数组和一个数字,而后将数字增加到该数组中并返回批改后的数组。留神,在这个过程中,咱们批改了原始数组,这意味着函数是非纯的。另一方面,纯函数 pureAdd 承受同样的参数,然而它不会扭转原始数组,并且会返回一个新的数组。因为它不依赖于任何内部状态并且不会扭转任何内部状态,所以它是纯函数。 ...

May 9, 2023 · 3 min · jiezi

关于程序员:JavaScript作用域的定义原理及示例

为感激大家的反对,特发福利红包(支F宝口令红包),点击返回支付:GiteeJavaScript中的作用域指的是变量和函数的可拜访范畴。在JavaScript中,作用域有两种类型:词法作用域和动静作用域。 词法作用域定义:词法作用域是指在代码编写的时候就确定了变量和函数的作用域。在JavaScript中,每个函数都会造成一个新的作用域,称为函数作用域。在函数作用域中申明的变量和函数只能在该作用域内拜访。 原理:词法作用域的原理是在函数定义的时候就确定了函数内的变量和函数的作用域。JavaScript在查找变量时,会先在以后函数的作用域中查找,如果找不到,就会在下层作用域中持续查找,直到找到为止。 代码示例: var a = 10;function foo() { var b = 20; console.log(a); // 输入10 console.log(b); // 输入20}foo();在下面的示例中,变量a的作用域是全局作用域,变量b的作用域是函数作用域。 动静作用域定义:动静作用域是指在函数调用的时候才确定变量和函数的作用域。在JavaScript中,没有动静作用域的概念,然而能够通过函数作用域和闭包来实现,也能够通过应用eval函数和with语句来实现相似于动静作用域的成果。 原理:动静作用域的原理是在函数调用时,会将以后作用域压入一个作用域栈中,而后在函数外部查找变量时,会先从栈顶查找,如果找不到,就会持续向下查找,直到找到为止。 代码示例: function foo() { console.log(bar);}function baz() { var bar = "hello"; foo();}baz(); // 输入 "hello"在这个示例中,函数 foo() 援用了变量 bar,然而它没有在 foo() 中定义。相同,变量 bar 是在调用 foo() 的函数 baz() 中定义的。在词法作用域中, foo() 应该在本人的作用域中查找变量 bar,然而在动静作用域中,它会在调用它的函数 baz() 的作用域中查找变量 bar,所以它能够拜访到 baz() 中的变量 bar。 这个示例中,foo() 是在全局作用域中定义的,然而它拜访了 baz() 中的变量 bar,这是因为 foo() 采纳了动静作用域。当 foo() 执行时,它会在调用它的函数 baz() 的作用域中查找变量 bar,而不是在本人的作用域中查找。 ...

May 9, 2023 · 1 min · jiezi

关于程序员:人工智能在医疗领域的应用图像识别API的作用

随着科技的不断进步,图像识别技术曾经成为了许多行业的必备技能。图像识别api(Image Recognition API)是一种用于自动化图像识别工作的API,它能够将用户的输出图像与已有的图像库进行比对,从而辨认出图像中的物体或指标,并返回辨认后果。本文将介绍如何应用图像识别api比对图片并返回辨认后果。 首先,咱们须要理解一下图像识别api的工作原理。图像识别api通常由一个图像识别模型和一个图像处理模型组成。图像识别模型负责将输出图像与已有的图像库进行比对,并辨认出其中的物体或指标。图像处理模型则负责将输出图像进行解决,以便与已有的图像库进行比对。 接下来,咱们将介绍如何应用图像识别api比对图片并返回辨认后果。通常状况下,用户须要将待辨认的图像传递给图像识别api,并期待图像识别模型返回辨认后果。而后,用户能够将返回的辨认结果显示在页面上或保留到数据库中,以供后续应用。 一、图像识别API的实现形式 图像识别模型的实现形式 图像识别模型的实现形式取决于所采纳的图像识别算法。目前,市面上的图像识别算法有很多种,例如卷积神经网络(CNN)、深度学习(DL)、迁徙学习(GA)等。不同的图像识别算法具备不同的优缺点,因而须要依据理论状况抉择适合的图像识别算法。 图像处理模型的实现形式 图像处理模型的实现形式也取决于所采纳的图像处理算法。目前,市面上的图像处理算法也有很多种,例如卷积操作、池化操作、变换操作等。不同的图像处理算法具备不同的优缺点,因而须要依据理论状况抉择适合的图像处理算法。 二、图像识别api的应用流程 1、输出待辨认的图像 用户须要将待辨认的图像传递给图像识别api。 2、期待图像识别模型返回辨认后果 图像识别模型将对输出图像进行比对,并辨认出其中的物体或指标。 3、显示辨认后果 图像识别模型将返回辨认后果,并将其显示在页面上或保留到数据库中。 三、图像识别api的利用场景 1、图像识别在人脸识别畛域的利用 图像识别技术能够用于人脸识别畛域,通过比对输出图像与已有的人脸图像库,能够疾速精确地辨认出人脸。 2、图像识别在安防畛域的利用 图像识别技术能够用于安防畛域,通过比对输出图像与已有的图像库,能够疾速精确地辨认出可疑指标。 3、图像识别在金融畛域的利用 图像识别技术能够用于金融畛域,通过比对输出图像与已有的图像库,能够疾速精确地辨认。 本文由mdnice多平台公布

May 9, 2023 · 1 min · jiezi

关于程序员:支付宝认证的作用是什么考试费用是多少

对于当初的人们来说,支付宝曾经成为了生存中最罕用的软件之一,因而市场须要大量的人才来维持运行,支付宝也推出了对应的认证,上面大使简略介绍一下,有须要的能够在认证大使上具体理解。 支付宝认证分类 支付宝认证费用 不同的等级费用也不同,从600-8000不等 支付宝认证学习 1、通过题库进行学习 2、通过视频进行学习

May 8, 2023 · 1 min · jiezi

关于程序员:在-Python-中将-Tqdm-与-Asyncio-结合使用

动动发财的小手,点个赞吧! 简介困扰在 Python 中应用并发编程来提高效率对于数据科学家来说并不常见。在后盾察看各种子过程或并发线程以放弃我的计算或 IO 绑定工作的程序总是令人满意的。 然而还有一点困扰我的是,当我在后盾并发解决成千盈百个文件或者执行成千盈百个过程时,我总是放心会不会有几个工作偷偷挂了,整个代码永远跑不完。我也很难晓得代码当初在哪里执行。 最蹩脚的是,当我看着一个空白屏幕时,很难说出我的代码须要多长时间能力执行或 ETA 是多少。这对我安顿工作日程的能力十分不利。 因而,我想要一种办法让我晓得代码执行到了哪里。 已有办法比拟传统的做法是工作之间共享一块内存区域,在这块内存区域放一个计数器,当一个工作完结的时候让这个计数器+1,而后用一个线程不停的打印这个计数器的值。 这素来都不是一个好的解决方案:一方面,我须要在你现有的业务逻辑中增加一段用于计数的代码,这违反了“低耦合,高内聚”的准则。另一方面,因为线程平安问题,我必须十分小心锁定机制,这会导致不必要的性能问题。 tqdm 有一天,我发现了 tqdm 库,它应用进度条来可视化我的代码进度。我能够应用进度条来可视化我的 asyncio 工作的实现和预计达到工夫吗? 那么本文我把这个办法分享给大家,让每个程序员都有机会监控本人并发工作的进度。 异步在咱们开始之前,我心愿您理解一些 Python asyncio 的背景常识。我的文章形容了asyncio的一些罕用API的用法,这将有助于咱们更好地了解tqdm的设计: tqdm 概述如官方网站所述,tqdm 是一个显示循环进度条的工具。它应用简略、高度可定制并且占用资源少。 一个典型的用法是将一个可迭代对象传递给 tqdm 构造函数,而后你会失去一个如下所示的进度条: from time import sleepfrom tqdm import tqdmdef main(): for _ in tqdm(range(100)): # do something in the loop sleep(0.1)if __name__ == "__main__": main()或者您能够在读取文件时手动浏览并更新进度条的进度: import osfrom tqdm import tqdmdef main(): filename = "../data/large-dataset" with (tqdm(total=os.path.getsize(filename)) as bar, open(filename, "r", encoding="utf-8") as f): for line in f: bar.update(len(line))if __name__ == "__main__": main() ...

May 8, 2023 · 2 min · jiezi

关于程序员:C实现md5加密算法

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档] 用c++实现md5算法。 开发平台:Ubuntu14.04 md5用c++实现md5算法. 开发平台Ubuntu14.04 运行sudo get-apt install g++ make ./md5_test md5简介音讯摘要算法第五版(英语:Message-Digest Algorithm 5,缩写为MD5),是以后计算机领域用于确保信息传输残缺统一而宽泛应用的散列算法之一(又译哈希算法、摘要算法等),支流编程语言广泛已有MD5的实现。将数据 (如一段文字)运算变为另一固定长度值,是散列算法的根底原理,MD5的前身有MD2、MD3和MD4。MD5由MD4、MD3、MD2改良而来,次要加强算法复杂度和不可逆性。目前,MD5算法因其广泛、稳固、疾速的特点,仍广泛应用于一般 数据的谬误查看畛域。例如在一些BitTorrent下载中,软件将通过计算MD5测验下载到的文件片段的完整性。MD5曾经宽泛应用在为文件传输提供肯定的可靠性方面。例如,服务器事后提供一个MD5校验和,用户下载完文件当前, 用MD5算法计算下载文件的MD5校验和,而后通过查看这两个校验和是否统一,就能判断下载的文件是否出错。MD5是输出不定长度信息,输入固定长度128-bits的算法。通过程序流程,生成四个32位数据,最初联结起来成为一个 128-bits散列。根本形式为,求余、取余、调整长度、与链接变量进行循环运算。得出后果。 md5算法形容假如输出信息(input message)的长度为b(bit),咱们想要产生它的报文摘要,在此处b为任意的非负整数:b也可能为0,也不肯定为8的整数倍,且可能是任意大的长度。设该信息的比特流示意如下: M[0] M[1] M[2] ... M[b-1] 计算此信息的报文摘要须要如下5步: 1.补位信息计算前先要进行位补位,设补位后信息的长度为LEN(bit),则LEN%512 = 448(bit),即数据扩大至 K 512 + 448(bit)。即K 64+56(byte),K为整数。补位操作始终要执行,即便补位前信息的长度对512求余的后果是448。具体补位操作:补一个1,而后补0至满足上述要求。总共起码要补1bit,最多补512bit。 2.尾部加上信息长度将输出信息的原始长度b(bit)示意成一个64-bit的数字,把它增加到上一步的后果前面(在32位的机器上,这64位将用2个字来示意并且低位在前)。当遇到b大于2^64这种极少的状况时,b的高位被截去,仅应用b的低64位。通过下面两步,数据就被填补成长度为512(bit)的倍数。也就是说,此时的数据长度是16个字(32byte)的整数倍。此时的数据表示为: M[0 ... N-1] 其中的N是16的倍数。 3.初始化缓存区用一个四个字的缓冲器(A,B,C,D)来计算报文摘要,A,B,C,D别离是32位的寄存器,初始化应用的是十六进制示意的数字,留神低字节在前: word A: 01 23 45 67 word B: 89 ab cd ef word C: fe dc ba 98 word D: 76 54 32 10

May 8, 2023 · 1 min · jiezi

关于程序员:红外遥控且自动避障的嵌入式智能小车系统

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档] 本次试验应用树莓派作为开发平台,AlphaBot 作为开发载体,Python 作为开发语言,开发一种基于红外线遥控管制的、可主动避障的嵌入式智能小车零碎。 智能零碎中的嵌入式应用 试验目标嵌入式零碎(Embedded System),是一种嵌入机械或电气系统外部、具备专一性能和实时计算性能的计算机系统。嵌入式计算机是面向利用、面向产品的、具备特定用处的计算机。它们没有刻意被制作成计算机的状态,往往以产品自身的模式展示在用户背后。 本次试验应用树莓派作为开发平台,AlphaBot 作为开发载体,Python 作为开发语言,开发一种基于红外线遥控管制的、可主动避障的嵌入式智能小车零碎。 试验介绍2.1 树莓派介绍树莓派构造简略、体积小、耗电低,却领有与一般计算机简直雷同的性能和性能,能够很不便地植入到各种利用零碎中。此类单板计算机是典型的嵌入式零碎的根底。2.2 AlphaBot2 介绍AlphaBot2 智能车开发套件,蕴含一个基板 AlphaBot2-Base 和一个适配板(AlphaBot2-Ar、AlphaBot2-Pi、AlphaBot2-PiZero 三者之一)。其构造稳固,集成度高,不必简单的组装以及繁琐的接线,有助于疾速学习嵌入式零碎开发。 2.3 Python 介绍Python 有着大量反对嵌入式零碎开发的第三方库,例如 RPi.GPIO 等。以 Python 作为开发语言,能够防止间接与底层交互,将次要精力放在高层形象逻辑上。 试验内容源码见附录处。3.1 试验办法本次试验应用 Python 的第三方库 RPi.GPIO 和 rpi_ws281x,实现小车的红外管制、led 管制、蜂鸣器管制、超声波主动避障。 3.2 试验流程3.2.1 智能小车组装本次试验用到的智能小车组件: AlphaBot2-Base(基板)AlphaBot2-Pi(适配板)树莓派蜂鸣器红外遥控器超声波探测器依据 AlphaBot2 智能小车官网教程,组装智能小车。 官网链接见附录,具体门路为:材料 -> AlphaBot2 原理图/组装图 -> AlphaBot2-Pi 组装图。 3.2.2 生产环境配置本次试验的特殊性在于,生产环境无奈间接测试代码,必须将代码移植到树莓派上才能够测试。 生产环境只需代码编辑器即可,以 vscode 和 PyCharm 为佳。

May 8, 2023 · 1 min · jiezi

关于程序员:番剧更新表及番剧详情数据库

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档]该我的项目立足于目前各大平台网站的番剧信息较为扩散,用户须要辗转多个平台能力获取较为残缺的番剧信息的背景下,实现了各大平台网站番剧信息的整合。将各大平台网站的番剧更新信息及番剧详情信息整合制表,展示在咱们的网页上。一、试验题目试验背景:该我的项目立足于目前各大平台网站的番剧信息较为扩散,用户须要辗转多个平台能力获取较为残缺的番剧信息的背景下,实现了各大平台网站番剧信息的整合。将各大平台网站的番剧更新信息及番剧详情信息整合制表,展示在咱们的网页上。二、开发环境零碎:Ubuntu 20.08 数据库:mysql 8.0.23编程语言: 【后端】 python, mysql 【前端】 html+css+js三、数据库设计3.1 需要剖析3.1.1 番剧更新表系统维护在播新番的以后更新集数,播放地址链接,宣传图等内容。番剧更新次要来源于`bilibili`,`ACfun`两个个网站。所有信息均通过爬虫以及python脚本进行动静保护。3.1.2 番剧详情表针对每个番剧,提供该番剧的详情信息,包含制作公司,监督,声优等内容。番剧详情次要来自于萌娘百科。信息通过爬虫python脚本动静保护3.1.1 用户管理系统用户分为超级管理员用户和普通用户。普通用户可查看数据库中的内容,可被授予删除、批改、增加番剧信息等势力。超级管理员领有数据库的齐全控制权,包含查看所有用户材料,创立新用户,用户受权等操作。3.2 数据库概念设计ER图:3.3 数据库构造3.3.1 数据库各表简介bangumi_list表该表是本数据库的外围总表。 该表记录了本数据库的所有番剧目录信息,严格来讲其它表(除了用户表)都是为其提供润饰信息的。bilibili表/acfun表该表提供了番剧更新的详细信息。该表提供番剧在对应网站的最新集数,播放地址,更新日期等数据。company制作公司表该表记录了各大制作公司。该表提供制作公司的名称和代表作品(还能够增加制作公司的其余信息,因为数据起源较为艰难等起因未在本我的项目中增加)。conduct监督表该表记录了监督的详细信息。该表提供监督姓名和代表作品(还能够增加监督集体的其余信息,因为数据起源较为艰难等起因未在本我的项目中增加)。bangumi_cast声优表该表记录各个番剧的声优。该表提供番剧id——声优姓名关系,因为声优个人信息数据获取艰难,本我的项目中并未将声优独自列表,而仅仅放于关系表中。user_list用户表该表记录用户的详细信息。该表提供用户的用户名,明码(采纳`werkzeug.security`中的`generate_password_hash`加密),用户权限等信息。3.3.2 数据库各表间关系`bangumi_list`表是本数据库的外围总表。在`bangumi_list`表中的番剧,可在`bilibili`表和`acfun`表中有一条或多条详细信息。在`bangumi_list`表中的番剧,可在`conduct`监督表中有监督对应。在`bangumi_list`表中的番剧,可在`company`制作公司中有制作公司对应。在`bangumi_list`表中的番剧,可在`bangumi_cast`声优表中有多位声优对应。

May 7, 2023 · 1 min · jiezi

关于程序员:Python的魔法方法装饰器和属性

title: python的特地办法与装璜器author: Sekyorodate: 2023-05-07 11:31:24tags: - pythoncategories:archives:password:abstract: message:这里将介绍python的所谓魔法办法以及装璜器<!--more--> 魔术办法个别在类中以双下划线突围的办法就是魔术办法,或者叫非凡办法。 简略来说,Python的魔术办法是为了利用Python的规范办法以及不必去记住规范操作的名称,实现更对立的接口。 例如上面的代码 import collectionsCard = collections.namedtuple('Card', ['rank', 'suit'])class FrenchDeck: ranks = [str(n) for n in range(2, 11)] + list('JQKA') suits = 'spades diamonds clubs hearts'.split() def __init__(self): self._cards = [Card(rank, suit) for suit in self.suits for rank in self.ranks] def __len__(self): return len(self._cards) def __getitem__(self, item): return self._cards[item]if __name__ == '__main__': print(len(deck)) print(deck[0])__len__这个特地办法使得调用len(beer_card)理论调用__len__ getitem 办法把 [] 操作交给了 self._cards 列表,所以咱们的 deck 类主动反对切 片(slicing)操作。 ...

May 7, 2023 · 2 min · jiezi

关于程序员:基于微服务架构的水果销售系统的设计与实现

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档] 整体上为微服务架构,应用 SpringCloud 技术,每个独立的服务为一个独自的 SpringBoot 工程;数据库应用 MySQL 数据库;分布式缓存应用 Redis,音讯队列应用 Kafka。包含根底业务撑持服务,订单服务,领取服务,商品服务,门店治理服务,促销流动服务 6 个微服务。具体设计见md文件。 第 1 章绪论1.1 论文钻研次要内容互联网的高速倒退下,电子商务也失去了急速成长,各电商平台业务流量逐渐递增,原来的整站架构曾经无奈满足现有的需要,所以须要拆分业务,将业务模块化独立成各个微服务,加上容器,调度平台,监控等造成一个残缺的微服务架构。为此,特设计实现了基于微服务架构的水果销售零碎,其中包含根底业务撑持服务,订单服务,领取服务,商品服务,门店治理服务,促销流动服务 6 个微服务。 1.1.1 微服务架构概述微服务架构是一种架构模式,它提倡将繁多应用程序划分成一组小的服务,服务之间相互协调、互相配合,为用户提供最终价值。每个服务运行在其独立的过程中,服务与服务间采纳轻量级的通信机制相互合作(通常是基于 HTTP 协定的 RESTfulAPI)。每个服务都围绕着具体业务进行构建,并且可能被独立的部署到生产环境、类生产环境等。另外,对具体的服务而言,应依据业务上下文,抉择适合的语言、工具对其进行构建。 就我集体而言微服务架构 ≈ 模块化开发 + 分布式计算。不论微服务架构的定义怎么样,都是在形容一个核心思想:把大零碎拆分成小型零碎,把大事化小,以升高零碎的复杂性,从而大幅升高零碎建设、降级、运维的危险和老本。 1.1.2 水果销售零碎在现在各大电商平台层出不穷的环境下,商品的分类专卖成为了一种趋势。此零碎是为了实现水果的专售并且实现果农和买家的对接,打消第三方代理商的差价,在买家能买到更优惠,更有品质的前提下晋升果农的支出。 1.2 社区沉闷状态自2014年MartinFowler在其博客上发表了“Microservices”一文(http://martinfowler.com/articles/microservices.html)以来,“微服务”这个词在各大技术论坛和社区的迅速沉闷起来,容器,PaaS,CloudNative,gRPC,ServiceMesh,Serverless等新技术新理念你方唱罢我退场,推动着咱们来到了微服务2.0时代。 第 2 章关键技术介绍2.1 关键性技术剖析和介绍2.1.1Springboot/cloud基于 Springboot/cloud 的框架实质上能够认为是一种 RESTFul 框架(不是 RPC 框架),序列化协定次要采纳基于文本的 JSON,通信协定个别基于 HTTP。RESTFul 框架人造反对跨语言,任何语言只有有 HTTP 客户端都能够接入调用,然而客户端个别须要本人解析 payload。目前 Spring 框架也反对 Swagger 契约编程模型,可能基于契约生成各种语言的强类型客户端,极大不便不同语言栈的利用接入,然而因为 RESTFul 框架和 Swagger 标准的弱契约个性,生成的各种语言客户端的互操作性还是有不少坑的。3 月 1 号官网公布了 SpringBoot2.0,并提供了 Maven 地方仓库地址,该版本反对 SpringFramework5.0。 2.1.2 服务注册核心(Eureka)SpringCloud体系,抉择Eureka是最佳搭配,Eureka在Netflix通过大规模生产验证,反对跨数据中心,客户端配合Ribbon能够实现灵便的客户端软负载,Eureka目前在GitHub上有超过4.7k星。 2.1.3 服务网关(Zull)SpringCloud 体系,则抉择 Zuul 是最佳搭配,Zuul 在 Netflix 通过大规模生产验证,反对灵便的动静过滤器脚本机制,异步性能有余(基于 Netty 的异步 Zuul 迟迟未能推出正式版)。Zuul 网关目前在 GitHub 上有超过 3.7k 星。 ...

May 7, 2023 · 1 min · jiezi

关于程序员:电子时钟实现

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档]利用汇编语言实现一个能够在显示器上显示时、分、秒的电子时钟,并能提供设置闹钟工夫、抉择闹钟铃声性能。问题形容利用汇编语言实现一个能够在显示器上显示时、分、秒的电子时钟,并能提供设置闹钟工夫、抉择闹钟铃声性能。根本要求:设计一个根本的具备显示时、分、秒的电子时钟。设置闹钟工夫,到点响铃抉择闹钟铃声,本试验提供了两种铃声供选择程序运行良好、界面清晰。数据结构本程序分为五大模块:界面显示模块、工夫实时显示模块、闹钟响铃模块、闹钟设置模块、闹铃抉择模块。数据结构:字符串:显示界面、获取用户输出的闹钟工夫和铃声抉择。变量:INT_BUFF DB 40 ;输出的工夫字段DB ?DB 40 DUP(?)OUT_BUFF DB '00:00:00','$'IPTIMEH DB ? ;输出的时IPTIMEF DB ? ;输出的分IPTIMEM DB ? ;输出胡秒OPTIMEH DB ? ;以后的时OPTIMEF DB ? ;以后的分OPTIMEM DB ? ;以后胡秒MUSIC_CHOOSE DB 1;抉择的闹铃类型 宏定义:带有两个参数,音符频率和持续时间PLAY MACRO A,B ;播放音乐PUSH SIPUSH BPLEA SI,ALEA BP,DS:BCALL MUS_PLAYERPOP BPPOP SIENDM 寄存器:寄存器子程序传参

May 7, 2023 · 1 min · jiezi

关于程序员:OpenAI-亏损翻倍微软|开放-Bing-Chat-访问|思否周刊

40 S 新闻速递联结反抗英伟达?微软和 AMD 共同开发人工智能处理器库克回应 ChatGPT 的崛起,称人工智能的后劲"十分乏味"马斯克再削减 Twitter 员工福利:未兑现股票承诺,压缩带薪育儿假OpenAI 亏损翻倍微软凋谢 Bing Chat 拜访三星电子禁止员工应用 ChatGPT 等生成式 AI,拟推出外部工具OpenAI 实现 103 亿美元融资,估值达到 270 亿-290 亿美元微软将推公有版 ChatGPT:价格是惯例版 10 倍互联网惊现 AI 鬼城:上万个AI发帖聊天,人类不得入内InsCode 反对 AI 编程Visual Studio Code 1.78 公布Angular 16 公布sudo 和 su 正用 Rust 重写Debian 12 Bookworm 将于 6 月 10 日公布行业资讯联结反抗英伟达?微软和 AMD 共同开发人工智能处理器据报道,知情人士走漏,微软正在与 AMD 单干,独特倒退人工智能处理器。这是微软多管齐下策略的一部分,目标是保障人工智能处理器芯片的供给。知情人士称,两家公司正在单干摸索英伟达 GPU 芯片的代替计划。目前,英伟达在人工智能处理器芯片市场占据主导地位。在单干中,微软为 AMD 提供了资金反对,同时单方正在合作开发代号“雅典娜”、微软自研的人工智能处理器。受此音讯影响,AMD 股价周四上涨超过 6.5%,微软股价上涨约 1%。两家公司均回绝对此音讯置评。英伟达股价上涨 1.9%。 库克回应 ChatGPT 的崛起,称人工智能的后劲"十分乏味"苹果 CEO 库克在 ChatGPT 和其余聊天机器人的激增人气中,围绕人工智能发表了一些评论。库克在 5 月 5 日的苹果季度财报电话会议上说,人工智能的后劲"十分乏味",但他指出,这项技术有"一些须要解决的问题",对于如何应用人工智能,"三思而行十分重要"。库克说,苹果公司曾经将人工智能和机器学习整合到其若干产品和服务中,并指出了跌倒检测、碰撞检测和 Apple Watch 上的心电图利用等性能。他补充说,苹果将持续在"十分周到的根底上"将人工智能编织到其产品中。 ...

May 7, 2023 · 2 min · jiezi

关于程序员:基于Pytorch的花卉识别

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档]本次工作以花卉辨认为题,借用机器学习办法,实现降维可视化、聚类分析、辨认分类等工作。 降维可视化是在以 PCA、tSNE 等办法,将花卉数据进行降维,失去降维后的二维图像,这样便能够将其在立体上展现进去。聚类分析是利用适合的聚类办法,对花卉数据进行聚类,将聚类之后的后果与标签进行对应,探讨不同聚类办法的后果。应用非深度学习和深度学习的办法,对曾经标注实现然而可能含有误标数据的花卉样本进行分类,失去最终的花卉辨认准确率。 一、问题剖析本次工作以花卉辨认为题,借用机器学习办法,实现降维可视化、聚类分析、辨认分类等工作。降维可视化是在以 PCA、tSNE 等办法,将花卉数据进行降维,失去降维后的二维图像,这样便能够将其在立体上展现进去。聚类分析是利用适合的聚类办法,对花卉数据进行聚类,将聚类之后的后果与标签进行对应,探讨不同聚类办法的后果。应用非深度学习和深度学习的办法,对曾经标注实现然而可能含有误标数据的花卉样本进行分类,失去最终的花卉辨认准确率。二、问题求解2.1 数据预处理2.1.1 预处理流程给定的数据集为 jpg 格局的数据,因为读取 jpg 格局的图片比较慢,所以将 jpg 格局存储在 numpy 的多维数组中,将提取出的多维数组存储在磁盘中,并且在下一次读取数据时,先判断是否存在曾经打包好的多维数组文件。如果存在,那么间接读取多维数组的数据;如果不存在,那么读取源文件,并将数据存到多维数组中,再存到磁盘里,供下次应用。2.1.2 预处理实现依照下面的解决流程,获取解决后的图片数组文件。为了后续不便,最终失去的图片的格局为 38080 的图片。每一个模块实现过程如下:读取图片文件: os.listdir 获取图片所在的文件夹下的所有图片的名称,失去图片的总个数 N。利用 matplotlib 提供的 imread 函数读取 jpg 格局的文件。转换到 38080 的格局: 间接读出的 jpg 格局的格局为 80803 的数组,利用 numpy 的 transpose 函数,转换各个坐标轴,即 = . (2,0,1)失去38080 的数据。失去所有的图片数据和标签数据: 申请 N380*80的数组 Pictures 和 N维向量 labels,每读取一个图片,将以后图片赋值到 Pictures 中,同时将文件名的第一个字母转换成数字,即为对应的标签,将其赋值到 labels 向量中。保留读取的文件: 利用 np.save 将解决失去的数据保留。读取曾经保留后文件: 利用 np.load 加载曾经保留的数据。2.2 降维可视化降维可视化是将高维的图片数据映射到二维和三维空间中,以图像的形式察看各个类别的散布,达到可视化的目标。

May 6, 2023 · 1 min · jiezi

关于程序员:身为程序员你有哪些提高写代码效率的黑科技

首先,每个程序员都是会利用工具的人,也有本人囊里私藏的好物。独乐乐不如众乐乐,明天笔者整顿了3个辅助咱们写代码的黑科技,仅供参考。If你有更好的工具,欢送评论区分享。 1、Google——搜寻解决方案的能力技术上遇到问题首先 Google,而不是百度。切实用不了 Google,能够间接去 Stackoverflow 查看。个别不要放心你的问题没有人遇到过,而是要重复组合、尝试不同的关键字。只有关键字选得好,没有 bug 解不了。 咱们就无妨搜寻下,别离用通过百度和 Google 搜索引擎看下后果: 百度的后果: Google 的后果: 2、低代码平台——提供可复用的轮子低代码提供了残缺的表设计及模板代码生成可能帮忙咱们缩小反复工作。它通常提供了一套残缺的解决方案,波及到表单、工作流、报表、前后端环境及部署、数据中台、分布式锁、短信验证码平台的接入等等,把低代码平台当作一个技术学习与实际利用平台也是十分不错的抉择! 介绍一款最近在用的低代码开发工具——JNPF疾速开发平台,能够晋升开发10倍的效率,妥妥的黑科技!通过图形化用户界面来配置和创立应用软件,而不是像传统模式那样次要依附手写代码。 可视化的低代码操作平台能够把编写 JSON 的过程变成拖拽组件和调试属性配置,这样的交互方式对用户来说更直观敌对,开发效率也会更高。 JNPF疾速开发平台的根本应用形式官网:JNPF 和市面上绝大部分可视化操作平台一样,将界面布局分为3个区域:左侧的控件抉择区,两头的浏览交互区和右侧的属性编辑区。这三个区域的排列所对应的也是用户生成页面的操作流程。 首先,在左侧面板中抉择控件;其次,拖拽至两头的预览区域,并搁置到适合的容器块中;最初,调试右侧面板中的组件属性。调试实现后,进行下一个组件的循环操作,直到整个页面搭建实现。值得一提的是,JNPF平台提供全源码,通过剖析源码,你能够学习到开发者的思路,自在进行二次开发……这都是低代码实用性最间接的体现。  3、人工智能——帮你写代码只管AI写的代码不能间接应用,但只有批改一下就能够用。此前风靡的人工智能GPT-4懂得大部分支流的程式语言,可能负责撰写程式的辅助帮手,联合图像辨识性能,可能生成自然语言和代码等文本。 依据官网演示,在纸上任意画一个网站的草稿图:   拍一张照片上传给GPT-4,它就能够立马生成网站的HTML代码! 当然,这仅是官网简略的演示,你能够本人体验试试看!  4、学会话术——打消懊恼这个办法很间接,你能够试着熟练掌握话术—— “这个需要做不了、“这个技术无奈实现”、“在我这是好的啊,要不你革除缓存试试”、“刚刚还是好的,你重启试试”、“这是 Feature 不是 Bug”、“这是你机器问题,不是软件问题” 等专业术语。  5、按时上下班,一周工作 5 天,养足精力以更高效地写代码把握以上几点,写代码效率会大大晋升。  

May 6, 2023 · 1 min · jiezi

关于程序员:基于-RetinaFace-的口罩人脸检测算法

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档]新型冠状病毒能够通过空气中的飞沫、气溶胶等载体进行流传,在公共场所下正确佩戴口罩能够无效地避免病毒的流传。本试验介绍了一种天然场景下人脸口罩佩戴检测办法,该办法对 RetinaFace 算法进行了改良,减少了口罩人脸识别检测工作,优化了损失函数。在特色金字塔网络中引入了一种改良的自注意力机制,加强了特色图的表达能力。建设了蕴含 3000 张图片的数据集,并进行手工标注,用于网络训练。试验结果表明该算法能够无效进行口罩佩戴检测,在天然场景视频中也获得了不错的检测成果。一、题目基于 RetinaFace 的口罩人脸检测算法二、摘要新型冠状病毒能够通过空气中的飞沫、气溶胶等载体进行流传,在公共场所下正确佩戴口罩能够无效地避免病毒的流传。本试验介绍了一种天然场景下人脸口罩佩戴检测办法,该办法对 RetinaFace 算法进行了改良,减少了口罩人脸识别检测工作,优化了损失函数。在特色金字塔网络中引入了一种改良的自注意力机制,加强了特色图的表达能力。建设了蕴含 3000 张图片的数据集,并进行手工标注,用于网络训练。试验结果表明该算法能够无效进行口罩佩戴检测,在天然场景视频中也获得了不错的检测成果。三、引言自 2019 年 12 月以来,在我国暴发了新型冠状病毒肺炎(COVID-19)流传疫情,到目前为止(2021 年 6 月 13 日),依据世界卫生组织公布的最新消息,寰球最新数据 | 每日更新截至北京工夫 6 月 13 日 16 时:寰球累计确诊 176,302,983 例,累计死亡病例 3,805,609 例,现有确诊病例 12,204,415 例。新型冠状病毒具备极强的传染性,它能够通过接触或者空气中的飞沫、气溶胶等载体进行流传,而且在合适环境下能够存活 5 天。因而勤洗手、佩戴口罩能够无效升高被病毒传染的机率。国家卫生衰弱委员会公布的《新型冠状病毒感化肺炎预防指南》中强调,集体外出返回公共场所、就医和乘坐公共交通工具时,佩戴医用内科口罩或 N95 口罩。因而在疫情期间公共场所佩戴口罩预防病毒传播是每个人的责任,这不仅须要集体自觉遵守,也须要采取肯定的伎俩监督和治理。随着深度学习在计算机视觉畛域的倒退,基于神经网络的指标检测算法在行人指标检测、人脸检测、遥感图像指标检测、医学图像检测和天然场景文本检测等畛域都有着宽泛的利用,本试验介绍介绍一种无效的指标检测算法。3.1 国内钻研现状剖析随着新型冠状病毒的暴发和蔓延,越来越多的人们意识到传统人脸识别零碎的局限性,其中一部分人曾经开始钻研在 iPhone 设置中再增加一个戴着口罩状况下的 FaceID 的办法,然而并未实现。与此同时,国内的汉王科技致力于打造出“人形辨认 + 口罩检测 + 疫情上报 + 大数据联动”综合零碎,并且采纳“社区治理 + 门禁考勤”的模式,将 AI 贯彻落实到防疫工作中。此外,百度还发表收费开源业内首个口罩人脸检测及分类模型,致力于缓解国内疫情现状。3.2 国外钻研现状剖析国外针对基于深度学习的人脸识别办法的研究成果颇丰。尼德.米勒钻研小组首先将深度学习利用于人脸识别畛域,并获得了肯定的辨认准确率,推动了过后的科学研究。最近几年,基于深度学习的人脸识别算法辨认准确率失去了很大的晋升。Facebook 提出了一种采纳基于检测点的人脸检测办法,被称为 DeepFace;此外,Google 提出了 FaceNet 警技术,该技术再次刷新了 LFW 上人脸验证的成果记录。再者是国外对于基于深度学习的指标检测算法的钻研,Girshick 等人首先提出了在 R-CNN 的模型,随后又在其根底上提出 FastR-CNN 模型,引入指标区域池化(ROI)和单层金字塔池化层解决了候选框反复计算的问题。近几年,国外通过构建精美的区域倡议网络(RegionProposalNetwork,RPN)取代工夫开销大的选择性搜寻办法,提出了 FasterR-CNN 模型,使实时检测辨认成为可能。而上述三种模型都是基于区域倡议的办法,还有一种办法是无区域倡议的办法,此办法的标志性的算法有 SSD、YOLO,核心思想是用繁多的卷积网络间接基于整幅图像来预测指标的地位及其属性,也称为 one-stage 指标检测。YOLO 和 SSD 是目前为止最先进的指标检测计划之二,可能在一幅图像中同时检测和分类对象,并且通过不断改进,可能在原有的根底上援用锚点(anchor)和残差网络,进一步提高模型的体现。 ...

May 6, 2023 · 1 min · jiezi

关于程序员:Unity3D内置着色器的用途和性能

举荐:将NSDT场景编辑器退出你的3D工具链3D工具集:NSDT简石数字孪生 https://www.mvrlink.com/unity3d-usage-and-performance-of-buil... 内置着色器的用处和性能Unity 中的着色器是通过__材质__来应用的,材质实质上联合了着色器代码与纹理等参数。此处提供了对于着色器/材质关系的深刻阐明。当抉择材质自身或抉择一个应用材质的__游戏对象__时,材质属性将显示在 Inspector 中。材质检视面板 (Inspector) 如下所示:每种材质在 Inspector 中看起来会有所不同,具体取决于其应用的具体着色器。着色器自身决定了可在 Inspector 中调整的属性类型。无关材质检视面板的具体阐明,请参阅材质参考页面。请记住,着色器是通过材质实现的。因而,着色器定义将要在 Inspector 中显示的属性时,每种材质实际上蕴含来自滑动条、色彩和纹理的调整数据。在这方面要记住的最重要的一点是,可在多个材质中应用单个着色器,但单个材质不能应用多个着色器。着色器名称更改旧着色器的名称可能会影响其性能。这是因为在 Unity 5.0 之前,着色器的某些性能由其门路和名称决定。这依然是旧版着色器的工作形式。无关详细信息,请参阅旧版着色器名称性能注意事项有许多因素会影响游戏的整体性能。本页面将专门探讨内置着色器的性能注意事项。着色器的性能次要取决于两个方面:着色器自身以及我的项目或特定摄像机应用的渲染门路。无关编写您本人的着色器时的性能提醒,请参阅 ShaderLab 着色器性能页面。Rendering Paths and shader performance在 Unity 反对的渲染门路中,提早着色和顶点光照门路具备最可预测的性能。在提早着色中,每个对象通常被绘制一次(无论哪些光源影响它)。同样,在顶点光照中,每个对象通常被绘制一次。因而,着色器的性能差别次要取决于它们应用的纹理数量以及它们执行的计算。Shader Performance in Forward rendering path在前向渲染门路中,着色器的性能取决于着色器自身和场景光照这两种因素。以下局部将进行具体介绍。从性能角度看,有两种根本的着色器类别:__顶点光照 (Vertex-Lit)__ 和__像素光照 (Pixel-Lit)__。前向渲染门路中的__顶点光照__着色器总是比像素光照着色器的老本更低。这些着色器同时应用所有光源基于网格顶点来计算光照。因而,无论在对象上有多少光照,都只须要绘制一次。__像素光照__着色器计算绘制的每个像素的最终光照。因而,必须绘制一次对象以获取环境和主方向光,并针对每次额定光照绘制一次对象。因而,计划为 N 个渲染 pass,其中 N 示意照耀在对象上的最终像素光照数。这种计划减少了 CPU 解决和发送命令到显卡以及在显卡上解决顶点并绘制像素的工作负载。像素光照对象在屏幕上的大小也会影响绘制该对象的速度。对象越大,绘制得越慢。所以,像素光照着色器会带来性能老本,但这样的老本可产生一些杰出的成果:暗影、法线贴图、丑陋的镜面高光和光照掠影,不一而足。请记住,可强制光照进入像素(“重要”)或顶点/SH(“非重要”)模式。在像素光照着色器上照耀的任何顶点光照都将基于对象的顶点或整个对象进行计算,并且不会计入与像素光照关联的渲染老本或视觉效果。General shader performance内置着色器的复杂程度从低到高的程序大抵如下:无光照 (Unlit)。这只是一种纹理,不受任何光照的影响。 *顶点光照 (VertexLit)。漫射 (Diffuse)。法线贴图 (Normal mapped)。此项比漫射的老本略高:减少了一个纹理(法线贴图)和一些着色器指令。镜面反射 (Specular)。此项减少了镜面高光计算。法线贴图镜面反射 (Normal Mapped Specular)。同样,此项比镜面反射的老本略高。视差法线映射 (Parallax Normal mapped)。此项减少了视差法线贴图计算。视差法线贴图镜面反射 (Parallax Normal Mapped Specular)。此项减少了视差法线贴图计算和镜面高光计算。挪动端简化着色器此外,Unity 还有几个针对挪动平台的简化着色器,位于“Mobile”类别下。这些着色器也实用于其余平台,因而如果能容忍应用它们通过简化这一事实(例如近似镜面反射、无每种材质的色彩反对等),可尝试应用它们!要查看每个着色器已进行的具体简化状况,请查看“内置着色器”包中的 .shader 文件,此文件顶端的一些正文中列出了相干信息。挪动端着色器中常见的一些更改示例如下:着色器没有用于着色的材质色彩或主色。对于采纳法线贴图的着色器,应用了根底纹理的平铺和偏移。粒子着色器不反对 AlphaTest 或 ColorMask。无限的性能和光照反对,例如,一些着色器仅反对一个方向光。

May 6, 2023 · 1 min · jiezi

关于程序员:JavaScript原型原型对象原型链系列详解五

(五)、JavaScript原型、原型对象、原型链之间的作用关系为感激大家的反对,特发福利红包(支F宝口令红包),点击返回支付:Gitee什么是JavaScript原型设计模式?为什么要应用JavaScript原型设计模式?JavaScript原型设计模式的实现办法有哪些?JavaScript原型设计模式的利用场景是什么?什么是JavaScript原型设计模式?JavaScript原型设计模式是一种基于原型的设计模式,其次要思维是通过利用JavaScript原型链的个性来实现对象之间的继承和复用。JavaScript中的每个对象都有一个原型对象,通过将对象的属性和办法定义在原型对象上,能够让多个对象共享同一个原型对象,从而实现对象之间的继承和复用。 为什么要应用JavaScript原型设计模式?JavaScript原型设计模式能够帮忙咱们更加无效地治理和保护代码,通过将公共属性和办法定义在原型对象上,能够让多个对象共享这些属性和办法,从而缩小代码的冗余和反复。同时,JavaScript原型设计模式还能够进步代码的可维护性和可扩展性,通过继承和复用原型对象的属性和办法,能够让代码更加灵便和易于扩大。 JavaScript原型设计模式的实现办法有哪些?JavaScript原型设计模式的实现办法次要有以下两种: 基于构造函数和原型对象的实现办法:这种实现办法是JavaScript原型设计模式的经典实现形式,通过定义一个构造函数和一个原型对象,并将构造函数的prototype属性指向原型对象,就能够实现对象之间的继承和复用。基于ES6的class关键字的实现办法:ES6的class关键字提供了一种更加简洁和易于了解的实现形式,通过定义一个class和一个继承自另一个class的子类,就能够实现对象之间的继承和复用。上面是基于构造函数和原型对象的实现办法的示例代码: // 定义一个构造函数function Person(name) { this.name = name;}// 在原型对象上定义一个办法Person.prototype.sayHello = function() { console.log(`Hello, my name is ${this.name}.`);}// 定义一个子类function Student(name, grade) { Person.call(this, name); this.grade = grade;}// 将子类的原型对象指向父类的实例Student.prototype = new Person();// 在子类的原型对象上定义一个办法Student.prototype.sayGrade = function() { console.log(`My grade is ${this.grade}.`);}// 创立一个Person对象const person = new Person('John');person.sayHello(); // 输入:Hello, my name is John.// 创立一个Student对象const student = new Student('Mike', 8);student.sayHello(); // 输入:JavaScript原型设计模式的利用场景是什么?JavaScript原型设计模式实用于须要实现对象之间继承和复用的场景,例如: 定义一个类,并创立多个对象,这些对象具备雷同的属性和办法,但有些属性和办法可能须要进行个性化设置。实现一种基于接口的编程模式,即定义一个接口并实现多个类,这些类实现了雷同的接口办法,但具备不同的实现细节。实现一种对象池的设计模式,即定义一个对象池并将多个对象放入其中,能够在须要时从对象池中获取对象并应用,应用结束后再将对象放回对象池中以供下一次应用。总之,JavaScript原型设计模式能够帮忙咱们更加灵便和高效地治理和保护代码,进步代码的可维护性和可扩展性。 本文由mdnice多平台公布

May 6, 2023 · 1 min · jiezi

关于程序员:图像识别的应用与实践

随着计算机视觉技术的倒退,图像识别技术曾经成为了一个热门话题。图像识别是指将图像中的信息转换为能够被计算机了解和解决的模式,从而实现图像的主动剖析和解决。上面,咱们就来看看如何进行图像识别。 一、图像识别技术的分类 依据图像识别技术的不同,能够将其分为两类:一类是传统的图像识别技术,另一类是深度学习图像识别技术。 传统的图像识别技术次要是基于教训和专家常识的,例如分类、检索、辨认等。这种技术尽管简略、牢靠,然而在解决大量的图像时,往往须要人工干预,效率低下。 深度学习图像识别技术则是基于机器学习和深度神经网络的,它可能主动地学习和辨认图像中的特色,从而实现主动分类、检索、辨认等工作。相比于传统的图像识别技术,深度学习图像识别技术更加高效、精确,可能解决大量的图像数据,并且具备更好的鲁棒性和泛化能力。 二、图像识别技术的流程 图像识别技术的流程个别包含以下几个步骤: 1、图像预处理:看待辨认的图像进行预处理,包含图像增强、灰度化、二值化等操作,以进步图像的可读性和稳定性。 2、特征提取:从待辨认的图像中提取出有用的特色,这是图像识别的关键步骤。罕用的特征提取办法包含卷积神经网络、最大池化等。 3、模型训练:应用机器学习或深度学习算法,构建图像识别模型,并进行训练。罕用的模型训练方法包含随机森林、卷积神经网络等。 4、模型预测:应用训练好的模型看待辨认的图像进行预测,失去辨认后果。后果剖析:对辨认后果进行剖析和解决,失去图像的分类、检索、辨认等后果。 三、图像识别技术的利用 图像识别技术曾经广泛应用于各个领域,例如人脸识别、指标检测、图像搜寻、主动驾驶等。上面咱们来看看一些具体的利用场景。 1、人脸识别:人脸识别是图像识别技术的一个重要应用领域,它能够用于身份辨认、安全监控等方面。 2、指标检测:指标检测是指在图像中检测出指标的地位和大小等信息,罕用于图像搜寻、人脸识别等方面。 3、图像搜寻:图像搜寻是指在大量的图像中疾速定位须要的图像,罕用于指标检测、图像搜寻等方面。 4、主动驾驶:主动驾驶是指让计算机主动驾驶汽车,图像识别技术能够用于汽车的主动驾驶管制、障碍物检测等方面。 四、总结 图像识别技术是一项重要的计算机视觉技术,它能够用于各种图像处理和辨认工作。传统的图像识别技术和深度学习图像识别技术各有优缺点。 本文由mdnice多平台公布

May 6, 2023 · 1 min · jiezi

关于程序员:通用可扩展的图卷积神经网络

拜访【WRITE-BUG数字空间】_[内附残缺源码和文档]图节点邻近度用于掂量图上节点绝对某一给定起始节点的绝对间隔。依据图 学习实践,邻近度较高的节点广泛具备较高的相似性。以节点分类工作为例,由 于节点邻近度的高下间接批示了图构造上节点间的类似关系,进而蕴含了各节点 的类别信息,故而能够应用节点邻近度计算结果进行神经网络的节点分类训练。一、背景介绍图,作为计算机科学畛域中一类重要的数据结构,提供了一种形象示意事物 之间关系的办法。图构造蕴含两类次要元素——“节点”和“边”,其中,“节点”常 被用作示意各种事物,“边”被用作示意事物之间的关系,由此形象出事实世界真 实关系的表达形式,这对咱们钻研理论生存中简单的关系网络提供了可能。只管 另一重要的数据结构“树”也含有“节点”和“边”两种元素,然而,图构造比树结构 更具灵活性。图构造中节点的平等关系和自在的连边形式,使其能够示意出事物 之间的多种关系模式,但树结构的表达能力却会因为本身定义而受到限制。比方, 咱们无奈用树结构示意一个关系闭环,也很难在事实世界中找到一个占有相对主 导位置的“根节点”。从这一点中,咱们更能看出图构造在关系网络的表白方面具 有的人造劣势。因为图构造在关系表白方面的杰出个性,咱们常将其利用在多种理论场景中。 比方,在交通网络中,咱们罕用节点示意城市,边示意城市之间的路线,边上的 权重示意路线的长短,进而延长出图节点间的最短门路问题等,以此晋升门路规 划问题的效率。在论文援用网络中,咱们罕用节点示意论文,边示意论文之间的 援用关系,进而帮忙人们梳理论文体系、辨识重要论文等。在生命科学中的蛋白 质运输门路钻研畛域,咱们能够用节点示意蛋白质分子,用边示意蛋白质之间的 物质运输关系,进而帮忙钻研人员梳理蛋白质的流动法则,辨认具备类似性能的 蛋白质等。在社交网络中,咱们罕用节点示意用户,用边示意用户之间的好友关 系,由此刻画出用户之间的亲疏关系,进而开展社区发现、类似用户推断、趣味 产品举荐等畛域的钻研等。近年来,依据图构造信息和节点和边上携带的特色信息进行示意学习与开掘 的问题吸引了研究者的宽泛关注,相干实践、算法和利用零碎相继涌现,钻研成 果日益丰盛。然而与此同时,海量数据规模的简单网络结构对现有的图示意学习 钻研带来了艰巨的挑战。为了能无效获取属性异质图数据所携带的构造信息和属 性、特色信息,在进行属性异质图的示意学习与开掘中,现有钻研工作广泛会在 图信息流传阶段,将初始给定的节点、边的属性和特色信息依照图构造沿邻边进 行聚合,进而失去高质量的节点示意向量,再将节点示意向量放入神经网络训练 框架中进行训练。为了失去高质量的图信息流传后果,现有办法大多会抉择一个 适宜的图节点邻近度掂量指标,通过计算图节点邻近度间接取得图信息的流传结 果。然而,现有工作应用的图节点邻近度掂量指标各不相同,不足通用的节点邻 近度计算范式来领导图信息的聚合过程,从而难以宏观了解图流传过程的外围, 也不易提出通用的图信息流传优化算法,以对立晋升所有图示意学习与开掘过程 中的图信息流传效率。二、算法概述图节点邻近度用于掂量图上节点绝对某一给定起始节点的绝对间隔。依据图 学习实践,邻近度较高的节点广泛具备较高的相似性。以节点分类工作为例,由 于节点邻近度的高下间接批示了图构造上节点间的类似关系,进而蕴含了各节点 的类别信息,故而能够应用节点邻近度计算结果进行神经网络的节点分类训练。 目 前 罕用的 属 性 异 质 图节点 邻 近 度掂量指标 次要包 括 : Personalized PageRank(PPR)、heat kernel PageRank(HKPR)、转移概率(transition probability)、 Katz 等。因为不同的节点邻近度掂量指标可能会影响最初的预测后果,因而,目 前的钻研工作广泛会依据具体的上游工作,抉择计算最合适的邻近度掂量指标, 以取得图构造、属性信息的集成后果。所以,设计一个通用的节点邻近度计算范 式对对立不同的邻近度计算步骤大有裨益。

May 5, 2023 · 1 min · jiezi

关于程序员:使用-Mercury-直接从-Jupyter-构建-Web-程序

动动发财的小手,点个赞吧! 无效的沟通在所有数据驱动的我的项目中都至关重要。数据业余人员通常须要将他们的发现和见解传播给利益相关者,包含业务领导、技术团队和其余数据科学家。 尽管传播数据见解的传统办法(如 PowerPoint 演示文稿和动态报告)广受青眼,但创立它们通常很耗时。 更重要的是,这些服务要求人们来到舒服的 Jupyter Notebook——数据科学家大部分工夫都花在那里。 如果咱们能够通过间接从 Jupyter Notebook 创立交互式和优雅的 Web 应用程序来与其他人分享咱们的发现,那不是很好吗? 为此,Mercury 是一种开源工具,可简化 Jupyter Notebook 上 web 应用程序的创立。 因而,在本文中,我将演示如何应用 Mercury 创立令人惊叹的 Web 应用程序并与别人共享。 开始应用 MercuryMercury 创立的 Web 应用程序次要由两件事驱动: Jupyter Notebook:这是您开发网络应用程序的中央。咱们应用 Mercury 的输出和输入小部件启用交互性。 输出小部件容许用户提供输出并与应用程序交互。 Mercury 反对的一些输出小部件如下所示: 输入小部件用于出现输入。这包含 Markdowns(带变量)、JSON 等。此外,Jupyter 单元格的输入也由 Mercury 出现。 因而,如果您的应用程序创立绘图或打印 DataFrame 等,它们将呈现在网络应用程序的输入面板中。 Mercury Server服务器将 Jupyter Notebook 出现为 Web 应用程序。 正如咱们将看到的,渲染笔记本就像运行一个命令一样简略。您所要做的就是在笔记本中创立您的网络应用程序。 应用 Mercury 设置 Web 应用程序须要几个简略的步骤。 Install Mercury首先,应用 pip 装置库: pip install mercury当初咱们能够创立带有输出和输入小部件的 Web 应用程序。 ...

May 5, 2023 · 2 min · jiezi

关于程序员:Flutter-中使用-Widgetbook-管理你的组件

Flutter 中应用 Widgetbook 治理你的组件<img src="https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/05/ad04470d9d20876ab34c1b36b08cf482.jpeg" style="width:90%;" /> 前言Flutter 界面开发中咱们有几个痛点 : 与设计师合作复用一套设计规范(figma)可视化的治理你的组件代码(根底组件、业务组件)不同设施尺寸测试你的组件实时批改你的测试组件参数原文 https://ducafecat.com/blog/flutter-uses-a-widgetbook-to-manag...视频https://www.bilibili.com/video/BV1qM4y1b7WL/ 参考https://docs.widgetbook.iohttps://ant.design/docs/spec/introduce-cnWidgetbookhttps://www.widgetbook.io/ <img src="https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/05/6840ba9ac214ee1f2938c79ed5fab5a6.png" style="width:80%;" /> Flutter Widgetbook 是一个用于构建和交互 Flutter 组件库的工具。它容许您在独自的应用程序中构建和演示您的 Flutter 组件,以便您能够在不运行残缺应用程序的状况下进行疾速迭代和测试。 应用 Flutter Widgetbook,您能够: 构建和演示单个组件,而无需在残缺应用程序中运行它们。以交互方式测试组件的不同状态和属性,以及不同平台和设施的外观和行为。共享您的组件库,并让其他人轻松地查看和测试您的组件。您能够在 Flutter 应用程序中应用 Widgetbook,也能够将其作为独立应用程序应用。在 Widgetbook 中,您能够编写 Dart 代码来定义组件和演示它们的用法。您能够应用 Flutter 提供的任何组件和库,并应用 Widgetbook 提供的一些工具来组织和显示您的组件。 设计规范前端设计规范是一组定义前端设计和开发过程中所需恪守的准则和规定的标准。它们旨在确保前端代码的一致性、可维护性、可扩展性和可重用性,并促成团队间的合作。 前端设计规范次要包含以下内容: 布局标准:定义页面布局和排版的规定,包含网格零碎、排版间距、基准线等。款式标准:定义色彩、字体、图标、按钮等根本款式的应用和标准,包含设计格调、调色板、字体类型、字号、行低等。组件标准:定义前端组件的设计和开发规定,包含组件的命名、构造、款式、交互、状态治理等。图片和媒体标准:定义图片和媒体资源的格局、尺寸、优化和加载等规定,以进步页面性能和用户体验。响应式设计规范:定义响应式设计的准则和规定,包含页面布局、元素大小和地位、字体大小、图片和媒体资源的显示等。可拜访性标准:定义网站或应用程序的可拜访性规定,包含键盘导航、语义标记、焦点批示、色彩对比度等。性能标准:定义优化前端性能的规定,包含代码压缩、缓存管制、资源加载、代码宰割等。前端设计规范能够通过文档、工具、模板和代码库等形式来实现和保护。它们能够帮忙团队进步开发效率、升高保护老本、放弃代码品质和可维护性,并促成设计和开发间的合作。 Ant Design 设计规范参考https://ant.design/docs/spec/introduce-cn <img src="https://ducafecat.oss-cn-beijing.aliyuncs.com/podcast/2023/05/54cef4391c97f0e4b4820b0b9b1c4232.png" style="width:80%;" /> 代码https://github.com/ducafecat/flutter_develop_tips/tree/main/flutter-widgetbook 步骤装置 widgetbook 组件pubspec.yaml dev_dependencies: flutter_test: sdk: flutter ... widgetbook: ^3.0.0-beta.14留神是放在 dev_dependencies 节点上面编写调试界面lib/app.widgetbook.dart // ignore_for_file: depend_on_referenced_packagesimport 'package:flutter/material.dart';import 'package:widgetbook/widgetbook.dart';import 'package:widgetbook_in_flutter_course/widgets/button.dart';void main() { runApp(const HotReload());}class HotReload extends StatelessWidget { const HotReload({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return Widgetbook.material( addons: [ ], directories: [ ], ); }}运行 ...

May 5, 2023 · 4 min · jiezi

关于程序员:PingCode-的环境和环境管理

一个软件产品的稳定性、可靠性、可用性很大水平上取决于咱们如何无效地治理它的环境。这里的”环境“指的是咱们在运行软件时,须要的一整套组件,包含硬件、零碎、服务、资源、工具和软件自身。在一个衰弱的软件开发流程中,咱们通常须要很多个环境来服务于这个软件产品。它们服务于不同的场景,缺又都撑持着整个交付流程。在这些环境中,有的必须齐全独立的,有的能够共用一些基础设施组件,有的罗唆就是启动了多个实例而已。阶段不同、产品不同,环境就又差别,接下来我就跟大家分享一下 PingCode 会应用到的环境: Tips:PingCode 是由 Worktile 团队打造的智能化研发管理工具,帮忙企业实现对研发过程两条工作流的治理,实现研发治理过程的自动化、数据化、智能化,帮忙企业晋升研发效力。《延长浏览:PingCode 是什么》本地环境本地环境是开发人员进行开发和调试的中央。在本地环境,开发人员简直能够拜访到所有必要的信息,也能够通过批改代码来实现必要的尝试,再加上本地环境中通常装置了开发人员最棘手的工具,因而这个环境是最让开发人员舒服的。不过在 PingCode 构建一个残缺的本地环境并不容易,因为 PingCode 蕴含了上百个的服务,波及到几十个代码库,要想把他们都配置起来那可太难了。好在构建一个残缺的环境其实并没有那么必要,开发人员只是须要一个可能把本人的我的项目代码运行起来的环境而已,这时候让本地程序间接连贯开发环境的局部资源就能够了,咱们只须要将数据拆散开来就好了。 开发环境开发环境是团队对立构建软件的中央。开发环境通常具备较为残缺的基础设施组件,然而软件性能会比拟新,而且还充斥着半成品,很多开发人员还会间接批改数据库来达到一些特定的成果,不过这些都是必要的,每个“丑陋”的软件产品都有这样芜杂的车间。在 PingCode,咱们的开发环境其实是一个虚构的环境,它可能帮忙开发人员提供各种各样的服务,然而它不是一个具象可见的环境,它的所有服务都是映射自咱们的测试环境,包含数据库和其余基础设施组件。这样当然有其益处,因为咱们能够少保护一个环境,你要晓得,开发人员在相似的事件要做两次这件事上是很在意的,所以缓缓的咱们就养成了间接用“测试环境”的服务和数据来验证本人新性能的习惯。享受了便当,就要承当它带来的隐患,那就是数据的准确性。PingCode 是一个企业用的多租户服务,它的数据体系是基于一个又一个的“企业”,于是咱们就约定俗称为人手几个“企业”账号,只有不波及全局通用数据,本人“企业”下的数据轻易应用。 测试环境测试环境是咱们用“肉眼”体验和测试产品的中央。相比开发环境来说,测试环境更加的独立、残缺和稳固。除了软件版本和服务器的性能之外,咱们应该在各方面都致力让它和生产环境保持一致。因为如果测试环境和生产环境的差距过大,那么有些问题咱们是很难在开发阶段发现的,而一旦过了测试环境,定位和修复缺点的复杂度就会越来越大,曾经有大量事实证明,发现问题的中央越靠后,修复它的老本也就越高。在我看来,构建一个弱小测试环境的老本肯定比频繁定位生产环境问题的老本要低多了。咱们为测试环境的投入十分大,它的复杂度也就小于生产环境而已,尽管硬件配置上不如下文中的很多环境,然而它的组件完整性简直和生产环境统一。除了运行 PingCode 必须的各类组件之外,日志零碎、监控零碎、平安组件、内部零碎的账号等也都是独立的一套。环境能力是一方面,PingCode 自身的服务的稳定性也很重要,咱们通过 PR 流程和 CI/CD 流程来保障合入测试环境的性能的准确性,而后通过回滚和数据还原能力来进行兜底。 Feature 环境Feature 环境是一组用于体验还未合入到主版本的新性能的中央。这些环境通常是几个并存,它们都是随用随建,用完即删。不过每个 Feature 环境在应用上不太一样,有的环境须要独立入口,然而基础设施组件和罕用的 PingCode 服务能够共用;有的环境则要求必须是完完全全独立的环境,这取决于开发团队的需要。比如说:一些跨子产品的重大性能,开发周期也很长,开发团队就会申请创立一个 Feature 环境;还有一些 PingCode 前端的我的项目在提交 PR 的时,咱们会主动为其创立一个专门用于预览 PR 里新个性的环境。这些 Feature 环境是为了爱护主版本的开发顺利推动的同时,满足一些并行开发的需要。 预公布环境预公布环境是一个更像生产环境的”测试环境“。这个环境通常是给产品经理们验收产品用的,它还有很多别名,最常听到的就是 Staging 环境,咱们外部简称它 Beta 环境。在预公布环境上的测试过程很像一个实在客户在应用产品,这使得测试数据更加真切,咱们也更容易领会到产品性能是否真的正当。除了性能层面的测试,预公布环境还会进行部署层面的测试,不同于通过主分支上的代码变动实现测试环境的继续部署,咱们通过打 Tag 来实现预公布环境的部署,而这次部署用的制品(Docker 镜像)将被长期寄存在制品库里,也只有通过验证的制品能力用于前面的环境,相当于性能锁定了。 验证环境验证环境是专门用来验证 PingCode 重要降级计划的环境。为了更加贴近的生产环境的降级状态,验证环境的基础设施配置会高度模仿生产环境的配置,通过在这个环境中执行降级计划,咱们能够察看到各个根底组件的压力,从而让咱们更加理解本次版本升级计划,也晓得如何应答可能呈现的问题。不过验证环境的老本着实不低,不适宜长期运行,而且也不是所有的降级都有必要这么验证,绝大多数的日常变更间接滚动降级即可,只有那些变动很大,拿不准的降级计划才须要走一遍验证环境,而须要应用验证环境时,通过咱们的自动化流程现构建一个验证环境即可。 基准环境基准环境是专门用于性能测试的环境。性能测试只是一个概括性的说法,咱们定期会进行这样的非功能性测试,而这类测试最吃环境了,因而咱们筹备了一个同比例放大生产环境的环境,并将其命名为基准环境。在基准环境中,咱们部署一个指定版本的 PingCode,而后在另外一台服务器上执行事后写好的脚本,最终咱们将跑进去的后果按比例放大,粗略的得出一个性能测试后果,最初再用这个后果领导咱们的改良方向。 金丝雀环境金丝雀环境是引生产环境的流量来验证新性能的环境。它是软件产品全面部署到生产环境之前的一个小流量测试环境,先部署到金丝雀环境能够提前发现一些上线后的潜在危险,减少开发人员的信念,这在 PingCode 外部是必不可少的一环,简称上 RC 环境。咱们会提前邀请一些客户和使用者,比方咱们公司本人,退出到这个引流的策略里,而后借由这些实在的流量测验新性能的可用性,直到新性能稳固运行一段时间之后才能够申请部署到生产环境。须要阐明的是,金丝雀环境共用了生产环境的基础设施组件,包含数据库,因而在新性能部署到生产环境之后,这些提前“新增”的数据并不会遗失。 生产环境生产环境是给客户应用的环境。保障生产环境的稳定性是保障企业的商业根底,这里我就不开展。 灾备环境灾备环境是专门用于灾备场景的环境。比方其中一个作用是进行灾备演练,咱们会将一些十分重要的、业界有通识的、咱们遇到过的问题定义为演练项,而后通过演练这些劫难和执行对应的预案让咱们的技术团队可能对劫难有同理心和应答力。 演示环境演示环境是咱们为客户演示时应用的环境。这类环境不同于其余环境,它不是在技术的视角来服务于产品稳定性的,而是在商业的视角服务于业务稳定性的。作为一个专业性的软件,客户在本人摸索的过程中会遇到很多问题,这时就须要一些产品专家将软件的设计理念更好的传播给客户,于是就有了这样的一套环境。这个环境外面的数据是咱们的产品专家提前创立好的,并且每天都会重置,而后由客户参谋顺着产品专家的思路带着客户体验一下产品性能,这样就能更好的疏导客户意识咱们的产品。 环境治理其实除了上述这些环境,咱们还有很多其余的环境,比方用于公有部署场景的、用于基础设施组件测试的,那么这里就引出了另一个问题。当咱们只有一个环境时,咱们只须要围绕着这一个环境解决问题;当咱们有三个环境时,咱们能够通过容器化和容器编排来更高效的管理应用程序,而环境自身的问题无非就是比一个时多一些而已;可是当咱们有几十个环境时,那多进去的这些环境问题就须要咱们认真思考了。 首先,咱们须要把“环境”当作一种资源来了解。如果了解的纯正一些,环境是一整套包含硬件、零碎、服务、资源、工具等内部组件的汇合,而咱们的软件只是运行在这个环境中的一个实例,就像鱼缸和鱼的关系一样。那咱们当初有几十个环境,每个环境中运行一个/多个软件实例,那就是并排着摆着几十个鱼缸,每个鱼缸里都有鱼在游来游去,鱼缸大小不统一,鱼儿们的样子也不尽相同。咱们还须要将软件的新版本继续的通过 CD 部署到不同的环境中,再进一步,咱们随时须要创立一个新的环境,而后将 CD 接入进去,实现首次的部署,再进一步,咱们只须要一个信号,就能够销毁掉这个环境,开释掉它占用的硬件、网络等资源。那么环境是什么,环境治理又是什么,我置信大家曾经有了一个根本的概念。 其次,环境越多自动化和对立配置能力就要越强才行。这里的自动化不只是构建、制品和部署,它还包含通过脚本创立和治理环境里的所有组件(这里欢送大家浏览咱们另一篇文章「基础设施治理之 pulumi」);而配置能力则体现在应用程序所须要的环境变量、容器编排须要的参数、内部通用资源的接口等信息都应该存储在一个配置中心里,它主持着所有环境的所有变量。在这两个外围能力具备了之后,接下来须要的就只是一个调度核心而已,这个调度核心一是负责和使用者们交互,二是通过它背地连贯的自动化和配置核心能力。到此咱们就能够实现按需创立和销毁环境了。 最初,尽管环境治理看上去仿佛应该是一种更底层的能力,咱们所有的环境都应该基于一个计划来治理。然而实际上我认为谋求这种极致没太大的意义,环境就是有其特殊性,不适宜一刀切,尤其是开发环境、测试环境和生产环境这种重要的环境。我认为环境中的自动化是必不可少的,但所有都自动化这就没必要了。 ...

May 5, 2023 · 1 min · jiezi

关于程序员:羊毛党请远离消费卷

一、背景介绍2023年,随着疫情失去无效管制,经济逐渐复苏,消费市场也呈现出旺盛的需要。为了进一步促成生产振兴,一方面国家加大力度发放生产券,另一方面商家也纷纷推出各种优惠活动,特地是在五一期间,人流量特地大,潜在用户特地多,为新用户提供购物券特地有助于留新。然而,这些看似美妙的措施,却也给不法分子提供了可乘之机,通过注册假账号,虚伪生产的形式薅羊毛,不仅侵害了商家的利益,也扰乱了市场秩序,甚至可能波及欺骗等犯罪行为。 据初步统计,新冠肺炎疫情产生以来,全国有28个省市、170多个地市兼顾中央政府和社会资金,累计发放数百亿元的生产券。发放生产券的初衷,是通过让利于民,让消费者失去实打实的实惠,为有需要的消费者雪中送炭,同时对冲疫情影响、开释生产后劲。与间接发放现金补贴相比,生产券具备见效快、杠杆高、易监测等劣势,从政策施行成果来看,这种促销形式的成果是显著的。不仅实现了汇集人气、加强信念、提振生产的指标,更推动了生产的数字化过程。 二、问题剖析当高达上百亿的生产券并没有齐全发放给真正须要的市民,变成了“羊毛党”牟利的工具时,不仅毁坏市场秩序,还会导致政策成果大打折扣,甚至给中央政府、企业和消费者造成经济损失。一方面虚伪交易套现,产生不了真正的生产需要,也就起不到以生产拉动经济回暖的作用,政策初衷就会落空。另一方面政府发放生产券的资金,也是来自于整体纳税人,在疫情冲击导致经济下滑、民生艰难增多的状况下,“羊毛党”通过强占生产券夺取暴利,无异于恻隐之心。 那么,“羊毛党”是如何薅羊毛的呢?依据媒体考察和技术平安专家剖析,“羊毛党”次要采纳以下几种伎俩:利用虚构手机号码或身份信息注册多个账号支付生产券;利用虚构IP地址或虚构定位绕开地区限度,在全国范畴内组团抢券;利用社交软件、网络平台等信息渠道公布、流传套现生产券等守法信息;与商家或其余消费者串通制作虚伪交易记录套取现金。这些伎俩不仅违反了生产券的应用规定和目标,也进犯了其余消费者的合法权益,更可能波及欺骗、洗钱等犯罪行为。据报道,绍兴两名个体户因违规应用生产券而被公安机关采取刑事强制措施。为了套现几十块钱的生产券,触碰法律的红线,甚至面临着刑事处罚,切实得失相当! 三、防控措施面对薅生产券羊毛的行为,必要的法律惩戒不能缺位。与此同时,也要进一步明确生产券的应用规定,堵住应用破绽。目前,这一景象曾经引起监管部门关注,多地正不断完善生产券应用方法。例如:郑州市商务局等三部门联结公布《对于标准应用社会生产券无关事项的通告》,明确将查究生产券套现者的相干法律责任;深圳市商务局公布《深圳市商务局对于进一步标准深圳市社会生产券应用治理无关事项的告诉》,明确禁止将社会生产券转让、发售或用于非自己购买商品和服务;南京市商务局公布《南京市商务局对于进一步标准南京市社会生产券应用治理无关事项的告诉》,明确禁止利用社会生产券进行虚伪交易、套现等守法违规行为。 除了政府部门的监管外,商家和平台也要增强自律和技术防备,进步辨认和拦挡“羊毛党”的能力。例如:商家要严格依照生产券的应用规定和要求,不得与“羊毛党”团结或放纵其套现行为;平台要增强对用户账号、手机号码、IP地址等信息的审核和验证,避免“羊毛党”利用虚伪信息注册多个账号支付生产券;平台要利用大数据、人工智能等技术手段,监测和剖析用户行为和交易数据,及时发现和解决异样交易和套现行为。最初,消费者也要建立正确的消费观和法律意识,不要被“羊毛党”引诱或误导,不要参加或反对其套现行为。 消费者要合理安排本人的生产打算和估算,不要自觉跟风抢券或购物;消费者要留神爱护本人的个人信息和财产平安,不要轻信或转发“羊毛党”公布的套现信息;消费者要踊跃举报发现的“羊毛党”或套现行为,保护本人和其余消费者的合法权益。

May 5, 2023 · 1 min · jiezi

关于程序员:深度学习之深度终端使用思源黑体做中文字体

深度学习是一种新型的人工智能技术,它可能让机器像人类一样进行自主学习和辨认,从而实现对简单数据的分类、预测和辨认等工作。深度学习技术的外围是深度神经网络,它通过对大量数据进行学习,能够实现对数据的高效解决和辨认。在深度终端上,深度学习技术的利用也越来越宽泛,其中一个重要的利用是应用思源黑体做中文字体。 在深度终端上,应用思源黑体做中文字体的次要起因是,思源黑体是一款十分优良的中文字体,它具备清晰的字形、舒服的笔画和易读性,能够帮忙用户更好地浏览和了解中文文本。同时,思源黑体也具备很高的美学价值,它的设计十分简洁、慷慨,能够给人留下粗浅的印象。因而,将思源黑体利用于深度终端上,能够进步用户的浏览体验,并且使深度终端更加好看。 在深度终端上应用思源黑体做中文字体,还能够帮忙用户更好地学习和应用中文。思源黑体是一款十分易于浏览和学习的中文字体,它的笔画简洁、清晰,能够让用户更加轻松地学习和了解中文。同时,思源黑体的设计十分合乎中文书写的习惯,能够帮忙用户更好地把握中文书写技巧。因而,将思源黑体利用于深度终端上,能够帮忙用户更好地学习和把握中文,进步用户的中文程度。 除了以上的起因外,深度终端上应用思源黑体做中文字体还能够进步用户的工作效率。思源黑体是一款十分易于浏览和学习的中文字体,它的笔画简洁、清晰,能够让用户更加轻松地学习和了解中文。同时,思源黑体的设计十分合乎中文书写的习惯,能够帮忙用户更好地把握中文书写技巧。因而,将思源黑体利用于深度终端上,能够帮忙用户更好地学习和把握中文,进步用户的工作效率。 综上所述,深度学习之深度终端应用思源黑体做中文字体是一个十分重要的利用,它不仅能够进步用户的浏览体验和学习效果,还能够进步用户的工作效率。因而,深度终端用户能够思考应用思源黑体做中文字体,以进步用户的体验和成果。 本文由mdnice多平台公布

May 5, 2023 · 1 min · jiezi

关于程序员:数说热点-跟着长月烬明起飞今年各地文旅主打的就是一个听劝

近日,随着热播剧《长月烬明》的爆火,蚌埠、宣城、敦煌等多个与剧情梦幻联动的宝藏城市被带飞,各地热心网友也纷纷督促自家文旅局连忙“蹭飞”,《长月烬明》以一己之力打造了影视文旅交融的新样板。 仙偶剧特效天花板,两年内最火爆优酷S+独播剧《长月烬明》自4月6日开播以来,凭借其制作精良、特效炸裂的剧集和弱小的主演阵容维持着超高热度,截至目前,#长月烬明# 微博相干话题浏览量已超122亿。云合数据显示,《长月烬明》创近两年剧集网播首日正片无效播放最高纪录。灯塔数据显示,《长月烬明》空降灯塔全网正片播放市占冠军,最高市占达22.76%,为近三年古装剧上线首日市占最高。近日,《长月烬明》再创新高,以27.7%的云合市占率,刷新了《苍兰诀》的纪录,成为“仙侠剧”云合市占率第一。 这部耗资8亿,9家特效制作公司倾力打造的仙偶剧被网友称为“仙偶剧特效天花板”,其绝美视觉、文化传承也失去了专业人士的认可。新华网、央视网等亲自下场,点赞《长月烬明》的“敦煌风”服化道。《中国艺术报》更是点评,《长月烬明》不仅做到了视觉翻新,展示了绮丽巨大的敦煌美学,还不忘吸取传统,通过气象万千的西方玄幻,书写中华新神话主义,彰显中华文化自信。 爆剧效应带火多地文旅《长月烬明》不仅在线上一路刷新纪录,还意外带飞了多地文旅产业。起因是网友在追剧的同时,为剧中多个标志性场景、人物、道具一一找出了线下原型,纷纷手动艾特各地文旅局,表白了想要线下沉迷式追剧的欲望。蚌埠、敦煌、宣城等官网也疾速做出回应,“各出奇招”晒出当地风光与人文特色,抢占这一波从“天”而降的流量。 蚌埠文旅率先迎来流量“追着喂饭吃”的盛况。因“珠蚌迎宾”和“火凤凰龙”两处景点切合剧中“般若浮生”干线中河蚌精灵桑酒和神龙冥夜的故事,原先低调无名的蚌埠率先成为剧集受益者。蚌埠日报抖音直播间,24小时涌入超40万网友。蚌埠文旅局长短视频COS桑酒举荐景点,并联动漫画版桑酒、冥夜。紧接着市人民政府发文《紧抓热点推动文旅产业高质量倒退》,发表要趁热打铁发展首届“文化游览美食节”....…共振效应下,“蚌埠住了”的蚌埠高铁一票难求,一跃成为外围景点日均接待人次超12万、日均营业额超百万的网红城市。 敦煌早在剧集开播之前,因官网提前释出的鲜艳夺目的敦煌风海报,曾经赚足了观众们的眼球。敦煌文旅官网踊跃参加#长月烬明五一旅行团集结#话题“抢人”,并公布尽显敦煌美学的长月烬明十二神海报再掀波澜。而宣城文旅部门抓住剧中人物宣城王萧凛的热度,在社交媒体上公布多条与《长月烬明》关联的内容。#宣城来抢长月烬明了#的微博话题冲上热搜,浏览量超过了8000万。“诗意宣城”紧跟热度,踊跃介绍宣城的著名景点、美食,还为游客制作了具体的宣城游览攻略。 以“IP”赋能,激发文旅市场生机《长月烬明》一部剧带火多座城,再次证实了以文塑旅大有可为。事实上,一部优良的影视作品在生产之初,肯定踊跃地交融了各种经典文化元素。影视IP联合文旅,既开掘了影视创作的文化质地,晋升了作品口碑,又为旅游景点吸引了游客关注,推动了中央游览产业倒退。 随着生产降级转型,繁多景点观光游已远不能满足新一代消费者的需要,IP赋能的形式能从新激发文旅市场生机。国内外在IP联动方面曾经有了一批优良的案例: 西安 | 长安十二时刻主题街区作为全国首个沉迷式唐风市井生存街区,被各大旅行博主推爆了的“长安十二时刻主题街区”,无疑是绑定超级IP、投合生产降级需要、塑造城市文化地标的代表。踏入即是“大唐人”。“不良人”守卫、上元灯节的太上玄元灯、通善坊、安仁坊.....这些影视剧IP中的场景在这里被高度还原。不仅如此,主题街区以沉迷式文化体验为外围,依靠古城西安文化底蕴,从深耕唐朝市井文化,到复刻长安的热闹过往,打造了原汁原味的全唐市井生存体验空间、雅俗共赏的唐风主题休闲娱乐互动空间、琼筳笙歌的主题文化宴席沉迷空间。 主题街区还交融了热门剧集IP、沉迷式娱乐、主题餐饮、国潮批发等多元业态,简直集齐了所有当下年轻人所青眼的体验式旅行必备因素,让游客直呼“一秒入唐,梦回长安”。作为西安文商旅交融业态的全新尝试,这样一个承载着文化传承的国潮空间,无疑称得上是近年来国内沉迷式文商旅交融倒退的标杆作品。 鸟取县 | 柯南小镇在日本鸟取县的北荣町,同样有一个广受文旅界人士关注的小镇——柯南小镇。这个原先名不见经传的、仅有15000名居民的北荣町因挂靠顶级IP《名侦探柯南》而出名。在57平方公里、仅需两个小时就能逛完的小镇上,遍布着柯南IP的衍生物,铜像、井盖、路标......成为全世界柯南迷的朝圣地。 尽管北荣町因胜利打造文化标识闻名于世界,但柯南小镇不只有沉迷式IP文旅。在IP之外,北荣町的魅力还来源于漂亮的自然风光、原生态的农产品和丰盛的历史文化资源。“西瓜山药衰弱马拉松”就是北荣町交融动漫文旅和农业的极佳范例,该赛事的代言人为柯南。参赛者身着柯南运动装,穿过西瓜田和山药田,既充斥乐趣,又为本地农产品做了宣传。 “文旅+”向“+文旅”转变文旅产业倒退至今,文化、产业和游览的边界正在一直拓展。通过产业降级和空间构建,拉长文旅产业链,营造沉迷式文化感知和体验,打造新生产综合体,一直催生新兴生产业态,“文旅+”一直向“+文旅”转变是大势所趋。除了IP联动外,农文旅、元宇宙等新理念、新技术的加持也正在助力摸索翻新蓝海。

May 4, 2023 · 1 min · jiezi

关于程序员:假期做了一项调研大厂为啥都自研RPC结果合乎情理

大家好,我是冰河~~ 五一假期过的可真快,明天开始,又要搬砖了。在五一假期当中,冰河做了一项调研,感觉后果还是挺合乎情理的。 翻看招聘信息先来看我在某招聘网站上轻易搜寻了下Java招聘的岗位,看到的招聘信息。 能够看到,很多岗位都要求有分布式、微服务相干的开发教训,并且清一色都须要把握RPC框架,有RPC开发教训,并且某大厂给出的RPC中间件架构师岗位更是给出了60-70K,16薪的薪资。在这个超级内卷加大裁员的背景下,还是挺有诱惑力的。 不过话说回来,为啥大厂在招聘的时候,都须要具备分布式、微服务的开发教训,并且为啥对RPC框架也这么情有独钟呢? 其实,很多大厂都有一套自研的RPC框架,这有形当中会减少对面试者的要求,那就是要把握RPC的基础知识,基本原理,具备肯定的开发教训,这样,你能力更快的把握大厂的外围业务零碎,甚至参加大厂外围RPC框架的研发工作,并且你把握的越深刻,你的薪资基本上也会越高。 大厂都自研RPC?家喻户晓,大厂无论是在用户体量还是在业务规模上,体量都是比拟大的,并且一整套零碎中都会拆分成很多的服务,甚至不同的业务线之间的零碎也会存在数据之间的交互。这就须要有一套成熟、稳固,并且性能高效的RPC框架作为多个服务、甚至是不同业务线的多套零碎之间的底层通信设施。 所以,个别大厂都会基于本身业务的特点,自研合乎本身倒退需要的RPC框架。比方阿里的Dubbo、微博的Motan、腾讯的Tars、谷歌的gRPC、Facebook的Thrift都是业界比拟闻名的RPC框架。就拿阿里的Dubbo来说,被广泛应用于整个团体外部泛滥服务之间的底层通信上。 如果你想进阿里、微博、腾讯、谷歌、Facebook等这些大厂时,如果你曾经深度把握了像Dubbo、Motan、Tars、gRPC和Thrift等RPC框架,这无疑会是你的加分项,因为从情感上来讲,大厂还是比拟偏向于招聘曾经深度把握本身公司开源框架的候选人,这一点,别问我是怎么晓得的。 如何深度学习RPC?既然分布式、微服务、尤其是RPC框架曾经成为很多互联网大厂在招聘过程中的重要面试考察点,那作为程序员的咱们,平时有很多CRUD的工作要做,抽不出大量的工夫来深度学习RPC常识。只管网上有很多开源的RPC框架,然而宏大的源码弄的人目迷五色,还没看几个类就曾经昏头昏脑了,更别提深度把握了。 正是思考到这些问题,冰河独自写了一个很长的《RPC手撸专栏》。并且《RPC手撸专栏》是冰河带着星球的小伙伴们一起从零开始手撸的一款可在实在场景应用的、高性能、可扩大的RPC框架,整个专栏目前已更新了 三十四个大的篇章,122+篇文章,122+代码工程,130+代码分支。 涵盖:自定义注解、自定义包扫描类、自定义协定、申请与响应协定的封装、服务提供者、服务消费者、注册核心、负载平衡与增强型负载平衡、序列化与反序列化、动静代理、反射机制、心跳机制、重试机制、整合Spring、整合SpringBoot、整合Docker、整合SpringCloud Alibaba、后果缓存、路由管制、提早连贯、并发管制、流控剖析、连贯管制、SPI扩大连贯淘汰策略、数据缓冲、服务容错、服务限流、基于SPI扩大限流策略、超出限流规定、服务熔断、基于SPI扩大熔断策略、异样监控等篇章。 RPC框架采纳微内核、插件化的架构设计,会波及大量的SPI扩大点,供小伙伴们依照本身理论场景扩大对应的性能,波及到的核心技术点如下图所示。 退出冰河技术常识星球可浏览残缺专栏文章和获取残缺RPC框架源码,后续冰河会为专栏录制对应的视频,整体专栏如下所示。 文章试读地址:https://binghe.gitcode.host站点下的我的项目实战菜单下。 好了,明天就到这儿吧,我是冰河,咱们下期见~~

May 4, 2023 · 1 min · jiezi