• 2024-11-16Select,poll,epoll和IO多路复用和NIO
    Select,poll,epoll和IO多路复用和NIOIO多路复用:是一种I/O处理机制,它允许单个线程同时处理多个I/O流(如多个文件描述符对应的网络连接、文件操作等)的输入输出操作,通过一种机制来监听这些I/O流的状态变化(如可读、可写等),一旦某个I/O流有状态变化,就可以对其进行相应的处理
  • 2024-11-13算法专题:优先级队列(堆)
    目录1.最后一块石头的重量1.1算法原理1.2算法代码2. 数据流中的第K大元素2.1算法原理 2.2算法代码3.前K个高频单词3.1算法原理3.2算法代码4.数据流的中位数4.1算法原理4.2算法代码1.最后一块石头的重量.-力扣(LeetCode)1.1算法原理建一
  • 2024-11-11Linux kernel 堆溢出利用方法(二)
    前言本文我们通过我们的老朋友heap_bof来讲解Linuxkernel中off-by-null的利用手法。在通过讲解另一道相对来说比较困难的kerneloff-by-null+dockerescape来深入了解这种漏洞的利用手法。(没了解过docker逃逸的朋友也可以看懂,毕竟有了root权限后,docker逃逸就变的相对简单了)。
  • 2024-11-09poll()方法和remove()方法的区别是什么?
    在Java的集合框架中,poll()方法和remove()方法是两个常用于从队列(Queue)头部获取并移除元素的方法。尽管它们的作用相似,但在行为细节和适用场景上存在显著的区别。以下是对这两个方法区别的详细阐述,旨在帮助开发者更好地理解并选择使用它们。一、方法定义与功能poll()方法定
  • 2024-11-08网络编程IO多路复用之poll模式
    网络编程IO多路复用之poll模式文章目录网络编程IO多路复用之poll模式1.poll函数原型2.系统调用过程3.poll编程模型图4.poll事件5.总结6.延伸问题1.poll函数原型#include<poll.h>intpoll(structpollfd*fds,nfds_tnfds,inttimeout);参数说明1
  • 2024-11-01Queue
    Queue1、add()和offer()区别:add()和offer()都是向队列中添加一个元素。一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,调用add()方法就会抛出一个unchecked异常,调用offer()方法会返回false。因此就可以在程序中进行有效的判断!2、poll()和remove()区别:r
  • 2024-10-28【网络编程】select和poll
    selectselect()确定一个或多个套接口的状态,如:需要则等待。#include<winsock.h>intPASCALFARselect(intnfds,fd_setFAR*readfds,fd_setFAR*writefds,fd_setFAR*exceptfds,conststructtimevalFAR*timeout);//参数说明:-nfds:是一个整数值,是指集合中所有
  • 2024-10-19select、poll和epoll区别
    函数原型intselect(intnfds,structfd_set*readfds,structfd_set*writefds,structfd_set*execptfds,structtimeval*timeout);intpoll(structpollfd*fds,nfds_tfds,inttimeout);epoll:intepoll_create(intsize);intepoll_ctl(intepollfd,intop,intfd,st
  • 2024-10-12用C/C++构建自己的Redis——第六章、事件循环和计时器
    用C/C++构建自己的Redis——第六章、事件循环和计时器文章目录用C/C++构建自己的Redis——第六章、事件循环和计时器前言一、超时和计时器二、链表三、事件循环四、链表排序4.1寻找最近的计时器4.2激活计时器4.3维护计时器五、测试总结前言这一章我们将一起学
  • 2024-09-26底层设计:轮询系统 - 边缘情况
    目录案例1-处理更新的版本控制情况2-pollid作为uuid而不是主键情况3-选项为空或无效案例4-重复选项案例5-问题长度限制案例6-投票过期请先参考以下文章:底层设计:投票系统:基本底层设计:轮询系统-使用node.js和sql边缘情况处理案例1要管理投票
  • 2024-09-26Linux 五种IO模型
    1概念说明在进行解释之前,首先要说明几个概念:用户空间和内核空间:现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用
  • 2024-09-25【JUC并发编程系列】深入理解Java并发机制:阻塞队列详解与简单纯手写(七、BlockingQueue、ArrayBlockingQueue、LinkedBlocking)
    文章目录【JUC并发编程系列】深入理解Java并发机制:阻塞队列详解与简单纯手写(七、BlockingQueue、ArrayBlockingQueue、LinkedBlocking)1.简单回顾1.1数组结构和链表结构1.1.1数组结构1.1.2链表结构1.2有界队列与无界队列1.3Lock锁使用回顾2.什么是阻塞队列3.B
  • 2024-09-18接收网络包的过程——从硬件网卡解析到IP层
    当一些网络包到来触发了中断,内核处理完这些网络包之后,我们可以先进入主动轮询poll网卡的方式,主动去接收到来的网络包。如果一直有,就一直处理,等处理告一段落,就返回干其他的事情。当再有下一批网络包到来的时候,再中断,再轮询poll。这样就会大大减少中断的数量,提升网络处理的效率,这
  • 2024-09-18【Linux】多路转接epoll
    一、I/O多路转接poll1.1poll函数接口函数原型函数参数fds:是一个poll函数监听的结构列表,每一个元素中包含了三部分内容:文件描述符,监听的事件集合,返回的事件集合。nfds:表示的是fds数组的长度timeout:表示poll函数的超时时间,单位是毫秒函数功能       poll函数用
  • 2024-09-17linux驱动开发-内核并发 poll 和 lock
    内核并发poll加lock执行流程用户空间进程调用write将数据写入设备:执行char_write,更新event_triggered并唤醒等待的进程。有进程因此等待:正在执行的char_read会检查event_triggered,如果为0,执行等待。数据可用时:事件被触发(event_triggered被设为1),之前因等待而被
  • 2024-09-129.12日常记录
    1.extern关键字1)诞生动机:在一个C语言项目中,需要再多个文件中使用同一全局变量或是函数,那么就需要在这些文件中再声明一遍2)用于声明在其他地方定义的一个变量或是函数,在当前位置只是声明,告诉编译器在链接阶段去其他地方找。  2.strcpy的缺陷1.没有长度检查。2.不返
  • 2024-09-11NC 序列化二叉树
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。描述请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字
  • 2024-09-09Linux:多路转接 select、poll、epoll
    1:select#include<sys/select.h>intselect(intnfds,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,structtimeval*timeout);   select函数是POSIX标准定义的一个系统调用,用于监视多个文件描述符(filedescriptors),以确定它们是否具有可读、可写或异常
  • 2024-09-06Linux在驱动里做定时循环
    1.使用内核定时器实现思路是,在驱动里使用一个内核定时器,定时一个时间后,执行回调函数,再在回调函数里重新设置一次定时时间,以此往复,在回调函数里里执行自己的业务Linux4.4内核/*一些变量*/#definePOLL_PERIOD(HZ/1)/*(HZ/100):Pollingperiod.01seconds(10ms)*
  • 2024-09-05select、poll、epoll的原理
    目录1.IO多路复用2.select原理3.poll原理4.epoll原理5.select、poll、epoll总结6.epoll原理详解6.1内核收包的过程6.2进程调度时的阻塞6.3再来看一下内核收网络数据的过程6.4select的原理6.5epoll的设计原理6.6补充6.7总结1.IO多路复用IO多路复用就是一个线程
  • 2024-08-28Kafka Topic 中明明有可拉取的消息,为什么 poll 不到
    开心一刻今天小学女同学给我发消息她:你现在是毕业了吗我:嗯,今年刚毕业她给我发了一张照片,怀里抱着一只大橘猫她:我的眯眯长这么大了,好看吗我:你把猫挪开点,它挡住了,我看不到她:你是sb吗,滚我解释道:你说的是猫呀可消息刚发出,就出现了红色感叹号,并提示:消息已发出,但被对方拒收了kafka
  • 2024-08-17I/O多路转接之 select 与 poll
    目录一、select(一)初识select(二)理解select执行过程(三)socket就绪条件(四)select的特点(五)select缺点(六)select使用示例二、poll(一)poll函数接口(二)socket就绪条件(三)poll的优点(四)poll的缺点(五)poll使用示例在Linux系统中,I/O多路转接是一种重要的I/O模型(也称I/O多路复用),它
  • 2024-08-13在 C# 中使用 Socket.Poll() 提高 CPU 利用率
    一、背景       最近在使用Sharp7.cs连接西门子PLC时,发现当在同一台工控机上连接多个(实际超过100)CPU时,工控机的CPU占用非常大,会去到20~30%。然而此时实际的网络流量确并不高,只有10mbps。大量CPU资源消耗不知道在做什么。因为此时工控机上也没有跑其他业务代码
  • 2024-08-0461 多路转接poll
    poll函数的接口#include<poll.h>intpoll(structpollfdfds,nfds_tnfds,inttimeout);//pollfd结构structpollfd{intfd;/filedescriptor/shortevents;/requestedevents/shortrevents;/returnedevents*/};参数说明fds是一个poll函数监听
  • 2024-08-03【Android驱动07】Sensor传感器框架以及驱动移植和调试方法(Hal层部分)
    一,Androidsensor系统架构Hal就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。也就是说,把对硬件的支持分成了两层,一层放在用户空间(UserSpace),一层放在内核空间(KernelSpace),其中,硬件抽象层运行在用户空间,而Linux内核驱动程序运行在内核空间。二,HAL层Sen