摘要: 外观模式(Facade Pattern) 简介 隐藏系统的复杂性,并向客户端提供一个可以访问系统的接口。 该模式涉及到一个单一的类,提供客户端请求的简化方法和对现有系统类方法的委托调用。 意图 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 阅读全文
posted @ 2021-01-12 15:40 明明1109 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 装饰器模式(Decorator Pattern) 简介 装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 特点 主要解决:为扩展一个类经常使用继承方式,由于继承为类引入静态特征,并且随着扩展功能 阅读全文
posted @ 2021-01-12 15:28 明明1109 阅读(239) 评论(0) 推荐(0) 编辑
摘要: 组合模式(Composite Pattern) 简介 组合模式,也叫部分整体模式,用于把一组相似的对象当作一个单一的对象,组合模式依据树形结构来组合对象,用来表示部分以及整体层次。属于结构型模式,创建了对象组的树形结构。 意图 将对象组合树形结构以表示“部分-整体”层次结构。使得用户对单个对象和组合 阅读全文
posted @ 2021-01-12 00:12 明明1109 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 过滤器模式Filter pattern,标准模式Criteria Pattern 意图 允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们链接起来。 示例 创建一个Person对象,Criteria接口和具体类,实现该接口以过滤Person对象列表。CriteriaPatter 阅读全文
posted @ 2021-01-12 00:02 明明1109 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 桥接模式(Bridge Pattern) 意图 将抽象部分与实现部分分离,使得它们都可以独立变化。 适用场景 一个类如果有2个维度或者多个维度的扩展,用继承没有问题,但是用桥接模式会更适合。避免2个层次之间建立静态继承联系。 什么是抽象部分,什么是实现部分? 比如,要绘制矩形、圆形、正方形,至少需要 阅读全文
posted @ 2021-01-11 23:58 明明1109 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 适配器模式(Adapter Pattern) 简介 作为两个不兼容接口之间的桥梁,结合了2个独立接口的功能。 意图 将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 使用场景 当系统需要使用现有的类,而类的接口不兼容时(不符合系统需要); 例子: 阅读全文
posted @ 2021-01-11 23:46 明明1109 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1 走近Java 1.1 概述 Java特点: 结构严谨、面向对象; “一次编写,到处运行”(跨平台); 相对安全的内存管理和访问机制,避免绝大部分内存泄漏和指针越界问题; 实现热点代码检测和运行时编译及优化; 有一套完善的应用程序接口,无数来自商业机构和开源社区的第三方类库帮助实现各种功能; 1. 阅读全文
posted @ 2021-01-06 20:09 明明1109 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 题目 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 示例 1: 输入: n = 阅读全文
posted @ 2021-01-04 01:23 明明1109 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 什么是线程 一个程序执行多个任务,每个任务称为一个线程(Thread),是线程控制简称。 可以同时运行 > 1个线程的程序称为多线程(multithreaded)。 多线程与多进程区别 每个进程都有自己独立的一套变量,而线程之间共享数据。进程是OS分配资源的最小单位,而线程是OS调度的最小单位。 共 阅读全文
posted @ 2020-12-27 17:51 明明1109 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 要创建一个随机数,该怎么办? java中提供了2种方式:Random类和Math.random() 它们有什么区别和联系呢? Ramdom类 特点 Random类对象是一个伪随机数生成器,使用48bit种子,随机数由线性同余生成器(linear congruential formula)生成。如果2 阅读全文
posted @ 2020-12-25 00:45 明明1109 阅读(878) 评论(0) 推荐(0) 编辑
摘要: 1. 将公共操作和域放在超类 例如Employee类和Student类继承自Person类,但将姓名域放在Person类,而不是2个子类。 2. 不要使用受保护的域 protected机制不能很好保护这些域,因为: 1)子类继承无限制,派生类可以在代码中直接访问protected域,破坏封装性; 2 阅读全文
posted @ 2020-12-19 17:44 明明1109 阅读(75) 评论(0) 推荐(0) 编辑
摘要: Integer.toHexString(int num) 函数功能是将十进制数转化为16进制,并返回16进制String字符串。 不过,它的原理是怎样的呢? 我们今天来研究一下。 本文针对Java 8。 1. 查看下源码的函数说明 Returns a string representation of 阅读全文
posted @ 2020-12-17 19:44 明明1109 阅读(3133) 评论(0) 推荐(1) 编辑
摘要: 题目 编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。 示例: 输入: numbers = [1,2] 输出: [2,1] 提示: numbers.length == 2 实现代码及解题思路 注意:方法二只是思路,实际会存在溢出问题。 /** * 方法一:根据差值, 阅读全文
posted @ 2020-12-13 18:01 明明1109 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 二叉查找树有几个地方没搞明白,特别是删除结点。特写这篇文章,认真研究、记录一下。 二叉搜索树重要性质 二叉搜索树,也叫二叉树查找树,英文名Binary Search Tree,简称BST,是一颗特殊的二叉树,是查找表的一种实现。满足以下性质: ∀结点x ∈ U(U是二叉树所有结点集合), 如果y是x 阅读全文
posted @ 2020-12-12 15:39 明明1109 阅读(431) 评论(0) 推荐(1) 编辑
摘要: 题目 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 提示: 节点总数 ⇐ 1000 思路 典型的二叉树层次遍历问题,用一个Lin 阅读全文
posted @ 2020-12-11 17:36 明明1109 阅读(84) 评论(0) 推荐(0) 编辑
摘要: List一般包含两种存储结构:顺序存储ArrayList和链式存储LinkedList。 List与数组之间如何相互转行呢? 数组转List 1. 利用遍历数组每个元素,将元素一个个加入List 最通用的方法,适合任意基本元素类型和语言。 示例: List<Integer> list = new A 阅读全文
posted @ 2020-12-11 16:56 明明1109 阅读(6720) 评论(0) 推荐(0) 编辑
摘要: 算法题里面,涉及到按位运算,有2个经典位运算: x&(-x) : 保留二进制下最后出现1的位置的数字,其余位置置0; x&(x-1) : 清除二进制下最后出现1的位置的数字,其余位置保持不变; x可以将二进制数写作(A) 1 (B)的形式,其中A表示一系列01串,1表示从右向左出现的第一个数字1,B 阅读全文
posted @ 2020-12-11 11:01 明明1109 阅读(1174) 评论(0) 推荐(0) 编辑
摘要: 反射简介 能够分析类能力的程序成为反射(reflective)。 反射可以用来干什么? 反射经常用于构建库或工具,主要包含以下能力: 运行时分析类的能力; 运行时查看对象,如编写一个toString查看对象属性; 实现通用的数组操作代码; 利用Method对象,类似于C/C++函数指针; Class 阅读全文
posted @ 2020-12-11 01:43 明明1109 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 题目 对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。 给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。 示例 1: 输入:A = [1,2,0,0], K = 34 输出:[1,2,3, 阅读全文
posted @ 2020-12-10 20:44 明明1109 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题目 对于非负整数 X 而言,X 的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。 给定非负整数 X 的数组形式 A,返回整数 X+K 的数组形式。 示例 1: 输入:A = [1,2,0,0], K = 34 输出:[1,2,3, 阅读全文
posted @ 2020-12-10 20:27 明明1109 阅读(148) 评论(0) 推荐(0) 编辑