pointer to implementation:指向实现的指针,使用该技巧可以避免在头文件暴露
原创 2022-08-07 00:02:04
348阅读
pimpl idiom flyfish 2014-9-30 pimpl是Pointer to implementation的缩写为什么要使用pimpl 1最小化编译依赖 2接口与实现分离 3可移植 pimpl idiom也被称作Cheshire Cat , Compiler Firewall idiom.,d-pointer 这个技术在设计模式中作为桥接模式(Bridge pattern.)来
转载 2017-08-12 20:11:00
117阅读
2评论
以下两段不同程序的比较//file a.h#include "a.h"#include “ b.h”class A{void Fun(); B b;}//file:a.cpp#include "a.h" //无形中也引入了b.hvoid A::fun(){ b.fun();//调用类a的fun方法}//file: main.cpp#include"a.h." //无形中也引入了b.hint main(){Aa;a.fun();return 0;}由以上代码可以观察到:1、引入了更多的头文件,降低了编译的速度 main.cpp 和a.c
转载 2013-09-17 22:34:00
133阅读
2评论
以下两段不同程序的比较//file a.h#include "a.h"#include “ b.h”class A{void Fun(); B b;}//file:a.cpp#include "a.h" //无形中也引入了b.hvoid A::fun(){ b.fun();//调用类a的fun方法}//file: main.cpp#include"a.h." //无形中也引入了b.hint main(){Aa;a.fun();return 0;}由以上代码可以观察到:1、引入了更多的头文件,降低了编译的速度 main.cpp 和a.c
转载 2013-09-18 20:20:00
94阅读
2评论
对于规模较大的C++项目,头文件的互包含和互依赖关系经常困扰开发者.例如:class foo{public:foo();void method_foo_b(const foo_a& b);private:void method_foo_c(const foo_b& c);private:foo_b b_;foo_c c_;};int main(...){foo fooi;}如果要使得main或者一个必须包含foo的class通过编译,则不仅需要包含foo头文件,还必须包含foo_b, foo_c的头文件.而实际上foo_b, foo_c是foo内部使用的类,完全不需要外部调用着
转载 2012-03-27 23:30:00
121阅读
2评论
 C++程序的设计机制2 Pimpl机制 pImpl惯用手法的运用方式大家都很清楚,其主要作用是解开类的使用接口和实现的耦合。本文从Pimpl机制分析开始讲起,一起来看。 AD: Pimpl机制是Private Implementation的缩写,我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们一般都会修改私有接口,但是这会导致包含该头文件的
原创 2013-01-29 09:42:29
462阅读
直接上代码//
原创 2022-08-16 17:08:49
111阅读
设计三大原则:       DRY: Don't Repeat Yourself。这条准则是  不要重复你自身 。尽量在项目中减少重复的代码行,重复的方法,重复的模块。其实许多设计原则和模式最本质的思想都是在消除重复。我们经常提起的重用性和可维护性其实是基于减少重复这一简单的思想。有效的防止了“ 散弹式修改” -- 由于代码重复而
转载 2024-07-26 10:21:51
51阅读
什么叫DDD?从名称入手,顾名思义DDD(domain driven design),领域驱动设计,是一种设计思想。个人浅薄的理解,DDD主要是想告诉我们在程序设计中,从领域出发,由领域驱动设计,不是由项目驱动设计,也不是由过程驱动设计,先由领域专家进行领域建模,围绕领域进行功能分解,再由开发进行领域实现。践行DDD可以从6w模型入手,首先介绍一下什么是6W模型6W模型:  why(业务
   HDFS设计目标1)硬件错误是常态,数据保存需要冗余。2)数据批量读取,Hadoop擅长数据分析而不是事务处理。3)大规模数据集。4)简单一致醒模型,降低系统复杂度,文件一次写入多次读取,)“数据就近”原则分配数据节点。HDFS体系结构NameNodeDataNodeSecondayNameNode事务日志映像文件 NameNode文件系统命名空间记录
转载 2024-02-17 12:38:43
30阅读
一、遇到的问题 1.隐藏实现 我们在给客户端提供接口的时候只希望能暴露它的接口,而隐藏它的实现或者算法。这时候,至少至少有两种选择: (1)写一个抽象类, 然后继承它 (2)使用PIMP
转载 2021-08-11 11:24:20
1331阅读
转载 2018-11-08 13:14:00
72阅读
2评论
public class A { public void t1(){ } public void t2(){ }}//B类想同时拥有: t1(),t2(),t3(),t4(
原创 2022-12-15 13:41:48
81阅读
在深入了解jQuery的各个细节之前,需要对jQuery的设计思想有一个大致的了解。在遇到问题时, 知道应该使用jQuery的哪一个功能,然后迅速从手册中找到具体的用法。本文将详细介绍jQuery的设计思想 选择元素  jQuery的基本设计思想和主要用法,就是"选择某个网页元素,然后对其进行某种操作"。这是它区别于其他javascript库的根本特点  使用jQuery的第一步,往往就
转载 2017-06-06 09:39:36
587阅读
jQuery的基本设计思想和主要用法,就是选择某个网页元素,然后对其进行某种操作。这是它区别与其他Javascript库的根本特点。「一」选择网页元素使用jQuery的第一步,往往就是将一个选择表达式,放进构造函数jQuery() (简称为$),然后得到被选中的元素。选择表达式可以是 CSS选择器:  $(document) //选择整个文档对象  $('#myId') //选择ID为myId的网
转载 2021-01-19 17:01:07
187阅读
2评论
变换(Transformation)设计 React 的核心前提是认为 UI 只是把数据通过映射关系变换成另一种形式的数据。同样的输入必会有同样的输出。这恰好就是纯函数。function NameBox(name) { return { fontWeight: 'bold', labelContent: name }; }抽象(Abstraction)function FancyUserBox
原创 2023-11-21 09:54:32
68阅读
Linux操作系统被广泛认为是自由开放源代码软件运动的杰作之一,其设计思想深受自由软件运动的影响。而在Linux操作系统中,红帽(Red Hat)的地位尤为重要,它不仅是一家技术公司,更是Linux操作系统的领军者之一。在了解红帽相关的设计思想之前,我们需要了解一下Linux操作系统的设计原则。 Linux的设计思想体现了自由软件运动的核心理念,即自由获取、审查和修改源代码。这一理念在Linus
原创 2024-03-15 11:27:43
645阅读
容器设计思想1.    云原生技术:云原生为用户指定了一条低心智负担的、敏捷的、能够以可扩展、可复制的方式最大化地利用云的能力、发挥云的价值的最佳路径云原生技术的本质是两个理论基础。第一个理论基础是:不可变基础设施。这一点目前是通过容器镜像来实现的,其含义就是应用的基础设施应该是不可变的,是一个自包含、自描述可以完全在不同环境中迁移的东西;第二个理论基础就是:云应用编
原创 2024-02-11 22:22:41
295阅读
         最近工作用Rxjava,发现有些东西忘记了,翻了翻资料,才想起来。可能是年纪大了记性不好,所以在这里写下来,以后在需要查资料就不用去到处找了,直接看自己的博客就好了。依赖在安卓中,除了依赖RxJava外,还需要依赖一下RxAndroidcompile 'io.reactivex.rxjava2:rxandroid:2.1.0' c
Tachyon的设计思想主要有两个,第一个是基于内存的OffHeap的分布式存储,就是一定要把数据存储在JVM堆空间之外,这样的话能够避免GC。第二个是通过在存储层保存数据的Lineage实现容错,这是在Spark中引入的
转载 2022-07-19 19:58:31
79阅读
  • 1
  • 2
  • 3
  • 4
  • 5