C++系统学习成长笔记

1、C++是一种面向对象的语言

最重要的概念就是类的概念,什么是类?类中包含什么?
C++类的概念
C++类的特点:封装、继承、多态
虚函数
公有函数也叫接口(interface)
protected 修饰的数据可以被子类继承,private修饰的数据不可以被子类继承。
虚函数可以让子类重写函数
子类重写父类中的虚函数
重写与重载的区别?

2、编程语言的学习路线:

2.1语言本身的语法规则

熟悉C++、Java、Python的语法规则,GO语言最近好像风头很盛

2.2 编程语言的基础四大件

基础四大件比语言本身要重要

2.2.1 数据结构与算法:

  • 数据结构
    链表、二叉树、vector、stack、heap、队列、双端队列这些数据结构,有邓俊辉的《数据结构----C++》、也要看一下Java的数据结构。
  • 算法
    查找、二分查找、动态规划、查询、排序

二叉树总结:
二叉树是一种数据结构

普通二叉树:
二叉搜索树:左节点数值小于根节点,右节点的数值大于根节点
红黑树:最长路径小于最短路径的两倍

二叉树的前序遍历(根左右)、中序遍历(左根右)、后序遍历(左右根)。
《剑指offer》中第7题:重建二叉树。给定一棵树的前序遍历和中序遍历,然后将这个二叉树恢复出来。
链接:https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/
在中序遍历中,根节点将二叉树分为左子树和右子树

2.2.2 计算机网络

对TCP/IP协议栈要了如指掌
需要补充!!!!!!!!!!!!!!

2.2.3 操作系统

需要补充!!!!!!!!!!!!!!
对内存管理和指针要十分熟悉。

指针(*)与引用(&)的区别:
指向int型的指针
指向float型的指针
指向结构体的指针(用->符号访问成员变量)

struct node{
int val;
node* next';
}
//这是链表节点

2.2.4 设计模式

《大话设计模式》
需要补充!!!!!!!!!!!!!!
单例模式
有23个设计模式好像

3、应用与编程实践

3.1 Linux操作系统的学习

不管从事什么方向,都得牢牢掌握,掌握Linux、基本的shell编程要熟悉

书籍《Linux就该这么学》

3.2 编译与调试工具

GCC
make
Makefile要学会
GDB调试工具要学会
《debuging with gdb》中文版
陈皓《跟我一起写Makefile》

3.3 Linux环境编程

Linux系统编程
多线程编程
网络编程
Linux系统的API
《Unix环境高级编程》
《Linux高性能服务器编程》
《POSIX多线程程序设计》

4、学习C++看的书

  • 《Essential C++》 侯捷翻译
  • 《C++ Primer》
  • 《Effective C++》 侯捷翻译
  • 《More Effective C++》 侯捷翻译
  • 《C++ 标准程序库》
  • 《深度探索C++对象模型》进阶用的,讲C++底层
  • boost是啥?boost源码?

B站UP主程序羊:自学C/C++的书籍推荐(自学C/C++看书路线推荐)

校招:华为的校招
笔试过了才有资格去面试
项目经历与基础知识考察
项目中遇到什么问题?你是怎么解决的?

Git与Svn版本控制工具

数据结构与算法相关的书籍:
B站UP主视频链接
《大话书籍结构》
二叉树比较重要、排序与查找
《剑指offer》
《编程之美》微软的面试题
《编程珠玑》

检验C语言与C++语言学习的好不好,主要看两个方面:
(1)指针
(2)内存管理

《Python编程----从入门到实践》
《Python核心编程》
《Go语言实战》
《算法(第四版)》红书
《TCP/IP详解(卷1)》
《计算机网络----自顶向下方法》
《Unix环境高级编程》
《Spring实战》
《Spring Boot实战》
《Spring技术内幕》
《MySQL必知必会》
《重构----改善既有代码的设计》

指针:
在这里插入图片描述
在这里插入图片描述


5、C++多线程


Thread类库
锁?做什么的?多个线程在运行的时候,共同分享同一块资源,临界资源,加上一把锁

1、互斥锁
2、自旋锁
3、原子操作,CAS,单一指令(compare and swap)

分布式锁,什么是分布式锁?多台机器共享一把锁,通过网络传输,共享一个变量值。

结构体相关内容:

Struct A
{
   Char t:4;
   Char k:4;
   Unsigned short i:8;
   Unsigned long m;
};

变量后面加 : 然后加数字表示位域,也就是说着代表按位来存放的,不是按字节,这是计算机为了节约空间的一种方式。char是一个字节(8个位),所以 t和k 加起来刚好8个位,也就是一个字节。然后short 一共16个位放了8个,剩下8个不够后面long存放,所以算两个字节。因为long在32是4个字节,所以一共 1 +2 +4 = 7 。然后进行结构体对齐,所以就是8.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值