摘要: java参数传递时到底是值传递还是引用传递(baidu搜集)最近比较长一段时间以来,网上的IT同行里面比较流行“JAVA面试32问”,很多人的BLOG里都引用这些面试题,最近因为工作内容比较枯燥,也来看看这些试题以调节一下口味,其中有一道题让我很费解。原题是:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?用google查询结果,得到答案基本上是:值传递。当时觉得挺纳闷儿,为什么连参数的内容都被修改了,怎么还能说是“值传递”呢?因为在传统的印象里(尤其是从C++过来以后),值传递都应该是不改变原参数的。问问周围的同事,也 阅读全文
posted @ 2013-11-04 12:01 Rosepotato 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 1.Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的, 类装载器所做的工作实质是把类文件从硬盘读取到内存中2.java中的类大致分为三种: 1.系统类 2.扩展类 3.由程序员自定义的类3.类装载方式,有两种 1.隐式装载, 程序在运行过程中当碰到通过new 等方式生成对象时,隐式调用类装载器加载对应的类到jvm中, 2.显式装载, 通过class.forname()等方法,显式加载需要的类 隐式加载与显式加载的区别: 两者本质是一样?, ?4.类加载的动态性体现 一个应用程序总是由n多个类组成,Java程序启动时,并不是一次把所有的... 阅读全文
posted @ 2013-11-03 13:27 Rosepotato 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。 三、尤其关键的是,当一个线程访问object的一个synchronized(this 阅读全文
posted @ 2013-11-03 13:02 Rosepotato 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了Thinking in Java, Effective Java,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助。(2012.02.14最后更新)1. 什么是Java对象序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不 阅读全文
posted @ 2013-11-03 12:53 Rosepotato 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 基本使用方法 Serialization是指把类或者基本的数据类型持久化(persistence)到数据流(Stream)中,包括文件、字节流、网络数据流。 JAVA中实现serialization主要靠两个类:ObjectOuputStream和ObjectInputStream。他们是JAVA IO系统里的OutputStream和InputStream的子类。既然他们是JAVA IO中的流,那么就可以像操作一般的流一样来操作他们。下面是他们使用方法:Java代码importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutput 阅读全文
posted @ 2013-11-03 12:52 Rosepotato 阅读(400) 评论(0) 推荐(0) 编辑
摘要: 要使用索引对数据库的数据操作进行优化,那必须明确几个问题:1.什么是索引2.索引的原理3.索引的优缺点4.什么时候需要使用索引,如何使用围绕这几个问题,来探究索引在数据库操作中所起到的作用。1.数据库索引简介回忆一下小时候查字典的步骤,索引和字典目录的概念是一致的。字典目录可以让我们不用翻整本字典就找到我们需要的内容页数,然后翻到那一页就可以。索引也是一样,索引是对记录按照多个字段进行排序的一种展现。对表中的某个字段建立索引会创建另一种数据结构,其中保存着字段的值,每个值还包括指向与它相关记录的指针。这样,就不必要查询整个数据库,自然提升了查询效率。同时,索引的数据结构是经过排序的,因而可以对 阅读全文
posted @ 2013-10-29 14:05 Rosepotato 阅读(1815) 评论(0) 推荐(0) 编辑
摘要: 在进行多个表联合查询的时候,使用索引可以显著的提高速度,刚才用SQLite做了一下测试。建立三个表:create table t1(id integer primary key,num integer not null,word1 text not null,word2 text not null);create table t2(id integer primary key,num integer not null,word1 text not null,word2 text not null);create table t3(id integer primary key,num integ 阅读全文
posted @ 2013-10-29 14:04 Rosepotato 阅读(1043) 评论(0) 推荐(0) 编辑
摘要: 事务处理Posted on2013 年 1 月 1 日by林溪事务为一组SQL命令的集合,这些SQL命令在执行时不可进行分割,即要么全部执行这些SQL命令,要么一个都不进行执行,事务操作不允许出现执行SQL命令集合中的一部分命令。事务的提交事务的提交是指对这个事务中的SQL命令全部执行,更新数据库的状态。下面的事务提交完成后会向数据库中增加13个数据记录。view plaincopy to clipboardprint?BEGINTRANSACTION;INSERTINTOstudentsVALUES(0,'ZhangLincea',13,'F','19 阅读全文
posted @ 2013-10-29 12:31 Rosepotato 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 通俗的讲:AleftjoinB的连接的记录数与A表的记录数同ArightjoinB的连接的记录数与B表的记录数同AleftjoinB等价BrightjoinAtableA:Field_K,Field_A1a3b4ctableB:Field_K,Field_B1x2y4zselecta.Field_K,a.Field_A,b.Field_K,b.Field_Bfromaleftjoinbona.Field_K=b.Field_KField_KField_AField_KField_B----------------------------------------1a1x3bNULLNULL4c4 阅读全文
posted @ 2013-10-28 20:52 Rosepotato 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 一般来说,程序使用内存的方式遵循先向操作系统申请一块内存,使用内存,使用完毕之后释放内存归还给操作系统。然而在传统的C/C++等要求显式释放内存的编程语言中,记得在合适的时候释放内存是一个很有难度的工作,因此Java等编程语言都提供了基于垃圾回收算法的内存管理机制:垃圾内存回收算法常见的垃圾回收算法有引用计数法(Reference Counting)、标注并清理(Mark and Sweep GC)、拷贝(Copying GC)和逐代回收(Generational GC)等算法,其中Android系统采用的是标注并删除和拷贝GC,并不是大多数JVM实现里采用的逐代回收算法。由于几个算法各有优缺 阅读全文
posted @ 2013-10-26 22:52 Rosepotato 阅读(839) 评论(0) 推荐(0) 编辑