首页 文章 精选 留言 我的

精选列表

搜索[core],共9706篇文章
优秀的个人博客,低调大师

Core Java 2》读书笔记(二)

1,防御性编程。必要时应当考虑采取保护性拷贝的手段来保护内部的私有数据,先来看下面这个例子: 复制代码 pubic final class Period { private final Date start; private final Date end; public Period(Date start, Date end) { if (start.compareTo(end) > 0) throw new IllegalArgumentException(start + "after " + end); this.start = start; this.end = end; } public Date getStart() { return start; } public Date getEnd() { return end; } } 复制代码 这个类存在两个不安全的地方,首先来看第一个攻击代码 Date start = new Date(); Date end = new Date(); Period p = new Period(start, end); end.setYear(78);//改变p的内部数据! 这是因为外部和内部引用了同样的数据,为了解决这个问题,应当修改Period的构造函数: 复制代码 public Period(Date start, Date end) { this.start = new Date(start.getTime()); this.end = new Date(end.getTime()); if (start.compareTo(end) > 0) throw new IllegalArgumentException(start + "after " + end); } 复制代码 这样内部的私有数据就与外部对象指向不同,则不会被外部改变 再来看第二个攻击代码: Date start = new Date(); Date end = new Date(); Period p = new Period(start, end); p.getEnd().setYear(78);//改变p的内部数据! 这很显然是由于公有方法暴露了内部私有数据,我们可以只返回内部私有数据的只读版本(即其一份拷贝) 复制代码 public Date getStart() { return (Date)start.clone(); } public Date getEnd() { return (Date)end.clone(); } 复制代码 2,读到上面这个例子,我想起来了下面这样的代码片段 复制代码 public class Suit { private final String name; private static int nextOrdinal = 0; private final int ordinal = nextOrdinal++; private Suit(String name) { this.name = name; } public String toString() { return name; } public int compareTo(Object o) { return o } public static final Suit CLUBS = new Suit("Clubs"); public static final Suit DIAMONDS = new Suit("diamonds"); public static final Suit HEARTS = new Suit("hearts"); public static final Suit SPADES = new Suit("spades"); private static final Suit[] PRIVATE_VALUES = {CLUBS,DIAMONDS,HEARTS,SPADES}; public static final List VALUES = Collections.unmodifiedList(Arrays.asList(PRIVATE_VALUES)); } 复制代码 本文转自Phinecos(洞庭散人)博客园博客,原文链接:http://www.cnblogs.com/phinecos/archive/2009/09/28/1575645.html,如需转载请自行联系原作者

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

树莓派3 Windows 10 IoT Core

下载地址:https://developer.microsoft.com/zh-cn/windows/iot/Downloads 先下载安装 Windows 10 IoT 核心版仪表板: 安装完成后运行,准备好SD卡 选择好版本SD卡,设置好密码 提示SD卡会被格式化 然后是漫长的下载过程 下载完成 开始写入SD卡 SD卡插入树莓派,通电开机 选择语言 安装完成… 下面捣鼓下看看怎么把带了个3.5的LCD屏幕弄亮… 貌似人家豪都是用7寸的… 本文转自 sun8134 博客园博客,原文链接:http://www.cnblogs.com/sun8134/p/6112207.html ,如需转载请自行联系原作者

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

Spark源码阅读笔记一——part of core

内部accumulator通过心跳报告给drivertask运行时可以累加accumulator,但是不能读取value,value只能在driver获取spark内部用一个weakhashmap保存accumulator,便于gc的清理 CacheManagerspark的类用于负责传递RDD的分区内容给BlockManager,并保证一个节点不会载入一个rdd的两份拷贝,这个通过一个hashset实现,已载入的rdd会将id保存到set中获取和计算rdd时,先判断是否已经计算,如果没有再从blockmanager获取block然后计算结果。除非是本地模式,不然rdd的计算结果都会缓存如果rdd不需要在内存中缓存,则直接将计算结果通过iterator直接传给blockmanager在rdd需要缓存时,我们必须小心不能在内存中一次性展开全部的partition,否则如果jvm没有足够的空间给这个单个的partition可能会引发OOM异常。取而代之的是,我们展开这些value,小心的、可能的放弃并丢掉这个partition到磁盘如果合适。如果空间足够就全部缓存到内存中,否则如果使用磁盘就放到磁盘,不然直接就返回value DependencyNarrowDependency:一个子partition依赖于多个父partitionShuffleDependency:shuffle stage的输出依赖,在shuffle中,rdd是短暂的因为我们在executor端不需要它 ExecutorAllocationClient与cluster manager请求或杀掉executor的客户端根据我们的调度需要更新集群,依赖于三个信息1 executor的数量,我们需要的全部的executor数,cluster manager不能杀掉任何运行中的executor来达到这个数量,这是我们想要分配的executor数量2 所有要运行的stage中有本地偏好的task数量,包括运行等待和完成的task3 task到运行host的map ExecutorAllocationManager(EAM)一个代理,根据工作负载动态的分配和移除executorEAM维护一个移动的目标executor数量,定期的同步到cluster manager。target的数量从配置的一个初始值开始,并根据等待和运行task数变化在当前的target数量多于需要控制的当前的负载时,会减少target数量。target总是会一次性减到可以运行所以当前运行和等待task的数量当需要响应积压的等待需要调度的task时,会增加target的数量。如果一个队列在N秒内没有排空,则新的executor被加入。如果这个队列仍然在另外的M秒内存在,则更多的executor会被加入。增加的数量在每轮以上一轮的指数级增加,直到达到上限。上限是基于一个配置的属性和当前运行和等待任务的数量。指数增长有双重理由。1 executor应该在开始缓慢的增加,以防万一额外需要的executor数量很小。否则我们增加了多于我们需要的executor数量则我们需要在后面移除他们。2 executor的数量需要快速增加,以防万一executor的数量最大值非常高,否则在繁重的工作负载下性能提升需要很长时间。executor移除的策略很简单,如果一个executor已经空闲了K秒,意味着它没有被调度用于执行任何task,因而移除它。这里没有重试的逻辑,因为我们假定cluster manager最终会异步的执行所有它收到的请求。相关的spark属性如下 成员变量initializing,是否需要一直等待初始化的executor集合被分配,当这个变量为true的时候,我们不会取消未执行的executor请求。这个在下面两种情况会被设置成false1 一个stage被提交2 一个executor的空闲时间超时用于增加减少executor的调度任务是一个定时任务,每100毫秒执行一次调度方法上,首先基于添加时间和我们当前的需要调整我们请求的executor,然后如果一个已存在的executor已经过期了,则杀掉。 updateAndSyncNumExecutorsTarget:更新target数量并同步结果到cluster manager。检查我们已存在的分配和之前的请求超过我们现在的需要。如果满足,truncate target数量并让cluster manager知道以便于它可以取消不需要的等待的请求。如果不满足,并且添加的时间超时,看看我们是否能请求新的executor,并刷新添加时间。 当一个executor(程它为executor X)因为到达了下限而没有被删除,则它不会再被标记位空闲。当有新的executor加入,我们不再在最低下限,则我们必须再次标记executor X为空闲,以使我们不会忘记它是一个被移除的候选。当scheduler的队列是空的时候,就会将addtime设为未设置所有cache的block会被报告给driver,但不包括广播的block当executor执行任务了(busy),就会清除它的idle timeprivate val stageIdToExecutorPlacementHints = new mutable.HashMap[Int, (Int, Map[String, Int])]stageid到tuple的map,tuple是节点和将会在这个节点上运行的task的数量taskstart和blockmanageradded这些事件是在不同的线程执行的,因而顺序不一定,taskstart事件中将对应的executor置为busytaskend,如果executor不再运行任何调度的任务,则标记为idle如果task失败,则会将scheduler置为积压任务的状态,将这个task从这个stage对应的task列表中移除

资源下载

更多资源
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部分的功能。

用户登录
用户注册