- 博客(27)
- 收藏
- 关注
原创 cmake使用教程(实操版)(六)
一、复杂的例子:模块的使用和自定义模块本节着重介绍系统预定义的Find模块的使用以及自己编写Find模块,系统中提供了其他各种模块,一般情况需要使用INCLUDE指令显示的调用,FIND_PACKAGE指令是一个特例,可以直接调用预定义的模块。其实使用纯粹依靠cmake本身提供的基本指令来管理工程是一件非常复杂的事件,所以,cmake设计成了可扩展的架构,可以通过编写一些通用的模块来扩展cmake.在本章,我们准备首先介绍一下cmake提供的FindCURL模块的使用。然后,基于我们的libhello
2021-07-24 23:07:33 699
原创 cmake使用教程(实操版)(五)
一、cmake常用指令本节会引入更多的cmake指令。1、基本指令(1)ADD_DEFINITIONS向C/C++编译器添加-D定义,比如:ADD_DEFINITIONS(-DENABLE_DEBUG -DABC),参数之间用空格分隔。如果你的代码中定义了#ifdef ENABLE_DEBUG #endif,这个代码块就会生效。如果要添加其他的编译器开关,可以通过CMAKE_C_FLAGS变量和CMAKE_CXX_FLAGS变量设置。(2)ADD_DEPENGENCIES定义target依赖
2021-07-24 23:07:02 1040
原创 cmake使用教程(实操版)(四)
一、如何使用外部共享库和头文件使用上一节中构建的共享库。1、准备工作在cmake中创建t4用来存储这一节的资源。2、编码编写源文件main.c如下:t4下的CMakeLists.txt如下:t4下的src下的CMakeLists.txt如下:3、外部构建建立build文件夹,使用cmake …来构建。cmake ..make会的到如下的错误:/backup/cmake/t4/src/main.c:1:19: error: hello.h:没有那个文件或目录4、引入头文
2021-07-24 23:05:53 1265
原创 cmake使用教程(实操版)(三)
一、静态库与动态库构建本节建立一个静态库和动态库,提供HelloFunc函数供其他程序编程使用,HelloFunc向终端输出Hello World字符串。安装头文件和共享库。1、准备工作在/backup/cmake中建立t3,用于存放本节涉及到的工程。2、建立共享库指令:cd /backup/cmake/t3mkdir lib在t3目录下建立CMakeLists.txt,内容如下:在lib目录下建立两个两个源文件hello.c和hello.h,在lib的目录下建立CMakeLis
2021-07-24 23:02:56 663
原创 cmake使用教程(实操版)(一)
cmake使用教程本文主要借鉴《CMake+Pratice》一文,如果造成版权问题请联系作者删除。作者在网络上发现关于cmake的中英文材料都比较少,所以有了整理cmake的入门教程的想法。如果需要深入了解cmake的各种命令,建议在已有的项目中学习。在介绍本文的cmake内容之前,本文将整个使用教程分成七篇文章。一、初识cmake官网:www.cmake.org优点:1、开源代码,使用类BSD许可发布。2、跨平台,并可以生成native编译配置文件,在linux/Unix平台,生成makefi
2021-07-24 22:38:35 19147 1
原创 备忘——CentOS7安装redis
一、安装GCC依赖由于redis是c语言开发的,所有需要gcc编译器进行编译,可以通过gcc -v查看系统的gcc版本,如果没有gcc编译器,则 yum install-y gcc//安装gcc编译器二、下载并解压安装包wget http://download.redis.io/releases/redis-5.0.3.tar.gztar -zxvf redis-5.0.3.tar.gz三、cd到redis解压目录下,执行编译cd redis-5.0.3make四、安装并指定安装
2020-11-28 16:18:31 163
原创 cmake使用教程(实操版)
cmake使用教程目录一、初识cmakePS:绝大部分使用变量的情况要通过${}引用,而在IF语句中却必须直接使用变量名。官网:www.cmake.org优点:1、开源代码,使用类BSD许可发布。2、跨平台,并可以生成native编译配置文件,在linux/Unix平台,生成makefile,在苹果平台可以生成Xcode,在windows平台,可以生成MSVC的工程文件。3、能够管理大型项目。4、简化编译构建过程和编译过程。cmake的工具链:cmake+make。5、高效率,因为cma
2020-10-08 11:32:08 136459 15
原创 Effective C++ 改善程序与设计的55个具体做法——条款01
条款01:将C++视为一个语言联邦今天的C++已经是一个多重泛型编程语言,一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言。C:。C++以C语言为基础。区块、语句、预处理器、内置数据类型、数组、指针等通通来自C。C语言的局限:没有模板、没有异常处理、没有重载…Object-Oriented C.。包括Classes(包括构造函数和析构函数)、封装、继承、多态、虚函数(动态绑定)。Template C++。模板元编程。STL。STL是一个template程序库。内含容器、迭
2020-09-15 17:07:08 165
原创 C++什么类不能被继承
C++什么类不能被继承什么类不能被继承,首先思考派生类继承基类将会发生什么默认操作?派生类在调用自身的构造函数之前需要先调用基类的构造函数。那么我们就让这个不想被别人继承的类的构造函数也无法被派生类构造。现在主要有三种方式阻止类的构造函数被调用,一是,将自身的构造函数与析构函数放在private作用域内;二是,将自身作为一个已存在类的友元类。这两种方式都能阻止派生类的继承(因为自身无法构造函数),第三种,使用C++新特性final。一、将自身的构造函数与析构函数放在private作用域当我们声明一个对
2020-08-17 21:55:52 4909 4
原创 C++——多态的原理与使用
C++——多态的原理与使用C++面向对象的三大特性——封装,继承,多态。本文主要说明多态的实现与原理。C++多态中又有三种方式实现,分别是函数重载、模板函数、虚函数。本文着重说明虚函数实现多态的方式和原理。一、虚函数与多态定义:虚函数指在派生类中重载同名的基类函数,而且可以通过基类指针或者引用来访问基类或者派生类的对象所对应的上述函数。PS:在类定义中,前面有virtual关键字的成员函数称为虚函数。virtual关键字只用在类定义里的函数声明中,写函数体时不用。class Base{ vi
2020-08-17 09:10:10 586
原创 C++的关键字const详解
C++的关键字const详解const为常量限定符,用来限定特定变量,告诉编译器该变量只读。习惯性使用const,可以避免在函数中对某些不应修改的变量造成可能的改动。本文主要从四个方面来讨论const:(1)const修饰基本数据类型;(2)const在函数中的应用;(3)const在类中的应用;(4)const修饰类对象,定义常量对象。一、const修饰基本数据类型1、const修饰一般常量及数组const int a=10; <=>(等价) int const
2020-08-15 22:29:52 332
原创 左值引用与右值引用在移动语义中的使用
左值引用与右值引用在移动语义中的使用本文主要介绍C++11的新特性右值引用,以及右值引用在移动语义上的应用。1、左值引用与右值引用传统C++使用的是左值引用,使得标志符关联到左值。那么什么是左值呢?左值指的是一个表达数据的表达式。常常出现在=的左边,所以经常被称为左值。左值引用:表示数据的表达式,如变量名或者解除引用的指针。左值引用:int n;//n是左值int *pt = new int;//*pt是左值const int b = 101;//b是左值int &rn = n;/
2020-08-13 17:20:37 287
原创 Linux中进程间的六种通信方式
进程间的通信每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但是内核空间是每个进程共享的所以进程之间要通信必须通过内核。进程间的通信方式主要为管道、消息队列、共享内存、信号量、信号、socket。主要理解各种方式的优缺点和适用场景。1、管道优点:实现简单缺点:不适合进程间频繁的通信底层原理:例子ps auxf | grep mysql上述命令行中的|则是管道,只能单向通信,用完就销毁了,也称匿名管道。匿名管道的创建需要通过下面的系统调用:int pipe(int fd[2])
2020-08-05 21:48:35 5618
原创 云服务器centos7安装mysql流程
centos7安装流程1、下载安装包wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar2、tar命令解压tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar3、安装mysql前,需将系统自带的mariadb-lib删除rpm -qa|grep mariadbrpm -e --nodeps mariadb-libs-5.5
2020-07-24 21:41:15 186
原创 C++一个简单的单例模式
一、单例模式直接阅读版:#include <bits/stdc++.h>class Singleton {public: ~Singleton() { printf("Singleton deconstruct\n"); }; static Singleton& CreateObject() { static Singleton obj; return obj; };private: Singleton() { printf("Singleton c
2020-07-06 22:33:08 293
原创 C++如何在main()函数之前或者之后执行打印操作
一、 gcc下的C语言#include <stdio.h> __attribute((constructor)) void before_main(){ printf("%s/n", __FUNCTION__);}__attribute((destructor)) void after_main(){ printf("%s/n", __FUNCTION__);}int main(int argc, char** argv){ printf("%s
2020-07-06 14:13:39 532
原创 static关键字C/C++中的使用
C++中static关键字的作用C++中的static关键字用于声明全局共享变量,位于内存中一块单独的全局变量区域内。static声明的变量会一直存在,C++的static在如果在代码块内,则声明的变量只能在代码块内使用,如果static声明不在任何函数内,则可以在此文件中使用。一、static在面向过程中的应用1、静态全局变量内存分配在全局数据区(.bss未初始化.data初始化)、未初始化的静态全局变量会初始化为0且只会初始化一次、静态全局变量只能在文件内访问不能在文件外访问。在其他文件中
2020-07-06 13:54:59 567
原创 菜鸟筑基——C++四种字符串类型的爱恨情仇
C++字符串详解一、C语言风格的字符串字符串是指使用‘\0’终止的字符串数组。char a[6]={'H','e','l','l','o','\0'};char* b = "Hello"; 以上的字符串在内存中的表示为函数作用strcpy(s1,s2)将s2字符串的内容复制给s1strcat(s1,s2)将s2字符串的内容拼接到s1后面,返回s1...
2020-05-04 00:19:13 473
原创 2020年 暑期实习 字节跳动 后台开发与客户端开发笔试题(第二场 完整版)
接上一个博客。第二道 编程题题目描述:在你面前从左到右摆放了n根长短不一的木棍,你每次可以折断一根木棍,并将折断后得到的两根木棍一左一右放在原来的位置上(即若原木棍有左邻居,则两根木棍必须放在左邻居的右边,若原来木棍有右邻居则摆放在右邻居的左边,所有木棍保持左右排列)。折断后的两根木棍必须为整数,且它们的长度和为原来木棍的长度,你希望最终木棍从做到右递增不减,那么你需要折断多少次木棍呢?输入...
2020-04-15 11:58:36 1971 1
原创 2020年 暑期实习 字节跳动 后台开发与客户端开发笔试题(第二场 第一题)
2020年4月12日,19:00开始考试,笔试时间为两个小时,一共四道编程题。第一道 编程题题目描述:存在两个长度相等数列a和b,其中存储的是正整数,判断有没有一个操作能使a数列变化成b数列。操作:在数列a中选取一个区间a[l] - a[r],对这个区间中的所有数字加上一个正整数k。其中,1 <= l <= r <= n,k >= 0。输入描述:输入:tt...
2020-04-13 21:19:51 703
原创 深入理解C++中string类(详解)
深入理解C++中string类背景介绍:在C++中使用string.h和cstring并不是所要介绍的string类指的是C语言库中字符串,而本文所要介绍的是string类。要使用string类主要是了解它的公共接口,也就是string类的众多方法。下面介绍的是string类的构造函数,主要用于将字符串赋值给变量、合并字符串、比较字符串、若干重载操作符、在字符串中寻找子字符串。一、构造字符串...
2020-04-11 23:57:44 2239
原创 C++Lambda匿名函数(详解)
C++Lambda匿名函数(详解)一、介绍使用场景:对于一些简单的函数程序只需要简单的使用一下,但是一般情况下是需要声明定义再使用这个函数。为了解决这个问题,C++11提出了匿名函数机制,可以不取函数名,当场定义当场使用,方便程序员编写程序。典型的匿名函数使用场景是在return语句中写出测试表达式和比较表达式。二、使用使用格式如下:int n = [](int x,int y)->...
2020-04-01 13:23:12 1162
原创 C++ 关键字explicit与函数memset()详解
一、关键字explicit总结:explicit关键字用在类的构造函数之前。使用环境:类构造函数只有一个参数或者其他参数都有默认参数。作用:防止类的对象参数类型进行不合时宜的转换。#include <iostream>class CxString//没有使用explicit关键字的类声明,即默认为隐式声明{public: char* _pstr; int _size; ...
2020-03-31 13:16:53 320
原创 C++内存管理(面试版)
C++的内存管理一、C++内存管理详解1、内存的分配方式(a)(a)(a)栈:编译器分配的内存,用来存储函数的局部变量,函数调用结合素则自动释放内存。(b)(b)(b)堆:程序员用new分配的内存,一般存储指针;如果程序运行结束的时候没有被释放,则操作系统会自动回收。(c)(c)(c)自由存储区:程序员用malloc分配的内存,使用free来释放内存。(d)(d)(d)全局/静态存储区...
2020-03-29 13:43:42 9044 4
原创 2020腾讯C++后台开发暑期实习电话面(一)
腾讯暑假C++后台开发实习电话一面2020年3月24日晚上8点接到了腾讯的电话面试。主要是关于基础知识和项目经历的询问。一、自我介绍XXXXXXX。二、介绍项目XXXXXXX。三、C++基础1、说一下函数的重载、覆盖与隐藏答:重载指的是同一可访问区间内被声明的几个具有不同参数列表的同名函数,根据参数列表确定调用哪个函数,与函数的返回类型无关。重写指的是子类中存在重新定义的函数。其...
2020-03-25 12:21:12 1534 4
原创 2020年阿里巴巴实习笔试编程题
2020年阿里巴巴实习笔试编程题(一)题目描述:现有n个人,从中选择任意数量的人组成一支队伍,再从这些人中选出1名队长,求不同方案数对∣109+7∣\left\vert 10^9 +7 \right\vert∣∣109+7∣∣的结果。如果两个方案选取的人的集合不同或选出的队长不同,则认为这两个方案是不同的。求输入任意人数nnn得到的队伍数。时间限制:30分钟,其中的解题思路如下:将问题分解...
2020-03-23 23:04:58 2683 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人