C++
文章平均质量分 94
多些不为什么的坚持
这个作者很懒,什么都没留下…
展开
-
带你一起探索 c++11 中右值引用、移动构造、&&、move、forward
本文将介绍带你一步步的了解 c++11 中:* 右值、右值引用* 移动构造函数* && 解密* move 移动语义* forward 完美转发产生原由class Object { public: //无参构造函数 Object() : m_num(new int(10)) { std::cout << "contr function..." << std::end原创 2021-03-29 09:39:29 · 582 阅读 · 2 评论 -
gcc 安装为什么安装不上呢? 踩坑
gcc 安装为什么安装不上呢? 踩坑应与实验要求,需要 gcc 版本降级成 gcc-4.8, 网上教程很多,坑无下限。问题: apt-get install gcc-4.8 ,提示已经安装, 但是 gcc -v: /usr/bin/gcc 找不到该文件。解决办法: 1、先进入 /var/lib/dpkg/status 中, 备份 status: mv status status.bak2、清空 status 文件, 切记一定要使用: cat /dev/null > status3、原创 2020-12-29 10:45:19 · 4168 阅读 · 0 评论 -
c++ 获取线程标识的 4 中方法
在 Linux C++ 网络编程中,经常会使用到线程的标识,下面整理了常用的获取线程标识的方法:1、gettid获取内核线程的 ID, 当只有一个线程时得到的是进程的 pid,和使用 getpid 获取的结果相同。#include <sys/types.h>pid_t gettid(void);此方法在 glibc 中并没有封装,需要使用 syscall 系统调用封装#include <sys/types.h>#define gettid() syscall(_NR原创 2020-12-14 09:52:08 · 1091 阅读 · 0 评论 -
网络字节序
字节序前言为什么会出现大端字节序和小端字节序呢?统一使用一种字节序不是更好吗?介绍大端字节序 : 高位字节在低地址,低位字节在高地址小端字节序: 高位字节在高地址,低位字节在低地址0x1234567的大端字节序和小端字节学的写法如下图所示:原因计算机电路在处理低位字节时,效率比较高,因为计算机都是从低位开始的,所以,计算机的内部处理都是小端字节序;但是在程序员的眼里,还是习惯读写大端字节序,所以除了计算机内部外,其他场合大都使用大端字节序;如网络传输和文件存储中;判断字节序以下已原创 2020-11-30 09:45:03 · 612 阅读 · 0 评论 -
面试过程中让你手写的那些 C 库函数
面试过程中让你手写的那些 C 库函数前言在今年的秋招面试 C、C++ 过程中,很多公司都会让面试者实现一些 C 库函数(memcpy、memset、strcpy等)。起初不解,但是想想也了然,C / C++ 程序员都是自己轮轮子。掌握底层原理,可以更好的实现业务功能,同时也能锻炼自身素养。memcpy 函数#include <iostream>void* my_memcpy(void* desc, const void* src, int size) {\ if (desc原创 2020-11-23 11:33:08 · 246 阅读 · 1 评论 -
Linux C++网络编程
Linux C++ 网络编程(二)前言在上一节中以拆分的方式学习完 Linux 、C++、网络等知识后,这节会将这三个模块糅合起来,站在项目的基础上再次去学习这三个模块。 Linux 网路编程比较经典的有 Redis、Muduo、TeamTalk等开源项目。本文将以 Muduo 来介绍 网络编程的框架,学习完 Muduo 再去学习其他框架就容易许多了。注意, 文中贴的代码均为核心代码,且注释详细,认真阅读。Linux C++ 网络编程 (一)Linux C++ 开发环境搭建下载路径githu原创 2020-11-18 09:05:49 · 746 阅读 · 0 评论 -
Linux C++ 开发环境搭建
Linux C++ 开发环境搭建前言工欲善其事必先利其器,想要学好 Linux C++ 编程,那么就要有对应环境,本文将带你一步步搭建开发环境。准备工作为了学习方便,在 win 下面安装虚拟机,然后安装 CentOs 操作系统。当然也可以使用 阿里云等云产品(但个人推荐本地搭建,因为阿里云远程连接经常掉线)。搭建 centos 开发环境:centos安装教程 前面介绍过,这里将不再赘述。安装常用工具作为一个合格的程序员我觉得所有的东西都应该标准化、文档化。所以我对我的文件进行规划:原创 2020-11-13 20:32:57 · 804 阅读 · 1 评论 -
unique_lock和lock_guard
互斥锁保证了线程间的同步,但是却将并行操作变成了串行操作,这对性能有很大的影响,所以我们要尽可能的减小锁定的区域,也就是使用细粒度锁。这一点lock_guard做的不好,不够灵活,lock_guard只能保证在析构的时候执行解锁操作,lock_guard本身并没有提供加锁和解锁的接口,但是有些时候会有这种需求。看下面的例子。class LogFile { std::mutex _mu;...转载 2020-03-17 10:09:09 · 385 阅读 · 0 评论 -
右值引用、移动语义和完美转发
c++中引入了右值引用和移动语义,可以避免无谓的复制,提高程序性能。有点难理解,于是花时间整理一下自己的理解。左值、右值C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能...转载 2020-03-17 08:42:05 · 131 阅读 · 0 评论 -
开放封闭原则
什么时开放封闭原则?什么是依赖倒置原则?什么是高类聚低耦合原则?前言 一国两制: 小平同志在香港回归问题上提出了一国两制,独到之处是? 大陆的社会这一制度不能修改,而港澳的资本主义也根深蒂固,强行修改也不合理。这种不可修改(香港的资本主义修改成社会主义),但是可以扩展的思想。 ——开...原创 2020-03-16 10:34:11 · 206 阅读 · 0 评论