- 博客(11)
- 收藏
- 关注
原创 I/O,NIO,BIO
I/OI/O即输入/输出。有哪些常见的IO模型?UNIX系统下,IO模型一共有5种:同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。java中3种常见IO模型BIOBIO属于同步阻塞IO模型。同步阻塞IO模型中,应用程序发起read调用后,直到内核把数据拷贝到用户空间。在客户端连接数量不高的情况下,是没问题的。但是,当面对十万甚至百万级连接的时候,传统的BIO模型是无能为力的。因此,我们需要一种更高效的I/O处理模型来应对更高的并发量。NIOjava中的N
2021-09-07 09:07:11 158
原创 HashMap源码+底层数据结构分析
HashMap简介HashMap主要用来存放键值对,它基于哈希表的Map接口实现,是常用的java集合之一,是非线程安全的。HashMap可以存储null的Key和value,但null作为键只能有一个,null作为值可以有多个。JDK1.8之前HashMap由数组+链表组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。JDK1.8以后的HashMap在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)(将链表转换为红黑树前会判断,如果当前数组
2021-09-04 17:15:02 140
原创 ArrayList的底层原理
1.ArrayList简介ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList 实例的容量。这可以减少递增式再分配的数量。.ArrayList继承于 AbstractList ,实现了 List, RandomAccess, Cloneable, java.io.Serializable 这些接口。public class ArrayList extends A
2021-09-04 16:07:40 2761
原创 2021-09-02
菱形添加链接描述java代码完整的输入输出代码如下:import java.util.Scanner;public class LingXing {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int H=sc.nextInt();int W=sc.nextInt();for (int i=0;i<(H+1)/2;i++){for (int j=0;j<W/2-i;j++){
2021-09-02 21:12:29 76
原创 2021-09-01
小米第一道题给定两个有序整数数组A和B,将B合并到A中,使得A成为一个有序数组。说明:1.初始化A和B的元素数量分别为m和n。2.A有足够的空间(空间大小或等于m+n)来保存B中的元素3.默认升序输入描述:数组A,以及数组A元素数量数组B,以及数组B元素数量A=[1,6,7,0,0,0], m=3B=[2,4,6], n=3输出描述合并后的数组AA=[1,2,4,6,6,7];样例输入:m=2,n=21,32,4样例输出:1 2 3 4import java.util
2021-09-01 21:46:35 178
原创 2021-08-30
360 笔试第一题题目描述如下:又到了一学期一次的大学生期末考试。但很多人期末考试的卷面成绩是不能及格的,需要较高的平时成绩l来拖上去。平时成绩与期末考试的占比已经确定,假设平时成绩占比为p,期末考试占比为q,平时分为a,期末考试分数为b,则总成绩为(pa+qb)/100.(平时分与期末成绩都是整数,但总成绩可以是小数)饶老师心肠特别好,他希望自己的学生及格率尽可能的高。但他也坚持期末考试分数更高的学生平时成绩也一定要更高。饶老师想知道在这种情况下,他们班的最大及格人数是多少(及格是指总成绩的不低于6
2021-08-30 09:26:22 677
原创 2021-08-29
##Redis的数据结构及使用场景Redis的数据结构有:字符串:可以用来做最简单否认数据缓存,可以缓存某个简单的字符串,也可以缓存某个json格式的字符串,Redis分布式锁的实现就利用了这种数据结构,还包括可以实现计数器、Session共享、分布式ID哈希表:可以用来存储一些key-value对,更适合用来存储对象列表:Redis的列表通过命令的组合,既可以当做栈,也可以当做队列来使用,可以用来缓存类似微信公众号、微博等消息流数据。集合:和列表类似,也可以存储多个元素,但是不能重复,集合可以
2021-08-29 19:32:12 84
原创 2021-08-23
1.hashmap为什么会引入红黑树?在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。在jdk1.8版本后,java对HashMap做了改进,在链表长度大于8的时候,将后面的数据存在红黑树中,以加快检索速度。
2021-08-28 10:18:46 104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人