软件接口

开源网络风云变幻,看各家爱恨情仇

☆樱花仙子☆ 提交于 2020-01-02 02:43:18
近日,美国对中国企业的限制动作不断: 5月15日,美国将华为公司及其附属公司列入出口管制“实体名单”。 随后美国谷歌公司宣布将停止提供安卓(Andriod)系统的技术支持与服务,而安卓系统一直是世界知名的开源项目。 进一步人们又发现美国开源代码托管平台GitHub与美国非盈利公司Apache基金会均有明确声明受美国出口管制约束。 在上述列举的事件中,我们注意到了一个词——开源。 开源的主要要素包括:开源基金会、开源许可证、开源项目和开源代码托管平台等。当前这些组织、项目都在美国,几乎所有开源许可证和代码托管平台也都由美国的学术界和工业界主导。在中美贸易战背景下开源项目有何风险,美国对开源的出口管制约束对我们有怎样的影响?中国开放指令生态(RISC-V)联盟(英文缩写为 CRVA)发布权威报告《开源项目风险分析与对策建议》,给出了对“开源自立”的细致调研和建议。 在网络领域也有很多开源组织(如Linux Foundation)和开源项目,美国政府是否会试图禁止或干涉中国企业使用开源项目?小编还没仔细研究(读者感兴趣可以看一下《开源项目风险分析与对策建议》), 但是我们可以先看看网络领域都有哪些开源组织和项目,知己知彼,才能未雨绸缪,百战不殆。 令人眼花缭乱的网络开源门派 Linux Foundation Linux基金会成立于2000年,是一个中立的非营利性组织,由开放源码发展实验室

OPC服务端软件分析

亡梦爱人 提交于 2020-01-01 14:24:21
上篇 依然是关于客户端的,现在转向服务端。本文以OPC基金会发布的OPC DA 3.00 Sample Server为分析对象,分析它的结构,为自己程序切入找准方向。 在开始之前需要分享一个知识点,即COM是如何被创建的。在客户端使用CoCreateInstance后,服务端是怎样帮你创立一个实例的?这就是IClassFactory的职责,所有COM的调用都是通过它的接口来获得一个具体的执行它接口类的实例。 OPC服务端的IClassFactory执行类是定义在COpcClassFactory.h中, 我们需要仔细审视下其中的CreateInstance函数,具体见下, // CreateInstance STDMETHODIMP CreateInstance( IUnknown* pUnkOuter, REFIID riid, void** ppvObject) { *ppvObject = NULL; // aggregation is not supported. if (pUnkOuter != NULL) { return CLASS_E_NOAGGREGATION; } OPC_ASSERT(m_pClassInfo != NULL && m_pClassInfo->pfnCreateInstance != NULL); // create instance -

如何在linux中获取ACPI表

拥有回忆 提交于 2020-01-01 13:00:49
ACPI, 全称又叫 Advanced Configuration and Power Management Interface, 高级配置和电源管理接口。BIOS过程中就会生成这些表格,然后Linux系统中很多时候需要访问ACPI表格来获得一些硬件的内存地址。 所有的ACPI表位于目录“/sys/firmware/acpi/tables” 1. 复制 表到 *.aml sudo cat /sys/firmware/acpi/tables/DSDT > DSDT.aml 2. 安装软件 iasl sudo apt-get install iasl 3. 进行转换 iasl -d DSDT.aml 这样你就可以在当前目录下发现你所要的ACPI表文件 DSDT.dsl 来源: https://www.cnblogs.com/lyantech/p/10311738.html

软件设计原则——GRASP

浪尽此生 提交于 2019-12-27 03:42:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Craig Larman氏在《Applying UML and Patterns》一书中提出了GRASP设计模式的概念。作者称其为设计模式,其实,更好的理解应该为设计原则。因为,与GoF等设计模式不同的是,GoF等设计模式是针对特定问题而提出的解决方法,而GRASP则是站在面向对象设计的角度,告诉我们怎么样设计问题空间中的类与它们的行为责任,以及明确类之间的相互关系等等。GRASP可以说是GoF等设计模式的基础。 GRASP是General Responsibility Assignment Software patterns(通用职责分配软件模式)的简称,它的核心思想是“职责分配(Responsibility Assignment)”,用职责设计对象:"Designing Objects with Responsibilities"。它包含了9个基本模式: 1 专家模式(Expert) 解决方案:将职责分配给具有履行职责所需要的信息的类 通俗点就是:该干嘛干嘛去,别管别人的闲事或者我的职责就是搞这个,别的事不管。 举个简单的例子,如果有一个类是专门处理字符串相关的类,那么这个类只能有字符串处理相关的方法,而不要将日期处理的方法加进来。也就是提高软件高内聚一种原则。 2 创建者(Creator) 解决方案

7个常用的面向对象设计原则

£可爱£侵袭症+ 提交于 2019-12-17 01:03:23
1、单一职责原则 定义:一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。(就一个类而言,应该仅有一个引起它变化的原因) 解释:在软件系统中,一个类(大到模块,小到方法)承担的职责越多,它被复用的可能性就越小,而且一个类承担的职责过多,相当于将这些职责耦合在一起,当其中一个职责变化时可能会影响其它职责的运作,因此要将这些职责进行分离,将不同的职责封装在不同的类中,即不同的变化原因封装在不同的类中,如果多个职责总是同时发生改变则可以将它们封装在同一个类中。单一职责原则是实现高内聚,低耦合的指导方针。 2、开闭原则 定义:软件实体应当对外扩展开放,对修改关闭 解释:在开闭原则的定义中,软件实体可以指一个软件模块,一个由多个类组成的局部结构或一个独立的类。开闭原则就是指软件实体应尽量在不修改原有代码的情况下进行扩展。为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。 3、里氏代换原则 定义:所有引用基类的地方必须能透明地使用其子类的对象 解释:里氏替换原则表明,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何错误和异常,反过来则不成立,如果一个软件实体使用的是一个子类对象,那么它不一定能使用基类对象。 举例:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是我喜欢狗,不能据此断定我喜欢所有动物(基类推子类成立,子类推基类不一定成立)

软件设计原则

余生颓废 提交于 2019-12-14 13:59:17
1、开闭原则 开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开 闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统,例如:我们版本更新,我尽可能不修改源代码,但是可以增加新功能。 说白了就是,如果我们要增加新功能,不要影响到原有的功能。原来的类保持不变,然后弄一个新的类去extends原来的类,新的类再去写新的逻辑。对旧功能关闭,对新的功能进行扩展。 2.依赖倒置原则 依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并能够降低修改程序所造成的风险。 依赖一个类的时候,最好依赖其接口,而不是依赖其具体的实现类,依赖接口有一个好处,如果对应的实现类增加了功能,则我们只需要在调用处调用新的方法即可。而接口和实现类增加对应的方法。 接下来看一个案例,还是以课程为例,先来创建一个类 Tom: 来调用一下: Tom 热爱学习,目前正在学习

如何用百度大脑文字识别技术,快速集成实用小工具

喜欢而已 提交于 2019-12-11 00:54:27
一、总体概述 本文主要介绍了由本人开发的、基于百度AI的云猫OCR软件的主要功能,性能评价及核心代码解读。因为是几个帖子合并成一个,所以篇幅较长,希望各位能耐心看完,当然也可以各取所需。 本文主要分为以下几个部分: 第一部分是云猫OCR软件介绍。 由开发者本人亲自介绍软件的主要功能。对标ABBYY等OCR软件,云猫OCR的功能更全面,使用更简单,关键的是云猫OCR目前是完全免费给大家用的。当然因为是试用版,可能存在一些bug,大家使用的时候不要乱按就行。云猫展示版本的下载地址见帖子: https://ai.baidu.com/forum/topic/show/955975 第二部分是云猫OCR基于百度OCR的具体实现方式说明。 同时也会对软件的部分核心代码进行展示,便于大家进行参考做出更有创意的产品。 第三部分是云猫OCR使用说明及效果评测。 但因为云猫OCR是2017年底左右开发的,所以用的不是百度OCR最新接口功能,如果云猫能得到大家的支持,我可以考虑开发新版接入更多百度最新的AI接口,希望大家能多多捧场。 本文的最后部分是附录,附上了我基于百度OCR进行开发的代码解读,使用的是最新的百度手写体识别接口,也一并打包给大家参考。 第一部分 云猫OCR的软件介绍 一、云猫OCR简介 云猫OCR是基于百度云OCR算法,由进击的狐狸进行开发的一款软件。本软件由C#语言进行开发

计算机三级嵌入式学习笔记

江枫思渺然 提交于 2019-12-10 00:18:39
嵌入式学习笔记(之一) 前言 ​ 笔者在大一下学期一时冲动,直接跳过计算机二级报名考计算机三级嵌入式。没错,我觉得我冲动了,当时想着接触一下嵌入式,学点皮毛也好,考个证下来就更好了,结果,看书做题,发现,我高估自己了喔。 ​ 八十块钱报名费极大可能打水漂,但看完书还是认认真真的把题库刷一遍吧,前面八十分基本全是概念啊,全是啊,我滴天,孩子最不擅长的就是背这些balabala的,哭了,孩子快哭了啊!!!太难啦!!! ​ 做过题记一下笔记吧,加深些印象也好,呜呜呜~ 大致提纲 一、嵌入式系统概论 ​ (1)嵌入式系统介绍及其特性: ​ 专用性;隐蔽性;资源受限;高可靠性;实时性;软件固化。 ​ (2)嵌入式系统的应用 ​ (3)嵌入式系统的逻辑组成: ​ 软硬件两部分:硬件主体是中央处理器和存储器,它们通过输入/输出(I/O)接口和输入/输出设备与外部世界联系,并借助总线相互连接,这些硬件连同嵌入式软件一同构成完整的嵌入式系统。 ​ (4)嵌入式处理芯片: ​ 嵌入式系统的CPU一般具有四个特点:支持实时处理;低功耗;结构可扩展;集成了测试电路。 ​ (5)目前嵌入式处理芯片类型: ​ 微处理器(MCU);数字信号处理器(DSP);微控制器(单片机);片上系统(SoC)。 ​ (6)嵌入式系统的多种分类方法 ​ 可以按用途分类;按实时性分类;按产品形态分类;按系统的复杂程度分类。 ​

软件设计工作总结

末鹿安然 提交于 2019-12-06 12:29:23
新公司新项目,刚跳槽。 软件需求说明书,就是说这个软件要干什么,符合什么规范,实现哪些功能。 软件总体设计说明书,对软件需求说明书中的功能进行大的模块划分,对一些小的功能进行合并到一个大功能里面,说明模块之间的数据流向关系,模块调用关系,关键接口的伪代码定义。 软件详细设计说明书,对软件总体设计说明书进行细化,对每一额模块的每一个功能进行分析,设计具体函数接口,该阶段函数接口可直接应用到实际代码中。 编码,调试,修改,编码,调试。 来源: CSDN 作者: shuaiawp 链接: https://blog.csdn.net/shuaiAWP/article/details/45166027

排错笔记:MySQLdb module: No module named MySQLdb

我只是一个虾纸丫 提交于 2019-12-06 00:52:43
linux的路径和版本,估计是大部分初学者安装软件出错和最头疼的问题。linux的主要代码贡献者也是版本控制系统的创始人,懂得了吧。这次是安装一个软件,需要python2.7的环境。我的centos自带的版本是python2.6.6,按照教程升级啊,都改好了。安装mysql,直接yum,然后python,import MySQLdb ,出现错误了。 后来得知,直接 yum install MySQL-python,默认给我们安装的不是python2.7的接口,肯定不行了, 去下载 MySQL-python-1.2.5,这才是python2.7的mysql接口。 来源: oschina 链接: https://my.oschina.net/u/996384/blog/383818