首页 文章 精选 留言 我的

精选列表

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

分库分表的正确姿势,你GET到了么?

每个优秀的程序员和架构师都应该掌握分库分表,这是我的观点。 移动互联网时代,海量的用户每天产生海量的数量,比如: 用户表 订单表 交易流水表 以支付宝用户为例,8亿;微信用户更是10亿。订单表更夸张,比如美团外卖,每天都是几千万的订单。淘宝的历史订单总量应该百亿,甚至千亿级别,这些海量数据远不是一张表能Hold住的。事实上MySQL单表可以存储10亿级数据,只是这时候性能比较差,业界公认MySQL单表容量在1KW以下是最佳状态,因为这时它的BTREE索引树高在3~5之间。 既然一张表无法搞定,那么就想办法将数据放到多个地方,目前比较普遍的方案有3个: 分区; 分库分表; NoSQL/NewSQL; 说明:只分库,或者只分表,或者分库分表融合方案都统一认为是分库分表方案,因为分库,或者分表只是一种特殊的分库分表而已。NoSQL比较具有代表性的是MongoDB,es。NewSQL比较具有代表性的是TiDB。 Why Not NoSQL/NewSQL? 首先,为什么不选择第三种方案NoSQL/NewSQL,我认为主要是RDBMS有以下几个优点: - RDBMS生态完善; - RDBMS绝对稳定; - RDBMS的事务特性; NoSQL/NewSQL作为新生儿,在我们把可靠性当做首要考察对象时,它是无法与RDBMS相提并论的。RDBMS发展几十年,只要有软件的地方,它都是核心存储的首选。 目前绝大部分公司的核心数据都是:以RDBMS存储为主,NoSQL/NewSQL存储为辅!互联网公司又以MySQL为主,国企&银行等不差钱的企业以Oracle/DB2为主!NoSQL/NewSQL宣传的无论多牛逼,就现在各大公司对它的定位,都是RDBMS的补充,而不是取而代之! Why Not 分区? 我们再看分区表方案。了解这个方案之前,先了解它的原理: 分区表是由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们也可以直接访问各个分区,存储引擎管理分区的各个底层表和管理普通表一样(所有的底层表都必须使用相同的存储引擎),分区表的索引只是在各个底层表上各自加上一个相同的索引,从存储引擎的角度来看,底层表和一个普通表没有任何不同,存储引擎也无须知道这是一个普通表还是一个分区表的一部分。 事实上,这个方案也不错,它对用户屏蔽了sharding的细节,即使查询条件没有sharding column,它也能正常工作(只是这时候性能一般)。不过它的缺点很明显:很多的资源都受到单机的限制,例如连接数,网络吞吐等!从而导致它的并发能力非常一般,远远达不到互联网高并发的要求! 至于网上提到的一些其他缺点比如:无法使用外键,不支持全文索引。我认为这都不算缺点,21世纪的项目如果还是使用外键和全文索引,我都懒得吐槽了! 所以,如果使用分区表,你的业务应该具备如下两个特点: 数据不是海量(分区数有限,存储能力就有限); 并发能力要求不高 Why 分库分表? 最后要介绍的就是目前互联网行业处理海量数据的通用方法:分库分表。 虽然大家都是采用分库分表方案来处理海量核心数据,但是还没有一个一统江湖的中间件,笔者这里列举一些有一定知名度的分库分表中间件: 阿里的TDDL,DRDS和cobar, 京东金融的sharding-jdbc; 民间组织的MyCAT; 360的Atlas; 美团的zebra; sharding-jdbc的3.x版本即sharding-sphere已经支持了proxy模式。 其他比如网易,58,京东等公司都有自研的中间件。总之各自为战,也可以说是百花齐放。 但是这么多的分库分表中间件全部可以归结为两大类型: CLIENT模式; PROXY模式; CLIENT模式代表有阿里的TDDL,京东金融的sharding-jdbc。架构如下: client arch PROXY模式代表有阿里的cobar,民间组织的MyCAT。架构如下: proxy arch 但是,无论是CLIENT模式,还是PROXY模式。几个核心的步骤是一样的:SQL解析,重写,路由,执行,结果归并。 笔者比较倾向于CLIENT模式,架构简单,性能损耗较小,运维成本低。 接下来,以几个常见的大表为案例,说明分库分表如何落地。 实战案例 分库分表第一步也是最重要的一步,即sharding column的选取,sharding column选择的好坏将直接决定整个分库分表方案最终是否成功。而sharding column的选取跟业务强相关,笔者认为选择sharding column的方法最主要分析你的API流量,优先考虑流量大的API,将流量比较大的API对应的SQL提取出来,将这些SQL共同的条件作为sharding column。例如一般的OLTP系统都是对用户提供服务,这些API对应的SQL都有条件用户ID,那么,用户ID就是非常好的sharding column。 这里列举分库分表的几种主要处理思路: 只选取一个sharding column进行分库分表 ; 多个sharding column多个分库分表; sharding column分库分表 + ElasticSearch 再以几张实际表为例,说明如何分库分表。 订单表 订单表几个核心字段一般如下: 以阿里订单系统为例(参考《企业IT架构转型之道:阿里巴巴中台战略思想与架构实现》),它选择了三个column作为三个独立的sharding column,即:order_id,user_id,merchant_code。user_id和merchant_code就是买家ID和卖家ID,因为阿里的订单系统中买家和卖家的查询流量都比较大。而根据order_id进行分库分表,应该是根据order_id的查询也比较多。 这里还有一点需要提及,多个sharding-column的分库分表是全量冗余还是只冗余关系索引表。 冗余全量的情况如下--每个sharding列对应的表的数据都是全量的,这样做的优点是不需要二次查询,性能更好,缺点是比较浪费存储空间: sharding column为order_id: 冗余索引表的情况如下--只有一个sharding column的分库分表的数据是全量的,其他分库分表只是与这个sharding column的关系表,这样做的优点是节省空间,缺点是除了第一个sharding column的查询,其他sharding column的查询都需要二次查询: sharding column为order_id: 总结:选择冗余全量表还是索引关系表,这是一种架构上的trade off,两者的优缺点明显,阿里的订单表是冗余全量表。 用户表 用户表几个核心字段一般如下: 一般用户登录场景即可以通过mobile_no,也可以通过email,还可以通过username进行登录。但是一些用户相关的API,又都包含user_id,那么可能需要根据这4个column都进行分库分表,即4个列都是sharding-column。 账户表 账户表几个核心字段一般如下: 与账户表相关的API,一般条件都有account_no,所以以account_no作为sharding-column即可。 复杂查询 上面提到的都是条件中有sharding column的SQL执行。但是,总有一些查询条件是不包含sharding column的,同时,我们也不可能为了这些请求量并不高的查询,无限制的冗余分库分表。那么这些条件中没有sharding column的SQL怎么处理?以sharding-jdbc为例,有多少个分库分表,就要并发路由到多少个分库分表中执行,然后对结果进行合并。具体如何合并,可以看笔者sharding-jdbc系列文章,有分析源码讲解合并原理。 这种条件查询相对于有sharding column的条件查询性能很明显会下降很多。如果有几十个,甚至上百个分库分表,只要某个表的执行由于某些因素变慢,就会导致整个SQL的执行响应变慢,这非常符合木桶理论。 更有甚者,那些运营系统中的模糊条件查询,或者上十个条件框,任何一个条件可有可无。这种情况下,即使单表都不好创建索引,更不要说分库分表的情况下。那么怎么办呢?这个时候大名鼎鼎的ElasticSearch,即es就派上用场了。将分库分表所有数据全量冗余到es中,将那些复杂的查询交给es处理。 所以,以订单表为例,整个架构如下: archeitecture 总结 对于海量数据,且有一定的并发量的分库分表,绝不是引入某一个分库分表中间件就能解决问题,而是一项系统的工程。需要分析整个表相关的业务,让合适的中间件做它最擅长的事情。例如有sharding column的查询走分库分表,一些模糊查询,或者多个不固定条件筛选则走es。 做了这么多事情后,后面还会有很多的工作,比如运行几年后,某些表的数据量慢慢达到单表瓶颈,这时候还需要做冷数据迁移。总之,分库分表是一项非常复杂的系统工程。任何海量数据的处理,都不是简单的事情,做好战斗的准备吧! 原文发布时间为:2018-09-17 本文作者: Kirito的技术分享 本文来自云栖社区合作伙伴“ ”,了解相关信息可以关注“Kirito的技术分享”。

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

成功者的姿势Get

软件定义存储(SDS)被市场认可 著名分析机构Frost & Sullivan云计算服务副总裁Lynda Stadtmueller认为,软件定义存储的理念不断被接受,技术在市场上广受欢迎,尤其受到MSP、CSP和存储供应商的认可,因为他们在设计现代存储解决方案中需要更大的灵活性。像FreeStor平台这样的技术至关重要,它不仅简化了数据管理和保护环节,而且还将用户从特定供应商解决方案的锁定中解放出来。 FreeStor创新何在? FreeStor是一个横向、异构的软件定义存储平台,从多个角度进行了技术和模式创新,帮助MSP、CSP和存储供应商等公司获得最大程度的灵活性、操作效率、现有存储环境的经济价值以及未来的存储投资,并无缝迁移到公有云、混合云以及异构、闪存、混合存储这样的新架构中。主要体现为如下: l 跨整个存储基础架构的统一的数据服务,具有不间断的可用性及持续性,保证用户无缝地跨虚拟和物理存储平台对数据进行迁移、同步和保护; l FreeStor预测分析技术提供对异构存储系统的实时和历史分析,更好地管理容量、性能和可用性; l 生态系统中的云服务商和管理服务商使用FreeStor为其终端用户带来回报; l FreeStor通过服务订阅进行销售,让用户基于容量所需付费,以消除传统存储平台上很常见的不可预知的扩容和更新成本。 FreeStor过去一年的成绩如何? 飞康在经历12个月的业务转型后,收获了SDS市场的认可。现在,FreeStor管理着全球250多家客户的数据,包括任天堂、富士通、大众、日立等多家知名公司以及与MSP、OEM有合作关系的诸多公司。 FreeStor问世一年来,相信这些纪录值得铭记: l 业内第一个采用跨异构存储的智能预测分析技术,用单一仪表板上实时和历史地洞悉数据,而不管是哪家存储供应商或处于何种位置; l 为MSP和云服务商开发了连接云端的备份即服务(BaaS)、容灾即服务(DRaaS)能力,从而为他们提供更大价值,而且打破了云供应商锁定,简化混合硬件管理; l 与OpenStack、Oracle VM和SAP HANA进行整合; l 支持VMWare、Hyper-V、Xen和KVM 的跨平台虚拟化; l 飞康在2016上半年获得的FreeStor客户数量,比2015年全年还多出过半; l FreeStor在1H16销售的容量是其2015全年销量的11倍; l 目前,一家全球顶级的会计师事务所正在使用FreeStor提供数据保护、恢复、业务连续性及数据迁移; l 德国公用服务提供商Saarbrücker Stadtwerke部署FreeStor,用于建设其最新的数据中心及数据服务; l 目前,全球15家MSP使用 FreeStor为客户提供顶级服务。IT服务商LG CNS正在使用FreeStor进行韩国首个企业级DRaaS部署,其拥有全球业务永不停摆的最高可用性; l 获得了十几个媒体和行业奖,其中包括四个年度最佳产品奖。 FreeStor客户证言 “FreeStor帮助我们提供基础架构服务,支持我们的业务,提供最高级别的可用性和数据安全。尽管未来处于不断变化之中,但是我们知道FreeStor能帮助我们进一步优化环境,并将持续这一趋势,即巩固和减少成本而且不影响我们的客户价值。”瑞士最大的私营电信运营商Sunrise通信集团基础架构服务部技术主管Sandor Orban说道。 拉丁美洲最大的管理服务商Imptech公司CEO Gabriel Enzo Gagliardi说:“我们的客户,特别是金融行业的客户,一直在寻找服务商之间的差异性,以挑选一家在最关键技术上领先,并能提供最好的支持。我们的客户需要的解决方案,要能够提高利用率,降低整体存储成本,并在需要时无缝地迁移数据。我们认为,FreeStor平台可以为我们的客户提供智能、灵活的技术能力,提供通用、高效和最优成本的存储服务以及横跨整个架构对存储资源进行集中管理。” 结语 飞康公司总裁兼CEO Gary Quinn表示:“过去的一年中,我们在技术发展和占据一些我们选中的细分市场方面取得了显著成功。这些细分市场包括企业、服务商和硬件供应商合作伙伴。虽然这些市场的要求各不相同,但他们都发现FreeStor是使其储存环境现代化的最佳解决方案。引入FreeStor标志着公司走入一个非常新颖的转折点。” 而值得注意的是,今年年初,飞康CDP和NSS 同时推出了8.0的新版本,在原有功能的基础上,通过对多核CPU的优化大幅提升了性能,即使在全闪存环境中仍能游刃有余;同时加入了IO Cluster等新功能,进一步拉大了与竞争对手的领先优势。新版本产品已经在国内发货并且有了多个成功的实施项目。与此同时,飞康研发团队仍在继续加速推进,新的9.0版本计划在今年年底推出。事实胜于诡辩,飞康在单点产品上仍然在持续开发和投入,从未放松。 在硬件消费品化的时代,终端用户很难将一个产品和其他的产品区分开来,因此,整合与合作是展示创新和价值的关键所在。飞康公司将带来真正具有突破性的产品,转变数据中心的运营,并为终端用户提供统一而现代化的方法来保护和恢复企业想要的数据。原文发布时间为:2016年8月18日 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

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

这10个术语先get起来

管理员想方设法通过软件定义数据中心(Software-Defined Data Centers,SDDC )将他们的IT战略带到新的高度,但是在开始做规划之前,最好学习以下10个基本的术语。 即使现在对于软件定义数据中心的定义还比较模糊,但是它依旧是IT专家开始努力的一个方向。IT团队可以通过它来减少数据中心的物理硬件,充分利用类似的软件定义网络和软件定义存储的技术,从而增加自动化程度和效率,以及获得其他的好处。 在数据中心内,效率是最关键的——这包括了能源的使用和应用的性能——将数据中心的所有组件软件化,并通过很简单的方式进行部署,这让软件定义数据中心看起来很有吸引力。IT团队可以通过虚拟化和其他方法来交付SDDC服务,不过需要对此十分谨慎,并且需要在SDDC规划的早期阶段就考虑这些服务。 当你决定要向前发展采纳SDDC的时候,如果能参考与SDDC相关的各种术语和技术对你来说会很有帮助。以下有一些关于SDDC规划术语的概要列表,对数据中心准备进行转型时所面临的问题进行了一些介绍。 软件定义网络 (SDN):有了虚拟化的帮助,SDN可以帮你减少在网络管理和排错过程中手工的一些工作,并且让管理员能从一个平台上对整个网络进行控制。利用SDN控制器,智能网络可以管理数据流量,并且告诉交换机我的数据包要传送到哪里。 自动化:自动的任务管理和资源调度是驱动SDDC的重要元素。对于IT经理来说,他们的首要任务是在SDDC中利用一个平台完成自动化计算、存储、安全、网络和其他数据中心服务。除了其他的好处,自动化让管理员把精力放在数据中心的其他地方。 VMware在SDDC的自动化方面有很大的优势,另外其他的一些工具,比如Puppet和Chef都能对自动配置管理有一定的帮助。 软件定义安全 (Software-defined security, SDS):保护数据依旧是数据中心规划中优先级最高的事情,采纳、自动入侵检测、网络分割和其他功能让SDS成为了一个单独的术语。SDS让企业监控数据中心的多个方面,并且确保安全策略可以始终被执行。对于已经采纳了SDN并且最终要采纳SDDC的企业来说,软件定义安全模型能更好地来支持和保护开源协议,例如OpenFlow。 网络虚拟化:网络虚拟化在高密度服务器转型到SDN和SDDC规划阶段中是重要的组件。优化网络速度、可靠性和灵活性是网络虚拟化最重要的地方,这允许网络管理员从一个地方管理文件、软件和其他组件。 要在数据中心部署网络虚拟化,需要考虑二层或者三层网络架构或者overlay网络来将工作流传输到虚拟环境中去。这种部署长期来说应该比起传统数据中心网络来说更加便宜并且更加快速。 软件定义存储 (Software-defined storage, SDS):SDS将重心从传统存储硬件转移到存储相关的服务中去,并且将重复删除和主从复制的特性转移到软件上。SDS的灵活性吸引着管理员,它让管理员能够通过软件和基于策略的管理系统来控制和自动化存储资源。物理存储系统的减少也让管理员的效率得到了质的飞跃。 存储虚拟化:存储虚拟化是能让管理员在一个平台上从多个不同的硬件上对大量的存储数据进行管理的技术。比起物理存储系统,管理员能更快地对存储执行备份、存档和恢复。 服务器虚拟化:服务器虚拟化技术让管理员对用户隐藏服务器资源,并且将数据中心的物理服务器分割成多个服务器环境,称之为虚拟专用服务器(VPS)。在SDDC规划中,服务器虚拟化是通向自动化计算的一步,因为虚拟化环境可以自动管理自己,不需要太多外界的干预。服务器虚拟化需要半虚拟化模型,虚拟机模型或者操作系统层面的虚拟化。 应用软件接口Application Program Interface (API):在开发者写了一个程序向操作系统请求服务之后,API就能让不同软件程序之间进行交流。如果应用程序是用不同语言进行编写的,那么你可以使用中间件来延伸这种程序间的交流。在SDDC中,管理员使用API来管理计算、存储、网络和其他组件。 API的语法会让人觉得很迷惑,但是有一些方法可以解决这些问题并且让它在数据中心中很有效地被使用。 可组合的基础架构:可组合的基础架构将数据中心看成一个服务,并且允许管理员能逻辑上地进行配置而不是配置物理的硬件。开发者可以使用可组合的架构来定义应用程序的需求,并使用API来定义程序需要的基础架构组件。使用可组合的基础架构,不同的硬件的物理位置已经不再重要。这让SDDC规划和采用变得更加灵活。 可组合的基础架构和基础架构即代码有点类似。 超融合基础架构(HCI):HCI是高度集成了计算、存储、网络和虚拟化资源的系统。 HCI和SDDC都给管理员提供了很好的机会,通过一个单一平台管理数据中心任务,并且减少对笨重的硬件的管理。但是这样也会带来一些忧虑,特别是厂商锁定的风险。 本文作者:Tim Culverhouse 来源:51CTO

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

最新网络安全流行技术,你 Get 到了么?

在美国各地数以百万计的员工首次尝试居家办公的情况下,许多组织已开始重新审视零信任安全战略。趋势和技术的融合,再加上对仅仅依靠外围防御实现安全保护所带来风险的新认识,都意味着让零信任成为主流的时机已经成熟。 传统上,IT 安全基于外围防御模型,例如中世纪由护城河环绕的城堡、修建有围墙的城市。这种理念的目的是把入侵者挡到共享空间之外,同时假设围墙内的人都是可以信任的,可以在围墙内自由漫游(或多或少)。 由于目前网络必须容纳的互联设备数量激增,外围安全战略多年来一直处于困境之中。近期发生的一些事件进一步突显了外围防御的局限性,因为 IT 部门在应对突然增多且都是首次使用不受 IT 控制的家用计算机来接入网络的远程工作人员时,显得异常艰难。 不信任任何人 零信任假设任何人都不能信任,这颠覆了传统的网络安全。虽然这听起来有些苛刻,但只要能做到,每个人的工作都会变得更轻松。 想要做到这一点并非易事。若要让“零信任”发挥作用,采用者需要在整个组织范围内作出承诺。他们需要对所有 IT 和数据资产进行分类,并根据角色分配访问权限。在这一过程中,他们需要锁定一些常见漏洞。举例来说,绝对不允许 Web 服务器直接与其他 Web 服务器通信,而只能通过指定的端口与应用服务器进行通信。 数据也需要进行分类。某些信息,例如公司团队的垒球时间安排表,可能根本不需要任何保护。商业秘密和其他专有数据则需要受限用户类别进行多级身份验证。 需要对网络进行分段,以禁止横向移动,而横向移动长期以来一直都是大规模数据泄露的元凶。当工作负载在虚拟机和云服务器之间移动时,必须彼此隔离并受到保护。直到最近,管理这样的环境也一直都是一项艰巨任务,不过形势正在发生变化。 零信任示例 第一个重要的发展是,多重身份验证 (MFA) 最终成为了主流:LastPass披露的数据显示,去年的业务采用率增长至 57%(之前一年为 45%)。MFA 使用二级甚至是三级身份验证,其范围涵盖了从硬件设备到发送给手机的短信代码。尽管它还不够完善,但相比很久以前就已失去作用的基本密码安全机制而言,它是一个巨大进步。 一项重要的技术发展是软件定义网络 (SDN) 的成熟,其中网络管理从物理防火墙和交换机转移到软件。在 SDN 网络中,由于分段是由软件定义并由策略管理的,因此实现网络分段要容易得多。Verizon近期的一项调研发现,57% 的组织希望在两年内实施 SDN,而目前只有 15% 的组织希望采用 SDN。 第三个重要发展是健全的身份和访问管理 (IAM) 系统。这些软件平台通常作为服务交付,会创建联合身份,而这些身份会随用户在整个企业网络和云应用中传播。IAM 会强制执行组织定义的身份验证策略。用户登录一次即可访问大多数的应用,无需跟踪多个登录名和密码。 零信任无法一蹴而就 零信任并不容易实现。上面提到的想法可以帮助您的组织朝着正确的方向迈进,但是如果您不能在一个月甚至一个季度内革新战略,就不要挑战自己的极限。Silicon Angle报道称,Lexmark 用了两年的时间围绕零信任原则来全面革新服务于 8,500个用户的网络。 这一过程需要对公司的所有数据和 IT 资产进行分类,还需要封闭一些漏洞,比如个人计算机上的默认管理权限。首席信息安全官 (CISO) Bryan Willett 花了很多时间向持怀疑态度的用户解释这一决定,但最终的结果是值得的。现在,他们可以更轻松地获取所需数据,而且由第三方服务机构评出的公司安全准备程度得分也大大提高。 当组织针对可能出现的业务中断做准备时,零信任模型会让他们更加放心。在 Gartner魔力象限当中, IBMIAM连续三年占据领导者地位。 作者简介 Paul Gillin Gillin + Laberis 合作伙伴 Paul Gillin曾撰写过有关社交和数字营销主题的 5 本书和 300 多篇文章,目前是 Biznology.com 的一名全职专栏作家。 *点击前往 “IBM安全专区”,了解更多企业安全策略与实践案例 历史精彩文章推荐 >>> *IBM 冯靓:混合云时代的原生安全观 *远程工作环境中的可视性与威胁检测 *如何通过互联性的方法提升威胁管理水平? *保护个人身份信息从这里开始 关于 IBM Security>>> IBM Security 是 IBM 的信息安全解决方案及服务部门,具有多年深耕全球和本地各行各业客户的经验。IBM Security 在全球守护95%的全球五百强企业和组织的信息安全,客户覆盖金融、医疗、汽车、科技、电信、航空等行业公司及集团,包括50家全球最大的金融和银行机构中的49家、15家最大的医疗机构中的14家,15家全球最大科技企业中的14家等。IBM Security 在 Gartner、Forrester、IDC 和其他机构发布的12份不同的分析报告中,有12项技术解决方案被列为领导者,在产业中跻身首列。 【责任编辑: 贺鑫 TEL:(010)68476606】

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

Android:广播优先级、sendOrderedBroadcast、拦截、abortBroadcast、setResultData、get...

必须使用发送有序广播方法,广播优先级才有效: 1 2 3 4 5 6 7 8 9 10 11 12 findViewById(R.id.button1).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction( "com.example.aex56" ); intent.putExtra( "key" , "value" ); sendOrderedBroadcast(intent, null ); //发送有序广播 } }); XML优先级设置: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <receiver android:name= "com.example.aex56_ordered_broadcast.MyReceiver1" android:enabled= "true" android:exported= "true" > <intent-filter android:priority= "2500" > <action android:name= "com.example.aex56" /> </intent-filter> </receiver> <receiver android:name= "com.example.aex56_ordered_broadcast.MyReceiver2" android:enabled= "true" android:exported= "true" > <intent-filter android:priority= "3000" > <action android:name= "com.example.aex56" /> </intent-filter> </receiver> 接收电话呼出广播,为号码添加前缀;接收短信广播,拦截短信。 XML配置: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <?xml version= "1.0" encoding= "utf-8" ?> <manifest xmlns:android= "http://schemas.android.com/apk/res/android" package = "com.example.aex58_ordered_tel" android:versionCode= "1" android:versionName= "1.0" > <uses-sdk android:minSdkVersion= "8" android:targetSdkVersion= "16" /> <uses-permission android:name= "android.permission.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name= "android.permission.RECEIVE_SMS" /> <application android:allowBackup= "true" android:icon= "@drawable/ic_launcher" android:label= "@string/app_name" android:theme= "@style/AppTheme" > <receiver android:name= "com.example.aex58_ordered_tel.MyTelReceiver" android:enabled= "true" android:exported= "true" > <intent-filter> <action android:name= "android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> </receiver> <receiver android:name= "com.example.aex58_ordered_tel.MySmsReceiver" android:enabled= "true" android:exported= "true" > <intent-filter android:priority= "9999999999999999999999999999999" > <action android:name= "android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> 电话呼出接收者MyTelReceiver: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public class MyTelReceiver extends BroadcastReceiver { //监测电话号码 /*1.添加电话呼出权限 * uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" * *2.接收系统电话呼出的广播 * <intent-filter > * <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> * </intent-filter> * * 其他系统广播: * android.intent.action.BOOT_COMPLETED 开机启动广播 */ @Override public void onReceive(Context context, Intent intent) { String telnum = getResultData(); //得到电话号码 telnum = "0592" + telnum; setResultData(telnum); //设置拨出的电话号码 } } 短信接收者MySmsReceiver: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public class MySmsReceiver extends BroadcastReceiver { /* * 拦截短信 * 1.添加短信接收权限 * uses-permission android:name="android.permission.RECEIVE_SMS" * * 2.设置广播优先级,接收系统收短信的广播 * <intent-filter android:priority="99999999999999999999999999"> 设置广播优先级 * <action android:name="android.provider.Telephony.SMS_RECEIVED"/>接收系统收到短信时的广播 * </intent-filter> * * 3.重写onReceive * abortBroadcast(); */ @Override public void onReceive(Context context, Intent intent) { Log.e( "msg" , "mmm" ); abortBroadcast(); //关闭广播 } } 本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1290639,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

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

用户登录
用户注册