技术
xiongpursuit88
这个作者很懒,什么都没留下…
展开
-
C++中的菱形继承问题及解决方案
C++中支持多重继承,但是由于这个特性,导致会有如下继承关系。这样,类D就会同时拥有从类B中继承下来的A中的函数,也会拥有从类C中继承下来的A中的函数,会产生模糊调用的现象。为了解决这个问题,可以采用“虚基类”解决。即如下:class A{}class B: public virtual A{}class C: public virtual A{}class D: public B, public C{}这样,就能完美解决A中方法由两条线继承到D中的时候的模糊问题。这就是著名的臭名昭原创 2022-12-06 08:56:57 · 437 阅读 · 0 评论 -
C++11闭包函数的几种实现方法
函数就是对传入的一组参数进行运算的行为,闭包函数就是有状态的函数,在参与运算时,除了传入的参数外,还可以对上下文的状态进行运算。类函数运行时就是典型的闭包函数,类函数运行起来后其对象就是状态上下文,函数内部可以使用类对象的数据。闭包函数可以采用仿函数、函数绑定和Lambda表达式来实现。仿函数就是将类函数化,即实现类的()运算符,()运算符可以带参数,也可以不带参数。举例如下:执行结果为:result=11在介绍std::bind之前,先介绍function模板。function模板相当于函数指针,它原创 2022-12-04 20:36:49 · 1489 阅读 · 0 评论 -
Windows性能监视器使用说明
方式一:命令行 perfmon方式二:图形化操作控制面板→系统与安全→管理工具→性能监视器在采集数据前,需要做好相应的收集器创建。监视工具性能监视器,右键新建数据收集器集。点击【完成】后,在数据收集器集用户定义下面就多了一个监视器集,即myperf。接下来,对myperf计数器集添加计数器。如下,设置以逗号分隔,即csv文件,后面可以用excel打开。设置每1秒钟采集一次数据。设置文件格式。比如文件名中带年月日时分秒(20221202),可以设置为yyMMddhhmmss。原创 2022-12-03 09:43:55 · 1622 阅读 · 0 评论 -
C++11智能指针之weak_ptr
Weak shared pointer比较特殊的函数有lock和expiredstd::weak_ptr::lockshared_ptr lock() const noexcept;Lock and restore weak_ptr.Returns a shared_ptr with the information preserved by the weak_ptr object if it is not expired.If the weak_ptr object ha原创 2022-12-03 09:27:39 · 548 阅读 · 0 评论 -
C++11智能指针之shared_ptr
共享指针,多个shared_ptr对象可以绑定同一块堆空间。原创 2022-11-29 19:41:22 · 203 阅读 · 0 评论 -
C++11智能指针之unique_ptr
只能独一无二地拥有某堆空间的对象。原创 2022-11-28 17:50:57 · 536 阅读 · 0 评论 -
C++ std::unordered_map使用介绍
unordered_map的介绍,使用以及与map的对比原创 2022-11-24 10:14:46 · 307 阅读 · 0 评论 -
Qt中使用QSettings读取配置文件注意事项
QSetting为Windows、Linux和MacOS系统提供了统一的配置文件/注册表读取方式。(引用QtHelp的一句话:The QSettings class provides persistent platform-independent application settings.)原创 2022-11-17 12:15:03 · 2446 阅读 · 0 评论 -
npm问题:在命令行或者终端中输入npm -v或者cnpm -v没反应
在命令行输入npm -v没反应,或者比较慢才返回;输入cnpm -v没反应(提前下载过cnpm了的)。原创 2022-11-03 20:09:41 · 1565 阅读 · 0 评论 -
Qt中中文处理-编码格式转换
在Qt中,由于对文本的处理都是采用utf-8(Unicode字符集的一种编码方式),当遇到非utf-8的字符串时,如果不进行转换,常常会出现乱码的情况。比如,当读取一个gbk格式的文件,然后将其显示出来时,如果采用下面的代码进行编写,则会出现显示乱码。原创 2022-11-03 09:37:32 · 3215 阅读 · 0 评论 -
Reentrancy(可重入) and Thread-Safety(线程安全)
Hence, a thread-safe function is always reentrant, but a reentrant function is not always thread-safe.所有,线程安全的函数一定是可重入的函数,但是可重入的函数不一定是线程安全的。原创 2022-11-01 08:55:36 · 100 阅读 · 0 评论 -
Qt中向ini文件写中文出现乱码问题
可是,打开vdacfg.ini文件,结果如下:其中有中文的地方,sex,name,major都变成了十六进制串。并且刚好这些十六进制串就是对应中文的UTF-8编码结果。例如,刘春花就是0x5218 0x66250x82b1。原创 2022-10-31 14:11:40 · 1951 阅读 · 0 评论 -
Qt中的五种connectType介绍
Qt::BlockingQueuedConnection:槽函数的调用时机与Qt::QueuedConnection一致,不过发送完信号后发送者所在线程会阻塞,直到槽函数运行完。Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。Qt::QueuedConnection:槽函数在控制回到接收者所在线程的事件循环时被调用,槽函数运行于信号接收者所在线程。Qt::DirectConnection:槽函数会在信号发送的时候直接被调用,槽函数运行于信号发送者所在线程。原创 2022-10-28 09:32:13 · 1522 阅读 · 0 评论 -
__stdcall的作用及今天的坑
_stdcall规定了函数调用约定。被这个关键字修饰的函数,其参数都是从右向左通过堆栈传递的(__fastcall 的前面部分由ecx,edx传), 函数调用在返回前要由被调用者清理堆栈。这个关键字主要见于Microsoft Visual C、C++。原创 2022-10-26 16:33:10 · 1530 阅读 · 0 评论 -
Qt中10进制与16进制间转换
目前使用到的是QByteArray::number(源数据 ,目标输出的进制)。//1、把输入的十进制数据转换为16进制。QByteArray::fromHex代表读取十六进制数据,------// 这个函数默认以十进制输出base=10。// toInt的16代表数据是16位。// 把这个数据转换为10进制字符串,此时number_tmp 变为字符串’112’另外:QString.toUInt() 可以指定任何进制(如十六进制)输出为十进制。//2、上下这俩代码等效------------原创 2022-10-26 14:15:10 · 6103 阅读 · 0 评论 -
extern “C”的作用
C++调用端在调用C写的导出函数时,告诉C++编译器,调用的函数还是采用C规则编译。原创 2022-10-26 11:30:09 · 326 阅读 · 0 评论 -
如何重定向注册表
1、如果是想导入到非Wow6432Node, 就运行C:\Windows\regedit.exe regfile.reg2、如果是想导入到Wow6432Node, 就运行C:\Windows\SysWOW64\regedit.exe regfile.reg举例将如下注册表文件RPT.reg导入到注册表,“device”=“凭条打印机(深圳研科)”“Port”=“1”原创 2022-09-09 14:32:41 · 447 阅读 · 0 评论 -
make编译源码时报error: ‘for’ loop initial declarations are only allowed in C99 mode的解决办法
make编译源码时error: ‘for’ loop initial declarations are only allowed in C99 mode原创 2022-08-05 14:45:57 · 1340 阅读 · 0 评论 -
Unicode文件解析方法及存在问题
在项目中遇到需要将一个Unicode编码(UTF-16LE)的文件内容解析出来,但是在使用MFC的类CStdioFile进行文件读取的时候,出现乱码。同时,读取的文件有可能还是ASCII编码的,使用CStdioFile读取是可以正常读取。需要同时兼容两个编码。...原创 2022-07-26 11:41:19 · 630 阅读 · 0 评论 -
解决远程主机无法连接mysql数据库的问题
在本机安装好了mysql服务端后,本机的客户端访问没有问题,但是,由于项目的需要,今天在另外一台主机上采用navicat访问mysql服务端时,报错如下通过命令mysql-h192.168.3.22-uroot-p访问也是报这样的错误。...原创 2022-07-26 09:47:25 · 1396 阅读 · 0 评论 -
牛图条码扫描仪读数据不全的问题分析
现象这几天,测试发现牛图条码扫描仪读数据存在有时读不全的问题,分析了很久,都没有找到原因。因为是偶发,还不好模拟,测试人员反馈读二维条码不容易出现但是读一维条码容易出现,于是采用一维条码模拟很快就模拟出来了。原因write->read(ack两个字节)->read(条码流)第一个read传入的长度本来应该是2,结果传入了10,导致read(条码流)的时候总是少了前面8个字节。刚开始还总是怀疑是超时时间设置不正确导致的。可是不管怎么换超时时间参数,结果都一样。后面想怎么就老是少了前面8原创 2022-05-21 11:16:01 · 438 阅读 · 0 评论 -
多线程之BlockingQueue中 take、offer、put、add的一些比较
https://blog.csdn.net/wei_ya_wen/article/details/19344939原创 2022-04-28 23:21:51 · 123 阅读 · 0 评论 -
Java反射机制是否会影响性能
解答如下问题:1、反射机制本身是否存在性能问题?2、反射机制是否会影响项目的性能?我的观点:反射机制会影响运行阶段服务器的性能。为什么呢?因为反射机制是把本来应该在项目启动阶段做的事情,延迟到了项目运行阶段来做。这样就增加了项目运行阶段的系统开销。说明:反射机制是一种程序自我分析的能力。用于获取一个类的类变量,构造函数,方法,修饰符。优点:运行期类型的判断,动态类加载,动态代理使用反射。缺点:性能是一个问题,反射相当于一系列解释操作,通知jvm要做的事情,性能比直接的java代码要慢很多。原创 2022-04-20 20:08:12 · 1988 阅读 · 2 评论 -
VO/DTO/Entity到底是干嘛的
vo/dto/entity的区别原创 2022-04-14 14:04:32 · 319 阅读 · 0 评论 -
Linux串口编程select函数返回-1,errno=22(EINVAL)原因
linux串口编程select原创 2022-04-11 18:09:14 · 3927 阅读 · 0 评论 -
/proc/self/目录的意义及Linux中获取进程目录的方法
我们都知道可以通过/proc/pid/来获取指定进程的信息,例如内存映射、CPU绑定信息等等。如果某个进程想要获取本进程的系统信息,就可以通过进程的pid来访问/proc/pid/来获取指定进程的信息,例如内存映射、CPU绑定信息等等。如果某个进程想要获取本进程的系统信息,就可以通过进程的pid来访问/proc/pid/来获取指定进程的信息,例如内存映射、CPU绑定信息等等。如果某个进程想要获取本进程的系统信息,就可以通过进程的pid来访问/proc/pid/目录。但是这个方法还需要获取进程pid,在for原创 2022-03-11 15:14:28 · 1707 阅读 · 0 评论 -
解读google C++代码编写规范-1.3前置申明的要求
1.3. 前置声明Tip尽可能地避免使用前置声明。使用 #include 包含需要的头文件即可。定义:所谓「前置声明」(forward declaration)是类、函数和模板的纯粹声明,没伴随着其定义.优点:前置声明能够节省编译时间,多余的 #include 会迫使编译器展开更多的文件,处理更多的输入。前置声明能够节省不必要的重新编译的时间。 #include 使代码因为头文件中无关的改动而被重新编译多次。缺点:前置声明隐藏了依赖关系,头文件改动时,用户的代码会跳过必要的重新编译过程。原创 2022-02-25 14:35:03 · 583 阅读 · 0 评论 -
Windows上通过CreateProcess调用进程,返回成功了,但是进程无法被启动起来
现象Windows10上通过CreateProcess API调用进程,返回成功了,但是进程无法被启动起来,任务管理器中没有看到该进程。原因分析为权限所致解决方案将该进程以管理员身份运行。如下图所示。...原创 2022-01-14 09:14:49 · 1276 阅读 · 0 评论 -
an error occurred while trying to rename a file in the destination directory code 5
安装错误 MoveFile failed原创 2022-01-13 11:56:35 · 2549 阅读 · 0 评论 -
Ajax是什么?
直白地说,就是没用AJAX的网页,你点一个按钮就要刷新一下页面,尽管新页面上只有一行字和当前页面不一样,但你还是要无聊地等待页面刷新。用了AJAX之后,你点击,然后页面上的一行字就变化了,页面本身不用刷。AJAX只是一种技术,不是某种具体的东西。不同的浏览器有自己实现AJAX的组件。=====================================突然想让这个答案更加完美,所以补充一下下面的内容:ajax的全称是AsynchronousJavascript+XML。异步传输+js+xml。所谓异步,转载 2021-12-24 22:03:10 · 69 阅读 · 0 评论 -
URL中“#” “?” &“”号的作用
阅读目录?&回到顶部10年9月,twitter改版。一个显著变化,就是URL加入了"#!“符号。比如,改版前的用户主页网址为http://twitter.com/username改版后,就变成了http://twitter.com/#!/username 这是主流网站第一次将”#"大规模用于重要URL中。这表明井号(Hash)的作用正在被重新认识。本文根据HttpWatch的文章,整理与井号有关的所有重要知识点。一、#的涵义 #代表网页中的一个位置。其右面的字符,就是该原创 2021-12-22 10:56:27 · 1364 阅读 · 0 评论 -
strcpy_s使用注意事项。(能用memcpy_s的地方就不要用strcpy_s了)
strcpy_s()函数有两个版本:三个参数版本和两个参数版本,如下:三个参数时:errno_t strcpy_s(char *strDestination,size_t numberOfElements,const char *strSource);两个参数时:errno_t strcpy_s(char (&strDestination)[size],const char *strSource); // C++ only以下重点讨论三个参数版本。使用时一定要注意:第二个参原创 2021-12-19 00:07:37 · 1290 阅读 · 0 评论 -
Module build failed: TypeError: this.getOptions is not a function at Object.stylusLoader
error in ./src/pages/home/components/Header.vueModule build failed: TypeError: this.getOptions is not a functionat Object.stylusLoader (/Users/rockygao/Data/wwwroot/travel/node_modules/[email protected]@stylus-loader/dist/index.js:17:24)@ ./node_modu原创 2021-12-18 23:53:54 · 1497 阅读 · 0 评论 -
Linux中.so文件加载方式(/etc/ld.so.conf.d/目录下文件的作用)
在了解/etc/ld.so.conf.d/目录下文件的作用之前,先介绍下程序运行是加载动态库的几种方法:第一种,通过ldconfig命令ldconfig命令的用途, 主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下, 搜索出可共享的动态链接库(格式如lib*.so*), 进而创建出动态装入程序(ld.so)所需的连接和缓存文件. 缓存文件默认为/etc/ld.so.cache, 此文件保存已排好序的动态链接库名字列表.这里面涉及到的关键内原创 2021-10-11 08:54:12 · 2837 阅读 · 0 评论 -
各版本的QT源码下载地址
各版本的QT源码下载地址:http://download.qt.io/archive/qt/记录一下,便于查找原创 2021-09-29 15:44:55 · 838 阅读 · 0 评论 -
代码行尾回车换行引发的问题
最近碰到一个坑:代码文件行尾格式不对引发程序中变量数据不对、调试时代码行顺序错位等问题。原因是代码中原本应该是回车换行(\r\n)的,写成仅换行(\n)了。原创 2021-07-09 09:15:18 · 291 阅读 · 0 评论 -
谈谈数据库的ACID
一.事务定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。准备工作:为了说明事务的ACID原理,我们使用银行账户及资金管理的案例进行分析。 // 创建数据库 create table account( idint primary key not null, namevarchar(40), moneydouble ); // 有两个人开户并存钱 insert into acc转载 2021-05-13 12:55:30 · 81 阅读 · 0 评论 -
C++静态成员函数访问非静态成员的几种方法
大家都知道C++中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会“自动”帮你把这个this指针加到函数形参里去。当然在C++灵活性下面,类还具备了静态成员和静态函数,即class A{public:static void test(){m_staticA += 1;}private:static int m_staticA;int m_a};此时你的test函数只能去访问m_staticA成员,而不能去访问m_a。同学可能会问,这算什么问题?问转载 2021-04-16 17:22:40 · 209 阅读 · 0 评论 -
JDK报cannot execute binary file
今天在下载jdk1.8安装配置后的时候,运行java -version总是报"cannot execute binary file"。后面分析,是因为下错包了。下成ARM的了,应该是x86的。通过uname -a可以看出机器的架构。[root@hadoop100 bin]# ./java-bash: ./java: cannot execute binary file...原创 2021-03-30 09:06:22 · 1104 阅读 · 0 评论 -
C++中BOOL转换成bool的方法
在将BOOL类型转换为bool类型时一定要小心。因为BOOL实际上就是int的,而bool就是基本的bool类型,在从BOOL转换为bool时,因为前面范围广,将会出现丢失的肯能。typedef int BOOL;其取值为TRUE(1)或FALSE(0)而bool是基本类型,其取值为false或true。如果不进行转换,会出现如下警告:warning C4...原创 2020-03-15 19:32:20 · 2371 阅读 · 0 评论