学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.out
在makefile
里面如下
./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;//创建空字符串,调用无参构造函数cout << "str1 " << s1 << endl;//什么都不输出const char* str "…...

SSH无法连接kali,拒绝密码
1,cd /etc/ssh 2,systemctl start ssh.server 3,vim /etc/ssh/sshd_config 将黄色文字改成这样 4,systemctl restart ssh 然后去连接就好了...

竞赛项目 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习
文章目录 0 简介1 课题背景🚩 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率(Accuracy)3.2 精确率(Precision)和召回率(Recall)3.3 平均精…...

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

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

第十三次CCF计算机软件能力认证
第一题:跳一跳 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱。 简化后的跳一跳规则如下:玩家每次从当前方块跳到下一个方块,如果没有跳到下一个方块上则游戏结束。 如果跳到了方块上,但没有跳到方块的…...

无人驾驶实战-第十二课(强化学习自动驾驶系统)(完)
在七月算法上报了《无人驾驶实战》课程,老师讲的真好。好记性不如烂笔头,记录一下学习内容。 课程入口,感兴趣的也可以跟着学一下。 ————————————————————————————————————————— 强化学习ÿ…...
【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,里面自带visual assist配色,配色截图如下: 直接在plugins里面进行搜索或者在插件home page下载后进行安装均可。 总算找到一统vscode 和goland二者优势的插件了。...
人工智能面试常识-10
目录 1. 人工智能的常见用途和应用有哪些? 2. 什么是智能代理,它们如何在人工智能中使用?...

Android JNI开发从0到1,java调C,C调Java,保姆级教程详解
前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂,风趣幽默",感觉非常有意思,忍不住分享一下给大家。 👉点击跳转到教程 第一步首先配置Android studio的NDK开发环境,首先在Android studio中下载NDK…...

STM32基于CubeIDE和HAL库 基础入门学习笔记:功能驱动与应用
文章目录: 一:LED与按键驱动程序 main.c 1.闪灯 led.h led.c 2.按键控制LED亮灭 key.h key.c 二:蜂鸣器与继电器驱动程序 main.c 1.蜂鸣器 buzzer.h buzzer.c delay.h delay.c 2.继电器 relay.h relay.c 三࿱…...
创建型模式 (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…...

【脚踢数据结构】队列(顺序和链式)
(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,Linux基础,ARM开发板,软件配置等领域博主🌍快上🚘,一起学习,让我们成为一个强大的攻城狮!送给自己和读者的一句鸡汤🤔&…...

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

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

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下实现的过程,Ubuntu采用22.04 安装multipass后,在卓面右下角Open shell 就可以链接默认实例Primary,当然如果你有多个虚拟机,可以针对不同内容单独建立终端的链接,而本文仅仅用Primary来说明。 …...
Webpack5 core-js和babel-loader区别和用法
文章目录 core-js是什么,有什么用?为什么使用了babel-loader对js进行兼容性配置还需要core-js?core-js的具体用法总结 core-js是什么,有什么用? core-js是一个流行的JavaScript库,它提供了对新的JavaScript特性、API…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...

Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...

Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...