<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[QX_a11的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/QX_a11</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; QX_a11]]></copyright><item><title><![CDATA[extra text after expected end of preprocessing directive]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/120187103</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/120187103</guid><author>QX_a11</author><pubDate>Wed, 08 Sep 2021 19:39:43 +0800</pubDate><description><![CDATA[原代码：

#ifdef defined(ENABLE)

**********

#elifdefined(ENABLE)

**********

#endif

会有警告Warning: #14-D: extra text after expected end of preprocessing directive发生，意思是预期预处理指令是在#ifdef后就要结束的，属于预处理用法产生的问题



改为：

#ifdefined(ENABLE)

**********

#elifdef...]]></description><category></category></item><item><title><![CDATA[高并发中的线程与线程池]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/119949277</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/119949277</guid><author>QX_a11</author><pubDate>Fri, 27 Aug 2021 11:33:45 +0800</pubDate><description><![CDATA[从CPU说起

你可能会有疑问，讲多线程为什么要从CPU说起呢？原因很简单，在这里没有那些时髦的概念，你可以更加清晰的看清问题的本质。



CPU并不知道线程、进程之类的概念。

CPU只知道两件事:



1. 从内存中取出指令

2. 执行指令，然后回到1







你看，在这里CPU确实是不知道什么进程、线程之类的概念。



接下来的问题就是CPU从哪里取出指令呢？答案是来自一个被称为Program Counter(简称PC)的寄存器，也就是我们熟知的程序计数器，在这里大家不要把寄存器想的太神]]></description><category></category></item><item><title><![CDATA[三轴加速度计值检测碰撞和摔倒]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/119652324</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/119652324</guid><author>QX_a11</author><pubDate>Thu, 19 Aug 2021 19:47:16 +0800</pubDate><description><![CDATA[void collision_detect()
{
    sensor_event_report report = {0};
    uint8_t flag = acc_cache_check.state;
    long  result = 0;
    uint8_t ret = 0;
    uint8_t temp = 0;
    uint8_t p = 0;
    uint16_t acc_x = 0;
    uint16_t acc_y = 0;
    uint16_t acc_.]]></description><category></category></item><item><title><![CDATA[sif一线通输出协议以及代码实现]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/119649945</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/119649945</guid><author>QX_a11</author><pubDate>Thu, 12 Aug 2021 17:53:12 +0800</pubDate><description><![CDATA[SIF协议

一次传输一帧数据，传输结束后要求线路空闲状态为低电平，每次传输需一次性完整传输所有数据。
	数据的电平遵守TTL 规范。


1.1 信号定义

Tosc定义: 250us &lt;Tosc&lt;2ms，推荐值：500us



1、同步信号：









2、Bit(0)表示方法:









3、Bit(1)表示方法:





1.2代码实现



    需要定义一个中断定时器，定时器周期为一个Tosc，中断处理函数判断是否有数据需要发送。下面是发送数...]]></description><category></category></item><item><title><![CDATA[QT5的程序打包（将QT5的工程项目打包成一个exe程序）]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/114279235</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/114279235</guid><author>QX_a11</author><pubDate>Thu, 12 Aug 2021 17:28:22 +0800</pubDate><description><![CDATA[将工程打包成一个可执行文件，使用的时候就不需要在工程目录下打开，只需给需要此工具的同事仅发送个打包后的.exe文件即可

需要安装的打包软件：https://enigmaprotector.com/en/downloads.html





1.首先使用release方式运行





2.在相应的工程目录下就会多一个如下的文件夹





3.
...]]></description><category></category></item><item><title><![CDATA[remote: ERROR:  does not match your user account.]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/112590064</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/112590064</guid><author>QX_a11</author><pubDate>Wed, 13 Jan 2021 21:03:24 +0800</pubDate><description><![CDATA[用同事用过的电脑，想使用自己的账号push代码，但是出现以下问题,这是因为邮箱不一致导致的问题





解决方案：

1.先修改用户名和邮箱

git config --global user.name "your name"

git config --global user.mail "your mail"

2.修改remote的url。通过vim .git/config进行修改


...]]></description><category></category></item><item><title><![CDATA[armcc出现Cannot obtain license for Compiler (feature compiler) with license vension ＞= 3.1:Feature has]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/112540923</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/112540923</guid><author>QX_a11</author><pubDate>Tue, 12 Jan 2021 19:27:48 +0800</pubDate><description><![CDATA[执行armcc出现下面的问题：





解决办法：将C:\Program Files\ARM rvds.dat中的时间修改一下。将所有的2020替换为2021即可


]]></description><category></category></item><item><title><![CDATA[Qt实现动态波形图]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/112306167</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/112306167</guid><author>QX_a11</author><pubDate>Thu, 07 Jan 2021 11:45:04 +0800</pubDate><description><![CDATA[功能：每一秒动态添加一个数据，可通过按钮进行控制，开始与暂停；添加spinbox控件对x轴的刻度进行控制；滚动鼠标滑轮可分别放大缩小x轴，y轴



构造函数：


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui-&gt;setupUi(this);
    calibtation = CALIBTATION_CONFIG;
    key ...]]></description><category></category></item><item><title><![CDATA[python查看pip支持的版本]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/112247767</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/112247767</guid><author>QX_a11</author><pubDate>Tue, 05 Jan 2021 17:33:25 +0800</pubDate><description><![CDATA[1.如果出现错误信息使用pip3 。


pipdebug --verbose



]]></description><category></category></item><item><title><![CDATA[Qt使用customPlot绘制曲线图]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/112233423</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/112233423</guid><author>QX_a11</author><pubDate>Tue, 05 Jan 2021 15:33:56 +0800</pubDate><description><![CDATA[1.在官网下载customPlot所需的源码以及例子

https://www.qcustomplot.com/index.php/download



2.在原有的项目中添加customplot所需的源码：将.cpp和.h文件拷贝在工程目录下，在工程中添加文件





3.qcustomplot中包含打印的功能，在pro工程文件中添加printsupport。确认qcustomplot已添加进工程(旧版本可能需要手动添加)


greaterThan(QT_MAJOR_VERSION, 4): Q..]]></description><category></category></item><item><title><![CDATA[使用Qt读取xls文件]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/112195307</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/112195307</guid><author>QX_a11</author><pubDate>Mon, 04 Jan 2021 19:12:59 +0800</pubDate><description><![CDATA[1.在工程文件中添加 qaxcontainer


CONFIG += c++11 qaxcontainer

2.使用的头文件


#include &lt;QMessageBox&gt;

3.代码实现


MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
        ui-&gt;setupUi(this);

        QAxObject* exc]]></description><category></category></item><item><title><![CDATA[Qt入门学习--对象树，信号与槽]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/112129856</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/112129856</guid><author>QX_a11</author><pubDate>Sun, 03 Jan 2021 20:40:05 +0800</pubDate><description><![CDATA[1.对象树

  1.1 当创建的对象在堆区时，如果指定的父亲是QObject派生下来的类或者Oobject子类派生下来的类，可以不用管理释放的操作，对象会被放入对象树中，只要父类析构，子类亦会析构。一定程度上简化了内存回收机制

 
...]]></description><category></category></item><item><title><![CDATA[Qt入门级学习--创建一个qt工程，使用按钮控件(QPushButton))]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/112105729</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/112105729</guid><author>QX_a11</author><pubDate>Sat, 02 Jan 2021 23:02:33 +0800</pubDate><description><![CDATA[1.创建一个工程

   1.1选择项目路径以及项目名称









    1.2 构建套件。根据需要对于不同版本的选择。



     1.3 默认创建有窗口类，myWidget，基类有三种选择：Qwidge(一个空白界面，父类)、QMainWindow(带有菜单栏，状态的界面，子类)、QDialog（带有对话框界面）。此处选择QWidget基类



   1.4 创建好的工程包含.pro的工程文件，mywidget.h，main.cpp，mywidge...]]></description><category></category></item><item><title><![CDATA[解决missing Change-Id in commit message footer问题]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/105241976</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/105241976</guid><author>QX_a11</author><pubDate>Wed, 01 Apr 2020 11:36:57 +0800</pubDate><description><![CDATA[每一个提交都要有一个Change-Id，出现missing Change-Id in commit message footer错误的原因就是change id丢失，解决办法其实强大的git已经告诉你怎么办了：

1.在报错的下面几行，就会有这样的命令：直接copy即可

2.跟着git提示走就好.....


...]]></description><category></category></item><item><title><![CDATA[git pull更新不到最新代码]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/104986159</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/104986159</guid><author>QX_a11</author><pubDate>Fri, 20 Mar 2020 11:29:17 +0800</pubDate><description><![CDATA[（一个实习小白。。。。。。。）

今天，又发现了一个错误，以前为了方便操作个分支，直接拷贝了仓库（这样完全为了节省时间，拉代码要好久），这样就一个仓库一个分支，比较方便，今天就遇到了一个问题，我想拉远程的最新代码，本地显示已经是最新的代码，使用git log查看，显示最新提交是一个月前，这不合乎情理呀，毕竟每天都有在更新代码。使用git branch -a查看远程分支，只有四个（要知道我们的库的...]]></description><category></category></item><item><title><![CDATA[git commit --amend的用法]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/103975773</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/103975773</guid><author>QX_a11</author><pubDate>Tue, 14 Jan 2020 17:10:33 +0800</pubDate><description><![CDATA[1、用于修改上次提交。应用场景：在公司，写了一个功能提交到老大，老大看了代码后，眉头一皱balabalba说一堆需要改的地方，你回来改正后，要是直接使用，git add 、git commit -m"xxxxxx"、git push那就等着被吐槽吧，这样提交会让老大那里有两条内容，这时候老大就需要合并才可以。所以为了老大更好的管理提交，你就需要,git add 、git commit --amen...]]></description><category></category></item><item><title><![CDATA[【数据结构与算法】Hash表（散列表）、哈希函数、解决哈希冲突]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/90181620</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/90181620</guid><author>QX_a11</author><pubDate>Tue, 14 May 2019 11:01:52 +0800</pubDate><description><![CDATA[哈希表

根据之前学的内容，查找一个关键字需要对待查序列的值一一进行比较；那在查找时能不能使用一种方式减少值的比较？

所以就有了哈希表的概念，根据设定的哈希函数及处理冲突的方法将查找表中各数据元素存储在一段有限的连续空间中，即得哈希表，通过将待查记录的关键字值和它存储位置之间建立一个确定的对应关系，则查找时不再进行关键字值间的比较，从而提高查找时的效率。

哈希函数：也叫做散列函数，根据关键字值...]]></description><category></category></item><item><title><![CDATA[【C++】设计模式——观察者模式]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/90116502</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/90116502</guid><author>QX_a11</author><pubDate>Sun, 12 May 2019 00:11:09 +0800</pubDate><description><![CDATA[观察者模式

观察者模式分为两个角色：观察者和监听者；观察者的作用是观察事件，并且将发生的事件通知给对本事件感兴趣的监听者。监听者的作用是处理发生的事件。其中关键的一步是将监听者和感兴趣的事件保存起来，反过来，一个事件也会由多个监听者处理；对于特定的事件而言，这是一个一对多的关系。



基本思路

Listener:监听者，执行相应的事件。
observable：观察者分为两个模块（1）先利用...]]></description><category></category></item><item><title><![CDATA[强符号、弱符号、强引用、弱引用]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/90105696</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/90105696</guid><author>QX_a11</author><pubDate>Sat, 11 May 2019 10:05:04 +0800</pubDate><description><![CDATA[强符号与弱符号

当多个目标文件中含有相同名字全局符号的定义，那么这些目标文件链接的时候会出现符号重复定义的错误。对于C/C++语言来说，编译器默认函数和初始化了的全局变量为强符号，未初始化的全局变量为弱符号。我们也可以通过GCC的"__attribute__((weak))"来定义任何一个强符号为弱符号。需要注意的是强符号和弱符号都是针对定义来说的，而不是引用。如下面的这段程序：


exter...]]></description><category></category></item><item><title><![CDATA[【linux】目标文件、可执行文件（ELF）格式解析]]></title><link>https://blog.youkuaiyun.com/QX_a11/article/details/89925782</link><guid>https://blog.youkuaiyun.com/QX_a11/article/details/89925782</guid><author>QX_a11</author><pubDate>Fri, 10 May 2019 19:09:39 +0800</pubDate><description><![CDATA[ELF文件、目标文件、可执行文件的关系

目标文件是源代码经过编译但未进行链接的那些中间文件，在linux中的.o文件，它跟可执行文件的内容与结构很相似，所以一般与可执行格式采用一种方式存储，在linux下，我们可以将他们统称ELF文件。ELF文件标准里面把系统中采用ELF格式的文件归为四类：

ELF文件类型
			说明
			实例
		
			可重定位文件(Relocatable File）
...]]></description><category></category></item></channel></rss>