首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏刘晓杰

    5(标准IO)

    *restrict buf, int mode, size_t size); Returns: 0 if OK, nonzero on error 2 打开流 三个函数可以打开一个标准IO 3 读和写流 一旦打开了流,则有三种不同类型的非格式化IO进行选择,对其进行读写操作 (1)每次一个字符的IO。 一次读或者写一个字符,如果流是带缓冲的,则标准IO会处理所有缓冲 (2)每次一行IO。就要使用fgets和fputs,每行都以一个换行符终止。 (3)直接IO。 fread和fwrite支持这种类型的IO。 fp); int fputc(int c, FILE *fp); int putchar(int c); All three return: c if OK, EOF on error 5

    87940发布于 2019-02-21
  • 来自专栏梦在深巷

    IO的内核原理与5IO模型

    通过系统调用会返回一个文件描述符、那么剩下对socket的操作就会转化为对这个描述符的操作、不能不说这又是一种分层和抽象的思想、 这里的I/O指缓冲I/O; 根据UNIX网络编程对I/O模型的分类,UNIX提供了5种 这里之所以单独拿出来是因为如果还没有清除IO概念很容易混淆、所以理解IO模型之前一定要理解IO概念、如果看完前面两个问题、相信也能理解信号驱动IO与异步IO的区别在于启用异步IO意味着通知内核启动某个IO ,可以利用多线程或者IO多路复用技术进行处理。 I/O多路复用优势 与传统的多线程/多进程模型相比,IO多路复用的最大优势是系统开销小,系统不需要创建新的额外进程或者线程,也不需要维护这些进程和线程的运行,降低了系统的维护工作量,节省了系统资源,IO 缓存I/O 缓存 IO 又被称作标准 IO,大多数文件系统的默认 IO 操作都是缓存 IO

    2.5K54发布于 2020-04-21
  • 来自专栏高性能服务器开发

    redis 6.0 多线程网络 IO 源码解析

    redis 6.0 中默认是不启用多线程网络 IO,可以通过修改 redis.conf 的相关配置项打开,打开方法如下所示: # So for instance if you have a four cores 3" 0x00007ffff74bf4ed in __lll_lock_wait () from /usr/lib64/libpthread.so.0 (gdb) 与未开启多线程网络 IO 使用 thread 5 命令切换到 io_thd_1 线程,使用 bt 命令查看这个线程的调用堆栈: (gdb) bt #0 0x00007ffff74bf4ed in __lll_lock_wait in start_thread () from /usr/lib64/libpthread.so.0 #5 0x00007ffff71e202d in clone () from /usr/lib64 ,第 5 个分配给 1 号线程,第 6 个分配给 2 号线程......以此类推。

    1.6K20发布于 2020-07-02
  • 来自专栏悠扬前奏的博客

    Groovy-5.文件IO

    1.概述 Groovy提供的文件I/O方法有: 读取文件 写入文件 便利文件树 读取和写入数据对象到文件 涉及到的标准Java类有: java.io.File java.io.InputStream java.io.OutputStream java.io.Reader java.io.Writer 2.文件读取 以下例子将文本文件的所有行依次读取并打印 import java.io.File class Example { static File file = new File("E:/Example.txt") println file.text } } 3.写入文件 import java.io.File ("E:/Example.txt") println "The file ${file.absolutePath} has ${file.length()} bytes" } } 5.

    45720发布于 2019-06-02
  • 来自专栏爱生活爱编程

    结合Thrift示例详解网络服务模型(多线程阻塞IO多线程非阻塞IO、多Reactor模型)

    文章目录 组件介绍 网络服务模型 单线程阻塞IO 多线程阻塞IO 单线程非阻塞IO 多线程非阻塞IO 多Reactor模型 组件介绍 Thrift是一个轻量级、跨语言的RPC框架,主要用于各个服务之间的 网络服务模型 Thrift提供的网络服务模型:单线程、多线程、事件驱动,从另一个角度划分为:阻塞服务模型、非阻塞服务模型。 单线程阻塞IO Thrift的TSimpleServer就是单线程阻塞IO多线程阻塞IO Thrift的TThreadPoolServer模式采用阻塞socket方式工作,主线程负责阻塞式监听是否有新socket到来,具体的业务处理交由一个线程池来处理。 多线程非阻塞IO 鉴于TNonblockingServer的缺点,Thrift的THsHaServer继承于TNonblockingServer,引入了线程池提高了任务处理的并发能力。

    1.3K20编辑于 2022-06-28
  • 来自专栏微信公众号:Java团长

    理解一下5IO模型、阻塞IO和非阻塞IO、同步IO和异步IO

    5IO模型、阻塞IO和非阻塞IO、同步IO和异步IO 看了一些文章,发现有很多不同的理解,可能是因为大家入切的角度、环境不一样。所以,我们先说明基本的IO操作及环境。 IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。 2、5IO模型 《UNIX网络编程》说得很清楚,5IO模型分别是阻塞IO模型、非阻塞IO模型、IO复用模型、信号驱动的IO模型、异步IO模型;前4种为同步IO操作,只有异步IO模型是异步IO操作。 特点:回调机制,实现、开发应用难度大; 2-5、异步IO模型 ? 当进程发起一个IO操作,进程返回(不阻塞),但也不能返回果结;内核把整个IO处理完后,会通知进程结果。 3-1、阻塞IO调用和非阻塞IO调用、阻塞IO模型和非阻塞IO模型 注意这里的阻塞IO调用和非阻塞IO调用不是指阻塞IO模型和非阻塞IO模型: 阻塞IO调用 :在用户进程(线程)中调用执行的时候,进程会等待该

    38.9K71发布于 2020-08-24
  • IO 实现:多线程,信号驱动的代码实现

    多线程 I/O多线程 I/O 就是一个主线程专门负责接受,每接受到一个连接后,然后创建一个线程,将后续接受数据发送数据任务交给创建的线程。首先就是普通的创建 socket ,然后接受连接过程。 struct sockaddr*)&addr, sizeof(struct sockaddr_in)) < 0){ perror("bind"); return 2;}if(listen(sockfd, 5) < 0){perror("listen");return 3;}上述代码较为简单,基本涉及网络都会写到,上述监听了队列为 5 ,一个简单的作用。

    30400编辑于 2024-05-14
  • 来自专栏小鹏的专栏

    tf API 研读5:Data IO

    数据IO {Data IO (Python functions)} 一个TFRecords 文件为一个字符串序列。 数据IO {Data IO (Python functions)} 操作 描述 class tf.python_io.TFRecordWriter 一个用于将记录(records)写入TFRecords 文件的类 tf.python_io.TFRecordWriter. __init__(path, options=None) 打开文件路径,并创建一个TFRecordWriter以供写入 tf.python_io.TFRecordWriter.write(record) 将一个字符串records写入文件中 tf.python_io.TFRecordWriter.close() 关闭文件 tf.python_io.tf_record_iterator(path, options

    60360发布于 2018-01-09
  • 系列讲解网络 IO , 从多进程多线程到异步 IO 和多路复用

    所以目前打算从整个 I/O 的实现阶段,从最开始多线程多进程的网络 I/O 模型, 到异步 I/O 和多路复用,当然还有线程池和 reactor 反应堆模型都进行,争取把网络 I/O 的大概一个框架讲清楚 上述一个监听线程处理所有请求,自然在速度会偏慢,而我们能想到最简单的改进方法,就是使用多进程或者多线程,一个程序负责监听和接受,但是每次连接后创建一个新的线程或者进程负责后续的对接。

    67410编辑于 2024-05-13
  • 来自专栏黑泽君的专栏

    java多线程、集合和IO面试题_02

    java多线程、集合和IO面试题_02 ============================================================================= 逻辑思考题 ---------------------------------------------------------------------------- 2:如果你有无穷多的水,一个3公升的提捅,一个5公升的提捅 5-3+5-3 3+3+3-5 ----------------------------------------------------------------------------- 3:有 心里有个底线6000,开口7000) ============================================================================= 面试题: 多线程 : 1:多线程有几种实现方法,都是什么?

    51610发布于 2018-10-11
  • 来自专栏码客

    Python语法-多进程、多线程、协程(异步IO)

    怎么选择 对于其他语言来说,多线程是能同时利用多CPU(核)的,所以是适用CPU密集型计算的,但是Python由于GIL的限制,只能使用IO密集型计算。 所以对于Python来说: 对于IO密集型来说能用多协程就用多协程,没有库支持才用多线程。 对于CPU密集型就只能用多进程了。 /协程对比 异步 IO(asyncio)、多进程(multiprocessing)、多线程(multithreading) IO 密集型应用CPU等待IO时间远大于CPU 自身运行时间,太浪费; 常见的 IO 密集型业务包括:浏览器交互、磁盘请求、网络爬虫、数据库请求等 Python 世界对于 IO 密集型场景的并发提升有 3 种方法:多进程、多线程、多协程; 理论上讲asyncio是性能最高的,原因如下 我构建了如下测试场景: 请求10此,并sleep 1s模拟业务查询 方法 1;顺序串行执行 方法 2:多进程 方法 3:多线程 方法 4:asyncio 方法 5:asyncio+uvloop 最后的

    5.1K42发布于 2021-11-29
  • 来自专栏测试基础

    【Java多线程-5】 CompletableFuture详解

    CompletableFuture详解 Future 是Java 5添加的类,用来描述一个异步计算的结果。 return number; }).thenAccept(number -> System.out.println("第二阶段:" + number * 5) -> System.out.println("thenRun 执行")); System.out.println("最终结果:" + future.get()); } 5 @Override public Integer get() { int number = new Random().nextInt(5) CompletableFuture.supplyAsync(() -> { try { TimeUnit.SECONDS.sleep(random.nextInt(5)

    4.2K50发布于 2020-09-16
  • 来自专栏我们一无所有,我们巍然矗立

    h5-worker多线程js

    h5-worker多线程js worker阐述 worker阐述 在我们的印象当中,js都是单线程的,或者更多的是类似ajax这种异步加载的伪多线程(这里的伪多线程指的ajax发送请求,采用回调的方法 ,回调成功以后还是在主线程的队列中去执行回调) h5提供的worker构造器提供的是另外一个线程,也就是另外的一个队列,真正的达到多线程的情况。

    1.6K40发布于 2020-09-17
  • 来自专栏电子技术研习社

    Linux笔记(5)| 文件IO操作(续)

    今天继续说一下文件IO操作。 5、fcntl函数介绍 int fcntl(int fd, int cmd, ... /* arg */ ); fcntl的常用cmd F_DUPFD这个cmd的作用是复制文件描述符(作用类似于dup 6、标准IO库介绍 标准IO和文件IO有什么区别 (1)看起来使用时都是函数,但是:标准IO是C库函数,而文件IO是linux系统的API (2)C语言库函数是由API封装而来的。 譬如IO,文件IO是不带缓存的,而标准IO是带缓存的,因此标准IO比文件IO性能要更高。 主要参考:朱老师物联网大讲堂

    1.3K40发布于 2020-07-10
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    Java多线程详解5【面试+工作】

    Java多线程详解【面试+工作】 Java线程:新特征-信号量 Java的信号量实际上是一个功能完毕的计数器,对控制一定资源的消费与回收有着很重要的意义,信号量常常用于多线程的代码中,并能监控有多少数目的线程等待获取资源 有了这样的功能,就为多线程的排队等候的模型实现开辟了便捷通道,非常有用。 这里没有用多线程来演示,没有这个必要。 Java线程:新特征-条件变量 条件变量是Java5线程中很重要的一个概念,顾名思义,条件变量就是表示条件的一种变量。 下面以一个银行存取款的模拟程序为例来揭盖Java多线程条件变量的神秘面纱: 有一个账户,多个用户(线程)在同时操作这个账户,有的存款有的取款,存款随便存,取款有限制,不能透支,任何试图透支的操作都将等待里面有足够存款才执行操作

    1K100发布于 2018-03-15
  • 来自专栏逍遥剑客的游戏开发

    Nebula3学习笔记(5): IO系统

    IO子系统 Nebula3的IO系统相对于Nebula1和2是一个巨大的进步, 新系统的主要设计目标有: 使用更标准的机制, 如用URI来定位资源, 用MIME类型来区分数据格式 一个灵活的流模型, 所以在保证可移植性的前提下不损失性能, 必须使用特定平台的IO函数 IO子系统的一些主要概念: 一个中枢的IO::Console 对象连接控制台处理器(console handler)来进行文本的输入和输出 例如你可以把IO::XmlReader连接到IO::FileStream来从文件系统读取XML格式的数据, 或者连接到IO::HttpStream来从HTTP连接读取XML格式的数据. 让我们来看看有哪些重要的类: IO::FileStream: 提供了访问主机文件系统的功能 IO::MemoryStream: 一个具有流接口的动态内存缓冲 IO::HttpStream: 提供了一个流接口来访问 CreateStream("http://www.radonlabs.de/index.html");  4:     Ptr<XmlReader> xmlReader = XmlReader::Create();  5:

    86140发布于 2018-05-23
  • 来自专栏黯羽轻扬

    铁定不纯的IO_Haskell笔记5

    Show类参数,返回一个IO (),称之为I/O Action,也是一种类型,如下: > :k IO IO :: * -> * > :k IO () IO () :: * > :i IO newtype (IO a) -- Defined in ‘GHC.Base’ 从类型上看,IO与Maybe :: * -> *类似,都是接受一个具体类型参数,返回具体类型(比如IO ()) P.S.其中,newtype 在I/O List的场景(把m换成IO,t换成[]),参数的类型约束是[IO a],返回值的类型约束是IO [a],所以相当于: sequence' [] = do return [] sequence > IO () putChar :: Char -> IO () putStr :: String -> IO () -- 输入 getChar :: IO Char getLine :: IO String :: Handle -> IO String hClose :: Handle -> IO () openFile接受一个FilePath和IOMode参数,返回IO Handle,拿着这个Handle

    1.9K30发布于 2019-06-12
  • 来自专栏飞鸟的专栏

    十、python学习笔记-线程-多线程演示(IO密集型)

    # 演示多线程,说明多线程IO密集型操作有明显优化 """ 1、foo1 循环2次,每次sleep时间2秒,执行完是4秒,foo2 循环5次,每次sleep时间1秒,执行完是5秒,并且是交替执行 2、 如果是单线程需要9秒以上,多线程需要5秒以上,并且是顺序执行 3、只有循环都结束后,主线程才会打印‘主线程结束’,说明join会阻塞主线程 """ import threading import time

    39611编辑于 2022-02-03
  • 来自专栏微信公众号【Java技术江湖】

    Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO

    当活跃连接数在几十几百的时候当然是可以这样做的,但如果活跃连接数是几万几十万的时候,这么多线程明显就不行了。每个线程都需要一部分内存,内存会被迅速消耗,同时,线程切换的开销非常大。 非阻塞 IO 说完了阻塞模式的使用及其缺点以后,我们这里就可以介绍非阻塞 IO 了。 NIO.2 异步 IO More New IO,或称 NIO.2,随 JDK 1.7 发布,包括了引入异步 IO 接口和 Paths 等文件访问接口。 首先,我们就来关注异步的文件 IO,前面我们说了,文件 IO 在所有的操作系统中都不支持非阻塞模式,但是我们可以对文件 IO 采用异步的方式来提高性能。 到这里,异步 IO 就算介绍完成了。 小结 我想,本文应该是说清楚了非阻塞 IO 和异步 IO 了,对于异步 IO,由于网上的资料比较少,所以不免篇幅多了些。

    66610发布于 2019-11-21
  • 来自专栏一个会写诗的程序员的博客

    第9章 文件IO操作、正则表达式与多线程第9章 文件IO操作、正则表达式与多线程

    第9章 文件IO操作、正则表达式与多线程 我们在《第6章 扩展函数与属性》中已经介绍过Kotlin中的类扩展的特性。 本章我们将要介绍的文件IO操作、正则表达式与多线程等相关内容都是Kotlin通过扩展Java已有的类来实现的。首先,我们来介绍文件的读写。 放心,Kotlin 既然是站在 Java 的肩膀上,当然少不了对多线程编程的支持——Kotlin通过封装 Java 中的线程类,简化了我们的编码。 下面我们简单介绍一下使用Kotlin 进行多线程编程的相关内容。 本章小结 Kotlin 是一门工程实践性很强的语言,从本章介绍的文件IO、正则表达式以及多线程等内容中,我们可以领会到 Kotlin 的基本原则:充分使用已有的 Java 生态库,在此基础之上进行更加简单实用的扩展

    2.2K30发布于 2018-08-17
领券