Java
文章平均质量分 89
来撕特成
这个作者很懒,什么都没留下…
展开
-
Java基础(4)
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者实际参数类型可以预知的情况下进行的。泛型的本质是参数化类型,在不创建新的类型的情况下,通过泛型指定不同的类型来控制形参具体限制的类型。Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。转载 2024-01-22 11:00:50 · 22 阅读 · 0 评论 -
Java基础(2)
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作如图所示:转载 2024-01-21 12:11:52 · 281 阅读 · 0 评论 -
Java基础(3)
计算下标的算法很简单,hash值 和 (length-1)按位与,使用length-1的意义在于,length是2的倍数,所以length-1在二进制来说每位都是1,这样可以保证最大的程度的散列hash值,否则,当有一位是0时,不管hash值对应位是1还是0,按位与后的结果都是0,会造成散列结果的重复。该位置有节点,则遍历该节点以及后续的节点,比较key值,相等则覆盖,没有就新增节点,默认使用链表,相连节点数超过8的时候,在jdk 1.8中会变成红黑树。List 接口实例存储的是有序的,可以重复的元素。转载 2024-01-21 18:26:22 · 23 阅读 · 0 评论 -
Java 基础(1)
一、Java基础1、java基本数据类型和引用类型1.基本数据类型:整型:byte,short,int,long浮点型:float,double字符型:char布尔型:boolean其中:byte占一个字节short、char占两个字节int、float占四个字节double、long占8个字节boolean只有true和false。类、 接口、 数组、 枚举、 注解。转载 2024-01-19 16:32:57 · 21 阅读 · 0 评论 -
浅谈Java 虚拟机(1)
我们知道,一个JVM实例的行为不光是它自己的事,还涉及到它的子系统、存储区域、数据类型和指令这些部分,它们描述了JVM的一个抽象的内部体系结构,其目的不光规定实现JVM时它内部的体系结构,更重要的是提供了一种方式,用于严格定义实现时的外部行为。因为Java代码是结构化的,因此总可以把某个方法的所有的异常处理器都按序排列到一个表中,对任意可能的程序计数器的值,都可以用线性的顺序找到合适的异常处理块,以处理在该程序计数器值下发生的异常情况。当线程执行Java方法的时候,它包含该线程正在被执行的指令的地址。原创 2023-12-21 09:28:43 · 828 阅读 · 0 评论 -
Java线程安全总结(2)
难道栈不是工作内存吗?但是堆,并不是一个简单的概念,堆区又划分了很多区域,为什么堆划分成这么多区域,这是为了JVM的内存垃圾收集,似乎越扯越远了,扯到垃圾收集了,现在的jvm的gc都是按代收集,堆区大致被分为三大块:新生代,旧生代,持久代(虚拟的);在这里我说的是jvm的内存模型,是动态的,面向多线程并发的,沿袭JSL的“working memory”的说法,只是不想牵扯到太多底层细节,因为 《线程安全总结》这篇文章意在说明怎样从语法层面去理解java的线程同步,知道各个关键字的使用场 景。转载 2023-12-15 09:35:41 · 30 阅读 · 0 评论 -
Java线程安全总结(1)
3 此时,来了一个B线程对象,调用plate.getEgg方法,eggs.size()不为0,顺利的拿到了一个鸡蛋,还执行了notify()方法,唤 醒锁的阻塞队列的线程,此时阻塞队列有一个A线程对象,唤醒后,它进入到就绪队列,就绪队列也就它一个,因此马上得到锁,开始往盘子里放鸡蛋,此时盘子是 空的,因此放鸡蛋成功。同样,x有可能为11,如果x是一个银行账户,线程a存款,线程b扣款,显然这样是有严重问题的,要解决这个问题,必须保证线程a和线程b是有序执行的, 并且每个线程执行的加1或减1是一个原子操作。转载 2023-12-13 10:46:23 · 44 阅读 · 0 评论