![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
镇上村树
这个作者很懒,什么都没留下…
展开
-
android::String8与Java String对比
【代码】android::String8与Java String对比。原创 2022-08-19 16:10:55 · 885 阅读 · 0 评论 -
Android Recovery流程分析 OTA安装基本架构
文章目录Recovery升级准备流程OTA安装流程Recovery执行升级多进程/线程架构update-script、updater-binary与system.patch.dat、system.transfer.listRecovery升级准备流程OTA应用调用Framework内提供的系统接口RecoverySystem.installPackage()后,在/cache/recovery/block.map中写入升级信息。该文件将会在设备重启时,由启动引导程序读取内容,并根据内容启动为recov原创 2020-06-15 11:50:42 · 946 阅读 · 0 评论 -
Qt调用Python模块:Python.h
2018年4月15日14:30:08Linux在工程文件中添加头文件和库文件引用Python.h即可库文件:INCLUDEPATH += /usr/include/python2.7LIBS += /usr/lib/x86_64-linux-gnu/libpython2.7.so具体库的名称可以在/usr/lib中查找libpython或者使用lo...原创 2018-04-15 14:37:48 · 4067 阅读 · 0 评论 -
终止QProcess的启动的程序
2018年3月26日20:15:35QProcess::terminate()调用该函数相当于Linux中对一个进程发送terminate信号SIGTERM;该信号是可以被捕捉的,程序可以自行决定终止之前执行的操作,甚至可以忽略这个信号。在windows中虽然没有信号,但是这个函数的作用是相同的,有可能不能终止程序,也允许能够被终止的程序在终止之前做一些终止前的工作。Q...原创 2018-03-26 20:21:26 · 10214 阅读 · 0 评论 -
Qt控制台输出乱码的问题和解决
2018年3月21日11:38:08原因编码格式不正确解决将乱码对应的数据转换为GBK编码QTextCodec *GBK = QTextCodec::codecForName("GBK");QString str = GBK->toUnicode(foo->readAll());首先创建QTextCodec并将目标编码设置为GBK编码;...原创 2018-03-21 14:17:01 · 2626 阅读 · 0 评论 -
QProcess 读取子进程的标准输出得不到任何内容的原因和解决办法
2018年3月21日11:14:11原因根据文档说明,QProcess启动子进程后必须调用对应的方法等待子进程完成启动并等待子进程有数据可读,才能进行读取,否则读取得到的内容为string::empty解决if (apInstance->waitForStarted(-1)) { while(apInstance->waitForReadyR...原创 2018-03-21 11:17:39 · 7153 阅读 · 1 评论 -
Qt 解决TCP发送乱码的问题
2018年2月28日16:56:34修改编码即可解决 QTextCodec *c = QTextCodec::codecForName("UTF-16LE"); QTextEncoder* codec = c->makeEncoder(QTextCodec::IgnoreHeader); QByteArray sendData = codec->...原创 2018-03-24 09:35:04 · 1454 阅读 · 0 评论 -
QT实现窗体自动缩放的快速实现方法
在构造函数中加入:ui->centralWidget->setLayout(ui->mainLayout);即可; 其中centralWidget是窗体的主Widget,mainLayout是底层的布局(主布局);注意:this->setLayout无效,是this->ui->setLayout才有效!...原创 2018-03-06 14:46:06 · 2992 阅读 · 0 评论 -
C++ static成员/类专属成员的定义/静态成员
类的专属成员,即只属于类的成员,同时该成员不属于类的任何一个实例。 符合以上条件的,即为static成员:类的static成员属于类:可以ClassName::StaticName来访问;不属于类的实例:不能使用ClassInstanceName.StaticName来访问。类的专属成员的一个特点:不论这个类实例化了多少个实例,static成员(就是专属成员)都有且只有一份。总结:类的专属成原创 2017-10-16 18:24:32 · 328 阅读 · 0 评论 -
calling 'xxx' on bad self (foo except, got bar)
2018年5月2日20:26:35出现这种错误,将出错的位置中的函数调用的冒号调用修改为英文句点号调用即可。问题原因分析使用冒号调用,实际实现过程是将对象作为一个self参数在调用函数的时候传递;此时第一个参数不再是你写的第一个参数而是self参数即对象实例本身。如果是Lua调用C++情况下的解决办法在C++函数中使用:lua_remove(L, 1);...原创 2018-05-03 09:51:13 · 1968 阅读 · 0 评论 -
VS中C++编程时提示memcpy()不明确的解决办法
在函数调用的时候使用双冒号指定调用全局memcpyt()即可;::memcpy()原创 2018-06-08 12:09:10 · 13326 阅读 · 0 评论 -
VS中win32和x86工程的区别
在同一个解决方案里可以同时存在不同的工程,他们可以分别配置为xin32、x86等不同的配置。其中,x86是C++的叫法,而win32是C#的叫法。是不同编程语言对平台的名称描述。...原创 2018-06-08 12:16:46 · 10751 阅读 · 2 评论 -
static的作用归纳总结
static 成员变量实现了同族类对象间信息共享。static 成员类外存储, ==sizeof求类大小, 并不包含在内==。static 成员是命名空间属于类的全局变量, 存储在 data 区 rw 段。==static 成员使用时必须初始化,且只能类外初始化。声明与实现分离时, 只能初始化在实现部分(cpp 部分)。==可以通过类名访问(无对象生成时亦可), 也可以通过对象访问。...原创 2018-06-25 08:38:51 · 254 阅读 · 0 评论 -
理解WebKit和Chromium
WebKit简介ChromiumWebKit和Chromium代码目录结构WebKit的代码目录结构Chromium多进程模型优缺点Chromium的进程模型和IPCWebKit是渲染引擎,Chromium是浏览器WebKit的功能Chromium的功能Misc WebKitMisc ChromiumWebKit简介狭义的Web...原创 2018-06-25 08:39:55 · 3704 阅读 · 0 评论 -
《New C++ 基础与提高》-学习笔记
miscextern “C” {} 的作用是让C++ 能够调用C编写的代码;其中,原理是extern “C”让编译器不要将函数参数信息添加到函数名中,因为C不支持函数重载,因此,只有支持函数重载的C++需要将函数参数加入到函数名称中以支持重载功能。如果函数的声明和定义不在一起,即定义和声明是分开的时候,那么此时函数的默认参数只能写到声明处,而不能写到定义处。==对数组名称的引用:== i...原创 2018-07-20 22:22:11 · 284 阅读 · 0 评论 -
查看Linux系统内存的真实占用
Linux启动新的进程的时候会优先使用物理内存,当物理内存还有空闲时,linux是不会释放内存的(只要还有空间,那么进程就在可用空间中启动,而不是先清理一下内存然后再启动新的进程),即使占用内存的程序已经被关闭了(这部分内存就用来做缓存了)。也就是说,即时你有64G的内存,用过一段时间后,也会被占满。这样做的好处是,启动那些刚开启过的程序、或是读取刚存取过得数据会比较快,对于服务器很有好处。可以=...原创 2018-07-21 13:17:59 · 1942 阅读 · 1 评论 -
Android container in Chrome OS
Android container in Chrome OSThis document outlines the process by which Android runs in a Linux container in Chrome OS.This document explains how the container for Android master works unless ...原创 2018-09-14 08:44:35 · 707 阅读 · 0 评论 -
Base64编码原理分析
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况下,开辟一种新的方案来支持二进制文件的传送。把不可见字符用可见字符来表示。而Base64...原创 2019-04-26 09:45:31 · 476 阅读 · 0 评论 -
C++将多态基类的析构函数声明为virtual的作用
如果没有将多态基类的析构函数声明为virtual当通过基类指针构造子类对象的时候,此时使用基类来引用/表示子类:BaseClass *b = new ChildClass;如果析构函数不是virtual的,那么调用析构函数时:delete b;这时,调用BaseClass的析构函数,进行析构;==问题出现:使用基类的析构函数进行析构操作,但是实际对象却是这个基类的子类。所以,这样析构只能释放基类的部原创 2017-10-17 13:05:16 · 1190 阅读 · 0 评论 -
C++不要在构造函数和析构函数中调用virtual函数的原因
==child class在构造时,需要首先构造基类。在基类的构造期间,virtual函数的virtual性质是不能体现的,不能发生动态绑定,在构造函数中调用的virtual函数,难以确定是基类的还是子类的virtual函数。==子类在其基类部分的构造期间,它的type就是基类而不是自身==derived class在构造期间,首先构造基类部分,然后构造自身部分;当处于基类构造部分的时候,它就是子类原创 2017-10-17 18:40:56 · 522 阅读 · 0 评论 -
private继承的特点和意义以及何时使用
private继承的特点和意义private继承导致的结果基类中的所有成员都会变成private;如果是private继承,则==不会自动将派生类类型转换为基类类型(不会自动转换,但是可以手动显式进行转换),不能隐式转换==;private继承的意义==不同于public继承是表示子类与基类之间的’is-a’关系,private并不象征着类之间的’is-a’关系。==private继承意味着“原创 2017-10-19 21:08:03 · 6507 阅读 · 2 评论 -
LeetCode:1_TwoSum--C++实现
#include <iostream>#include <vector>using namespace std;/* LeetCode 1.TwoSum 题目要求: Given an array of integers, return indices of the two numbers such that they add up to a specific target.原创 2017-10-12 13:58:06 · 271 阅读 · 0 评论 -
在Qt工程中添加ui文件:使用/添加工程之外的ui文件
在Qt工程中使用工程外的ui文件的方式:作为一个类直接使用、包含到自己的类中或继承使用将ui文件添加到工程中,作为一个类以直接使用 注:这里指使用原本不属于该工程的ui文件第一步:在工程文件.pro中添加UI文件在.proj文件中添加:FORMS += PATH/ui_file_1.ui \ PATH/ui_file_2.uiFORMS表示添加ui文件到本工程中对于多个UI原创 2017-10-12 10:43:57 · 5746 阅读 · 0 评论 -
Effective-C++学习笔记
声明的定义样例并不是有等号就是定义导入C头文件和C头文件的区别C头文件没有h后缀从中导入的名称位于作用域std中C头文件带有h后缀从中导入的名称位于全局作用域global中explicit阻止编译器执行隐式类型转换隐式执行构造函数拷贝构造函数和拷贝赋值操作符拷贝构造函数格式何时调用拷贝构造函数拷贝赋值操作符格式何时调用拷贝赋值操作符命名习惯operator重载C多线程原创 2017-10-20 23:42:46 · 365 阅读 · 0 评论 -
C++常用的智能指针auto_ptr、shared_ptr
利用’对象的析构函数一定会被调用’这一特性,在对象析构的时候delete资源。对于的机制是智能指针。目的是帮助自动释放资源。常用的智能指针:STL的std::auto_ptr<>、TR1的std::tr1::shared_ptr<>std::auto_ptr<>auto_ptr<>在被销毁的时候(离开其scope时),将会==对其所指向对象调用delete==。 1. 不要令多个auto_ptr原创 2017-10-17 18:44:45 · 303 阅读 · 0 评论 -
右结合运算符、结合性
什么是右结合运算符右结合运算符即该运算符首先会计算其右侧运算对象的值结合性对于CC什么是右结合运算符在C/C++和Java中,存在一些operator是右结合的,如+=a+=b+=c; //等同a+=(b+=c);右结合运算符即该运算符首先会计算其右侧运算对象的值结合性结合性即运算符首先运算其哪一侧的运算对象对于C、C++请注意除了少数几个运算符如逗号运算符,、&&等会有标准规定运算顺序原创 2017-09-25 10:47:03 · 6456 阅读 · 0 评论 -
Windows下配置VSCode编译/调试C/C++:launch.json配置
VSCode在windows下配置调试C/C++代码需要的软件工具gcc、gdb工具;推荐下载minGW编译器,安装后在minGW安装目录下的bin目录下就有gcc和gdb;VSCode-windows在VSCode中搜索安装cpptools插件安装(有些情况是不用装的,当你后面的步骤完成后仍然不能开始调试,请安装)步骤启动VSCode,打开你想要调试的工程或文件,然后在菜单栏中单击“调试原创 2017-09-16 10:43:44 · 42621 阅读 · 5 评论 -
设计模式之装饰模式
装饰模式:动态地给一个对象添加一些额外的功能,使之更加灵活地实现扩展的功能,并且以比生成子类更少的成本来实现功能。应用场景:当一个类需要新的功能的时候(如为QQ头像穿上装扮),在不修改原有代码而只以扩展代码的方法来实现,增加的新功能像穿衣服一样:1、穿不穿衣服,class'人'都不受影响;2、穿衣服的方法由衣服来实现;3、特别注意新衣服(新功能)的执行顺序:先穿鞋子再穿袜子就出现问题了(例:先备份原创 2017-08-29 20:54:22 · 307 阅读 · 0 评论 -
多态的学习笔记
多态:不同的对象可以执行相同的动作,但是是使用它们自己实现的方法来完成;可以理解为:父类和子类都实现了一个相同的方法当将一个子类当做父类来使用的时候:注意:子类以父类的身份出现,此时它的类型是父类;子类在工作的时候使用自己的方法而不是父类的方法(即使它已经被当做父类了);子类此时已经'是'父类了,子类特有的属性和方法(即父类没有的属性和方法)不能使用:例:C++函数调用中对一个参数要求为父原创 2017-08-29 15:33:23 · 419 阅读 · 0 评论 -
C++构造函数的执行顺序及析构函数的执行顺序-多种情况:普通继承、虚拟继承、类构造函数调用其它类的构造函数
派生类的构造函数/析构函数执行顺序创造一个子类对象时(new一个子类对象或在栈中构造),先执行父类的构造函数,再执行自身的构造函数。如果子类继承多个父类,则按照继承的顺序从左到右调用父类构造函数(类继承列表中的越靠前的父类,其构造函数越先执行,第一个父类的构造函数首先执行),析构的顺序与构造的顺序相反。class A : public B ,public C{public: A();原创 2017-10-15 20:52:10 · 2513 阅读 · 0 评论 -
C语言、C++中声明和定义的区别
‘声明’的定义 声明:即向编译器指示某个东西(类型+名称)的存在,但是略去其细节实现(细节、实现,如:int类型变量的值,class的成员信息,函数的函数体,template<>模板的内容等等都是细节实现)。==声明并不让编译器为该对象分配内存并构造。==样例extern int x; //声明;如果不加extern,就变成定义了std::size_t numsDigits(in原创 2017-10-16 18:15:23 · 567 阅读 · 0 评论 -
多重继承的特点、作用/意义和使用条件
多重继承的特点、意义和使用条件 多重继承MI:Multiple Inheritance;单一继承:Single Inheritance;C++阵营中有两派:一种是认为多重继承不好用,一种认为多重继承好用。实际上,多重继承有时候效果比单一继承更好,但是比较复杂;如标准库的iostream实际就是一个多重继承得到的类。多重继承的特点在继承树只有一层的情况下,多重继承几乎等同于按顺序单一继承了若干个原创 2017-10-20 15:00:28 · 3024 阅读 · 0 评论 -
typedef和#define的用法与区别
一、typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: typedef int INT; typedef int ARRAY[10]; typedef (int*) pINT; typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非原创 2017-11-23 18:03:24 · 259 阅读 · 0 评论 -
判断是否包含回文、判断是否是回文、求最长回文、得到最长回文的长度
/* * main.cpp * * Created on: 2016年8月12日 * Author: zhy * * Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. * E原创 2017-10-17 11:24:58 · 356 阅读 · 0 评论 -
LeetCode-5_Longest Palindrome Substring
/* * main.cpp * * Created on: 2017年10月16日 * Author: zhy * * Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. *原创 2017-10-17 11:20:44 · 242 阅读 · 0 评论 -
C++中const的作用/用法
分析const是修饰pointer本身还是修饰pointer指向的data const的位置存在一点随意性,但是分析它是修饰data还是修饰pointer是很简单的: 1. 只要const出现在’‘的左边,那么它就是修饰pointer指向的data为只读;只要const出现在’ ‘的右边,那么它就是修饰pointer本身是只读的; 2. 当const出现在’‘的左边的时候,不论它是原创 2017-10-16 18:25:29 · 597 阅读 · 0 评论 -
使用const,enum,inline template<>替代#define
#define 等预处理器命令并不被视为语言的一部分。#define定义的常亮或许从来都没有进入到编译器,或许编译器没有使用#define的名称而只使用了其值。因此,当该define出现错误时,编译器给出的提示中如果写的是定义的值而不是名称,则难以被追踪(当这个宏不是你定义的时候,看到这个错误中的值甚至不知道这是宏定义还是变量的值还是返回值)。使用’指向常量的常量指针’来替代宏定义的字符串#def原创 2017-10-16 18:23:12 · 328 阅读 · 0 评论 -
C++拷贝构造函数和拷贝/赋值操作符
拷贝构造函数和拷贝赋值操作符拷贝构造函数 使用同类型对象来初始化自我对象(this)格式Foo(const Foo& f);//只带一个参数,参数是同类型的const &何时调用拷贝构造函数当使用拷贝构造时调用:Foo f1(f2);使用等号的时候不一定是调用拷贝/赋值运算符,也有可能调用拷贝构造函数:Foo f1 = f2; //虽然使用了等号,但是由于定义了新的对象,因此原创 2017-10-16 18:20:49 · 1163 阅读 · 0 评论 -
C语言和C++头文件的区别、作用
导入C++头文件和C头文件的区别C++头文件没有.h后缀,从中导入的名称位于作用域std中,当中包含的名称使用std::来访问。 C头文件带有.h后缀,从中导入的名称位于全局作用域global中,当中包含的名称可以直接使用。原创 2017-10-16 18:18:18 · 2161 阅读 · 0 评论 -
简易贪食蛇-C语言实现
有空再添加注释,并且重构优化;时间足够的情况下会使用其他语言,并增加GUI。#include #include #include #include #include #include #define N 21int apple[3];char score[3];char tail[3]; void gotoxy(int x, int y) //输出坐标 {原创 2017-09-06 23:11:38 · 662 阅读 · 0 评论