当前位置: 首页 > 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

适合了解入门;

相关文章:

学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简单的了解标…...

【C++】常用容器-string容器

1.string基本概念 2.string构造函数 #include <iostream> using namespace std;//string容器 void test01() {string s1;//创建空字符串&#xff0c;调用无参构造函数cout << "str1 " << s1 << endl;//什么都不输出const char* str "…...

SSH无法连接kali,拒绝密码

1&#xff0c;cd /etc/ssh 2,systemctl start ssh.server 3,vim /etc/ssh/sshd_config 将黄色文字改成这样 4&#xff0c;systemctl restart ssh 然后去连接就好了...

竞赛项目 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…...

redis 数据结构(一)

Redis 为什么那么快 redis是一种内存数据库&#xff0c;所有的操作都是在内存中进行的&#xff0c;还有一种重要原因是&#xff1a;它的数据结构的设计对数据进行增删查改操作很高效。 redis的数据结构是什么 redis数据结构是对redis键值对值的数据类型的底层的实现&#xff0c…...

【高频面试题】JVM篇

文章目录 一、JVM组成1.什么是程序计数器2.什么是Java堆&#xff1f;3.能不能介绍一下方法区(元空间&#xff09;4.你听过直接内存吗5.什么是虚拟机栈6.垃圾回收是否涉及栈内存&#xff1f;7.栈内存分配越大越好吗&#xff1f;8.方法内的局部变量是否线程安全&#xff1f;9.什么…...

第十三次CCF计算机软件能力认证

第一题&#xff1a;跳一跳 近来&#xff0c;跳一跳这款小游戏风靡全国&#xff0c;受到不少玩家的喜爱。 简化后的跳一跳规则如下&#xff1a;玩家每次从当前方块跳到下一个方块&#xff0c;如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上&#xff0c;但没有跳到方块的…...

无人驾驶实战-第十二课(强化学习自动驾驶系统)(完)

在七月算法上报了《无人驾驶实战》课程&#xff0c;老师讲的真好。好记性不如烂笔头&#xff0c;记录一下学习内容。 课程入口&#xff0c;感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 强化学习&#xff…...

【flask sqlalchmey】一次性将返回的列表对象或者 一行数据对象转成dict---flask-sqlalchemy输出json格式数据

def model_to_dict(object):return {c.name: getattr(object, c.name) for c in object.__table__.columns}#将一组数据转为list def scalars_to_list(object):return [model_to_dict(c) for c in object]class Sysdict(Base,SerializerMixin):__bind_key__ forest_fire_contr…...

goland插件推荐Rider UI Theme Pack

推荐一个goland配色插件Rider UI Theme Pack&#xff0c;里面自带visual assist配色&#xff0c;配色截图如下&#xff1a; 直接在plugins里面进行搜索或者在插件home page下载后进行安装均可。 总算找到一统vscode 和goland二者优势的插件了。...

人工智能面试常识-10

目录 1. 人工智能的常见用途和应用有哪些? 2. 什么是智能代理,它们如何在人工智能中使用?...

Android JNI开发从0到1,java调C,C调Java,保姆级教程详解

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 第一步首先配置Android studio的NDK开发环境&#xff0c;首先在Android studio中下载NDK…...

STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用

文章目录&#xff1a; 一&#xff1a;LED与按键驱动程序 main.c 1.闪灯 led.h led.c 2.按键控制LED亮灭 key.h key.c 二&#xff1a;蜂鸣器与继电器驱动程序 main.c 1.蜂鸣器 buzzer.h buzzer.c delay.h delay.c 2.继电器 relay.h relay.c 三&#xff1…...

创建型模式 (Creational Patterns) 玄子Share 设计模式 GOF 全23种 + 七大设计原则

玄子Share 设计模式 GOF 全23种 七大设计原则 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NWLAOFtO-1691793071647)(./assets/%E7%8E%84%E5%AD%90Share%20%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F%20GOF%20%E5%85%A823%E7%A7%8D%20%20%E4%B8%83%E…...

【脚踢数据结构】队列(顺序和链式)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言,Linux基础,ARM开发板&#xff0c;软件配置等领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff01;送给自己和读者的一句鸡汤&#x1f914;&…...

linux添加磁盘

一、linux虚拟机添加一块新的硬盘 四步&#xff1a; &#xff08;1&#xff09; &#xff08;2&#xff09;为硬盘进行分区 &#xff08;3&#xff09;初始化硬盘分区 &#xff08;4&#xff09;挂载 在虚拟机上添加一块硬盘 (1)、 虚拟机添加一块新的硬盘作为数据盘 (2) ls…...

图片懒加载

什么是图片懒加载&#xff1f; 懒加载也叫做延迟加载、按需加载&#xff0c;指的是在长网页中延迟加载图片 数据&#xff0c;是一种较好的网页性能优化的方式。在比较长的网页或应用中&#xff0c; 如果图片很多&#xff0c;所有的图片都被加载出来&#xff0c;而用户只能看到可…...

scope,deep穿透的实际应用

一.父组件代码 <template><div id"app"><h1 class"box"><pageName> </pageName></h1></div> </template><script> import pageName from "../src/components/pageName.vue"; export de…...

Multipass虚拟机设置局域网固定IP同时实现快速openshell的链接

本文只介绍在windows下实现的过程&#xff0c;Ubuntu采用22.04 安装multipass后&#xff0c;在卓面右下角Open shell 就可以链接默认实例Primary&#xff0c;当然如果你有多个虚拟机&#xff0c;可以针对不同内容单独建立终端的链接&#xff0c;而本文仅仅用Primary来说明。 …...

Webpack5 core-js和babel-loader区别和用法

文章目录 core-js是什么&#xff0c;有什么用&#xff1f;为什么使用了babel-loader对js进行兼容性配置还需要core-js?core-js的具体用法总结 core-js是什么&#xff0c;有什么用&#xff1f; core-js是一个流行的JavaScript库&#xff0c;它提供了对新的JavaScript特性、API…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法&#xff1a;原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件&#xff0c;如包含恶意代码、敏感数据或欺诈内容的文档&#xff0c;在企业协同办公环境中&#xff08;如Teams、Google Workspace&#xff09;尤为重要。结合大模型技术&…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...