科技新闻

Android 用户界面---广播通知(Toast Notifications)

微笑、不失礼 提交于 2020-03-08 17:12:55
广播通知( Toast Notifications ) 广播通知是在窗口表面弹出的一个消息。它只填充消息展现需要的空间,并且用户当前的 Activity 依然可见和可交互。通知自动的渐入渐出,不接受交互事件。 下面图1显示一个例子是闹钟应用的广播通知,一旦闹钟被打开,就会在你设置的提醒时间显示一个广播通知。 图1 广播通知能够由 Activity 或 Service 创建和显示。如果你创建了一个源自 Service 的广播通知,它会显示当前有焦点的 Activity 的前面。 如要需要用户对通知做出响应,请考虑使用状态栏通知。 基础 首先,用 makeText() 方法实例化一个 Toast 对象。这个方法需要三个参数: 1. 应用程序的 Context 对象; 2. 要显示的文本消息; 3. 通知持续表示的时间。这个方法会返回一个合适的被实例化的 Toast 对象。你能够用 show() 方法显示广播通知,显示方法如下: Context context = getApplicationContext (); CharSequence text = "Hello toast!" ; int duration = Toast . LENGTH_SHORT ; Toast toast = Toast . makeText ( context , text , duration );

RocketMQ与kafka的区别

纵然是瞬间 提交于 2020-03-08 11:19:31
一、前言 淘宝内部的交易系统使用了淘宝自主研发的Notify消息中间件,使用MySQL作为消息存储媒介,支持水平扩容。为了进一步降低成本,阿里中间件团队认为Notify可进一步优化。 2011年初,Linkedin开源了kafka, 阿里中间件团队在对kafka做了充分的review之后,被kafka的无限消息堆积能力、高效的持久化速度深深吸引,但同时发现kafka主要定位于日志传输,对于使用在淘宝交易、订单、充值等场景下,还有若干特性不满足。因此,阿里中间件团队基于Java重新编写了RocketMQ,定位于不仅限于日志场景的可靠消息传输。 目前,RocketMQ在阿里集团被广泛应用于订单、充值、交易、流计算、消息推送、日志流式处理、binlog分发等场景。 二、RocketMQ与kafka的不同 1、数据可靠性 RocketMQ:支持异步实时刷盘、同步刷盘、同步复制、异步复制。 kafka:使用异步刷盘方式,异步复制/同步复制。 总结: 1、RocketMQ支持kafka所不具备的“同步刷盘”功能,在单机可靠性上比kafka更高,不会因为操作系统Crash而导致数据丢失。 2、kafka的同步replication理论上性能低于RocketMQ的replication,这是因为kafka的数据以partition为单位,这样一个kafka实例上可能多上百个partition

RabbitMQ入门及AMQP协议简介

大兔子大兔子 提交于 2020-03-08 09:40:46
RabbitMQ是一个消息代理:它接受和转发消息。你可以把它想象成一个邮局:当你把你想寄出的邮件放进一个邮箱里时,你可以确信邮件的收件人最终会收到邮件。在这个类比中,RabbitMQ是一个邮箱、一个邮局和一个邮递员。 RabbitMQ与邮局的主要区别在于,它不处理纸张,而是接受、存储和转发二进制的数据信息块。 RabbitMQ分为三大主体:生产者、消息队列、消费者。 请注意,生产者、消费者和代理不必驻留在同一主机上;事实上,在大多数应用程序中,它们不必驻留在同一主机上。应用程序也可以既是生产者又是消费者。 AMQP协议 Broker:接收和分发消息的应用,消息中间件的系统。 Virtual host:同一个RabbitMQ可以划分出多个虚拟主机,不同用户可以在不同的虚拟主机上创建自己的EXChange,queue。 Connection:publisher/consumer和broker之间的TCP连接,通过Socket进行获取inpustream和outputstream。连接断开操作只会在client端进行,broker不会断开连接。除非网络中断或者broker服务端故障。 Channel:信道,如果每一次访问RabbitMQ都建立一次连接,在消息量大的情况下建立TCP,Connection很消耗资源,而且效率很低。Channel是在Connection内部建立连接逻辑

kafka入门及安装部署

旧城冷巷雨未停 提交于 2020-03-08 09:39:45
kafka入门及安装部署 kafka安装包下载 kafka简介及应用场景 简介 应用场景 kafka安装部署 zookeeper伪分布式集群安装 解压zookeeper 为每个节点建立data目录、logs目录和myid文件 为每个节点创建配置文件 启动zookeeper集群 客户端接入集群 真实分布式集群需要注意的地方 单节点部署方式 下载解压 启动服务 创建一个topic 发送消息 启动消费者 kafka安装包下载 下载 tar.gz 安装包 zookeeper下载地址: https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10 kafka下载地址: http://archive.apache.org/dist/kafka/2.1.0/ 安装文档及安装包下载: https://download.csdn.net/my/uploads/1/1 kafka简介及应用场景 简介 Kafka是一个流处理平台 1.可发布和订阅流数据,类似于消息队列或者企业级消息系统 2.以容错的方式存储流数据 3.可以在流数据产生时就进行处理 应用场景 1.异步处理 2.应用解耦 3.流量削峰 4.消息通讯 5.海量数据同步(日志) 6.任务调度 7.分布式事物 kafka安装部署 zookeeper伪分布式集群安装

Spark Core概述

﹥>﹥吖頭↗ 提交于 2020-03-08 06:42:46
Spark Core是spark的核心与基础,实现了Spark的基本功能,包含任务调度,内存管理,错误恢复与存储系统交互等模块 Spark Core中包含了对Spark核心API——RDD API(弹性分布式数据集)的定义:RDD表示分布在多个计算节点上可以并行操作的元素集合,是spark的核心抽象 Spark Core提供Spark最基础与最核心的功能,主要包括以下功能: (1)SparkContext: 通常而言,Driver Application的执行与输出都是通过SparkContext来完成的。在正式提交Application之前,首先需要初始化SparkContext。SparkContext隐藏了网络通信、分布式部署、消息通信、存储能力、计算能力、缓存、测量系统、文件服务、Web服务等内容,应用程序开发者只需要使用SparkContext提供的API完成功能开发。SparkContext内置的DAGScheduler负责创建Job,将DAG中的RDD划分到不同的Stage,提交Stage等功能。内置的TaskScheduler负责资源的申请,任务的提交及请求集群对任务的调度等工作。 (2)存储体系: Spark优先考虑使用各节点的内存作为存储,当内存不足时才会考虑使用磁盘,这极大地减少了磁盘IO,提升了任务执行的效率,使得Spark适用于实时计算、流式计算等场景

[Python爬虫] 十、Scrapy 框架

时光总嘲笑我的痴心妄想 提交于 2020-03-08 06:14:29
往期内容提要: [Python爬虫] 一、爬虫原理之HTTP和HTTPS的请求与响应 [Python爬虫] 二、爬虫原理之定义、分类、流程与编码格式 [Python爬虫] 三、数据抓取之Requests HTTP 库 [Python爬虫] 四、数据抓取之HTTP/HTTPS抓包工具Fiddler [Python爬虫] 五、数据提取之正则表达式re模块 [Python爬虫] 六、数据提取之XPath与lxml类库 [Python爬虫] 七、结构化数据提取之JSON与JsonPATH [Python爬虫] 八、动态HTML处理之Selenium与PhantomJS [Python爬虫] 九、机器视觉与机器图像识别之Tesseract 一、Scrapy介绍 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取。 这是因为 Scrapy 使用了 Twisted['twɪstɪd]异步网络框架,可以加快我们的下载速度。 异步:调用在发出之后,这个调用就直接返回,不管有无结果 非阻塞:关注的是程序在等待调用结果(消息,返回值)时的状态,指在不能立刻得到结果之前,该调用不会阻塞当前线程。 二、Scrapy的安装介绍 Scrapy框架官方网址: http://doc.scrapy.org/en/latest Scrapy中文维护站点:

第十一章、接收活动(receiveTask,即等待活动)

别等时光非礼了梦想. 提交于 2020-03-08 04:51:35
接收任务是一个简单任务,它会等待对应消息的到达。 当前,官方只实现了这个任务的java语义。 当流程达到接收任务,流程状态会保存到数据库中。 在任务创建后,意味着 流程会进入等待状态 , 直到引擎接收了一个 特定的消息 , 这会触发流程穿过接收任务继续执行。 来源: CSDN 作者: 荒-- 链接: https://blog.csdn.net/wangqing84411433/article/details/104594090

kafka的安装及集群的搭建

徘徊边缘 提交于 2020-03-08 04:49:10
关于kafka的介绍就暂时不写了,我们根据官网来看看如何安装及搭建kafka消息中间件,首先我们去官网把kafka的安装包下载下来,地址是 https://www.apache.org/dyn/closer.cgi?path=/kafka/2.4.0/kafka_2.12-2.4.0.tgz ,因为我们大多都是用的Windows,因此需要将下载下来的安装包上传到Linux环境上面,上传上去后,我们通过以下命令操作 # tar -xzf kafka_2.12-2.4.0.tgz # cd kafka_2.12-2.4.0 进入到kafka文件夹中后,可以看到有bin、libs、config等文件夹,在bin目录里可以看到下面的目录结构 可以看到有关于connect、kafka及zookeeper的配置信息,因此我们可以使用kafka提供的zookeeper来测试使用,如果在正式环境中我们还是需要自己去创建zookeeper集群的,这样才能保证可靠性,接下来我们就需要启动zookeeper了,因为kafka是依赖于zookeeper来做一些操作的,这个将会在后面文章中介绍到,这里就不在叙述,先启动zookeeper吧,如下 ./bin/zookeeper-server-start.sh config/zookeeper.properties 完成了zookeeper的启动

Spring AOP 实现原理

别等时光非礼了梦想. 提交于 2020-03-08 03:49:50
什么是AOP 它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP代表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为;那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹。 使用“横切”技术,AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。Aop 的作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。正如Avanade公司的高级方案构架师Adam Magee所说,AOP的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。” 实现AOP的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式

CPU缓存和内存屏障

好久不见. 提交于 2020-03-08 02:41:17
目录 CPU性能优化手段 - 缓存 多级缓存 缓存同步协议 CPU性能优化手段 - 运行时指令重排 两个问题 解决方法 - 内存屏障 CPU性能优化手段 - 缓存 为了提高程序的运行性能, 现代CPU在很多方面对程序进行了优化 例如: CPU高速缓存, 尽可能的避免处理器访问主内存的时间开销, 处理器大多会利用缓存以提高性能 多级缓存 L1 Cache (一级缓存)是CPU第一层高速缓存, 分为数据缓存和指令缓存, 一般服务器CPU的L1缓存的容量通常在32-4096kb L2 Cache (二级缓存) 由于L1高速缓存的容量限制, 为了再次提高CPU的运算速度, 在CPU外部放置一高速缓存存储器, 即二级缓存 L3 Cache (三级缓存)现在都是内置的, 而它的实际作用既是, L3缓存的应用可以进一步降低内存延迟, 同时提升大数据量计算时处理器的性能. 具有较大L3缓存的处理器更有效的文件系统缓存行为及较短消息和处理器队列长度. 一般是多核共享一个L3缓存 CPU在读取数据时, 先在L1中寻找, 再从L2中寻找, 再从L3中寻找, 然后是内存, 最后是外存储器 缓存同步协议 多CPU读取同样的数据进行缓存, 进行不同运算之后, 最终写入主内存以那个CPU为准? 在这种高速缓存回写的场景下, 有一个缓存一致性协议, 多数CPU厂商对它进行了实现. 即MESI协议,