首页 文章 精选 留言 我的

精选列表

搜索[风之力散热],共4960篇文章
优秀的个人博客,低调大师

openLooKeng新下推框架助您一臂之力

openLooKeng执行计划优化简介 在讲述下推框架之前,我们先来简单介绍一下openLooKeng执行计划优化的大致流程。 如上图所示,接收到用户SQL语句之后,SQL被转换成一个Abstract syntax tree (AST)树。AST树再被转换成逻辑执行计划树。然后,也就是执行计划优化过程中最重要的一步,使用规则(Rule)或者优化器(Optimizers)进行执行计划优化,每一个PlanOptimizer可以操作一个子执行计划树,PlanOptimizer基于统计或者经验,用一个更优的子执行计划替换当前的子树,达到优化的目的。PlanOptimizers通常是长期的经验累积得出来的一些优化规则,比如谓词下推、join reorder等等。PlanOptimizers可以存储一些物理执行信息在ConnectorHandle中。新下推框架则工作在这一层。 得到最优的执行计划之后,逻辑执行计划被转换成物理执行计划,然后被分片,分割成按照stage执行的一个个子树,最终调度到worker上执行。 PrestoSql下推方案介绍 最初,openLooKeng是从PrestoSql演进而来,在其基础上增加了很多功能特性,以及大量的性能优化。在讲述openLooKeng的新下推框架之前,先大概介绍其原下推方案。 根据社区的讨论,PrestoSql原下推框架有一些目标: 1)使用现有的Rule或Optimizer的框架,而且不是使用基于visitor模式的PlanOptimizers来实现下推,同时能够让connector提供转换rules来实现下推; 2)并不是建立一个原生的机制来支持所有操作的下推。 先来看看prestoSql的执行过程: 1)首先,引入一些列的下推规则,每一个规则负责下推相应的操作到TableScan操作中,比如PushFilterIntoConnector, PushProjectionIntoConnector, PushAggregationIntoConnector等等; 2)上述的这些rules通过指定的metadata调用与connectors交互,如果connector支持这个操作下推,操作则被下推到TableScan操作,同时在connectorTableHadle中记录相关信息。 下面以PushFilterIntoConnector为例说明。 在上述的例子中,假设filter中有两个过滤条件,一个是like,一个是f函数,其中connector能处理like表达式。 PushFilterIntoConnector会调用 Metadata.pushFilter,实际上是调用connector的pushFilter函数,这个函数会返回一个新的tableHandle,新的tableHandle中记录了like表达式的相关信息,同时返回一个remaining filter,即connector不能处理的表达式。最终,PushFilterIntoConnector就把原来的执行计划(上图中第一个框)转换成一个新的执行计划(上图中最后一个框)。 上述的基于Rule的下推方案存在以下的几个问题: 1)不能JoinNode,WindowNode等Nodes的下推,特别是 join的情况,join node不仅仅需要visit当前的join node,还需要visit他的左右节点,同时,还需要保存join的上下文信息,基于rule的下推方案难以处理这种情况; 2)下推逻辑复杂,下推上下文信息无法保存,对于Join的情况,join的下推信息不知道存储在哪。 3) 基于上述原因,当前的下推方案不能把sql语句下推到数据源操作中,这样对于那些执行速度相当快的数据源就不能充分发挥数据源本身的能力,所以引入了新的下推框架。 openLooKeng新的下推框架 思想 openLooKeng新下推框架的主要思想是把执行计划子树暴露给connector,让connector提供PlanOptimizers(基于visitor模式的)给执行优化引擎,这样可以让connector引入任意的优化。 为了防止一个connector的PlanOptimizers修改其他connector的执行计划子树,openLooKeng对于暴露给Connector的PlanNode做了两个限制: 1)暴露出来的PlanNodes须移动到presto-spi模块; 2)仅仅暴露属于connector的子执行计划树给相应的connector。如下图所示,左子树只会暴露给Hive Connector,右子树只会暴露给Mysql Connector。然后会应用他们各自的PlanOptimizers。 实现 openLooKeng的下推框架如上图所示,新下推框架的工作原理很简单,主要分为两步: 1)Connector在启动的时候会告诉执行优化引擎其提供的ConnectorPlanOptimizer,如下图的HiveFpuPushdownOptimizer,其需要实现上图的optimize接口,optimize函数以子执行计划为入口,返回优化后的执行计划; 2)在执行优化引擎中引入ApplyConnectorOptimization优化器, 该Optimizer会把根据子执行计划所在的connector,调用其connectorPlanOptimizer。如下图所示,经过HiveFpuPushdownOptimizer优化之后,Aggregation和Filter操作都下推到了数据源中。 修改 新框架特性PR链接为 https://gitee.com/openlookeng/hetu-core/pulls/633, 主要做了如下修改: 移动PlanNodes到presto-spi模块 修改PlanNode和Assignments中的Expression为RowExpression(下一节描述) 添加TranslateExpressions 和 ApplyConnectorOptimization Optimizer 修改已经存在的Rules和Optimizers 为connector添加ConnectorPlanOptimizer Expression-to-RowExpression 在数据库或者查询系统中,为了更好的隔离,AST树和IR树是隔离,他们使用的数据结构也不一样,这也就是presto社区讨论的分离AST(Node)和IR(PlanNode)。具体就是指把AST树种的Expression转换成PlanNode中的RowExpression。当前AST和PlanNode在混用Expression,不能做到很好的隔离。rker上执行。 当前一个执行计划的生命周期如下: building AST building raw plan plan optimization plan sanity check plan cost computation building subplans distributing subplan (over the wire) compiling subplan locally 当前,Expression到RowExpression的转换发生在第8步。我们把转换这个操作移到了第3步。之所以没有把没有把转换移到第二步,是因为涉及的面太广了,修改量太大了。 Example 演示 首先,在演示系统中配置了三个catalog,他们都指向同一个数据源,不过下推的设置不一样,mysql2不下推,mysql1部分下推(join不下推),mysql全下推。 不下推的情况 部分下推的情况,在这个例子中,filter下推了 全部下推情况 如何贡献 下面简单介绍一下开发者如何适配新的下推框架,即在新增的connector中,如何添加connectorPlanOptimizer。主要步骤如下: 第一:在XXXConnector中复写下面的函数 第二:实现XXXPlanOptimizerProvider 第三:在XXXConnector中实现PlanOptimizer 第四:实现PlanOptimizer里面的optimize函数,主要是实现一个visitor去visit执行计划树 第五:实现Visitor,用来生成下推的语句,同时修改执行计划树 第六:实现XXXQueryGenerator,在XXXQueryGenerator中实现一个visitor用来把下推的信息记录到XXXQueryGeneratorContext,如果存在节点可以下推,则生成对应的sql 详细的实现可以参考openLooKeng的baseJdbc的实现,实现了JDBC数据源的下推。 以上便是openLooKeng开发工程师罗旦带来的分享。 直播视频回顾:https://www.bilibili.com/video/BV1of4y1p7sc 活动官网:https://summer.iscas.ac.cn/ 学生指南:https://summer.iscas.ac.cn/help/student/ 任务详情:https://summer.iscas.ac.cn/#/org/orgdetail/openlookeng openLooKeng是一款开源的高性能数据虚拟化引擎,提供统一SQL接口,具备跨数据源/数据中心分析能力,为大数据用户提供极简的数据分析体验。 openLooKeng开源社区官方网站: https://openlookeng.io/zh-cn/ openLooKeng代码仓地址: http://gitee.com/openlookeng

优秀的个人博客,低调大师

业务上云,浪潮存储为阜阳公安助一臂之力

说起阜阳市公安局(以下简称“阜阳公安”),很多人可能表示没特别关注过,不过说起近期流行的《防骗拍手歌》,很多网友都表示看过好多次,当平时身穿警服、表情严肃的警员们跳起广场舞,把数十种防骗方法以Rap的形式表现出来,让不少网友眼前一亮。这首阜阳公安精心制作的安全防范宣传MV广受好评,目前微信、微博点击量达到十万多次,非常火热。 可以说,阜阳公安为维护社会的稳定安全真是花了不少心思。其实在下一代数据中心建设上,阜阳公安也是毫不含糊的。采用浪潮AS8000数据整合解决方案,阜阳公安率先开启了公安上云的业务升级之旅,用融合、可靠、易管理的IT系统更好的守护民众安全。 业务上云,阜阳公安IT系统转型在即 随着云计算、大数据的快速发展,公安作为政府的重要职能部门,对数据中心建设提出了新的要求。根据公安部、省厅对公安科技信息化发展部署要求,下一代的公安数据中心要以云平台为核心技术,增强数据中心的运维安全管理,建成高科技、高可用的新一代数据中心。 对于阜阳公安来说,随着城市视频监控系统、警务综合平台、综合查询系统建设、GPS巡逻车管理、有线无线综合调度、实时图像监控等新应用的推广,阜阳公安之前的IT系统面临数据迁移、业务连续性、数据效率提升等方面的挑战,已不能适应云数据中心需求: 阜阳公安启动IT转型 首先,数据可靠性面临挑战。阜阳公安现有的IT应用,包括警用地理平台、城市视频监控系统、警务综合平台等,大多运行在服务器本地硬盘,这样不仅扩展性受到限制,安全问题也日益加剧,很可能出现业务集体宕机的风险,因此急需将应用数据迁移到可靠性更高的存储设备中。 其次, 数据效率需要提升。阜阳公安的业务上云之后,不仅原有的业务访问会更加频繁,而且新业务也会层出不穷,这就需要存储基础设施提供数据性能保障,支持业务敏捷、高效运行。 最后,业务连续性的挑战。对于云数据中心来说,系统的健壮性尤为重要。在本次阜阳公安数据整合和业务上云的过程中,存储需满足未来数据中心的容灾需求。 浪潮一体化方案,与阜阳公安IT需求“丝丝入扣” 浪潮针对公安业务特点,专门阜阳公安设计了基于浪潮存储虚拟化系统AS8000、企业级磁盘阵列AS510H和高端8路服务器的公安云基础架构方案,在大大提升平台数据整合能力的同时也极大的提升了业务系统的安全性。 浪潮AS8000 其中,新增1台高端8路服务器TS860设备与原有虚拟化服务器组成计算资源池,为现有及以后新上业务系统提供计算资源;新增两台AS8000存储虚拟化网关做双机,将底层两台核心存储进行存储虚拟化,为各种公安应用提供数据资源池,通过这一方案,阜阳公安的数据可用性、数据提速、业务连续性的问题都可一一解决。 其一,运用浪潮AS8000解决方案,可以通过其存储外部虚拟化功能将两台核心存储AS510H虚拟化,由AS8000进行统一管理。接下来,通过vmware虚机在线迁移功能,将原有运行在服务器本地硬盘上的数据迁移到后端的专业存储设备中。AS510H采用专业的存储架构和DDP随机深条带技术,可实现业务数据的高可靠存储和高性能访问,给阜阳公安业务数据加了一道“安全锁”。 其二,浪潮存储AS8000先进的系统架存储架构设计帮助管理更加简单便捷,丰富的扩展接口能够满足不同业务需求,充分保证了数据的敏捷性、可靠性和扩展性。同时,其自动精简配置等高级功能可进一步提升系统工作效率。考虑到今后的业务扩展需求,AS8000存储资源池可以无缝的接入新的存储设备,并且随着容量的增加,数据存储性能也将呈现线性增加的趋势,满足阜阳公安的性能和容量增长需求。 其三,AS8000支持基于IP、FC的同步或异步数据复制,利用2台AS8000,可实现本地或远程的数据容灾,提供数据级、应用级容灾方案;支持多站点间的数据同步、异步传输,建立大规模的全局数据容灾系统,实现高规格的数据保护。 加快阜阳公安的上云步伐 通过浪潮服务器和存储的一体化解决方案,阜阳公安实现了原有业务系统从服务器到存储的平滑迁移,通过存储虚拟化极大提高了业务系统的稳定性、可靠性。AS8000不仅帮助云主机的数据访问性能得到提升,为阜阳公安提供了更加便捷的数据中心管理方式,也为下一步大数据分析、业务创新打下了坚实的数据基础。 通过新一代IT系统,阜阳公安对内可提高业务水平、降低运营成本,对外则增强了利用信息化技术打击犯罪、维护社会稳定的能力,为社会民众和企事业单位提供更加优质高效的服务。 作者:佚名 来源:51CTO

优秀的个人博客,低调大师

CB Insights 报告:安全公司正在借 AI 之力,预测、防御并抵抗网络攻击

为了提升防御系统的安全性并打造新一代网络护盾,各大网络安全公司都开始瞄上了新兴的人工智能技术。雷锋网(公众号:雷锋网)对 CB Insights 近日所做的研究报告做了编译,未经许可不得转载。 而推动人工智能与网络安全相结合的共有两大问题: 首先,随着网络攻击的次数和严重性不断增加,市场对于网络安全专家的需求大幅提高,但该领域从业者数量却远远不能满足市场需求。 其次,一些此前不为人所知的网络攻击类型,如“零日攻击”正在逐步增多。 这些网络安全市场的新情况让自动网络安全防御系统的呼声越来越高,可利用机器学习或其他技术来识别网络活动善意与否的软件成了市场的新宠。 通过市场分析公司 CB Insights的数据,我们可以追溯人工智能与网络安全结合的源头,下面就和雷锋网一起来盘点吧。 网络安全、AI 和机器学习的时代已经到来 为了更清晰地解释

优秀的个人博客,低调大师

Facebook最新开源工具——不费吹灰之力识别图片中的对象

联合编译:高斐,Blake 雷锋网注:Piotr Dollar于2014年成为FAIR研究科学家,主要研究领域为计算机视觉和机器学习,曾在MSR任职三年,并建立Anchovi Labs(于2012年被Dropbox收购)。2011年在加州理工大学获得计算机视觉实验室博士后学位,2007年于UCSD获得博士学位。在计算机视觉和机器学习方面已发表的最新论文有:Learning to Refine Object Segments (2016), A MultiPath Network for Object Detection (2016), Unsupervised Learning of Edges (2016), Metric Learning with Adaptive Density Discrimination (2016)等

优秀的个人博客,低调大师

在奔向5G的道路上 高通用了哪些洪荒之力

移动网络快速发展的年代,在4G和4G+技术为生活带来了翻天覆地的变化之后,5G这个并不陌生的名词成为一个用户特别关心的话题,未来5G会是什么样?又会给我们带来什么样的变化?本次高通就通过一系列的技术告诉你5G已正在路上。 高通公司高级研发总监侯纪磊博士 近日,高通在北京举办了5G主题沙龙,向外界介绍了高通在5G方面一些关键技术的最新动态。会上,高通公司知名Q博士——高通公司高级研发总监、中国区研发中心负责人侯纪磊博士莅临现场,就Qualcomm在5G技术上最新的动态,产业界如何认知5G技术,以及Qualcomm最新的技术突破和产业合作进行交流。 高通对于5G作了4个关键词的汇总 高通对于5G作了4个关键词的汇总,首先是千兆级LTE,其代表着标准和技术上的里程碑。今年Qualcomm发布了X16千兆级LTE调制解调器的通信模组,代表着高通在实现千兆级商用,引领高速LTE发展。 第二个是5GNR(新空口)。这是全球移动通信的标准制定权威组织3GPP制定的名词,针对5G的NR标准进行的制定,4G阶段叫做LTE,5G阶段就叫做NR。 第三个名词是OFDM,全称是正交频分复用,能够实现信息传输之间没有干扰,是一种多载波的传输技术。也是实现正化复杂度最低的方式。 最后一个是毫米波,5G和4G相比一个很大的突破,更高的频段往往具有更大带宽,怎样把更大的带宽利用好,实际上是毫米波的优势。 1980年的1G起步,2010年正式步入4G时代,到如今正在向着5G迈进。高通提到了他们的愿景,即通过智能连接平台变革世界,实现万物互联。 1980年的1G起步 2010年正式步入4G时代 过去,网络将人和人之间、人和互联网之间进行连接,而在未来三十年,中国甚至是全球,工业物联网、智能家居、智慧城市等很多新概念不断涌现,万物互联的概念成为支柱。高通希望能在万物互联方面,从底层设计到芯片再到软件层面,都能够起对业界的产生积极影响。 高通认为5G是具有统一连接架构、统一设计的平台。统一性主要表现在几个重要的方面:一是表现在跨频段和跨频谱类型的统一性,从频段上会利用到从1GHz以下到毫米波;二是多元化的服务和部署,体现在宏基站、小基站、终端和终端之间的直连、多波和广播等各种模式:三是针对多样化的服务,高通列举出三种重要的服务范围:增强型移动宽带、关键业务型服务和海量物联网。比如自动驾驶汽车,汽车通过5G获取信息并主动做出判断,车和车之间的通信,具备的快速的反应能力 千兆级LTE代表着标准和技术上的里程碑 5G增强型移动宽带包括了极致吞吐量,起速度相比4G有一个跨越式的提升、超低延时、一致的完美体验。而这些都为目前一些尚在计划,并未普及的服务应用打下了基础,例如8K视频压缩、以及火热的VR等,当你看现场足球比赛,想要体验生临其境的体验,5G就成了至关重要的一环。 高通引领全球5G之路 移动通信经过历代的发展,从开始的2G、3G、4G到未来的5G,在此过程中,不同的”G”有它自己的标准,而每隔10年左右,通信技术就会有一个跨越式的发展。5G出来之后,4G会是什么样的发展状况呢?高通认为LTE的演进应该是5G平台一个重要的组成部分,它主要包含两个概念:首先从技术演进上,LTE会跟5G齐头并进,即它会按照自有的模式继续向前发展;其次是在5G初期组网和将来整个网络向5G平滑过渡的阶段。 高通深耕5G研发多年 作为无线半导体领军企业,高通在这方面如何部署呢?首先高通是一家无线OFDM技术和芯片半导体公司,在这方面高通可以起到很好的产业领导者的作用。其二,高通拥有先进的原型机的端到端的系统方法,这对于厂商运营商进行联合商演,以及推动产业发展都至关重要。 而其实,早在今年年初的世界移动大会(MWC)上,高通就曾展示了28GHz 移动化毫米波原型。而年中的上海MWC上,高通还联合中国移动在今年的一起发布了高速率、低时延的6GHz 以下5G NR原型系统和试验平台。在5G上高通已经有多年的投入,并不只是体现在最终芯片商品化的结果,而是对整个产业界的推动:包括端到端原型的设计,厂家和运营商间联合的演示和试验。这些努力不光推动了5G标准化过程,还推动了运营商商业的部署。所以在贯穿整个产业链的过程中,高通起到了极其重要的作用。 在5G正式部署前,高通已经通过原型机的方法、自身功能和性能的验证,和第三方厂家进行联调、试验、和演示等方式,进行了大量的准备和部署工作。目前5G标准化还是在研究项目阶段,工作阶段会从明年开始,大概在2018年之前完成,预计在2019年下半年商用。可以确定的是5G的商用到来,会为我们的生活工作各个方面都将注入新的能量。 本文转自d1net(转载)

优秀的个人博客,低调大师

大数据能成为帮助运动员避免伤病的“洪荒之力”吗

Intetix Foundation(英明泰思基金会)由从事数据科学、非营利组织和公共政策研究的中国学者发起成立,致力于通过数据科学改善人类社会和自然环境。通过联络、动员中美最顶尖的数据科学家和社会科学家,以及分布在全球的志愿者,我们创造性地践行着我们的使命:为美好生活洞见数据价值。 原文:http://techstory.in/rio-olympics-2016-technology-sports/ 原作者:Muqbil Ahmar(技术传播者、狂热的博客爱好者) 在一个像2016里约奥运这样的运动盛会里,运动员多次受伤的几率是非常高的。有相当一部分运动员会因腿部骨折、锁骨骨折、或者背部和颈部受伤等伤病结束他们的奥运征程。亚美尼亚举重运动员Andranik Karapetyan在里约奥运比赛中为了争夺一枚铜牌,在尝试举起195kg重量时手肘脱臼而被送往医院。在巨大的痛苦中,他不得不离开了运动场,也使支持他的观众们感到万分难过。Andranik Karapetyan受伤退赛不仅是个人运动生涯的损失,也使他们的团队失去一位明星运动员,这样的损失难以估量。如果运动员的伤病比较严重,他的体育赞助商也会受到一定程度上的经济损失。随着体育赛事的竞争日益激烈,运动员受伤机率更是急剧上升。据最近的一项研究显示,受伤的运动员会因伤病损失20~25%的薪水,而且有10%的伤病会常年伴随运动员。其中甚至有一些运动员才刚崭露头角就结束了运动生涯。 Mushtaque Ahmad是巴特纳一个很有前途的投球手,曾在2009年代表他的学校出战。他迅速地成为了巴特纳的英雄。人们常将他与Ian Botham和Imran Khan这些优秀的运动员相比较。但是在2009年他在代表比哈尔邦出战的时候,不幸膝盖受伤,这无疑是一场灾难。 相关阅读: The Mind Behind The Football Mind Talks To Techstory About Growing A Sports Startup In India ! 为了确保运动员的安全和竞技状态,一些最新的技术,如大数据、分析学和物联网,被应用于里约奥运会,以帮助运动员避免大多数的伤害。因此这些技术在里约的优先名单上排名是很高的。 2016里约奥运是至今数据驱动最多的竞赛比赛中的每一个方面都作为数据被收集起来。传感器、心率监视器和GPS追踪器等是在比赛中表现最突出的数据技术。有了这些改进后,现代技术将在竞技体育中发挥更大的作用。 “在各个行业和体育领域的大数据分析的应用是一个单独的领域,它的适用性在持续增长。这将对里约奥运会期间运动员的健康保证起着至关重要的作用。”Shashank Dixit说。(Shashank Dixit,Deskera的CEO。Deskera是一家基于云技术的大数据公司。) 相关消息: Palo Alto基于分支度量的系列融资达到3500万美元! Kitman Labs是众多与奥运会合作的大数据企业之一,它与多个奥运团队合作来避免运动损伤。这家体育和数据技术公司采用了独特的运动员优化系统。该系统可以让球队的执行教练和训练师了解运动员的身心在高竞争水平的训练压力下会做出何种反馈。任何负面反应的迹象都会使工作人员调整运动员的训练和恢复计划,从而主动地避免受伤。首席执行官Stephen Smith说:“新技术可以通过数据和分析来避免受伤。” 相关阅读: Inspired by athlete, Gamatics platform brings sports community together to share ideas! 利用大数据监测运动员健康 运动员会穿上装备有传感器的背心来监测身体重要指标。同时还会收集其他来源的可操作数据,比如视频、文本还有历史结构和非结构数据等。我们将对这些数据进行实时分析并提出理疗方案来对运动员进行健康管理。 一般来说,训练疲劳、水分、气候、运动员年龄和技巧等等都是造成运动员伤病的因素。因此我们也从各种渠道(如比赛、人口统计、训练、身体健康测试和地理位置等)收集编辑数据。 我们设计了一个数学公式系统来预测发生受伤的风险。这个系统考虑到了运动员可能遭遇的各种伤病,并为教练和理疗师做出简单地演示。该系统还给出了可能导致受伤的原因,这样运动员就能够采取适当的纠正措施来避免伤病。这种仿真能力帮助教练和理疗师更好的理解运动员的问题所在。 我们利用大数据工具建立了伤病目录。它可以协助管理伤病和治疗过程,并将每一个运动员的数据记录在案以帮助理疗师监测运动员关键的健康数据。这增强了运动员的治疗效率。运动监测器可以帮助人们及早发现运动员表现的变化,使其尽可能的健康并预防伤病。大数据则使运动监测器的健康数据更加可视化,并能显示健康趋势和伤病风险的增加。大数据通过分析大量的历史数据和实时数据来预测、追踪和计算伤病风险,帮助人们及时采取干预措施。 相关阅读: Why Sports Startups Still Remain A Forbidden Fruit For Investors In India? 伤病可能会摧毁一个运动员的职业生涯。许多伤病都不是意外,如果可以早发现的话则完全可以避免。大数据技术可以发现风险,运动员可以定制健康和训练计划来避免伤病。它的仿真推测模式结合数学预测模型可以预测伤病出现的概率。它可以分析的伤病因素没有限制,分析模式来源于相关数据。这一功能可以帮助理疗师分析是什么问题或因素增加了运动员的伤病风险。每一个运动员都可以生成自定义风险概况并修正个人健康干预项目。 悉尼大学的板球运动生物力学研究院和运动分析与动力学建模专家 Eduard Rene Ferdinands博士在一篇新闻文章中说“这是全方位的分析。我们立足于躯体运动学并发展出了包括伤病风险区域的身体性能概况。然后向运动员评估其伤病史,最后决定是否有必要采取技术干预。” 有了大数据和数据分析学这样的新兴技术,里约奥运的参赛者们就不必因为伤病而在追梦路上将板凳坐穿了。 本文转自d1net(转载)

优秀的个人博客,低调大师

总有一两风 | gpress 1.0.4 发布

Web3 内容平台,Hertz + Go template + FTS5 全文检索,支持以太坊和百度超级链,兼容 Hugo、WordPress 生态,使用 Wasm 扩展插件,只需 200M 内存 作为静态站点:gpress 生成的静态文件和 Hugo 一致,也可以简单认为 gpress 是 Hugo 的后台管理,兼容 Hugo 主题生态,已迁移多款 Hugo 主题:even、doks、book、geekdoc......作为动态站点:gpress 功能简单,只有 7 个菜单,5 张表,5000 行代码,使用 SQLite, 一键启动,只需 200M 内存,支持全文检索。兼容 WordPress 主题生态,已迁移多款 WordPress 主题:generatepress、astra......作为 Web3:gpress 已支持以太坊和百度超级链账户体系,会基于 Wasm 持续迭代去中心功能,让数据自由一点点......作为后浪:相对于 Hugo、WordPress 等优秀的内容平台,gpress 还有很多不足,功能简单而又稚嫩......帮助文档:点击查看帮助文档 个人博客jiagou.com使用 gpress 搭建,搜索和后台管理是动态,其他是静态页面. 更新: 1.统一类型转换方法 convertType, 方便扩展2.感谢 @lifj22 的issue,导航模板category开头,内容模板content开头3. status字段增加置顶(2),原私密(2)修改为私密(3) 4. 完善文档,注释

优秀的个人博客,低调大师

重试装饰器助你一臂之力

云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! “胶水语言”,顾名思义,意味着这种语言有助于将连接系统,确保数据能以所需结构和格式,由A转到B。Python就是知名度最高的一种胶水语言。笔者曾用Python构建了无数的ETL脚本(数据提取、转换和加载)。 这些脚本基本上都按照相同规则运行。从某处提取数据,数据转化,然后运行最后一步——将数据上传到某个地方,但也可能是有条件的删除。 越来越多的传统公司的基础设施正在被上传到云端,越来越多的公司正在向微服务方式转型。这也意味着一种情况出现的可能大大增加:必须从某个地方提取数据,或从非本地计算机处写入数据。 小规模的操作很少出问题。如果某些提取或者回写失败,通常会被注意到,且错误能被纠正。 但如果操作规模更大,并存在成百上千的可能事项时,就会出现暂时中断的网络连接、过多的并发写入、暂时没有相应的源系统或者其他莫名其妙的问题,而没人想被这些事情搞砸。而笔者发现了一个非常简单的重试装饰器,它能解决这些问题。 笔者在大多数项目中都会在某个功能模块中使用重试装饰器,可谓是“大救星”。快来看看吧! 装饰器 函数是一级对象 在Python中,函数是一级对象。函数和其他任何对象一样。这一事实意味着函数可以动态创建、传递给函数本身,甚至可以更改。下面这个示例尽管很傻但确是事实: def my_function(x): print(x)IN: my_function(2) OUT: 2IN: my_function.yolo = you live only once print(my_function.yolo) OUT: you live only once 修饰语法 为了方便开发人员,Python提供了一种特殊的语法。还可以按如下方式操作: @convert_to_numeric def first_func(x): return x**2 以上的语法等同于: def first_func(x): return x**2first_func =convert_to_numeric(first_func) 这种语法使实际运行情况更清楚,尤其是在使用多个装饰器的情况下。 修饰函数 可以用另一个函数包装一个函数来满足特定需求,这一点很有用。例如,可以确保函数在被调用时向某个日志端点报告,打印出参数,实现类型检查、预处理或后处理,以列出一些可能性。以下为一个简单示例: def first_func(x): return x**2 def second_func(x): return x - 2 当用字符串 2 调用这两个函数时,其都会无法工作。可在其中使用一个类型转换函数,并且用其修饰first_func 和 second_func 。 def convert_to_numeric(func): # define a function within the outerfunction def new_func(x): return func(float(x)) # return the newly defined function return new_func 这个convert_to_numeric 包装函数需要用一个函数作为参数,并返回另一个函数。现在,虽然先前无法工作,但是如果包装了函数,然后用一个字符串号调用,所有的函数都能按设置的使用。 IN: new_fist_func = convert_to_numeric(first_func)############################### convert_to_numeric returns this function: def new_func(x): return first_func(float(x)) ###############################new_fist_func( 2 ) OUT: 4.0IN: convert_to_numeric(second_func)( 2 ) OUT: 0 这是为什么? convert_to_numeric接受一个函数(A)作为参数并返回一个新函数(B)。新函数(B)在被调用时调用函数(A),但它不是用传递的参数x调用函数(A),而是用float(x)调用函数(A),从而解决了以前的TypeError 问题。 重试! 基本知识已经介绍完了,现在讲一讲笔者最喜欢的retry装饰器: 包装已经包装的函数。是一些初始阶段的内容,这并不复杂! 来一步一步了解代码: 1.最外层函数retry:这将参数化修饰器,即要处理的异常是什么,尝试的频率是多少,两次尝试之间等待的时间是多长,以及指数退避因子是什么(即每次失败时,用什么数字乘以等待时间)。 2.retry_decorator:这是参数化的装饰器,由retry函数返回。用@wraps来修饰retry_decorator中的函数。严格来讲,这在功能上是不必要的。这个包装器更新了包装函数的 name 和 doc (如果不这样做,函数的 name 始终是 func_with_retries)。 3.func_with_retries应用重试逻辑。此函数包装了try-except语句块中的函数调用,并实现指数退避等待和一些日志记录。 用途: 函数用重试装饰器修饰,在异常上最多重试四次。或者更具体一点: 用在TimeoutError上的重试装饰的函数最多重试两次。 结果: 调用修饰函数,并遇到错误,将会导致如下结果: 调用的函数在ConnectionRefusedError上失败两次,在ConnectionResetError上失败一次,在第四次尝试时成功。这里有良好的日志记录,打印了args和kwargs以及函数名,使调试和修复问题变得轻而易举(如果重试次数用完错误依然存在)。 了解装饰器如何在Python中工作,以及如何用一个简单的重试装饰器来修饰关键任务函数,这非常有必要的。它是面对不确定情况时的“大救星”! 【云栖号在线课堂】每天都有产品技术专家分享!课程地址:https://yqh.aliyun.com/zhibo 立即加入社群,与专家面对面,及时了解课程最新动态!【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK 原文发布时间:2020-04-20本文作者:读芯术本文来自:“读芯术公众号”,了解相关信息可以关注“读芯术”

优秀的个人博客,低调大师

openKylin 亮相第十四届智博会,以开源之力赋能数字经济

2024年9月6日,2024世界数字经济大会暨第十四届智慧城市与智能经济博览会(以下简称“智博会”)在宁波开幕。本届智博会围绕“数字赋能新型工业化”这一全新主题,以“1+1+4”模式策划举办开幕、展览展示和论坛研讨、产数合作、赛事赋能、开放互动等4大板块系列专项活动,超300家企业参展,汇聚了来自全国乃至全球的顶尖科技企业、专家学者及行业精英,共同探索“数字赋能”的无限可能。 openKylin社区秘书长余杰受邀参与大会开源生态体系建设分论坛,带来《麒麟开源生态建设实践及体会》主题演讲,围绕开源操作系统发展历程、openKylin社区及生态建设实践,介绍openKylin社区在版本构建、创新发展、技术生态、产业生态以及开发者和用户生态等领域的开源实践成果,并分享社区在开源技术研发、开源社区建设、开源人才培养等方面的经验体会。 此外,openKylin社区参展本次大会展区,带来社区开源技术、应用实践等最新社区成果展示,吸引了众多参展人员驻足交流,共同见证开源技术的蓬勃生机。 openKylin社区成立至今,已经聚集6800多位开发者,吸引来自操作系统、数据库、办公软件、CPU、GPU、整机、人工智能优势企业及高等院校等不同领域的550多家单位会员加入,并成立110多个SIG组开展技术创新。在合作伙伴与开发者共同推动下,openKylin社区正在以较快的速度稳步发展,截至目前已发布8个系统版本,实现了从系统效能、功能体验、生态融合、应用开发等方面的全栈技术创新,将为围绕系统上下游的软硬件生态融合提供有力支撑。 未来,openKylin社区将继续聚焦开源操作系统根技术,发挥社区平台支撑作用,聚合产、学、研、用及国内外开源力量,加速系统创新迭代,共同推动操作系统技术创新发展和生态繁荣建设。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册