C++11/14编程实战

C++11/14编程实战
    马上咨询


    丁老师  国内资深的大数据与云计算实战型技术专家

    长期任职大数据平台的构建相关领域的产品研发工作,在大数据处理、大数据分布式并行计算,流式计算处理系统、数据可视化领域有丰富的实战项目经验。


    课程目标

    本课程帮助学员能够:

    • 理解并掌握C++11/14的语言核心,从核心基础如统一初始化,有用组件如lambda,到高级主题如唯一指针、多线程到内存模型。
    • 深入理解C++11/14的陷阱并且知道如何在适合场景试用它们。
    • 理解面向对象的技术、以及高级的继承相关问题,如私有继承、多继承和虚拟继承。
    • 使用不同内存管理技巧和策略来定制和优化C++程序的内存使用。
    • 设计、实现和使用模板函数和模板类,并利用标准C++库。
    • 使用C++异常来简化大型程序的错误处理。
    • 使用设计模式、习语和泛型编程技术来编写高可用、可维护、高效与高性能的C++程序。
    • 知道如何编写有效安全的多线程代码。


    第一天上午
    介绍Introduction

    - 自我介绍Introduction to my self

    -课程大纲 The course outline 

    - C++历史Evolution of C++ 

    C++ 11/14

    - C++ 11 特性与实例Features with examples

             - auto

             - decltype

             - nullptr

             - for-loop

             - C++ 03 初始化

             - C++ 11统一初始化

             - 简化的类初始化

             - default/delete

             - final/override

             - 可变模板参数variable template args

             - 改进的库介绍

    - C++ 14 特性和实例

             - 函数返回类型识别function return type detection

             - const 表达式

             - 改进的库介绍

    第一天下午


    C++ 面向对象原则与知识

    抽象与封装Abstraction and encapsulation

    继承与多态Inheritance and polymorphism

    关系Relationships

    模式与习语Patterns and idioms

    拥有关系Has-a

    “是”的关系Is-A

    由…实现的关系Is-Implemented-in-terms-of

    “是”关系的C++实现Is-A, Is-Implemented-of in C++

    私有继承习语Private inheritance idiom

    复制与转换Copying and Conversion

    - 隐式转换implicit conversion

    - 上转与下转up-cast, down-cast

    - 类的隐式转换implicit conversion for class

    - 构造转换函数construct conversion function

    - 赋值与转换函数assignment & conversion function

    - 第二转换2nd conversion

    - 转换操作符Casting operators

    - 静态转换Static Casting

    - 动态转换Dynamic Casting

    - 物理转换Physical Const

    - Const化: enum and pointer

    - Const化: class field

    - Const化:类函数内

    - Const不是灵丹妙药

    - 逻辑Const化: mutable

    - 左值 vs. 右值

    - 移动习语支持 (右值应用)

    练习与作业
    第二天上午






    内存管理Memory Management

    - 对象什么周期Object life cycle

    - 分配失败Allocation failure 

    - 内存对其Memory Alignment

    - 空基类优化习语Empty Base Optimization Idioms 

    - 资源返回问题Resource Return Problem

    - 资源返回习语Resource Return idioms 

    - C++11 智能指针: unique_ptr

    - C++11 智能指针: shared_ptr

    - 智能指针并非万能

    异常处理与异常安全Exception Handling/Safety

    - 为什么异常Why exception handling?

    - 异常分类与处理Classifying and handling exceptions 

    - 抓取异常与抛出异常Catching and throwing exceptions 

    - 标准异常体系Standard exception hierarchy

    - 违背约定Contract violations

    - 异常安全级别Exception Safety levels

    - 构造函数中的异常Exceptions in constructors 

    - 析构函数中的异常Exceptions in destructors 

    - RAII习语与异常安全

    - 复制与转换习语Copy-and-Swap Idiom 

    - 安全转换习语Safe swap Idiom 

    二天下午






    模板与函数子改进Template and functors improvement

    - C++11的模板技术改进

    - C++11的Type traits

    - STL 容器的改进

    - Lambda (C++11)

    - Lambda 改进(C++14)

    更多设计模式与习语

    - The Object Adapter pattern

    - The Null Object Pattern

    - AOP, Decorator Pattern

    - 装饰器模式Decorator Pattern

    - AOP and Parameterized Base Class Idiom

    - 策略模式Strategy Pattern

    - Policy based class design

    - 模板方法模式The Template Method pattern

    - Default virtual implementation idiom

    - Named Parameter Idiom

    第三天上午






    并发

    - 并发与并行

    - 异步与并发

    - 任务与线程

    - C++11 并发一览

    - 多线程的Hello World

    - 管理线程

    - 线程退出

    - 避免线程提前退出

    - 线程本地存储 (C++ 11)

    - 高性能计算

    - HPC 例子

    - 多线程方案

    并发

    -  库

    - Mutex

    - shared_mutex (C++ 14)

    - lock_guard/unique_lock

    - Locking and Dead lock

    - std::lock

    - std::call_once

    - 线程间共享对象

    第三天下午










    高级对象分享

    - Semaphore

    - 条件变量

    -

    - promise

    - packaged_task

    - futures

    - future

    - 共享的future

    - async

    原子类型

    -

    - 内核模式vs. 用户模式锁

    - 原子操作

    - std::atomic_flag

    - Lock-free 编程

    数据竞争与内存模型

    - Data Race examples

    - Memory Order

    - Memory Model

    - x86 scenarios