科技新闻

Android系统架构(图解)

早过忘川 提交于 2020-03-28 13:45:16
下图是 Android 操作系统的架构,架构包括 4 层,由上到下依次是应用程序层、应用程序框架层、核心类库和 Linux 内核。其中,核心类库中包含系统库及 Android 运行环境。 图1 Android 操作系统的架构 应用程序层 Android 装配了一个核心应用程序集合,包括 E-mail 客户端、SMS 短消息程序、日历、地图、浏览器、联系人管理程序和其他程序,所有应用程序都是用 Java 编程语言编写的。 用户开发的 Android 应用程序和 Android 的核心应用程序是同一层次的,它们都是基于 Android 的系统 API 构建的。 应用程序框架层 应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布它的功能且任何其他应用程序都可以使用这些功能(需要服从框架执行的安全限制),这一机制允许用户替换组件。 开发者完全可以访问核心应用程序所使用的 API 框架。通过提供开放的开发平台,Android 使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等。 所有的应用程序都是由一系列的服务和系统组成的,主要包括以下几种: 系统/服务 英文名称 说明 视图 View 这里的视图指的是丰富的、可扩展的视图集合,可用于构建一个应用程序,包括列表 (Lists)、网格 (Grids)、文本框

Spring RedisTemplate操作-xml配置(1)

陌路散爱 提交于 2020-03-28 13:37:18
网上没能找到全的spring redistemplate操作例子,故特意化了点时间做了接口调用练习,基本包含了所有redistemplate方法。 该操作例子是个系列,该片为spring xml配置,方便后面做各个数据类型的操作。 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。 <context:annotation-config /> <!-- 把非@Controller注解的类转换为bean --> <context:component-scan base-package="tk.tankpao" /> <cache:annotation-driven /> <context:property-placeholder location="classpath:conf/properties/redis.properties" /> <aop:aspectj-autoproxy proxy-target-class="true"/> <!-- jedis 配置 --> <bean id=

RocketMQ之Broker

那年仲夏 提交于 2020-03-28 10:55:50
一、Broker 介绍 Broker 是 RocketMQ 的核心,大部分 "重量级" 工作都是由 Broker 完成的,如: * 接收 Producer 发送的消息 * 处理 Consumer的消费消息请求 * 消息的持久化存储 * 消息的 HA 机制 * 服务器过滤功能 ...... 二、消息的存储结构 RocketMQ 的消息存储由 ConsumeQueue 和 CommitLog 配合完成。 2.1 ConsumeQueue * ConsumeQueue 是消息的逻辑队列,类似数据库的索引文件,存储着指向物理存储的地址。每个 Topic 下的每个 MessageQueue 都有一个对应的 ConsumeQueue 文件。 * 文件所在路径: ${$storeRoot}\consumequeue\${topicName}\${queueId}\${fileName}。 2.2 CommitLog * CommitLog 是物理存储文件,每个 Broker 上的 CommitLog 被本机器所有的 ConsumeQueue 共享。 * 文件所在路径:${user.homt}\store\${commitlog}\${fileName}。 2.3 存储顺序 RocketMQ 通过一些机制来保证,尽量向 CommitLog 中顺序写入,但是可以随机读取。 三、高可用机制

微信公众号开发之文本消息自动回复,以及系统关注自动回复,php代码

久未见 提交于 2020-03-28 10:23:51
以tshop为例 直接上代码: 企业 cc_wx_sys表为自建,存储系统消息的配置的 字段: id type key status <?php /** * tpshop * ============================================================================ * * 版权所有 2015-2027 深圳搜豹网络科技有限公司,并保留所有权利。 * 网站地址: http://www.tp-shop.cn * ---------------------------------------------------------------------------- * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 . * 不允许对程序代码以任何形式任何目的的再发布。 * ============================================================================ * 微信交互类 */ namespace Home\Controller; use Think\Controller; class WeixinController extends BaseController { public $client; public $wechat

关于异步和多线程的关系

守給你的承諾、 提交于 2020-03-28 05:21:48
个人的理解是这样的: 1. 异步通信的意思是,当A发送完消息之后,不等待B的回应,继续执行之后的程序.在将来的某个时刻,A再来检查是否收到B的回应。 异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。 2. 多线程是程序设计的逻辑层概念,它是进程中并发运行的一段代码。多线程可以实现线程间的切换执行。 3. 异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。 异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。 来源: https://www.cnblogs.com/billy-chou/p/3928640.html

同步(Synchronous)和异步(Asynchronous)

人走茶凉 提交于 2020-03-28 03:56:56
同步、异步的概念   同步 和 异步 通常用来形容一次方法调用。 同步方法 调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 异步方法 调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而,异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作。 图示例 举个栗子  打个比方,比如我们去购物,如果你去商场实体店买一台空调,当你到了商场看中了一款空调,你就想售货员下单。售货员去仓库帮你调配物品。这天你热的实在不行了。就催着商家赶紧给你配送,于是你就等在商场里,候着他们,直到商家把你和空调一起送回家,一次愉快的购物就结束了。 这就是同步调用。   不过,如果我们赶时髦,就坐再家里打开电脑,在网上订购了一台空调。当你完成网上支付的时候,对你来说购物过程已经结束了。虽然空调还没有送到家,但是你的任务都已经完成了。商家接到你的订单后,就会加紧安排送货,当然这一切已经跟你无关了,你已经支付完成,想什么就能去干什么了,出去溜达几圈都不成问题。等送货上门的时候,接到商家电话,回家一趟签收即可。 这就是异步调用。 来源: https://www.cnblogs.com/0bug/p/8874818.html

同步(Synchronous)和异步(Asynchronous)

Deadly 提交于 2020-03-28 03:55:15
同步和异步通常用来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。异步方法调用更像一个消息的传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常会在另外一个线程中“真实”地执行。整个过程,不会阻碍调用者的工作。对于调用者来说异步调用似乎是一瞬间就完成了。如果异步调用需要返回结果,那么当这个异步调用真实完成时,则会通知调用者。 打个比方,比如我们去购物,如果你去商城实体店买一台空调,当你到了商场看中了一款空调,你就想售货员下单。售货员去仓库帮你调配物品。这天你热得实在不行了,就催着商家赶紧给你送货。于是你就等在商店里,候着他们,直到商家把你的空调和你一起送回家里,一次愉快的购物就结束了。这就是同步调用。 不过,如果我们赶时髦,就坐在家里打开电脑,在网上订购一台空调。当你完成网上支付的时候,对你来说购物过程已经结束了。虽然空调还没有到家,但是你的任务都已经完成了。商家接到了你的订单后,就会加紧安排送货当然这一切已经跟你无关了。你已经支付完成,想干什么就能去干什么,出去溜圈都不成问题,等送货上门的时候,接到商家的电话,回家一趟签收完事,这就是异步调用。 来源: https://www.cnblogs.com/loogr/p/7129167.html

同步(Synchronous)和异步(Asynchronous)

◇◆丶佛笑我妖孽 提交于 2020-03-28 03:53:11
同步异步是啥?打个比方: 定义:同步和异步关注的是 消息通信机制 (synchronous communication/ asynchronous communication)。同步,就是调用某个东西是,调用方得等待这个调用返回结果才能继续往后执行。异步,和同步相反 调用方不会理解得到结果,而是在调用发出后调用者可用继续执行后续操作,被调用者通过状体来通知调用者,或者通过回掉函数来处理这个调用 比方说: 你去商城买东西,你看上了一款手机,能和店家说你一个这款手机,他就去仓库拿货,你得在店里等着,不能离开,这叫做同步。现在你买手机赶时髦直接去京东下单,下单完成后你就可用做其他时间(追剧、打王者、lol)等货到了去签收就ok了.这就叫异步。 更具体点拿我们的方法调用来举例子: 同步方法 调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 异步方法 调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而,异步方法通常会在另外一个线程中,“真实”地执行着。整个过程,不会阻碍调用者的工作 我加两张图让你更好理解 同步执行 同步执行当调用方法执行完成后并返回结果,才能执行后续代码 异步执行 异步调用的话可用参考ajax,调用方法后不会等到sum方法执行完成,而是直接执行后续代码。sum方法执行完成后主要通过状态通知主线程

钉钉群自定义机器人群发文本Python代码

我们两清 提交于 2020-03-28 03:40:06
import requests import json def getDingMes(): baseUrl = " your hook address。" # please set charset= utf-8 HEADERS = { "Content-Type": "application/json ;charset=utf-8 " } # 这里的message是你想要推送的文字消息 message = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" stringBody ={ "msgtype": "text", "text": {"content": message}, "at": { "atMobiles": ["1825718XXXX"], "isAtAll": True #@所有人 时为true,上面的atMobiles就失效了 } } MessageBody = json.dumps(stringBody) result = requests.post(url=baseUrl, data=MessageBody, headers=HEADERS) print(result.text) if __name__ == '__main__': getDingMes()   钉钉群自定义机器人群发文本代码 来源

docker下一步步部署sentry

风格不统一 提交于 2020-03-28 03:26:15
sentry概述   Sentry是程序的哨兵,它可以监 控我们在生产环境中项目的运行状态 ,一旦某段代码运行报错或者异常,会第一时间把报错的路由异常文件,请求方式 等一些非常详细的信息 以消息或者邮件给我们 ,让我们第一时间知道:程序出错了,然后我们可以从 Sentry 给我们的详细的错误信息中瞬间找到我们需要处理的代码,及时解决异常! 官方地址: https://github.com/getsentry/onpremise //安装部署 https://sentry.io https://github.com/getsentry/sentry https://github.com/docker-library/docs/tree/master/sentry //dockerhub官方镜像 v9.1.2 ## Requirements * Docker 17.05.0+ * Compose 1.17.0+ ## Minimum Hardware Requirements: * You need at least 3GB RAM env: centos7.x sentry架构 注意:当前分析v9.1.2   Sentry到底是如何实现实时日志监控报警的呢?首先, Sentry是一个C/S架构 ,我们需要在自己 应用中集成Sentry的SDK(支持前后端语言) 才能在