随笔 - 1162
文章 - 0
评论 - 16
阅读 -
59万
03 2021 档案
第一章:JVM与Java体系结构
摘要:一、Java 上层技术与 JVM 1、高级语言 计算机系统体系对我们来说越来越远,在不了解底层实现方式的前提下,通过高级语言很容易编写程序代码。但事实上计算机并不认识高级语言。 2、Java VS C++ Java 语言给我们提供了内存动态分配和垃圾收集技术,使得我们不用过多的关注底层的细节。 垃圾
阅读全文
JVM 【目录】
摘要:第一篇:内存与垃圾回收篇 第一章:JVM与Java体系结构 第二章:类加载子系统 第三章:运行时数据区概述及线程 第四章:程序计数器(PC寄存器) 第五章:虚拟机栈【重要】 第六章:本地方法接口 第七章:本地方法栈 第八章:堆【重要】 第九章:方法区【重要】 第十章:对象的实例化内存布局与访问定位
阅读全文
Java 注解(Annotation)
摘要:一、注解(Annotation) 1、概述 (1)从 JDK 5.0 开始, Java 增加了对元数据(MetaData) 的支持, 也就是Annotation(注解); (2)Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使
阅读全文
Java枚举类(Enum)
摘要:一、枚举概述 1、概述 类的对象只有有限个,确定的。 枚举:JDK1.5 引入的,类似于穷举, 罗列出来。 Java 枚举:把某个类型的对象,全部列出来。 枚举类型的对象是有限、固定的几个常量对象。 2、应用 什么情况下会用到枚举类型? 当某个类型的对象是固定的,有限的几个,那么就可以选择使用枚举。
阅读全文
Java常用类——匿名对象
摘要:一、匿名对象 创建对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量。 虽然是创建对象的简化写法,但是应用场景非常有限。 匿名对象:没有变量名的对象。 语法格式: new 类名(参数列表); 二、应用场景 1、创建匿名对象直接调用方法,没有变量名 Demo: new Scanner(Syst
阅读全文
Java常用类——Arrays工具类
摘要:一、概述 java.util.Arrays 此类包含用来操作数组的各种方法。比如排序和搜索等,其所有方法均为静态方法,调用非常方便。 二、操作数组的方法 (1)使用二分搜索法来搜索指定的 int 型数组,以获取指定的值;要求数组是有序的,否则结果不确定;如果key在 数组a中存在,就返回找到的第一个
阅读全文
Java常用类——Scanner类
摘要:一、Scanner 类 Scanner 是一个可以解析基本类型和字符串的简单文本扫描器。 Demo: 1 Scanner sc = new Scanner(System.in); 2 int i = sc.nextInt(); System.in 系统输入指的通过键盘录入数据。 二、引用类型使用步骤
阅读全文
Java常用类——Random类
摘要:一、Random 类 Random 类的实例用于生成伪随机数。 Demo: 1 Random r = new Random(); 2 int i = r.nextInt(); 二、Random 使用步骤 1、查看类 java.util.Random :该类需要 import 导入后才能使用; 2、查
阅读全文
Java常用类——BigInteger& BigDecimal
摘要:一、BigInteger 类 1、概述 1、Integer类作为int的包装类,能存储的最大整型值为231-1, Long类也是有限的,最大为263-1。 如果要表示再大的整数,不管是基本数据类型还是他们的包装类都无能为力,更不用说进行运算了。 2、java.math包的BigInteger可以表示
阅读全文
Java常用类——Math类
摘要:Math类 java.lang.Math提供了一系列静态方法用于科学计算。其方法的参数和返回值类型一般为double型。 Math.PI 代表近似的圆周率常量(double) public static double ceil(double a) : 返回大于等于参数的最小的整数。 public s
阅读全文
Java 常用类——System类
摘要:一、System 类概述 1、System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。 2、由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的, 所以也可以很方便的进行调用。 二、
阅读全文
Java 常用类——Java比较器
摘要:一、比较器 在 Java 中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。 Java 实现对象排序的方式有两种: 自然排序: java.lang.Comparable定制排序: java.util.Comparator 二、自然排序:java.lang.Comparable 1、概
阅读全文
Java 常用类—— JDK8中新日期时间API
摘要:一、为什么会出现新日期时间API呢? 1、面临的问题 如果我们可以跟别人说:“我们在1502643933071见面,别晚了!”那么就再简单不过了。但是我们希望时间与昼夜和四季有关,于是事情就变复杂了。 JDK 1.0中包含了一个java.util.Date类,但是它的大多数方法已经在JDK 1.1引
阅读全文
Java 常用类—— JDK8之前日期时间API
摘要:一、日期相关常用类 二、获取时间戳 System 类提供的 public static long currentTimeMillis() 用来返回当前时间与 1970 年1月1日0时0分0秒之间以毫秒为单位的时间差。 public static long currentTimeMillis():此方
阅读全文
Java 常用类——StringBuffer&StringBuilder【可变字符序列】
摘要:一、字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。 Demo: 1 public class StringDemo { 2 public static void main(String[] args) { 3 String s =
阅读全文
Java 常用类——String 类与其他类型的转换
摘要:一、String 与基本数据类型转换 1、字符串 ——> 基本包装类型、包装类 (1)Integer 包装类的的 public static int parseInt(String s) :可以将“数字”字符组成的字符串转换为整形。 (2)类似地,使用 java.lang 包中的 Byte、Shor
阅读全文
Java 常用类——String类常用方法
摘要:String 字符串常用方法 常用系列一: int length(): 返回字符串的长度: return value.length char charAt(int index): 返回某索引处的字符return value[index] boolean isEmpty(): 判断是否是空字符串: r
阅读全文
Java 常用类——String类
摘要:一、String类概述 1、概述 java.lang.String 类代表字符串。使用一对 "" 引起来表示,Java 程序中所有的字符串文字(例如“abc”)都可以看作是实现此类的实例。 String 是引用数据类型,不是基本数据类型。 类 String 中包括用于检查各个字符串的方法,比如用于比
阅读全文
第四节:职责链模式——总结
摘要:职责链模式的注意事项和细节 1、将请求和处理分开,实现解耦,提高系统的灵活性; 2、简化了对象,使对象不需要知道链的结构; 3、性能会受到影响,特别是在链比较长的时候,因此需控制链中最大节点数量,一般通过在Handler 中设置一个最大节点数量,在 setNext() 方法中判断是否已经超过阈值,超
阅读全文
第三节:职责链模式——在SpringMVC源码分析
摘要:一、职责链模式在 SpringMVC 框架应用的源码分析 1、SpringMVC—HandlerExecutionChain 类就使用到职责链模式 2、SpringMVC 请求流程简图 3、代码分析&说明 代码: 1 public class ResponsibilityChainTest { 2
阅读全文
第二节:职责链模式——基本介绍&应用
摘要:一、职责链模式 1、基本介绍 (1)职责链模式(Chain of Responsibility Pattern),又叫责任链模式,为请求创建了一个接收者对象的链(简单示意图)。这种模式对请求的发送者和接受者进行解耦。 (2)职责链模式通常每个接收者对象都包含对另一个接收者的引用。如果一个对象不能处理
阅读全文
第一节:职责链模式——需求说明&传统实现
摘要:一、需求说明 学校 OA 系统的采购审批项目:需求是: 采购员采购教学器材: 1、如果金额 小于等于 5000,由教学主任审批(0 <= x <= 5000) 2、如果金额 小于等于 10000,由院长审批(5000 <= x <= 10000) 3、如果金额 小于等于 30000,由副校长审批(1
阅读全文
第四节:策略模式——总结
摘要:策略模式的注意事项和细节 1、策略模式的关键是:分析项目中变化部分与不变部分; 2、策略模式的核心思想是:多用组合/聚合,少用继承; 用行为类组合,而不是行为的继承,使结构更有弹性; 3、体现了 “对修改关闭,对扩展开放”原则,客户端增加行为不用修改原有代码,只要添加一种策略(或者行为)即可,避免了
阅读全文
第三节:策略模式——JDK-Arrays的源码分析
摘要:一、策略模式在 JDK-Arrays 应用的源码分析 1、JDK 的 Arrays 的 Comparator 就使用了策略模式 2、代码 1 public class StrategyTest { 2 public static void main(String[] args) { 3 Intege
阅读全文
第二节:策略模式——基本介绍&应用
摘要:一、策略模式 1、基本介绍 (1)策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户; (2)这算法体现了几个设计原则: 第一:把变化的代码从不变的代码中分离出来; 第二:针对接口编程而不是具体类(定义了
阅读全文
第一节:策略模式——需求说明&传统实现
摘要:一、需求说明 1、有各种鸭子(比如 野鸭、北京鸭、水鸭等,鸭子有各种行为,比如 叫、飞行等) 2、显示鸭子的信息 二、传统方案解决鸭子问题的分析和代码实现 1、传统的设计方案(类图) 2、代码 抽象鸭子类: 1 public abstract class Duck { 2 public Duck()
阅读全文
第四节:状态模式——总结
摘要:一、状态模式的注意事项和细节 1、代码有很强的可读性。状态模式将每个状态的行为封装到对应的一个类中。 2、方便维护。将容易产生问题的 if-else 语句删除了,如果把每个状态的行为都放到一个类中,每次调用方法时都要判断当前是什么状态,不但会产出很多if-else语句,而且容易出错。 3、符合 “开
阅读全文
第三节:状态模式——订单审批流程分析
摘要:一、借贷平台代码分析 1、借贷平台的订单,有审核-发布-抢单 等步骤,随着操作的不同,会改变订单的状态,项目中的这个模块实现就会使用到状态模式; 2、通常使用 if/else 判断订单的状态,从而实现不同的逻辑,伪代码如下: 二、代码分析 1、类图 2、代码 状态接口类: 1 /** 2 * 状态接
阅读全文
第二节:状态模式——基本介绍&应用
摘要:一、状态模式基本介绍 1、基本介绍 (1)状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换; (2)当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类; 2、状态模式的原理类图
阅读全文
第一节:状态模式——需求说明
摘要:一、需求说明 APP 抽奖活动问题 请编写程序完成 APP 抽奖活动,具体要求如下: 1、假如每参加一次这个活动要扣除用户 50积分,中奖概率是 10%; 2、奖品数量固定,抽完不能抽奖; 3、活动有四个状态:可以抽奖、不能抽奖、发放奖品和奖品领完; 4、活动的四个状态转换关系图如下:
阅读全文