首页 文章 精选 留言 我的

精选列表

搜索[文档系统],共10000篇文章
优秀的个人博客,低调大师

Android 2.2 r1 API 中文文档系列(11) —— RadioButton

正文 一、结构 public class RadioButton extends CompoundButton java.lang.Object android.view.View android.widget.TextView android.widget.Button android.widget.CompoundButton android.widget.RadioButton 二、概述 单选按钮是一种双状态的按钮,可以选择或不选中。在单选按钮没有被选中时,用户能够按下或点击来选中它。但是,与复选框相反,用户一旦选中就不能够取消选中(译者注:可以通过代码来控制,界面上点击的效果是一旦选中之后就不能取消选中了)。 多个单选按钮通常与RadioGroup同时使用。当一个单选组(RadioGroup)包含几个单选按钮时,选中其中一个的同时将取消其它选中的单选按钮。(译者注:示例参见这里) 三、公共方法 public void toggle () 将单选按钮更改为与当前选中状态相反的状态。 如果这个单选按钮已经选中,这个方法将不切换单选按钮。(译者注:请看源码: 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582695,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android 3.0 r1中文API文档(104) —— ViewTreeObserver

正文 一、结构 public final classViewTreeObserver extendsObject java.lang.Object android.view.ViewTreeObserver 二、概述 用于注册监听的视图树观察者 (observer) ,在视图树种全局事件改变时得到通知。这个全局事件不仅还包括整个树的布局,从绘画过程开始,触摸模式的改变等。 ViewTreeObserver 不能够被应用程序实例化,因为它是由视图提供,参照 getViewTreeObserver() 以查看更多信息。 三、内部类 interface ViewTreeObserver.OnGlobalFocusChangeListener 当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类 interface ViewTreeObserver.OnGlobalLayoutListener 当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类 interface ViewTreeObserver.OnPreDrawListener 当一个视图树将要绘制时,所要调用的回调函数的接口类 interface ViewTreeObserver.OnScrollChangedListener 当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类 interface ViewTreeObserver.OnTouchModeChangeListener 当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类 四、公共方法 public voidaddOnGlobalFocusChangeListener(ViewTreeObserver.OnGlobalFocusChangeListener listener) 注册一个回调函数,当在一个视图树中的焦点状态发生改变时调用这个回调函数。 参数 listener将要被添加的回调函数 异常 IllegalStateException如果isAlive()返回false public voidaddOnGlobalLayoutListener(ViewTreeObserver.OnGlobalLayoutListener listener) 注册一个回调函数,当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时调用这个回调函数。 参数 listener将要被添加的回调函数 异常 IllegalStateException如果isAlive()返回false public voidaddOnPreDrawListener(ViewTreeObserver.OnPreDrawListener listener) 注册一个回调函数,当一个视图树将要绘制时调用这个回调函数。 参数 listener将要被添加的回调函数 异常 IllegalStateException如果isAlive()返回false public voidaddOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener listener) 注册一个回调函数,当一个视图发生滚动时调用这个回调函数。 参数 listener将要被添加的回调函数 异常 IllegalStateException如果isAlive()返回false public voidaddOnTouchModeChangeListener(ViewTreeObserver.OnTouchModeChangeListener listener) 注册一个回调函数,当一个触摸模式发生改变时调用这个回调函数。 参数 listener将要被添加的回调函数 异常 IllegalStateException如果isAlive()返回false public final voiddispatchOnGlobalLayout() 当整个布局发生改变时通知相应的注册监听器。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在GONE状态下,它可以被手动的调用 public final booleandispatchOnPreDraw() 当一个视图树将要绘制时通知相应的注册监听器。如果这个监听器返回true,则这个绘制将被取消并重新计划。如果你强制对视图布局或者在一个没有附加到一个窗口的视图的层次结构或者在一个GONE状态下,它可以被手动的调用 返回值 当前绘制能够取消并重新计划则返回true,否则返回false。 public booleanisAlive() 指示当前的ViewTreeObserver是否可用(alive)。当observer不可用时,任何方法的调用(除了这个方法)都将抛出一个异常。如果一个应用程序保持和ViewTreeObserver一个历时较长的引用,它应该总是需要在调用别的方法之前去检测这个方法的返回值。 返回值 但这个对象可用则返回true,否则返回false public voidremoveGlobalOnLayoutListener(ViewTreeObserver.OnGlobalLayoutListener victim) 移除之前已经注册的全局布局回调函数。 参数 victim将要被移除的回调函数 异常 IllegalStateException如果isAlive()返回false public voidremoveOnGlobalFocusChangeListener(ViewTreeObserver.OnGlobalFocusChangeListener victim) 移除之前已经注册的焦点改变回调函数。 参数 victim将要被移除的回调函数 异常 IllegalStateException 如果isAlive() 返回false public voidremoveOnPreDrawListener(ViewTreeObserver.OnPreDrawListener victim) 移除之前已经注册的预绘制回调函数。 参数 victim将要被移除的回调函数 异常 IllegalStateException 如果isAlive() 返回false public voidremoveOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener victim) 移除之前已经注册的滚动改变回调函数。 参数 victim将要被移除的回调函数 异常 IllegalStateException 如果isAlive() 返回false public voidremoveOnTouchModeChangeListener(ViewTreeObserver.OnTouchModeChangeListener victim) 移除之前已经注册的触摸模式改变回调函数 参数 victim将要被移除的回调函数 异常 IllegalStateException 如果isAlive() 返回false 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582383,如需转载请自行联系原作者

优秀的个人博客,低调大师

Apache Storm 官方文档 —— 理解 Storm 拓扑的并行度(parallelism)概念

一个运行中的拓扑是由什么构成的:工作进程(worker processes),执行器(executors)和任务(tasks) 在一个 Storm 集群中,Storm 主要通过以下三个部件来运行拓扑: 工作进程(worker processes) 执行器(executors) 任务(tasks) 下面是他们之间相互关系的简单图示。 在 Worker 中运行的是拓扑的一个子集。一个 worker 进程是从属于某一个特定的拓扑的,在 worker 进程中会运行一个或者多个与拓扑中的组件相关联的 executor。一个运行中的拓扑就是由这些运行于 Storm 集群中的很多机器上的进程组成的。 一个 executor 是由 worker 进程生成的一个线程。在 executor 中可能会有一个或者多个 task,这些 task 都是为同一个组件(spout 或者 bolt)服务的。 task 是实际执行数据处理的最小工作单元(注意,task 并不是线程) —— 在你的代码中实现的每个 spout 或者 bolt 都会在集群中运行很多个 task。在拓扑的整个生命周期中每个组件的 task 数量都是保持不变的,不过每个组件的 executor 数量却是有可能会随着时间变化。在默认情况下 task 的数量是和 executor 的数量一样的,也就是说,默认情况下 Storm 会在每个线程上运行一个 task。 配置拓扑的并行度(parallelism) 注意,这里所说的术语“并行度”主要是用于表示所谓的parallelism_hint,它代表着一个组件的初始 executor (也是线程)数量。在这篇文章里,我们使用这个“并行度”术语来说明在 Storm 拓扑中既可以配置 executor 的数量,也可以配置 worker 和 task 的数量。如果“并行度”的概念需要表示其他的一般情况,我们也会特别指出。 下面的内容里显示了很多可配置选项,以及在代码中配置他们的方法。可以用于配置的方法有很多种,这里列出的只是其中一部分。另外需要注意的是,Storm 的配置优先级为defaults.yaml<storm.yaml< 拓扑配置 < 内置型组件信息配置 < 外置型组件信息配置。 Worker 数量 说明:拓扑在集群中运行所需要的工作进程数 配置选项:TOPOLOGY_WORKERS 在代码中如何使用(示例): Config#setNumWorkers Executors(线程)数量 说明:每个组件需要的执行线程数 配置选项:(没有拓扑级的通用配置项) 在代码中如何使用(示例): TopologyBuilder#setSpout() TopologyBuilder#setBolt() 注意:从 Storm 0.8 开始parallelism_hint参数代表 executor 的数量,而不是 task 的数量 Tasks 数量 说明:每个组件需要的执行任务数 配置选项:TOPOLOGY_TASKS 在代码中如何使用(示例): ComponentConfigurationDeclarer#setNumTasks() 以下是配置上述参数的一个简单示例代码: topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2) .setNumTasks(4) .shuffleGrouping("blue-spout); 在上面的代码中,我们为GreenBolt配置了 2 个初始执行线程(executor)和 4 个关联任务(task)。这样,每个执行线程中会运行 2 个任务。如果你在设置 bolt 的时候不指定 task 的数量,那么每个 executor 的 task 数会默认设置为 1。 拓扑示例 下图显示了一个与实际应用场景很接近的简单拓扑的结构。这个拓扑由三个组件构成:一个名为BlueSpout的 spout,和两个名为GreenBolt和YellowBolt的 bolt。这些组件之间的关系是:BlueSpout将它的输出发送到GreenBolt中,然后GreenBolt将消息继续发送到YellowBolt中。 图中是一个包含有两个 worker 进程的拓扑。其中,蓝色的BlueSpout有两个 executor,每个 executor 中有一个 task,并行度为 2;绿色的GreenBolt有两个 executor,每个 executor 有两个 task,并行度也为2;而黄色的YellowBolt有 6 个 executor,每个 executor 中有一个 task,并行度为 6,因此,这个拓扑的总并行度就是 2 + 2 + 6 = 10。具体分配到每个 worker 就有 10 / 2 = 5 个 executor。 上图中,GreenBolt配置了 task 数,而BlueSpout和YellowBolt仅仅配置了 executor 数。下面是相关代码: Config conf = new Config(); conf.setNumWorkers(2); // use two worker processes topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); // set parallelism hint to 2 topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2) .setNumTasks(4) .shuffleGrouping("blue-spout"); topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6) .shuffleGrouping("green-bolt"); StormSubmitter.submitTopology( "mytopology", conf, topologyBuilder.createTopology() ); 当然,Storm 还有一些其他的配置项可以控制拓扑的并行度,包括: TOPOLOGY_MAX_TASK_PARALLELISM:该选项设置了一个组件最多能够分配的 executor 数(线程数上限),一般用于在本地模式运行拓扑时测试分配线程的数量限制。你可以通过Config#setMaxTaskParallelism()来配置该参数。 如何修改运行中的拓扑的并行度 Storm 的一个很有意思的特点是你可以随时增加或者减少 worker 或者 executor 的数量,而不需要重启集群或者拓扑。这个方法就叫做再平衡(rebalance)。 有两种方法可以对一个拓扑执行再平衡操作: 使用 Storm UI 使用以下所示的客户端(CLI)工具 下面是使用 CLI 工具的一个简单示例: ## 重新配置拓扑 "mytopology",使得该拓扑拥有 5 个 worker processes, ## 另外,配置名为 "blue-spout" 的 spout 使用 3 个 executor, ## 配置名为 "yellow-bolt" 的 bolt 使用 10 个 executor。 $ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10 转载自并发编程网 - ifeve.com

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册