随笔分类 -  Java

摘要:话说整理一下这些知识的效果还是很不错的,一方面是意外的原因,《Java Puzzlers》阅读中遇到了volatile的使用不清楚问题,在IBM developerworks上看了几篇大牛的文章,越看牵扯到的东西越多,觉得自己掌握的东西很不系统,所以总结一下。另一方面的原因,现在实验室的项目将涉及到大量的并发,算是先准备好。 在过去的实际项目中,java并发主要用在了游戏和输入法的开发当中,其他时候都是自己写点代码,出于好奇做做实验而已,因此也只是基础性的总结了。大部分知识还是来自于《Thinking in java 4 edition》,内存模型的初步了解来自《Java Concurr... 阅读全文
posted @ 2013-01-13 09:38 leeon 阅读(2834) 评论(2) 推荐(4) 编辑
摘要:Chapter 5讲的是异常之谜,这些puzzle都是发生在使用异常的这些特性里面的,文中假设大家对java异常处理机制有所了解,当然也可以通过这里获取一些关于异常机制的讨论。异常是为了定位程序错误和增强带代码的健壮性而出现的,java的异常机制也是建立在C++的基础之上的。由于使用率很高所以也经常引起一些使用心得讨论,比较认同的一点是不要将异常和程序控制结构混为一谈。这样很容易出现问题。这次的几个puzzle有几个很是具有难度,涉及到了JVM处理的一些东西,目前我表示也很无力。 puzzle 36 优柔寡断public class Indecisive { public stat... 阅读全文
posted @ 2012-12-21 14:23 leeon 阅读(2079) 评论(1) 推荐(0) 编辑
摘要:简介 异常处理是java语言的重要特性之一,《Three Rules for effective Exception Handling》一文中是这么解释的:它主要帮助我们在debug的过程中解决下面的三个问题。什么出错了哪里出错了为什么出错 java语言可以说是提供了过于完善的异常处理机制,以致于后来《Thinking in java》的作者Bruce Eckel都专门对他进行了论述。java中的异常机制包括Error和Exception两个部分。他们都继承自一个共同的基类Throwable。Error属于JVM运行中发生的一些错误,虽然并不属于开发人员的范畴,但是有些Error还是由代... 阅读全文
posted @ 2012-12-20 21:31 leeon 阅读(11101) 评论(11) 推荐(5) 编辑
摘要:这是java解惑的第三篇了,讲的是循环之谜。其实循环的迷大多数都是来自于循环的判断条件的,因为一般循环出问题也都是在这里,结果往往就是无尽的循环或者一次也不循环了。其实这一章还是挺变态的,但是变态也在提示我们学的是不是够仔细。puzzle 24 尽情享受每一个字节class BigDelight { public static void main(String[] args) { for (byte b = Byte.MIN_VALUE; b < Byte.MAX_VALUE; b++) { if (b == 0x90) ... 阅读全文
posted @ 2012-12-18 17:40 leeon 阅读(2291) 评论(1) 推荐(0) 编辑
摘要:上一篇记录了10个puzzle,主要是关于表达式的,表达式的一个关键就是有值,所以很多的谜题也都围绕着数据类型展开,今天要分享的是字符之谜,无论什么编程语言,字符总是一个很好玩的好题.在之前也总结过java中String的一些性能上的问题,发现看过这13个puzzle后又加深了一些理解吧。puzzle 11最后的笑声public class LastLaugh { public static void main(String args[]) { System.out.print("H" + "a"); System.out.print('H 阅读全文
posted @ 2012-12-17 11:41 leeon 阅读(2059) 评论(7) 推荐(3) 编辑
摘要:把《Java解惑》这本书又从图书馆拿回来了,现在再次的重温,与大三时看这本书的时候不同,我决定写点笔记了。每天抽些时间读些puzzle来让愚钝的大脑清醒一些,读这本书的每一个puzzle的时候,感觉就像小品里面范伟饰演的角色一样,经常会说“原来是这么回事呀”。但,不同的是,读puzzle让人更聪明,而不是被忽悠。所以决定写个系列,利用这个周末到下周的几天一口气读完吧。下面的这些都是用自己的语言来描述的,完全是自己的一些理解,只是写下来记录一下自己的想法,没看过这本书的童鞋还是直接去看原版书吧。每天10个puzzle的话,那么也需要十天的时间。虽然会浪费些时间,但总比蛋疼的在微博和各种SNS上. 阅读全文
posted @ 2012-12-15 17:51 leeon 阅读(3050) 评论(2) 推荐(0) 编辑
摘要:很早之前总结过java中一些String的理解和用法,最后还体会到了其中String的一点性能上的优化。那篇博文更多的是在讨论string存储的问题,感兴趣的童鞋可以看一下 传送连接 这两天在淘测试的文章里看到一篇关于java string的文章,谈到了StringBuilder和StringBuffer的使用效率的问题,然后发现自己忽略了capacity这个概念。比如说下面的一段代码:1 StringBuffer sf = new StringBuffer("");2 sf.append("leeon");3 System.out.prin... 阅读全文
posted @ 2012-12-10 12:23 leeon 阅读(3663) 评论(6) 推荐(7) 编辑
摘要:原文部分链接失效,请移步 新地址阅读又是新的一月,又是各种总结,先分享一下java中string的一些小专题吧,这部分比比较基础,但是也非常的有用。我发现很多面试官像中了邪一样就爱问这个。。string的种种,纠结,希望这篇文章让大家不再纠结。。 string是我们经常用到的一个类型,其实有时候觉得写程序就是在反复的操作字符串,这是C的特点,在java中,jdk很好的封装了关于字符串的操作。今天主要讲的是三个类String 、StringBuffer 、 StringBuilder .这三个类基本上满足了我们在不同情景下使用字符串的需求。 先说,第一个String。 JDK的解释是... 阅读全文
posted @ 2012-04-02 22:07 leeon 阅读(5506) 评论(11) 推荐(5) 编辑
摘要:最近和一位师兄交流了一下Java,真可谓是大有收获,让我好好的学习了一下javad的反射机制,同终于明白了spring等框架的一个基本实现的思想,那么今天就和大家分享一下java的反射机制。 反射,reflection,听其名就像照镜子一样,可以看见自己也可以看见别人的每一部分。在java语言中这是一个很重要的特性。下面是来自sun公司官网关于反射的介绍:Reflection is a feature in the Java programming language. It allows an executing Java program to examine or "introsp 阅读全文
posted @ 2012-03-18 16:41 leeon 阅读(40810) 评论(9) 推荐(8) 编辑
摘要:最近又在翻《thinking in java》,这本书,怎么说呢,以前学java的时候,老师就没有把它作为教材,但是我偏偏只买了这本书,一直收获很大。好了,言归正传,结合自己的偶然遇到的一个在构造函数中调多态方法引起的思考,讲述一下java的初始化到底是怎样的一个过程。 所谓初始化,当然也就指的是变量。变量可以是内置的变量或者我们创建的类的对象。 有人说,本来初始化本来就是一件很简单的事情,的确,但是java作为一门面向对象语言,由于具有继承、多态,静态、动态绑定等多种特性,所以其初始化的情景可谓是五花八门。现在就一步一步的分析其初始化过程。下面就是几个小原则。优先级依次递减。 1 静态块优. 阅读全文
posted @ 2012-03-12 15:42 leeon 阅读(5794) 评论(11) 推荐(3) 编辑
摘要:无论是在netBeans还是在eclipse开发环境中,写java代码的时候经常会碰到@Override标签,平时只知道是覆盖的意思就好了~那么这个标签的价值就只有这些吗? 最近一次,重翻《Thinking in java》的时候,自己看了一下,结果这个小小的标签倒是加深了我对于面向对象的理解。 一般用途 帮助自己检查是否正确的复写了父类中已有的方法 告诉读代码的人,这是一个复写的方法 比如我们有如下基类 1 package fruit; 2... 阅读全文
posted @ 2012-03-09 22:31 leeon 阅读(41147) 评论(4) 推荐(9) 编辑
摘要:今天学习了新的设计模式----观察者模式,其实这种设计模式,我们早就接触过,做过GUI编程的同学肯定会知道,事件的注册监听等机制,其实这个机制的实现就是利用了观察者模式。 可能在程序中,我们需要在某些数据变化时,其他的类做出一些响应,我们总不能开一个线程,每隔一段时间就去检测数据有没有发生变化吧,那样效率很低,我们更希望那些具有变化属性的类能够主动将自己的变化推送给,希望检测这些变化的其他类。正如我们去医院排队,不能隔两分钟就去问大夫“轮到我了吗”,而是坐在那里等大夫的通知,大家都接收到一个名字信号,叫到谁谁就去~ 而观察者就是这样一种模式,大夫的名单就是被观察者,也叫做一个 主题。每一个病. 阅读全文
posted @ 2011-11-05 19:55 leeon 阅读(4877) 评论(3) 推荐(4) 编辑
摘要:这两天本来是自在学习java collection Framework的Fail Fast底层机制,看到核心的部分时,突然意识到设计模式的问题,上大学到现在我还没有真正理解过设计模式的概念,于是用了大半天好好的学习了一下装饰器模式,回头再看jdk的源码,舒服多了,的确验证了那句话,设计模式非学不可啊,可以说自己是个十足的菜鸟,连基本的java接口机制和继承都忘得差不多了,这一天全拾起来了~ 首先解释一下忘记接口的同学难点,接口其实就是java的抽象机制,不提供方法的具体实现,但是可以有多个类来实现这个接口,一个类也可以实现多个接口,接口带来的好处是创建实例时,用户不必关注具体的实现,比如我例. 阅读全文
posted @ 2011-11-04 23:22 leeon 阅读(16187) 评论(10) 推荐(1) 编辑
摘要:接触了一些多线程的东西,还是从java入手吧。 相信看这篇文章的朋友都已经知道进程和线程的区别,也都知道了为什么要使用多线程了。 这两个方法主要来源是,sleep用于线程控制,而wait用于线程间的通信,与wait配套的方法还有notify和notifyAll. 区别一:sleep是Thread类的方法,是线程用来 控制自身流程的,比如有一个要报时的线程,每一秒中打印出一个时间,那么我就需要在print方法前面加上一个sleep让自己每隔一秒执行一次。就像个闹钟一样。wait是Object类的方法,用来线程间的通信,这个方法会使当前拥有该对象锁的进程等待知道其他线程调用notify方法时再醒来 阅读全文
posted @ 2011-10-28 15:03 leeon 阅读(22339) 评论(8) 推荐(3) 编辑