OCP

面向对象 三大特性 五大基本原则

安稳与你 提交于 2020-03-26 00:34:32
3 月,跳不动了?>>> 以前一直认为程序中的类有使用到 封装,继承,多态 就是面向对象设计,其实不然 封装,继承,多态 只是面向对象的 三大特性 ,但是在设计程序的时候并不是说类的结构使用到了(或是体现出了)这三个特性就是面向对象,其实真正的面向对象设计是要符合下面的 五大原则 , 面向对象的五大基本原则 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(LSP) 依赖倒置原则(DIP) 接口隔离原则(ISP) 单一职责原则(SRP) 一个类应该仅有一个引起它变化的原因 (最简单,最容易理解却最不容易做到的一个设计原则) 例子: 比如在职员类里,将工程师、销售人员、销售经理这些情况都放在职员类里考虑,其结果将会非常混乱,在这个假设下,职员类里的每个方法都要if else判断是哪种情况,从类结构上来说将会十分臃肿,并且上述三种的职员类型,不论哪一种发生需求变化,都会改变职员类!这个是大家所不愿意看到的 开放封闭原则(OCP) 既开放又封闭,对扩展是开放的,对更改是封闭的! 扩展即扩展现行的模块,当我们软件的实际应用发生改变时,出现新的需求,就需要我们对模块进行扩展,使其能够满足新的需求, 更改封闭即是在我们对模块进行扩展时,勿需对源有程序代码和DLL进行修改或重新编译文件! 这个原则对我们在设计类的时候很有帮助,坚持这个原则就必须尽量考虑接口封装,抽象机制和多态技术!

重构老系统遗留代码的一些方法学习笔记

南楼画角 提交于 2020-03-24 08:43:40
3 月,跳不动了?>>> 正交性(orthogonality) 表示某种不相依赖性或者解耦性。如果两个或者更多事物种的一个发生变化,不会影响其他事物。这些事物就是正交的。在设计良好的系统中,数据库代码与用户界面是正交的:你可以改变界面,而不影响数据库,或者更换数据库,而不用改变界面。 如果修改代码中的现存行为只需要到一个地方修改,即拥有正交性。 开放/闭合 原则(OCP,Open Closed Principle) 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。 对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。 实现开放封闭的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以对修改就是封闭的; 而通过面向对象的继承和对多态机制,可以实现对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的。这是实施开放封闭原则的基本思路。 本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。 来源: oschina 链接: https://my.oschina.net/u/4338498/blog/3209871

OceanBase 2.2 安装部署问题解答

笑着哭i 提交于 2020-03-23 20:58:30
3 月,跳不动了?>>> OceanBase 2.2 安装部署问题解答 OceanBase 2.2 自官网提供试用下载后,受到不少数据库爱好者的关注,很多朋友都下载尝试安装,有些成功了,有些碰到了一些问题。本文就是总结一下最近大家遇到的问题,以供后来的朋友试用参考。 关于安装部署的疑问 关于OceanBase的安装方法的文章可能有多种,这里解释一下。 在今年1月份之前官网提供的是OceanBase 1.4版本的相关文件,里面也包含了 OCP 1.x版本及其安装方法。那个版本的OCP安装可能会因为机器环境问题、资源问题而失败。所以我基于那个版本写了一篇文章《 OceanBase数据库实践入门——手动搭建OceanBase集群 》。绕开OCP直接手动安装OceanBase集群。1.4版本的OB兼容MySQL,具备OB大部分的核心能力(高可用、强一致、水平拆分、可扩展等),最重要的一点是对机器内存资源要求比较低,每个节点机器16G内存就可以搭建成功。 机器资源问题是大部分网友试用OB的最大障碍,在2.2版本发布后这点尤为明显。官网提供的2.2的相关文件是按照POC环境或者生产环境要求,无论是OCP还是OB,机器至少要求是128G内存才能顺利跑成功。如果绕过OCP直接手动部署OB,至少每个节点64G内存才可以顺利部署。手动部署需要初始化机器、修改一些参数,详情参见《 OceanBase 2

OceanBase 2.2 安装部署问题解答

让人想犯罪 __ 提交于 2020-03-20 23:36:16
3 月,跳不动了?>>> OceanBase 2.2 安装部署问题解答 OceanBase 2.2 自官网提供试用下载后,受到不少数据库爱好者的关注,很多朋友都下载尝试安装,有些成功了,有些碰到了一些问题。本文就是总结一下最近大家遇到的问题,以供后来的朋友试用参考。 关于安装部署的疑问 关于OceanBase的安装方法的文章可能有多种,这里解释一下。 在今年1月份之前官网提供的是OceanBase 1.4版本的相关文件,里面也包含了 OCP 1.x版本及其安装方法。那个版本的OCP安装可能会因为机器环境问题、资源问题而失败。所以我基于那个版本写了一篇文章《 OceanBase数据库实践入门——手动搭建OceanBase集群 》。绕开OCP直接手动安装OceanBase集群。1.4版本的OB兼容MySQL,具备OB大部分的核心能力(高可用、强一致、水平拆分、可扩展等),最重要的一点是对机器内存资源要求比较低,每个节点机器16G内存就可以搭建成功。 机器资源问题是大部分网友试用OB的最大障碍,在2.2版本发布后这点尤为明显。官网提供的2.2的相关文件是按照POC环境或者生产环境要求,无论是OCP还是OB,机器至少要求是128G内存才能顺利跑成功。如果绕过OCP直接手动部署OB,至少每个节点64G内存才可以顺利部署。手动部署需要初始化机器、修改一些参数,详情参见《 OceanBase 2

【2019年8月版本】OCP 071认证考试最新版本的考试原题-第11题

时光怂恿深爱的人放手 提交于 2020-03-18 15:46:08
Choose two. Which two statements are true about a self join? A) The join key column must have an index. B) It can be a left outer join. C) It must be a full outer join. D) It can be an inner join. E) It must be an equie join. Answer:BD (自连接其实跟两张表的连接一样。可以是等连接、左右外连接等等。 不过在进行内连接时为了区别表的名字,需要加别名 select w.ename,m.ename from emp2 w inner join emp2 m on w.mgr=m.empno; ) 来源: https://www.cnblogs.com/cnblogs5359/p/11711946.html

06-开闭原则(OCP)

久未见 提交于 2020-03-13 00:55:44
1. 背景 在软件的生命周期内,因为变化、升级和维护等原因需要对软件原有代码进行修改时,可能会给旧代码中引入错误,也可能会使我们不得不对整个功能进行重构,并且需要原有代码经过重新测试。 2. 定义 一个软件实体如类、模块和函数应该对 扩展开放 ,对 修改关闭 。 3. 解决方案 当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。 4. 深度理解(下面理解来源于网络) 开闭原则是面向对象设计中最基础的设计原则,它指导我们如何建立稳定灵活的系统。 开闭原则可能是设计模式六项原则中定义最模糊的一个了,它只告诉我们对扩展开放,对修改关闭,可是到底如何才能做到对扩展开放,对修改关闭,并没有明确的告诉我们。 以前,如果有人告诉我“你进行设计的时候一定要遵守开闭原则”,我会觉的他什么都没说,但貌似又什么都说了。因为开闭原则真的太虚了。 在仔细思考以及仔细阅读很多设计模式的文章后,终于对开闭原则有了一点认识。其实,我们遵循设计模式前面5大原则,以及使用23种设计模式的目的就是遵循开闭原则。 也就是说,只要我们对前面5项原则遵守的好了,设计出的软件自然是符合开闭原则的,这个开闭原则更像是前面五项原则遵守程度的“平均得分”,前面5项原则遵守的好,平均分自然就高,说明软件设计开闭原则遵守的好;如果前面5项原则遵守的不好,则说明开闭原则遵守的不好。 其实笔者认为

1z0-062 数据库OCP题库6

ぃ、小莉子 提交于 2020-03-06 17:40:00
You want execution of large database operations to suspend, and then resume, in the event of space allocation failures. You set the value of the initialization parameter RESUMABLE_TIMEOUT to 3600. Which two statements are true? A.Before a statement executes in resumable mode, the ALTER SESSION ENABLE RESUMABLE statement must be issued in its session B.Data Manipulation Language (DML) operations are resumable, provided that they are not embedded in a PL/SQL block. C.A resumable statement can be suspended and resumed only once during execution. D.A suspended statement will report an error if no

架构师内功心法之设计原则

╄→尐↘猪︶ㄣ 提交于 2020-02-27 04:51:55
一.架构师内功心法之设计原则 1.为什么要学习软件架构设计原则 1.1.课程目标 通过对节课内容的学习,了解设计原则的重要性。 掌握七大设计原则的具体内容。 1.2.内容定位 学习设计原则,学习设计模式的基础。在实际开发过程中,并不是一定要求所有代码都遵循设计原则,我们要考虑人力、时间、成本、质量,不是刻意追求完美,要在 适当的场景 遵循设计原则,体现的是一种 平衡取舍 ,帮助我们设计出更加优雅的代码结构。 1.3.七大设计原则 [x] 第1章 Open-Closed Principle 开闭原则 [x] 第2章 Dependence Inversion Principle 依赖倒置原则 [x] 第3章 Simple Responsibility Principle 单一职责原则 [x] 第4章 Interface Segregation Principle 接口隔离原则 [x] 第5章 Law of Demeter 迪米特法则 [x] 第6章 Liskov Substitution Principle 里氏替换原则 [x] 第7章 Composite&Aggregate Reuse Principle 合成复用原则 1.3.1.开闭原则 定义 开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放, 对修改关闭。所谓的开闭

OGG-02161 Failed to retrieve the trail file begin checkpoint position

一笑奈何 提交于 2020-02-27 03:20:00
使用ogg数据初始化时,如果我们手工去启动初始化的复制进程, 如下: GGSCI (server2 as ogg@orcl) 63> start rini_1 会报以下错误: 2019-05-10T16:46:28.867+0800 INFO OGG-06604 Oracle GoldenGate Delivery for Oracle, rini_1.prm: Database ORCL CPU info: CPU Count 4, CPU Core Count 4, CPU Socket Count 2. 2019-05-10T16:46:28.867+0800 WARNING OGG-05673 Oracle GoldenGate Delivery for Oracle, rini_1.prm: CSN-based duplicate suppression is disabled because there is no checkpoint table for this Replicat. 2019-05-10T16:46:28.867+0800 ERROR OGG-02161 Oracle GoldenGate Delivery for Oracle, rini_1.prm: Failed to retrieve the trail file begin

[PL/SQL] CURRENT_SCHEMA 的另一种使用

浪尽此生 提交于 2020-02-26 21:59:28
我们要访问另外一个用户的表时,一般是 select * from schema.table_name 方式, 有时,觉得要在表名前加一个SCHEMA,比较繁琐,我们就会使用同义词的方式来处理 ,比如 create synonym xxx for schma.xxx;那能否有另外一种方式呢,答案是肯定的 我们可以使用 alter session set current_schema=new_schema; select * from xxx; 下面具体举例: SQL> conn / as sysdba 已连接。 SQL> select count(*) from hr.employees; --需要使用HR作为前缀。 COUNT(*) ---------- 107 SQL> select count(*) from employees; --不用,就报错 select count(*) from employees * 第 1 行出现错误: ORA-00942: 表或视图不存在 SQL> alter session set current_schema=hr; --直接切换到 新的schema 会话已更改。 SQL> select count(*) from employees; --不再需要SCHEMA COUNT(*) ---------- 107 SQL> 特快、特效