- ViewModel + LiveData
天籁晴空
Android#kotlinandroidandroidjetpack
ViewModel1、数据持久化2、异步回调问题3、分担UIcontroller负担4、Fragments间共享数据1ViewModel架构组件ViewModel架构组件LiveData1它可以做到在组件处于激活状态的时候才会回调相应的方法,从而刷新相应的UI。2不用担心发生内存泄漏3当config导致activity重新创建的时候,不需要手动取处理数据的储存和恢复。它已经帮我们封装好了。4当Ac
- Android Jetpack 架构组件之 ViewModel 源码分析
allen218
AndroidJetpack架构组件之ViewModel源码分析1.认识ViewModel1.1.ViewModel是什么引用官方介绍:ViewModel被设计成以生命周期感知的方式去存储和管理和UI相关的数据。ViewModel类允许诸如屏幕旋转等配置改变之后继续保存数据。它使得从UIController(Activity或Fragment)将View的数据分离出来变得更加的容易且高效。1.2.
- 在 xml 中使用 LiveData,需要把 lifecycle owner 赋给 binding binding.setLifecycleOwner
锐湃
mvvmjetpackxmlandroidui
如果ViewModel中要用到context怎么办呢?没关系,框架提供了一个ViewModel的子类AndroidViewModel,它在构造时需要传入Application实例。既然ViewModel与UIController无关,当然可以用作MVP的Presenter层提供LiveData给View层,因为LiveData绑定了Lifecycle,所以不存在内存泄露的问题。除此之外,ViewM
- Unity 中带你写MVC架构
ZhenpengYue
unitymvc游戏引擎
1.什么是MVCMVC分别代表Model-View-ControllerModel-模型层,也就是说,他只负责数据View-视图层,也就是说,他只负责更新UIController-控制层,他只负责控制,并关联Model和View这样说大家可能看不懂,看一下这个图会更清晰一点View和Model基本不会直接交流,而是通过Controller进行交流2.准备实现的功能在本文中以这样一个例子去讲解MVC
- Flutter中状态管理的理解
直男程序员
aykff-l7m6b.png一、状态管理认知1、核心解耦我理解的状态管理核心思想是解耦。和别的框架一样,Flutter中的状态管理主要是对逻辑、数据等进行解耦,以适应复杂业务的开发及维护。2、对比其它框架最经典的解耦就是MVC了,划分为三个模块:Model层:数据层View层:页面UIController:逻辑处理现在很多也在用这一经典的模式,MVC模式可以解决大部分的耦合问题,但也存在Cont
- iOS 暗黑模式适配
Just_go
激活暗黑模式在view或者controller中overrideUserInterfaceStyle=.darkprint(traitCollection.userInterfaceStyle)//dark但是显然这样要适配的地方太多,考虑到overrideUserInterfaceStyle这个属性的的影响关系链路为UIScreen-UIWindow-UIController-UIPresent
- 【Unity 笔记】适合小型游戏的UI框架
野奔在山外的猫
Unity游戏开发笔记unity
程序语言:C#开发平台:VisualStudio2019游戏引擎:Unity版本:2019.4.6f1【2017版本以上均可】 一、什么是UI?答:UI设计(或称界面设计)是指对软件的人机交互、操作逻辑、界面美观的整体设计。 二、了解小型游戏的UI框架UIWindow:封装UI界面的访问方式UIEventListener:事件响应监听器UIController:UI行为的管理UIManager:管
- Unity编辑器重写Inspector面板,面板中编辑的数据不触发场景发生变化的问题。...
weixin_30410999
今天开始协助主程一起制作新框架。主程让我写关于新版UI框架注册UI预制体用的快捷编辑器。现学现写,总算完成了。可以直接把选中的预制体添加到UIController的数组中,期间涉及到改变大小。所以使用了List进行临时转换其他调整角标越界问题和一些编辑器基础知识就不需要提了,重点记一下在Inspector面板中若编辑内容场景检测不到变化,需要手动做一些无用操作再Ctrl+S才能保存的问题。在百度上
- UIController
zzZJT1007
一。分段控件(UISegmentedControl)UISegmentedControl*segment=[[UISegmentedControlalloc]initWithItems:@[@"1",@"2",@"3"]];//@[]表示快速创建数组(1)给segmentedControl绑定方法[segmentaddTarget:selfaction:@selector(segmentedAct
- iOS开发 UI 加深理解UIView,UIResponder,UIController
程序员该起什么名字
iOS开发
读完这篇文章后觉得自己对UIViewUIResponder和UIController的理解瞬间增加了一个层次,记下笔记,留给我这忘事精随时查看视图层次概览如果你观察一下UIView的子类,可以发现3个基类:reponders(响应者),views(视图)和controls(控件)。我们快速重温一下它们之间发生了什么。UIResponderUIResponder是UIView的父类。responde
- UIController 跳转
weixin_30532973
对于UINavigationController的跳转,系统有三个方法:-(void)pushViewController:(UIViewController*)viewControlleranimated:(BOOL)animated;//Usesahorizontalslidetransition.Hasnoeffectiftheviewcontrollerisalreadyinthestac
- UI开发----UIController及其子类
guoxianzhuang
ui
//CreatedBy郭仔2015年04月17日23:30:33今天搞了一晚上的设计模式,本来用ios启动流程的初始代理UIApplicationDeleg来设置页面转换的,却越来越麻烦,还是用了简单的笨方法实现了,明天把这个内容写下来。==================没什么时间了,直接上代码:==================UIImageView://=================U
- 加深理解UIView,UIResponder,UIController
莯滢
iOS图像
读完这篇文章后觉得自己对UIViewUIResponder和UIController的理解瞬间增加了一个层次,记下笔记,留给我这忘事精随时查看视图层次概览如果你观察一下UIView的子类,可以发现3个基类:reponders(响应者),views(视图)和controls(控件)。我们快速重温一下它们之间发生了什么。UIResponderUIResponder是UIView的父类。responde
- Android Architecture Components介绍之ViewModel的使用详解
贫道法号Android
ViewModel是一个用生命周期的方式来储存和管理UI数据的类。它被允许在生命周期发生改变时存活,比如屏幕旋转时Activity生命周期的变化。Android框架管理UIcontroller的生命周期。例如:Activity和Fragment。这个框架会根据用户的某些行为和设备的事件来决定销毁或创建UIcontroller,这些不需要我们实现都是次框架来实现。如果系统销毁或创建UIcontrol
- UI(十九)UISwitch 、UISegmentedControl
社会主义顶梁鹿
#pragmamark----目录----1、UISwitch开关2、UISegmentedControl分段选择控制器3、UISlider滑杆4、UIProgressView进度条5、UIActivityIndicatorView等待视图#pragmamark----UIController子类---UIButtonUITextFieldUISwitch开关UISegmentedControl分
- 音乐播放器实现歌词同步
yihu0817
技术学习(j2me)
项目中音乐播放器实现歌词同步思路:1.读取LRC歌词文件信息2.将歌词时间段和对应时间段歌词保存至两个数组中,3.按时间顺序对两个数组进行排序核心代码如下:publicclassSongWord{publicString[]time;publicString[]songWord;publiclong[]songTime;privateUIControllerm_uicontroller;priva
- Android Architecture Components 之 Lifecycle、LiveData、ViewModel
susion哒哒
本文仅是阅读AndroidArchitectureComponents的个人总结。AndroidApp开发的痛点在开发AndroidApp时,由于系统的UIController(Activity、Fragment)Component能够被独立启动并且是无顺序的,他们的生命周期不受开发者的控制,因此当我们的数据依赖这些组件的生命周期时就会发生许多问题。Android官方指出一个重要的开发原则是:我们
- iPhoneX适配
Michael小钻风
参考资料1.(官方文档)为iPhoneX更新您的apphttps://developer.apple.com/cn/ios/update-apps-for-iphone-x/2.各种文章,百度一下、谷歌一下,都会有介绍,大都来自苹果官方文档。根据官方文档可知,在iOS11及以上系统中,UIController的self.View的safeAreaInset属性,在iPhoneX上的值为(44,0,
- IOS superView和subView
红酒佳坊
在Iphone的视图中,其实就是一个一个view,一层view上面放一层view,一个view上面放一群view,甚至UIWindow也是一个view,在网上找了一张图片很能说明这个问题:可见我们能够看到的都是一个view视图,而我们能对其进行操作,是因为UIController和UIView都是UIResponder的子类。这时我们对视图进行操作时需要掌握几个比较重要的概念和几个常用的方法.一个
- OC基础学习6:Fondation Kit介绍
Andy_Ron
macOS->Cocoa->Foundation,AppKitiOS->CocoaTouch->Foundation,UIKit(UIView,UIController)Foundation框架的基础是CoreFoundation(C语言),如果函数或变量是以CF开头,就是CoreFoundation框架中的。Foundation中一些有用的数据类型范围:NSRangetypedefstruct_
- UIController
飞天小猪
UIKit提供了一组控件:UISwitch开关、UIButtonbutton、UISegmentedControl分段控件、UISlider滑块、UITextField文本字段控件、UIPageControl分页控件。控件是对UIView派生类的有用增强及补充,并能够直接附着于导航栏、表格单元,甚至更大的对象。这些控件的基类均是UIControl,而UIControl派生自UIView类,所以每一
- iOS-Runtime方法交换
FlyElephant
iOS开发中需要在原有的方法之后执行新的方法,如果我们想在UIController中的viewWillAppear之后执行其他的操作,或者说需要重写原有的设置颜色,位置等操作,都可以通过方法交换实现,实际操作也很简单,通过分类方法中的load方法实现:@implementationUIViewController(FlyElephant)+(void)load{staticdispatch_onc
- iOS的UIController生命周期
lanmoyingsheng
一、创建1、alloc2、init//有其他资料说loadView在前,但是我测试时,init在前3、loadView4、viewDidLoad5、viewWillAppear6、viewDidAppear二、销毁1、viewWillDisappear2、viewDidDisappear3、viewWillUnload//已作废,不会调用,即使实现这个方法4、viewDidUnload//已作废,
- 关闭键盘的两种方式
陈_振
1.使用户点击对象的视图的其他区域时,也能关闭键盘。向顶层视图发送endEditing:消息会使UITextField:对象(顶层视图的子视图)取消第一响应状态而关闭键盘。为了能让视图拥有目标动作特性,应该将ViewController的视图从UIView对象改为UIController对象,使其能够处理触摸事件。具体操作:选中ViewController.xib中的顶层视图,打开Identity
- QHP_22事件处理
风信子的梦想成真
响应者对象:在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件,我们称之为“响应者对象”,UIApplication,UIController,UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件。触摸事件的方法加速计事件的方法远程控制事件的方法UITouch当用户用一根手指触摸屏幕时,会创建一个与手指相关联的UITou
- addSubview和addChildViewController的区别
kangyiii
多控制器管理(类似于模拟tabBar的实现)的场景下,来讨论这两个方法//society为一个UIController的实例[self.viewaddSubview:society.view];[selfaddChildViewController:society];addSubview劣势:1.控制器其实已经被销毁,但控制器的View却没有被销毁,所以无法处理这个View上的点击事件。addCh
- iOS类似网易新闻的导航标题栏
现在是未来的过去
最后的效果:结构分析:该界面主要是有两个UIScrollView组成,上面的UIScrollView用于存放一组带有点击手势的UILabel(也可以是按钮),下面的UIScrollView用于显示对面标题的UIViewController。当点击上面的UILabel(或UIButton)时,下面的UIScrollView就移动到对应的位置显示标题对应的UIController的内容。/**点击上面
- Swift内存管理
xiaotiger
UIController之间经常需要传递对象而swift中是没有指针的概念的UIController里面定义了一个Person类UIDetailController这两段代码是有区别的self.contact?.name=nameself.contact?.address=addressself.contact?.phone=phone*letcontact=Contact()contact.na
- iOS-基础-UIController生命周期
MonsterNanny
当一个视图控制器被创建,并在屏幕上显示的时候。代码的执行顺序1、alloc创建对象,分配空间2、init(initWithNibName)初始化对象,初始化数据3、loadView从nib载入视图,通常这一步不需要去干涉。除非你没有使用xib文件创建视图4、viewDidLoad载入完成,可以进行自定义数据以及动态创建其他控件5、viewWillAppear视图将出现在屏幕之前,马上这个视图就会被
- iOS 设置电池栏两种方式
FlyingFireFish
iOS暗黑电池栏
说明:info.plist添加Viewcontroller-basedstatusbarappearance对电池栏的设置是有影响的:1、为NO,UIApplication.shared.statusBarStyle生效,此方法已被废弃2、为YES时,UIApplication.shared.statusBarStyle失效,UIController中设置overridevarpreferredS
- java的(PO,VO,TO,BO,DAO,POJO)
Cb123456
VOTOBOPOJODAO
转:
http://www.cnblogs.com/yxnchinahlj/archive/2012/02/24/2366110.html
-------------------------------------------------------------------
O/R Mapping 是 Object Relational Mapping(对象关系映
- spring ioc原理(看完后大家可以自己写一个spring)
aijuans
spring
最近,买了本Spring入门书:spring In Action 。大致浏览了下感觉还不错。就是入门了点。Manning的书还是不错的,我虽然不像哪些只看Manning书的人那样专注于Manning,但怀着崇敬 的心情和激情通览了一遍。又一次接受了IOC 、DI、AOP等Spring核心概念。 先就IOC和DI谈一点我的看法。IO
- MyEclipse 2014中Customize Persperctive设置无效的解决方法
Kai_Ge
MyEclipse2014
高高兴兴下载个MyEclipse2014,发现工具条上多了个手机开发的按钮,心生不爽就想弄掉他!
结果发现Customize Persperctive失效!!
有说更新下就好了,可是国内Myeclipse访问不了,何谈更新...
so~这里提供了更新后的一下jar包,给大家使用!
1、将9个jar复制到myeclipse安装目录\plugins中
2、删除和这9个jar同包名但是版本号较
- SpringMvc上传
120153216
springMVC
@RequestMapping(value = WebUrlConstant.UPLOADFILE)
@ResponseBody
public Map<String, Object> uploadFile(HttpServletRequest request,HttpServletResponse httpresponse) {
try {
//
- Javascript----HTML DOM 事件
何必如此
JavaScripthtmlWeb
HTML DOM 事件允许Javascript在HTML文档元素中注册不同事件处理程序。
事件通常与函数结合使用,函数不会在事件发生前被执行!
注:DOM: 指明使用的 DOM 属性级别。
1.鼠标事件
属性  
- 动态绑定和删除onclick事件
357029540
JavaScriptjquery
因为对JQUERY和JS的动态绑定事件的不熟悉,今天花了好久的时间才把动态绑定和删除onclick事件搞定!现在分享下我的过程。
在我的查询页面,我将我的onclick事件绑定到了tr标签上同时传入当前行(this值)参数,这样可以在点击行上的任意地方时可以选中checkbox,但是在我的某一列上也有一个onclick事件是用于下载附件的,当
- HttpClient|HttpClient请求详解
7454103
apache应用服务器网络协议网络应用Security
HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需
- 递归 逐层统计树形结构数据
darkranger
数据结构
将集合递归获取树形结构:
/**
*
* 递归获取数据
* @param alist:所有分类
* @param subjname:对应统计的项目名称
* @param pk:对应项目主键
* @param reportList: 最后统计的结果集
* @param count:项目级别
*/
public void getReportVO(Arr
- 访问WEB-INF下使用frameset标签页面出错的原因
aijuans
struts2
<frameset rows="61,*,24" cols="*" framespacing="0" frameborder="no" border="0">
- MAVEN常用命令
avords
Maven库:
http://repo2.maven.org/maven2/
Maven依赖查询:
http://mvnrepository.com/
Maven常用命令: 1. 创建Maven的普通java项目: mvn archetype:create -DgroupId=packageName 
- PHP如果自带一个小型的web服务器就好了
houxinyou
apache应用服务器WebPHP脚本
最近单位用PHP做网站,感觉PHP挺好的,不过有一些地方不太习惯,比如,环境搭建。PHP本身就是一个网站后台脚本,但用PHP做程序时还要下载apache,配置起来也不太很方便,虽然有好多配置好的apache+php+mysq的环境,但用起来总是心里不太舒服,因为我要的只是一个开发环境,如果是真实的运行环境,下个apahe也无所谓,但只是一个开发环境,总有一种杀鸡用牛刀的感觉。如果php自己的程序中
- NoSQL数据库之Redis数据库管理(list类型)
bijian1013
redis数据库NoSQL
3.list类型及操作
List是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等,操作key理解为链表的名字。Redis的list类型其实就是一个每个子元素都是string类型的双向链表。我们可以通过push、pop操作从链表的头部或者尾部添加删除元素,这样list既可以作为栈,又可以作为队列。
&nbs
- 谁在用Hadoop?
bingyingao
hadoop数据挖掘公司应用场景
Hadoop技术的应用已经十分广泛了,而我是最近才开始对它有所了解,它在大数据领域的出色表现也让我产生了兴趣。浏览了他的官网,其中有一个页面专门介绍目前世界上有哪些公司在用Hadoop,这些公司涵盖各行各业,不乏一些大公司如alibaba,ebay,amazon,google,facebook,adobe等,主要用于日志分析、数据挖掘、机器学习、构建索引、业务报表等场景,这更加激发了学习它的热情。
- 【Spark七十六】Spark计算结果存到MySQL
bit1129
mysql
package spark.examples.db
import java.sql.{PreparedStatement, Connection, DriverManager}
import com.mysql.jdbc.Driver
import org.apache.spark.{SparkContext, SparkConf}
object SparkMySQLInteg
- Scala: JVM上的函数编程
bookjovi
scalaerlanghaskell
说Scala是JVM上的函数编程一点也不为过,Scala把面向对象和函数型编程这两种主流编程范式结合了起来,对于熟悉各种编程范式的人而言Scala并没有带来太多革新的编程思想,scala主要的有点在于Java庞大的package优势,这样也就弥补了JVM平台上函数型编程的缺失,MS家.net上已经有了F#,JVM怎么能不跟上呢?
对本人而言
- jar打成exe
bro_feng
java jar exe
今天要把jar包打成exe,jsmooth和exe4j都用了。
遇见几个问题。记录一下。
两个软件都很好使,网上都有图片教程,都挺不错。
首先肯定是要用自己的jre的,不然不能通用,其次别忘了把需要的lib放到classPath中。
困扰我很久的一个问题是,我自己打包成功后,在一个同事的没有装jdk的电脑上运行,就是不行,报错jvm.dll为无效的windows映像,如截图
最后发现
- 读《研磨设计模式》-代码笔记-策略模式-Strategy
bylijinnan
java设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化
简单理解:
1、将不同的策略提炼出一个共同接口。这是容易的,因为不同的策略,只是算法不同,需要传递的参数
- cmd命令值cvfM命令
chenyu19891124
cmd
cmd命令还真是强大啊。今天发现jar -cvfM aa.rar @aaalist 就这行命令可以根据aaalist取出相应的文件
例如:
在d:\workspace\prpall\test.java 有这样一个文件,现在想要将这个文件打成一个包。运行如下命令即可比如在d:\wor
- OpenJWeb(1.8) Java Web应用快速开发平台
comsci
java框架Web项目管理企业应用
OpenJWeb(1.8) Java Web应用快速开发平台的作者是我们技术联盟的成员,他最近推出了新版本的快速应用开发平台 OpenJWeb(1.8),我帮他做做宣传
OpenJWeb快速开发平台以快速开发为核心,整合先进的java 开源框架,本着自主开发+应用集成相结合的原则,旨在为政府、企事业单位、软件公司等平台用户提供一个架构透
- Python 报错:IndentationError: unexpected indent
daizj
pythontab空格缩进
IndentationError: unexpected indent 是缩进的问题,也有可能是tab和空格混用啦
Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制程序员养成良好的编程习惯。并且在Python语言里,缩进而非花括号或者某种关键字,被用于表示语句块的开始和退出。增加缩进表示语句块的开
- HttpClient 超时设置
dongwei_6688
httpclient
HttpClient中的超时设置包含两个部分:
1. 建立连接超时,是指在httpclient客户端和服务器端建立连接过程中允许的最大等待时间
2. 读取数据超时,是指在建立连接后,等待读取服务器端的响应数据时允许的最大等待时间
在HttpClient 4.x中如下设置:
HttpClient httpclient = new DefaultHttpC
- 小鱼与波浪
dcj3sjt126com
一条小鱼游出水面看蓝天,偶然间遇到了波浪。 小鱼便与波浪在海面上游戏,随着波浪上下起伏、汹涌前进。 小鱼在波浪里兴奋得大叫:“你每天都过着这么刺激的生活吗?简直太棒了。” 波浪说:“岂只每天过这样的生活,几乎每一刻都这么刺激!还有更刺激的,要有潮汐变化,或者狂风暴雨,那才是兴奋得心脏都会跳出来。” 小鱼说:“真希望我也能变成一个波浪,每天随着风雨、潮汐流动,不知道有多么好!” 很快,小鱼
- Error Code: 1175 You are using safe update mode and you tried to update a table
dcj3sjt126com
mysql
快速高效用:SET SQL_SAFE_UPDATES = 0;下面的就不要看了!
今日用MySQL Workbench进行数据库的管理更新时,执行一个更新的语句碰到以下错误提示:
Error Code: 1175
You are using safe update mode and you tried to update a table without a WHERE that
- 枚举类型详细介绍及方法定义
gaomysion
enumjavaee
转发
http://developer.51cto.com/art/201107/275031.htm
枚举其实就是一种类型,跟int, char 这种差不多,就是定义变量时限制输入的,你只能够赋enum里面规定的值。建议大家可以看看,这两篇文章,《java枚举类型入门》和《C++的中的结构体和枚举》,供大家参考。
枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum
- Merge Sorted Array
hcx2013
array
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:You may assume that nums1 has enough space (size that is
- Expression Language 3.0新特性
jinnianshilongnian
el 3.0
Expression Language 3.0表达式语言规范最终版从2013-4-29发布到现在已经非常久的时间了;目前如Tomcat 8、Jetty 9、GlasshFish 4已经支持EL 3.0。新特性包括:如字符串拼接操作符、赋值、分号操作符、对象方法调用、Lambda表达式、静态字段/方法调用、构造器调用、Java8集合操作。目前Glassfish 4/Jetty实现最好,对大多数新特性
- 超越算法来看待个性化推荐
liyonghui160com
超越算法来看待个性化推荐
一提到个性化推荐,大家一般会想到协同过滤、文本相似等推荐算法,或是更高阶的模型推荐算法,百度的张栋说过,推荐40%取决于UI、30%取决于数据、20%取决于背景知识,虽然本人不是很认同这种比例,但推荐系统中,推荐算法起的作用起的作用是非常有限的。
就像任何
- 写给Javascript初学者的小小建议
pda158
JavaScript
一般初学JavaScript的时候最头痛的就是浏览器兼容问题。在Firefox下面好好的代码放到IE就不能显示了,又或者是在IE能正常显示的代码在firefox又报错了。 如果你正初学JavaScript并有着一样的处境的话建议你:初学JavaScript的时候无视DOM和BOM的兼容性,将更多的时间花在 了解语言本身(ECMAScript)。只在特定浏览器编写代码(Chrome/Fi
- Java 枚举
ShihLei
javaenum枚举
注:文章内容大量借鉴使用网上的资料,可惜没有记录参考地址,只能再传对作者说声抱歉并表示感谢!
一 基础 1)语法
枚举类型只能有私有构造器(这样做可以保证客户代码没有办法新建一个enum的实例)
枚举实例必须最先定义
2)特性
&nb
- Java SE 6 HotSpot虚拟机的垃圾回收机制
uuhorse
javaHotSpotGC垃圾回收VM
官方资料,关于Java SE 6 HotSpot虚拟机的garbage Collection,非常全,英文。
http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html
Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning
&