Fork me on GitHub
Wakaka

路漫漫其修远兮,吾将上下而求索


  • 首页

  • 关于

  • 标签

  • 归档

Java集合类---List之Stack

发表于 2018-04-21

Stack简介

1
2
public
class Stack<E> extends Vector<E>
  1. Stack 先进后出
  2. Stack 数组实现
  3. 继承自 Vector ,所以与 Vector 类似
阅读全文 »

Java集合类---List之Vector

发表于 2018-04-21

Vector简介

1
2
3
public class Vector<E>
extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
  1. Vector 顶层实现数组,但是容量可以根据需要增长或者减少
  2. Vector 同步(synchronized修饰),线程安全,多线程可以安全使用
  3. Vector 实现 List,所以可以添加、删除、修改和遍历等
  4. Vector 实现 RandomAccess,可以根据索引快速获取元素
  5. Vector 实现 Cloneable,可以被克隆
  6. Vector 实现 Serializable,可以序列化和反序列化
阅读全文 »

Java集合类---List之LinkedList

发表于 2018-04-21

LinkedList简介

1
2
3
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
  • LinkedList基于链表实现,还是双向链表
  • LinkedList可以当做栈、队列和双向队列
  • LinkedList线程不安全
阅读全文 »

Java集合类--ArrayList

发表于 2018-04-21

ArrayList简介

  1. ArrayList基于数组实现,是一个动态数组队列,容量可以自动增加
  2. ArrayList继承AbstractList,实现RandomAccess和Serializable接口

    1
    2
    public class ArrayList<E> extends AbstractList<E>
    implements List<E>, RandomAccess, Cloneable, java.io.Serializable
  3. ArrayList 继承 AbstractList 继承 AbstractCollection 实现 List 接口

    • 意味着具有添加、删除、修改和遍历等功能
  4. 实现了RandomAccess接口
    • 提供了随机访问功能,实际上就是通过下标序号进行快速访问
  5. 实现了Serializable接口
    • 支持序列化,也就意味了ArrayList能够通过序列化传输
阅读全文 »

Java集合类---概述

发表于 2018-04-21

Java集合类(UML类图)

先来一张图

阅读全文 »

剑指offer---10-12

发表于 2018-04-20

题目描述

我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

解题思路

斐波拉切数列同样的思路

编码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Solution {
public int RectCover(int target) {
int f1 = 1,f2 = 2,sum = 0;
if (target ==0){
return 0;
}else if (target == 1){
return 1;
}else if (target == 2){
return 2;
}
for(int i=target;i>2;i--){
sum = f1+f2;
f1=f2;
f2=sum;
}
return sum;
}
}
阅读全文 »

Java虚拟机---高效并发

发表于 2018-04-20

高效并发

Java内存模型与线程

Java内存模型

目标:定义程序中各个变量(线程共享的)的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。

主内存与工作内存

阅读全文 »

Java虚拟机---虚拟机字节码执行引擎

发表于 2018-04-20

虚拟机字节码执行引擎

输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果

运行时栈帧结构

  1. 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构(虚拟机栈中)。
  2. 栈帧存储着方法的局部变量表、操作数栈、动态连接和方法返回地址等信息
阅读全文 »

Java虚拟机---虚拟机类加载机制

发表于 2018-04-19

虚拟机类加载机制

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。这,就是虚拟机的类加载机制。

运行期完成:类型的加载、连接和初始化过程

类加载的时机

  1. 类从加载内存到卸载内存一共会经历7个阶段:加载–>验证–>准备–>解析–>初始化–>使用–>卸载
  2. 类加载经历的阶段:加载–>验证–>准备–>解析–>初始化
  3. 类加载:加载–>连接(验证–>准备–>解析)–>初始化–>使用–>卸载
  4. 解析在某种情况下可以再初始化之后再进行(为了支持Java语言的运行时绑定)
阅读全文 »

Java虚拟机---垃圾收集器和内存分配策略

发表于 2018-04-19

Java对象内存分配策略和垃圾收集器

Java的内存管理主要是针对于对内存中的对象的分配和回收(堆和方法区)

垃圾收集算法

判断哪些对象需要回收

  1. 引用计数法:每个对象都有一个计数器,当这个对象被一个变量或者另一个对象引用的时候,计数器加一;若该引用失效便计数器减一。当计数器为0的时候,就认为该对象是无效对象
    • 缺点:很难解决对象之间互相循环引用的问题
  2. 可达性分析(主流):所有和GC Roots直接或间接相连的对象都是有效对象,和GC Roots没有引用链相连的对象就是无效对象

可作为GC Roots对象的类别

  • 虚拟机栈(栈帧中的本地变量表)中引用的对象
  • 方法区中类静态属性引用的对象
  • 方法区中常量引用的对象
  • 本地方法栈JNI(Native 方法)引用的对象
阅读全文 »
1…567…9

Wakaka

84 日志
25 标签

© 2018 Wakaka
本站访客数:
本站总访问量次 |
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.3