为兄看到你的信,感慨颇多。观弟文笔,大有唐宋之风,可知近来体悟颇多,吾心安矣。望不断进取以慰兄。 (真恶) 遥想当年对酒当歌,及至今日形影相吊,吾常感心力憔悴。观他人良驹美食,且吾尚无安身立命之地,心中不免惆怅。 (别急,那一天会来的) 佳节将近,可与诸君团聚,心中畅快非笔墨所能形容万一。遥想皓月当空,金樽对月,吾等声泪俱下亦可,一吐胸中不快亦可,放浪形骸,畅快淋漓,岂不快哉? (还有个盼头,也是一幸事) 与此信与诸君共勉!
成功的人生必定首先是独立的人生,男人如此,女人亦如此。
成就自己独立的性格,成就自己的世界观,
首先要做好自己,不要依附别人,不要复制别人,你就是你,自己的人生由自己掌握!
我们的社会需要我们要精通一门外语,无论是英语还是日语。语言的重要性比我们在大学里学的专业重要的多得多。各种事例已经证明过,只要你语言好,干什么工作都不是障碍,也没有什么障碍,我们这些人的智商,学习一门新的学科没有任何的困难。语言的好坏程度与你的收入成正比。现在是,将来也是。所以学习英语对我们来说是相当必要的,如果你想将来工作生活要更好的话。学习语言是终身受用,不像学习所谓的java, EJB, struts觉得就可以闯荡江湖了,只会这点(不是真正技术的)东西过一两年就会被刚毕业的小鬼替代掉的。
而英语人才始终是那么少,现在的小鬼都懒,英语除了专业级别的,其他都还不足畏惧。而且,在美国的经济统治之下,我们学习英语就尤为重要!
在我们这个时代,已经不是终身雇佣制。终身受雇,是绝大多数人的期望。那就需要对你拥有的资产,也就是你自己,进行投资。投资中很重要的一项就是学习的时间。组织学习不是我的初衷,我只是希望大家意识到,“不一定终身受雇,但要终身学习”.
每天给自己留30分钟的学习时间。
不是在给别人打工,而是在给自己打工。
关于工作与生活 是 HP大中华区总裁孙振耀撰文谈退休并畅谈人生,有点长,不过写得还不错。
耐心的看下去,其实人家说的有道理。
ArrayList
ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变。这样就带来以下有缺点:
快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。
向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。
操作其中对象的速度慢 当你要想数组中任意两个元素中间添加对象时,数组需要移动所有后面的对象。
LinkedList
LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点:
操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方
不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。
1. 方法重载(Overload)
静态的,编译期间决定调用哪个方法;
只与句柄的类型有关,而与对象的实际类型无关;
2. 方法覆盖 (Override)
动态的,只能在运行期间才能决定调用哪个方法 ;
最终调用的方法,只与对象的实际类型有关,而与句柄类型无关;
不能覆盖private, final和static方法,一个包内可见的方法不能被另一个包的类覆盖;
Override只针对于方法,变量没有override的概念,如果子类定义了一个和父类一样的变量,称之为变量隐藏。具体调用哪个变量在编译的时刻已经决定 。
®
1. Each thread has its own stack
®2. Each method invocation will place a stack frame on the stack
®3. When some method encounter an exception, it will find the suitable catch block From current method, if not found, then pop up current stack frame, continuously find the suitable catch block in the caller method, and so on and so forth, if reach the last stack frame, and still not found the suitable catch, a stack trace will be printed on the console, the stack will be removed, and the thread died.
®4. From one thread, couldn’t catch the exception threw From another thread. So attempt to catch all the exceptions From the main method is impossible.
一般栈被用作活动记录,即每一个作用域的活动参数都记录在其中,例如一个函数的调用,它的栈空间就会存放调用者的地址、返回值、保存的机器状态(用于返回)、局部变量和临时变量。
而堆是全局的,存放的是对象的实例,在栈中存放的变量是存放了堆中的实例地址,所以我们传值的时候都是传引用,即地址,所以一个对象可以在嵌套作用域中仍指向同一个实例。
(1) 堆栈。驻留于常规RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。创建程序时,Java编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java数据要保存在堆栈里——特别是对象句柄,但Java对象并不放到其中。
(2) 堆。一种常规用途的内存池(也在RAM区域),其中保存了Java对象。和堆栈不同,“内存堆”或“堆”(Heap)最吸引人的地方在于编译器不必知道要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间。因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用new命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。当然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉更长的时间!
(3) 静态存储。这儿的“静态”(Static)是指“位于固定位置”(尽管也在RAM里)。程序运行期间,静态存储的数据将随时等候调用。可用static关键字指出一个对象的特定元素是静态的。但Java对象本身永远都不会置入静态存储空间。
类的初始化顺序如下:
使用new(或其它方法)生成一个新对象时,虚拟机会先加载父类,同时执行父类的静态初始化,然后顺序向下加载子类并执行相应的静态初始化。当加载完后,虚拟机会在此时将所有的实例变量初始化为Java中的默认值(0,false等,不是程序中定义的默认值)。随后,准备执行构造方法体,执行构造方法体之前,会先调用父类的构造方法,再执行父类的构造方法体之前,会先初始化父类实例变量(初始化为程序中定义的默认值)。然后执行父类的构造方法体,接着再依次往回准备执行子类的构造方法体,同样,要先初始化子类的实例变量(初始化为程序中定义的默认值),最后执行子类的构造方法体。
1. 父类的静态初始化
2. 子类的静态初始化
3. 父类的实例变量
4. 父类的构造方法
5. 子类的实例变量
6. 子类的构造方法
Love is patient,love is kind.
It is not jealous,it is not pompous,it is not inflated,it is not rude.
It does not seek its own interests,it is not quick-temperes,it does not brood over injury,it does not rejoice over wrong-doing but rejoice with the truth.
It bears all things,believes all things,hopes all things,endures all things.
Love never fails.
爱是凡事包容,凡事相信恒久忍耐,又有恩慈。
爱是不嫉妒,爱是不自夸,不张狂,不作害羞的事,不求自己的益处,不轻易发怒,不计算人的恶,不喜欢不义,只喜欢真理。
,凡事盼望,凡事忍耐。
爱是永不止息。