前言 学习android一段时间了,为了进一步了解android的应用是如何设计开发的,决定详细研究几个开源的android应用。从一些开源应用中吸收点东西,一边进行量的积累,一边探索android的学习研究方向。这里我首先选择了jwood的Standup Timer项目。本文将把研究的内容笔记整理,建立一个索引列表。关键词 Android.os.Handler涉及较多的知识点,我把一些关键词列举在下面,将主要介绍Handler: android.os.Handler 、 android.os.Handler.Callback Looper、 Threadle、Runnable Message Read More
posted @ 2011-04-07 11:52 yyyyy5101 Views(414) Comments(0) Diggs(0) Edit
十道海量数据处理面试题与十个方法大总结【转】 第一部分、十道海量数据处理面试题1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章:十一、从头到尾彻底解析Hash表算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP是32位的,最多有个2^32个IP。同样可以采用映射的方法,比如模1000,把整个大文件映射为1000个小文件,再找出每个小文中出现频率最大的IP(可以采用hash_. Read More
posted @ 2011-04-06 15:23 yyyyy5101 Views(562) Comments(0) Diggs(0) Edit
本文介绍Spring中的四种声明式事务的配置Spring容器中有两种思想很重要,也就是我们常用的Ioc和Aop。如果理解了这两种思想,对于我们学习设计模式和编程有很大的帮助,美国四人帮(GOF)写的设计模式中,有很多都用到了Ioc的思想。简单的说就是依赖注入的思想。常见的一种情况:如果一个类中要复用另外一个类中的功能时,我们可能会首先想到继承,如果你知道Ioc这种思想的话,我想你不会用继承,你会马上想到把要用到功能抽取出来,在我们要用到的类中只需通过set方法简单的注入就可以了,其实这里用到了对象的组合代替继承,这样不仅避免了单一继承,还很好的实现了松耦合。同时也遵循了面向对象的编程的设计原则 Read More
posted @ 2011-03-25 11:29 yyyyy5101 Views(274) Comments(0) Diggs(0) Edit
概述本章讲述Struts2的工作原理。读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。Struts2是Struts社区和WebWork社区的共同成果,我们甚至可以说,Struts2是WebWork的升级版,他采用的正是WebWork的核心,所以,Struts2并不是一个不成熟的产品,相反,构建在WebWork基础之上的Str Read More
posted @ 2011-03-24 14:52 yyyyy5101 Views(682) Comments(0) Diggs(0) Edit
看过一些关于Java多态性的文章,参考了很多人的理解,加入了一些自己的看法,整理出来供大家参考,不一定完全正确,欢迎大家批评指正。 1. class A ...{ 2. public String show(D obj)...{ 3. return ("A and D"); 4. } 5. public String show(A obj)...{ 6. return ("A and A"); 7. } 8. } 9. class B extends A...{ 10. public String show(B obj)...{ 11. return ( Read More
posted @ 2011-03-23 14:13 yyyyy5101 Views(482) Comments(0) Diggs(0) Edit
栈、堆、常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同。本文将深入Java核心,详细讲解Java内存分配方面的知识。Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域:◆寄存器:我们在程序中无法控制◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中◆堆:存放用new产生的数据◆静态域:存放在对象中用static定义的静态成员◆常量池:存放常量◆非RAM存储:硬盘 Read More
posted @ 2011-03-23 13:46 yyyyy5101 Views(11079) Comments(3) Diggs(4) Edit
在Java程序中,每当启用一个线程时,JVM就为他分配一个Java栈,栈是以帧为单位保存当前线程的运行状态。今天我们继续深入Java核心,探秘JVM中的栈和局部变量。Java开发中,每当我们在程序中使用new生成一个对象,对象的引用存放在栈里,而对象是存放在堆里的。可以看出栈在Java核心的重要位置。今天我们就继续深入Java核心这个系列,为您介绍Java中的栈、局部变量及其之间的关系。Java中的栈每当启用一个线程时,JVM就为他分配一个Java栈,栈是以帧为单位保存当前线程的运行状态。某个线程正在执行的方法称为当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量 Read More
posted @ 2011-03-23 11:55 yyyyy5101 Views(2851) Comments(0) Diggs(2) Edit
在JVM中,内存分为两个部分,Stack(栈)和Heap(堆),这里,我们从JVM的内存管理原理的角度来认识Stack和Heap,并通过这些原理认清Java中静态方法和静态属性的问题。一般,JVM的内存分为两部分:Stack和Heap。Stack(栈)是JVM的内存指令区。Stack管理很简单,push一定长度字节的数据或者指令,Stack指针压栈相应的字节位移;pop一定字节长度数据或者指令,Stack指针弹栈。Stack的速度很快,管理很简单,并且每次操作的数据或者指令字节长度是已知的。所以Java 基本数据类型,Java 指令代码,常量都保存在Stack中。Heap(堆)是JVM的内存数 Read More
posted @ 2011-03-23 11:35 yyyyy5101 Views(436) Comments(0) Diggs(0) Edit
一、java.lang.OutOfMemoryError: PermGen spacePermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决方法也一定是加大内存。说说为什么会内存益出:这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的 Read More
posted @ 2011-03-17 11:01 yyyyy5101 Views(514) Comments(0) Diggs(0) Edit
[转载:http://www.regexlab.com/zh/encoding.htm]级别:初级摘要:本文将完整,通俗地介绍字符编码,软件国际化等相关概念,也就是编码问题,内容涵盖常说的“中文问题”,“乱码问题”。本文针对亚洲的读者,讲解了产生乱码问题的原理以及解决办法。同时也针对西方的读者,讲解了字符编码的概念,为西方国家的朋友开发国际化软件打一个必要的基础。引言“编码问题”是一个被经常讨论的话题。即使这样,时常出现的乱码仍然困扰着大家。虽然有很多的办法可以用来消除乱码,但我们并不一定理解这些办法的内在原理。我们在写出代码并尝试所掌握的办法之前,仍然无法保证乱码不会出现。而有的乱码产生的原 Read More
posted @ 2011-03-14 16:14 yyyyy5101 Views(1053) Comments(0) Diggs(1) Edit