Java IO 基础知识总结

# IO 流简介IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。Java IO 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。OutputStream/Writer...阅读全文

JavaGuide(Java面试 + 学习指南) 2023-05-18 17:18 JavaGuide(Java面 等

源码分析之byte & 0xFF

在阅读java源代码时会经常发些代码里面会出现诸如byte & 0xFF之类的代码,之前没深究,感觉是多此一举的操作。 后经过仔细研究发现里面涉及底层数据存储基本原则正数存储的二进制原码,负数存储的是二进制的补码。 在netty源码中,会使用Bytebuf来接收网络数据。如明确知道是一个字节无符号的数字,会调用ByteBuf.readUnsignedByte方法获取该字节的内容 public short readUnsignedByte() { return (short) (readByte(...阅读全文

掘金 2020-04-10 00:00 掘金

Kryo 序列化与反序列化一些问题_kryo序列化反序列化_gaording的博客

公司其他组有个公共的maven依赖包中的序列化与反序列化采用了kryo,所以我在新代码中也测试了下kryo,测试的时候有几个问题记录如下:   1.kryo反序列化时是通过反射默认调用类的无参构造函数,如果类或者类的对象属性没有无参构造构造函数,则会抛出反序列化失败的异常,解决方法可以写一个继承kryo类的子类,重新实现通过反射去获取实例的方法,参考博客:https://vyloy.iteye.com/blog/1483029 2.kryo在序列化和反序列化ArrayList和HashMap时需...阅读全文

CSDN博客 2023-03-21 16:34 CSDN博客

让kryo支持反序列化没有无参构造方法的类 - 翁志艺的博客

阅读更多 动态得到类的实例,我们通常通过反射来得到。但有时候,类缺少默认构造方法,我们又不想传参来实例化,这时候怎么办呢? 我们还可以通过sun.reflect.ReflectionFactory来完成,例子如下: import java.lang.reflect.Constructor; import java.util.concurrent.ConcurrentHashMap; import sun.reflect.ReflectionFactory; import com.esoteric...阅读全文

ITeye博客 2012-04-28 15:56 ITeye博客

共铸国云 智领未来 | 化云为雨 泽被万物

互联网基础资源作为互联网的基石和枢纽,是新一轮信息技术革命的重要根基。随着我国互联网在应用模式、技术水平、行业规模上的发展,网络基础资源在应用支持、安全保障等方面的作用愈发突出。网络强国大步向前的背景下,如何审视互联网基础资源的数字化治理成效,成为全面透视网络强国建设成就与经验的重要“窗口”。今天我们一起走进中国互联网络信息中心,看互联网基础资源领域的“国家队”如何“化云为雨,泽被万物”。保障关键信息基础设施安全的“国家队”中国互联网络信息中心(CNNIC)作为中国信息社会重要的基础设施建设者、...阅读全文

java技术圈 2023-05-17 16:04:58 Tianyiyun

天翼云“息壤”荣膺第六届数字中国建设峰会“十大硬核科技”称号

近日,在第六届数字中国建设成果展览会最佳成果遴选颁奖仪式上,天翼云算力分发网络平台“息壤”荣获第六届数字中国建设峰会“十大硬核科技” 称号;同时,在第三届国有企业数字化转型论坛上,“息壤”入选国务院国资委发布的“典型数字技术成果”。​“息壤”是天翼云自主研发的基于云原生和跨域大规模调度技术的平台,突破了算力度量、算力感知、算网融合多项技术,支持通用算力、超算、智算等异构算力的统一接入、统一封装、统一调度;支持多方算力接入、交易和结算,基于区块链技术,交易数据全程可溯源,实现数据安全,交易安全,平...阅读全文

java技术圈 2023-05-17 15:53:07 Tianyiyun

[从零单排HBase 07]如何正确管理HBase的连接,从原理到实战

本文将介绍HBase的客户端连接实现,并说明如何正确管理HBase的连接。最近在搭建一个HBase的可视化管理平台,搭建完成后发现不管什么查询都很慢,甚至于使用api去listTable都要好几秒。经过一番排查发现,是每次请求的时候,都去临时创建了一个connection,而创建connection非常耗时导致整体的rt上升。因此,就深入了解了下如何正确管理HBase的connection,同时,也在优化过程中有些小细节的总结。本文基于hbase 2.0.0版本的源码,github上3.0版本的...阅读全文

掘金 2020-04-19 14:33 掘金

HBase如何实现write写入优化_云数据库HBase版

HBase基于LSM模式,写是写HLOG及Memory的,也就是基本没有随机的IO,所以在写链路上性能高效还比较平稳。很多时候,写都是用可靠性来换取性能。 批量写 也是为了减少rpc的次数HTable.put(List<Put>) Auto Flush autoflush=false可以提升几倍的写性能,但是还是要注意,直到数据超过2 M(由hbase.client.write.buffer决定)或用户执行了hbase.flushcommits()时才向regionserver提交请求。需要注意...阅读全文

阿里云帮助中心 2023-05-16 16:11 阿里云帮助中心

NUMA架构介绍及优缺点分析

本文分享自天翼云开发者社区《NUMA架构介绍及优缺点分析》,作者:郁****航什么是NUMA架构1、概念NUMA(Non-Uniform Memory Access,非统一内存访问)架构是一种针对多处理器系统的内存组织方式。在这种架构中,处理器被分配到不同的节点,每个节点拥有自己的本地内存。处理器可以访问本地内存和其他节点的内存,但访问本地内存的速度要快于访问其他节点的内存。 2、设计原理NUMA架构的设计原理主要是为了解决多处理器系统中的内存访问瓶颈问题。随着处理器数量的增加,内存带宽需求也会...阅读全文

java技术圈 2023-05-16 10:43:28 Tianyiyun

QUIC协议在天翼云CDN全站加速产品中的应用

本文分享自天翼云开发者社区《QUIC协议在天翼云CDN全站加速产品中的应用》,作者:郭****迎1、什么是QUIC协议QUIC全称:Quick UDP Internet Connections,是一种实验性传输层网络协议,提供与TLS/SSL相当的安全性,同时具有更低的连接和传输延迟。QUIC目前的主要应用于http协议,基于QUIC的HTTP/3协议(RFC9114),除了拥有HTTP/2的各项优点,同时由于QUIC的特性,在弱网环境下拥有更强大的性能优势。QUIC由Google自研,2012...阅读全文

java技术圈 2023-05-16 10:37:13 Tianyiyun

IPv6 无状态地址如何自动配置?

本文分享自天翼云开发者社区《IPv6 无状态地址如何自动配置?》,作者:SD万IPv6无状态地址自动配置(SLAAC)是IPv6网络中的一种自动地址配置方法。它是一种简单、高效、节省带宽和资源的方法,允许设备在网络上自动获取IPv6地址。本文将介绍IPv6无状态地址自动配置的原理、过程、优点以及如何进行配置。一、IPv6无状态地址自动配置原理IPv6无状态地址自动配置依靠设备本身的MAC地址以及网络中的路由器RA(Router Advertisement)来完成地址的自动分配。它不需要专门的DH...阅读全文

java技术圈 2023-05-16 10:32:46 Tianyiyun

Lucene-03

基本概念 在深入解读Lucene之前,先了解下Lucene的几个基本概念,以及这几个概念背后隐藏的一些东西。 Index(索引) 类似数据库的表的概念,但是与传统表的概念会有很大的不同。传统关系型数据库或者NoSQL数据库的表,在创建时至少要定义表的Scheme,定义表的主键或列等,会有一些明确定义的约束。 而Lucene的Index,则完全没有约束。 Lucene的Index可以理解为一个文档收纳箱,你可以往内部塞入新的文档,或者从里面拿出文档,但如果你要修改里面的某个文档,则必须先拿出来修改...阅读全文

基本组件概念介绍 | Echo Blog 2023-05-15 18:52 基本组件概念介绍 | Echo 等

es里的document的"_id"和org.apache.lucene.search.ScoreDoc.doc是什么关系

hapjin 赞同来自: liuliuliu org.apache.lucene.search.ScoreDoc.doc 应该是:Apache Lucene - Index File Formats 提到的:Document Numbers 文档 index 到Lucene中时,会生成 segment。document nubmer从0开始,每索引一篇文档到segment里面,document nubmer加1.segment内document number是唯一的。 Internally, L...阅读全文

Elastic 中文社区 2020-07-22 00:00 Elastic 中文社区

既然操作系统层已经提供了page cache的功能,为什么还要在应用层加缓存?

简单说,OS提供了一个通用的选择,没办法针对应用做个性化定制。kafka基本是顺序读写,这点是OS缓存可以很好的处理的情况;但是对于更多应用层系统来说,存在数据热点分布不均的情况,这些OS就不能很好的处理了。例如MySQL的innoDB缓存,如果采用OS的缓存策略,来一次全表扫描那么就可以让InnoDB辛辛苦苦热起来的数据冷了。但是InnoDB自己维护缓存情况下,就可以处理得很好,例如MySQL的InnoDB会对缓冲数据拆分为young以及old数据;会在整个缓存空间中腾出3/8的数据来用缓存这...阅读全文

知乎 2015-04-01 14:12 知乎

java使用nio读写文件_使用nio读取文件_小码农叔叔的博客

IO原理 最近在研究 JAVA NIO 的相关知识,学习NIO,就不能提到IO的原理和事项,必经NIO是基于IO进化而来 IO涉及到的底层的概念大致如下: 缓冲区操作。2) 内核空间与用户空间。3) 虚拟内存。4) 分页技术 一,虚拟存储器 虚拟存储器是硬件异常(缺页异常)、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。 虚拟存储器的三大能力: ①将主存看成是一个存储在磁盘上的地址空间的高速缓存。 ②为每个进程提供了一个一致的地址空间。 ③...阅读全文

CSDN博客 2019-11-16 16:24 CSDN博客

7-文件IO

1. 阻塞 IO通常来说,从普通文件读数据,无论你是采用 fscanf,fgets 也好,read 也好,一定会在有限的时间内返回。但是如果你从设备,比如终端(标准输入设备)读数据,只要没有遇到换行符(’\n’),read 一定会“堵”在那而不返回。还有比如从网络读数据,如果网络一直没有数据到来,read 函数也会一直堵在那而不返回。read 的这种行为,称之为 block,一旦发生 block,本进程将会被操作系统投入睡眠,直到等待的事件发生了(比如有数据到来),进程才会被唤醒。系统调用 wr...阅读全文

阻塞与非阻塞IO_51CTO博客_阻塞io和非阻塞io区别 2022-08-26 12:04 阻塞与非阻塞IO_51CTO博 等

关于Linux中的mmap和page cache的问题?

功能描述:mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。munmap执行相反的操作,删除特定地址区域的对象映射。基 于文件的映射,在mmap和munmap执行过程的任何时刻,被映射文件的st_atime可能被更新。如果st_atime字段在前述的情况下没有得到 更新,首次对映射区的第一个页索引时会更新该字段的值。用PROT_WRITE 和 MAP_SHARED标志建立起来的文件映射,其st_ctime和 st...阅读全文

换个数据结构,IntObjectHashMap 内存优化 IT 精品课

​当时其实我是被他的这个图片给吸引到了(里面的 12 qps 应该是 12k qps): ​ 他介绍了两个核心系统在经过一个“数据压缩”的操作之后,分别节约了 204C 和 2160C 的服务器资源。共计就是 2364C 的服务器资源。如果按照一般标配的 4C8G 服务器,好家伙,这就是节约了 591 台机器啊,你想想一年就节约了多大一笔开销。 ​ 视频中介绍了几种数据压缩的方案,其中方案之一就是用了高性能集合: ​ 因为他们的系统设计中大量用到“本地缓存”,而本地缓存大多就是使用 HashMa...阅读全文

IT 精品课 2022-04-06 02:44 IT 精品课

浅析进程分配内存的两种方式——brk()和mmap()

如何查看进程发生缺页中断的次数?用ps -o majflt,minflt -C program命令查看。majflt代表major fault,中文名-叫大错误,minflt代表minor fault,中文名叫小错误。这两个数值表示一个进程自启动以来所发生的缺页中断的次数。发成缺页中断后,执行了那些操作?当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4、建立映...阅读全文