获得徽章 10
- Day 36
在Linux系统中,一切事物均被视为文件,包括目录、文件、设备、套接字等。例如,当尝试使用打印机打印文件时,这个操作可以通过向打印机文件写入相关指令来实现。
为了实现上面的万物皆文件设计,Linux在物理文件系统之上抽象出了一层VFS(虚拟文件系统),程序通过它统一对各类文件进行访问,无论它们实际上存储在何种文件系统(例如ext、ntfs等)上。展开评论点赞 - Day 35
C++提供了4个类型转换运算符,分别是dynamic_cast、const_cast、static_cast、reinterpret_cast。
其中,dynacmic_cast支持运行时类型识别,只有转换能够进行时才会返回相应的指针,否则返回空指针。评论点赞 - Day 34
C++为了解决多继承带来的菱形继承关系(例如类B和C继承自A,而类D继承了B和C)造成的重复父类(前面的例子里,B和C都继承自A,因此D会拥有两个重复的祖先类A)问题,引出了虚基类的概念,虚基类是指在继承时用virtual修饰的类,虚基类会保证从多个基类相同的类派生的对象只继承一个基类对象。评论点赞 - Day 33
C++的多态大致可以分为静态多态和动态多态。静态多态通过模板(template)实现,它在编译时由编译器生成相应的代码,不具备运行时多态特性;而动态多态一般通过虚函数(virtual)实现,虚函数通过虚函数表实现指针和方法的动态绑定,从而实现运行时多态。评论点赞 - Day 32
结构型模式可以分成类结构型模式和对象结构型模式。其中,类结构型模式关心类的组合,在这种类型中,一般只存在继承关系和实现关系;对象结构型模式关心类与对象的组合,通过关联关系,在一个类中定义另一个类的对象并使用这个对象。评论点赞 - Day 31
结构型模式关注如何将现有类或对象组织在一起形成新的结构,而创建型模式关注如何构造和封装类的实例化过程。
常见的创建型模式有单例模式、工厂模式、建造者模式等,常见的结构型模式有适配器模式、外观模式、组合模式等。评论点赞 - Day 30
单例模式依据具体实现不同可以分为饿汉式和懒汉式两种,其中饿汉式实现会在单例类被加载时就创建出单例对象,而懒汉式会在第一次访问单例对象时才会创建单例对象。
饿汉式实现不存在线程安全问题,而懒汉式实现则需要通过加锁的方式确保线程安全。评论点赞 - Day 29
设计模式是在特定环境下为了解决某一通用软件问题提供的一套定制的解决方案,它描述了对象和类之间的相互作用。
根据设计模式的目的,可以分为创建型模式、结构型模式和行为型模式三类。评论点赞 - Day 28
MapReduce模型的基本构思是分而治之。具体来说,定义了Map和Reduce两个方法,Map将一组数据(一个Key-Value对)转换为一个或一组新的Key-Value对,可以将该过程看作是计算过程;而Reduce是将Key相同的若干个Key-Value对处理为一个或一组新的Key-Value对,可以看作是将Map处理后的数据进行汇总和输出。展开评论点赞