自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(175)
  • 收藏
  • 关注

原创 网络编程--守护进程

网络编程–堵塞式IO相关函数介绍网络编程–探讨一些边界条件网络编程–IO复用select和poll本篇文章是阅读《UNIX网络编程卷1》的第13章的学习笔记,主要介绍了守护进程以及inetd超级服务器,本篇学习笔记还结合了《UNIX环境高级编程》中第9章和第13章的内容,从一些概念开始例如进程组、会话等等,接着给出创建守护进程的步骤以及代码示例、另外还会介绍LInux的日志系统、inetd守护进程作用流程。终端登录流程控制终端指的是键盘、显示器等等,当我们使用控制终端登录系统的时候,终端登录流程如

2022-04-16 10:10:56 357

原创 网络编程--IO复用select和poll

C++Scoket编程–堵塞式IO相关函数介绍C++Socket编程–探讨一些边界条件本篇文章是阅读《UNIX网络编程卷1》的第六章的学习笔记,首先是介绍select模型,为什么需要select来处理网络编程?接着就是介绍select函数的用法和poll函数,在最后结合网上一些文章博客去探讨select和poll函数的底层原理概述在文章C++Socket编程–探讨一些边界条件中提到过,由于TCP客户端需要同时处理两个输入,标准输入和套接字,当客户堵塞于标准输入输出时,将服务端进行杀死,服务器TCP虽

2022-04-11 22:26:34 1063

原创 基于Spark的农产品分析系统

本篇文章为大学毕业实习项目-基于Spark的农产品分析系统的文档,从搭建环境到代码编写以及成果展示。Hadoop环境搭建集群规划服务器IP192.168.18.101192.168.18.102192.168.18.103主机名hadoop01hadoop02hadoop03NameNode是否否SecondaryNameNode是否否dataNode是是是ResourceManager是否否NodeManager是

2022-04-09 15:31:06 4912 11

原创 网络编程--探讨一些边界条件

本篇文章接上一节《C++Scoket编程–堵塞式IO相关函数介绍》,在上一节中主要介绍了TCP程序中几个出现的必要程序,例如scoket、bind、listen、accept函数,但是并没有介绍在接受发送数据时的写入写出函数,我觉得这些虽然在堵塞IO中时堵塞的关键之一,但是并不打算介绍这些流函数,在书中是对这些函数有介绍的。本节主要是第五章的学习笔记,会探讨一些边界条件:当程序运行的时候,客户和服务器同时启动会发生什么?客户正常终止会发生什么?若服务器进程在客户之前终止,会发生什么?服务器主机崩溃

2022-04-05 23:26:57 3124

原创 网络编程--堵塞式IO相关函数介绍

本篇文章是《UNIX网络编程卷1》第三、四、五章阅读笔记,首先给出该书第五章的代码示例,然后依次剖析其中的代码深入理解在Linux下的网络编程,同时结合《TCP/IP协议详解卷》更加深入的理解TCP三次握手、四次挥手的作用机理,配合对应的代码,理解其中的过程。当然由于是使用c++编写,对于除Socket编程除外的代码与c会有比较大的出入,不是完全按照书本实现,但是Socket编程是一样的,并不影响我们理解Socket代码完整的TCP程序service.cpp#include <iostream&

2022-04-03 23:14:07 2117

原创 C++(3)--预处理编程、attribute、static_assert、=default、using

本系列开始为《罗剑锋的C++实战》阅读笔记。Code Style看过很多计算机的书籍,但是在代码风格这块,很少有着文章有着介绍,自己的代码风格也完全是参照语言书籍上的代码示例形成的,但是对于程序来说,Code Style是必不可少的。文章中提到一个观点,“好程序里的空白行至少要占到总行数的 20% 以上 ”,也就是说在变量=的前后,一段代码的前后需要通过空格或者空行来提高美感,例如下面,是一段代码没有任何的空格与空行加上一些空格或者空行之后“缓存失效与命名是计算机科学的两大难题 ”命名格式也是

2022-03-14 11:12:51 407

原创 C++(2)--static、this、inline

static当static作为函数中的静态变量,当变量声明为static时,空间将在程序的生命周期内分配,即使多次调用该函数,静态空间的地址也只分配一次,前一次调用中的遍历值通过下一次函数调用传递。也就是说该变量在内存中只有一份拷贝#include<iostream>using namespace std;void demo(){ static int count = 0; cout << count << " "; count++;

2022-02-19 15:48:54 545

原创 C++(1)--引言与const

引言对于C++这门语言,接触过很多次,基本的使用都会(我是Java语言入门的),但是考虑到以后的工作可能会使用到更多的C++和Go,所以还是决定再次系统的学习一下C++语言的一些语法,学习路线很简单,根据Github上的CPlusPlusThings项目学习搭配适量的写题。对于C/C++,估计很多的Java程序员都会对它产生敬佩也许是敬畏,包括我,但是对于我本人来说,在走过Java入门,学习过Spring的生态之后,其实我对于Java这门语言的兴趣稍微下降了,Java和C/C++同样是工具,但是Java更

2022-02-18 19:31:33 504

原创 CPU使用率过高应该如何处理

CPU使用率如何计算的CPU使用率是单位时间内CPU使用情况的统计,以百分比的方式展示,而其中有一个重要的点是单位时间,那么在CPU中时间是怎么计算的呢?Linux是一个多任务操作系统,将每个CPU时间划分为很短的时间片,然后通过调度器分配给各个任务使用,因此造成多任务同时运行的错觉,为了维护CPU时间,Linux通过事先定义的节拍率(内核中表示为HZ),触发时间中断,并且使用全局变量Jiffies记录开机以来的节拍数,每发生一次时间中断,Jiffies的值就加1。节拍率HZ是内核的可以配置的选项,可以

2021-12-01 14:08:02 5657

原创 通过实战理解CPU上下文切换

Linux是一个多任务的操作系统,可以支持远大于CPU数量的任务同时运行,但是我们都知道这其实是一个错觉,真正是系统在很短的时间内将CPU轮流分配给各个进程,给用户造成多任务同时运行的错觉。所以这就是有一个问题,在每次运行进程之前CPU都需要知道进程从哪里加载、从哪里运行,也就是说需要系统提前帮它设置好CPU寄存器和程序计数器CPU上下文CPU上下文其实是一些环境正是有这些环境的支撑,任务得以运行,而这些环境的硬件条件便是CPU寄存器和程序计数器。CPU寄存器是CPU内置的容量非常小但是速度极快的存储设

2021-11-30 15:30:02 2615

原创 top、uptime命令执行后的平均负载如何理解

怎么理解平均负载每当系统变慢的时候,我们下意识的就会想到使用top或者uptime命令来查看系统当前运行的状态,其中一个非常重要的指标便是平均负载,例如下面的一组数据$ uptime 10:35:11 up 9 min, 1 user, load average: 0.03, 0.14, 0.13前几列数据很简单,当前时间,系统运行时间,正在登陆的用户数,而最后的便是平均负载,显示的是1分钟、5分钟、15分钟的平均负载那么到底如何理解平均负载呢?用man命令查看uptime的一些帮助信息

2021-11-28 22:53:26 1082

原创 《程序员的自我修养-链接、装载与库》 读书笔记(3)-静态链接

前面一个篇章介绍了ELF文件格式,目前存在的问题是当我们有两个目标文件的时候编译器如何将它们链接起来,然后符号怎么样转化为最终的虚拟地址,而这就是静态链接静态链接:指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分动态链接:所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息空间与地址分配例如有如下两个c源程序//1.cextern int shared;int main(){ int a = 100; sw

2021-11-06 14:43:51 140

原创 《程序员的自我修养-链接、装载与库》-读书笔记(2)-目标文件有什么

目标文件从结构上来说是编译后的可执行文件,只是没有经过链接的过程,也就是说其中可能有些符号或者地址还没有被调整,研究目标文件的内容对认识系统、了解背后的机理有很大的好处符号用来表示一个地址,这个地址可能是某一段子程序的起始地址,也可以是一个变量的地址目标文件的格式目标文件与可执行文件的格式很相似,一般和可执行文件格式采取同一种格式存储,可执行文件格式在目前PC机下主要是Win下的PE和Linux的ELF,从广义上看,目标文件与可执行文件的格式其实几乎是一样的,在 Windows下,我们可以统称它们

2021-11-04 18:15:41 148

原创 《程序员的自我修养-链接、装载与库》读书笔记(1)-编译和链接

《程序员的自我修养-链接、装载与库》读书笔记1.写在最开始学习C语言的时候,最经典的入门便是Hello Word,然后使用一系列IDE运行便可打印Hello World,但是其中的运行原理我到现在都不是清除,即便现在大四已经是找到了不错的工作,而《程序员的自我修养-链接、装载与库》这本书便打开了我对其中底层原理探索的大门#include<stdio.h>int main(){ printf("Hello World\n"); return 0;}书中第一部分便提出下

2021-11-04 09:07:04 233

原创 MySQL-重新理解索引优化原则以及操作实践

前几天字节面试,问我了解MySQL的索引吗,然后直接抛出了几道题给我,发现对这一块的知识还是理解的不深刻,所以重新学习索引相关的知识Explain字段分析环境准备:CREATE TABLE t1(id INT(10) AUTO_INCREMENT,content VARCHAR(100) NULL , PRIMARY KEY (id));CREATE TABLE t2(id INT(10) AUTO_INCREMENT,content VARCHAR(100) NULL , PRIMARY KEY

2021-07-31 17:54:01 7520

原创 高效的数据类型-跳表的原理与实现Java版本

本篇文章重在实现,跳表这种数据结构第一次接触是在Redis里面,当时只是学习了跳表的理论知识,光靠理论是难以支撑的,这点在字节面试过程中被问到跳表便可体会到跳表是一种非常高校的数据结构,是由美国科学家William Pugh发明的,他在一篇论文里面非常详细的介绍了跳表数据结构和插入删除等操作基本思想首先,跳表是对有序链表的改进,对于普通链表来说无论是普通链表还是有序链表,对于一个节点的查找操作都需要从头部开始逐个比较,有序链表有序的性质在这里不可用。有什么办法能用到有序链表的有序性质呢,使得有序链表的

2021-07-30 10:04:19 7557

原创 Kubernetes--Pod详解--Pod的生命周期

简介在前面的一些实验中,已经体会过当一个Pod由于某种原因挂掉之后又重新启动,例如启动busybox由于没有后台进程Pod,Pod会一直重启。也就是说K8s可以检测到Pod是否存活,能检测到Pod是否可以对外进行提供服务,这就涉及到Pod的生命周期问题Pod的生命周期从整体上看,一共有以下几个过程:Pod的创建过程运行初始化容器(init container)的过程运行主容器(main container):容器启动后钩子(post start),容器终止前钩子(pre stop)容器的存

2021-07-26 11:45:51 1600 1

原创 面试准备-数据库篇

1. InnoDB和MyISAM的区别?InnoDB与MyISAM的区别:InnoDB支持事务,而MyISAM不支持事务InnoDB支持行级锁和表级锁,而MyISAM只支持表级锁InnoDB和MyISAM底层都使用的B+树结构,但是InnoDB使用的是聚集索引,也就是叶子节点存放的是文件真实的数据,而MyISAM存放的是数据的地址InnoDB支持外键,而MyISAM不支持外键2. Mysql中的各种索引普通索引:最简单的索引,只是为了加快查询,使用create index语句创建唯一索

2021-07-19 17:26:52 101

原创 Kubernetes--Pod详解--Pod的配置方式--基本配置、镜像拉取策略、启动命令、环境变量、端口设置、资源配额

Pod介绍K8s中最小的运行单位是Pod,容器必须放在Pod里面才可以运行,而K8s中的Pod中的容器分为两类:用户自己定义的容器Pause容器,这个是每一个Pod都会有的一个容器设置Pause容器有以下两个好处:在一组容器作为一个单元运行的情况下,我们难以对Pod整体的运行情况进行判定,而引入一个与业务无关的Pause容器作为Pod的根容器,用它的状态代表整体容器的运行状态Pod里面的多个容器共享Pause容器的IP’,恭喜Pause容器挂载的Volume,这样使得Pod之间的容器可以

2021-07-14 16:11:09 1894

原创 Kubernetes--Kubernetes实战入门-Namespace、Pod、Label、Deployment、Service

了解了K8s中的资源管理方式之后,本篇文章将会介绍如何在K8s中部署一个Nginx服务,并且让外部可以进行访问,将会介绍Namespace、Pod、Deployment、Service这些资源NamespaceNamespace是一种在多个用户之间划分集群资源的方法,就是说可以实现多套环境的资源隔离。因为在默认情况下,K8s集群中的所有pod都是可以互相通信的,但是在实际生产环境下,可能不允许两个pod之间进行通信,那么就可以使用Namespace,将两个pod划分到两个Namespace下,可以形成逻

2021-07-14 11:16:25 978

原创 Kubernetes--Kubernetes资源管理方式-命令式对象管理、命令式对象配置、声明式对象配置

Kubernetes–Kubernetes简介以及Kubernetes安装前面介绍了Kubernetes的安装方式,本篇文章主要介绍Kubernetes的资源管理方式,首先需要理解什么是资源?资源管理的方式一共有三种:命令式对象管理、命令式对象配置、声明式对象配置,三种方式的使用场景等等什么是资源管理?在K8s中,所有的内容都被抽象为资源,用户需要操作资源来操作K8s,资源可以分为计算资源、存储资源、网络资源,对于容器化技术来说对这些资源的定义、管理、分配尤其重要,在K8s中,任何可以被申请、分配、最

2021-07-13 15:35:16 1131 1

原创 Kubernetes--Kubernetes简介以及Kubernetes安装

Kubernetes介绍Kubernetes简称K8s,前面已经介绍过docker,docker的出现使得部署应用程序变得更为简单,部署应用程序一共经历了三个时代:传统部署:直接将应用程序部署到物理机上,优点是操作简单,但是缺点也很明显,无法为应用程序设置资源边界,很难的合理分配资源,程序之间也容易影响虚拟化部署:在一台物理机上运行多个虚拟机,虚拟化让应用程序之间隔离,应用程序之间不会相互影响,但是每一个VM都是一个操作系统,为了部署一个应用需要安装一个操作系统,资源浪费太大容器部署时代:可以在应

2021-07-13 09:30:41 980

原创 docker-- Docker Compose学习

本系列是docker学习连载篇docker–docker是什么?docker安装docker–docker容器命令、镜像命令docker–docker镜像原理docker–容器数据卷技术docker–docker网络模式Docker Compose作用在前面,我们已经知道了,对于我们编写的应用,只需要编写一个dockerfile文件,便可快捷部署,编写dockerfile - build -运行,这样也就满足了我们的一些日常需求,但是随着网站流量的增加,可能需要做微服务、分布式等等,也就说不能

2021-07-09 15:11:06 1159

原创 docker--docker网络模式

本篇文章将会理解docker的网络模式Docker的网络模式当docker进程一运行,会自动的在主机上创建一个docker0的虚拟网桥,相当于一个物理交换机,能够交换网络信息实现网段之间的主机进行通信,同时分配一个未被使用过的私有网段中的一个地址给docker0接口同时,当创建Docker容器的时候,会创建一对veth pair接口,使用的是veth pair技术,veth pair是一对虚拟设备接口,它是成对出现的,一端连着协议栈,一端彼此相连,所以veth pair被充当做一个网桥,链接着各种虚

2021-07-08 11:43:51 329

原创 docker--容器数据卷技术

容器数据卷概念docker是将应用和环境打包成为一个镜像,使得安装和部署非常的方便,比如部署一个nginx只需要拉去nginx的镜像,然后运行即可,但是有下面几个问题:每次修改nginx的配置都需要进容器内部当我删除容器的时候,是不是里面的数据也没有了,比如mysql环境,删除了容器那里面的数据呢?而卷技术便解决了上面两个问题,卷技术简单来说就是将容器内的目录挂载在宿主机上,使得容器数据可以持久化和同步操作,容器之间也可以共享数据使用方式方式一 使用-v命令挂载docker run -

2021-07-07 10:42:24 387

原创 docker--docker镜像原理

联合文件系统在介绍docker镜像原理之前,得先说说联合文件系统,联合文件系统是docker镜像的基础,联合文件系统是一种分层、轻量级并且高性能的文件系统,支持为文件系统的修改作为一次提交来一层层的增加,这是一个概念,了解就好镜像的定义在前面的实例中,我们使用docker安装了centos,可以发现centos的镜像只有209MB相比一个centos发行版的操作系统几个G就太小了可以思考为什么一个209m的centos镜像可以运行,即使缺少很多非必要的命令?传统的虚拟机安装centos会包括两个

2021-07-06 14:30:14 442

原创 docker--docker容器命令、镜像命令

配置阿里云镜像加速器在阿里云官网,找到镜像服务,根据说明配置镜像加速器sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://263mn3oi.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart dockerDocker常用命令帮助

2021-07-06 10:33:54 662

原创 docker--docker是什么?docker安装

容器技术的出现起初,研发人员开发一个软件,在自己的本地环境上开发好了,需要交给测试人员测试人员需要搭建一套测试环境进行测试,接着交给运维人员,运维人员需要搭建一套上线环境,然后发现上线系统崩溃了,因为很多服务器都是linux的!可以看出上面的流程的一些弊端:需要搭建三套环境,及其浪费了时间与资源上线环境和本地环境系统不一样,维护困难不过VMware的出现解决了上面的一些问题,研发人员通过虚拟机搭建好虚拟的上线环境然后交给测试人员和运维人员,在没有容器技术之前,这样解决确实是一个好办法但是新的

2021-07-03 19:19:28 409 1

原创 思维导图学常用设计模式- 工厂模式 - 简单工厂、工厂方法、抽象工厂

参考 《HeadFirst 设计模式》2.工厂模式工厂模式是一种创造型的模式,提供了创建对象的最佳方式,在工厂模式中,创建对象的时候不会暴露具体的创建逻辑,而是通过一个共同的接口来指向新的创建的对象例如,一个Coffer的例子public abstract class Coffee { /** * 获取coffer名称 * @return */ public abstract String getName();}/** * 美式咖啡 */

2021-06-15 10:43:45 813

原创 Go语言快速入门(4)--方法

方法面向对象的封装和组合原则,需要靠内部的方法真正的实现,Go中的方法声明和普通函数的声明类似,只是在函数名前多写一个参数,这个参数把这个方法绑定到这个参数对应的类型上type Point struct { X, Y float64}//普通函数func Distance(p, q Point) float64 { return math.Hypot(q.X - p.X, q.Y - p.Y)}//Point类型的方法func (p Point) Distance(q Point) fl

2021-06-11 15:31:25 1017 1

原创 Go语言快速入门(3)--函数、延迟函数defer、错误处理panic、recover

函数Go语言的函数语法为,当函数返回一个为命名的返回值或者没有返回值的时候,返回列表的圆括号可以省略func name(paramtre-list) (result-list){ body}一个函数能够返回不止一个结果,例如下面一个非常简单的交换swap函数func swap(a int, b int) (int , int){ return b, a}func main() { a := 1 b := 2 a ,b = swap(a, b) fmt.Printl

2021-06-06 11:25:33 1354

原创 Go语言快速入门(2) -- 复合数据类型(2)--map、结构体

mapmap是散列表的引用,map的类型是map[k]v,map中的键都拥有相同的数据类型,值也拥有相同的数据类型,键和值的数据类型不一定要一样,键的类型k,必须是可以通过操作符==类进行比较的数据类型,基本使用如下func main() { ages := make(map[string]int) ages["alice"] = 31 ages["charlie"] = 34 //删除键 delete(ages, "alice") //键不在map中 下面操作也是安全的 ages["bo

2021-06-04 09:44:29 430

原创 Go语言快速入门(1)--复合数据类型(1) - 数组、slice

数组数组的简单使用 var a [3]int = [3]int{1, 2, 3} var b [2]int = [2]int{1, 2} fmt.Println(a[0]) //输出数组的值 for i, j := range a { fmt.Printf("%d %d\n", i , j); } //仅输出元素 for _, v := range a { fmt.Printf("%d", v) }对于数组有以下注意的点:数组长度是数组类型的一部分,不同长度的类型不一

2021-06-04 09:14:14 1225 1

原创 算法复盘 ~ 前缀和经典问题 ~ 连续的子数组和

连续的子数组和523. 连续的子数组和给你一个整数数组 nums 和一个整数 k ,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小 至少为 2 ,且子数组元素总和为 k 的倍数。如果存在,返回 true ;否则,返回 false 。如果存在一个整数 n ,令整数 x 符合 x = n * k ,则称 x 是 k 的一个倍数。输入:nums = [23,2,4,6,7], k = 6输出:true解释:[2,4] 是一个大小为 2 的子数组,并且和为 6 。思路一:

2021-06-02 21:48:27 477

原创 Go语言快速入门-项目案例-即时通信系统

后端人员快速入门go语言,上手项目。是一个通信系统,覆盖了go语言的基本语法以及go程的使用一、构造基本Serve构造基本的Serve,就是Socket编程,同时在处理操作时,开启go的协程处理serve.gopackage mainimport ( "fmt" "net")type Server struct { Ip string Port int}//创建一个Server的接口func NewServer(ip string, port int) *Server {

2021-06-02 14:47:36 1320 2

原创 算法复盘 ~ 4的幂、多数元素、 盛最多水的容器

4 的幂给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x思路一:循环判断即可,最后看结果是否为小数class Solution { public boolean isPowerOfFour(int n) { double x = n; while(x > 1){ x /= 4; }

2021-05-31 20:44:20 530

原创 算法复盘~整数反转、字符串转整数

1. 整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)思想:想法①将数字转为字符串,然后将字符串反转接着转为整数,这样做有几个很难处理的点,例如将负数的处理,负号怎么处理、前置0怎么处理,不考虑溢出的话转为整数会去掉前置0、怎么判断溢出?当然字符串的反转这一块可以使用栈?新思路:对于整数x来说,使用x mod 1

2021-05-26 11:10:36 572 1

原创 Java后端学Android(13)-使用网络技术

使用WebViewWebView可以让在应用程序中展示一些网页,加载和显示网页都是浏览器的任务,但是需求又有明确指出,不允许打开系统的浏览器。所以WebView就是能帮助我们在页面中显示一个网页activity_main.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="htt

2021-05-19 15:31:56 555

原创 Java后端学Android(11)-内容提供器

运行时权限在Android6.0开始引入了运行时权限的功能,运行时权限是指用户在安装软件时不需要一次性授权所有的权限,而是在软件的使用过程中再对某一项权限进行申请Android将权限分为两类:普通权限:不会直接影响到用户的安全和隐私的权限,对于这部分权限,系统自动授权危险权限:可能会涉及到用户的隐私或者对设备安全性造成影响的权限下表中列出来的都是危险权限表中的每一个危险权限表示一个权限组,在进行权限处理的时候使用的是权限名,但是一旦用户同意授权了,那么该权限锁对应的权限组中的所有权限也会同

2021-05-15 20:40:16 179

原创 Java后端学Android(9)-广播机制Broadcast Receiver

本系列为《Android 第一行代码第二版》读书笔记广播机制安卓中的广播机制比较灵活,能够实现Android中的每一个应用程序都可以对自己感兴趣的广播进行注册,这样程序就可以只接受到自己所关心的广播内容,这些广播可以只来自系统的,也可以来自其他应用程序,Android提供了一套完整的API,运行应用程序自由的发送和接收广播广播有两种类型:有序广播和标准广播:标准广播:标准广播是一种完全异步执行的广播,在广播发出去之后,所有的广播接收器几乎都会同一时刻接收到这条广播消息,因此它们之间没有任何的先后顺

2021-05-09 23:42:18 398

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除