学习
文章平均质量分 54
柯南是死神
苦逼大学生
展开
-
Java中的基本数据类型
数据类型占用空间byte1Bshort2Bint4Blong8Bfloat4Bdouble8Bchar英文1B,中文UTF-8占3B,GBK占2Bboolean单个变量4B,数组1B由于JVM没有boolean赋值的专用字节码指令,boolean f = false使用常数0赋值,单个boolean变量使用int代替,boolean数组会被编码成为byte数组。String为什么是final的? String类和cha...原创 2021-09-09 20:41:16 · 126 阅读 · 0 评论 -
TCP/IP协议族
首先,TCP/IP是一个协议族,是IP、TCP、HTTP等协议的集合。一、OSI七层模型每层的作用假设A给B发送一封电子邮件,为“早上好”在A输入完发送的内容点击发送的时候,进入了应用层协议的处理,该协议会在所要传送数据的前端附加一个首部标签。该首部标明了邮件内容和收件人。B收到A的数据,会分析首部与数据正文,并进行处理。应用层是为应用程序提供服务并规定应用程序中相关的细节我们并不能保证A和B使用的邮件软件完全相同,于是将数据转化为特定的字符编码,如UTF-8,表示层与表示层之间为了识别编码格式原创 2021-08-20 16:48:05 · 182 阅读 · 0 评论 -
计算机网络之面试
一、OSI与TCP/IP各层的结构和功能1. OSI的七层模型图解表示:自上而下的介绍各层功能:应用层: 通过应用进程间的交互来完成特定的网络应用。常见协议:域名系统DNS、HTTP协议、电子邮件SMTP协议等传输层: 负责向俩台主机之间进程的通信提供通用的数据传输服务,主要有以下俩种协议:传输控制协议TCP:面向连接的、可靠的数据传输服务用户数据协议UDP:无连接的、尽最大努力的数据传输服务网络层: 在计算机网络中进行通信的俩个计算机可能会经过多个数据链路,也可能要经过很多通信原创 2021-08-14 11:20:36 · 122 阅读 · 1 评论 -
AQS的学习
1. 是什么 AQS是用来构建锁和同步器的一个框架,我们常用的ReentrantLock,Semaphore等都是基于AQS的。2. 原理 如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态。如果请求的共享资源被占用,那么就需要一套的线程阻塞等待以及被唤醒时锁分配的机制,这个机制时使用队列锁实现的,将暂时获取不到锁的线程添加到队列中。 AQS使用一个int成员变量来表示同步状态,使用CAS操作对其进行修改。3. 共享资源的方式独占模式:只能有一个线原创 2021-08-12 22:10:52 · 113 阅读 · 0 评论 -
ThreadLocal
什么是ThreadLocal 通常情况下,我们创建的变量是可以被任意一个线程访问并且修改的,而ThreadLocal可以让每个线程都有一个自己的专属本地变量。原理public class Thread implements Runnable { ThreadLocal.ThreadLocalMap threadLocals = null; ThreadLocal.ThreadLocalMap inheritableThreadLocals = null;}在Thread类中,有俩原创 2021-08-10 20:24:45 · 111 阅读 · 0 评论 -
ConcurrentHashMap和HashTable
二者都是属于线程安全的HashMap,只是实现方式不同;底层数据结构:JDK7的ConcurrentHashMap底层采用分段的数组+链表实现;JDK8以后采用的数据结构和HashMap(1.8)的数据结构相同。HashTable采用数组加链表实现。实现线程安全的方式(1)在JDK7的时候,ConcurrentHashMap对整个数组桶进行了分割分段,每一把锁之锁定容器中的某一部分数据,对各线程访问不分段的资源的时候获取的是不同的锁,不会存在锁竞争,提高了并发的效率;在JDK8以后,抛弃了分段Seg原创 2021-08-10 17:33:44 · 236 阅读 · 0 评论 -
HashMap、HashTable、HashSet区别
HashMap和HashTable线程安全: HashMap是非线程安全的,HashTable是线程安全的,内部方法使用synchronized修饰,但是如果要保证线程安全推荐使用ConcurrentHashMap效率: HashMap效率高,HashTable基本被淘汰null Key 和 null Value: HashMap允许,只能有一个null Key , HashTable不允许,会抛出空指针异常初始容量大小和扩容大小: (1)HashMap初始大小为16,扩容为原来2倍,HashTa原创 2021-08-10 12:53:23 · 160 阅读 · 0 评论 -
HashMap扩容机制(JDK8)
HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。可以存储null值,但是只有一个key可以为null,有多个值可以为null。 JDK1.8 以后的 HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)时,将链表转化为红黑树,以减少搜索时间。 HashMap 默认的初始化大小为 16。之后每次扩充,容量原创 2021-08-10 11:09:38 · 1368 阅读 · 0 评论 -
ArrayList扩容机制
ArrayList使用默认构造方法会生成一个长度为0的list,在调用add()方法的时候会进行扩容,细说一下扩容机制。首先,先来看ArrayList中的一些参数://默认初始容量大小private static final int DEFAULT_CAPACITY = 10;//空数组private static final Object[] EMPTY_ELEMENTDATA = {};//用于默认大小空实例的共享空数组实例。private static final Object[]原创 2021-08-09 20:18:20 · 131 阅读 · 0 评论 -
Java中的重写和重载
区别:重载是同一个方法对于输入参数的不同所作出的不同处理,比如常见的多个构造器重写是子类继承父类的相同方法,输入的数据一样,但是要做出与别于父类的响应的时候,需要重写父类的方法重载发生在一个类中,方法名必须相同重写发生在运行期间,参数列表、返回类型、方法名必须一样,抛出异常的范围需要小于等于父类,访问修饰符范围需要大于等于父类父类方法为private、final、static,子类无法重写,但是static方法可以再次声明构造方法不能重写...原创 2021-08-09 17:45:28 · 68 阅读 · 0 评论