自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Effective stl读书笔记

关联容器条款24 当关乎效率时应该在map::operator[]和map-insert之间仔细选择新增元素class Widget {public: Widget() { std::cout << "Widget::Widget()" << std::endl; } Widget(double val) { _val = val; std::cout << "Widget::Widget(double)"

2021-10-25 00:21:54 155

原创 C++智能指针

RAII的本质是用栈对象来管理资源,因为栈对象在离开作用域时,会自动调用析构函数

2021-08-01 16:25:42 218

原创 C++函数重载

输入输出流运算符重载

2021-07-31 16:55:52 2479

原创 C++类型转换函数

显示转换隐式转换

2021-07-30 18:17:42 96

原创 Makefile学习

Makefile初探例1:main.cpp#include "add.h"#include <iostream>int main(){ std::cout << add(3, 4) << std::endl;}add.cppint add(int x, int y) { return x + y; }Makefilemain:main.o add.o g++ -o main main.o add.omain.o:main.cpp g++

2021-07-03 10:40:40 117

原创 C++编译过程及动静态库

查看符号表的几种方式:nm 目标文件objdump -t 目标文件readelf -s 目标文件strings 目标文件

2021-06-02 23:42:20 485 3

原创 IO多路复用之epoll

IO多路复用之selectIO多路复用之epollint epoll_create(int size);创建一个epoll的句柄,size用来告诉内核这个监听的数目一共有多大。这个参数不同于select()中的第一个参数,给出最大监听的fd+1的值。需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。注意:Linux 2.6.8之后siz

2021-05-23 16:34:58 118

原创 IO多路复用之select

server.cpp#include <iostream>#include <string.h>#include <unistd.h>#ifdef WIN32#include <winsock2.h>#else#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>#

2021-05-16 23:33:42 129

原创 VMware安装centos8

官网下载: https://www.centos.org/download/CentOS Linux:就是普通使用的CentOS系统,如果追求稳定性,和日常使用,推荐使用这个的CentOS stream:滚动发布的 Linux 发行版,适用于需要频繁更新的开发者有很多的国内资源站可以选择可以选择图中的这三个,分别是华为,清华,阿里的镜像centos有多个版本区别如下:一般常用都下载标准安装版,本文也是dvd版镜像安装 CentOS-8.3.2011-x86_64-dvd1.iso

2021-04-24 12:44:14 191

原创 基于gtest、mockcpp写C++LLT测试入门级教程

一、googletest下载地址:https://github.com/google/googletest编译googletest:在根目录下执行cmake .make编译出的libgtest.a后面用注意:有可能编译会失败,是gtest需要C++11以上 可以在顶级的CMakeList.txt里加入 set(CMAKE_CXX_STANDARD 11)二、mockcpp下载地址:https://code.google.com/archive/p/mockcpp/downloads编译

2021-04-15 00:12:11 4709 2

原创 右值引用

移动语义:https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyershttp://thbecker.net/articles/rvalue_references/section_01.html

2021-03-14 15:53:42 82

原创 C++左值与右值

一个很常见的误区就是左值时等号左边的值,右值时等号右边的值含义:①左值是指表达式结束后依然存在的持久化对象;右值是指表达式结束时就不再存在的临时对象②左值是存储单元内的值,即是有实际存储地址的;右值则不是存储单元内的值,比如它可能是寄存器内的值也可能是立即数。下图取自一个知乎的回答:区分:能否对表达式取地址,如果能,则为左值,否则为右值看几个例子:int a=1;int b=2;a和b 为右值a+b 为左值++a 为右值a++ 为左值string(“hello”) 为左值 (我的

2021-03-13 14:59:06 145

原创 C++各阶段特性

C++11-C++20各个标准的特性官方文档:https://en.cppreference.com/w/cpp/compiler_supportC++11特性总结:https://www.codeproject.com/Articles/570638/Ten-Cplusplus11-Features-Every-Cplusplus-Developer#autohttps://blog.csdn.net/jiange_zh/article/details/79356417C++1..

2021-03-09 12:57:53 108

原创 COW和SSO

参考资料:https://www.cnblogs.com/cthon/p/9181979.htmlstring 底层实现就是一个指针 可以看到无论string存储多少字符,sizeof(string)永远是一个指针的大小 32位 4字节 64位 8字节GCC 4.x.x string的实现是 COW 写时复制GCC 5.x.x string的实现是 SSO 短字符串优先测试写时复制的存在 std::string s1 = "hello,world"; std::string s2(s1);

2021-03-08 21:46:15 493 2

原创 C++虚继承

为什么引入虚继承?#include <iostream>class B{public: B() : _ib(10), _cb('B') {} virtual void f() { std::cout << "B::f()" << std::endl; } virtual void Bf() { std::cout << "B::Bf()" << std::endl; } int _ib; char _cb;};class

2021-03-02 00:23:23 78

原创 C++虚函数

该文是基于vs2019 32系统下一般继承(无虚函数覆盖)class A{public: virtual void f() { cout << "A::f()" << endl; } int _a;};class B : public A{public: void fb() { cout << "B::fb()" << endl; } int _b;};vs打印出的内存布局如下图内容复制出来如下1>class A s

2021-02-25 00:42:50 282

原创 vs2019远程调试Linux程序

必要条件①Linux环境上安装了gdb②动态库、二进制文件编译时要加-g选项③vs安装了 “使用C++的Linux开发” 组件步骤一:vs安装了 “使用C++的Linux开发” 组件通过控制面板->程序和功能->Visual Studio右键更改->勾选 “使用C++的Linux开发” 组件安装步骤二:通过CMake加载项目文件->打开->CMake->选中项目的顶层CMakeLists.txt步骤三:如果你的二进制和动态库被strip等剥离了符号信

2021-02-24 13:43:04 2045 2

原创 Clion远程调试

该文是介绍通过clion进行本地windows对远程Linux的程序进程调试必要条件:Linux环境上有安装cmake、 make、 g++、 gdb、 gdbserver步骤一:代码同步该步骤是用来配置本地clion的代码与远程对应代码目录自动同步用。如果是通过winscp、filezilla等工具手动上传代码,该步骤可以省略。①配置Linux的环境信息,以及本地代码目录和远程代码目录的映射关系Tools -> Deployment -> Configuration ->

2021-02-23 23:20:03 935

原创 vim配置

vim全局配置,对所有用户生效。/etc/vimrc centos下/etc/vim/vimrc Ubuntu下用户个人的配置在~/.vimrc。set number 开启行号set nonumber 关闭行号syntax on 打开语法高亮set mouse=a ...

2021-02-14 16:04:34 122

原创 vim三种常用模式及使用

vim的三种常用模式命令模式、输入模式和编辑模式①命令模式:通过vi 文件名即进入命令模式命令模式下可以通过上下左右键移动光标的位置,进程内容的复制、粘贴、替换、删除等操作i 在当前位置生前插入I 在当前行首插入a 在当前位置后插入A 在当前行尾插入gg 将光标移到文件头G 将光标移到文件尾x 剪切光标右边1个字符[n] x 剪切光标右边n个字符X ...

2021-02-14 16:00:58 1911 3

原创 git之cherry-pick

git merge可以将其他分支的代码合到主干,如果只想将其他分支的某次提交合到主干呢?可以通过git cherry-pick命令按某次提交来合入git remote add master ssh://xxx.gitgit show commitidgit cherry-pick commitid可能会有冲突,如果没有冲突直接git push提交到远程仓就行如果有冲突,git status查看冲突文件,解决冲突后将文件重新git add然后git cherry-pick --continue

2021-01-26 23:10:06 631

原创 git之git merge

开发分支的代码验证完成之后需要合到生产分支上时可以通过git merge步骤:假设main为开发分支,branch_1为生产分支①将开发分支最新代码更新到本地git checkout maingit pull②切换到生产分支,并将开发分支代码同步到生产分支git checkout branch_1git merge main③推送到远程仓库git push origin branch_1:branch_1git push -u origin branch_1:branch_1 (加上

2021-01-24 17:45:00 326

原创 git之git stash

当你和同事同时修改了一个文件时,他先提交到git远程仓库,然后你更新时会报错该文件冲突如下图,这是git stash就很好用了。步骤:①通过 git stash 将你的修改保存到git栈中②git pull 从远程仓拉去最新代码,这时就不会冲突了③git stash pop 从你的修改从git栈中拉出来④解决冲突,重新提交代码最后提供写git stash相关的命令:①git stash list :查看stash了哪些存储②git stash show -p

2021-01-24 16:10:30 200

原创 git之撤销回退

①git add前撤销修改git checkout – <文件名/目录>git checkout – . 撤销当前目录下所有文件修改(常用)注意:-- 去掉也是可以撤销,但是容易与切换分支的命令冲突,建议加上–②git add后,git commit前撤销修改git reset <文件名/目录>git reset .③git add且git commit后,git push到远程仓前撤销修改git reset commitid 重置对当前分支的指针为指定com

2021-01-24 15:34:24 573

原创 git之日常使用

查看暂存区状态git status如图 当本地修改后可以通过该命令查看所有改动的文件比对差异git diff {filename}如图 可以针对某一个改动的文件查看其修改点git add . 将所有改动的文件添加到暂存区git commit -m “description” 将暂存区中的内容提交到本地仓git push <远程主机名> <本地分支名>:<远程分支名>远程主机名: git remote 查看远程主机名git remote

2021-01-22 00:20:24 110

原创 git安装配置

git安装配置1 安装gitLinux上安装:sudo apt-get install gitwindows上安装:官网 https://git-scm.com/downloads 下载安装2 本地配置git用户及邮箱配置:git config --global user.name “name”git config --global user.email “email”可以通过git config -l 查看配置项是否OK3 配置github远程仓本地git仓库和github远程仓库是通

2021-01-21 23:01:56 138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除