
Java基础知识
Java基础知识
Arthur_____
这个作者很懒,什么都没留下…
展开
-
单例模式
文章目录@[toc]单例模式介绍实现方法1、饿汉模式特点说明代码2、懒汉模式,线程不安全特点代码3、懒汉模式,线程安全特点代码4、双重校验锁(DCL,即 double-checked locking)特点代码详细分析5、登记式/静态内部类特点说明代码6、枚举说明代码单例模式单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这原创 2020-05-15 12:28:44 · 714 阅读 · 0 评论 -
double保留x位小数的方法
1、使用printf()double a = 1.123;//注意分隔是逗号!!System.out.printf("%.2f",a); %d 十进制有符号整数%u 十进制无符号整数%f 浮点数%s 字符串%c 单个字符%p 指针的值%e 指数形式的浮点数%x, %X 无符号以十六进制表示的整数%o 无符号以八进制表示的整数%g 把输出的值按照%e或者%f类型中输出长度...原创 2020-04-23 21:18:18 · 608 阅读 · 0 评论 -
Java中锁的分类
1、公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁;非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序(直接上来就抢),有可能后申请的线程比先申请的线程优先获取锁;非公平锁可能会造成优先级反转或者进程饥饿现象;非公平锁的吞吐量更大;进程饥饿(Starvation):指当等待时间给进程推进和响应带来明显影响称为进程饥饿。吞吐量:单位时间内成功地传送数据的数量...原创 2020-04-20 20:12:02 · 375 阅读 · 0 评论 -
堆排序(HeapSort)详解
1、什么是堆?堆是一个数据结构:其每个节点的值,大于等于其左右孩子节点的值,且为一颗完全二叉树。堆(一棵树)可以用数组来表示。2、大顶堆,小顶堆?堆又称为:大顶堆;小顶堆:每个节点的值,小于等于其左右孩子节点的值,的完全二叉树。用法区别:降序排序------使用小顶堆;[6,5,4,3,2,1,0]升序排序------使用大顶堆;[0,1,2,3,4,5,6]3、堆用...原创 2020-04-17 22:29:34 · 1312 阅读 · 0 评论 -
volatile修饰符---内存可见性+禁止重排
~本文小结:volatile是一个能保证变量的内存可见性,且禁止重排的修饰符;volatile通过设立4个内存屏障避免处理器的重排序;volatile可以作为一个锁使用(用于多线程同步);====================================================================================================...原创 2020-04-13 15:46:57 · 230 阅读 · 0 评论 -
重排序与happens-before介绍
~本文小结:重排序能减少CPU流水线处理的中断,提高性能;重排序分为三类:编译器层面,指令层面和内存层面;顺序一致性模型指天然“同步且有原子性”的模型,其执行顺序为代码顺序;JMM保证正确同步的程序符合顺序一致性模型(但可以有影响结果的重排);A happens-before B == A先于B执行,且A的操作对B可见;变量加了volatile修饰后,保证了代码中,按顺序对变量的写h...原创 2020-04-13 15:13:49 · 241 阅读 · 0 评论 -
Java运行时内存区域&Java内存模型(JMM)
介绍Java内存模型的抽象结构以及Java中内存不可见问题出现的原因原创 2020-04-11 21:54:01 · 266 阅读 · 0 评论 -
Java学习之容器(3)---作业
题目如下:实现List和Map数据的转换。具体要求如下:【功能1】:定义方法public void listToMap( ){ }将List中Student元素封装到Map中 1) 使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息并加入List; 2) 遍历List,输出每个Student信息;...原创 2019-03-07 17:26:03 · 397 阅读 · 0 评论 -
Java学习之容器(2)---Iterator和Collections
Iterator迭代器Iterator为容器提供了一种通用的遍历接口。其常用方法有:next(),hasNext(),remove()next():用于获取Iterator对象的值hasNext():检测是否有下一个节点遍历List:for(Iterator<String> iter = l1.iterator();iter.hasNext(); ) { Stri...原创 2019-03-04 10:32:18 · 169 阅读 · 0 评论 -
Java学习之容器(1)---Collection和Map
Java学习之容器(1)泛型GenericsCollection接口List接口Map接口泛型Generics相当于一个参数,在类的定名名称后面加<E>以表示泛型(或者多个<E,V>等)。类的属性原创 2019-03-03 14:59:01 · 255 阅读 · 0 评论