核心问题
2019-01-28 本文已影响0人
简洁心飞
栈是运行时单位、解决程序该如何执行的问题; 而堆是存储的单位、解决数据存储的问题。
数据结构用于解决数据的逻辑关系和存储问题,而算法用于处理和分析数据
设计模式
工厂模式是用来封装对象的创建,减少应用程序和具体类之间的依赖,促进松耦合
单例模式作为对象的创建模式,确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例
单例模式 ①懒汉模式-线程不安全 ②懒汉模式-线程安全 ③双重检验锁模式 ④饿汉模式 ⑤静态内部类 ⑥枚举 Enum
代理模式 静态代理模式、动态代理模式
工厂模式 静态工厂方法、工厂方法模式、抽象工厂模式
Java 枚举(enum) 详解7种常见的用法
(1)常量、(2)switch、(3):向枚举中添加新方法、(4):覆盖枚举的方法、(5):实现接口、(6)使用接口组织枚举、(7)关于枚举集合的使用
Java
反射、注解、泛型、多线程、volatile、synchronized、
使用 volatile 的主要原因是其另一个特性:禁止指令重排序优化
String、StringBuffer、StringBuilder、
-数据类型-
[ LinkList -- ArrayList -- Vercor ]
JVM相关、内存模型
Run-Time Data Areas:jvm运行时数据区、6个数据区
程序启动时创建、程序退出时才销毁的数据区域。[堆、方法区、运行时常量池]
线程创建时创建、线程退出时就销毁的数据区域。[程序计数寄存器、jvm栈、本机方法栈]
ClassLoader、Runtime Data Area、Execution Engine、Native Interface
工作内存、主内存 8种操作:lock unlock read load use assign store write
要想把数据放入内存,必须先要分配内存空间
在函数内部定义的变量、数组、结构体、共用体等都称为局部数据。在很多编译器下,局部数据的初始值都是随机的、无意义的,而不是我们通常认为的“零”值。
为什么局部变量必须指定初始值?
从汇编语言来分析、我们发现程序在使用完栈内存后并不进行任何初始化为0的操作、只会将最初分配给函数的内存起始地址再次分配给寄存器、程序用过的栈内存空间、没有初始化、所以内存中存在无意义的数据、如果函数中的局部变量没有赋值、直接使用、就会导致数据异常、
esp定律指的也是堆栈平衡原理,esp是x86用于保存栈顶指针的寄存器
元组是异构数据结构,而列表是同构序列
注解作用:替代配置文件/编译时格式检查/理解高级代码框架/装逼装逼装逼
简洁、简单、轻量、微型、哲学、数学. 地址、方法、数据、返回