- 博客(184)
- 资源 (2)
- 收藏
- 关注
原创 模糊PID之matlab模糊控制器配置
使用模糊PID时,需要对工具库进行配置,模糊PID是由2个输入个3个输出组成,输出是E和Ec,输出是Kp、Ki和Kd。打开matlab后,需要配置fuzzy工具箱
2022-11-29 09:54:36
377
1
原创 Redis数据库学习记录
一、redis的存储格式都以键值对的形式存储的。nosql数据库。关系和非关系数据库的区别。1、结构化和非结构化2、关联和非关联3、SQL查询和非SQL查询4、事务性差异总结:安装多看官方文档。
2022-08-18 08:20:07
90
2
原创 ARM 汇编基础
ARM 不能直接访问存储器,比如 RAM 中的数据,I.MX6UL 中的寄存器就是 RAM 类型的,用汇编来配置I.MX6UL寄存器的时候需要借助存储器访问指令,一般先将要配置的值写入到 Rx(x=0~12)寄存器中,然后借助存储器访问指令将Rx中的数据写入到 I.MX6UL寄存器中。根据 ATPCS 规则,ARM 使用的 FD 类型的堆栈,SP 指向最后一个入栈的数值,堆栈是由高地址向下增长的,也就是前面说的向下增长的堆栈,因此最常用的指令就是 STMFD 和 LDMFD。......
2022-08-08 19:53:41
239
原创 Cortex-A7 MPCore 架构
Cortex-A7 MPcore 处理器支持 1-4 核,在 28nm 工艺下,Cortex-A7 可以运行在1.2-1.6GHz,Cortex-A7 在获得与 Cortex-A9 相似性能的情况下,其功耗更低。Cortex-A7 MPCore 支持在一个处理器上选配 1-4 个内核,Cortex-A7 MPCore 多核配置如图:L1 可选择 8KB、16KB、32KB、64KB,L2L2 Cache 可以不配,也可以选择 128KB、256KB、512KB、1024KB。......
2022-08-08 11:03:24
1050
1
原创 QT中多线程的使用
桌面开发中,主线程负责窗口类,其他线程负责应用程序处理,减少窗口卡顿的现象发生。多线程机制正好满足这个需求,提高用户体验和代码执行效率。
2022-07-21 15:36:56
938
1
原创 Linux驱动开发+QT应用编程实现IIC读取ap3216c
Linux驱动开发+Linux应用开发+LinuxQt开发实现传感器的数据读取。注意:QT开发中的是杂项设备,驱动开发用的是字符设备节点。
2022-07-20 20:25:27
770
原创 Linux高并发服务器开发—项目实战
本文主要介绍开发一个基本的高并发服务器需要用到哪些技术栈和技术实现,内容包括:1、unixI\O操作5中工作模式。2、http协议内容的介绍。3、http协议的工作流程。4、有限状态机编程思想。5、线程池原理的介绍。6、EPOLL如何确保两个线程同时访问一个socket‘’...
2022-07-11 09:25:48
1291
2
原创 Linux高并发服务器开发—UDP、广播、组播、本地socket
udp服务端udp客户端UDP通信的现象:向子网中多台计算机发送消息,并且子网中所有的计算机都可以接收到发送方发送的消息,每个广播消息都包含一个特殊的IP地址,这个IP中子网内主机标志部分的二进制全部为1。a.只能在局域网中使用。b.客户端需要绑定服务器广播使用的端口,才可以接收到广播消息。广播服务端广播客户端组播(多播)——了解单播地址标识单个 IP 接口,广播地址标识某个子网的所有 IP 接口,多播地址标识一组 IP 接口。单播和广播是寻址方案的两个极端(要么单个要么全部)
2022-07-10 03:45:00
222
原创 Linux高并发服务器开发—I/O多路复用
I/O 多路复用使得程序能同时监听多个文件描述符,能够提高程序的性能,Linux 下实现 I/O 多路复用的系统调用主要有 select、poll 和 epoll。多路转接!!!select 工作流程:101+1的目标是为了遍历到101。底层是一个for循环。小于102,所以能遍历到101。实验现象:现象:实验现象:LT 模式 (水平触发)LT(level - triggered)是缺省的工作方式,并且同时支持 block 和 no-block socket。在这种做法中,内核告
2022-07-08 07:54:21
221
原创 Linux高并发服务器开发—多进程和多线程
只能连接一个 客户端。要求服务器连接多个客户端。要实现TCP通信服务器处理并发的任务,使用多线程或者多进程解决。思路:1、一个父进程,多个子进程2、父进程负责等待并接收客户端的链接3、子进程:完成通信连接,接收一个客户端连接,就创建一个子进程。通过信号和errno回收子进程的资源!!!3个客户端和一个服务器。...
2022-07-08 00:45:00
201
原创 Linux高并发服务器开发—网络编程(二)
所谓 socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口。socket 可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的 API,也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连的
2022-07-07 08:32:32
110
原创 Linux高并发服务器开发—网络编程(一)
网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,又称为网络适配器或网络接口卡NIC。其拥有 地址,属于 OSI 模型的第 层,它使得用户可以通过电缆或无线相互连接。每一个网卡都有一个被称为 MAC 地址的独一无二的 位串行号。网卡的主要功能1.数据的封装与解封装2.链路管理3.数据编码与译码MAC 地址(Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址、以太网地址、物理地址或硬件地址,它是一个用来的位址,由网络设备制造商生产时
2022-07-07 01:00:00
242
原创 Linux高并发服务器开发—多线程
连接已终止的线程代码实现间隔3S 回收子线程资源。为什么pthread_join 要传递2级指针?好比说,int *a;修改这个数值,要传递一级指针。为了获得子线程退出时的返回值,所以join函数传入的是指向该返回值的指针,因为该返回值也是一个指针,所以传入的是二级指针。好比说 int a =10;函数要对a进行改变,无法修改a的数值。所以类型为 同理:函数要对a进行改变,无法修改a的数值。所以类型为 代码实例线程分离之后再进行连接会出现error的情况。取消某个线程多次运行结
2022-07-06 00:45:00
1251
原创 Linux高并发服务器开发—进程间通信(三)-共享内存和守护进程
实验现象:共享内存实现进程间通信。共享内存的读取守护进程查看当前的终端的ID!!!不同的获取终端!!!守护进程实例:实验现象:
2022-07-05 09:35:01
89
原创 Linux高并发服务器开发—进程间通信(二)--信号
未决状态:未被处理的状态。非法访问野内存:GDB分析段错误core文件:kill函数实现:现象:子进程杀死自己。alarm定时器函数实验现象:之前有定时器,返回之前的定时器剩余的时间结果显示:重定向到a.txt实例:过3秒以后,每隔2秒钟定时一次信号捕捉函数示例现象:捕捉到信号后打印编号。1表示没有被处理,0表示已经被处理。以下信号集相关的函数都是对自定义的信号集进行操作信号集代码实现:信号集操作现象:对内核的信号集进行操作:操作内核当中的信号集...
2022-07-05 01:00:00
64
原创 Linux高并发服务器开发—进程间通信(一)
1、匿名管道2、有名管道3、信号4、消息队列5、共享内存6、信号量7、Socket循环队列:线性队列变成环形队列,可以覆盖写数据。同时发送和接收:匿名管道数据基本单向流动,不会出现双向流动,避免发生错误。子进程: ps aux, 子进程结束后,将数据发送给父进程父进程:获取到数据,过滤pipe()execlp()子进程将标准输出 stdout_fileno 重定向到管道的写端。 dup2管道的读写特点和管道设置为非阻塞管道的读写特点使用管道时,需要注意以下几种特殊的情况(假设
2022-07-04 03:00:00
98
原创 Linux高并发服务器开发—进程
程序是文件。进程占用CPU的资源,进程是程序要运行,系统要分配的资源。进程调度的策略和进程调度的算法。父子进程交替执行:父子进程执行代码:实际上,更准确来说,Linux 的 fork() 使用是通过写时拷贝 (copy- on-write) 实现。写时拷贝是一种可以推迟甚至避免拷贝数据的技术。内核此时并不复制整个进程的地址空间,而是让父子进程共享同一个地址空间。只用在需要写入的时候才会复制地址空间,从而使各个进行拥有各自的地址空间。也就是说,资源的复制是在需要写入的时候才会进行,在
2022-07-03 03:45:00
114
原创 Linux高并发服务器开发—系统IO
标准C库函数带有缓冲区,效率执行效率高,在缓冲区中。然后一次性发送出去。而linux中的系统调用没有缓冲区,执行效率低。调用一次,读取一次,或者写入一次。网络通信的时候,就用linux系统IO,因为发送次数多。写一次,操作一次磁盘,读一次,操作一次磁盘。虚拟地址空间->MMU映射->真实的内存。MMU把虚拟内存和物理内存连接在一起。通过系统调用来进入内核区,操作内核区的数据。为什么要用数组来存储文件描述符,因为,就是可以同时打开多个文件,每打开一个文件,都占用一个文件描述符。每一个进程中都有一个PCB
2022-07-02 16:11:42
217
基于C++的机房预约系统
2022-07-30
基于STM32F407的火焰传感器报警测试
2021-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人