自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 资源 (6)
  • 问答 (2)
  • 收藏
  • 关注

原创 Linux下hook机制的注意事项

/* * * 测试linux hook;,编译成.so 文件后改变默认的系统调用 * * 关于 * */#define _GNU_SOURCE#include <stdio.h>#include <stdint.h>#include <dlfcn.h>#include <string.h>#include <unistd.h>#define unlikely(x) __builtin_expect(!!(x), 0)#

2021-09-14 10:29:54 606

原创 Ubuntu第一次启动redis服务器报错

第一次使用redis-server启动redis服务器时会报一个错59643:C 23 Aug 2021 00:34:07.355 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo59643:C 23 Aug 2021 00:34:07.355 # Redis version=5.0.7, bits=64, commit=00000000, modified=0, pid=59643, just started59643:C 23 Aug 2021 00

2021-08-24 21:08:01 547

原创 Ubuntu重启后不显示共享文件夹

重启Ubuntu20.04后,发现共享文件夹进不去也不显示了首先查看共享文件夹是否已经存在并且设置为总是开启使用命令查看当前挂载的共享文件夹vmware-hgfsclient存在的情况下,然后使用下面命令sudo apt-get install open-vm-tools-dkms sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=022或者:(操作了上面命令可忽略下面

2021-08-10 11:41:12 5424 6

原创 关于Ubuntu提示Temporary failure in name resolution

网络出错时可使用ping命令进行查询网络是否正常ping www.baidu.com若是在ping www.baidu.com后提示Temporary failure in name resolution解决方法1:重启网络服务service network-manager restart解决方法2:定义域名解析服务器ipsudo vi /etc/resolv.conf 在里面添加下面两行nameserver 1.1.1.1nameserver 8.8.8.8解决方法3:安

2021-08-09 20:09:12 14351 12

原创 VMware安装Arch Linux教程(2021.7)

安装环境:VMware WorkStation Pro版本:5.12.13首先下载Arch镜像:https://archlinux.org/download/进去后拉到下面可以选择不同国家的下载链接值得注意的是这里有一个版本号下面新建虚拟机时会用到进去后下载iso后缀的镜像文件一、创建虚拟机使用VMware创建新的虚拟机导入刚刚下载好的镜像文件,注意由于VMware里面没有Arch Linux的选项,这里的版本号根据上面下载时的版本来选择,操作系统就选择Linux然后是自己给虚拟机起

2021-07-28 08:58:20 15413 7

原创 Lua实现简单的伪随机红包算法

今天刚好用Lua实现了一个伪随机红包,可能可能随机的值并没有太好,如果有更好的想法可以评论说出来大家讨论一下;这个随机红包的的要求是给一个指定的数额,和一个最大领取金额和最小领取金额,然后指定给多少个人随机领取;思路:(1)第一步:每次的随机数范围通过总金额 - (已被领取金额+剩下所有人的最低金额)进行计算后,放大倍数来拿到一个范围更大的随机数再除掉放大倍数(2)第二步:进行计算每个人能领取到的随机金额,然后若是没有分配到的将给一个最低值(3)第三步:若是剩下的金额还比领取的人数还多则先平均后,

2021-07-19 22:03:39 364

原创 Lua中的//含义(地板除 floor division)

关于Lua中的地板除是在项目中看到,由于比较少见,于是进行记录一下;Lua中使用//表示为地板除;它的效果其实和数学库中的math.floor()向下取整的效果是一样的,意思为:对一个数进行除法运算后向下取整print(9//2) --> 4print(math.floor(9/2)) --> 4并且两个语句执行的速度好像差不多,不过Lua的地板除在一些教程中都不怎么常见,于是去官网中看了一下;关于//地板除lua官网中是这样介绍的:Floor division () is a

2021-07-14 22:07:53 2271 1

原创 lua提示bad argument #1 to ‘for iterator‘ (table expected, got nil)

这个报错是因为在使用for迭代器时,传递给迭代器的参数不正确导致的例如下面的程序中就会报这个错local Set = {}function Set:tostring(set) local l = {} for e,k in pairs(set) do l[#l + 1] = e end return "{"..table.concat(l,",").."}"endfunction Set:print( s ) print(Set:tostring(s))endSet:prin

2021-06-19 10:47:52 10653

原创 Lua具有复杂状态的迭代器(多状态迭代器)

具有复杂状态的迭代器: 通常,迭代器需要许多状态,但是在泛型for中只提供三种值的保存,其中是两个是用于状态的保存:①恒定状态,②控制变量;所以当我们想要使用迭代器保存更多状态时我们可以使用closure或者使用一个table来进行打包;这样一个迭代器就可以通过这个table保存任意多的数据了,并且它还可以在循环过程中改变这些数据;下面是一个实现读取文件中每一行单词的具有复杂状态的迭代器--打开文件往里面写入数据file = io.open("./text.txt","w+")file:write

2021-05-24 21:01:04 343

原创 Lua的无状态迭代器

无状态迭代器:即在使用迭代器时其本身不会保存任何状态的值或者变量;但是其实在每次迭代中,for循环也依旧会保存着三个变量:迭代器函数、恒定状态和控制变量;但是就不会像上面的closure闭包函数一样会拥有着一个“非局部变量(upvalue)”,这个"非局部变量"就是迭代器的一个状态值;因此无状态迭代器其实就可以节省了创建closure的开销了(实际就是创建upvalue的开销);最典型的无状态迭代器例子就是ipairs函数,ipairs函数可用于迭代一个数组的所有元素-- 无状态迭代器函数functi

2021-05-24 20:51:20 330

原创 Lua中的table.与table[]的使用

在Lua中有两种方式可以索引到table中的值,分别是.和[];这两种方法都可以直接索引到表里面的值,但是还是有一些区别的,往下看进行分析若当前有一个表tb,表的格式如下tb = {["x"]=1,["y"]=2}一、使用table.进行索引,这种是表示使用字符串x作为索引tb表里面的值;这是一般情况下的索引方式print(tb.x,tb.y)--此时 tb.x == tb["x"]-- tb.y == tb["y"]二、使用table[]进行索引,这种是表示使用一个参数进行索引

2021-05-20 11:44:27 2366 1

原创 一篇文章理解Lua面向对象

Lua的类个人觉得Lua并不能算是一门面向对象的语言;因为Lua它是定位于开发中小型程序,往往不会用于编写大型程序;下面这是一个Lua中的一个简单的类的实现local a = {name="lisi"}function a:new( o ) o = o or {} setmetatable(o,self) self.__index = self return oendfunction a:MyPrint( ) print(self.name)endlocal tb =

2021-05-12 11:47:30 1444

原创 Linux 下ifconfig只有回环地址

在我第一次设置了网络ip后,后面再打开这个虚拟机时发现网络不可用;即使使用ifconfig或者ifconfig -a都无效;最终在我多次重启以及试了各种办法的情况下问题终于得到解决,这里把我的解决过程写一下希望能帮到一些相同情况的童鞋;注意我这里使用的是CentOs,其他的Linux操作系统可能不一定可以一、首先保证ip设置是正确的因为我这里的是ens33网卡,所以相对应的下面路径下就有一个网络文件为ifcfg-ens33vi /etc/sysconig/network-scripts/ifcfg-e

2021-05-11 15:23:43 1545 1

原创 sublime text3 提示[WinError 2] 系统找不到指定的文件

目录一、编译文件不正确二、系统文件变量没设置好1、打开我的电脑,然后右键打开选项;点击进入属性2、进入环境变量3、进入系统环境变量的Path环境变量进行编辑4、往Path环境变量添加对应的路径5、退出确认6、重启sublime text软件在使用sublime text3搭建Lua环境时遇到了这个问题,发现了下面这个错误信息说找不到指定的文件,然后发现是环境变量所导致找不到指定的编译文件去编译运行主要的原因有两个:一、编译文件不正确例如我这里下载的是lua 5.4版本的编译器,由于下载后的编译文件

2021-05-04 01:12:12 14758 3

原创 lua的select函数理解

目录一、用计算传递进来的参数个数二、输出第n个索引后的所有参数关于lua的select函数,是可以用于计算参数个数的或者获取指定索引之后的参数;当select函数用于计算传递进来的参数个数时需要在第一个参数位置使用#符号;否则就需要使用数字n来进行获取某个指定索引后的参数;我看这部分教程时发现很多都是把select(n,...)这个函数说是返回指定索引的参数,但是实际操作中返回的是第n个索引后的所有参数;下面是两种用法的操作分析一、用计算传递进来的参数个数在普通函数上使用的select这是计算传递进

2021-04-30 14:37:30 3037 2

原创 Qjson的几种常见解析格式

111

2021-04-18 17:43:21 2392

原创 Ubuntu20.04大小写混乱以及无法切换大小写

使用Ubuntu20.04时,如果出现下面大小写混乱以及无法切换大小写的问题,可通过长按CAPS键三秒进行切换回小写输入

2021-04-18 10:24:26 2922

原创 CSDN官方新版chrome插件攻略来了!!!

文章目录一、安装chrome插件步骤二、使用感受三、总结一、安装chrome插件步骤我这里是使用Windows自带的IE浏览器来进行演示的点击右边链接进行下载插件包CSDN插件安装地址下载好后将会在你的下载目录里面出现一个如图所示后缀为 .rcx的插件包下载好以后,我们开始准备添加到我们浏览器的扩展中去二、使用感受这款插件给我感觉算是比较好用的其中一个了,界面很简化但又很实用;可以根据自己爱好来更换不同的壁纸设置等;我们可以把一些常用的网站添加到导航栏,而且可以自定

2020-12-31 17:29:25 957 1

原创 2020年度总结:一个三无大学生在疫情下的转变

        无意间看到CSDN发的年度征文通知,才发现小时候无比恫憬的2020年即将就要离我们而去了;即将过去的一年里,我们大家遭受了新冠病毒的侵扰所带来的恐慌,也目睹了我们的医护人员为了救治患者,从四面八方地奔向抗疫一线;反思:        这一年可谓困难重重,有的因为疫情家人不能团聚,有的因为疫情情侣不得相见拥抱(虽然我没有~); 但

2020-12-26 15:42:57 557 2

原创 如何查看AT24C02设备地址

关于如何查看at24c02的设备地址,我们可以通过官方给的下面这个图进行解读,在at24c02中它的设备地址共由8bit组成,设备地址的高4位都是由4位最重要位的强制“1”、“0”序列组成,如图所示。 但是at24c01/2的低4位是由3位的设备地址位及一位的读写位组成,这3位的设备地址位会与其外接的设备引脚电平进行比较,然后判断该设备地址位为0还是1由于我当前使用的开发板上面at24c02的接线图如下图所示,设备地址线都是接地的,因此此时A0,A1,A2均为低电平即’0’,此时七位的设备地址位为101

2020-12-05 10:08:38 5358 3

原创 STM32之EXTI外部中断(详解)

创建工程,需要勾选以下模块1、开启时钟使用外部中断需要开启RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);时钟2、配置GPIO引脚使用中断,需要调用GPIO_Init()函数先初始指定的GPIO引脚为输入模式,这里设置的中断源为GPIO组的PA0引脚作为中断引脚void _IOInit(void){ EXTI_InitTypeDef extiStruct; //初始化中断所使用结构体 GPIO_InitTypeDef GPIOa;

2020-11-26 20:52:11 11525 1

原创 QT实现与Linux之间的http网络通信

使用的几个类1、QNetworkRequest:通过传递一个Url网络地址进行网络请求,也保存网络请求的信息Qt网络模块提供了一些类实现OSI 7层网络模型中高层的网络协议,如HTTP、FTP、SNMP等,这些类主要是QNetworkRequest、QNetworkReply、NetworkAccessManagerQNetworkRequest:通过一个URL地址发起网络协议请求,也保存网络请求的信息,目前支持HTTP、FTP和局部文件URLs的下载或上传NetworkAccessMana

2020-11-23 20:57:35 1672

原创 STM32中 USE_STDPERIPH_DRIVER 问题

一、问题分析第一次使用keil5创建STM32工程的时可能会报的一个错,这是因为我们启动/编译一个工程文件时需要包含#include "stm32f4xx_conf.h"这个头文件的;但是由于在#include "stm32f4xx.h"头文件中有如下图所示声明声明了需要先定义USE_STDPERIPH_DRIVER这个宏才会自动包含#include "stm32f4xx_conf.h"这个头文件的,因此我们需要去定义一下这个宏因此会报下面这个错warning: #223-D: functi

2020-11-23 19:53:11 1082 2

原创 已解决:configure: error: write failure creating ./config.status

目录一、概述二、原因三、解决方案一、概述在我第二次移植ALSA库(其他库也可以参考一下)时出现了该错误,提示我配置失败,配置命令为:./configure --host=arm-linux \CC=arm-linux-gcc \--prefix=/opt/arm_alsa在我没有加CC=arm-linux-gcc的情况下是不会报错,但是最终生成的文件我使用file命令查看后发现生成的依旧是x86系统下的文件因为第一次移植时是没有问题的这是我第一次移植时的写的博客:ALSA移植到arm开发

2020-11-13 19:07:43 2058

原创 QT学习之音频操作(入门)

1、创建一个qt工程我这里创建的是继承于MainWindow窗口类的工程,然后在工程文件中添加multimedia模块,这是qt中对音频操作所需的音频模块2、添加所需头文件添加好工程所需模块后,就可以添加对应头文件录音#include <QAudioInput> 播放#include <QAudioOutput> 音频格式#include <QAudioFormat>3、初始化主要是初始化用于初始化音频操作对象对音频操作时的数据,主要使用

2020-11-12 19:31:43 6185 3

原创 QT/ALSA音频编程基本概念

1.样本长度(sample):样本是记录音频数据最基本的单位,常见的有 8 位和 16 位。2.通道数(channel):该参数为 1 表示单声道,2 则是立体声。3.桢(frame):桢记录了一个声音单元,其长度为样本长度与通道数的乘积。4.采样率(rate):每秒钟采样次数,该次数是针对桢而言。44100HZ5.周期(period):音频设备一次处理所需要的桢数,对于音频设备的数据访问以及音频数据的存储,都是以此为单位。6.交错模式(interleaved):

2020-11-12 18:37:08 1251 1

原创 如何在Ubuntu上搭建apache服务器

1.安装apache2服务器(如果以及安装可以这一步可以忽略)sudo apt install apache2;2、查看是否安装成功在浏览器输入Ubuntu的IP地址,出现以下情况视为成功3.配置apache支持cgi程序进入/etc/apache2/mods-enabled目录下执行把cgi配置文件拷贝到当前目录下(也可以创建软连接)如下(二选一)一、复制配置文件gec@ubuntu:/etc/apache2/mods-enabled$ sudo cp ../mods-availabl

2020-11-08 22:02:14 4245

原创 SQLite3中常用SQL语句

1、创建或打开一个.db数据库文件.open xxx.db若该文件不存在则自动创建2、在数据库中创建一个表格create table 表名(字段名1 类型,字段名2 类型,。。。);其中表名为该表格创建后的名称,字段为该列的列名(注意:很多命令后面需要加分号的)其中.table为查询当前数据库中的所有表格3、插入数据insert into 表名 values(值1,值2);注意:若插入的数据为varchar或者char、text等字符类型时需要加上单引号或者双引号代表其实一

2020-11-08 21:36:58 858

原创 保存post请求数据长度的环境变量与get请求数据的环境变量

cgi程序中get请求保存数据的环境变量:QUERY_STRING,可通过该环境变量直接获得发送的数据cgi程序中是不能直接拿到数据的,需要先通过CONTENT_LENGTH这个环境变量拿到数据的长度,然后再通过系统的标准输入拿到数据...

2020-11-05 15:55:15 171

原创 QT学习之MD5数据加密

主要一些注释已经写在了代码中,注意:若是使用系统默认的空间保存ini文件,ini文件将会被放到c盘的C:\ProgramData下其中QCryptographicHash支持MD4、MD5、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512等加密/*日常测试: * * 使用MD5实现加密数据写入注册表,并且实现第二次登陆从注册表读取账号密码 * * 注意:在注册时必须勾选记住密码才能进行注册*/#include "mainwindow.h"#include "ui_

2020-11-04 14:37:46 1128

原创 SQLite3之事务机制详解

文章目录概述1、启动事务2、提交事务3、回滚概述SQLite事务事件:(1)提高对数据操作的速率,因为这可以减少频繁对数据库的打开与关闭(相当于提供了一个缓冲区)(2)启动事务后都是在内存中操作的,并不会影响到库中的数据,(3)只有提交后才会去修改库中的数据(注意:当提交后将无法回滚),因为在提交或者回滚后, 我们在内存中的操作已经被提交或者回滚到初始状态了;SQLite事务事件具有的属性(ACID):原子性(Atomicity):确保工作单位内的所有操作都成功完成,否则,事务会在出现

2020-11-03 12:57:09 3951

原创 普通文本与富文本,超文本之间的区别

文本只有文字且无颜色、插画等,并且文本只能进行顺序阅读富文本具有普通文本的特性;并有插画,对文字颜色等定义;还能调整页面,文本布局,插入音视频等超文本具有富文本的特性并能通过超链接进行跳转、导航回溯等操作...

2020-11-02 13:19:59 4393

原创 把QT程序打包成exe软件(绿色版)

文章目录1、创建文件夹2、编译软件3、把编译好的软件放到Test文件夹4、拷贝需要的库文件4.1、编译一个脚本拷贝库文件1、创建文件夹我们先创建一个文件夹用于存放待会需要打包的软件,我这里创建了一个名为Test的空文件夹2、编译软件编译我们编写好的程序,注意我们在编译时不要选择Debug编译,我们要选择Release编译;因为Debug编译出来的软件包含了调试信息文件较大,所以一般不建议打包使用Debug编译出的软件;并且注意使用的是32位的编译器还是64位的编译器(我这里使用的是32位)

2020-11-02 12:49:34 921

原创 QT多界面移植到手机注意事项

若是代码中包含了多界面的时候,当移植到手机上时,不能像Windows一样在跳转页面时delete掉当前页面然后新建一个页面出来,在Android中是不允许的,如下图当跳转另一个页面后将会出现推出整个程序的结果由于是运行在Android手机上的,我们只能通过隐藏当前页面,然后展示新的一个页面,上述图中代码应改为...

2020-11-02 12:48:18 709 1

原创 QT学习之自定义信号

1、创建一个按钮我们先创建一个工程项目,并在ui界面拖入一个按钮;然后转到槽函数选择clicked(如图)2、定义一个信号在类中定义一个信号signals:void msignal();3、定义一个槽函数在类中定义一个print的槽函数,并实现void MSignal::print(){ qDebug()<<"Get a signal";}4、关联信号槽函数connect(this,&MSignal::msignal,this,&MSigna

2020-11-02 08:22:41 4688

原创 QT定时器事件startTimer

文章目录定时器事件1、开启一个定时器:2、关闭定时器3、定时器事件4、示例代码定时器事件1、开启一个定时器: int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseTimer); 功能:启动一个定时器事件并返回一个定时器id 参数说明: interval:定时器的触发时间(触发的间隔时间)2、关闭定时器void QObject::killTimer(int id) 功能:关闭指定id的定时器 参数说

2020-11-01 23:59:59 6906

原创 QT中搭建TCP服务器与客户端流程

文章目录一、TCP服务端的搭建流程:示例代码二、tcp客户端搭建流程:示例代码一、TCP服务端的搭建流程://定义一个QTcpServer对象 QTcpServer server;//调用对象方法listen监听server.listen(ip, port);//当有连接时响应Server::new_client槽函数 connect(&server,&QTcpServer::newConnection,this,&Server::new_client);

2020-10-28 08:33:47 2054

原创 QTcpSocket获取当前连接套接字

在服务器一对多连接时,因为是有数据到达时才会发出一个信号告知我们去读取数据的;所以我们可以使用sender函数在对应得槽函数中获取对应的连接套接字,代码如下: QTcpSocket *sock = (QTcpSocket *)sender();因为sender返回的是一个 QObject *类型的对象,它是所有QT对象的基类,因此我们需要把它转为我们想要的 QTcpSocket *类型...

2020-10-28 08:15:11 1233 1

原创 已解决:QUdpSocket::joinMulticastGroup() called on a QUdpSocket when not in QUdpSocket::BoundState

在QT中使用QUdpSocket时提示QUdpSocket::joinMulticastGroup() called on a QUdpSocket when not in QUdpSocket::BoundState在网上查了所谓的解决办法都不管用,尝试什么将QUdpsocket::NotShareAddress改为QUdpSocket::ShareAddress都不行,最后发现是因为自己在加入组播前没有绑定端口号导致的错误,然后总结出了下面两个可能出现该错误的原因原因我总结了两个可能出错的原因

2020-10-27 14:50:31 3779

原创 原码、反码与补码与二进制的运算

在计算机中,原码、反码以及补码是为了区分正数与负数的表达与运算设计出来的一、原码在原码中即把数字直接转换为二进制,其中第一位为符号位(符号位0代表整数,符号位1代表负数),其余为该数的二进制原码;例如下面是+12与-12的原码的表达方式:+12:0000 1100-12:1000 1100在原码中正数与负数的二进制码除了符号位有区别外,其他是一样的;这里使用的是8位的二进制,使用多少位的二进制只是限制的数的取值范围,并没有多大的影响上面8位的二进制因为有一位的符号位,因此它的取

2020-10-25 09:54:31 1240

HwTest1.7z

通过C++实现的SQLite3把数据进行截取,擦除与分割,并使用了容器进行保存真正需要的值;使用技术:vector,map,SQLite

2020-11-04

基于qt和SQLite实现的login.7z

使用qt与SQLITE实现的登陆界面并且实现注册把账号密码等数据保存到数据库中,然后用于进行验证登陆,未实现:数据库数据的加密,只适用于个人玩一下

2020-11-03

c语言笔记(基于个人理解).txt

这是个人对于c语言的了解从而做出的笔记与一些不常见的知识点;如果里面有一些理解错的地方可以私聊我,不理解的地方也可以大家交流一下

2020-10-29

c语言简易版广告机.zip

一个使用c语言在arm开发板上实现的,通过刷图与终端简单控制的广告机代码,其中使用了链表,bmp图片在arm的lcd上的刷图及使用mplayer播放视频,以及实现了滚动字幕

2020-09-05

学生信息管理系统.zip

这是一个用c语言实现的一个学生信息管理系统,目前实现了对学生信息的增删改查,并且能够把学生的成绩和个人信息创建一个文档保存到当前目录下,但是还没实现重启系统后,从文档读取学生信息

2020-08-26

基于arm开发板智能家居系统.7z

基于arm 开发板实现得一个电子相册,不是很好,只是作为一个初学者用来玩玩的,需要代码或者互相交流的可以私聊我,有一些问题因为时间或其他原因未能解决

2020-08-25

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除