自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 QT获取程序当前路径

使用QCoreApplication类里面的方法。

2022-11-04 09:41:15 1741

原创 TCP模型网络信息结构体

表示监听所有的IP地址。

2022-10-17 10:56:56 611

原创 TCP网络模型技巧

signal(SIGCHLD, SIG_IGN) 多进程并发服务器,子进程终结之后,将此信号设置成忽略,就可以让内核init进程去处理,父进程不必等待子进程结束,避免影响服务器并发性能。通过这种方式可以避免报端口被占用的错误。在网络中,如果对端调用了close 之后还是用write就会生成管道破裂信号,导致进程退出,可以捕获SIGPIPE信号,或者忽略他。

2022-10-14 16:55:33 465

原创 Linux内核对进程的实现

这里我们讨论一下Linux内核如何管理每个进程,进程在内核中如何产生,如何创建,最终又如何消亡。我们知道,拥有操作系统的最终目的就是运行用户程序,所以进程管理作为所有操作系统必不或缺的能力也是操作系统的心脏所在,Linux也一样。

2022-09-18 16:02:58 367

原创 Linux下线程属性设置

​ 设置线程的分离态之后,就不用自己手动的回收线程的资源了,每个线程结束之后都有系统负责回收线程的资源。这里使用的是在线程创建的时候通过对线程属性的设置设置成线程为分离态。线程在创建的时候就可以设置线程属性,主要体现在线程创建函数中的第二个参数,这个参数传递的就是线程的属性设置。​ 线程的栈空间,默认值是8M,最小是16K.pthread_detach函数设置。

2022-09-17 10:05:58 439

原创 Linux下的IO模型

​ 优点就是:库函数可以说是对系统调用的一种封装,因为系统调用是面对的是操作系统,系统包括Linux、Windows等,如果直接系统调用,会影响程序的移植性,所以这里使用了库函数,比如说C库,这样只要系统中安装了C库,就都可以使用这些函数,比如printf() scanf()等,C库相当于对系统函数进行了翻译,使我们的APP可以调用这些函数;​ 现在的操作系统普遍采用虚拟内存的方式,以32位系统为例,最大的寻址空间是4G,Linux下,将最高的1G划分为内核空间,0-3G划分为用户空间。

2022-09-07 10:30:52 224

原创 死锁产生的条件

否则检查已获得该临界资源的进程,若获得该临界资源的进程处于等待其他资源的状态,则抢占这个进程的资源并分配给本进程,若获得该临界资源的进程不处于等待资源状态,则置本于等待资源状态(此时本进程原已占有的资源可能被抢占)死锁的处理方式其实就是破坏死锁产生的条件,四个条件中第一个条件临界资源是必然存在的,无法被破坏,所以要破坏其他三个二条件,这样死锁就无法形成。当进程申请临界资源的时候,如果有资源就分配给该进程使用,如果没有,进程不会阻塞等待资源,而是释放自己占用的所有资源,然后阻塞等待。...

2022-08-30 08:18:33 536

原创 SPI总线以及驱动详解

10 起始电平是高点平—>数据采样(读数据)在第一个边沿,时钟线从高到低跳变的时候,数据线保持不变,这时候读数据,时钟线从低到高跳变的时候,数据线可以变化,发送数据,所以,下降沿读,上升沿写。11 起始电平是高点平—>数据采样(读数据)在第二个边沿,时钟线从高到低跳变的时候,数据线可以变化,发送数据,时钟线从低到高跳变的时候,数据线保持不变,这时候读数据,所以,下降沿写,上升沿读。取决于时钟极性和时钟相位,时钟极性CPOL 0时钟起始位低电平 1时钟起始位高点平。串行,数据只能一位一位的发。

2022-08-24 20:30:44 778

原创 I2C总线级驱动详解

总线启动后,两个主控器都要发送自己的数据,同时发送第一位,相与之后还是1,两个总线检测电平发现和自己发送的电平一致,所以,这时,总线还是得不到仲裁,同理,第二位相与之后是0,也得不到仲裁,当发送第三位的时候,相与为0,主机1检测自己的输出电平,发现与自身不符合,就只能放弃对中线的控制权,所以,总线2就成为总线的唯一掌控者。起始信号 + 从机地址7位写标志位1位(0) + 应答信号 + 寄存器地址8位或者16位 + 应答位 + 要写入的数据8位 + 应答位 + 要写入的数据 + 应答位 …

2022-08-24 20:29:16 751

原创 使用C实现找出数组中第几大的数,并且输出这个数的下标

只要先进行一次排序就行。

2022-08-24 20:26:46 139

原创 使用C实现不使用库函数 实现将一个整型数字转换成字符串打印

【代码】使用C实现不使用库函数 实现将一个整型数字转换成字符串打印。

2022-08-24 20:23:44 341

原创 使用C确定一个字符串是否能在另一个字符串中找到

【代码】使用C确定一个字符串是否能在另一个字符串中找到。

2022-08-24 20:21:22 226

原创 C++和C中三目运算符的区别

上面这个程序,用C语言的编译器编译会报错,因为在C语言中,三木运算符返回的是变量的值,是一个值,不是变量,而一个值不能作为左值被另一个值赋值,所以会报错。当然,上面C++这样用,首先得让三木运算符试图去返回一个变量,其次才能引用这个变量的值,如果将上面的程序改成下面这样,C++编译器也是通不过的。—>试图返回一个变量—>实际上返回的是那个变量的引用—>可以被当做左值。—>试图返回一个值—>一个值当然不能作为左值被赋值。在C语言中,三目运算符不能作为左值使用,只能作为右值使用,因为其运算后返回的是变量的值。

2022-08-22 13:54:30 460 1

原创 关于ARM处理器CPSR各个位的说明

ARM核心工作状态标志位:T 5位 置1表示是Thumb状态 清0表示是ARM状态。ARM-V7特有的模式--->监控模式mon 10110。IRQ普通中断屏蔽位: I 7位 置1屏蔽 清0不屏蔽。FIQ快速中断屏蔽位: F 6位 置1屏蔽 清0不屏蔽。指令的运算结果为负数时:N 31位 置1 否则为0。指令的运算结果为0时: Z 30位 置1 否则为0。符号位产生变化时: V 28位 置1 否则为0。加法产生进位的时候,置1,否则清0。减法产生借位的时候,清0,否则置1。管理模式svc 10011。

2022-08-22 13:48:39 2043

空空如也

空空如也

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

TA关注的人

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