<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[RwinR的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/RwinR</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; RwinR]]></copyright><item><title><![CDATA[VMware 20.4 桥接网络配置]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/134028874</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/134028874</guid><author>RwinR</author><pubDate>Wed, 25 Oct 2023 10:46:18 +0800</pubDate><description><![CDATA[VMware 20.4 桥接网络配置]]></description><category></category></item><item><title><![CDATA[QT中 unsigned char数组 转换成 QString]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/89639757</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/89639757</guid><author>RwinR</author><pubDate>Sun, 28 Apr 2019 15:59:39 +0800</pubDate><description><![CDATA[QT中把unsigned char数组 转换成 QString类型的一个简单方法如下：



unsigned char str1[5]={0x15,0x22,0xc0,0xf5,0xaa};   

char str2[5] = {0};

sprintf(str2,"%x%x%x%x%x",str1[4],str1[3],str1[2],str1[1],str1[0]);

QString ...]]></description><category></category></item><item><title><![CDATA[Qt5 QpushButton 实现长按功能]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/89556954</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/89556954</guid><author>RwinR</author><pubDate>Fri, 26 Apr 2019 17:08:42 +0800</pubDate><description><![CDATA[Qt5中的QpushButton提供了许多槽函数，其中pressed和released这两个槽函数组合起来可以实现按键测长按下实现某个功能。

实现原理是：定义一个定时器timer，编写一个函数实现你在长按时希望实现的功能，连接timer的超时信号与你写的函数，当按下按键触发pressed，在该槽函数下开启定时器timer-&gt;start，当松开按键触发released，在该槽函数下关闭定时器...]]></description><category></category></item><item><title><![CDATA[基础排序算法之——选择排序，插入排序，快速排序]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/88797800</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/88797800</guid><author>RwinR</author><pubDate>Mon, 25 Mar 2019 16:24:24 +0800</pubDate><description><![CDATA[选择排序：

假设长度为n的数组arr，要按照从小到大排序，那么先从n个数字中找到最小值min1，如果最小值min1的位置不在数组最左端（也就是min1不等于arr[0]），则将最小值min1和arr[0]交换，接着在剩下的n-1个数字中找到最小值min2，如果最小值min2不等于arr[1]，则交换这两个数字，以此类推，直到有序，时间复杂度O(n^2)。

代码如下：


void select...]]></description><category></category></item><item><title><![CDATA[从OpenCV源码到arm动态库的全过程]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/88786854</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/88786854</guid><author>RwinR</author><pubDate>Mon, 25 Mar 2019 13:20:18 +0800</pubDate><description><![CDATA[最近两天成功把OpenCV移植到arm开发板，过程中遇到许多问题，于是写下此篇文章记录一番，方便自己日后复习，或许还可以帮助到其他人。OpenCV移植所需要做的东西还是挺多的，所以文章比较长。

移植过程参考了 KayChanGeek 大神的一些关于OpenCV移植的文章。

移植用到的工具如下：

1、Ubuntu 16.04，64位

2、cmake，用于生成编译OpenCV源码的Makefi...]]></description><category></category></item><item><title><![CDATA[QT 基于QMediaplayer类的视频播放，指定播放位置]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/85253401</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/85253401</guid><author>RwinR</author><pubDate>Tue, 25 Dec 2018 20:01:56 +0800</pubDate><description><![CDATA[  利用QT的Mediaplayer类来做播放器播放视频的时候，可以利用label控件来指定视频播放的位置，以便以我们可以在其他位置设计其他空间，而不受视频播放的影响。代码如下：
void video::video(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::video)
{
    ui-&amp;amp;gt;setupUi(this);
  ...]]></description><category></category></item><item><title><![CDATA[QT QMediaplayer 的duration（）函数获取不到正确时间的问题]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/85248212</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/85248212</guid><author>RwinR</author><pubDate>Tue, 25 Dec 2018 15:06:33 +0800</pubDate><description><![CDATA[QT关于QMediaplayer 的duration()获取的音视频时间长度为0的问题。
  在QT中，使用QMediaplayer类可以很方便地实现视频的播放，而在QMediaplayer类中有个duration函数可以直接获取所打开视频的总时间长度。但使用后你会发现duration（）返回的居然是个0。
  认真看过帮助文档你就会发现其实帮助文档已经说明了这个问题的解决方法：
The valu...]]></description><category></category></item><item><title><![CDATA[C++利用命名空间实现变量的间接访问]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/84894702</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/84894702</guid><author>RwinR</author><pubDate>Sat, 08 Dec 2018 17:16:47 +0800</pubDate><description><![CDATA[C++利用自定义命名空间实现变量的间接访问 
要求：变量 val 放在独立的 .cpp 文件的自定义命名空间中，在main函数中访问变量val
实现代码如下：
myname.h
#ifndef __MODULE_H
#define __MODULE_H

//自定义的命名空间
namespace val
{
   //声明函数
   int getval();
   void setval(int...]]></description><category></category></item><item><title><![CDATA[C语言通过 sqlite3 的API进行开发]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/84797988</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/84797988</guid><author>RwinR</author><pubDate>Tue, 04 Dec 2018 20:33:46 +0800</pubDate><description><![CDATA[sqlite3除了可以通过命令行进行操作之外，还可以用接口函数进行开发，流程如下：

（1）新建、打开数据库文件，

int sqlite3_open(const char *filename,sqlite3 **ppDb);

返回值：成功返回SQLITE_OK,失败返回其他宏，具体可以查询sqlite3文件夹的头文件



参数：filename——路径名

          ppDB——数...]]></description><category></category></item><item><title><![CDATA[嵌入式数据库 sqlite3 移植及入门知识]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/84797050</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/84797050</guid><author>RwinR</author><pubDate>Tue, 04 Dec 2018 20:05:34 +0800</pubDate><description><![CDATA[sqlite3是嵌入式设备使用的开源数据库，具有占内存小、使用方便等优点。

sqlite3库可在其官网上直接下载，



sqlite3移植：

要使用sqlite3，首先得把源码库移植到你自己的设备上，其移植过程比较简单，步骤如下：

1、解压源码库压缩包：参考命令: tar -jzf sqlite-autoconf-3260000.tar.gz

2、进入解压出来的文件夹后，输入 ./con...]]></description><category></category></item><item><title><![CDATA[Linux C下 fcntl() 函数与 flock 结构体 实现文件的加解锁]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/84425835</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/84425835</guid><author>RwinR</author><pubDate>Sat, 24 Nov 2018 11:13:16 +0800</pubDate><description><![CDATA[fcntl是计算机中的一种函数，通过fcntl可以改变已打开的文件性质，实现对指定文件描述符的各种操作。

头文件：#include&amp;lt; fcntl.h&amp;gt;

fcntl其函数原型如下：

int fcntl(int fd, int cmd, ... /* arg */ );

其中，操作类型由cmd决定。cmd可取如下值：

F_DUPFD：复制文件描述符
	F_DUPFD_CLOEXE...]]></description><category></category></item><item><title><![CDATA[C语言库相关知识及简单库的制作]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/84328951</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/84328951</guid><author>RwinR</author><pubDate>Wed, 21 Nov 2018 20:27:34 +0800</pubDate><description><![CDATA[库即二进制形式的目标模块，使用库可以很方便对程序进行模块化设计，

方便对某些固定功能的重复使用，方便对某些功能进行更新。

库与.c文件关系如下图：



库分为两种类型，即静态库和动态库；

静态库扩展名.a ，库中封装的二进制代码，在链接阶段被复制到调用模块中，

调用模块运行时不再需要静态库的支持；

动态库扩展名.so ，库中封装的二进制代码，在链接阶段不会复制到调用模块，

被嵌入到调...]]></description><category></category></item><item><title><![CDATA[Hive与HBase]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/83446387</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/83446387</guid><author>RwinR</author><pubDate>Sat, 27 Oct 2018 15:44:39 +0800</pubDate><description><![CDATA[什么是Hive：

Hive实际上是一款开源的数据仓库，它是建立在Hadoop基础设施之上的，底层文件系统是HDFS。

什么是HBase：

HBase是一种键值系统的数据库，nosql数据库之一，基于列式存储。它也是基于HDFS。

两者区别：

通过定义就可以清楚知道，Hive是数据仓库，HBase是数据库，两者是有着很大区别的，如：

Hive适合海量数据的挖掘和分析，不支持更新、索引等事...]]></description><category></category></item><item><title><![CDATA[esp8266+单片机之最最简单（AT指令）应用（二）]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/83243690</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/83243690</guid><author>RwinR</author><pubDate>Sun, 21 Oct 2018 18:32:04 +0800</pubDate><description><![CDATA[单片机+esp8266 wifi模块的AP模式

模块作为服务器与远程客户机进行通信

烧写代码前需要先获取到wifi模块的IP地址以及设置模块的wifi名字和密码，以便客户端进行连接


#include&amp;lt;reg52.h&amp;gt;
#include&amp;lt;stdio.h&amp;gt;
#include&amp;lt;string.h&amp;gt;

#define uchar unsigned char 
#d...]]></description><category></category></item><item><title><![CDATA[esp8266+单片机之最最简单（AT指令）应用（一）]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/83242137</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/83242137</guid><author>RwinR</author><pubDate>Sun, 21 Oct 2018 16:29:36 +0800</pubDate><description><![CDATA[51单片机+esp8266 wifi模块的STA模式

模块作为客户端发送数据给远程主机

烧代码前需要先配置一下WiFi模块，AT+CWJAP，让其先加入一个有效网络


#include&amp;lt;reg52.h&amp;gt;
#include&amp;lt;stdio.h&amp;gt;

#define uchar unsigned char 
#define uint unsigned int

void del...]]></description><category></category></item><item><title><![CDATA[ESP8266 AT指令入门调试及应用]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/83212544</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/83212544</guid><author>RwinR</author><pubDate>Sat, 20 Oct 2018 16:48:20 +0800</pubDate><description><![CDATA[ESP8266是一款低功耗，便于开发的WIFI模块，据说其内嵌了32位处理器，并且有自己的操作系统和wi-fi协议栈。

ESP8266具有两种开发方式，即基于协议栈给出的API接口进行开发和基于AT指令进行简单开发。

对于新手而言，AT指令开发无疑是最佳选项。

这里主要讲解我使用8266时用到AT指令，详细的指令解释可以在网上或者在我博客的资源中下载。开发中用到的工具也可在我的资源中下载

...]]></description><category></category></item><item><title><![CDATA[数据库与数据仓库]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/82904694</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/82904694</guid><author>RwinR</author><pubDate>Sun, 30 Sep 2018 08:37:52 +0800</pubDate><description><![CDATA[数据库(Database)是按照数据结构来组织、存储和管理数据的仓库，随着信息技术和市场的发展，数据管理不再仅仅是存储和管理数据，而转变成用户所需要的各种数据管理的方式。数据库有很多种类型，从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

由于数据库实现了数据共享，从而避免了用户各自建立应用文件。减少了大量重复数据，减少了数据冗余，维护了数据的一...]]></description><category></category></item><item><title><![CDATA[关于C语言fgets函数的问题]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/82851561</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/82851561</guid><author>RwinR</author><pubDate>Wed, 26 Sep 2018 12:25:34 +0800</pubDate><description><![CDATA[C语言中从键盘输入的函数有好几个，fgets就是其中之一。

今天我用fgets函数写代码时也遇到一个问题：在第一次调用fgets函数后程序不会阻塞，而是输出一个回车键，待第二次遇到fgets函数时，程序才阻塞。

经过好长时间的排查，才发现问题所在——在第一次调用fgets函数时，输入缓冲区有内容，导致fgets直接从输入缓冲区取出了数据进行输出，就会有上述问题出现。

问题找到了，解决起来就简...]]></description><category></category></item><item><title><![CDATA[蓝桥杯第三届省赛代码]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/82805994</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/82805994</guid><author>RwinR</author><pubDate>Fri, 21 Sep 2018 19:22:05 +0800</pubDate><description><![CDATA[代码是我当初练习时写的，可供参考，其余各届代码可在我的博客中下载


//主函数代码
#include &quot;iic.h&quot;
#include &quot;keyscan.h&quot;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
uchar code table1[]={0x40,0x79,0x24,...]]></description><category></category></item><item><title><![CDATA[双向循环链表的排序]]></title><link>https://blog.youkuaiyun.com/RwinR/article/details/82805705</link><guid>https://blog.youkuaiyun.com/RwinR/article/details/82805705</guid><author>RwinR</author><pubDate>Fri, 21 Sep 2018 18:39:07 +0800</pubDate><description><![CDATA[
//排序
void sort(dlist_t head)
{
    dlist_t tmp = head-&amp;gt;next,p = NULL,q = NULL;

    //将链表置空
    head-&amp;gt;next = head;
    head-&amp;gt;prev = head;

    while(tmp!=head){
        //保存原链表中tmp的下一个节点
   ...]]></description><category></category></item></channel></rss>