目前课程版本:5.5 升级时间:2020.07.18 查看详细
我们加深重点内容的讲解力度,结合实际开发的用法,增加项目比重,使学员增长开发经验和知识的应用与理解,对于以后的职业生涯有极大的帮助。牢固的基础是后续无论做项目经理还是更高层的技术研究还是其他语言的开发,都是必须的。咱们在授课的过程中,不仅关注知识的消化吸收,还注重帮助学员的职业规划,更长远的发展。
从整个IT行业角度出发,我们将C/C++定位于后端服务与安全研发工程师,意味着从windows开发到Linux开发,从前端界面到后台服务器、从C/C++语言的底层开发到高级的上层应用开发都可胜任,而且可以掌握常见的攻防手段,让技术之路更加稳重。对于大型项目,我们课程项目紧跟时代潮流,包含移动开发、云传输等,游戏服务器,负载均衡服务器等,让学员尽快的适应企业需求。
内容围绕行业热门技术,有针对性的进行项目实战。在课程内容方面,我们的项目从企业级应用类项目,到时尚热点应用类项目,再到高性能、分布式服务器类项目,最后到微服务项目;层层递进。从传统PC信息系统开发,到Linux系统开发,再到跨平台终端开发。让你学精、学深、学透C/C++,能做到系统培训后,对整个知识形成体系,业后可以有广博的知识面,并且学以致用。
我们培养的学员就业范围广阔,如:桌面游戏工程师、Linux服务器开发工程师、Linux系统架构师、渗透测试工程师、网络安全研发工程师、微服务工程师、Web服务器开发工程师、大数据/云计算工程师。涉及到的行业从传统的金融银行到流行的商业项目,从系统安全到网络安全,再到新兴的大数据、物联网、人工智能开发和区块链开发等热点,C/C++无所不能,总之不用担心学会了C/C++会没有市场。
对C/C++感兴趣,但没有任何软件编程基础,想先从零基础入手的软件开发爱好者;希望从另外一些简单的其他语言转型从事C++开发的求职人员。
注:获取更多免费学习视频+资料+笔记,请加QQ:2632311208。
全日制脱产,每周5天上课, 上两天课休息一天的上课方式(实际培训时间可能因法定节假日等因素发生变化)
部分校区可能会根据实际情况有所调整,详情可询咨询老师 点击咨询
C/C++基础班课程大纲 | |||
所处阶段 | 主讲内容 | 技术要点 | 学习目标 |
第一阶段: C开发实战 | 1.C语言概述与数据类型 | 1.计算机基础;2.第一个C语言程序;3.C的代码的含义与编译;4.集成开发环境(vs)5.常量与变量;6.进制转换;7.数组与字符串 | 可掌握的核心能力: 1、通过C语培养编程思维和动手能力; 2、通过C语言的学习培养面向过程编程思想,为以后的深入学习就业课程打下坚实基础。 可解决的现实问题: 1、具备C/C++领域基础专业编程能力; 2、实现电子词典项目案例; 3、实现贪吃蛇项目案例。 市场价值: 具备学习编程思维,但尚不能达到任何企业用人标准。 |
2.条件判断与循环语句 | 1.运算符与优先级;2.强制类型转换运算符;3.if条件控制语句;4.if-else语句;5.三目运算符;6.switch语句;7.for/break/continue | ||
3.字符串与函数 | 1.函数的基本概念;2.字符串操作的常用函数;3.自定义函数 | ||
4.数组 | 1.一维数组的定义和使用;2.一维数组的基本操作;3.一维数组的案例(如:最值,排序);4.二维数组的定义和使用;5.二维数组的基本操作 | ||
5.指针 | 1.指针变量的定义;2.指针基本使用;3.const修饰的指针; 4.一级指针与数组名的关系;5.指针法操作数组元素; 6.指针作为函数的参数;7.数组作为函数的参数;8.指针做函数的返回值;9.指针处理字符串 | ||
6.内存管理 | 1.局部变量的作用域和生命周期;2.静态局部变量的作用域和生命周期;3.全局变量的作用域和生命周期;4.静态全局变量的作用域和生命周期;5.静态函数和非静态函数的区别; 6.内存分区;7.堆区内存的分配(malloc)和释放(free) | ||
7.复合类型 | 1.结构体的基本用法;2.结构体嵌套指针和数组;3.结构体作为函数参数;4.复合类型的声明与使用 |
1、已学习过C/C++基础班课程内容的相关人士;
2、自学过C/C++书籍与视频资料,有一定的C/C++基础的相关人士。
全日制脱产,每周5天上课, 上两天课休息一天的上课方式(实际培训时间可能因法定节假日等因素发生变化)
部分校区可能会根据实际情况有所调整,详情可询咨询老师 点击咨询
C/C++就业班课程大纲 | |||
所处阶段 | 主讲内容 | 技术要点 | 学习目标 |
第二阶段: C高级编程 | 1.内存分区、函数调用模型 | 1.数据类型、变量的含义;2.内存四区特点;3.函数的调用模型;4.内存操作函数;5.宏定义与预处理 | 可掌握的核心能力: 1、掌握C语言中的字符串、一维数组、二维数组的用法; 2、掌握一级指针,二级指针,三级指针的高级用法,理解N级指针概念,指针数组和数组指针; 3、学会结构体、文件的使用; 4、C语言接口封装设计。 可解决的现实问题: 1、可以实现自己开发小程序,例如贪吃蛇一类的用C语言写的程序; 2、应用C语言接口封装设计的方法,进行企业项目开发。 市场价值: 可以掌握C语言深入技巧,灵活应用C语言接口封装设计的方法,但尚不能达到任何企业用人标准。 |
2.指针高级 | 1.指针基本使用;2.指针的步长的概念;3.指针简介赋值;4.指针以及多级指针做函数参数的特性与使用;5.通过指针操作字符串;6.const类型修饰符;7.位的逻辑运算符;8.移位运算符;9.数组指针与指针数组;10.多维数组做函数参数;11.结构体嵌套一级指针;12.浅拷贝深拷贝 | ||
3.函数指针与回调函数 | 1.封装和设计的思想;2.函数指针定义的三种方式;3.回调函数 | ||
4.数据结构与链表 | 1.链表的基本概念;2.单链表的相关操作 | ||
5.递归函数 | 1.递归函数的概念;2.递归的使用 | ||
6.接口的封装和设计 | 1.函数的封装设计;2.解耦合的设计理念;3.模块实现与业务分离的思想 | ||
7.数据结构与算法 | 1.大O表示法基本概念;2.线性表顺序存储和链式存储概念;3.线性表的顺序存储(数组);4.线性表的链式存储(链表);5.队列的顺序与链式存储;6.栈的顺序与链式存储;7.二叉树基本操作;8.常用排序算法 | ||
第三阶段: C++核心编程 与桌面应用开发 | 1.C++对C的扩展、引用 | 1.C++语言的命名空间的使用;2.C++对C的扩展;3.C、C++中const不同之处;4.定义和使用引用类型变量;5.C++11常用语法 | 可掌握的核心能力: 具备常用C++方向基本知识和常用技能。 可解决的现实问题: 能够具备基本的开发能力,看懂简单代码,实现开发简单程序软件的功能。 市场价值: 熟练学习和掌握后,可满足企业开发的初级需求。 |
2.函数重载 | 1.类的的默认参数;2.c++的函数重载;3.类和对象的基本概念; 4.类的封装和访问控制权限;5.类和对象进行简单编程 | ||
3.类和对象 | 1.类的构造函数;2.类的析构函数;3.explicit关键字作用; 4.类的拷贝构造函数的使用;5.深拷贝和浅拷贝问题;6.多个对象的构造和析构函(初始化列表) | ||
4.对象的动态分配和释放 | 1.类和对象的动态分配和释放内存;2.静态成员变量和函数的使用; 3.C++编译器对成员变量和成员方法的处理机制;4.this的使用; 5.友元函数;6.友元类 | ||
5.运算符重载 | 1.运算符重载概念;2.常用运算符重载;3.自定义的智能指针类;4.实现一个自定义的String类 | ||
6.类的继承和派生、多态 | 1.继承中的访问控制;2.继承中的构造和析构;3.多继承4.virtual继承的基本概念;5.多态的使用(多态成立条件、使用场景);6.区分成员函数的重写和重定义;7.虚函数表指针,分步初始化;8.虚函数;9.纯虚函数;10.抽象类的使用;11.虚析构函数和纯虚析构函数 | ||
7.函数模板、类模板 | 1.函数模板基本语法;2.函数模板和函数重载的调用规则;3.编译器对模板的编译过程;4.类模板的概念和基本语法;5.继承中的类模板;6.类模板中普通友元函数、友元函数模板的处理 | ||
8.异常、I/O流 | 1.C++类型转换;2.C++标准异常库;3.异常的抛出与捕获;4.C++标准I/O流(cin、cout);5.C++的文件I/O类的使用 | ||
9.STL | 1.STL容器、迭代器的原理;2.序列式容器vector、string、deque;3.堆栈容器stack、quenue;4.双向链表容器list;5.关联式容器set、multiset; 6.对组pair;7.关联式容器map、multimap;8.STL算法详解 | ||
10.Qt常用的控件 | 1.Qt的基本概念;2.Qt应用程序框架;3.Qt信号和槽的应用;4.Qt窗口系统;5.常用对话框的使用;6.Qt界面设计;7.Qt事件处理 | 可掌握的核心能力: 具备常用QT界面开发的基本技巧和常用技能。 可解决的现实问题: 能够实现简单的前台界面开发。 市场价值: 熟练学习和掌握后,可满足企业开发的初级需求。 | |
11.Qt绘图与文件操作 | 1.QPainter绘图;2.update函数;3.绘图设备(QPixmap、QBitmap、QImage、QPicture);4.文件操作 | ||
12.Qt综合案例实战 | Qt综合案例 | ||
第四阶段: Linux高并发服务器开发 | 1.Linux命令 | 1.Linux下的目录结构;2.工作日常应用命令;3.Ubuntu下的软件安装和卸载; | 可掌握的核心能力: 具备常用后台服务器开发方向基本知识和常用技能,并具备基本的开发能力。 可解决的现实问题: 能够实现包括服务器后台、前端界面、服务器数据库的开发。 市场价值: 熟练学习和掌握后,可满足企业开发的初中级需求。 |
2.Linux开发与调试工具 | 1.vim命令模式下操作;2.vim末行模式下操作;3.vim的配置;4.gcc的工作流程和掌握常见参数;5.Linux下的静态库与共享库(windows动态库)的制作和使用; 6.Makefile;7.gdb调试;8.pcb和文件描述符,虚拟地址空间;9.Linux系统IO函数;10.阻塞和非阻塞的概念 | ||
3.系统I/O操作 | 1.stat/lstat函数;2.文件属性相关函数;3.链接相关概念及函数;4.目录操作相关概念及函数;5.dup、dup2函数;6.fcntl函数 | ||
4.进程与IPC通信 | 1.进程相关的概念;2.进程操作相关函数;3.孤儿进程;4.僵尸进程;5.进程回收;6.进程间通信 | ||
5.线程与并发同步 | 1.互斥量;2.死锁以及解决方案;3.读写锁;4.条件变量;5.条件变量实现生产消费者模型;6.信号量实现生产消费者模型;7.线程同步解决哲学家就餐问题; | ||
6.信号 | 1.信号中的基本概念;2.使用信号相关的函数;3.信号内核实现原理;4.信号捕捉函数signal、sigaction;5.使用信号完成子进程的回收;6.发送信号时如何进行参数传递; | ||
7.网络协议与网络编程 | 1.OSI七层模型结构;2.TCP/IP四层模型结构;3.B/S、C/S优缺点对比; 4.常见网络协议格式;5.套接字;网络字节序;6.IP地址转换函数;7.编写TCP的C/S网络程序;8.UDP通信机制与模型;9.本地套接字;10.三次握手建立连接过程; 11.四次握手断开连接过程;12.滑动窗口概念;13.错误处理函数封装;14.TCP状态转换;15.2MSL概念;16.端口复用方法;17.半关闭; | ||
8.高并发服务器开发 (poll、select和epoll) | 1.多路IO转接模型;2.select函数;3.fd_set相关操作函数; 4.select多路IO转接模型poll操作函数;5.epoll多路IO模型;6.线程池模型的设计思想;7.多进程并发服务器;8.多线程并发服务器;9.libevent库;10.epoll反应堆模型;11.使用BufferEvent、evBuffer; | ||
9.Linux并发服务器项目实战(WebServer) | 通过项目实战,使大家熟悉Linux知识的应用,已经如何开发服务器程序,从项目需求分析项目设计,到项目实现,对程序开发有个整体的认识。 | ||
第五阶段: Windows/Linux 跨平台企业项目实战 (项目1) | 1.oracle | 1.简单查询;2.oracle的常用函数;3.多表查询;4.集合操作;5.DDL操作管理表;6.DML管理数据;7.其它数据库对象;8.PL/SQL编程;9.存储过程与存储函数 10.触发器;11.工具查询;12.解决Top-N问题; | 可掌握的核心能力: 掌握常用数据库类型的操作技巧和简单开发。 可解决的现实问题: 熟练应用项目中使用的数据库知识,能做简单的数据库开发。 市场价值: 熟练学习和掌握后,可满足企业开发的初中级需求。 |
2.mysql | 1.mysql表的约束;2.mysql中出现的中文乱码问题;3.mysql函数库连接数据库; 4.mysql API访问数据库;5.使用基础类API实现mysql客户端工具;6.预处理类API访问mysql数据库;7.使用api修改mysql事务特性; | ||
3.企业财富库的接口的封装和设计 | 1.外联接口2.线程同步3.socket4.线程池 | ||
4.windows经典应用程序开发 | 1.windows下图形化界面;2.设计模式的应用3.异步通信4.xml5.json6.html 7.共享内存,消息队列 | ||
5.Linux信息安全开发 | 1.共享内存,消息队列2.秘钥加密(对称、非对称)3.接口封装设计4.protobuf介绍与使用5.git代码管理6.程序操作数据库 | ||
6.跨平台兼容开发与调试 | 1.windows与linux跨平台通信2.windows与linux跨平台调试 | ||
7. 金融类安全传输平台 | 本项目类似于支付宝与银行的汇帐,二者相互识别与身份认证,是一款基础设施类项目,实现标准的信息安全服务; | ||
第六阶段: 分布式云存储开发 (项目2) | 1.分布式文件存储服务器和缓存服务器 | fastDFS分布式存储系统应用开发、redis缓存开发 | 可掌握的核心能力: 掌握高性能服务器解决方案(负载均衡); 掌握分布式存储解决方案(redis集群/mysql集群); 掌握项目压力测试和单元测试,掌握服务器逻辑开发。 可解决的现实问题: 解决大型互联网公司并发高吞吐问题; 解决分布式web应用服务器集群问题。 市场价值: 熟练学习和掌握后,可满足企业开发的初中级需求。 |
2.深入理解nginx | nginx的部署、nginx维护机制、nginx通信架构模型、nginx的高并发性能架构 | ||
3.负载均衡反向代理 | 基于nginx搭建反向代理、分布式web应用服务器搭建 | ||
4.分布式云存储系统 | 本项目是指通过集群应用、网络技术或分布式文件系统等功能,实现的云盘可实现高性能、分式式存储,可以为社区、电子商务网站、银行、政府、证券等提供公共后端云平台。 | ||
第七阶段: Go语言微服务项目 (项目3) | 1.Go语言语法 | 1.Go语言基础语法及常用数据结构2.Go语言面向对象语法使用,创建并发、channel 实现同步3.Go语言的网络并发实现4.串联使用Go语言知识点实现简单案例 | 可掌握的核心能力: 1.具备市场主流分布式技术; 2.具备go语言高并发后台开发能力; 3.具备docker虚拟化容器技术; 4.具备分布式微服务架构设计能力。 可解决的现实问题: 1.解决企业容器虚拟化技术; 2.解决企业从资源的利用率和可用性优化方案; 3.解决传统PaaS企业,采用Micro Service(微服务)的方式来实现他们的应用。 市场价值: 可满足市场对go中级程序员的需求,独立设计开发微服务项目。 |
2.掌握微服务开发 | 1.rpc使用2.protobuf使用3.grpc使用4.consul安装5.consul命令行使用 6.consul代码实现7.go-micro安装8.go-micro使用 | ||
3.IHome微服务应用开发 | 1.RESTful的设计2.MVC框架3.orm的作用及工作流程4.使用gorm对关系型数据库进行增删改查操作 5.使用gin框架进行web应用开发 1).session和cookie使用 2).验证码业务 3).注册业务 4).登陆业务 5).头像业务 6).轮播图业务 7).订单业务 | ||
4.docker操作 | 1.docker容器的进入、生成新的镜像2.docker私有仓库的使用配置3.docker数据卷的使用4.docker数据卷容器的使用5.docker端口映射的使用6.docekrfile的功能介绍7.dockerfile的使用 | ||
第八阶段: (赠送资料视频) | 1.Shell高级编程 | 1.高级指令引入;2.Shell函数;3.Shell特殊用法;4.Shell案例实战 | 课程设计理念: Shell编程作为Linux平台高级运维语言,掌握Shell可以在任意Linux/Unix操作系统做系统维护和问题定位。 可掌握的核心能力: Unix/Linux下Shell编程开发; 掌握Shell的函数语法和工具制作; 掌握Linux常用Shell指令和问题定位方法; 面试强化训练。 可解决的现实问题: 复习和巩固所学知识,进行专题面试强化。 |
2.面试强化 | 1.高级数据结构;2.数据库加强训练;3.面试强化训练 | ||
第九阶段: Lars-负载均衡远程服务 调度系统 (赠送资料视频) | 1.Reactor模式并发Service C++网络服务器框架开发 | 1.io_buffer缓冲处理2.event callback模型3.定时器队列管理4.定时器队列超时事件5.eventLoop初始化6.tcp/udp server API封装7.常见服务器处理机制 | 可掌握的核心能力: 具备市场并发服务器框架发开能力; 具备源码分析能力; 具备企业基础设施架构层编程能力; 可解决的现实问题: 解决大型企业服务器高并发问题; 解决门户网站内部服务器负载均衡问题; 解决电商类或其他互联网类服务器监控及负载均衡问题; 市场价值: 熟练学习和掌握后,课满足企业开发的初中级,甚至高级需求。 |
2.DNS与路由Service | 1.初始化one loop per thread模型 server2.route信息存储3.RouerVersion及时间戳存储4.ChangeLog存储5.Backend Thread后台守护线程 | ||
3.负载均衡代理Service | 1.节点获取服务2.节点调用结果上报服务3.负载节点调度模型4.健康检查5.LoadBalance负载均衡算法 | ||
4.信息上报Service | 1.Single Thread TCP Server模型2.消息封装内容3.一致性hash算法4.hash数据结构 | ||
5.开发者API设计 | 1.API缓冲层api调度方式2.cpp接口api封装3.python接口api封装4.java接口api封装 | ||
6.压力测试 | 1.qps压力测试2.单元测试 | ||
第十阶段: 入侵检测 与网络攻防 (赠送资料视频) | 1.Kali Linux操作系统实战 | 1 Kali Linux介绍2.Kali Liunx安装3.Kali Linux系统更新4.Kali Linux基本配置5.Kali Linux 常用攻击工具 | 可掌握的核心能力: 具备市场主流网络安全攻防技术; 具备流量监测等核心安全研发能力。 可解决的现实问题: 解决国内外敌对势力通过隐匿通道(如VPN、即时通信软件)有限监控手段现状问题; 解决私有加密应用和网络异常通信行为,并能对加密流量进行还原和审计。 市场价值: 熟练学习和掌握后,可满足企业开发的初中级、甚至高级需求。 |
2.网络防御技术 | 1.网络攻防环境搭建2.信息安全理论 3.Linux基本安全防护技术 1)访问权限 2)访问控制列表ACL 3)文件属性 4)PAM技术 5)特权机制 4.安全审计 5.网络嗅探及协议分析技术 1)Wireshark抓包工具 2)Tcpdump抓包工具 3)网络嗅探技巧 6.Linux防火墙技术 1)Iptables详解配置规则 2)TCP Warrpper 7.Linux 入侵检测分析技术 1)Debian 9 入侵分析 2)开机自启服务与安全防护机制 | ||
3.网络攻击技术 | 1.安全渗透2.范围界定3.信息收集与DNS记录分析 4.目标识别技术 1)识别目标主机 2)系统指纹信息识别 5.服务枚举 1)端口扫描 2)Nmap识别服务指纹信息 6. DDOS分布式拒绝服务攻击 1)TCP SYN Flood攻击 2)TCP Reset攻击 7. 口令暴力破解 8. 网络攻防艺术 9. 渗透测试实战 | ||
4.异常通信行为分析 | 1.异常域名检测:通过分析域名请求、应答记录发现异常域名,留存域名访问记录元数据。 2.异常通信行为分析:发现网络异常通信行为,如内部主机和外部主机的间歇性连接、服务器主动外联、工作主机非工作时间主动外联等 | ||
5.加密流量还原 | 支持自由门、极速VPN、shadowsocks等隐匿通道的流量破解还原能力,支持Talkbox应用的破解还原。 | ||
大项目3: 网络隐匿私有应用入侵检测系统 | 网络私有应用监测系统主要由多核硬件平台、安全操作系统、监测引擎、存储管理、数据关联分析、协同分析、升级管理、维护管理、综合管理界面等功能模块组成。 |
备注:该课程大纲仅供参考,实际课程内容可能在授课过程中发生更新或变化,具体授课内容最终以各班级课表为准。
每晚对学员当天知识的吸收程度、老师授课内容难易程度进行评分,老师会根据学员反馈进行分析,对学员吸收情况调整授课内容、课程节奏,最终让每位学员都可以跟上班级学习的整体节奏。
为每个就业班都安排了一名优秀的技术指导老师,不管是白天还是晚自习时间,随时解答学员问题,进一步巩固和加强课上知识。
为了能辅助学员掌握所学知识,黑马程序员自主研发了6大学习系统,包括教学反馈系统、学习难易和吸收分析系统、学习测试系统、在线作业系统、学习任务手册、学员综合能力评定分析等。
末位辅导队列的学员,将会得到重点关心。技术辅导老师会在学员休息时间,针对学员的疑惑进行知识点梳理、答疑、辅导。以确保知识点掌握上没有一个学员掉队,真正落实不抛弃,不放弃任何一个学员。
从学员学习中的心态调整,到生活中的困难协助,从课上班级氛围塑造到课下多彩的班级活动,班主任360度暖心鼓励相伴。
小到五险一金的解释、面试礼仪的培训;大到500强企业面试实训及如何针对性地制定复习计划,帮助学员拿到高薪Offer。