4006-998-758
3000+课程任你选择
C++11训练营
研发学院 STL迭代器 内存 C++11 开课时间:2021-07-03
张银奎

1996年毕业于上海交通大学信息与控制工程系,在软件产业工作20年,拥有13年Intel工作经历,任职于INTEL公司的上海研发中心,先后在PASD、DEG、CPG、PCCG、VPG等部门工作。在英特尔先后从事软件开发、系统测试、架构设计等工作,呈担任英特尔架构事业部视觉与并行计算事业群担任首席软件架构师职务。

对IA-32架构、操作系统内核、驱动程序、设计模式、软件调优、C和C++等有深厚的工作经验,对于精炼、易于维护的代码有不懈追求。10多年GPU、CPG等深度优化技术积累和代码重构经验,每天的主要工作除了设计和编写代码外,就是调试和重构C语言代码。


查看老师详情
课程内容

第一部分:环境和准备(1小时)

LINUX基础,发行版,WSL,GCC概要,GCC基本用法,常用开关,GLIBC,动手试验,集成开发环境,VSCODE,VS for Linux C++

实战训练:在GDB下认识和理解GLIBC


第二部分:C++11背景(1小时)

C++简史,C++的优势和不足,ISO C++,C++98,C++03,C++11,C++11的目标,“看起来像新的语言”,C++14概要,C++17概要,VC11,VC13,VC15,VC17和VC19,Clang,编译器技术的革新

实战训练:切换GCC版本和认识C++不同版本的差异


第三部分:STL迭代器和自动类型(1.5小时)

问题,模板容器,vector, list, 模板容器的数据布局,stl迭代器,std::begin和std::end,用作循环变量,range-for,用作迭代器,decltype ,auto的其它用法,调试符号,在GDB中观察STL容器的问题和解决方法

实战训练:STL基础编程

实战训练:STL高级编程


第四部分:匿名函数(1.5小时)

问题,回调,排序,future,匿名函数的写法,值捕获,引用捕获,隐式捕获,表达式捕获,泛型,匿名函数的更多使用场景,std::function,CppRest案例实践

实战训练:在GDB中理解匿名函数


第四部分:异常处理和noexcept(1.5小时)

结构化异常处理(SEH),C++异常处理,throw关键字,栈展开,对象展开,noexcept的用途,通过编译清单来理解noexcept的价值,案例代码实践

实战训练:在GDB中认识异常处理器


第五部分:智能指针(1.5小时)

问题,ATL和传统解决方法,make_shared,make_unique,std::shared_ptr,,std::unique_ptr,std::weak_ptr传递对象,对象复制,传递引用,案例代码实践

实战训练:使用智能指针

实战训练:在GDB中理解智能指针


第六部分:多线程编程和线程本地存储 (1.5 小时)

多线程编程的跨平台问题问题,C++11的线程库,可变参数,TLS,TLS的传统方法,Windows API,Linux上的实现,thread_local,对操作系统的依赖,编译器实现,std::thread,std::mutex,std::unique_lock,std::future,std::packaged_task,std::condition_variable,案例代码实践

实战训练:使用C++标准库编写多线程程序

实战训练:使用GDB调试多线程死锁和理解同步对象


第七部分:内存对齐(1小时)

内存拓扑,CPU的cache结构,cache line,内存对齐的重要性,数据结构对齐,动态分配对齐,std::aligned_alloc,DPDK代码分析和实践

实战训练:编写cache友好的程序

实战训练:使用perf观察cache miss 


第八部分:标准库增强(1.5小时)

标准函数库,OO类库, STL算法,STL函数对象,STL分配器,std::regex,std::regex_match,std::match_results,案例代码实践

实战训练:使用正则表达式编程


课程形式

讲师引领的动手试验


课程对象

已经有C++语言编程基础的软件工程师,或者相关项目的测试工程师、项目带头人和技术经理


返回上一级