优先级

adb logcat 查看日志

妖精的绣舞 提交于 2020-01-28 12:08:12
使用 logcat 命令 查看和跟踪系统日志缓冲区的命令logcat的一般用法是: [adb] logcat [<option>] ... [<filter-spec>] ...    下文介绍过滤器和命令选项,详细内容可参见 Listing of logcat Command Options 。    可以在开发机中通过远程shell的方式使用logcat命令查看日志输出: $ adb logcat    如果是在远程shell中可直接使用命令: # logcat    过滤日志输出 每一条日志消息都有一个标记和优先级与其关联。 标记是一个简短的字符串,用于标识原始消息的来源 (例如"View" 来源于显示系统)。 优先级是下面的字符,顺序是从低到高: V — 明细 (最低优先级) D — 调试 I — 信息 W — 警告 E — 错误 F — 严重错误 S — 无记载 (最高优先级,没有什么会被记载)    通过运行logcat ,可以获得一个系统中使用的标记和优先级的列表,观察列表的前两列,给出的格式是<priority>/<tag>。    这里是一个日志输出的消息,优先级是“I”,标记是“ActivityManager”: I/ActivityManager( 585): Starting activity: Intent { action=android.intent

从零开始入门 K8s | Kubernetes 调度和资源管理

泪湿孤枕 提交于 2020-01-28 11:07:39
作者 | 子誉 蚂蚁金服高级技术专家 关注“阿里巴巴云原生”公众号,回复关键词 “入门” ,即可下载从零入门 K8s 系列文章 PPT。 Kubernetes 调度过程 搜小说 https://biqi.org/ 首先来看第一部分 - Kubernetes 的调度过程。如下图所示,画了一个很简单的 Kubernetes 集群架构,它包括了一个 kube-ApiServer,一组 Web-hook Controllers,以及一个默认的调度器 kube-Scheduler,还有两台物理机节点 Node1 和 Node2,分别在上面部署了两个 kubelet。 我们来看一下,假如要向这个 Kubernetes 集群提交一个 pod,它的调度过程是什么样的一个流程? 假设我们已经写好了一个 yaml 文件,就是下图中的橙色圆圈 pod1,然后往 kube-ApiServer 里提交这个 yaml 文件。 此时 ApiServer 会先把这个待创建的请求路由给我们的 webhook Controllers 进行校验。 通过校验之后,ApiServer 会在集群里面生成一个 pod,此时生成的 pod,它的 nodeName 是空的,并且它的 phase 是 Pending 状态。在生成了这个 pod 之后,kube-Scheduler 以及 kubelet 都能 watch 到这个 pod

CSS选择器的权重和计算规则(机制)

别说谁变了你拦得住时间么 提交于 2020-01-28 03:50:14
从CSS代码存放位置看权重优先级: 内嵌样式 > 内部样式表 > 外联样式表。 从样式选择器看权重优先级: important > 内嵌样式 > ID > 类 > 标签 | 伪类 | 属性选择 > 伪元素 > 继承 > 通配符。 CSS权重是由四个数值决定: 第一等:代表内联样式,如: style=””,权值为1000。 第二等:代表ID选择器,如:#content,权值为100。 第三等:代表类、伪类和属性选择器,如.content,:hover,[type="text"],权值为10。 第四等:代表标签选择器和伪元素选择器,如div p,::before,权值为1。 通配选择符 (universal selector)( * ) 关系选择符 (combinators)( + , > , ~ , ' ' , || )和 否定伪类 (negation pseudo-class)( :not() )对优先级没有影响(但是,在 :not() 内部声明的选择器会影响优先级)。 最后把这些值加起来,再就是当前元素的权重了。 权重算出来了,但是某个元素到底用哪个样式,还有3个规则: 1,如果样式上加有!important标记,那么始终采用这个标记的样式; 2、匹配的内容按照CSS权重排序,权重大的优先; 3,如果权重也一样,按照它在CSS样式表里声明的顺序,后声明的优先。 来源: CSDN

操作系统-进程管理

我怕爱的太早我们不能终老 提交于 2020-01-28 02:11:18
进程管理 要点: 基础:进程描述及控制 策略:进程调度 实现:互斥与同步 避免:死锁与饥饿 解决:几个经典问题 进程的引入 程序的顺序执行 源代码程序,目标程序和可执行程序 程序执行:编辑,编译,链接,执行 程序的结构:顺序,分支,循环结构 程序执行的特征:顺序性,封闭性,可再现性 程序并发执行 多道程序设计技术:多个程序并发执行 程序并发执行时的特征:间断性,非封闭性,不可再现性 并发执行引发的问题: 协调各程序的执行顺序:输入数据还未全部输入内存时,计算必须等待 多个执行程序共享系统资源,程序之间可能会相互影响,甚至影响输出结果 选择那些,多少个程序进入内存执行 内存中的执行程序谁先执行,谁后执行 内存如何有效分配? 进程的概念 定义:可并发执行的程序,在一个数据集合上的运行过程 申请、拥有资源~调度(线程) 程序:静态概念,是指令和数据的集合,可长期存储 进程与程序对应关系 一个程序可以对应一个进程或者多个进程 一个进程可以对应一个程序,或者一段程序 进程的特征 动态性 并发性 独立性 异步性 引入进程带来的问题 增加了空间开销:为进程建立数据结构 额外的时间开销:管理和协调,跟踪,填写和更新有关数据结构,切换进程,保护现场 更难控制:协调多个进程竞争和共享资源如何预防;解决多个集成因为竞争资源而出现的故障 处理机的竞争尤为突出 进程的结构 组成(进程映像):程序,数据集合

动态路由(OSPF)

孤街醉人 提交于 2020-01-28 00:45:34
OSPF:开放式最短路径优先协议 1)基本概念 OSPF版本:v2-ipv4 v3-ipv6 组播更新:224.0.0.5/6 基本更新方式:触发更新 存在周期更新30分钟 OSPF需要结构化部署:1、区域划分 链路状态型路由协议的距离矢量特征–区域之间传递拓扑,区域之间传递路由 协议号89–跨层封装(没有传输层) LS型路由协议IGP 更新时携带掩码 LS状态型路由协议缺点:占用资源不少 2)OSPF数据包 hello:发现、建立邻居关系,实现10s保活。存在全网唯一的Router-id(路由器标识),RID使用IP地址形式表示。 DBD:Database description–数据库描述包 LSR:链路状态请求 LSU:链路状态更新 Ack:确认 3)OSPF状态机 down:路由器之间还没起协议 init:当一个路由器发出hello包时需要转化的 2-way:邻居关系建立,收到了别人的hello包一起转换进入到2-way。 若条件匹配失败,仅hello包包10s活即可,成功进入下一个状态 exstart:预启动,比较RID,大者有限进入下一状态 exchange:交换DBD数据包 loading:使用LSR/LSU/LSAck获取未知的拓扑或者路由信息 full:邻接(毗邻)关系建立完成 4)OSPF工作过程 : 启动协议之后,本地基于224.0.0.5发出hello包

adb logcat 查看日志

邮差的信 提交于 2020-01-28 00:11:24
使用 logcat 命令 查看和跟踪系统日志缓冲区的命令 logcat 的一般用法是: [adb] logcat [<option>] ... [<filter-spec>] ...     下文介绍过滤器和命令选项,详细内容可参见 Listing of logcat Command Options 。    可以在开发机中通过远程 shell 的方式使用 logcat 命令查看日志输出: $ adb logcat    如果是在远程 shell 中可直接使用命令: # logcat    过滤日志输出 每一条日志消息都有一个标记和优先级与其关联。 标记是一个简短的字符串,用于标识原始消息的来源 ( 例如 "View" 来源于显示系统 ) 。 优先级是下面的字符,顺序是从低到高 : V — 明细 ( 最低优先级 ) D — 调试 I — 信息 W — 警告 E — 错误 F — 严重错误 S — 无记载 ( 最高优先级,没有什么会被记载 )    通过运行 logcat ,可以获得一个系统中使用的标记和优先级的列表,观察列表的前两列,给出的格式是 <priority>/<tag> 。    这里是一个日志输出的消息,优先级是“ I ”,标记是“ ActivityManager ”: I/ActivityManager( 585): Starting activity: Intent

进程调度

时间秒杀一切 提交于 2020-01-27 09:02:21
进程调度是一个内核子系统,负责决定将哪个进程投入运行,何时运行以及运行多长的时间。它是多任务操作系统的基础。 调度相关概念 多任务操作系统 I/O消耗性与处理器消耗性 优先级 处理器时间使用比 Linux调度算法 CFS调度算法 CFS调度算法的实现 时间记账 进程选择 调度器 休眠和唤醒 抢占 上下文切换 与调度相关的系统调用 调度相关概念 多任务操作系统 在单处理器机器上,会产生多个进程同时在运行的幻觉 在多处理器机器上,会使多个进程在不同的处理器上真正同时,并行的执行。 I/O消耗性与处理器消耗性 进程可以被分为: I/O消耗型:进程大部分时间用来提交I/O请求或者是等待I/O请求,这种进程运行时间短,经常处于阻塞状态,不需要太长的时间片(比如文字编辑程序) 处理器消耗型:进程大部分时间用在执行代码上,除非被强占,否则他们一直都在不停的运行,因为它们没有太多I/O需求,希望时间片越长越好(比如视频编码程序) Linux倾向于优先调度I/O消耗性 优先级 nice值:值越低,优先级越高 实时优先级:值越高,优先级越高 处理器时间使用比 linux的CFS调度器没有直接分配时间片到进程,它是将处理器的使用比划分给了进程。进程的nice值越小,分到的处理器时间使用比例越大。 CFS调度器和一般操作系统用的时间片+优先级的方式不同,进程的抢占时机取决于新的可以运行进程 消耗了

BTs in Robotics学习笔记(二)行为树是如何概括和联系早期的思想的

橙三吉。 提交于 2020-01-27 07:13:13
有限状态机 有限状态机是计算最基本的数学模型之一,由一组状态、过渡和事件组成。 有限状态机的缺点: 可维护性低:添加或删除状态需要重新评估大量的变化和FSM的内部状态。 可伸缩性低:FSMs具有许多状态和许多状态之间的转换,对于人和计算机来说都很难修改。 可重用性低:状态之间的转换可能依赖于内部变量,在多个项目中重用相同的子FSM是不现实的。 层次化状态机 层次化状态机 (HFSMs),也称为状态图。在HFSM中,一个状态可以包含一个或多个子状态,其中包含两个或多个状态的状态称为超状态。在HFSM中,广义跃迁是超态之间的转换,通过连接两个超状态来减少转换的数量,而不需要连接大量的子状态。每个超状态都有一个子状态标识为启动状态,每当发生超状态转换时就会执行。 举例说明:定点射击 (优点)层次化状态机增加了模块性(可以在子任务中分离任务),同时支持行为继承(行为继承允许子状态从超状态继承行为)。 (缺点)层次化状态机具有较低的可维护性,同时需要手动创建层次结构。 在HFSMs中,层次结构中的每一层都需要显式地添加,而在BTs中,每一个子树都可以看作是它自己的模块,具有与原子操作相同的接口。 FSM可以转换为BTs。假设FSM中有一个状态和三个转换(对应于这三个返回语句,)添加一个Tick源来收集返回转换并将执行转换回状态。 包容架构 包容体系结构的基本思想是让多个控制器并行运行

运算符

徘徊边缘 提交于 2020-01-27 03:49:50
算数运算符 计算机 ,顾名思义就是负责进行 数学计算 并且 存储计算结果 的电子设备 目标 算术运算符的基本使用 01. 算数运算符 算数运算符是 运算符的一种 是完成基本的算术运算使用的符号,用来处理四则运算 运算符 描述 实例 + 加 10 + 20 = 30 - 减 10 - 20 = -10 * 乘 10 * 20 = 200 / 除 10 / 20 = 0.5 // 取整除 返回除法的整数部分(商) 9 // 2 输出结果 4 % 取余数 返回除法的余数 9 % 2 = 1 ** 幂 又称次方、乘方,2 ** 3 = 8 在 Python 中 * 运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果 In [1]: "-" * 50 Out[1]: '----------------------------------------' 02. 算数运算符的优先级 和数学中的运算符的优先级一致,在 Python 中进行数学计算时,同样也是: 先乘除后加减 同级运算符是 从左至右 计算 可以使用 () 调整计算的优先级 以下表格的算数优先级由高到最低顺序排列 运算符 描述 ** 幂 (最高优先级) * / % // 乘、除、取余数、取整除 + - 加法、减法 例如: 2 + 3 * 5 = 17 (2 + 3) * 5 = 25 2 * 3 + 5 = 11 2 *

线程2

情到浓时终转凉″ 提交于 2020-01-27 03:06:20
线程 线程的优先级 在应用程序中,如果要对线程进行调度,最直接的方式就是设置线程的优先级。优先级越高的线程获得cpu执行的机会越大,而优先级越低的线程获得cpu执行的机会越小,线程的优先级用1-10之间的整数来表示,数字越大优先级越高。 线程休眠 如果希望人为地控制线程,使正在执行的线程暂停,将cpu让给别的线程,这时可以使用静态方法sleep,该方法可以让当前正在执行的线程暂停一段时间,进入休眠等待状态,当前线程调用sleep方法后,在指定时间(参数millis)内是不会执行的。 线程让步 线程让步可以通过yield()方法来实现,该方法和sleep()方法有点相似,都可以让当前正在运行的线程暂停,区别在于yield()方法不会阻塞该线程,他只是将线程转换成就绪状态,让系统的调度器重新调度一次。当某个线程优先级相同或者更高的线程才能获得执行的机会。 来源: CSDN 作者: My Heart? 链接: https://blog.csdn.net/weixin_45805495/article/details/103629542