摘要: Android开发又将带来新一轮热潮,很多开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用。其中也有许许多多的开发者提供了应用开源项目,贡献出他们的智慧和创造力。学习开源代码是掌握技术的一个最佳方式,这些项目不仅提供了优秀的创意,也可以直接掌握 Android内核的接口使用 阅读全文
posted @ 2014-01-09 09:17 elysee 阅读(1683) 评论(5) 推荐(9) 编辑
摘要: 如今移动互联网正处于飞速发展的时期,正式看中这个行业的发展势头,本人在2011年从.NET转行做了移动应用开发这块,接触了android和ios开发,到今已快3个年头,先前忙于学习各种基础知识和语法方面的东西,没有闲暇时间写博客。现在终于能空闲一下时间下来写写博客了。以后主要针对android界面开发和通用框架写一系列的文章。 界面开发(即UI)对于一个移动APP来说是至关重要的,UI客户端不比服务端,服务端只要处理业务逻辑,UI客户端既要处理逻辑又要处理界面交互,并且UI端也是经常变动的,UI设计主要是指软件人机交互、操作逻辑、界面美观,同时还要体现舒适、简单、自由,充分体现定位于特点。.. 阅读全文
posted @ 2014-01-06 21:31 elysee 阅读(1422) 评论(4) 推荐(0) 编辑
摘要: 数据库定义: 数据库是依照某种数据模型组织起来并存在二级存储器中的数据集合,此集合具有尽可能不重复,以最优方式为特定组织提供多种应用服务,其数据结构独立于应用程序,对数据的CRUD操作进行统一管理和控制,数据库是数据管理的高级阶段,是在文件系统上发展起来的。 基本结构: 数据库分三个层次:分别为物理数据层、概念数据层、逻辑数据层。 物理数据层:它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。 概念数据层:它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的... 阅读全文
posted @ 2014-01-06 14:21 elysee 阅读(2646) 评论(3) 推荐(4) 编辑
摘要: 这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱。只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了。对于那些正打算找工作JAVA软件开发工作的童鞋们来说,当你看到这份题目的时候,你应该感动很幸运,因为,只要你把题目中的内容都搞懂了,在笔试的时候就可以游刃有余,通过面试只有半步之遥了,笔试只能反映你的JAVA技能。不管你是面试各个级别的JAVA工程师、架构师、还是项目经理,这个系列文章都是你最宝贵的资源,里面包括整个JAVA体系的知识,总会有你需要的内容。我会将这些面试题目通过文章的形式不断完善,如果你有更好的资料也可以共享出来,分享给.. 阅读全文
posted @ 2013-12-25 23:55 elysee 阅读(57479) 评论(16) 推荐(46) 编辑
摘要: 开篇简述 博客自从大学毕业就开通了,到现在还没发布什么博文,以前不喜欢写博客,但是后来发现写文章其实也是自我提升一个方式,现在的工作不是很忙,趁此机会,写一些文章。此软件工程系统建模系列,以自己在工作中开发OA的系统为参考,结合UML语言来讲述办公自动化系统建模过程,篇幅大概20篇左右,分为建模篇和规划篇,建模篇主要介绍软件开发中各种模型的设计。本文作为开篇,主要简述相关的概念和这个系列的索引,由于本人技术和表述能力有限,错误之处在所难免,通过本系列,将能够学习到软件开发的各种模型设计,不求完美,但求有用。UML概述 UML译为统一建模语言,由面向对象方法领域三位著名学者提出,并结合优秀的.. 阅读全文
posted @ 2013-12-21 09:53 elysee 阅读(1968) 评论(2) 推荐(3) 编辑
摘要: C/C++等纯编译语言从源码到最终执行一般要经历:编译、连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对中Class类文件的加载、连接都在运行时执行,虽然类加载和连接会占用程序的执行时间增加性能开销,但是却可以为java语言带来高度灵活性和扩展性,java的针对接口编程和类加载器机制实现的OSGi以及热部署等就是利用了运行时类加载和连接的特性,java的Class类在虚拟机中的生命周期如下:上图中加载、验证、准备、初始化和卸载这个五个阶段的顺序是确定的,而解析阶段则不一定,在某些情况下为了支持jav 阅读全文
posted @ 2014-01-25 14:07 elysee 阅读(1631) 评论(1) 推荐(1) 编辑
摘要: Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。在加载阶段,java虚拟机需要完成以下3件事:a.通过一个类的全限定名来获取定义此类的二进制字节流。b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的运行时数据结构。c.在java堆中生成一个代表该类的java.lang.Class对象,作为方法区数据的访问入口。Java虚拟机的类加载是通过类加载器实现的, Java中的类加载器体系结构如下:(1).BootStrap ClassLoader:启动类加载器,负责加载存放在%JA 阅读全文
posted @ 2014-01-19 12:48 elysee 阅读(947) 评论(0) 推荐(0) 编辑
摘要: Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不同操作系统和硬件平台的差异性。如今的java虚拟机已经称为一种通用平台,不但能够运行java语言,Groovy,JRuby,Jython等一大批动态语言也可以直接在Java虚拟机上运行,其原理也是这些动态语言的编译器将源码文件编译为和Java相同的字节码文件,这样Java虚拟机就可以像执行java语 阅读全文
posted @ 2014-01-17 14:20 elysee 阅读(1047) 评论(0) 推荐(0) 编辑
摘要: Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK1.6中Sun HotSpot虚拟机的垃圾收集器如下:图中如果两个垃圾收集器直接有连线,则表明这两个垃圾收集器可以搭配使用。(1).Serial垃圾收集器:Serial是最基本、历史最悠久的垃圾收集器,使用复制算法,曾经是JDK1.3.1之前新生代唯一的垃圾收集器。Serial是一个单线程的收集器,它不仅仅只会使用一个CPU或一条线程去完成垃圾收集工作,并且在进行垃圾收集的同时,必须暂停其他所有的 阅读全文
posted @ 2014-01-17 12:58 elysee 阅读(657) 评论(0) 推荐(2) 编辑
摘要: Java虚拟机的内存区域中,程序计数器、虚拟机栈和本地方法栈三个区域是线程私有的,随线程生而生,随线程灭而灭;栈中的栈帧随着方法的进入和退出而进行入栈和出栈操作,每个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,因此这三个区域的内存分配和回收都具有确定性。垃圾回收重点关注的是堆和方法区部分的内存。常用的垃圾回收算法有:(1).引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器都为0的对象就是不再被使用的,垃圾收集器将回收该对象使用的内存。引用计数算法实现简单,效率很高,微软的COM技术、ActionScript 阅读全文
posted @ 2014-01-16 08:37 elysee 阅读(766) 评论(0) 推荐(2) 编辑
摘要: 通过简单的小例子程序,演示java虚拟机各部分内存溢出情况:(1).java堆溢出:Java堆用于存储实例对象,只要不断创建对象,并且保证GC Roots到对象之间有引用的可达,避免垃圾收集器回收实例对象,就会在对象数量达到堆最大容量时产生OutOfMemoryError异常。想要方便快速地产生堆溢出,要使用如下java虚拟机参数:-Xms10m(最小堆内存为10MB),-Xmx10m(最大堆内存为10MB,最小堆内存和最大堆内存相同是为了避免堆动态扩展),-XX:+HeapDumpOnOutOfMemoryError可以让java虚拟机在出现内存溢出时产生当前堆内存快照以便进行异常分析。例子 阅读全文
posted @ 2014-01-15 09:16 elysee 阅读(984) 评论(0) 推荐(0) 编辑
摘要: Java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下:其中方法区和堆是由所有线程共享的数据区。Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区。(1).程序计数器:是一块较小的内存空间,其作用可以看作是当前线程所执行的字节码的行号指示器,字节码解析器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。程序的分支、循环、跳转、异常处理以及线程恢复等基础功能都是依赖程序计数器来完成。Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间片来实现,在任何一个时刻,一个处理器只会执行一条线程指令,因此,为了确保线程切换之后能恢复到正确的执行 阅读全文
posted @ 2014-01-14 16:36 elysee 阅读(1045) 评论(0) 推荐(0) 编辑
摘要: 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:classClxBase{public:ClxBase(){};virtual~ClxBase(){};virtualvoidDoSomething(){coutDoSomething();deletepTest; 的输出结果是:Do something in class ClxDerived!Output from the destructor of class ClxDerived!这个很简单,非常好理解。 但是,如果把类ClxBase析构函数前的virt 阅读全文
posted @ 2014-01-14 14:47 elysee 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 主要介绍那些乐于分享并且有一些很不错的开源项目的个人和组织。Follow大神,深挖大神的项目和following,你会发现很多。一、个人JakeWharton 就职于SquareGithub地址:https://github.com/JakeWharton代表作:ActionBarSherlock,Android-ViewPagerIndicator,Nine Old Androids,SwipeToDismissNOA,hugo,butterknife,Android-DirectionalViewPager, scalpelpidcat另外对square及其他开源项目有很多贡献博客:htt 阅读全文
posted @ 2014-01-09 09:05 elysee 阅读(983) 评论(0) 推荐(0) 编辑