基础知识学习
文章平均质量分 68
物联网菜鸟
这个作者很懒,什么都没留下…
展开
-
RFID学习
RFID被称为无线射频识别,其是一种通信技术,通过无线电讯号耦合识别特定目标并读写相关数据;RFID主要位于典型物联网架构中的感知层,其因为具有非接触式特性,所有运用较广;原创 2024-10-06 22:10:45 · 141 阅读 · 0 评论 -
SQL学习2
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息;索引数据可能要占用大量的存储空间,因此并非所有数据都适合索引;在使用commit命令之前,可以将数据回滚到数据库修改之前;索引改善检索操作的性能,但降低了数据插入、修改和删除的性能;begin:开始一个事务,之后的所有操作多可以取消;用来保证一个列或一组列中的数据满足一组指定的条件;将结果集形成新的一张表,其可以保存,并反复查看;索引进行数据的排序,在查找是可以减少查询时间;其就是从多个表中查询想要的数据;原创 2024-09-29 22:44:10 · 465 阅读 · 0 评论 -
SQL学习1
数据库中提供了丰富的操作符配合where子句实现多种多样的匹配方法;对于嵌入式的数据库,其使用的是SQLite这种小型数据库;零配置、可移植、紧凑、简单、灵活、自由的授权、可靠、易用。其中可以使用’%'来表示缺少的字符,可以表示一个或多个;其不只可以搭配 in ,还可以搭配其他操作符;其默认按照升序,可使用desc使其按照降序;SQL是一种专门用来与数据库通信的语言;当数据库不存在时会创建数据库并打开;其表示只要满足其中每个条件的数据。其表示展示两个值之间的数据。表示对结果的数据进行排序;原创 2024-09-28 22:39:54 · 615 阅读 · 0 评论 -
linux网络编程9
readyState(请求状态):0为未初始化,1为正在加载,2为已经加载,3为交互中,4为完成;其是HTTP服务器与其他程序进行“交谈”的工具,通过CGI接口能在服务器端运行其他的程序;其最大的优点是在不重新加载整个页面的情况下,可用于服务器交换数据,并更新部分网页内容;CGI主要是将硬件获取到的数据传送到服务器,服务器通过AJAX技术将其传入到浏览器上;CGI传送给Web服务器的信息可以用各种格式,但但通常是HTML、XML的形式;是一种用于创建快速动态网页的技术;其本质是一种使用现有标志的新方法;原创 2024-09-27 22:03:14 · 378 阅读 · 0 评论 -
linux网络编程8
(1)web前端开发技术HTML:为超文本标记语言;CSS:时一种定义样式结构,如字体、颜色、位置等;XML:是用于传输数据,而非显示数据,是各种应用程序之间进行数据传输的最常用的工具;Javaacript:是一种网络的脚本语言,常用于为网页添加各种各样的动态功能;AJAX:创建交互式网页应用的网页开发技术;(2)web服务器端开发技术CGI:式web服务器运行时外部程序的规范,按CGI编写的程序可以扩展服务器功能;ASP:可用来创建动态交互式网页并建立强大的web应用程序;原创 2024-09-25 23:07:13 · 924 阅读 · 0 评论 -
linux网络编程7
protocol:用于指定可以收发的数据包类型,ETH_P_IP(为IPV4数据包)、ETH_P_ARP(为ARP数据包)、ETH_P_ALL(为所有协议的数据包)标志字段中的最低位记为MF,当为1时表示后面还有数据的分片,当为0时表示时数据中的最后一个分片。生存时间:TTL,为跳数限制,用于限制数据包在路由器中转发的次数,当下降为0时表示丢弃该数据包。标志字段中的中间位置,记为DF,意思为不能分片,当为0时才可以分片。首部校验和:只用于校验数据报的首部,不包括数据。原创 2024-09-24 23:00:06 · 989 阅读 · 0 评论 -
linux网络编程6
(1)交换机是一个扩大网络的器材,可以把更多的计算机等网络设备连接到当前的网络中;具备有性价比高、高度灵活、相对简单、易于实现等特点;转发过滤:能过滤并非转发到当前端口的信息;学习功能:对于连接到交换机的设备,都将其设备的MAC地址保存在其中的MAC地址表中还可以对VLAN的支持、对链路汇聚的支持、甚至还有防火墙的功能。原创 2024-09-22 23:04:28 · 458 阅读 · 0 评论 -
linux网络编程5
将套接字修改为被动,让操作系统给该套接字设置一个连接队伍,用来记录所有连接到该套接字的连接。关闭使用socket函数创建的套接字,会导致服务器无法接收新的连接,但不会影响已经连接的;其是关闭一个代表已经连接套接字,则会出现向另外一端接收到一个长度为0的数据包;关闭accept返回的套接字,则会导致其连接关闭,但不会影响服务器的;backlog:连接队列的长度,即设置服务器最大的连接客服的数量。其返回的是一个已连接的套接字,这个套接字代表当前这个连接。connect建立连接后不会产生新的套接字;原创 2024-09-21 22:09:12 · 874 阅读 · 0 评论 -
linux网络编程4
optname:SO_BROADCAST(允许发送广播数据包)、SO_RCVBUF(接收缓冲区大小)、SO_SNDBUF(发送缓冲区大小)optname:IP_ADD_MEMBERSHIP(加入多播组)、IP_DROP_MEMBERSHIP(离开多播组)由一台主机向该主机所在子网内的所有主机发送数据的方式;其作用是将单个服务器与多个客户主机通信时减少分组流通;level:SOL_SOCKET(套接字层次)数据的收发仅仅在同一分组中运行;在IPv4中其地址为D类地址。optval:多播的结构体。原创 2024-09-20 22:46:44 · 519 阅读 · 0 评论 -
linux网络编程3
在客户端的代码中,指设置了目的IP、目的端口,而客户端的IP和端口都是linux系统底层自动给客户端分配的;其是基于UDP协议实现的,因此在应用层中想要使用TFTP,那么传输层就一定要是UDP;from和addrlen可以为NULL,表示不保存数据来源。读写请求中操作码为1或2,代表为读或写,即上传或下传;向to结构体指针中指定的ip,发送UDP数据;from:源地址结构体指针,用来保存数据的来源。addrlen:from所指内容的长度。to:指向目的主机地址结构体的指针。原创 2024-09-19 23:06:23 · 538 阅读 · 0 评论 -
linux网络编程2
常用于语音和视频通话相较于TCP速度稍快些简单的请求、应答应用程序可以使用UDP对于海量数据传输不应该使用UDP广播和多播应用必须使用UDP。原创 2024-09-18 23:04:14 · 717 阅读 · 0 评论 -
linux网络编程1
通过分组来减少协议设计的复杂性,每一层利用下一层提供的服务来为上一层提供服务,每层服务的实现细节对上一层屏蔽(1)IP协议实现在一个相互连接的网络系统上从源地址到目的地址间传输数据包所提供必要功能不可靠:其不能保证数据包能成功到达目的地,仅提供尽力而为的传输服务无连接:每个数据包都是处理的,IP数据包可以不按发送顺序接收(2)TCP协议TCP是一种面向连接的、可靠的为不同主机上的进程间通信建立连接->使用连接->释放连接TCP数据包中包含序号和确认序号。原创 2024-09-16 22:57:10 · 896 阅读 · 0 评论 -
linux高级学习14
mmap函数:该函数的第三个参数表示该共享空间既可以写也可以读;第四个参数为该空间是共享得并且为匿名映射,即不需要文件描述符;则第五个参数与匿名对应将其改为-1。sem_init函数:将第二个函数写为1,表示进程间的信号变量。这些操作的函数与信号量操作使用的函数是一样的。(4)有名信号量的PV操作和销毁有名信号量。以下方法不使用信号量的初始化函数。oflag:为函数的权限标志。(3)有名信号量名字的删除。(1)有名信号量的初始化。其信号量使用无名信号量。其信号量使用有名信号量。(2)有名信号量的关闭。原创 2024-09-12 21:55:34 · 345 阅读 · 0 评论 -
linux高级学习13
即是将信号量初始化为1,每个线程对信号量先进行P操作,然后对共享区域进行操作,最后对信号量进行V操作。每个线程首先对自己的信号量进行P操作,然后对共享区域进行操作,最后对下一个线程的信号量进行V操作。PV原语是对信号量的操作,一次P操作使信号量减一,一次V操作使信号量加一。pshared:等于0,信号量在线程间共享;每个线程拥有一个信号量完成同步,先执行的任务信号量为1,其他为0。信号量本质上是一个非负整数计数器,用于控制对公共资源的访问。当信号量大于0时可以进行访问,否则阻塞。sem:信号量的地址。原创 2024-09-11 21:57:46 · 255 阅读 · 0 评论 -
linux高级学习12
在使用条件变量时当遇到条件不满足时,会将共享区域上的锁解开,然后阻塞线程等待条件满足,然后重新上锁,这些操作都是调用条件等待函数时完成,并且是原子操作。也可以使用静态初始化pthread_cond_t cond = PTHREAD_COND_INITIALIZER;条件变量是用来阻塞线程,其本身并不是锁,直到达到特定的要求;通常条件变量和互斥锁同时使用;attr:通常位默认值NULL。(4)唤醒被条件变量阻塞的线程。(1)条件变量初始化。原创 2024-09-09 22:58:03 · 325 阅读 · 0 评论 -
linux高级学习11
可以使用宏pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER进行初始化,但使用该方法不进行错误检测。互斥锁是一种简单的加锁方法,用于对共享资源的访问,互斥锁只有两种状态,加锁(lock)和解锁(unlock)attr:设置互斥量的属性,通常使用默认属性,即NULL;互斥锁的数据类型:pthread_mutex_t。其与分别申请读或写操作的锁配对。mutex:互斥锁地址。原创 2024-09-08 22:25:27 · 420 阅读 · 0 评论 -
linux高级学习10
线程的杀死不是实时的,是有一定的延迟,其需要达到取消点。这些属性可以通过函数进行改变其数值,用于适应不同的情况。将线程的回收工作分离出去,线程结束时,系统回收资源。start_routine:线程函数的入口地址。retval:用来存储线程退出状态的指针的地址。attr:线程属性结构体地址,通常位NULL。retval:存储线程退出状态的指针。thread:需要回收的线程号。thread:线程标识符地址。等待线程结束,并回收线程资源。arg:传给线程函数的参数。(5)线程的取消和退出。原创 2024-09-07 23:21:42 · 548 阅读 · 0 评论 -
linux高级学习9
位或权限位:共享内存位或权限位后可以设置共享内存的访问权限。SHM_RND:只有当shmaddr非空才有效;shmaddr:共享内存映射地址,推荐位NULL。IPC_STAT:保存shmid_ds参数。IPC_SET:设置shmid_ds参数。shmflg:共享内存段的访问权限和映射条件。shmflg:标识函数行为及共享内存的权限。SHM_UNLOCK:解锁共享内存段。SHM_LOCK:锁定共享内存段。IPC_RMID:删除。shmid:共享内存标识符。shmid:共享内存标识符。原创 2024-09-06 22:58:29 · 381 阅读 · 0 评论 -
linux高级学习8
提供IPC通信机制需要一个key值,通过key值就可以在系统中获取一个唯一的消息队列标识符,key值可以认为指定,也可以通过ftok函数获取。msgtyp < 0:返回队列中消息类型小于或者等于msgtyp的消息,如果消息有多个,则取类型最小的消息。flags:标志位,有MAP_SHARED(共享的)对映射区的修改会影响文件、MAP_PRIVATE(私有的)IPC_STAT:将消息队列相关的数据结构中的值,存放到buf指向的结构中。msgtyp:消息的类型,当有多个相同类型的消息,采用先进先出原则。原创 2024-09-06 21:04:18 · 667 阅读 · 0 评论 -
linux高级学习7
管道称为无名管道,其是一种特殊类型的文件,在应用层体现为两个打开的文件描述符,最古老的进程间通信方式(IPC)主要用于没有血缘关系的进程间通信,其是在物理内存中抽象出一部分内存规划为文件,用于进程间通信。filedes数组中存放了管道的文件描述符fd[0],fd[1]dup2函数用于复制文件描述符,与dup的区别为调用的形式区别。filedes[0]为读打开,filedes[1]为写而打开。将newfd作为oldfd的副本。原创 2024-09-03 22:58:40 · 298 阅读 · 0 评论 -
linux高级学习6
操作系统不允许用户直接对其进行位操作,需要自定义另外一个集合,借助信号集操作函数对其两个信号进行修改。每个进程都有阻塞集,创建子进程时子进程会继承父进程的阻塞集,其作用是暂缓信号的传送。同一主机的进程通信:无名通道,有名通道,消息队列,mmap,共享内存,信号。让新的文件描述符指向旧的文件描述符,其函数为dup、dup2。不同主机的进程通信:socket(网络通信)oldset为保存原先的信号阻塞集。在PCB中有两个重要的信号集,原创 2024-08-24 22:56:15 · 342 阅读 · 0 评论 -
linux高级学习5
信号是一种异步通信的方式,其是软件中断,可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件信号的特点:简单,不能携带大量信息,满足某个特设条件才发送信号的产生信号在进程中的注册信号在进程中的注销编号名称事件默认处理动作当用户按某些终端键时,将产生信号硬件异常将产生信号,如除数为0,无效的内存访问等软件异常将产生信号(定时器)调用系统函数(如:kill、raise、abort)将发送信号运行kill / killall命令将发送信号。原创 2024-08-19 23:00:27 · 922 阅读 · 0 评论 -
linux高级学习4
使用上面的方法创建的子进程个数为2的n次方减1个,因为在父进程创建完子进程后子进程也会进行创建子进程。先调用fork,终止父进程(使用exit(-1)来结束),子进程调用setsid,将其设为会话。可以判断 i 的值来确定当前子进程为那个,用于区分子进程需要完成的任务。原创 2024-08-14 23:03:21 · 418 阅读 · 0 评论 -
linux高级学习3
使用fork创建进程得到的子进程是父进程的一个复制品,它从父进程中继承了整个进程的地址空间(包括进程上下文、堆栈等),其子进程独有的为进程号和计时器等,因此用fork创建进程代价很大。由于fork创建的子进程会复制父进程的上下文,所以在执行父进程中的fork函数后,其返回的值为子进程ID,在执行子进程中的fork函数后,返回的值为0。进程运行时,内核为进程每个进程分配一个PCB,维护进程相关的信息,linux内核的进程控制块为task_struct结构体。0号进程为内核进程,用于管理其他所有进程。原创 2024-08-13 22:57:04 · 505 阅读 · 0 评论 -
linux高级学习2
当文件是一个符号连接时,lstat返回的是该符号链接本身的信息;stat返回的是该链接指向的文件的信息。阻塞与非阻塞是对文件描述符而言,而不是指read、write等的特性;原创 2024-08-10 22:47:45 · 181 阅读 · 0 评论 -
linux高级学习1
先将文件描述符的数量减一,如当文件在多线中中多次打开,某个线程关闭文件,只是关闭其与文件的连接;Linux将系统调用打开或者新建的文件用非负整数来表示,而这个非负整数就是文件描述符。程序运行起来后会为每个进程分配文件描述符表,其放置在内核,其使用位图来记录。mode_t为数值,格式为0xxx,x的最大值为7,最小值为1。常用操作:open、close、read、write。可读(4),可写(2),可执行(1)用这三个进行组合。当文件描述符为0时,系统会回收文件描述符的内核空间;buf:为写入内容的首地址。原创 2024-08-09 23:03:19 · 394 阅读 · 0 评论 -
qt学习7
当要定义过滤器则可以重写QObject::eventFilter(QObject *obj,QEvent *event)函数。当是需要过滤的事件,如果过滤返回true,不过滤返回false;如果不是需要过滤的组件,则返回父类的事件过滤器。系统或者qt本身在不同时刻发出的;在qt中所有的事件类都继承于QEvent,且多数是虚函数。类有QPainter、QPainterDevice、QPaintEngine。事件的经过:事件派发->事件过滤器->事件分发->事件处理阶段。原创 2024-08-02 22:54:39 · 201 阅读 · 0 评论 -
qt学习6
当某个窗口或者某个模块被经常性的重复使用,可以将其拿出来做成单独的类,进行重复使用创建出该模块的类将类需要放在的空白框架进行提升运行该窗口即可。原创 2024-08-01 22:26:32 · 226 阅读 · 0 评论 -
qt学习5
Qt提供了两种组件定位机制,绝对定位和布局定位。原创 2024-07-30 22:07:51 · 230 阅读 · 0 评论 -
qt学习4
其模态对话框分为两种一种为程序级别的,另一种是窗口级别的//创建程序级别//窗口级别。原创 2024-07-29 23:20:30 · 386 阅读 · 0 评论 -
qt学习3
其是一个为用户提供主窗口程序的类,其包含一个菜单栏,多个工具栏,多个铆接部件,一个状态栏和一个中心部件。其有菜单栏类QMenuBar、菜单类QMenu、菜单项类QAction。Lambda表达式用于定义并创建匿名的函数对象,用于简化编程工作。其有工具栏类QToolBar,工具栏子类QAction。即当一个信号发出触发另一个信号发出。其有状态栏类QStatusBar。原创 2024-07-28 23:11:30 · 354 阅读 · 0 评论 -
qt学习2
确定场景创建自定义信号发出类和信号接受类在发出类中声明信号(可以只声明),在信号接受类中声明槽函数并实现信号声明在signals中,槽可以一般声明在public slots,也可以声明在public或者全局中创建发出类的对象和接受类的对象,创建连接使用emit关键字发出信号//发出信号的类Q_OBJECTpublic:signals://接受信号的类Q_OBJECTpublic:signals:qDebug()<<"请老师吃饭";//触发函数。原创 2024-07-27 23:24:11 · 380 阅读 · 0 评论 -
qt学习1
Qt是一个跨平台的c++图形用户界面应用程序框架Qt:支持多平台开发;支持css;面向对象特性体现突出;发展趋势良好MFC:只支持windows开发;运行程序效率高;库安全性好。原创 2024-07-24 23:02:48 · 316 阅读 · 0 评论 -
shell学习7
在文件中写脚本也是这个格式,只是没有awk;BEGIN和END都要大写;这两个结构可以有也可以没有;使用外部变量参数需要使用到。在执行过程中只执行一次;原创 2024-07-23 23:12:20 · 394 阅读 · 0 评论 -
shell学习6
sed编译器与尝使用的交互式编译器不同,其以批处理的方式编辑文件,运行速度更快一些。sed的退出状态都是0,只有当命令存在语法错误式,sed的退出状态才是非0。必须要在文本前面添加 / 符号。其命令支持正则表达式。原创 2024-07-21 22:27:05 · 243 阅读 · 0 评论 -
shell学习5
方法一# 输出定义的数组方法二方法三方法四:动态地定义数组变量array=($(命令))array=(`命令`)原创 2024-07-20 23:05:24 · 222 阅读 · 0 评论 -
shell学习4
while首先进行条件测试,如果传回值为0,则进入循环,否则不进入循环。until条件测试结果为假(即传回值不为0),则进入循环。for每次从值集合中取一个值赋值给变量。字符串比较需要在字符串上添加上引号。1.单分支if条件语句。2.双分支if条件语句。原创 2024-07-19 22:54:35 · 710 阅读 · 0 评论 -
shell学习3
方法一 function 函数名 {函数体 # 用于返回值 [return value] } # 方法二 函数名() {函数体 # 用于返回值 [return value] }原创 2024-07-18 23:41:47 · 304 阅读 · 0 评论 -
shell学习2
变量名=变量值 (区分大小写)echo $变量名unset 变量名作用范围:当前shell" "‘’school=100 echo "${shool} is good" #输出的结果为:100 is good echo '${shool} is good' #输出的结果为:${shool} is good反引号 ` 用于需要使用命令获取变量的时候,也可以使用$(命令)原创 2024-07-16 23:18:08 · 272 阅读 · 0 评论 -
shell学习1
想要别名永久生效,可以将定义别名的命令写入bashrc文件中。一个>表示将数据覆盖到文件中,两个>>表示将数据添加到文件中。”,其作用是指明解释器。用于检测脚本中是否存在错误。原创 2024-07-14 23:04:45 · 298 阅读 · 0 评论