科技新闻

理解Certificate、App Id、Identifiers 和 Provisioning Profile

无人久伴 提交于 2020-03-05 11:22:20
做真机测试的时候,按照网上的流程,走通了,当时没有注意各种证书等的意思。现在做消息推送,需要各种证书、APP ID信息,为了更好的理解这个过程,所以整理了网上关于证书等的相关资料。方便自己和有需要的朋友。 内容参考自: http://blog.csdn.net/hitwhylz/article/details/22989507 http://my.oschina.net/u/1245365/blog/196263 当你准备进行真机测试或者发布应用到App Store上去的时候, 免不了要申请相应的证书。(Development--测试证书。 Distribution--发布证书) 进入证书管理相应网站 https://developer.apple.com/account/ios/profile/profileList.action 。 可以很容易的发现这样的几个东西。 其中, Devices指的当然是设备了。 这里不做介绍。每个开发者账号可以关联100台设备。你可以通过xcode直接添加你的设备。 现在, 着重讲解下Certificate、AppId和Provisioning Profile。 Certificate(证书) 证书是你有权利开发的凭证,是开发者的一种标识,相当于身份证,一个开发者账号只有一套。一套含两个,Development和Distribution

Spring中@Async注解实现异步 转

馋奶兔 提交于 2020-03-05 10:38:28
出处: Spring中@Async注解实现异步   异步执行一般用来发送一些消息数据,数据一致性不要求太高的场景,对于spring来说,它把这个异步进行了封装,使用一个注解就可以实现。   Spring中通过在方法上设置 @Async 注解,可使得方法被异步调用。也就是说该方法会在调用时立即返回,而这个方法的实际执行交给Spring的TaskExecutor去完成。 用法   程序启动时开启 @EnableAsync 注解 建立新的类型,建立 异步方法 ,为方法添加 @Async 注解 在业务代码中, @Autowired 注入你的类型,使用它即可 我们可以关注到在配置task的时候,是有参数让我们配置线程池的数量的。因为这种实现方法,所以在同一个类中的方法调用,添加@async注解是失效的!,原因是当你在同一个类中的时候,方法调用是在类体内执行的,spring无法截获这个方法调用. 事例 Spring的配置文件: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www

kafka学习总结之kafka简介

对着背影说爱祢 提交于 2020-03-05 09:48:29
kafka是一个分布式,基于subscribe-publish的消息系统 特性: 高吞吐量、低延迟、可扩展性、持久性(消息持久化到本地磁盘)、可靠性、容错性(n个副本,允许n-1个节点失败)、高并发(支持数千个客户端同时读写) 设计思想: (1) Consumer group:多个consumer可以组成一个group(group-id区分),每个消息只能被组中的一个consumer消费,同时消费一个消息的consumer一定不在同一组; (2) 消息状态:kafka中,消息的状态被保存在consumer中,节点(broker)不关心什么消息被谁消费了,只保存偏移量(指向partition,即分区中下一个即将被消费的消息); (3) 消息的保存:消息会被持久化到本地磁盘中,而且可以(可配置)长期保存,以便consumer可以多次消费; (4) 批量发送:kafka支持以消息集合为单位进行批量发送,从而提高效率 (5) 异步:producer只管向broker push消息,consumer只管从broker pull消息,这个过程是异步的,不存在谁等谁; (6) 集群:kafka集群中的broker地位相同,没有主从关系,可以随意增加或删除任何一个broker,kafka0.8.x通过metadataAPI进行负载均衡,kafka0.7.x主要靠zookeeper进行负载均衡;

Kafka学习笔记1 Kafka简介

帅比萌擦擦* 提交于 2020-03-05 09:48:09
正文 回到顶部 一、简介 1.1 概述 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。 主要应用场景是:日志收集系统和消息系统。 Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。 同时支持离线数据处理和实时数据处理。 Scale out:支持在线水平扩展 1.2 消息系统介绍 一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式: 点对点传递模式、发布-订阅模式 。大部分的消息系统选用发布-订阅模式。 Kafka就是一种发布-订阅模式 。 1.3 点对点消息传递模式 在点对点消息系统中,消息持久化到一个队列中。此时

Kafka学习-简介

余生长醉 提交于 2020-03-05 09:47:58
   Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和高吞吐率而被广泛使用。目前越来越多的开源分布式处理系统如Cloudera、Apache Storm、Spark都支持与Kafka集成。 Kafka创建背景   Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。现在它已被作为多种类型的数据管道和消息系统使用。 活动流数据是几乎所有站点在对其网站使用情况做报表时都要用到的数据中最常规的部分。活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。这种数据通常的处理方式是先把各种活动以日志的形式写入某种文件,然后周期性地对这些文件进行统计分析。运营数据指的是服务器的性能数据(CPU、IO使用率、请求时间、服务日志等等数据)。 kafka作为一个集群运行在一个或多个服务器上, kafka集群存储的消息是以topic为类别记录的, 每个消息(也叫记录record,我习惯叫消息)是由一个key,一个value和时间戳构成。 核心组件 Producer :发布消息到1个或多个topic(主题)。 Comsumer :来订阅一个或多个topic,并处理产生的消息。 Streams :充当一个流处理器

IBM智慧的地球再挑IT业大梁 大中华区重兵上阵

元气小坏坏 提交于 2020-03-05 07:33:47
CNET科技资讯网 2月25日 北京报道(文/梁钦): 无论是一大步,还是一小步,都是牵动IT业发展历程的一步。IBM此次推出“智慧的地球”战略,就像当年发布“电子商务”、“随需应变”等理念一样重要且具有前瞻性,使其再一次走在了IT业界的前头。   昨日,IBM在北京举办了以“点亮智慧的地球——新机遇•新智慧•新世界”为主题IBM论坛2009。论坛上,IBM倡导共建“智慧的地球”,实现文明的跨越。   IBM大中华地区首席执行总裁钱大群在会上诠释了“智慧的地球”战略,并且指出,“中国应该建设智慧的基础设施,激励创新产业,带动内需,创造就业。在这次‘智慧’的浪潮中,中国和中国的企业将成为‘智慧的地球’最大的赢家。”   会上,IBM的大中华区高管团队重装上阵集体亮相并发布了全新战略:在这个特殊的时期,IBM将以中国市场为“基地”,力促“智慧的地球”在中国市场落地,与中国客户共荣共存、共同发展。    IT业角色之变   谈到为何推出“智慧的地球”,钱大群表示,“世界变‘平’了、变‘小’了,不论是经济、社会和技术层面,这个全球整合的世界已经发生重大的变化。当前的金融海啸、全球气候变化、能源危机或者安全问题,向全世界提出了扁平化管理的紧迫需求。”   钱大群指出,“也正是各种各样的危机,使人类能够站在一个面向未来全新发展的门槛上寻求创新,实现文明的跨越。IBM所提出的‘智慧的地球’的愿景

Rabbitmq基本原理

早过忘川 提交于 2020-03-05 06:23:42
MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列中的消息。RabbitMQ是MQ产品的典型代表,是一款基于AMQP协议可复用的企业消息系统。业务上,可以实现服务提供者和消费者之间的数据解耦,提供高可用性的消息传输机制,在实际生产中应用相当广泛。本文意在介绍Rabbitmq的基本原理,包括rabbitmq基本框架,概念,通信过程等。 系统架构 Rabbitmq系统最核心的组件是Exchange和Queue,下图是系统简单的示意图。Exchange和Queue是在rabbitmq server(又叫做broker)端,producer和consumer在应用端。 producer&Consumer producer指的是消息生产者,consumer消息的消费者。 Queue 消息队列,提供了FIFO的处理机制,具有缓存消息的能力。rabbitmq中,队列消息可以设置为持久化,临时或者自动删除。 设置为持久化的队列,queue中的消息会在server本地硬盘存储一份,防止系统crash,数据丢失 设置为临时队列,queue中的数据在系统重启之后就会丢失 设置为自动删除的队列,当不存在用户连接到server,队列中的数据会被自动删除

Spring Boot的日志之旅(一)

随声附和 提交于 2020-03-05 03:42:06
Logback 1.控制台输出 在 Spring Boot默认应用日志配置中,会将日志默认输出到控制台中,在默认情况下,只会记 录 ERROR-level. WARN-Ievel和 INFO-level级别的日志消息。当然,也可以指定日志级别进行日 志输出,如果指定了日志级别,那么只会对应输出高于指定级别的日志信息。 当然, Spring Boot 默认为我们提供了调试模式(建议在开发过程中开启),启动调试模式有如下两种方式 ①启动JAR模式:在启动JAR的时候通过使用- debug标志启动应用程序调试模式,如代码所示:java -jar myapp. jar --debug · ②在配置文件中的配置:在 application.properties或者 application. ym中配置属性 debug=true 2.日志输出 默认情况下, Spring Boot只会将日志消息打印到控制台,并不会将日志写入日志文件,但是 在实际项目中,一定会需要日志文件来分析程序。 其实在 Spring Boot工程中,想要输出控制台之 外的日志文件很简单,只需要在 application. properties文件或 application. yml文件内设置 logging file 或 logging path属性即可: · logging file :设置日志文件

【译】RabbitMQ:工作队列(Work Queue)

独自空忆成欢 提交于 2020-03-05 03:34:36
在第一篇我们写了两个程序通过一个命名的队列分别发送和接收消息。在这一篇,我们将创建一个工作队列在多个工作线程间分发耗时的工作任务。 工作队列的核心思想是避免立刻处理资源密集型任务导致必须等待其执行完成。相反的,我们安排这些任务在稍晚的时间完成。我们将一个任务封装为一个消息并把它发送到队列中。一个后台的工作线程将从队列中取出任务并最终执行。当你运行多个工作线程,这些任务将在这些工作线程间共享。 这个概念对于在一个 HTTP 请求中处理复杂任务的 Web 应用尤其有用。 准备工作 在前一篇中,我们发送了一条内容为“ Hello World !”的消息。现在,我们将要发送一些代表复杂任务的字符串。我们并没有诸如改变图片大小或者渲染 PDF 文件这样的真实的任务,所以假设任务会导致系统的繁忙 -- 通过使用 Threed.Sleep() 函数。我们会采用许多的点( . )在字符串中来表达他的复杂性,每一个点将消耗一秒钟的工作时间。例如,假设有一个任务“ Hello... ”将消耗 3 秒钟。 我们会把上一个例子中的 Send.cs 文件中的代码稍微调整一下,使得对任意的消息都能通过命令行发送。这个程序将调度任务到我们的工作队列中,所以让我们将它命名为 NewTask.cs: 1 var message = GetMessage(args); 2 var body = Encoding

iOS消息机制

落爺英雄遲暮 提交于 2020-03-05 03:24:26
每个应用程序或多或少,都由一些松耦合的对象构成,这些对象彼此之间要想很好的完成任务,就需要进行消息传递。 一下是所有可用的消息传递机制: Core Data managed object context是notification的发送者,而获取这些notification的主体则是接收者。一个滑块(slider)是action消息的发送者,而在代码里面对应着实现这个action的responder就是接收者。对象中的某个属性支持KVO,那么谁修改这个值,谁就是发送者,对应的观察者(observer)则是接收者。 KVO KVO提供了这样一种机制:当对象中的某个属性值发生了改变,可以对这些值的观察者做出通知。KVO的实现包含在Foundation里面,基于Foundation构建的许多Framework对KVO都有所依赖。如果对某个对象中值的改变情况感兴趣,那么可以使用KVO消息传递机制。这里有两个要求,首先,接收者(会接收到值发生改变的消息)必须知道发送者(值将发生改变的那个对象)。另外,接收者同样还需要知道发送者的生命周期,因为在销毁发送者对象之前,需要取消观察者的注册。如果这两个要求都满足了,消息传递过程中可以是1对多(多个观察者可以注册某个对象中的值)。如果计划在Core Data对象上使用KVO,需要知道这跟一般的KVO使用方法有点不同。那就是必须结合Core