自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(166)
  • 资源 (1)
  • 收藏
  • 关注

原创 word2016中MathType公式自动编号及隐藏章节标题

只用三步1 认识MathType2 插入一些 右编号 公式3 设置 编号 格式4 增加章节分隔符4 隐藏章节标题6 MathTyp公式跟着自己特有的章节符,和Word里面无关,需要自己关联上1 认识MathType界面中主要两块内容,插入公式和公式编号的设置,主要在公式编号上的设置,下面介绍几个概念。章编号、节编号:和一般论文章节都一样,不过它不会识别word里面的章节,要利用增加章节功能主动添加章、节!!!一般公式形式如,(章-节-自动编号),有时候不需要节编号(章-自动编号),在论文中,每一章公

2021-12-08 15:39:10 16527 6

原创 ubuntu安装系统级性能分析工具perf

系统级性能分析工具perf1 perf简介2 查看内核版本3 CLion使用1 perf简介perf是一种系统级性能分析工具,它涉及内核调用,所以安装需要知道内核版本。系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化。性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码。代码优化的目标是针对具体性能问题而优化代码或编译选项,以改善软件性能。备注:下面的方式并不能成功,最后会提示WARNING: perf not found for ker

2021-10-17 18:52:12 2286

原创 ubuntu18.04安装CLion、Gitee的工程管理

ubuntu安装Clion、Gitee的工程管理1 ubuntu18安装CLion2 Gitee的使用2.1 本地生成公钥2.2 在Gitee上新建一个工程,克隆到本地用CLion打开2.3 同步操作3 多个单个文件分别编译1 ubuntu18安装CLion直接从官网下载安装即可Clionhttps://www.jetbrains.com/clion/tar -vxf CLion-2021.2.1.tar.gzcd clion-2021.2.1/bin./clion.sh或者直接在ubu

2021-10-16 20:19:55 1322

原创 笔试输入C++

C++输入1 数字类型1.1 一行中一个、两个、多个数字1.2 一行多个数字以逗号分隔1.3 一个相对完整的代码2 字符串类型2.1 cin和getline混读问题2.21 数字类型注意:下面的案例我在笔试中都遇见过,如果输入输出出现问题,那就凉了。不妨记m为矩阵行数、n为列数。1.1 一行中一个、两个、多个数字1 一行中只有一个输入5int n;cin >> n;如果有多行测试案例,可以使用while进行循环读取5// other data7// other dat

2021-09-06 11:44:27 463

原创 前缀树C++, leetcode 648. 单词替换

由于时间限制,先贴出来代码,后面详细分析1 已经考虑了内存释放的问题,即使Trie类成员变量是vector容器,也要写析构函数class Trie {public: Trie() : children(26), isWord(false) {} /**<仅有小写字母 */ ~Trie() { /**<销毁内存 */ for (int i = 0; i &

2021-08-26 11:06:38 141

原创 c++ cin整数以,(逗号)分割读取

1 某些场景整数流不是空格分割,如用逗号分割例如,下面的输入,要求每行是一个数组,一共两行测试输入1,2,3,45,6,7,8下面的代码就可以很好的解决问题。 vector<int> w; int temp; while (cin >> temp){ w.push_back(temp); if (cin.get() == '\n') break; }2 先谈谈cincin会根据数据的类型以及分隔符自动对数据进行输入。数据的类型:两个常见

2021-06-19 15:39:51 9341

原创 (TeXstudio Windows10)Could not start the command:xxx

Could not start the command1 TeXstudio编译找不到命令,一种可能1 TeXstudio编译找不到命令,一种可能TeXstudio是一种编辑器,需要编译器的支持,也就是需要安装编译器texlive。好比VS一样,它提供编辑器的功能,其实内置了微软官方的MSVC编译器。需要安装一个编译器texlive,清华镜像源可以下载需要把bin路径添加到系统的PATH, 如:E:\Program Files (x86)\texlive\2020\bin\win323. 在

2021-05-19 11:27:36 792

原创 C语言中小数转字符串?标准C?

小数转字符串写之前,先来看看标准C?1 小数转字符串--标准C1 小数转字符串--非标准C写之前,先来看看标准C?其实,很多时候我们都会混淆一个概念:标准C?这里简要分享下,标准C其实就是ANSI C标准,里面收纳了绝大部分函数,但是人们发现有些经常使用的API没有被收纳,比如今天的主题–小数转字符串,所以这一部分函数叫做非标准C,实际上:标准C和非标准C同等重要,现在也被大多数编译厂商收录,也就是现在编译器(既有标准C,也有非标准C),导致很多人不区分它们,成为C库。不过遗憾的是,标准委员会从C9

2021-04-02 16:35:37 4562

原创 初识CMake,如何编写一个CMake工程(下)

如何编写一个CMake工程上文分析了针对一个源文件、多个源文件、多个目录的情况1 CMake自定义编译选项Demo41.1 效果展示2 CMake安装(make install)与测试(make test)Demo52.1 安装(make install)2.2 测试(make test)3 配置Debug,添加版本号Demo63.1 Debug/Release配置3.2 添加版本号上文分析了针对一个源文件、多个源文件、多个目录的情况接下来会继续分享自定义编译选项、安装与测试、生成安装包、环境检查等内容

2021-03-27 11:53:46 1039 1

原创 初识CMake,如何编写一个CMake工程(上)

如何编写一个CMake工程笔者想分享CMake工程的原因?1 接触CMake1.1 认识CMake被广泛的使用?1.2 了解CMake运行流程1.3 Make和Makefile是什么关系?1.4 CMake与CMakeLists又是什么?2 从源码到可执行程序的流程3 一个源文件Demo13.1 第一个CMakeLists.txt4 同一个目录多个源文件Demo24.1 aux_source_directory查找指定路径下的所有源文件5 多个目录Demo36 根CMakeLists.txt流程7

2021-03-26 22:27:28 5835 4

原创 C语言如何传入二维数组

C语言如何传入二维数组咋一看,顺手就写出下面的代码2 修改3 把二维数组当成一维数组用4 其他方式5 需要传入二维数组吗?咋一看,顺手就写出下面的代码下面就一个矩阵的加法演示可能出现的问题void addMatrix(int row, int col, int **a, int **b, int **c) { for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { c[i

2021-03-24 20:30:19 4002

原创 MySQL8.0输入密码后时出现闪退的解决方法或者启动后自动停止服务

出现闪退最可能的两种情况1 MySQL服务没有启动2 MySQL的配置文件没找到--my.ini3 其他的,比如密码错误,端口占用就不提了,主要上面两种情况最可能的两种情况1 MySQL服务没有启动如下,自己先启用服务哈。2 MySQL的配置文件没找到–my.ini默认情况下,C盘的C:\ProgramData\MySQL\MySQL Server 8.0下有一个my.ini配置文件,软件启动需要访问这个文件,但是MySQL的启动路径(安装路径)又在C:\Program Files\MySQL\

2021-03-15 11:24:34 5001 11

原创 C++ 容器vector等中为什么尽量使用const引用

使用const引用1 无疑使用const引用是一个好习惯,除非有理由拒绝它2 看一个案例3 不改变元素一定要加上const,不需要拷贝需要加上&1 无疑使用const引用是一个好习惯,除非有理由拒绝它在C++中容器都是值拷贝的,因此不使用引用的化,会大量拷贝垃圾数据其实,可以这么说C/C++是值拷贝编程语言。不使用额外的技术,比如指针、引用,都会发生垃圾数据的拷贝。当然,到底是不是垃圾数据由你自己决定,值拷贝是无法彻底摒弃的。2 看一个案例下面是一个提交记录,注意红色方框的部分,加上引用,

2021-02-04 21:35:55 3991

原创 C/C++ 二进制转十进制

二进制转十进制1 代码1 代码int getDecimalValue2(vector<int>& binary) { int ans = 0; for(int i = 0; i < binary.sizze(); ++i) { ans = (ans<<1) + binary[i]; } return ans;}思路:把整个二进制串想成两部分,当前处理的这1位。前面一个整体。当然没处理的串不算哈当然,移进一位,前面的整体*2,相当于前面

2021-01-28 17:32:29 2051

原创 C/C++ 二维数组第一列升序,第一列相同第二列降序

二维数组排序数组排序有内置API,一般是一维的,这里分享下二维或者多维的用法1 C++ 二维数组第一列升序,第一列相同第二列降序2 C 二维数组第一列升序,第一列相同第二列降序3 更一般的思路数组排序有内置API,一般是一维的,这里分享下二维或者多维的用法下面先分享下C++的情况,C++有好几个排序API,其内部实现一般是快排,包括稳定、不稳定、部分排序等。1 C++ 二维数组第一列升序,第一列相同第二列降序这里使用sort来完成,默认是升序,不管是一维,二维,多维,没有第三个参数都是按第一列升序排

2021-01-22 14:43:11 2561 1

原创 C++ 二维vector的push_back和遍历的简单形式

二维vector1 二维vector2 遍历输出1 二维vector定义一个二维vector,怎么给它加入数据呢?其实绕个弯。vector<vector<int>> res;首先我们需要先建立一个一维的vector,紧接着push_back for (int i = 0; i < N; ++i) { vector<int> temp; for (int j = 0; j < M; ++j) { tmp.p

2021-01-16 20:39:37 6542 1

原创 leetcode 二叉树的建立、释放内存、层序遍历输出,C++

二叉树的建立、释放内存、层序遍历输出leetcode的输入案例其实是数组存储方式,这样建树很方便1 数组存储建树2 二叉树释放内存3 二叉树遍历4 测试案例leetcode的输入案例其实是数组存储方式,这样建树很方便对于上面这个案例,你可以发现,输入其实层序遍历存储在数组,这样的结果是很好建树,利用二叉树在数组中的相对关系,如下图数据结构定义:// Definition for a TreeNode.struct TreeNode { int val; TreeNode *le

2021-01-16 19:19:36 818

原创 leetcode 234. 回文链表 C++

回文链表解法有两种最基本的方式,空间复杂度O(n)--递归方式,空间复杂度O(1)--找中点、反序后半部分链表、比较即可。1 递归方式2 找中点、反序后半部分链表、比较即可解法有两种最基本的方式,空间复杂度O(n)–递归方式,空间复杂度O(1)–找中点、反序后半部分链表、比较即可。1 递归方式最核心基础的数据类型是数组,链表。进而组成栈、队、堆、树、图等。从链表定义来看就注定它具有递归的特点,递归是浓墨重彩的一部分。void traverse(ListNode *head){ //前序遍历

2021-01-14 14:39:08 145

原创 C/C++矩阵翻折与旋转

矩阵翻折与旋转二维数组就地操作,n*n2 矩阵水平翻折3 矩阵左右翻折4 矩阵主对角线翻折5 矩阵副对角线翻折7 矩阵顺时针旋转90度8 矩阵逆时针旋转90度9 自己画一个矩阵,按结论套下就懂了二维数组就地操作,n*n2 矩阵水平翻折规律:行和是n-1,行减半;列不变 for (int i = 0; i < n/2; ++i) { for (int j = 0; j < n; ++j) { swap(&matrix[i][j], &a

2021-01-08 17:01:01 1543

原创 C/C++二维数组分块遍历

二维数组分块遍历1 二维数组分块遍历2 简单的按行遍历,按列遍历3 分块遍历3.1 除法,求余的物理意义3.2 何为遍历?3.3 确定数组行下标3.3 确定数组列下标3.3 完整代码3.4 技巧1 二维数组分块遍历对于二维数组,默认是行遍历的(这种场景最常见),有时候也需要按列遍历,还有些时候需要按分块矩阵顺序遍历。遍历:简单地讲,将每个元素有且仅有执行一次。分块遍历,如9*9的矩阵,每3*3一块,这样划分下来只有9个大矩阵,9个大矩阵是按行遍历的。目标:按照图中所示的数字顺序遍历。2 简单的

2021-01-08 10:45:19 1394 2

原创 C/C++各种类型说明符占用存储空间,如int、long、double占用的字节数

类型说明符占用存储空间对于特定位数的机器,类型说明符占用的大小一致,下面用的C++,没有写C代码1 我的是64位机器,至于32位机器是怎么样,可以用32位机器试下2 解释3 second.cpp对于特定位数的机器,类型说明符占用的大小一致,下面用的C++,没有写C代码1 我的是64位机器,至于32位机器是怎么样,可以用32位机器试下还是看下代码吧,不然无法理解,比如,时不时有人会提到32767,又有人说int占用4字节,甚至把两者等同起来,这是错误的。结论是:32767的时代已经过时了,还是要仔细分

2021-01-07 11:10:08 1761

原创 C/C++如何忽略定义了但是未使用的变量

忽略定义了但是未使用的变量1 GCC编译中警告不等于错误,但有些警告所有编译器都认为是错误2 一个案例3 忽略定义了但是未使用的变量1 GCC编译中警告不等于错误,但有些警告所有编译器都认为是错误下面提及几点,明明定义了返回值,但是不返回形参、实参类型不匹配,无法进行隐式转换编译器最初会给出警告,至于是不是错误,我认为有两点主要原因编译器厂商共同约定的,某些警告就是错误程序员可以附加其他错误项,比如你就认为某个警告就是错误啦至于我们需不需要将所有的警告全部消灭,看个人和项目要求,但是

2021-01-06 15:25:15 3286 1

原创 C语言调用shell命令及获得环境变量的内容

调用shell命令,获得环境变量的内容C语言是靠底层的高级语言,和系统有关的操作都提供一些API1 执行shell命令system2 获得环境变量的内容C语言是靠底层的高级语言,和系统有关的操作都提供一些API1 执行shell命令system将字符串传递给执行环境,其结果与具体实现有关,比如,Linux下想执行ls命令,system("ls"); // 执行命令再比如,windows下,我们经常遇到这样的代码system("p

2021-01-06 14:52:08 643

原创 C语言如何使用时间time

时间time1 头文件1 头文件<time.h>,获取当前本地时间C语言给我们提供了时间,对于一般的任务是足够。下面最要程度依次降低。获取本地时间,十分简单,就两个函数,如下。 time_t t = time(0); printf("%s\n", ctime(&t)); // 输出当前时间,注意,已经localtime了 //output Wed Jan 6 10:38:18 2021下面介绍下这两个函数。tim

2021-01-06 14:29:50 2179

原创 C/C++中大小端判断

大小端判断1 什么是大端、小端?2 两种简单的方式判别大小端2.1 使用union的特性2.2 强转成char*3 指针的强大1 什么是大端、小端?整数的表示作为计算机入门的第一步,在计算机内部用0、1表示,存储顺序有两种,分别是小端、大端小端序(little-endian)是指将表示整数的低位字节存储在内存地址的低位,高位字节存储在内存地址的高位。相反大端序(big-endian)低字节存储在内存的高位。一个例子下标是一个内存地址,从0x100开始的哈2 两种简单的方式判别大小端2.1

2021-01-05 19:15:19 1159

原创 C/C++使用异或交换元素及固有的缺点

异或交换元素1 如何使用异或来交换元素2 扩展,一组数,只有一个数出现一次,其他数出现两次,求出现一次的这个数?3 一组数,只有一个数出现一次,其他数出现三次,求出现一次的这个数?1 如何使用异或来交换元素代码如下/** \brief swap 异或交换两元素 * \author xxx * \copyright GNU Public License * \version 1.0 * \date 2020-1-4 * * \param[

2021-01-04 21:25:23 356

原创 如何理解C/C++语言的优先级,需要背吗?

C语言优先级1 如何理解C语言优先级,需要背下来吗?2 记住最高优先级的四个3 ++ -- 属于第一还是第二梯队4 * & 属于第二梯队5 几个案例6 总结7 C++在四大最高优先级上还有一个作用域解析符::1 如何理解C语言优先级,需要背下来吗?很多初学者都是在背C语言优先级顺序表和结合型方式(左结合or右结合),其实不需要,如何就背下来的话,那么把++、.、->、[]这些混在一起,这时继续背?还是必须解决这个问题?看似表的内容很多,其实你只需要记住一点就好了,下面我和大家分享下。2

2021-01-04 19:29:25 566

原创 C语言中static的理解

static的理解1 如何理解static?2 加上static改变了什么?2.1 static的存储类型解释3 加上static后带来了什么优点?4 总结1 如何理解static?static在很多的地方都能看见。那么怎么准确把握它含义呢?其实我把这个问题分成两个点, 1. 加上static改变了什么?2. 加上static后带来了什么优点?2 加上static改变了什么?最容易理解的答案是:将变量私有化,即具有内部连接属性由于static作用变量的作用域不同,所有static变量细分几种

2021-01-04 16:33:48 1509

原创 C/C++计算复数的模长API

计算复数的模长1 复数的表达2 计算复数的模长1 复数的表达实际上,在C语言是没有复数库的,一般而言,可以定义一个结构体struct complex { double real; double imag;};而C++是有复数库#include <complex> ,它是一个模板库,在模板中一个设计思路是,先设计主模板库—Primary template之后再分别实例化—Specializations比如,这里就简单的提及下,这里只讲C哈。// Primary temp

2020-12-31 16:56:45 1836

原创 C语言计算商和余数div

商和余数1 利用API计算商和余数2 利用求余和取模运算1 利用API计算商和余数这里要分享的利用内置API哈,因为这个确实很多种方法一共有两个函数,一个适合int、一个适合long而言返回的结构体div_t有两个元素,商是quot;余数remdiv_t div(int num, int denom);ldiv_t ldiv(long num, long denom);比如:5/3 = 1 ... 2 // num/denom=quot...rem使用案例: div_t re

2020-12-31 16:02:53 6525 1

原创 C语言宏替换#define中的#和##以及\

#define中的#和##1 #替换2 ##连接2 \代表是一行代码1 #替换在#define中,有两个特殊的符号,他们是#和##// 下面含义代表name的真实含义#name 具体过程:1. 现在name左右加上引号,表达成字符串2. 将name换成真实的实参例如#define MYREPLACE(dir) #dir "/%s" // # 替换printf("%s\n", MYREPLACE(/usr/local));Output,输出/usr/local/%s

2020-12-31 15:44:29 1151

原创 C语言预处理命令#line、#error、#pragma、#ifndef等

C语言预处理命令1 我想把预处理命令分成3类2 三个陌生命令2.1 #line行控制2.2 #pragma留给具体实现2.3 #error错误信息输出2.4 #ifxxx条件编译2.4 书写语法1 我想把预处理命令分成3类如下3块内容1. 以#define、#include的宏替换和文件包含2. 以#ifxxx为首的一族条件编译命令3. 其他三个陌生命令,如#line、#error、#pragma 总结:第一点我们很熟悉,不在这里分析。但是涉及两个特殊用法,即#和##,之后分享第二点是条件编

2020-12-31 11:24:02 990

原创 一个简单的C语言调试信息 __FILE__、__LINE__、__DATE__、__TIME__

C语言预定义名字1 5个C语言预定义名字2 案例1 5个C语言预定义名字下面的五个预定义名字不可取消定义也不可以重定义!!!名字含义__LINE__指示当前所在行数、十进制常量。结果受#line的影响!__FILE__当前源文件文件名__DATE__编译日期__TIME__编译时间__STDC__是否遵循标准,是值为1,否则为0前面四个应用非常广泛,比如:编译错误提示输出信息,内核编译时间等2 案例printf("ERROR inform

2020-12-31 10:17:21 185

原创 error: stray ‘\’ in program

编译错误1 stray ‘\’ in program2 其实根源是出在转义字符上1 stray ‘\’ in program在C/C++中,出现这个错误,第一时间会认为是在程序中输入了中文字符,因此只需要将中文字符修改即可。不错,这是正确的。2 其实根源是出在转义字符上下面是一些典型的转义字符,那么,除了规定的转义字符外,其他转义字符均是非法的,换句话说以\开头且合法的,只有规定的转义字符当然,下面的代码是非法的,错误原因就是标题。C/C++没有定义转义字符\d"\d"然而,我们的本意并不

2020-12-29 19:09:47 22080 1

原创 Boost C++ assert的用法简析

assert的用法简析1 软件验证、测试宏assert2 assert运行时断言2.1 禁用BOOST_ASSERT2.2 自定义assert?3 static_assert编译时检查4 static_assert和assert5 lightweight_test提供最基本的单元测试功能6 test组件1 软件验证、测试宏assertC/C++本身仅提供了有限的软件验证、测试宏assert,而Boost.assert库增强了assert库,包含如下的组件assert —>运行时检查st

2020-12-21 20:29:54 1147

原创 Boost C++测试组件test库

Boost测试组件test1 boost::test简介和基本概念二级目录三级目录1 boost::test简介和基本概念test库用于单元测试、命令行测试组件,全称Unit Test Framework(UTF)二级目录三级目录

2020-12-18 20:22:39 2932 3

原创 VSCODE C++ tasks.json分享

tasks.json1 今日分享一个C++编译的任务task1 今日分享一个C++编译的任务task自己用的gcc,其实task.json也叫做编译。换句话说就是配置gcc编译参数。下面我就分享下我自己的。{ "tasks": [ { "type": "shell", "label": "C/C++: g++-7 build active file ver(1)", "command": "/usr/bin

2020-12-16 20:29:02 3107

原创 vscode git删除仓库

1 git删除远端仓库今日,记一下,删除远端仓库,比如:远端仓库已经存在,这时push就会失败,这是可以考虑删除远端仓库下面,分享下首先,找到已存在的仓库,点击Setting拉到最后,删除仓库,填入仓库名字即可2 git删除本地仓库直接删除.git隐藏文件夹rm -rf .git/3 ERROR: make sure you configure your user.name and user.email in git添加自己的信息,如在终端中输入即可git config --

2020-12-15 15:58:40 4129 1

原创 Matlab中sym无法使用

Matlab中sym失效1 问题:今日使用matlab符号库,发现sym已经不能正常使用了2 解决方案:使用str2sym即可3 更进一步3.1 废弃字符向量创建符号3.2 pi的属性1 问题:今日使用matlab符号库,发现sym已经不能正常使用了下面是创建一个exp(x)的符号,发现已经不能正常使用了注意:笔者matlab是2020a。>> y1 = sym('exp(x)')Error using sym>convertChar (line 1537)Character

2020-12-13 18:08:19 21001 1

原创 Boost实用工具之如何简单、高效初始化assign

这里写简单、高效初始化1 如何给容器初始化、赋值大量数据?2 list_inserter容器赋值(先创建空的,再赋值)2.1 operator,2.2 operator+=3 generic_list容器构造时填充数据1 如何给容器初始化、赋值大量数据?这个问题,其实解决办法很普通。比如,重复调用push_back()、insert()等函数,或者使用初值列语法。但是我们希望有更高效的大量数据初始化的方法assign下有两个重要的类,分别负责不同的场景list_inserter容器赋值(先创建

2020-12-09 14:33:53 378 1

GCC 中文手册.pdf

gcc中文翻译手册和 英文源于https://gcc.gnu.org/onlinedocs/

2020-10-15

空空如也

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

TA关注的人

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