![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 57
Tjmies
只有做不做,没有能不能。
一个人要用心而不是努力。
展开
-
VS 打包单一程序
如何把可执行程序以及所依赖的dll文件打包成单一文件,易于使用。原创 2022-06-09 15:04:27 · 653 阅读 · 2 评论 -
C++ 面试提问总结
总结一下前段时间面试的一些面试提问,希望能帮助正在找工作的伙伴。自我感觉还是挺难的,很多东西开发过程中都没有注意到。1. jsoncpp 数组下标如果是0,则不可以直接写数字0,需要添加U(或者一个变量代替)?2.jsoncpp内部实现原理机制?3.stl容器的erase释放?4.说明Linux系统下网络编程TCP、UDP的接口函数有哪些?QT呢?5.TCP有哪些框架?6.大工程项目下,如果判断哪个线程被死锁?7.内存泄漏如何解决?工具/方法8.信号和槽函数机制原理?原创 2021-11-30 20:27:42 · 760 阅读 · 0 评论 -
排序算法:给一串数字,要求将其从小到大排序,相邻两个数字差值小于n也ok,(比如n为2,那么4 2这种组合也算从小到大排)求一共有多少排法
在这里我考虑使用全排列算法,来得到每一个排列,再去逐一去进行判断相邻两个数的差值。全排列指:就是从第一个数字起每个数分别与它后面的数字交换排列过程中需要考虑重复的数,因此需要去重,去重的全排列就是从第一个数字起每个数分别与它后面非重复出现的数字交换不相同的n个数进行全排列,其排列值为n的阶乘(!n)代码如下:int total = 0;//参数 数组 数组的起始位置 数组长度 差值void Interview::sort_difValue1(int arr[], in原创 2021-08-09 14:42:50 · 687 阅读 · 0 评论 -
理解互斥和条件变量
1.互斥量mutex原理:在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁,任何其它试图再次对互斥量加锁的线程将会阻塞直到当前线程释放该互斥锁。(简单理解:加锁解锁)2.互斥量mutex和 条件变量原理:利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待“条件变量的条件成立”而挂起;另一个线程使“条件成立”而发出信号。(多线程中用来实现等待--》唤醒”逻辑的常用的方法)3.区别①互斥锁可能会造成死锁,条件变量和互斥锁联用可以避免此问题...原创 2021-07-09 17:04:16 · 380 阅读 · 0 评论 -
c++以太坊访问:账户私钥 、公钥、地址的生成(四)
libsecp256k1椭圆曲线算法原创 2021-07-01 14:21:12 · 2517 阅读 · 0 评论 -
C++ / Opencv 简单实现美颜效果(瘦脸、大眼、磨皮等)
最近项目需要用到美颜的一些效果,因此开始接触opencv计算机视觉库,在腾讯课堂上找到一个简单且免费的入门视频《Opencv4快速入门视频30讲》,原创 2021-06-12 15:41:23 · 12307 阅读 · 13 评论 -
解决 “error C2061: 语法错误: 标识符“noexcept” 或“abs”: 不允许重载函数的第二个 C 链接” 问题
此问题是在对OBS进行二次开发过程中遇到的,反正就是莫名其妙的就出现了,obs源码编译是在3个月前就编译好了的,最近需要添加新功能,再次编译过程就出现了此问题。一开始我就觉得可能是VS环境的问题,但对vs开发环境的自信,就一直觉得是我添加的代码的问题,因此就一直执着于代码,解决过程中如下:环境如下:VS2017、WIN10、OBS开源代码问题描述:OBS编译过程中,源码中libobs库的编译时,c++标准库cstdlib一直在报错noexcept,出现此错误:具体相关错误指向..原创 2021-04-24 10:28:42 · 6769 阅读 · 0 评论 -
c++以太坊访问:应用二进制接口编解码(三)
Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。因受到C++,Python 和 Javascript 语言的影响,因此编码风格基本上和c++大同小异,学习solidty并不难,只是需要去理解一些相关特性和用法。接触solidty语言,就一定义会接触solidity的应用二进制编码接口原创 2021-04-13 14:04:26 · 368 阅读 · 0 评论 -
linux下java调用c++接口常见问题
最近项目中,遇到很多linux下java调用c++接口的问题,因此在这总结一下:1.java调用 so动态库的问题undefined symbol: curl_global_init 检查动态库的依赖问题can not load lib***.so 检查动态库是否存在问题,检查java调用动态库路径等等此处要注意的问题是:linux上 java调用接口时,好像只能加载一个so文件,不能加载多个so文件。而windows上是可以加载多个dll文件。linux和w...原创 2021-04-13 11:09:59 · 477 阅读 · 0 评论 -
linux 依赖动态库问题
最近在对windows的代码进行移植过程中,发现编译后的动态库与java进行调用过程中出现无法加载或者未定义依赖库函数名的问题,就进行简单的测试:1.文件目录add文件夹://cpp#include "add.h"int add(int a,int b){ return a+b;}//hextern int add(int a,int b);dec文件夹:// cpp#include "dec.h"int dec(int a,int b){return a-b.原创 2021-04-09 17:28:36 · 310 阅读 · 0 评论 -
Windows批处理文件 配置系统环境变量
config.bat文件如下:@echo offset My_PATH=%~dp0echo %~dp0echo 注意:路径不能包含中文echo %Path%|findstr /i %~dp0 &&(goto continue)Wmic Environment Where "Name='Path' And UserName='<System>'" Set Variablevalue=";%Path%;%My_PATH%;":continuepauseex..原创 2021-04-01 22:21:25 · 831 阅读 · 0 评论 -
c++ Qt & vs 常见错误解析
突然翻到2019年的笔记本,看了一下自己所做的笔记,列举着一些Qt和 VS开发的一些常见错误分析以及相关解决方法,突然就想放在csdn上,便于查看,毕竟笔记本容易掉,放着放着就不知道放哪儿去了 ,虽然随着开发时间的不断增长,这些错误都能轻松解决呀,但还是希望能帮到一些初学者,提供一些帮助,解决一些疑惑。1.为什么不能直接cout一个string字符串(而需要添加头文件#include<string>)分析:STL中的许多头文件都包含std::basic_string类定义式,它们间接的.原创 2021-03-07 15:47:32 · 2194 阅读 · 0 评论 -
Linux上c++通过JNI调用java代码笔记
2最近工作中,需要用到c++通过JNI去访问Java代码,在这里做下自己过程中遇到的问题,做个总结;1.linux配置java jdk环境第一步:去官网下载对应的linux包https://www.oracle.com/java/technologies/javase-jdk11-downloads.html (这里我用的jdk11)第二步:解压放在/usr/lib/下面第三步:配置环境(/etc/profile)export JAVA_HOME=/usr/lib/jd...原创 2021-02-27 22:49:34 · 747 阅读 · 5 评论 -
c++以太坊访问:eth api接口调用(一)
最近接触到以太坊智能合约,在私有链上部署合约后,通过代码去调用合约方法,没有在网上找到c++对以太坊的调用库,发现java有以太坊相关的模块库web3j(web3j是一个轻量级、高度模块化、反应式、类型安全的Java和Android库,用于处理智能合约和与以太坊网络上的客户端(节点)集成)。自己尝试进行对web3j进行类似的封装,初步对eth的json rpc api接口进行访问;Infura开发手册:http://cw.hubwiz.com/card/c/infura-api/1/2/3/..原创 2021-02-03 18:37:32 · 2164 阅读 · 0 评论 -
FFmpeg 视频添加水印图片
最近学习FFmpeg编程开发,想写个视频添加水印图片的demo,代码编写中遇见很多问题,在这里进行做一个笔记来,易于自己记忆和理解。期间在网上找demo,发现很多都是ffmpeg3版本的一些demo,ffmpeg4有很大的改变,有很多方法不适应,因此写篇文章给初学者一些细微的帮助,也易于自己巩固,避免犯类似的错误。一、总结一下编码过程:1.初始化化封装格式上下文 并打开文件avformat_alloc_context /avformat_alloc_output_context22.创建..原创 2020-12-25 09:58:43 · 2007 阅读 · 2 评论 -
简单的日志输出文件类
目的:输出自己想要打印的信息,经常会使用到,写了好几次了,易于自己后面直接调用,代码量虽然少,也懒得写(c++实现)outputlog.h#pragma once#include <mutex>#include <fstream>#include <string>#include <time.h>using namespace std;enum ENUMLOG_TYEP{ Type_Info = 0, Type_Warn, T原创 2020-12-14 18:43:42 · 208 阅读 · 0 评论 -
常见的排序算法
1.冒泡排序原理:①比较相邻的元素。如果第一个比第二个大,就交换他们两个。②对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。③针对所有的元素重复以上的步骤,除了最后一个。④持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。平均时间复杂度为:代码如下://简单理解:重复“从序列右边开始比较相邻...原创 2019-12-04 11:41:09 · 178 阅读 · 0 评论 -
思考:如何设计好一个类?
c++程序员应该如何设计好一个类?如何去思考?怎样才能作为一个优秀的类设计者?一个优秀的类设计者都有一个核查表,它并不是任务清单。其作用是帮助你回忆起可能会忘记的事情,而不是来约束你。下面就是设计类时我们应该想到的问题(重在思考,而不是按部就班):1.你的类需要一个构造函数吗?过于简单的类可能并不需要构造函数,它们的结构就是接口,所以并不需要构造函数。当我们需要隐藏类的内部工作方式...原创 2019-10-14 22:48:33 · 1767 阅读 · 0 评论 -
思考:为什么C++没有(所使用的编程环境的某种功能)?
编程c++程序时,常会思考:为什么最爱使用的编程环境没有想要的某种功能?因为系统中的c++是否具备某种功能,得看系统有没有为它提供这样的环境,这种功能不是编程语言本身的一部分。C++是一门编程语言,其本身并不是一种编程环境。下面是看书籍《c++沉思录》所总结的c++特性:①c++具有可移植性和可并存性;②c++没有对复杂操作系统的依赖性,譬如不需要对垃圾收集机制或者支持交互执行等功能的...原创 2019-10-13 21:40:34 · 282 阅读 · 0 评论 -
深入了解C++为什么建议使用const/enum/inline替换#define
相信大家在使用c++编程中都会有这样的疑惑,为什么c++建议使用const/enum/inline替换#define呢?可以这样来理解:使用编译器来替换预处理器。问题就在于因为#define不被视为语言的一部分。1.那么什么时候使用const替换宏呢?比如:#define PI 3.1415宏定义名称PI有两种可能性:也许从未被编译器看见,也许在编译器开始处理源码之前它就被预...原创 2019-07-20 22:20:11 · 571 阅读 · 0 评论 -
main()函数执行前,做了什么?
最近阅读了一本书《高级C/C++编程技术》,发现都是非常有用的知识,对于初学者提升能力是非常有帮助的,更容易理解编译过程,这儿讲解一下main函数执行之前做了哪些准备。main()函数之前,会先执行一些函数,这些函数有什么作用呢?既然在main()函数之前执行,那肯定是对程序的运行做准备。这个应该都能想到。这儿用两个函数作简单讲解:①_start()函数:主要目的是为接下来调用的_...原创 2019-07-08 21:44:16 · 1166 阅读 · 0 评论 -
C++定时器功能实现
最近编写代码过程中,需要用到一个定时器的功能,我们知道c++只提供了一个头文件#include <ctime>,并没有提供定时器功能函数,所以需要自己编写一个定时器功能的函数,Qt中可以通过信号与槽机制实现定时器功能,我们可以模仿类似的功能来实现。方法一:使用计时器clock函数来实现循环 ①头文件 以及main()#include <iostream>#...转载 2019-06-20 21:15:28 · 33025 阅读 · 12 评论 -
C++继承派生类构造函数的写法
C++有三大思想:抽象与封装、继承与派生、多态性,是c++开发人员面对对象编程必须掌握的知识。初学者对子类继承中构造函数的写法有时会存在一些问题。即子类继承基类时,子类的构造函数如何实现呢?如何调用基类的成员变量?相信大部分初学c++时,都会遇到类似的问题。我们都知道继承中,当子类建立一个对象时,执行构造函数的顺序是:①派生类构造函数先调用基类的构造函数②再执行派生类构造函数本身(...原创 2019-06-16 22:51:01 · 4202 阅读 · 0 评论 -
vs2017打包程序插件无法下载(installer poject)和打包过程
当编写VS程序过程中,可能会对程序进行打包,这时我们就需要vs自带的打包程序Microsoft Visual Studio 2017 Installer Projects插件工具,但我们进行下载时,插件只有4~5M左右,但是可能一直都无法下载下来,造成这样可能的情况是网被墙了,其实国内网站经常会出现类似的情况,这个时候要么可以等待下载完成,要么自己去官网下载。①方法1:等待Microsoft Visual Studio 2017 Installer Projects工具下载,这里给大家推荐一个V原创 2020-11-22 21:54:02 · 1797 阅读 · 0 评论 -
obs studio 在windows10 系统下编译安装过程
1.需求环境系统:Windows 10 (64位)工具:cmake-3.17.2win64-x64.msi 、qt-opensource-windows-x86-5.12.10.exe、visual stdio 20192.下载obs源包和依赖包①下载obs源码安装包, 进入官方下载地址: https://obsproject.com/download,单击Download ZIP 或者View On GitHub里下载,下载完文件名称是obs-studio-master.zip,然后...原创 2020-11-17 18:20:34 · 1656 阅读 · 0 评论 -
C++17 新特性:并行算法
#include <iostream>#include <vector>#include <execution>#include <algorithm>#include <chrono>using namespace std;int main(int argc, char *argv[]){ auto count = std::numeric_limits<int>::max() / (sizeof(int) * 4.原创 2020-10-22 10:58:02 · 3640 阅读 · 0 评论 -
软考知识点:二叉树的关键码序列 解析
题型:解析:首先要理解什么是二叉树?什么是有序二叉树?二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树。有序二叉树,就是左子树上的数值小于树根上的值,树根的值小于右子树的值。到这里理解清楚有序二叉树后就能快速的解决此类题目了。根据题目中的二叉树图可知,①根节点为23,因此就可以排除选项中不..原创 2020-09-15 16:03:28 · 23055 阅读 · 12 评论 -
实现LRU缓存机制(c++) 时间复杂度:O(1)
LRU是LeastRecentlyUsed的缩写,即最近最少使用页面置换算法,是为虚拟页式存储管理服务的,是根据页面调入内存后的使用情况进行决策了。由于无法预测各页面将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似,因此,LRU算法就是将最近最久未使用的页面予以淘汰。//LRU缓存机制(least recently used最近最少使用):一般采用链表+hashtable实现class LRUCache{public: LRUCache(int capac...原创 2020-08-25 14:29:01 · 541 阅读 · 0 评论 -
Check if the given string is a valid string literal.
string checkString(string c){ int num = c.size(); if (num >= 2 && c.find_first_of("\"") == 0 && c.find_last_of("\"") == num - 1) { int count = 0; for (int i = 0; i < num; i++) { if (c.a...原创 2020-08-13 17:51:36 · 1115 阅读 · 2 评论