ARTS 打卡 第 9 周
ARTS简介
Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。
Algorithm
给定一个字符串 s 和一些长度相同的单词 words。找出 s 中恰好可以由 words 中所有单词串联形成的子串的起始位置。
注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。
解题思路:
当第一次看到这道题时,我的想法是将words中的单词排序,然后在s中搜索排序后的单词,不过将words排序时间消耗在n!,这有点不可取,所以我想换一种思路。如何在不将words中数组排序的情况下获取其可能的组合,可以考虑使用Map存储所有单词,因为单词长度相同(len),所以可以循环截取s中的len长度的字符,判断是否存在与Map中。
首先判断边界条件,如果s==null或words==null或words.length==0则返回空链表
如果s中剩余的字符串长度小于words中所有长度的总和,则也不需要继续判断
如果Map中没有s中截取的子串,也不需要继续判断
words中可能有重复的单词,所以在Map中还需要记录相同单词的个数,同样在查找时也需要对重复的单词进行判断避免有遗漏
Review
学习-微服务架构模式系列,网站地址是:https://microservices.io
这篇文章的主要介绍了微服务架构下如何进行持久化:Sega模式
问题:如何在多个服务之间实现事务
强制要求:不能使用二段式提交
解决方法,Sega模式:
使用一系列的本地事务
每个服务的操作都具有补偿操作,用于回滚操作
每个服务数据操作都发布消息,成功执行下一个事务,失败执行一系列补偿操作
好处: 在不使用分布式事务的情况下实现数据一致性
缺点: 使得程序模型很复杂
需要解决的问题:每个服务必须无状态的更新数据
Tips
记录我对于Linux的学习,文件相关的命令:
ps:”~” 表示为 home 目录,”.” 则是表示目前所在的目录,”..” 则表示当前目录的上一层目录
-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
删除移动复制等命令
rm 用于删除一个文件或者目录
格式:rm [options] name…
常用参数:
-i 删除前逐一询问确认。
-f 强制删除即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 递归地移除目录及它们的内容
-d 删除空目录
mv 可以将文件或目录改名、或将文件或目录移入其它位置
格式:
mv [选项]… 源文件 目标文件
mv [选项]… 源文件… 目录
常用命令:
-i 覆盖前提示
-f 覆盖前永不提示
ps: mv 源目录名 目标目录名 目标目录已存在,将源目录移动到目标目录;目标目录不存在则将源目录改名
cp 主要用于复制文件或目录
格式:
cp [选项]… 源文件 目标文件
cp [选项]… 源文件… 目录
常用命令:
-i 覆盖前提示
-f 覆盖前永不提示
-r 若给出的源文件是一个目录文件,此时递归复制目录及它们的内容
a 此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpr参数组合
-d 复制时保留链接
-p 除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
file 用于辨识文件类型
格式:file [ -bcnsvzL ] [ -f 命名文件 ] [ -m 幻数文件 ] file …
常用命令:
-b 列出辨识结果时,不显示文件名称。
-c 检查时打印输出幻数文件的解析结果.常与 -m 一起使用,用来在安装幻数文件之前调试它
-f<名称文件> 指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称。
-L 直接显示符号连接所指向的文件的类别。
-m<幻数文件> 指定魔法数字文件。
-v 显示版本信息。
-z 尝试去解读压缩文件的内容。
[文件或目录…] 要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。
Share
分享最近对计算机基础的复习,这次分享的是程序的机器级表示 - 访问信息,可能会有不足之处,之后会根据理解继续修改。
版权声明: 本文为 InfoQ 作者【引花眠】的原创文章。
原文链接:【http://xie.infoq.cn/article/96d8f53115f43cfdcc1c2cac3】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)