首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

剑指offer第二版(Java最优解)---实现单例模式(3种)

单例模式最初的定义出现于《设计模式》(艾迪生维斯理,1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。”   另一个常见的定义是:一个类只有一个实例,并且自行实例化向整个系统提供。   这两句话的意思就是,当我们需要用到某个实例的时候,我们无需进行其它多余操作,而是直接通过某个接口获取到它的实例,并且这个实例在整个系统中保证唯一。   举个简单的例子:我们在平时使用电脑时,我们希望点击“设置”按钮,就可以直接访问设置,而且要求设置在整个系统中是唯一的(这是废话),电脑的设置在这里就是一个单例。   我们通过定义,得出完成单例模式需要满足下面两个条件: 1. 生成类的实例要唯一。也就是生成代码只能执行一次,“阻止”所有想要生成新对象的操作;   2. 生成实例的方法必须是全局方法(也就是静态)。原因是非静态方法必须通过实例进行调用,如果已经有了实例,我们还需要生成实例的方法干什么呢?

00

数据结构上机——希尔排序(含监视哨版本)

首先要明确一下什么是监视哨 这个词很容易望文生义 错误地认为是监视比较的值 查阅资料才发现 监视哨的意义是防止下标越界,提高速度 在插入排序中, 取用r[0]作为监视哨,就可以在循环中减少一次判断j>0的条件,从而提高速度 而在本题之中,采取五个监视哨的目的在于 希尔排序是跳跃的,最大的区间d[0]是5,所以只要防止j-5<0即可,不过还是存在bug!! 网上也找不到多监视哨的希尔排序,着实烧脑。 经过我半小时+的秃头思考后,发现问题在于监视哨的key值,每个监视哨都必须初始化0,当然作为R[0]的监视哨还担任存储单元的双重使命,也可以不初始化。 自此,程序顺利完成

02
领券