ARTS 打卡 第 28 周
ARTS 简介
Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。
Algorithm
以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。更多信息请参阅:Linux / Unix中的绝对路径 vs 相对路径 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
解题思路:
首先将路径按照’/'分解
将分解后的目录径放入双端队列中,如果遇到"“或”."不用处理如果遇到"…",则表示进入上一级目录,则将上一个压入的目录从队列末尾删除其余目录依次放入队列
通过队列构建路径如果最终队列中没有目录,则表示已经到了根目录否则将目录拼接返回
ps:参考资料
Review
学习-微服务架构模式系列,网站地址是:https://microservices.io 微服务架构-Pattern: Messaging 这篇文章的主要介绍了微服务架构下的通信模式:消息模式 背景:使用微服务架构,服务需要处理客户端的请求,可能需要多个客户端协作才能处理。所以需要跨服务通信。 问题:微服务架构中服务如何通信
强制条件:
服务之间需要协作
同步通信会使客户端与服务端严重耦合,因为必须保证双方都可用
解决方法,使用异步消息进行通信:
好处
解耦服务端与客户端
提升可用性 在方便的时候处理
支持多种模式请求/应答模式通知请求/异步响应发布/订阅模式发布/异步响应模式
不足
消息代理可能很复杂
需要解决的问题
请求/应答模式 在此种情形下可能很复杂
客户端如何发现消息代理
ps:《微服务架构设计模式》
Tips
记录我对于 Linux 的学习,网络管理的命令:
ps:“~” 表示为 home 目录,“.” 则是表示目前所在的目录,“…” 则表示当前目录的上一层目录 -h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
pidstat
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标,还可以看线程的信息。 用法: pidstat [选项] 常用选项:
-d 展示磁盘 I/O 统计数据
-R 报告实时优先级和调度策略信息
-r 显示内存使用情况
-s 显示栈相关信息
-t 查看线程相关的信息,默认是进程的;与其他命令结合可以查看线程相关的信息
-u 各个进程的 cpu 使用统计 默认参数
-w 表示查看上下文切换情况
-p 指定进程 id
cpu 统计信息
%usr 用户空间的 cpu 使用率
system 内核空间的 cpu 使用率
%guest 进程在虚拟机占用 cpu 的百分比
%wait 等待上下文切换的 cpu 使用率
%CPU 总的 cpu 使用率
CPU 处理进程的 cpu 编号
Command 当前进程对应的命令
磁盘 I/O 统计数据
kB_rd/s 每秒从磁盘读取的 KB
kB_wr/s 每秒写入磁盘 KB
kB_ccwr/s 任务取消的写入磁盘的 KB。当任务截断脏的 pagecache 的时候会发生
iodelay 表示 I/O 的延迟(单位是时钟周期)
Command 当前进程对应的命令
cpu 上下文切换
vmstat 只能查看总的 cpu 上下文切换,pidstat 可以查看每个进程的上下文切换
cswch/s 每秒自愿上下文切换(voluntary context switches)的次数
nvcswch/s 每秒非自愿上下文切换(non voluntary context switches)的次数
ps:
自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换
非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换
内存信息
minflt/s 任务每秒发生的次要错误,不需要从磁盘中加载页
majflt/s 务每秒发生的主要错误,需要从磁盘中加载页
VSZ 虚拟地址大小,虚拟内存的使用 KB
RSS 常驻集合大小,非交换区五里内存使用 KB
%MEM 使用的物理内存占比
查看线程相关信息
以查看 cpu 上下文切换为例,查看线程相关信息
TGID 线程组 ID,也就是线程组 leader 的进程 ID,等于 pid
TID 线程 ID
ps: pidstat 只能看到进程(也就是主线程)的信息,如果要仔细分析,还需要查看线程的相关信息。
Share
分享最近对的学习,这次分享的是SpringBoot 系列(7)- 自动化配置,可能会有不足之处,之后会根据理解继续修改。
版权声明: 本文为 InfoQ 作者【引花眠】的原创文章。
原文链接:【http://xie.infoq.cn/article/daaf1f201dc5d3490cf90447f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论