当前位置: 首页 > news >正文

学cpp看的那点书

C++

C++ Primer

语言基础学习

C++ Templates The Complete Guide (2nd Edition)

学习模板,更好的阅读 STL 源码,毕竟C++ 标准库大部分是模板。

The C++ Standard Library

全称

The C++ Standard Library
A Tutorial and Reference
Second Edition

简单的了解标准库

effective modern cpp

学习c++11的新特性等比较好的书;

汇编

了解语法和常见指令即可; 生僻指令用时查阅; 毕竟指令文档都有几千页; 用时再查, 了解常用的即可;

编译

Makefile

主页有文档,有教程。https://www.gnu.org/software/make/
可以学习如何编译小型项目和大型项目,项目依赖。并行编译等。
案例
gcc test.cpp -o ./a.outmakefile里面如下

./a.out : test.cppgcc test.cpp -o ./a.out

表示如果./a.out编译后,test.cpp发生了更新,再次编译就需要重新编译。即增量编译,这样可以减少编译时间。特别是编译文件比较多的时候。编译指令就是gcc test.cpp -o ./a.out;

gcc g++

编译指令集,gcc, g++只是一个指令,其内部有很多指令。
https://www.gnu.org/software/gcc/ 官网有manual文档;
了解编译指令和作用,包括编译几个阶段,指令选项。编译优化调试,makefile辅助规则生成; 等等;

bash: 必学

编译和linux环境下必须要会的;
https://www.gnu.org/software/bash/
主要介绍了指令如何解析,如何编程,执行原理,高级技巧等;

binutils

linux下二进制分析工具集合; 建议熟练掌握; 用于分析二进制;

CMake

一个makefile生成器; 也可以生成visual studio sln, 可以看成是个项目配置生成器。为各种ide生成编译配置。

操作系统

Linux Kernel Development Third Edition

第三版的linux内核介绍,有中英文,对操作系统进行详略得当的说明。 进程线程等概念,调度器算法的演变。

understanding linux kernel

详细到源码级别的讲解。需要一定基础,结合linux内核源码,建议2.6.32等。

linux signal

信号机制是一个比较常用的机制,和编程也联系比较密切。

The Linux Programming interface

linux环境下常用api介绍和原理; 比较适合作为linux环境下的编程字典; 不会就查; 也适合用来了解linux的常用环境书籍;

程序员的自我修改

从二进制详细分析介绍, 到代码编译连接原理等;
linker and loader比较老的书;

itanium abi

介绍c++的编译规则; 如何将cpp代码变成二进制的, 符号如何解析, 二进制如何排列, 各自对应类型, 各种机制实现, 符号加密;

开发工具

vscode: 必备神器

远程linux的利器; 当然用命令行也可以, 但是效率要比vscode慢很多; 而且vscode有很多插件; 就是有点占用资源;

git

替代传统的ctrl c, ctrl v备份; 用git来管理备份; 高效容易管理; 有学习难度;
官方文档前几章可以满足80的需求; 高级的边用边学;

filezilla

开源免费轻量级文件传输;

windows terminal + cmder

美观, 高效, 支持历史记录和历史搜索, 自动补全;

7 zip

轻量级开源压缩解压工具;

sublime

一键编译执行的利器; 高效开发各种脚本;

notepad++

轻量级, 搜索高效;

脚本

bat

windows下自动化必备;

bash

linux下自动化必备

python

丰富的库, 支持开发各种类型脚本; 非常强大; 简单易学;

exploring expect

一个和交互式命令行打交道的脚本; 按需学习, 可以了解;

网络

tcp/ip中英结合阅读

第一本概念: tcp udp原理, 高级的输入和接受提效机制原理; (滑动窗口和拥塞窗口)

第二本实现: 主要是实现介绍, 底层包管理, 差不多是源码分析了;

第三本编程: 主要是unix域, 自定义组包等;

wireshark

也有其他工具, 抓包分析; 明文类型分析, 包头分析; http分析; 加密协议基本无法获取有用信息;

性能优化

gdb: 必学

代码调试必备技能 https://www.gnu.org/software/gdb/
如何调试执行时的程序; 从如何启动; 断点设置; 函数调用栈; 内存数据分析; 汇编调试分析; 异常抛出位置; 野指针导致崩溃; 多线程调试分析等等;

perf

查看代码热点, 缓存命中等; 主要是优化热点代码;
注意: 优化和代码可读性不可兼得; 维护就变得困难;

mit Performance Engineering of Software Systems

公开课, 第一课从矩阵计算优化挑起读者兴趣; 后面的课程对于基础要求比较高MIT的学生默认基础好?;
高性能入门了解;

Performance analysis on a modern CPU

性能分析各种技巧; 从cpu内部分析;

缓存分级, 缓存命中, 多核通讯

建议了解学习;

编译优化

如何让代码 被编译器优化, 和规避编译器优化; 编译器提供机制;
如何让代码 被cpu并行执行优化, 和规避cpu并行优化; cpu提供指令;

内存

asan

谷歌开发 gcc, g++ 等编译器内置; 全称address sanitizer; 用于分析内存 泄漏, 越界 等快速有效;

valgrind

全面但是慢; 可以查看各种问题;

gcov

代码覆盖率工具;

设计

设计模式design patterns reusable object oriented

适合了解入门;

http://www.lryc.cn/news/120987.html

相关文章:

  • 【C++】常用容器-string容器
  • SSH无法连接kali,拒绝密码
  • 竞赛项目 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习
  • redis 数据结构(一)
  • 【高频面试题】JVM篇
  • 第十三次CCF计算机软件能力认证
  • 无人驾驶实战-第十二课(强化学习自动驾驶系统)(完)
  • 【flask sqlalchmey】一次性将返回的列表对象或者 一行数据对象转成dict---flask-sqlalchemy输出json格式数据
  • goland插件推荐Rider UI Theme Pack
  • 人工智能面试常识-10
  • Android JNI开发从0到1,java调C,C调Java,保姆级教程详解
  • STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用
  • 创建型模式 (Creational Patterns) 玄子Share 设计模式 GOF 全23种 + 七大设计原则
  • 【脚踢数据结构】队列(顺序和链式)
  • linux添加磁盘
  • 图片懒加载
  • scope,deep穿透的实际应用
  • Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接
  • Webpack5 core-js和babel-loader区别和用法
  • 软考高级架构师——5、系统规划分析与设计方法
  • 区块链学习6-长安链部署:如何创建特定共识节点数和同步节点数的链
  • 北航基于openEuler构建工业机器人操作系统,打造“开箱即用”的机器人基础软件平台
  • 孤儿进程与僵尸进程
  • redis的基础命令01
  • 批量将excel文件合并
  • 关于Vue与服务器端的通信:如何实现登录鉴权
  • GrapeCity Documents for Excel, .NET Crack
  • wordpress网站Ajax留言评论+自定义评论字段
  • AJAX-笔记(持续更新中)
  • 模板复用和文章详情页(Go搭建qiucode.cn 之七)