摘要: 没有指针做的链表近来用JavaA题,坐到了链表系列,效果不好,可能是自己对Java中指针的理解不够,下面来分析一下:Java不是没有指针,而是对指针进行了伪装:使用上泛化、强化和简单化,概念上淡化和弱化。1.Java强调所有的对象赋值和传递都是引用Objecta=newObject(); 创建一个对象,a是对这个对象的引用b=a; b并不是一个新对象,它是对a对象的引用。其实呢,a是指针,b也是指针,将a的值赋给b,也就是将a所存储的地址赋给b,b自然指向了a所指向的对象。2.Java强调两个对象的相等比较(==)不是比较两个对象的值是否相同,是比较两个对象是不是相同的引用。字符串是一个比较. 阅读全文
posted @ 2014-03-08 09:22 kcrosswind 阅读(2031) 评论(0) 推荐(0) 编辑
摘要: 适配器模式-adapter定义:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。采用的方式:让一个适配器包装一个适配者。这是对象适配器还有类适配器:应用:迭代器 阅读全文
posted @ 2014-03-03 17:11 kcrosswind 阅读(114) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/cnham/article/details/3086038http://blog.csdn.net/ouyangmeile/article/details/3889797一、定义程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。二、与JavaReflection 是 Java 程序开发语言 阅读全文
posted @ 2014-03-01 22:13 kcrosswind 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 动态规划中比较简单的实现动态规划的原理:http://hawstein.com/posts/dp-novice-to-advanced.html,讲解的非常清楚这道题可以参考动态规划的原理,将status[i][j]的值表示为,字符串从i到j的子串是否为回文字符串,其递推公式为,如果s[i]=s[j],status[i][j]=status[i+1][j-1],否则status[i][j]=0;详细的说明和容易出的问题放在代码注释中: 1 public String longestPalindrome(String s) 2 { 3 4 int length ... 阅读全文
posted @ 2014-02-27 09:38 kcrosswind 阅读(399) 评论(0) 推荐(0) 编辑
摘要: 初始化默认值:int[] i=new int[3]; -->i[0]==0;int[][] 多维问题 小心溢出 容易把对象造的过大,OutOfMemoryError,Java heap space :对象过于的大了boolean[] b=new boolean[3]; -->b[0]==0; 阅读全文
posted @ 2014-02-27 09:22 kcrosswind 阅读(113) 评论(0) 推荐(0) 编辑
摘要: The string"PAYPALISHIRING"is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H NA P L S I I GY I RAnd then read line by line:"PAHNAPLSIIGYIR"不难,但是要注意时间按复杂度和“zigzag”的定义。zigzag的含义:。应该这样 阅读全文
posted @ 2014-02-26 21:16 kcrosswind 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 原理:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html示例:leetcode:Implement strStr() 1 public class Solution { 2 public String strStr(String haystack, String needle) { 3 4 int i = 0; 5 int hlength = haystack.length(); 6 int nlength = ... 阅读全文
posted @ 2014-02-26 15:58 kcrosswind 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 个人认为学习一种语言,编程规范可以很好的从使用者的角度学习,因为毕竟很多规范都是有深刻原因的。Google Java编程风格指南作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权:自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0,转载请注明作者及出处。前言这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合Google的Java编程风格。与其它的编程风格指南一样,这里所讨论的不仅 阅读全文
posted @ 2014-02-25 16:39 kcrosswind 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 进程是静态的概念线程是cpu运行的单位 阅读全文
posted @ 2014-02-25 09:24 kcrosswind 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 观察者模式(发布订阅)本文参考:headfirst设计模式、设计模式、维基百科。 导例:以订阅报纸为例,你在日报社订阅了“日报”,每天日报社印完了报纸(当然这个时间每天是无法十分精确的)就给你送到家(或者送到你家附近的经销点,你下班可以去拿),这就是一个简单的观察者模式,报社和读者是一对多的依赖关系,但是以报纸为信息媒介,二者却互不影响了(报社任何时间可以发布任何信息,只有形式受限——必须印在报纸上;而读者多少如何跟不受影响了),这相当于剥离了依赖关系中的变化部分。 定义:定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。这种通知消息的传递可.. 阅读全文
posted @ 2014-02-24 22:32 kcrosswind 阅读(254) 评论(0) 推荐(0) 编辑