01 2021 档案
摘要:ArrayList底层是数组elementData,用于存放插入的数据。初始大小是0,当有数据插入时,默认大小DEFAULT_CAPACITY = 10。 /** * The array buffer into which the elements of the ArrayList are stor
阅读全文
摘要:byte存储范围,表示范围 我们知道byte代表1个字节,数据存储的范围:[0x00, 0xFF]。byte变量表示值的范围:[-128, 127]。 下面这段代码并不是输出128,而是输出-128,因为byte变量表示值的范围为[-128, 127]。128刚刚好超出上界127有1单位,溢出为-1
阅读全文
摘要:前导0计数 问题 1的前导0个数为31,对应16进制数为0x0000 0001。 2的前导0个数位30,对应16进制数为0x0000 0002。 如何计算一个int型数对应二进制数前导0的位数呢? 解决思路 轮询bit位算法 开始想到的最简单的办法是从左边最高位开始,向低位轮训,一直到遇见位1。 /
阅读全文
摘要:代理模式(Proxy Pattern) 简介 一个类代表另一个类的功能。创建具有现有对象的对象,以便向外界提供功能的接口。 意图 为其他对象提供一种代理以控制这个对象的访问。 特点 主要解决:在直接访问对象时带来的问题,比如说,访问的对象在远程的机器上,在面向对象系统中,有些对象由于某些原因(比如对
阅读全文
摘要:享元模式 flyweight pattern 简介 主要用于减少创建对象的数量,以减少内容占用和提高性能。 尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 意图 运用共享技术有效地支持大量细粒度的对象。 特点 主要解决:在有大量对象时,有可能会造成内存溢出,把其中共同的部分抽象出来,如
阅读全文
摘要:外观模式(Facade Pattern) 简介 隐藏系统的复杂性,并向客户端提供一个可以访问系统的接口。 该模式涉及到一个单一的类,提供客户端请求的简化方法和对现有系统类方法的委托调用。 意图 为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
阅读全文
摘要:装饰器模式(Decorator Pattern) 简介 装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构 意图 动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。 特点 主要解决:为扩展一个类经常使用继承方式,由于继承为类引入静态特征,并且随着扩展功能
阅读全文
摘要:组合模式(Composite Pattern) 简介 组合模式,也叫部分整体模式,用于把一组相似的对象当作一个单一的对象,组合模式依据树形结构来组合对象,用来表示部分以及整体层次。属于结构型模式,创建了对象组的树形结构。 意图 将对象组合树形结构以表示“部分-整体”层次结构。使得用户对单个对象和组合
阅读全文
摘要:过滤器模式Filter pattern,标准模式Criteria Pattern 意图 允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们链接起来。 示例 创建一个Person对象,Criteria接口和具体类,实现该接口以过滤Person对象列表。CriteriaPatter
阅读全文
摘要:桥接模式(Bridge Pattern) 意图 将抽象部分与实现部分分离,使得它们都可以独立变化。 适用场景 一个类如果有2个维度或者多个维度的扩展,用继承没有问题,但是用桥接模式会更适合。避免2个层次之间建立静态继承联系。 什么是抽象部分,什么是实现部分? 比如,要绘制矩形、圆形、正方形,至少需要
阅读全文
摘要:适配器模式(Adapter Pattern) 简介 作为两个不兼容接口之间的桥梁,结合了2个独立接口的功能。 意图 将一个类的接口转换成客户希望的另外一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 使用场景 当系统需要使用现有的类,而类的接口不兼容时(不符合系统需要); 例子:
阅读全文
摘要:1 走近Java 1.1 概述 Java特点: 结构严谨、面向对象; “一次编写,到处运行”(跨平台); 相对安全的内存管理和访问机制,避免绝大部分内存泄漏和指针越界问题; 实现热点代码检测和运行时编译及优化; 有一套完善的应用程序接口,无数来自商业机构和开源社区的第三方类库帮助实现各种功能; 1.
阅读全文
摘要:题目 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 示例 1: 输入: n =
阅读全文