首页 文章 精选 留言 我的

精选列表

搜索[HTTP/3],共10000篇文章
优秀的个人博客,低调大师

《Android的设计与实现:卷I》——第3章 3.4.5解析Action

3.4.5 解析Action 1.parse_action 解析Action首先从parse_action函数开始,代码如下:static void parse_action(struct parse_state state, int nargs, charargs){ struct action act; ……//省略错误处理内容 act = calloc(1, sizeof(act)); act->name = args[1]; list_init(&act->commands); /将Action的指针节点放入action_list中/ list_add_tail(&action_list, &act->alist); return act;}从parse_action函数的代码可以看出,解析Action的过程与解析Service的过程十分相似。首先给新创建的Action分配存储空间,然后将Action的指针节点放入一个action_list列表中。这里又涉及两个重要的数据类型:action结构体和action_list链表。action_list与service_list都是由list_declare宏声明,即static list_declare(action_list)。action结构体定义在/system/core/init/init.h中,代码如下:struct action { /这个指针节点所在的链表存储了所有Action的指针节点 / struct listnode alist; /这个指针节点所在的链表存储了所有即将执行的Action的指针节点/ struct listnode qlist; /这个指针节点所在的链表存储了所有要触发的Action的指针节点/ struct listnode tlist; unsigned hash; const charname; /Action对应的Command/ struct listnode commands; struct command current;}; 2.parse_line_action 熟悉了Action的存储形式,接着分析Action的解析过程。定位到parse_line_action函数,该函数位于init_parser.c中,代码如下:static void parse_line_action(struct parse_state state, int nargs, charargs){ struct command cmd; /通过state结构体得到当前Action的引用/ struct action *act = state->context; int (func)(int nargs, charargs); int kw, n; /依然是根据关键字匹配,不过这次匹配的是Command / kw = lookup_keyword(args[0]); n = kw_nargs(kw); ……//省略错误处理内容 cmd = malloc(sizeof(cmd) + sizeof(char) nargs); cmd->func = kw_func(kw);//获取Command对应的指令函数 cmd->nargs = nargs; memcpy(cmd->args, args, sizeof(char)nargs); /将Command加入Action的Command列表/ list_add_tail(&act->commands, &cmd->clist); parse_line_action函数的执行过程很清晰,要比parse_line_service简单很多。这里涉及一个重要的数据类型struct command。command结构体定义在/system/core/init/init.h中,代码如下:struct command{ / list of commands in an action / struct listnode clist; / command对应的执行函数/ int (func)(int nargs, charargs); int nargs; char args[1];};至此,init.rc的解析过程便告一段落。接下来开始分析Action和Service的执行阶段。

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

Tensorflow 全网最全学习资料汇总之框架平台的综合对比【3】

作为机器学习领域、尤其是 Python 生态圈最受欢迎的框架平台,TensorFlow 具有许多吸引开发者的优点。其中最显而易见的是谷歌的技术支持和完善的社区(庞大用户群)。这些都为 TensorFlow 的普及打下了基础。但是,开发者需要了解 Tensorflow 在技术上有哪些值得一提的优势,又有哪些不足,以便在处理特定任务时进行工具选择。而这些,必须要在与其他平台、框架的对比中才能凸显。顺便说一句老生常谈的话,没有万能的工具,只有在不同应用场景下最合适的选择。因此,雷锋网整理了介绍 Tensorflow、Caffe、Microsoft Cognitive Toolkit (CNTK)、MXnet、Torch 等平台框架,以及对它们做横向对比的文章,供读者按图索骥。 综合介绍 这部分的文章,对 TensorFlow 和其它主流深度

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

大数据的那些事(3):三驾马车之坑人的MapReduce

在Google的三驾马车里面,Google File System是永垂不朽的,也是基本上没有人去做什么进一步的研究的。 BigTable是看不懂的,读起来需要很多时间精力。 唯独MapReduce,是霓虹灯前面闪烁的星星,撕逼战斗的主角,众人追捧和喊打的对象。自从MapReduce这个词出来以后,不知道有多少篇论文发表出来,又不知道有多少口诛笔伐的文章。 我曾经在HANA篇里写过围绕MapReduce,Google和Michael StoneBraker等等database的元老之间的论战。欢迎大家先读读这篇八卦文。为了避免重复,这篇文章里,我就不再展开这部分的话题了。 作为论文来说MapReduce严格的来讲不能算作一篇论文,因为它讲述了两件不同的事情。其一是一个叫做MapReduce的编程模型。其二是大规模数据处理的体系架构的实现。 这篇论文将两者以某种方式混杂在一起来达到不可告人的目的,并且把这个体系吹得非常的牛,但是却并没有讨论一些Google内部造就知道的局限性,以我对某狗的某些表现来看,恐怕我的小人之心觉得有意为之的可能性比较大。 因此当智商比较低的Yahoo活雷锋抄袭MapReduce的时候弄出的Hadoop是不伦不类,这才有了后来Hadoop V2以及Yarn的引进。当然这是后话。 作为同样抄袭对象的微软就显得老道很多。微软内部支撑大数据分析的平台Cosmos是狠狠的抄袭了Google的File system却很大程度上摒弃了MapReduce这个框架。 我们先看看作为编程模型的MapReduce。所谓MapReduce的意思是任何的事情只要都严格遵循Map Shuffle Reduce三个阶段就好。 其中Shuffle是系统自己提供的而Map和Reduce则用户需要写代码。Map是一个per record的操作。 任何两个record之间都相互独立。Reduce是个per key的操作,相同key的所有record都在一起被同时操作,不同的key在不同的group下面,可以独立运行。 这就像是说我们有一把大砍刀,一个锤子。 世界上的万事万物都可以先砍几刀再锤几下,就能搞定。至于刀怎么砍,锤子怎么锤,那就算个人的手艺了。 从计算模型的角度来看,这个模型极其的粗糙。 所以现在连Google自己都不好意思继续鼓吹MapReduce了。从做数据库的人的角度来看这无非是一个select一个groupby,这些花样197x的时候在SystemR里都被玩过了。数据库领域玩这些花样无数遍。真看不出有任何值得鼓吹的道理。 因此,在计算模型的角度上来说,我觉得Google在很大程度上误导和夸大了MapReduce的实际适用范围,也可能是自己把自己也给忽悠了。 在Google内部MapReduce最大的应用是作为inverted index的build的平台。所谓inverted index是information retrieval里面一个重要的概念,简单的讲是从单词到包含单词的文本的一个索引。我们搜索internet,google需要爬虫把网页爬下来,然后建立出网页里面的单词到这个网页的索引。 这样我们输入关键字搜索的时候,对应的页面才能出来。也正因为是这样,所以Google的论文里面用了word count这个例子。下图是word count的MapReduce的一个示意图。 然而我们需要知道的是,Google后来公布的信息显示它的广告系统是一直运行在MySQL的cluster的,该做join的时候也是做join的。 MapReduce作为一个编程模型来说,显然不是万能的药。可是因为编程模型涉及的是世界观方法论的问题。 于是催生了无数篇论文,大致的套路都是我们怎么样用MapReduce去解决这个那个问题。这些论文催生了无数PhD,帮助很多老师申请到了很多的钱。 我觉得很大程度上都掉进了google的神话和这个编程模型的坑。 MapReduce这篇论文的另外一个方面是系统实现。我们可以把题目写成:如何用一堆廉价PC去稳定的实现超大规模的并行数据处理。 我想这无疑可以体现出这篇论文真正有意义的地方。的确,数据库的工业界和学术界都玩了几十年了,有哪个不是用高端的机器。 在MapReduce论文出来的那个时候,谁能处理1个PB的数据我给谁跪了。但是Google就能啊。我得意的笑我得意的笑。 所以Google以它十分牛逼的数据处理平台,去吹嘘那个没有什么价值的编程模型。而数据库的人以攻击Google十分不行的编程模型,却故意不去看Google那个十分强悍的数据处理平台。 这场冯京对马凉的比赛,我觉得毫无意义。 那么我们来看看为什么Google可以做到那么大规模的数据处理。 首先这个系统的第一条,很简单,所有的中间结果可以写入到一个稳定的,不因为单机的失败而不能工作的分布式海量文件系统。GFS的伟大可见一斑。没有GFS,玩你妹的MapReduce。没有一个database厂商做出过伟大的GFS,当然也就没办法做出这么牛叉的MapReduce了。 这个系统的第二条也很简单,能够对单个worker进行自动监视和retry。这一点就使得单个节点的失败不是问题,系统可以自动的进行管理。加上Google一直保持着绝不泄密的资源管理系统Borg。使得Google对于worker能够进行有效的管理。 Borg这个系统存在有10多年了,但是Google故意什么都不告诉大家,论文里也假装没有。我第一次听说是几个从Google出来的人在Twitter想重新搞这样一个东西。然而一直到以docker为代表的容器技术的出现,才使得大家知道google的Borg作为一个资源管理和虚拟化系统到底是怎么样做的。 而以docker为代表的容器技术的出现也使得Borg的优势不存在了。所以Google姗姗来迟的2015年终于发了篇论文。我想这也是Yahoo这个活雷锋没有抄好,而HadoopV2必须引入Yarn的很重要的原因。 解释这么多,其实是想说明几点,MapReduce作为编程模型,是一个很傻的模型。完全基于MapReduce的很多project都不太成功。 而这个计算模型最重要的是做inverted index build,这就使得Google长久以来宣扬的Join没意义的论调显得很作。另外随着F1的披露,大家知道Google的Ads系统实际上长期运行在MySQL上,这也从侧面反应了Google内部的一些情况和当初论文的高调宣扬之间的矛盾。 Google真正值得大家学习的是它怎么样实现了大规模数据并发的处理。这个东西说穿了,一是依赖于一个很牛的文件系统,二是有着很好的自动监控和重试机制。 而MapReduce这个编程模型又使得这两者的实现都简化了。然而其中很重要的资源管理系统Borg又在当初的论文里被彻底隐藏起来了。我想,随着各种信息的披露,我只能说一句,你妹的。 MapReduce给学术界掀起了一片灌水高潮,学术界自娱自乐的精神实在很值得敬佩。然而这个东西火得快,死的也快。所谓人怕出名猪怕撞。 本文作者:飞总 来源:51CTO

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

台积电上月营收创3年来单月最低

5月10日消息,据国外媒体报道,由于市场对苹果重要产品iPhone需求的下滑,台湾消费电子代工厂商台积电公布了2014年以来营收最低的月度财报。 台积电今天公布的月度财报显示,其4月份销售额至569亿新台币(约合19亿美元),环比33.8%,同比下滑14.9%,创下该公司33个月以来单月最低水平。台积电是苹果重要的芯片制造供应商,该公司上个月预计其季度销售额将低于分析师预期,这其中也有部分原因是受到台湾货币坚挺的不利影响,坚挺的新台币给岛内制造商增加了负担。 苹果本月份公布的报告显示其iPhone销量陷入令人吃惊的下滑,强调在2017年晚些时候推出的新一代iPhone中需要实现突破性的功能。苹果传统上每两年就要改变iPhone的外形,不过于去年9月份发布的iPhone 7却是例外,该款产品与其前一代相比具有类似的外形和功能。这可能会鼓励更多用户保持所用设备,直到新一代产品推出。 今年经过重新设计的10周年纪念版iPhone,据称配置的是全屏幕前端和先进的有机发光二极管(OLED)显示屏。 此外,台积电还正面临来自三星电子公司等企业芯片产品日益增强的竞争。尽管打败三星电子公司成为iPhone最大的芯片集制造商,但是台积电在Android设备的芯片市场并不占据领导地位,而全球大多数智能手机使用的Android平台。 今年前4个月,台积电总营收2907.9亿新台币,较去年同期增长7.6%。 台积电预计,2017年第二季度其综合营收环比增长8%至9%。台积电高级副总裁、首席财务官何丽梅表示,由于第二季度供应链库存管理和移动产品季节性因素,第二季度市场需求环比将会更加疲软。 台积电已经将其2017年全球代工业增长幅度预期从7%下调至5%,声称供应链库存上升。不过,台积电2017年销售额增长5%至10%的目标没有改变。 本文转自d1net(转载)

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

Q3安全报告显示DDoS攻击最高达623Gbps

随着Mirai僵尸网络的出现,再次引发了全球IT行业对于DDoS攻击的关注。根据最新发布的《2016年第三季度互联网发展状况安全报告》显示,第三季度的两次最大型DDoS攻击都是利用Mirai僵尸网络发动的,而且是目前发现基于物联网(IoT)设备的最大规模攻击,监测到的攻击流量分别创下623Gbps和555Gbps的新纪录。 第三季度两次最大型DDoS攻击最高达623Gbps 步入万物互联时代,由于物联网和其他网络连接设备都可被用来发动Web应用程序攻击和DDoS攻击,因此Mirai僵尸网络的出现已使得整个行业的担忧变得更加真实,同时也表明众多物联网设备制造商急需关注自身产品的安全性。 根据统计,与2015年第三季度相比,2016年第三季度DDoS攻击总量增加了71%。 其中,观测到超过100Gbps的攻击达19次,从下图可以看出,重点遭受攻击的对象是媒体和娱乐行业。 第三季度遭受超过100Gbps规模DDoS攻击的行业和日期 在第三季度,来自Akamai的研究人员发现相比其他几类洪流攻击,攻击者逐步减少了NTP反射式攻击方式的选择。获得的统计数据也显示,只依靠NTP反射的攻击平均规模约为700Mbps,明显低于2014年6月超过40Gbps的平均值。 据了解,在第三季度最常见的两种攻击向量分别是UDP分片式攻击和DNS反射式攻击,占所有向量的44%,比第二季度增长了4.5%。而不同于点击工具即可轻松发动的基础架构层攻击,应用程序层攻击由于技术门槛较高,占比也较低,仅占所有DDoS攻击的1.66%。 本文转自d1net(转载)

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

美国物联网投入3年后将达3570亿美元

IDC近日预测,美国的物联网投入将在2019年达到3570亿美元。2016年,美国的物联网投入预计为2320亿美元,这预示着在2015至2019年之间,美国物联网投入的年复合增长率将达到16.1%。目前来看,制造业、交通领域对物联网技术最为热衷。 IDC物联网研究经理Marcus Torchia说:“我们在很多行业都看到了显著机遇。” “例如,在制造和交通等高度仪表化的垂直行业,会使用大型数据集优化运营流程,并延长高投资资产的寿命。在医疗保健和消费等其他领域,物联网计划正被用于提供生活质量的改善。”他说。 IDC预计,制造业和交通运输将成为今年对物联网投资最大的两个行业,支出将分别达到355亿美元和249亿美元。而智能楼宇等跨行业的投资,将在今年达到310亿美元。 IDC表示,远程健康管理、智能电网和智能家居是未来三个最大的物联网领域,预计在2015年至2019年内增长最快的领域是店内情境营销、联网车辆和保险远程信息处理。 Torchia最后说:“物联网供应商的长期机遇是通过他们的技术帮助最终用户确定和创造即时与留存收益。”本文转自d1net(转载)

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

宁波物联网产业3年内规模将达300亿

“未来,每粒沙子都会有自己的IP地址。”随着物联网时代的到来,这句看似天马行空的话已经不再是无稽之谈。在第六届智博会期间举行的2016物联网趋势论坛上,市经信委副主任戴云透露,下一步我市将根据“中国制造2025”试点示范城市批复的要求,组织实施一批工业物联网重点项目,预计2019年全市物联网产业达到300亿元的规模。东南商报记者乐骁立 人体也可以成为物联网的一部分 论坛上,多位专家得出一个共识,物联网第一个可深入挖掘的产业便是制造业。 “首先,物联网可以更科学地组织生产,提质增效。二是能提高企业内部的管理效能,第三个是追踪产品使用的情况。”深圳物联网协会会长郑爱国表示。 在宁波,已经有不少企业朝着这些领域进发,并推出了一系列产品。近日,宁波软铸公司在智博会上就发布了一款集物联网、大数据、云计算、高清晰音视频通讯及增强现实(AR)等信息技术于一身的“VMEET可视化工业云服务平台”。 该平台兼具人才培育、远程指导、可视化远程维护、远距协同办公、智能监控及调度、物流定位等功能。通过一副智能眼镜,远在千里之外的工程师可以通过眼镜的AR功能,维修维护出现故障的设备,并可以在平台下选择用于维修的耗材,通知物流公司送货。 除了传统产业可以通过物联网技术实现进一步转型升级外,可拉伸电子技术的出现,将使人类本身成为物联网的一部分。 “利用可拉伸电子技术开发出来的产品具有超高的柔性,且非常轻薄,可折叠、弯曲,甚至扭转。”国家“千人计划专家”彭争春博士在论坛上介绍,“这种材料可适应人体的许多器官工作环境,比如将柔性电子产品植入心脏,我们就能随时得到心脏的健康数据。” 此外,他表示,目前的可穿戴设备是需要有硬件载体的,而利用可拉伸电子,传统的手表、电子显示屏将直接可以做到皮肤上。可拉伸电子元器件中还可以搭载许多感应器,也许今后控制所有家用电器、交通工具、数码产品的遥控器都会“长”在我们身体里。 从物联网到数联网 随着像可拉伸电子等技术发展,万物相连的时代已经到来。国家“千人计划”专家贾西贝在论坛上指出,当连接结束后,各种物体的感知信息便会通过量化数据的方式读取传输,并利用人工智能技术进行分析,从而实现智能化的愿景。 而现实愿景的第一步,便是采集数据。在宁波,许多政府部门通过5年的数据采集系统建设,已经拥有了体量庞大的数据库。截至2015年,宁波环保局拥有的数据总量达到693TB,人社局200TB、交通委252TB,而企业所搜集的数据更是这些部门的几何倍数。 而利用这些数据,宁波可以延伸出许多物联网相关产业。比如宁波国研软件在智博会上展示的肉菜追溯系统。系统可以搜集从生产端到销售终端的所有产品信息,市民在购买前,只要打开其微信公众号,扫描食品上的二维码就可以获得相应信息。 此外,贾西贝认为,宁波这样的城市需要建设一个核心大脑———综合数据处理平台,有了平台之后可以自动生成数据表格,节省无数纸张。 数据安全尚无明确法律保护,企业需自律 物联网技术如今已经涵盖了生活的方方面面。这也引起了许多市民对个人数据安全的担忧。 记者采访宁波某物联网公司时,其负责人表示目前其产品已经实现了一部分的智能化。当家里的所有家具联网后,便能感应到家人什么时候在家,什么时候下班,什么时候只有孩子独处,从而调整家中的安防与家用电器的开关。尽管这种模式方便了生活,但这些数据一旦外泄,也将威胁到个人的生命财产安全。 此外,许多拥有巨大客户群体的平台公司正在利用客户数据分析做精准营销,比方通讯商可以根据一个区域某年龄段集中度,分析该区域的购买力,随后将分析报告卖给商家,指导其在哪里开店生意会更好;一些电商平台会根据个人的购买喜好,推送相应的产品到客户的社交网络。这些基于客户数据的结果,是否应向客户支付一点费用呢? 贾西贝表示:“还没有专门的数据法规出台,所以我们只能将一些明显侵犯个人隐私的企业起诉入罪。但在实际操作中,取证非常困难,所以目前数据的安全保护只能靠企业自律。此外,因为目前数据的价格属性尚不明确,商业模式也不完善,因此如何向数据创造者支付费用还有待研究。” 本文转自d1net(转载)

资源下载

更多资源
Mario

Mario

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

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

优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

用户登录
用户注册