首页 文章 精选 留言 我的

精选列表

搜索[官方镜像],共10000篇文章
优秀的个人博客,低调大师

Adobe 发布最后的 Flash 更新:官方强烈建议立即卸载

外媒 Winfuture 报道,Adobe 的 Flash 格式迅速从动画网络故事的英雄变成了网络广告的反派,让你的 PC 速度变慢,最终成为恶意软件的载体。 该 Flash 格式已经经历了二十年,该技术最终将在几周后退出支持,即 2020 年 12 月 31 日。 今天 Adobe 发布了他们最后的 Flash Player 更新公告。 2020 年 12 月 8 日 Flash 更新公告 “今天是 Flash Player 在中国大陆以外所有地区的最终发布版本。我们想借此机会感谢所有在过去 20 年中使用和创造 Flash Player 内容的客户和开发人员。我们很自豪,我们曾经让 Flash 在创建动画、交互性、音频和视频网络内容方面发挥了关键作用,现在我们期待着帮助大家塑造下一个数字体验的时代。 Adobe 将在 2020 年 12 月 31 日之后停止支持 Flash Player,Adobe 将从 2021 年 1 月 12 日开始阻止 Flash 内容在 Flash Player 中运行;Adobe 强烈建议所有用户立即卸载 Flash Player 以保护自己的系统。 部分用户可能仍会看到 Adobe 发出的提醒,要求他们从系统中卸载 Flash Player。有关希望手动卸载 Flash Player 的用户的更多详细信息和说明链接,请访问我们的【关于 Flash Player EOL 的一般信息 】页面 。” 微软已经在发布累积更新,从 Windows 10 安装中移除 Flash,Flash Player 本身将在 2021 年 1 月 12 日前停止工作。

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

ASF 官方正式宣布 Apache Hudi 晋升为顶级项目

Apache 软件基金会( Apache Software Foundation,ASF)于官网发文,正式宣布 Apache Hudi 晋升为 Apache 顶级项目(TLP)。 Apache Hudi(Hadoop Upserts Delete and Incremental)数据湖技术可在 Apache Hadoop 兼容的云存储和分布式文件系统之上进行流处理。该项目最初于 2016 年在 Uber 开发(代号和发音为"Hoodie"),于 2017 年开源,并于 2019 年 1 月提交给 Apache 孵化器。 它的核心功能包括: 可插拔式的索引支持快速 Upsert/Delete。 事务提交/回滚数据。 支持捕获Hudi表的变更进行流式处理。 支持 Apache Hive、Apache Spark、Apache Impala 和 Presto 查询引擎。 内置数据提取工具,支持 Apache Kafka、Apache Sqoop 和其他常见数据源。 通过管理文件大小,存储布局来优化查询性能。 基于行存快速提取模式,并支持异步压缩成列存格式。 用于审计跟踪的时间轴元数据。

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

阿里巴巴小程序繁星计划 官方钉群正式上线

3月21日,在2019阿里云峰会·北京上,阿里巴巴旗下的阿里云、支付宝、淘宝、钉钉、高德等联合发布“阿里巴巴小程序繁星计划”:提供20亿元补贴,扶持200万+小程序开发者、100万+商家。凡入选“超星”的小程序,入驻支付宝、淘宝、钉钉、高德后还能得到流量重点支持。 阿里云同时发布小程序云,提供一站式云服务,为开发者提供稳定和便捷的后端云服务,包括serverless开发套件、应用托管服务、函数计算等。支付宝、高德、淘宝、钉钉及众多第三方上亿流量的小程序后端获统一标准。开发者可在这些小程序端上进行统一的应用发布、资源管理、数据管理。 未来,阿里巴巴商业操作系统的业务能力也将在小程序云上逐步开放,帮助电商、金融、生活服务等各行业开发者和企业客户快速链接阿里巴巴经济体生态。 阿里巴巴小程序云应用已经正式启动,已获得广大开发者的热烈关注,为了和

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

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

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

Google官方关于Android架构中MVP模式的示例续-DataBinding

基于前面的TODO示例,使用Data Binding库来显示数据并绑定UI元素的响应动作。 这个示例并未严格遵循 Model-View-ViewModel 或 Model-View-Presenter 模式,其中既有View Model,也有Presenter。 用到的Data Binding库保存样板代码,该代码允许将UI元素绑定到Data Model的一个属性。 布局文件中直接绑定数据到UI元素上 事件也与动作Handler进行绑定 数据可以被监听并根据需要自动同步更新 数据绑定 在上个例子中,Task描述在TaskDetailFragment中被设置: public void onCreateView(...) { ... mDetailDescription = (TextView) root.findViewById(R.id.task_detail_description); } @Override public void showDescription(String description) { mDetailDescription.setVisibility(View.VISIBLE); mDetailDescription.setText(description); } 本示例中,TaskDetailFragment会很潇洒的将Task数据传递给Data Binding层: @Override public void showTask(Task task) { mViewDataBinding.setTask(task); } 该库还会考虑到数据的显示问题,只要在布局中定义一下即可: (taskdetail_frag.xml) <TextView android:id="@+id/task_detail_description" ... android:text="@{task.description}" /> 事件绑定 数据绑定消除了findViewById(),而事件绑定则用于最小化 setOnClickListener(). taskdetail_frag.xml文件中的CheckBox,当用户触摸它时,Presenter直接被调用: <CheckBox android:id="@+id/task_detail_complete" ... android:checked="@{task.completed}" android:onCheckedChanged="@{(cb, isChecked) -> presenter.completeChanged(task, isChecked)}" /> 监听数据(Observing data) 显示任务列表的视图层(TasksFragment)只需知道列表数据为空,以便显示恰当的提示消息。它用到TasksViewModel来给布局提供该信息。当列表大小被赋值时,只有相关属性会被通知且绑定到这些属性的UI元素会被更新。 public void setTaskListSize(int taskListSize) { mTaskListSize = taskListSize; notifyPropertyChanged(BR.noTaskIconRes); notifyPropertyChanged(BR.noTasksLabel); notifyPropertyChanged(BR.currentFilteringLabel); notifyPropertyChanged(BR.notEmpty); notifyPropertyChanged(BR.tasksAddViewVisible); } 功能组件 用DataBinding库可以有多种方式来创建相关。本示例中,每个组件的职责为: Activity: 对象创建入口 Fragment: 与Android框架中的组件交互 (options menu, Snackbar, FAB, Adapter for list…) Presenter: 接收用户动作并从数据仓库中检索数据。如果它进行数据加载的工作,则去调用一个动作处理类来完成 (TasksItemActionHandler) ViewModel: 暴露数据给指定视图 有些功能没有用到 ViewModel (TaskDetail, AddEditTask) ,这时他们是直接使用Task模型的 依赖 Data Binding 库. 特征(译:废话就不再翻译了) 可测试性 单元测试 UI测试 代码量 可维护性 增添特性容易 学习成本 https://github.com/googlesamples/android-architecture/tree/todo-databinding/

资源下载

更多资源
Mario

Mario

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

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

用户登录
用户注册