首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Effective C++笔记

在operator=中处理“自我赋值” 确保对象自我赋值时operator=有良好行为。...考虑写出一个不抛出异常的swap函数 当std:swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛出异常 如果你提供一个member swap,也该提供一个non-member...彻底了解inlining的里里外外 将inlining限制在小型、被频繁调用的函数身上 不要只因为function templates出现在头文件,就将它们声明为inline 31....了解new和delete的合理替换时机 有许多理由需要写个自定的new和delete,包括改善效能、对heap运用错误进行调试、收集heap使用信息 51....Class专属版本则还应该处理“比正确大小更大的(错误)申请” operator delete应该在收到null指针时不做任何事。

82220

Tinker:技术的初心与坚持

他们不仅帮助我们解决了许多兼容性问题,每次Tinker升级,厂商也会帮忙做相关兼容性的测试。更重要的是Tinker的出现与推广使得厂商在系统定制改造时也会考虑到是否会影响热修复。...这里首先怀疑是我们某些类没有正确的打入或者没有生效,通过查看出现异常代码的机器码,我们发现是因为虚拟机内联导致出现类似地址错乱的问题。...系统会在首次加载时,会重新执行dex2oat。这导致可能会在前台等待很长的时间,甚至出现ANR。这也是Vivo在某次会议上点名批评Tinker的最大原因。 事实上,我们并非没有努力过。...这个时候,厂商给我们抛出橄榄枝,可以给微信做单独的优化: 在系统升级时,帮助微信把Tinker目录的odex文件重新做dex2oat; 首次调用补丁dex2oat时,采用类似Oppo/Vivo的异步策略...最后我们发现,这个crash是在ImageView初始化drawable时加载了错误的xml文件导致的。

2.8K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Tinker:技术的初心与坚持

    他们不仅帮助我们解决了许多兼容性问题,每次Tinker升级,厂商也会帮忙做相关兼容性的测试。更重要的是Tinker的出现与推广使得厂商在系统定制改造时也会考虑到是否会影响热修复。...这里首先怀疑是我们某些类没有正确的打入或者没有生效,通过查看出现异常代码的机器码,我们发现是因为虚拟机内联导致出现类似地址错乱的问题。...系统会在首次加载时,会重新执行dex2oat。这导致可能会在前台等待很长的时间,甚至出现ANR。这也是Vivo在某次会议上点名批评Tinker的最大原因。 事实上,我们并非没有努力过。...这个时候,厂商给我们抛出橄榄枝,可以给微信做单独的优化: 在系统升级时,帮助微信把Tinker目录的odex文件重新做dex2oat; 首次调用补丁dex2oat时,采用类似Oppo/Vivo的异步策略...最后我们发现,这个crash是在ImageView初始化drawable时加载了错误的xml文件导致的。

    56930

    Tinker:技术的初心与坚持

    他们不仅帮助我们解决了许多兼容性问题,每次Tinker升级,厂商也会帮忙做相关兼容性的测试。更重要的是Tinker的出现与推广使得厂商在系统定制改造时也会考虑到是否会影响热修复。...这里首先怀疑是我们某些类没有正确的打入或者没有生效,通过查看出现异常代码的机器码,我们发现是因为虚拟机内联导致出现类似地址错乱的问题。...系统会在首次加载时,会重新执行dex2oat。这导致可能会在前台等待很长的时间,甚至出现ANR。这也是Vivo在某次会议上点名批评Tinker的最大原因。 事实上,我们并非没有努力过。...这个时候,厂商给我们抛出橄榄枝,可以给微信做单独的优化: 1、在系统升级时,帮助微信把Tinker目录的odex文件重新做dex2oat; 2、首次调用补丁dex2oat时,采用类似Oppo/Vivo的异步策略...最后我们发现,这个crash是在ImageView初始化drawable时加载了错误的xml文件导致的。

    3.8K00

    都说vivo营销强,但你知道vivo的营销究竟强在哪里吗?

    在此之前,vivo在体育营销上已有诸多尝试,但这次与FIFA合作不论是从赞助规模还是赛事级别来看,都更值得关注,这也体现出vivo营销的前瞻性。 ?...品牌对于手机越来越重要 在2016年之前,手机公司的品牌营销被一分为二,一类是互联网营销,粉丝经济、社交网络、饥饿营销,与在线销售配套,终极目标是获得注意力再转化流量最终再变为订单。...vivo做广告时,并没有强调高大上的品牌特性,而是回归到产品的核心卖点,从最初深入人心的音乐广告,到主打“Camara& Music”之后的“照亮你的美”广告系列,vivo的品牌广告都与产品核心卖点直接关联...在营销这件事上,vivo同样做到了炉火纯青的地步,有许多值得友商学习之处。事实上,现在不同手机厂商都在尝试多元化营销,然而,请一个代言人或者赞助一个节目是远远不够的。...再比如在互联网新媒体日新月异的过程中出现新营销机会,vivo也经常会尝鲜。今年春节,vivo还与百事可乐合作,推出了定制版本百事可乐。 ?

    2.7K40

    copy-and-swap 是什么

    问题 我发现 copy-and-swap 这个名词在很多地方都出现, What are your favorite C++ Coding Style idioms: Copy-swap Copy constructor...在 C++ 11 中它又有什么变化? 回答 为什么需要 copy-and-swap 呢? 任何资源管理类(比如智能指针)都需要遵循一个规则:三法则。...一,防止做无用功;二,防止自赋值时出现问题(看上面的代码就知道了)。但是这种检查没什么意义,因为很少出现,加上它反而徒增消耗。...如果在new的时候抛出异常,此时*this的内容已被修改(早已被delete),无法还原至开始状态。...译注:评论区有人指出“一个类管理多个资源”这种做法是不提倡的,作者也表示同意,上面那句话之所以那么说,我觉得更多是突出“冗余膨胀”四字,读者可以不必在此处过多纠结。

    87810

    vivo21a点击android版本,vivoX21适配安卓P系统

    许多小伙伴们应该都是知道最近即将推出的Android P系统吧,这个系统十分的强大,如果你使用的是vivoX21那么你就有福利了,你可以使用vivoX21 Android P升级这个系统。...vivoX21 Android P升级手动刷入设备 您可以下载最新的开发者预览版系统映像并将其手动刷入指定的vivo设备。...手动刷入设备的步骤以vivo X21为例,具体如下: (1)下载vivo X21开发者预览版系统映像压缩包; (2)将已下载好的系统映像压缩包拷贝到vivo X21手机存储根目录; (3)点击压缩包,将弹出升级提示框...注意:在vivo 设备上安装系统映像会清除设备中的所有数据,因此务必先备份数据。 备份数据并下载系统映像后,请按照上述步骤将映像刷入vivo 支持设备中。 本站提供的是官网下载地址哦!...我们还可以在Android P ROM包下载大全中找到其他机型的ROM包!

    92920

    Effective C++: 改善程序与设计的55个具体做法

    条款25:考虑写出一个不抛异常的swap函数 请记住 ■ 当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛出异常。...条款26:尽可能延后变量定义式的出现时间 请记住 ■ 尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程序效率。...条款50:了解new和delete的合理替换时机 请记住 ■ 有许多理由需要写个自定的new和delete,包括改善效能、对heap运用错误进行调试、收集heap使用信息。...Class专属版本则还应该处理“比正确大小更大的(错误)申请”。 ■ operator delete应该在收到null指针时不做任何事。...Boost在C++标准化过程中扮演深具影响力的角色。 ■ Boost提供许多TR1组件实现品,以及其他许多程序库。

    72020

    restful api接口规范和服务调用的区别_rest接口规范

    组合实体不是first-class的实体,它的生命周期完全依赖父实体,无法独立存在,在实现上通常是对数据库表中某些列的抽象,不直接对应表,也无id。...对第三点的实现稍微多说一点: Java 服务器端一般用异常表示 RESTful API 的错误。API 可能抛出两类异常:业务异常和非业务异常。...非业务类异常表示不在预期内的问题,通常由类库、框架抛出,或由于自己的代码逻辑错误导致,比如数据库连接失败、空指针异常、除0错误等等。...业务类异常必须提供2种信息: 如果抛出该类异常,HTTP 响应状态码应该设成什么; 异常的文本描述; 在Controller层使用统一的异常拦截器: 设置 HTTP 响应状态码:对业务类异常,用它指定的...HTTP code;对非业务类异常,统一500; Response Body 的错误码:异常类名 Response Body 的错误描述:对业务类异常,用它指定的错误文本;对非业务类异常,线上可以统一文案如

    1.8K10

    “懒癌”患者福音:是时候找一个AI帮你做家务了

    工信部已经发布5G线路图,5G手机将在2019年下半年出现。新一波换机潮即将出现,手机品牌竞争更为激烈。对于厂商来说,物联网的提前布局相当于给未来上了保险。 vivo要怎样做IoT?...于是,vivo给出了这样一个结构:手机连接平台,平台连接设备。 vivo此前曾与其他9家安卓手机品牌共同推出快应用。和小程序类似,快应用无需专门下载安装,用户可以直接打开快应用,使用它提供的功能服务。...当用户需要操控家中电器设备时,拿起手机,进入控制中心,就可以直接操控不同品牌的家电了,就像使用万能遥控器一样。 ?...vivo对用户的了解是基于人工智能技术对不同场景的识别。 ? 如何识别场景?靠三种数据:基础数据、垂类数据,还有IoT设备数据。...另外,还有不同行业的垂类数据,让AI理解更为复杂的垂直行业信息。 还有用户使用IoT设备的控制数据,让AI记住用户的使用习惯。

    33720

    华为小米OPPOVIVO 将去何方?

    通过比较四个开发者会议的议程设置,主题和内容上的差异,我们可以看到每个制造商在应用生态层面的关注点,以及每个制造商在大环境影响下面临的不同情况。...从这个意义上讲,OPPO和VIVO拥有不到10个论坛。 华为的鸿蒙 OS 华为在开发者大会上介绍了Harmony OS,HMS,EMUI和HiLink的进展。...应用程序开发人员可以开发跨设备的协作应用程序。它允许应用程序在智能手机和电视之间无缝切换。先前预测的MIUI 13未出现。...OPPO开发者大会着重于人员,设备和场景的集成。VIVO的主题是“原始的一切”。提倡回归原始,并从智能手机构建生态。 在特定用途中,ColorOS 11支持与OPPO Watch进行信息同步。...原子通知功能直接在桌面应用程序上显示通知。原子组件库是一种独特的桌面应用程序组合方法,可以提供一种简单方便的调用方法。 在跨设备协作方面,OriginOS的IoT服务门户已得到进一步优化。

    45310

    数据安全问题已成隐患,看vivo如何让“用户数据”重新披甲

    其中在“数字经济:向阳而生”分论坛上,vivo首席安全官鲁京辉就带来了由信通院、vivo联合编撰的《数据保护合规趋势白皮书》,并分享了vivo在数据安全和个人信息保护领域的前沿经验。...“防诈骗”在2021年成为热词,而“反诈”也成为各类科技企业重点关注的领域,例如随着“国家反诈APP”的出现,网络上也曾掀起过一阵下载、学习的风潮,但热度并未持续太久,便降了下去。...当用户在vivo最新款设备上使用支付类APP支付或转账给一个可疑诈骗账户时,如果交易是由恶意应用发起的,千镜可信引擎可本地评估识别到该交易风险并反馈风险结果,支付宝基于该结果进行综合判断,向用户提示预警...在博鳌分论坛上,vivo首席安全官鲁京辉说“我们将继续以科技之力护用户周全,保护每个人在数字经济时代做到‘享受’与‘安全’并重。”...由此能看出,在保障“数据安全”这一块,vivo正秉持着真正有利于用户的长期主义,同样也只有从实际上满足“用户需求”,才能真正被用户接受,vivo此举所展现出的不光是一个企业对于自身、对于用户“负责任”,

    32210

    读Effective C++

    为了支持连等赋值 在operate=中处理自我赋值。因为可能出现删除自己,再取自己内容的情况 复制对象时勿忘其每一部分。...作者提出一系列问题,是在设计高效classes时需要考虑的 使用传引用替换传值。传值涉及对象的拷贝,这就需要时间与空间成本;不过对内置类型,传值可能更好 必须返回对象时,不要返回reference。...5 实现 设计部分完成之后就该实现了,实现部分要多考虑一些细节问题,避免降低效率,代码膨胀,过度耦合,资源泄漏等问题。 尽可能延后变量定义式的出现时间。...有许多理由需要定制,包括改善效能,对heap运用错误进行调试,收集heap使用信息 编写new delete时需固守常规。...placement版本的new是一个特定位置上的new,一般接受一个void*,指向对象被构造之处,防止出现内存分配成功,但构造函数失败导致的内存泄漏问题 9 杂项 不要轻忽编译器的警告。

    67120

    深入探索Scala的Option

    我在文章《并非Null Object这么简单》中已经阐释了这个问题。然而不仅仅是空指针异常,当程序代码中出现各种错误时,我们的处理方式该如何呢? 现在,让我们再看看Scala语法层面的Option。...就是要对可能出现的错误(空对象,索引越界,类型转换异常)进行判断。...当然,我们可以运用防御式编程,将可能的错误防御在正常逻辑代码之前,但它带来的阅读体验却会非常糟糕。 即使针对这些错误进行判断,仍然无法解决的一个问题是当对象真的出现错误时,函数实现究竟该如何处理?...多数语言不支持多返回值(乃至不支持类似Scala的Pair),经典的解决办法就是抛出异常,可惜,异常却存在副作用。许多程序员更习惯性的返回了null。...当我们给一个错误的下标值去访问数组时,有可能会抛出ArrayIndexOutOfBoundsException异常。 Scala提供的解决方案是隐式转换(implicit conversion)。

    1.1K70

    当vivo领先后,该学着“快”起来了

    这两年,无论是所谓的“吓人”技术、还是“捅破天”技术,都未给智能手机销量带去本质上的增量。许多创新还在围绕“性能”做文章,然而当前智能手机的性能过剩丝毫不亚于PC。...比如OPPO Find X系列,今年的Find X5 Pro基础版和最高配版,相比去年的Find X3 Pro在售价分别出现了500和200元的下浮;同样vivo最新发布的X90 Pro在价格也出现了收缩...价格的收缩,让机型更多的vivo有了更强的市场竞争力。 第二个“变”则是来自于vivo自身。前面说了当前聚焦影像已是许多品牌的共同选择,但vivo走出了一条不一样的路。...与其他品牌在影像路径上“求远、求大”不同,vivo是在“求细、求精”。...在扎克伯格看来,未来智能手机将被VR、AR等头显设备取代。比尔·盖茨则认为,未来的手机将类似于“电子纹身”,直接在人体中,继承手机的所有功能。

    22820

    vivo 手机云服务建设之路-平台产品系列04

    拿vivo为例,vivo帐号可以同时在vivo手机、vivo PAD、PC上登录,用户可以在手机、PAD、PC上同时对联系人、日历等内容进行编辑,一端编辑,多端可见。...用户可以将自己本地重要的图片、视频、文档等重要文件备份到云端,以便后续可以在云端后者在其他设备上可以访问到该文件,同时借助于云盘的能力,用户也可以方便快捷的释放整理本地空间。...4.1.1 存储分级在vivo对象存储自建完成之前,云盘也是将数据存放在公有云的对象存储上。存储分级技术主要是将不同的数据采取不同的存储方式分别存储在不同性能的存储设备上。...而大部分其他友商只有当文件完成整个上传流程时才进行空间扣减。该逻辑能保证同一个用户在进行多线程上传,或者多个设备同时上传时,不会出现空间超用的情形。...所以vivo云服务不会对用户的私人文件使用CDN技术以提升性能。令牌有效期设计云盘的文件以链接的方式暴露给各客户端进行下载。在链接的设计上,云盘携带了下载令牌,该令牌在一定有效期内会自动过期。

    1.7K40

    可折叠设备的桌面模式

    一个很好的例子是 Google Duo 团队 对其应用进行的优化,从而使该应用在平板电脑和可折叠设备上均能运行良好。...这是一个简单的媒体播放器案例,它会自动调节尺寸以避免让折叠处出现在画面中间,并且调整播放控制组件的位置,从屏幕完全展开时嵌入画面中,变为当屏幕部分折叠时显示为单独的面板。...MotionLayout 结合了父类的灵活性,同时又具备在视图从一种姿态过渡到另一种时展示流畅动画的能力。...这样一来该控件会在屏幕完全展开时被隐藏,而当屏幕部分折叠时又出现在底部。 请注意第 28 行的 layout_constraintGuide_end 属性。它就是当您移动参考线时需要改变的值。...,您学习了如何通过实现支持桌面模式的灵活布局来改善可折叠设备上媒体应用的用户体验。

    2.4K30

    MWC 2018总结丨智能机“黑科技”耀眼,VR体验精彩依旧

    要搞就搞“真·全面屏”,vivo推出vivo APEX概念机 在MWC 2018上,我们还是看到了“真·全面屏”的希望的。...vivo APEX是一款在MWC 2018上大放异彩的全名屏概念机,这款手机以98%的屏占比力压了全场所有全面屏手机。此外,vivo APEX通过升降式摄像头的设计,成功消灭了“刘海”。 ?...此外,在今年1月初,《亚利桑那阳光》的开发商就宣布将推出多人联机版本,而《亚利桑那阳光》四人联机版也出现在了此次MWC 2018上。...虽然没有带来全新的VR硬件产品,但我们从此次VR体验设备的豪华程度,就可以看出HTC在内容体验方面还是下足了工夫。只不过像热气球这样的设备,注定与普通消费者无缘了。...今年的MWC 2018上,我们看到,一方面在全面屏大潮下,手机同质化严重;另一方面一些有进取心的厂商欲在硬件堆砌之外,寻求自身的突破,我们也看出了它们的诚意。

    65280

    讲解Make sure the device specification refers to a valid device

    讲解Make sure the device specification refers to a valid device在开发和配置设备时,我们经常会遇到"Make sure the device specification...错误原因当我们在配置设备时,比如设置设备的规格(specifications)或使用设备的标识符(identifier)时,如果存在以下情况之一,就会出现这个错误:设备规格错误:设备规格可能有误,要么规格不存在...configure_device函数根据输入的规格和标识符,通过调用上述两个函数来进行设备配置,如果出现异常则捕获并打印错误信息,否则输出配置成功的提示。"...Specifications"一词通常用于描述产品或设备的技术规格和特性。在许多领域中,包括电子产品、机械设备、汽车、软件等,规格是对产品或设备功能、性能和设计的详细描述。...在编写代码时,规格定义了函数或类的行为和接口。编程规范和标准帮助开发人员在设计和实现软件时遵循一致的约定和最佳实践。规格的定义和文档可以提供开发人员所需的信息,确保代码的正确性和一致性。

    23810

    蓝河应用《坚果早报》

    开发背景 在我看来,手表上提供新闻早报的功能有如下意义和优势,包括: 快速获取信息:通过手表上的新闻早报功能,用户可以在短时间内快速浏览当天的重要新闻和事件,而无需打开手机或其他设备。...便捷性:手表是随身携带的便捷设备,用户可以随时随地查看新闻早报,不受时间和地点的限制。...节省时间:在匆忙的早晨或行程中,通过手表上的新闻早报功能,用户可以在短暂的空隙时间内了解最新的新闻动态,节省了查找新闻的时间。...通常情况下,debug 包会包含调试信息,以便开发者进行调试和定位错误。 release:为了发布到生产环境而设计的,因此它会进行更严格的优化,以减少文件大小和加载时间。...;譬如说,构建 release 包,上线时,可以设置 NODE_ENV 为 production,在测试期间可设置为 test,支持完全按需进行搭配,自由搭配。

    12820
    领券