ICode9

精准搜索请尝试: 精确搜索
  • 阻塞队列,四组方法 || 同步队列2021-02-14 09:31:21

    BlockingQueue方法有四种形式,具有不同的操作方式,不能立即满足,但可能在将来的某个时间点满足: 一个抛出异常, 第二个返回一个特殊值(空了,继续取值,返回 null 或 满了,继续添加,返回false ;没满返回true,具体取决于操作), 第三个程序将无限期地阻止当前线程,直到操作成功为止, 第四个程

  • 多路复用IO:select poll epoll2021-02-09 08:01:04

    select Select(Max+1,&rset,null,null,null)是因为0~max是max+1。 过程: 将文件描述符收集过来,把bitmap从用户态拷贝到内核态,交给内核态判断那个有数据。Select是个阻塞函数,没有数据时会一直阻塞在select。如果有数据来,FD(对应的bitmap那一位)置位,然后select返回,O(n)判断哪一个被置位了,然后

  • 【译】Async/Await(五)—— Executors and Wakers2021-02-08 13:33:51

    原文标题:Async/Await 原文链接:https://os.phil-opp.com/async-await/#multitasking 公众号: Rust 碎碎念 翻译 by: Praying Executors and Wakers 使用 async/await,可以让我们以一种全完异步的方式来与 future 进行更为自然地协作。然而,正如我们之前所了解到的,future 在被轮询

  • leetcode (堆->simple)703,1046,前k大/小数2021-02-02 16:32:58

    703 第K大     class KthLargest { private PriorityQueue<Integer> heap ; private int k; public KthLargest(int k, int[] nums) { heap = new PriorityQueue<>(k,(k1,k2)->k1.compareTo(k2)); this.k = k; for (int i

  • select函数-linux内核源码剖析2021-01-25 14:03:26

    用户态下select系统调用 select多路I/O转接服务器demo:select_server.c select函数原型 /usr/include/sys/select.h /* According to POSIX.1-2001 */ #include <sys/select.h> int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *

  • 关于poll的events,注册的事件2021-01-20 23:32:31

          printf("%d,%d,%d,%d,%d,%d,%d\n",POLLIN,POLLRDNORM,POLLRDBAND,POLLPRI,POLLOUT,POLLERR, POLLRDHUP); 上面一行代码的输出为:  1,64,128,2,4,8,8192 根据事件参数对应的二进制值,我们可以知道为什么events“是一系列时间的按位或”。 因为事件参数转换为二进制后,

  • I/O复用select、poll和epoll2021-01-20 10:32:51

    介绍: I/O multiplexing 这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态(对应空管塔里面的Fight progress strip槽)来同时管理多个I/O流. 发明它的原因,是尽量多的提高服务器的吞吐能力 在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O

  • select、poll、epoll之间的区别(搜狗面试)2021-01-18 18:04:47

    摘自:https://www.cnblogs.com/aspirant/p/9166944.html   (1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复

  • Linux:I/O复用——poll、epoll2021-01-17 12:00:59

    文章目录 pollpoll支持的事件类型使用poll实现TCP服务器poll总结 epollepoll的原型epoll实现TCP服务器epoll总结epoll的LT与ET模式EPOLLONESHOT事件 三组I/O复用函数的比较参考文献 poll poll系统调用和select类似,也是在指定时间内轮询一定数量的文件描述符,以测试其中

  • linux事件监听机制epoll2021-01-15 15:06:04

    说明:linux 下的事件监听机制主要有 poll ,select,epoll ,这里主要介绍epoll 机制,以及可以完美配合使用的eventfd epoll : kernel source/linux/fd/eventpoll.c 系统调用:   int epoll_create(int size);       //底层实现调用的是epoll_create1(0) ,size内核实现是没有使

  • leetcode【每日一题】1046. 最后一块石头的重量 java2020-12-30 19:31:06

    考完研我回来了 题干 有一堆石头,每块石头的重量都是正整数。 每一回合,从中选出两块 最重的 石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下: 如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重

  • java的nio 之 select,poll和epoll2020-12-30 13:36:20

    我不生产知识,我只是知识的搬运工。努力通过实践与各位博友交流一些自己的见解。   引文:    由于cpu和磁盘等存储设备的处理速度的差异,巧妙的io设计能够极大的提升工作效率。从硬件设计角度包括 SPOOLING(假脱机)技术(实现独占设备的共享),DMA(通过中断的方式实现内存到磁盘的传

  • IO多路复用技术详解2020-12-24 20:33:53

    IO多路复用:I/O是指网络I/O,多路指多个TCP连接(即socket或者channel),复用指复用一个或几个线程。意思说一个或一组线程处理多个TCP连接。最大优势是减少系统开销小,不必创建过多的进程/线程,也不必维护这些进程/线程。 IO多路复用使用两个系统调用(select/poll/epoll和recvfrom),blo

  • 【译】理解Rust中的Futures(二)2020-12-23 16:32:12

    原文标题:Understanding Futures in Rust -- Part 2 原文链接:https://www.viget.com/articles/understanding-futures-is-rust-part-2/ 公众号: Rust 碎碎念 翻译 by: Praying 背景 如果你还没有看前面的内容,可以在这里[1]查看(译注:已有译文,可在公众号查看)。 在第一部分,我们介绍了

  • 每天一道LeetCode Day13:二叉树的锯齿层序遍历2020-12-22 22:59:51

    题目 给定一个二叉树,返回其节点值的锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如: 给定二叉树 [3,9,20,null,null,15,7], 返回锯齿形层序遍历如下: [ [3], [20,9], [15,7] ] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/proble

  • 2.do_select函数分析2020-12-16 11:33:25

    do_select函数的运行过程 1 先把全部fd扫一遍2 如果发现有可用的fd,跳到53 如果没有,当前进程去睡眠xx秒4 xx秒后自己醒了,或者状态变化的fd唤醒了自己,跳到15 结束循环体,返回 核心过程 poll_initwait():设置poll_wqueues->poll_table的成员变量poll_queue_proc为__pollwait函数;同

  • IO多路复用2020-12-14 16:04:14

    假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。 你会怎么做? 最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机, 从进港,接客,排位,出港,航线监控,直至交接给下一个空港,全程监控。 那么问题就来

  • select、poll、epoll之间的区别2020-12-10 12:02:31

    (1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。 (2)poll==>时间

  • kafka篇二2020-12-08 10:59:44

    kafka篇二 11、讲一讲 kafka 的 ack 的三种机制12、消费者如何不自动提交偏移量,由应用提交?13、消费者故障,出现活锁问题如何解决?14、如何控制消费的位置15、kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?16、kafka 的高可用机制是什么?17、kafka 如何减少数据丢失18

  • Event Loop 是什么?2020-12-06 18:04:53

    Event Loop 是什么? 本文写于 2020 年 12 月 6 日 一个场景 Event Loop 并不是 JavaScript 独有的概念,他是一个计算机的通用概念。 为什么需要 Event Loop 呢?先看一个常见的场景,如果我们同时执行了三种不同的异步事件: setTimeout(foo, 100); fs.readFile('./README.md', bar); serv

  • select,poll,epoll总结2020-12-04 23:33:05

    还在持续学习中,本文是一个阶段性的总结。 目录一、select1.1 select函数1.2 select流程1.3 select问题二、poll三、epoll3.1 epoll 函数3.2 epoll 流程 一、select select的核心是不停的遍历文件描述符,看看是否就绪。一般最多同时支持1024个文件描述符。 1.1 select函数 int sel

  • 【Java面试系列】kafka面试题2020-12-03 09:57:40

    目录 1.kafka 面试题 2.题目解析 1、如何获取 topic 主题的列表 2、生产者和消费者的命令行是什么? 3、consumer 是推还是拉? 4、讲讲 kafka 维护消费状态跟踪的方法 5、讲一下主从同步 6、为什么需要消息系统,mysql 不能满足需求吗? 7、Zookeeper 对于 Kafka 的作用是什么? 9、Kafka

  • Linux select/poll机制原理分析2020-12-02 12:59:32

    转自 linux内核之旅 以下文章来源于LoyenWang ,作者LoyenWang 前言 Read the fucking source code!  --By 鲁迅 A picture is worth a thousand words. --By 高尔基 1. 概述 Linux系统在访问设备的时候,存在以下几种IO模型: Blocking IO Model,阻塞IO模型; Nonblocking I/O Mod

  • DelayedWorkQueue原理2020-11-27 19:32:08

    使用最小堆实现,最近要到达时间的节点放在堆顶,每个节点都会附带到期时间,依次作为堆调整的依据。看poll()的源码就明白延迟队列的秘密了 public RunnableScheduledFuture<?> poll() { final ReentrantLock lock = this.lock; lock.lock();

  • 驱动篇:支持轮询操作的 globalfifo 驱动2020-11-23 10:32:37

    驱动篇:支持轮询操作的 globalfifo 驱动 1.globalfifo 驱动中增加轮询操作 在 globalfifo 的 poll()函数中, 首先将设备结构体中的 r_wait 和 w_wait 等待队列头添加到等待列表,然后通过判断 dev->current_len 是否等于 0 来获得设备的可读状态,通过判断 dev->current_len 是

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有