暂无个人介绍
暂时未有相关通用技术能力~
阿里云技能认证
详细说明作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 在《编程之美》上的一道题,书上最后一种用结构体的方法我直接醉了,这个确实有点文字游戏的意思,不过其实面试中这反倒考验了被面试者的沟通和理解能力,说白了谁让你不问呢?你不问怎么知道就不能用呢?不要给自己下套。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 今天继续看《编程之美》的第三个问题。 问题的描述就不多说了,这是一个典型的离散数学问题(这个链接有非常详细的问题描述),喜欢图案的童鞋(比如我),可以参看CMU的一个讲义。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 要求O(n)时间复杂度。 利用“已经知道这个数字在整个数组中出现的比例超过50%”这个事实,采用计数法。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.按词倒置一个句子 题目:例如”I am a student”,经处理后得到”student am a I”,限定除了一个空格外单词间没有任何其他分隔符。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.设计原则与规律: 看得清楚 背景不花哨 文字与背景对比度大 使用较大字体 容易记忆 多用图,少用字——视觉化 ...
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 一直比较喜欢凯莉前期HP的企业文化,这位女士上台后彻底颠覆了老HP的文化,以前和一些安捷伦中国和HP China 的员工聊天时大家也都表示了对往昔的怀念。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 问:24小时时针和分针互成直角多少次? 答:首先是一个常识性问题,分针和时针通过运动重合时,一定伴随两次成为直角(可以试着把时针视为静止,然后想象一下)。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 我发现这些严重挑战我的智商,谁说外国人笨……省略了一些不是人做的题目(至少不是非英语国家的人做的题目)。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ ...
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.知识经济主要在于设计企业的价值链 2.在全球化的进程中,专攻是真正的出路。 3.为什么选择通信? 1)有成长空间的行业 2)具有核心能力的。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.知识经济主要在于设计企业的价值链 2.在全球化的进程中,专攻是真正的出路。 3.为什么选择通信? 1)有成长空间的行业 2)具有核心能力的。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 以后有什么关于设计模式的心得和零散的学习都放在这归纳总结,以备自己温习助记所用,不成体系,没有深度,自娱自乐,严重欢迎拍砖,不欢迎说风凉话的童鞋。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概述 这个模式也比较简单,书中没有提到。用于恢复上次操作结果等场景,比如数据库回滚等。这个模式有三个参与的实体: Originator:知道如何保存自己的对象。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概述 这个模式是在不能叫做模式,它的作用是实现一种语言规范的解释器,比如罗马数字解释器。 2.实例 我们在这创建一个决策器。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概述 该模式也是Head First中未收录的,其主要用于分离接口与实现,常应用在你不希望将实现和抽象永久绑定的时候。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概述 这个模式在Head First这本书中也没有具体提到。其主要应用于如下场景:对于创建一个新的对象,若且你手中已经有了一个非常相像的对象实例,那么你可以利用这个现有对象进行新对象的创建。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概述 该模式在Head First中没有介绍,它用于通过一个中介者完成对象间通信的解耦。当代码中出现大量有着其他对象信息的对象时就可以使用这个模式。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.概述 这个模式在Head First中没有介绍,大概是因为这个模式和工厂模式有点像。其目的主要是通过创建简单的对象构建一个复杂的对象。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 这个模式也是这本书中没有详细阐明的,其实这个模式多多少少有点单例模式+简单工厂模式的意味。在Java 中,String对象就是用享元模式进行管理的——Java将所有固定的String都放在了一个常量池中,相同的String只保存一份拷贝——这个带来的好处是显而易见的,内存占用和创建对象的开销都随之降低——这个模式适用于常用的细粒度可共享对象的创建。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ Head First里面没有详细说这个设计模式,可能是觉得这个设计模式和观察者模式有很大的相似度,事实也正是如此。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.M-V-C ——Model--View--Controller,模式-视图-控制器,这是一种范型。模型对象正是应用系统存在的理由,你设计的对象,包含了数据、逻辑和其他在你的应用领域创建定制的类。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.这一节的任务是我们需要完成对上一节的糖果机产生一个机器状况和余量的报告,若这个报告在本地(不是通过Internet)生成的话,那么我们的设计就很简单了,在糖果机中加入Location的信息,并且创建...
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.我们这次的话题是要实现一个糖果机,这个糖果机中如下的一些状态以指导糖果机的转移: 我们根据这个状态机写了一个有if.
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.我们接着上次的话题,现在有一个新需求就是子菜单功能。我们在此使用一个新的模式——组合模式,意思是允许你将对象组合成树形结构来表现整体-局部的层级,它能使客户以一致的方式处理个别对象以及对象的组合。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.这个模式比较简单,我们举一个银行贷款申请流程程序的例子(这个并非是书中的例子): 申请贷款,银行要检查这个客户的一些事宜,譬如客户收支状况记录、从三个地方拿到他的信用记录、得到其他已有相关债务信息、得到借债人股票市值、得到借债人未来收入预期分析等等。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.适配器的作用:将一个接口转换为另一个接口。我们可以比喻为一个插座的转换头。 2.构造适配器的关键:实现了目标接口,并持有被适配者的实例。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.这一节我们的任务是创建一个类似智能家居的万能遥控器,控制各种家电。我们需要将“请求”封装成对象(一个命令对象通过在特定接收者上绑定一组动作来封装请求),以便使用不同的请求、队列、或者日志来参数化其对象——这就是命令模式。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.单例模式确保一个实例被创建,并且任意时刻都只有一个对象。它给了我们一个全局的访问点,又屏蔽了全局变量的缺点。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.我们在前边提到一个原则就是“面向接口而不要面向实现编程”,但是我们一直在使用Duck duck = new MallardDuck()这样的模式,后边的new语句却违反了这个原则。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.这个模式可以称为“给爱用继承的人一个全新的设计眼界”的模式。牵扯到第五个设计原则:“类应该对扩展开放,而对修改封闭”。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.我们需要理解报社、订阅系统和订报人之间的关系,订报人通过订阅系统订报,一旦报社有新的报纸,订阅系统就会派人送或者邮寄给订报人新的报纸。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1)使用场景:一个对象可能要访问共享资源来完成它所要提供的服务,在多线程情况下,多个这样的对象在一起就会产生意想不到的后果,比如竞争。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1)使用场景:牵涉到对数据对象进行修改时,可能由于修改的顺序而造成数据的错乱,此时使用不变对象就可以避免,而且还可以不使用高开销的synchronizing方法。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ a)使用场景:在程序设计中,我们可以把所用要用到的常量设计为一个独立的类,使得对常量的管理有效清晰。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 本来不想写这个的,太基础了,不过为了整个学习笔记的完备性还是简单写几笔给自己留着看。 1.存取方法也就是所谓的getter and setter,对于类中的private成员提供对外的接口,这样的设计使得最后的在程序修改时只需要修改这些setter and getter,而不必工程中修改所有与这个成员相关的东西,这些setter和getter不单单是为了给类外的对象使用的,内部使用时也尽可能使用,以提高程序的可修改性。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.抽象类的特点: 包含至少一个以abstract表示的没有实现的方法——抽象方法,来代表父类中的可变方法。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ a)使用场景:解决多重继承和Client需要多Service_Provider的支持。 b)典型UML: c)举例:薪水计算类的设计 不同...
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.UML是Object Management Group推出的用于简化复杂软件工程流程的工具,使用UML,用户可以定制并且可视化软件和非软件的设计。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ KWIC作为一个早年间在ACM的Paper提出的一个问题,被全世界各个大学的软件设计课程奉为课堂讲义或者作业的经典。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 初步: 1.传统的面向过程的结构化开发方法 Vs 以对象为最小系统的面向对象的开发方法 2.对象模型: 1)自底向上的抽象:抽象三层次 把问题领域中的事物抽象为具有特定属性和行为的对象。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ // Create a Comparator that returns the outcome // of a reverse string comparison.
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ // This Comparator uses a Collator to determine the // proper, case-insensitive lexicographical ordering // of two strings.
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 方法可以采用正则表达在想要搜索的字符串前边构造(?i),表示大小写不敏感。例如,要搜索here,则构造(?i)here,表示here,Here,HERE等。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ // Use split() to extract substrings from a string. class SplitDemo { static void showSplit(Strin...
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ import java.util.ArrayList; import java.util.Iterator; public class Practice { public st...
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ import java.util.ArrayList; public class Autoboxing { public static void main(String[] args) ...
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.使用方法 package tips; public interface Constants { public static final int PORT_NUMBER = 9...
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ public class DynamicParameters { public static void main(String[] args) { add(1,2,3); add(1,2,3,4); } public static void add(int... arr) {//支持可变数目的参数,实际就是一个数组,自动构建, //注意可变参数必须是函数的最后一个值。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ JVM将为类的instance和static变量赋上缺省值(默认值),包括数组array中的每一个元素--而不用再写初始化赋值语句。
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.String类是immutable的 一旦String被建立,它的内容就不能被更改了,要想去修改就要新建一个String。