
linux
文章平均质量分 65
m0_46598535
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
brew 安装mysql
brew 安装mysql原创 2023-07-06 13:23:43 · 1209 阅读 · 0 评论 -
支付系统&订单系统设计
1原创 2023-02-22 21:51:30 · 617 阅读 · 0 评论 -
压测——总结
压测原创 2022-11-13 01:09:59 · 313 阅读 · 0 评论 -
io多路复用
epoll的触发模式原创 2022-07-10 18:21:50 · 365 阅读 · 0 评论 -
UDP主要丢包原因及具体问题分析
https://blog.youkuaiyun.com/libaineu2004/article/details/48039599原创 2020-05-24 11:51:11 · 459 阅读 · 0 评论 -
网络编程---Syn_Flood攻击
Syn_Flood概述Syn-Flood攻击是当前网络上最为常见的DDoS攻击,也是最为经典的拒绝服务攻击,它利用了TCP协议实现上的一个缺陷,通过向网络服务所在端口发送大量的伪造源地址的攻击报文,就可能造成目标服务器中的半开连接队列被占满,从而阻止其他合法用户进行访问。这种攻击早在1996年就被发现,但至今仍然显示出强大的生命力。很多操作系统,甚至防火墙、路由器都无法有效地防御这种攻击,而且由于它可以方便地伪造源地址,追查起来非常困难。它的数据包特征通常是,源发送了大量的SYN包,并且缺少三次握手的最原创 2020-05-21 13:02:01 · 974 阅读 · 0 评论 -
网络编程---epoll之ET\LT
LT:level trigger, 水平触发模式ET:edge trigger, 边缘触发模式相同点:都是通过epoll_wait从EPOLL等待队列读取激活事件区别:LT模式读取激活事件后,如果还有未处理的数据。事件会重新放入EPOLL等待队列。ET模式读取激活事件,直接从EPOLL等待队列移除,不管是否有未处理的数据。事件放入EPOLL等待队列条件:读事件从不可读变为可读有新数据到来有老数据,并且通过epoll_ctl设置EPOLL_CTL_MOD(ET模式)数据未读完(LT原创 2020-05-20 22:05:15 · 328 阅读 · 0 评论 -
网络编程---信号量
1、信号量概述进化版的互斥锁(1 --> N)由于互斥锁的粒度比较大,如果我们希望在多个线程间对某一对象的部分数据进行共享,使用互斥锁是没有办法实现的,只能将整个数据对象锁住。这样虽然达到了多线程操作共享数据时保证数据正确性的目的,却无形中导致线程的并发性下降。线程从并行执行,变成了串行执行。与直接使用单进程无异。信号量,是相对折中的一种处理方式,既能保证同步,数据不混乱,又能提高线程并发。2、主要应用函数:sem_init() 函数 功能:初始化一个信号量sem原创 2020-05-20 20:41:17 · 219 阅读 · 0 评论 -
网络编程---为何条件变量要和互斥量联合使用
为何条件变量要和互斥量联合使用:条件变量起到了阻塞和唤醒线程的作用,所以通常互斥锁要和条件变量配合。互斥锁一个明显的缺点是他只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,他常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。用pthread_cond_wait(&m_pthreadCond, &m_pthreadMutex)一旦其他的某个线程改变了条件变量,他将通原创 2020-05-18 11:05:31 · 513 阅读 · 0 评论 -
网络编程之多线程编程--pthread_create pthread_join
pthread_create函数函数简介pthread_create是UNIX环境创建线程函数头文件#include<pthread.h>函数声明int pthread_create(pthread_t *thread, pthread_attr_t attr, void (*start_routine)(void *), void *arg);返回值若成功则返回0,否则返回出错编号参数第一个参数为指向线程标识符的指针。第二个参数用来设置线程属性。第三个参原创 2020-05-18 11:05:09 · 345 阅读 · 0 评论 -
网络编程----互斥量和锁
一、互斥量mutex多线程可以考虑同一时间只有一个线程访问数据。互斥量(mutex)就是一把锁。多个线程只有一把锁一个钥匙,谁上的锁就只有谁能开锁。当一个线程要访问一个共享变量时,先用锁把变量锁住,然后再操作,操作完了之后再释放掉锁,完成。当另一个线程也要访问这个变量时,发现这个变量被锁住了,无法访问,它就会一直等待,直到锁没了,它再给这个变量上个锁,然后使用,使用完了释放锁,以此进行。这个即使有多个线程同时访问这个变量,也好象是对这个变量的操作是顺序进行的。互斥变量使用特定的数据类型:pthre原创 2020-05-17 21:12:14 · 403 阅读 · 0 评论 -
有符号类型和无符号类型
转载-----------------------------------------负数在计算机中如何表示呢?1、是否需要有正负。如果这个量不会有负值,那么我们可以使用无正负的类型。分正负的类型,称为有符号类型;无正负的类型(只有正值),称为无符号类型。2、使用二制数中的最高位表示正负。(第一位为最高位)单字节数: 1111 1111双字节数: 1111 1111 1111 1111四字节数: 1111 1111 1111 1111 1111 1111 1111 1111当一个数是无符原创 2020-05-16 23:15:22 · 2903 阅读 · 1 评论 -
UDP&TCP的区别
tcp、udp的详细资料,这个链接很详细很全原创 2020-05-16 22:15:20 · 140 阅读 · 0 评论 -
tcp粘包,udp不会粘包
TCP基于流的传输,基于流的传输不认为消息是一条一条的,是无保护消息边界的(保护消息边界:指传输协议把数据当做一条独立的消息在网上传输,接收端一次只能接受一条独立的消息)。所谓无边界是指数据发送端发送的字节数,在数据接收端接受时并不一定等于发送的字节数,可能会出现粘包情况UDP则是面向消息传输的,是有保护消息边界的,接收方一次只接受一条独立的信息,所以不存在粘包问题。他不会对数据包进行合并发送(也就没有Nagle算法之说了),他直接是一端发送什么数据,直接就发出去了,既然他不会对数据合并,每一个数据包原创 2020-05-16 22:06:52 · 1705 阅读 · 0 评论 -
Linux下的进程1——进程概念,进程切换,上下文切换,虚拟地址空间
转载原创 2020-05-16 21:35:58 · 160 阅读 · 0 评论 -
linux网络编程----网络序和主机序
在物联网或者网络通信的过程中难免会发生数据的交换,因为每台主机不同,其存储数据方式可能为大端存储(Big endian)和小端存储(Little endian),因此在数据传输的过程中是以网络字节序为标准顺序,考虑与协议的一致性,在程序发送数据包的过程中,将主机字节序转为网络字节序,收到数据包的主机再将网络字节序转为该主机的主机字节序,从而完成两台主机的通信。主机字节序:主机内部内存中数据的处理方式。在不同的CPU处理器下,有不同的字节序类型,而字节序是指整数在内存中存储的顺序叫做主机序。最常见的主机原创 2020-05-16 20:52:34 · 233 阅读 · 0 评论 -
linux网络编程---字节对齐、位域、网络通讯1字节对齐
字节对齐1.对齐模数:自定义类型的自身对齐模数(struct 、class)等同于其成员中最大的自身对齐模数指定对齐模数我们给编译器指定的对齐模数(在VC中使用指令:#pragma pack(n),如果不指定,在VS2010默认为8)有效对齐模数指定对齐模数与类型自身对齐模数的较小的值,就是实际生效的对齐模数。2.结构体中,成员数据对齐满足以下规则: a、结构体中的第一个成员的首地址也即是结构体变量的首地址。 a1结构体变量的首地址能够被其最宽基本类型成员的大小所整除; 备原创 2020-05-16 20:17:03 · 965 阅读 · 0 评论 -
linux项目笔记--数组强制转换成结构
一个数组指针强制转换成结构体指针得到的结构:字节对齐:如果结构体中所有属性所占字节和数组的类型所占字节一样(如果数组类型是16位的,属性也是16位的),那就直接按照属性的顺序,将数组中的数据依次读取出来(是读取,不是复制,因为是指针强制转换)字节不对齐:如果结构体属性所占字节数和数组的类型不一样,那样数据就会乱,结构体会按照属性的类型依次读取类型长度的数据,然后数据就会乱。项目例子:(项目中在收发数据包设计中)LPCOMM_PKG_HEADER pPkgHeader;//定义的包头结构体指针原创 2020-05-15 22:09:20 · 612 阅读 · 0 评论 -
epoll相关函数
1. struct epoll_event结构:结构体epoll_event被用于注册所感兴趣的事件和回传所发生待处理的事件,定义如下:typedef union epoll_data { void *ptr; int fd; __uint32_t u32; __uint64_t u64; } epoll_data_t;//保存触发事件的某个文件描述符相关的数据 struct epoll_event { __uint32_t events;原创 2020-05-14 18:39:18 · 427 阅读 · 0 评论 -
linux自学---socket里的api函数
(摘抄)一些API函数:创建套接字──socket()应用程序在使用套接字前,首先必须拥有一个套接字,系统调用socket()向应用程序提供创建套接字的手段,其调用格式如下:SOCKET PASCAL FAR socket(int af, int type, int protocol)该调用要接收三个参数:af、type、protocol。参数af指定通信发生的区域:AF_UNIX、AF_INET、AF_NS等,而DOS、WINDOWS中仅支持AF_INET,它是网际网区域。因此,地址族与协议族相原创 2020-05-14 15:35:50 · 205 阅读 · 0 评论 -
内核如何捕捉信号以及Linux信号处理函数sigaction
一、内核如何实现信号的捕捉如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,这称为捕捉信号。由于信号处理函数的代码是在用户空间的,处理过程比较复杂,举例如下:用户程序注册了SIGQUIT信号的处理函数sighandler。当前正在执行main函数,这时发生中断或异常切换到内核态。在中断处理完毕后要返回用户态的main函数之前检查到有信号SIGQUIT递达。内核决定返回用户态后不是恢复main函数的上下文继续执行,而是执行sighandler函数,sighandler转载 2020-05-09 11:34:12 · 399 阅读 · 0 评论 -
信号处理函数的注意事项-----可重入函数
可重入和不可重入怎么会有可重入和不可重入。在多任务系统下,中断可能在任务执行的任何时间发生;如果一个函数的执行期间被中断后,到重新恢复到断点进行执行的过程中,函数所依赖的环境没有发生改变,那么这个函数就是可重入的,否则就不可重入。在中断前后不都要保存和恢复上下文吗,怎么会出现函数所依赖的环境发生改变了呢?我们知道中断时确实保存一些上下文,但是仅限于返回地址,cpu寄存器等之类的少量上下文,...原创 2020-05-05 15:43:32 · 1369 阅读 · 0 评论