black

桥接模式(c++实现)

六眼飞鱼酱① 提交于 2020-07-29 01:52:30
桥接模式 目录 桥接模式 模式定义 模式动机 UML类图 源码实现 优点 缺点 总结 模式定义 桥接模式(Bridge), 将抽象部分与它的实现部分分离,使他们都可以独立的变化。 什么叫抽象与他的实现分离,这并不是说让抽象类与其派生类分离,因为这没有任何意义。实现指的是抽象类和它的派生类用来实现自己的对象。 模式动机 解决继承带来的问题 对象的继承关系是在编译时就定义好的,所以无法再运行时改变从父类继承的实现。子类的实现与他的父类有非常紧密的依赖关系,以至于父类实现中的任何变化必然会导致子类发生变化。当你需要复用子类时,如果继承下来的实现不适合解决新的问题,则父类必须重写或被其他更适合的类替换。这种依赖关系限制了灵活性并最终限制了复用性。 合成/聚合复用原则(CARP) 合成(组合)和聚合都是关联的特殊种类。 聚合表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的‘拥有’关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。 聚合关系在继承关系不适用的情况下可以做替代。其实 只要真正深入的理解了设计原则,很多设计模式其实就是原则的应用而已,或许在不知不觉中就在使用设计模式了。 设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案

介绍INPLAY 新一代蓝牙芯片-IN612L

两盒软妹~` 提交于 2020-07-28 19:31:33
此单芯片集成了高性能并带浮点运算单元的Cortex-M4F CPU,最高运算主频高达64MHz,可轻松完成复杂嵌入式任务和软件算法。此外芯片还集成了最新一代的低功耗蓝牙5全协议栈,支持扩展广播,Coded PHY远距离模式和2Mbps高速率模式。芯片还集成了SDR(软件定义无线电)和Arbitrary两种用户自定义协议栈模式,并支持自定义协议栈和蓝牙5协议栈同时运行,这将极大地方便用户自主开发满足各种特殊无线通信要求的应用和解决方案。IN612L芯片对多模通信引擎的支持,可以为低功耗蓝牙网关,智能电表,资产管理系统,智能家居,智慧医疗等产业提供灵活的网络组网方案,并同时通过对低功耗蓝牙协议的支持确保兼容智能手机,智能平板或智能电视等基于低功耗蓝牙的生态系统。 另外,当今无线通信产品设计的一大挑战即无线通信的安全性和对用户开发的知识产权的保护性,IN612L芯片为用户设计了基于硬件的SecureRadio安全引擎,支持ECDSA(Elliptic Curve Digital Signature Algorithm)数字签名认证算法和安全启动。此引擎可以让用户专注于应用程序的设计开发,而无需担心自己的知识产权受到损害,同时确保无线链路的通讯受到最强安全保障。 IN612L 芯片还集成了多种片上资源供开发者使用,包含256KB ROM,1MB Flash

如何编写简洁美观的Python代码

拜拜、爱过 提交于 2020-07-28 15:49:57
作者|ANIRUDDHA BHANDARI 编译|VK 来源|Analytics Vidhya 概述 Python风格教程将使你能够编写整洁漂亮的Python代码 在这个风格教程中学习不同的Python约定和Python编程的其他细微差别 介绍 你有没有遇到过一段写得很糟糕的Python代码?我知道你们很多人都会点头的。 编写代码是数据科学家或分析师角色的一部分。另一方面,编写漂亮整洁的Python代码完全是另一回事。作为一个精通分析或数据科学领域(甚至软件开发)的程序员,这很可能会改变你的形象。 那么,我们如何编写这种所谓漂亮的Python代码呢? 欢迎学习Python风格教程 数据科学和分析领域的许多人来自非编程背景。我们先从学习编程的基础知识开始,接着理解机器学习背后的理论,然后开始征服数据集。 在这个过程中,我们经常不练习核心编程,也不注意编程惯例。 这就是本Python风格教程将要解决的问题。我们将回顾PEP-8文档中描述的Python编程约定,你将成为一个更好的程序员! 目录 为什么这个Python风格的教程对数据科学很重要? 什么是PEP8? 了解Python命名约定 Python风格教程的代码布局 熟悉正确的Python注释 Python代码中的空格 Python的一般编程建议 自动格式化Python代码 为什么这个Python风格的教程对数据科学很重要

服务器中U的含义是什么

痴心易碎 提交于 2020-07-28 13:41:07
服务器中 U 的含义是什么 “U” 是一种表示机架式服务器外部尺寸的单位 , 是 unit 的缩略语 , 详细尺寸由作为业界团体的美国电子工业协会 (EIA) 决定 。    之所以要规定服务器的尺寸 , 是为了使服务器保持适当的尺寸以便放在铁质或铝质机架上 。 机架上有固定服务器的螺孔 , 将它与服务器的螺孔对好 , 用螺丝加以固定 。    规定的尺寸是服务器的宽 (48.26cm=19 英寸 ) 与高 (4.445cm 的倍数 )。 由于宽为 19 英寸 , 所以有时也将满足这一规定的机架称为 “19 英寸机架 ”。    厚度以 4.445cm 为基本单位 。1U 就是 4.445cm,2U 则是 1U 的 2 倍为 8.89cm。 也就是说所谓 “1U 的 PC 服务器 ”, 就是外形满足 EIA 规格 、 厚度为 4.445cm 的产品 。 设计为能放置到 19 英寸机柜的产品一般被称为机架服务器 。    将服务器放置到机架上 , 并不仅仅有利于日常的维护及管理 , 也可能避免意想不到的故障 。 首先 , 放置服务器不占用过多空间 。 机架服务器整齐地排放在机架中 , 不会浪费空间 。 其次 , 连接线等也能够整齐地收放到机架里 。 电源线和网线等全都能在机柜中布好线 , 可以减少堆积在地面上的连接线 , 从而防止脚踢掉电线等事故的发生 。 服务器中 U 的含义是什么

d3js scales深入理解

自闭症网瘾萝莉.ら 提交于 2020-07-28 10:55:37
https://www.cnblogs.com/kidsitcn/p/7182274.html d3js scales深入理解 比例尺函数是这样的javascript函数: 接收通常是数字,日期,类别等data输入并且: 返回一个代表可视化元素的值,比如坐标,颜色,长度或者半径等 比例尺通常用于变换(或者说映射)抽象的数据值到可视量化变量(比如位置,长度,颜色等) 比如,假设我们有以下数组数据: [ 0, 2, 3, 5, 7.5, 9, 10 ] 我们可以这样创建一个比例尺函数: var myScale = d3.scaleLinear() .domain([0, 10]) .range([0, 600]); d3将创建一个myScale函数用于接收[0,10]之间的数据输入(domain)映射为[0,600]像素的位置数据(range) 我们可以使用myScale函数来计算对应数据的positions数据: myScale(0); // returns 0 myScale(2); // returns 120 myScale(3); // returns 180 ... myScale(10); // returns 如上面所说,比例尺主要用于将抽象数据映射为可视的量化元素,比如位置,长度,半径,颜色等。比如,他们可以这样应用 将抽象数据映射为0到500的长度值以便在bar

NVL 与 COALESCE 不为人知的区别

我是研究僧i 提交于 2020-07-28 09:33:02
大家都知道的区别: NVL Oracle 专属 只支持两个参数 COALESCE SQL 标准 支持多个参数 但是今天偶然间还发现一个重要差别: 滥用 NVL 可能导致额外的计算 NVL 无论前面的参数是否为 NULL 均会计算所有参数 COALESCE 如果遇到一个不为 NULL 的参数,则不计算后面的 以 PL/SQL 为例,NVL 的表现就如同一般的函数,但 COALESCE 更像是一个语句,可以成功避免进行耗时的运算; SQL 中可能也是如此,欢迎读者自行验证并在评论区讨论! DECLARE l_n VARCHAR2 ( 4000 ) := 'x' ; l_s VARCHAR2 ( 4000 ) := 'x' ; FUNCTION Expensive_Function RETURN VARCHAR2 IS BEGIN Dbms_Output.Put_Line ( 'Expensive_Function !!!' ); RETURN 'x' ; END Expensive_Function ; FUNCTION Common_Function ( p_S1 IN VARCHAR2 , p_S2 IN VARCHAR2 ) RETURN VARCHAR2 IS BEGIN RETURN 'x' ; END Common_Function ; PROCEDURE Common

动力电池-有机硅发泡FIPFG/CIPG方案的优势及难点

我是研究僧i 提交于 2020-07-28 08:58:11
一、发泡 FIPFG/CIPG 方案的优势 动力电池是新能源汽车的核心部件,由于其成本可达整车的近 50% ,同时产品稳定性直接影响到整车的安全性,因此行业对于动力电池 pack 的密封方案有着非常严苛的要求: 1 ) IP67/68 等级密封设计要求,保证电池包防尘防水,不会因为进水而短路。 2 )方便拆解,便于对电芯的维护与更换,并做到重复拆解不影响密封性。 由于材料和工艺的限制,泡棉胶条和密封胶这两种电池 pack 密封方案占据着主导地位。但是随着技术的进步,发泡 FIPFG/CIPG 已经成为 pack 密封方案的发展趋势。 所谓发泡 FIPFG/CIPG 是指胶水经设备点胶后在室温或高温下发泡固化,组装过程中通过压缩获得密封效果。相对其他工艺,发泡 FIPFG/CIPG 有着无可比拟的优势: 1 )泡棉胶条 其优点是随时可以开箱,方便维修。缺点是容易出现脱落以及弹性下降导致的渗漏;此外需要模切加工,组装依靠人工,材料和人力成本较高。 2 )密封胶 其优点是易于操作,密封效果好。缺点是密封后,如果想打开箱体进行维修,则很困难。 3 )传统 FIPFG/CIPG (又名液态垫圈 / 就地成型垫圈) 传统 FIPFG/CIPG 产品最大的问题在于其压缩率一般只有 30% ,容易使盖子变形或不能有效填充工差,造成密封失败。 4 )发泡FIPFG/CIPG完美结合了前三者的优点:

“密封”在Tesla Model 3 的OBC上如何应用?

ぐ巨炮叔叔 提交于 2020-07-28 07:39:08
01 除了便宜,还很硬核 说起 Tesla Model 3 ,国人的第一印象应该是不到 30 万的 “ 白菜价 ” 和上海临港一年时间就从荒地变为量产车间的 GIGAFACTORY 了。 然而在海外群众眼里, Tesla Model 3 更像是一个跨越式发展的技术奇迹。尤其是专业拆解人员们更是给出了 “ 车载电子技术至少领先丰田大众 6 年 ” 、 “ 最先进的锂离子动力电池 ” 之类的逆天好评。 这么说不是没有理由的。因为当拆解开 Tesla Model 3 ,人们发现这款 Tesla 跑车的设计和结构竟然与主流电动车完全不同,甚至与亲哥哥 Tesla Model S 都不像是有血缘关系! 以 Tesla Model 3 的动力电池系统为例,如果用一个词描述,那就是 “ 高度集成 ” 。 整个电池系统方案是交直流一体设计, 电池就侧面一个输入口,作为 DCDC 和 OBC 的交流 / 直流的输入。在这种线束输入布置下, OBC 就被集成到电池系统里。 此外, Tesla Model 3 的配电箱还集成了大部分的高压接口、 ACDC 、整车熔断保护电路、接线盒,以及高压诊断管控单元等等组件。 02 Model 3 的热管理方案 一般情况下 OBC 是作为一个独立的组件存在,因此较大的产品空间能保证散热性能处于一个良好的状态。 而 Tesla Model 3 的 OBC 功率高达

一篇文章教会你如何制做精美导航条

瘦欲@ 提交于 2020-07-28 06:27:02
【一、项目背景】 让更多的人去学习html,以广东科技学院的导航栏为例, 教大家怎么去做一个横向的导航栏。 【二、项目准备】 准备一个编程的软件Dreamweaver,打开软件点击文件新建一个叫导航栏的项目,如下图所示。 点击确定之后,会弹出下图。 【三、项目实施】 1. 在<body>标签里面写下一个框架: 注:<nav>标签定义导航链接的部分。<ul> 标签定义无序列表,<li>标签定义列表项目。 <li> 标签可用在有序列表 (<ol>) 和无序列表 (<ul>) 中。 2. 写完运行(运行:右下角点击f12运行)看到效果,如下图所示: 3. 加入css样式表(这里采用内部样式表)。 3.1 CSS样式表有两种加入的方式 如图: 3.2 去除li带来的小黑点: li{ list-style: none; } 4. 基于上述步骤,运行一下 如下图所示: 5. 设置一下导航栏的样式。 设置一下列表ul 的宽度 ,高度,背景颜色,文字位置居中(margin:0 auto)。 Li 同样的设置高度 。 去掉小黑点 ,再设置文字的颜色 ,高度 ,内边距 ,(个人喜好 看着舒服就行) 设置文字的大小,去掉下划线(text-decoration:none;)。 下面是详细备注 ul li{float: left; # 把内容左浮动,这样可以横向排列 width: 100px; #

深度学习AI美颜之人脸自动美型算法

强颜欢笑 提交于 2020-07-28 05:33:09
本文在这里对人脸智能美型做个详解。 人脸智能美型包含如下两个部分: ①人脸轮廓自动调整 ②五官自动修正 人脸轮廓自动修正:对人脸大小,胖瘦进行自动调整,目前app中常用的瘦脸只是其中一个特例而已; 五官自动修正:包含眼睛大小自动调整,鼻子形状位置修正,眉毛位置修正以及嘴巴形状、大小和位置自动修正等等。App中常用的大眼和立体修鼻功能,也属于其中一个特例; 人脸智能美型和磨皮美白结合使用,就是所谓的智能美颜。 人脸智能美型算法逻辑如下: 1,构建平均脸 针对男女分别构建正脸平均脸 2 ,性别识别 这一步需要将用户的人像照片进行性别识别,根据识别结果分别选择男/女平均脸数据。 3 ,将用户照片人脸映射到平均脸 这一步主要根据用户照片人脸关键点和平均脸的人脸关键点,加上一定的映射算法将用户照片对齐到平均脸中,可以参考仿射变换等。 关键点可以使用图玩智能科技的人脸SDK 4 ,计算用户人脸和平均脸的距离D 此处计算规则可以使用欧氏距离等,距离D表示用户人脸到完美人脸的差。 距离的计算还需要参考人脸的旋转角度信息,根据人脸旋转角度对距离进行加权处理,以此来适应各种角度的用户人脸照片。 5 ,根据D对用户人脸进行不同程度的变形,得到智能美型结果 此处变形可以使用MLS、三角网格变形等等。 上述过程就是人脸自动美型的算法逻辑,对于不同的人像照片,会自动判断大眼矫正或者小眼矫正,瘦脸或者胖脸等等