Tango Blog

Happy Hacking

hihocoder#1068

生成位置表 使用位置表 算法原题来自:hihocoder 你可以在我的github获取源码:github 这次题目是比较常见的在已知的数据中,对于给定的范围区间查找最小值。对于这类题目,我的想法是,求出每一个位置上的数的后方,最先出现比其小的数,记录下这个位置,这样在我们对给出区间求最小值的时候则可利用这个位置的记录减少大量的比较。 生成位置表 下面展示我们如何求出...

设计模式(8)–模板方法模式

1.模式适用性 2.模式结构 3.实现 软件设计的一个重要的思想方法是软件重用,软件重用也体现在代码重用上。模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。模板方法模式提供了一个很好的代码复用平台,使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。 1.模式适用性 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实...

设计模式(7)–原型模式

1.模式适用性 2.模式结构 3.实现 原型模式属于创建型模式,《设计模式》一书对中原型模式的描述为: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式的关键点在于原型实例与实例的复制,而实例的克隆分为深复制与浅复制。深复制与浅复制的不同点在于,浅复制对于字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用...

(转)首先为人编写程序,其次才是计算机

“首先是为人编写程序,其次才是计算机”,这是软件开发的基本要点,软件的生命周期贯穿于产品的开发、测试、生产、发布、用户使用、版本升级和后期维护等长期过程中,只有易读、易维护的软件代码才具有生命力。 在实际的软件开发过程中,可能是由于工作很忙的原因,很多开发人员只注重实现程序的基本功能,而忘记了编程规范,因此写出来的代码只能让计算机看懂,人要看懂很不容易。更有甚者,有些项目组为了赶进度,明确...

Linux是怎么启动的

按下电源按钮的直到欢迎页出来之后,linux总共做的事可以分为五步来完成。 1、 BIOS加电自检: 加电自检,检测硬件设备。然后按照cmos上面的顺序来搜索处在活动状态下的可以引导的设备。可以是光驱、软盘、USB等。 2、 加载主引导加载程序(MBR): 主引导程序是一个512字节的映像。包含一点机器码还有一个小的分区。 主引导程序的任务就是查找并且加载处在硬盘分区上的次...

设计模式(6)–工厂方法模式

模式适用性 模式结构 实现 工厂方法模式与简单工厂模式类似,都是数据创建型模式,是用于创建对象的设计模式。与简单工厂模式不同的是,工厂方法模式定义了一个用于创建对象的接口,让子类决定实例化哪一个类。对于简单工厂而言,客户只需要知道一个接口即可,但这样的一个接口的问题是不方便扩展,简单工厂的内部维护工作量是比较大的,使用工厂方法模式则可灵活的扩展工厂接口。 模式适用性 ...

设计模式(5)–装饰模式

1.模式适用性 2.模式结构 3.实现 使用装饰模式可以在不修改类的情况下,动态的扩展对象。装饰模式使用一个装饰器把真实对象包装起来,对被装饰对象做一些而外的操作。装饰器与真实对象具有相同的接口,这样客户端就可以把装饰器像真实对象一样对待。 1.模式适用性 在不影响其他对象的情况下以动态的、透明的方式给对象添加或者撤销职责。 当以继承方式扩展类会产生大量子类,...

Example Post

ES5, ES6, ES2016, ES.Next: What's going on with JavaScript versioning?

JavaScript 有着很奇怪的命名史。 1995 年,它作为网景浏览器(Netscape Navigator)的一部分首次发布,网景给这个新语言命名为 LiveScript。一年后,为了搭上当时媒体热炒 Java 的顺风车,临时改名为了 JavaScript (当然,Java 和 JavaScript 的关系,就和雷锋和雷锋塔一样 —— 并没有什么关系) 歪果仁的笑话怎么一点都不好...

hihocoder#1144 01串

算法原题来自:hihocoder 你可以在我的github获取源码:https://github.com/Wtango/hihocoder 给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串”001″和”11″。如果存在符合条件的01串则输出字典序最小的S,否则输出NO。 我们进行分类讨论: 当m > n+1时,永远无法满足 “不存在1...

设计模式(4)–代理模式

模式适用性 模式结构 实现 代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。或者被代理对象的创建需要消耗很多资源,代理可以在客户端作为一个占位符,等到客户端实际使用的时候才创建被代理对象,而不是一次性创建被代理对象。例如一个相册中有很对相片,创建相片对象是需要消...