包含java中pacacity的词条
面试官:bio、nio、aio是什么,他们有什么区别?
BIO、NIO、AIO 的核心区别在于同步/异步、阻塞/非阻塞的组合方式,以及线程模型和应用场景的不同。具体分析如下:BIO(同步阻塞IO)同步阻塞机制:客户端发起请求后,服务端线程会一直阻塞等待读写操作完成(如 Socket.accept()、InputStream.read()),期间无法处理其他任务。
BIO、NIO、AIO的区别主要体现在同步异步与阻塞非阻塞这两个概念上:同步异步:BIO:应用进程在发起IO请求后必须等待IO操作完成才能继续执行后续操作。NIO:虽然仍然是同步操作,但IO请求不会阻塞应用进程,进程可以在IO操作进行的同时执行其他任务。然而,检查IO操作是否完成仍然需要进程主动轮询。
nio bio aio的区别如下:BIO全称是Blocking IO,是JDK4之前的传统IO模型,本身是同步阻塞模式。
Java中,一个capacity方法问题,
1、capacity()返回的是字符串缓冲区的容量 StringBuffer( ); /*分配16个字符的缓冲区*/ StringBuffer( int len ); /*分配len个字符的缓冲区*/ StringBuffer( String s ); /*除了按照s的大小分配空间外,再分配16个 字符的缓冲区*/ 你的StringBuffer是用字符构造的,abc的长度是3另外再分配16个字符,所以一共是19。
2、StringBuilder.ensureCapacity(int minimumCapacity) 是 Java 中用于优化字符串缓冲区性能的关键方法,其核心作用是确保缓冲区容量至少达到指定值,减少扩容次数。
3、当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。 理解集合类 集合类存放于java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
4、插入数据:若缓存满,淘汰访问次数最少(或最久未访问)的数据,再插入新数据。排序逻辑:基于访问次数和时间进行排序,确保热点数据靠前。
5、题目:编写一个工具类,该工具类内包含一个数组属性,可以调用该工具类的add()方法向该工具类中的数组里添加元素,添加的元素可以是任意类型,调用get(下标)方法可以取出某个元素,调用size方法可以返回已添加的元素数目。
在Java中如何使用ByteBuffer和CharBuffer
1、字符编码为字节(CharBuffer → ByteBuffer)使用Charset.encode(CharBuffer)将字符数据编码为字节。
2、Buffer类型ByteBuffer:最常用,处理二进制数据。
3、在Java中,ByteBuffer是java.nio包提供的核心类,用于高效处理二进制数据。
4、Java NIO中的字符集(Charset)是处理文本数据编码与解码的核心组件,尤其在涉及字节缓冲区(ByteBuffer)和字符缓冲区(CharBuffer)的转换时至关重要。
5、Buffer类是Java NIO中用于高效数据操作的抽象基类,其核心功能是作为特定类型数据的容器,支持直接内存操作和批量数据传输。
6、position():指示缓冲区中当前的位置,读写操作会从这个位置开始。capacity():返回缓冲区的总容量(以字节为单位)。Buffer的类型Java提供了多种Buffer类型,根据存储的数据类型进行分类,包括:ByteBuffer:存储字节数据,是最常用的类型,尤其在I/O操作中。CharBuffer:存储字符数据,适用于文本处理。
