ARTS 打卡 第 13 周
ARTS简介
Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。
Algorithm
判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。
数字 1-9 在每一行只能出现一次。
数字 1-9 在每一列只能出现一次。
数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。
解题思路:
判断数独是否有效需要对判断三次
Review
学习-微服务架构模式系列,网站地址是:https://microservices.io
微服务架构-Pattern: Pattern: Event sourcing
这篇文章的主要介绍了微服务架构下如何进行发布数据更新:事件源 **问题**:如何可靠/自动地更新数据库并发布消息/事件? **要求**:不能使用2段式提交 **解决方法**,事件源:保持状态改变事件列表,发布事件,给感兴趣的服务
好处:
解决了一个事件驱动架构中的关键问题
使得无论何时发生时状态改变都能可靠的发布事件
因为持久化的是事件而不是域对象,所以可以有效的避免对象关系阻抗不匹配
提供100%可靠的业务改变审计日志
业务逻辑由松耦合的、事件交换的业务实体构成,便于从单体应用向微服务架构迁移
避免CURD的限制
避免高并发更新同一数据
使得查询任意时间的状态成为可能
查询导致状态的的事件
不足
由于采用了不同或不熟悉的编程风格,会有学习曲线
很难查询
只直接支持通过主键查询业务实体
复杂查询必须使用CQRS聚合查询
必须确保数据最终一致
ps:《微服务架构设计模式》
Tips
记录我对于Linux的学习,文件相关的命令:
ps:”~” 表示为 home 目录,”.” 则是表示目前所在的目录,”..” 则表示当前目录的上一层目录
-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
分割文件
split 用于将一个文件分割成数个。
格式:split [OPTION] [INPUT [PREFIX]]
参数
-<行数> 或 -l num : 指定每多少行切成一个小文件
-b<字节> : 指定每多少字节切成一个小文件,可以使用后缀:b=512字节,k=1K,m=1 Meg
-C<字节> : 与参数”-b”相似,但是在切割时将尽量维持每行的完整性
[PREFIX] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
ps: 该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
如果没有设置[PREFIX]则默认以”x”开头,
如果没有指定INPUT,或INPUT是-,就从标准输入读取数据.
csplit 用于将文件依照指定的范本样式分割
格式:csplit [OPTION]… FILE PATTERN…
选项:
-b<输出格式>或–suffix-format=<输出格式>:预设的输出格式其文件名称为xx00,xx01等,用户可以通过改变<输出格式>来改变输出的文件名;
-f<输出字首字符串>或–prefix=<输出字首字符串>:预设的输出字首字符串其文件名为xx00,xx01等,如果制定输出字首字符串为“hello”,则输出的文件名称会变成hello00,hello、01……
-k或–keep-files:保留文件,就算发生错误或中断执行,与不能删除已经输出保存的文件;
-n<输出文件名位数>或–digits=<输出文件名位数>:预设的输出文件名位数其文件名称为xx00,xx01……如果用户指定输出文件名位数为“3”,则输出的文件名称会变成xx000,xx001等;
-q或-s或–quiet或——silent:不显示指令执行过程;
-z或–elide-empty-files:删除长度为0 Byte文件。
格式:
/[正则表达式]/ 创建从当前行开始直到(但不包含)包含指定模式的那一行的段的文件。
INTEGER 创建从当前行开始直到(但不包含)指定行
{*} 表示根据匹配重复执行分割,直到文件尾停止,使用{整数}的形式指定分割执行的次数。
%[正则表达式]% 使包含指定模式的行成为当前行,但不为段创建一个文件。
Share
分享最近对计算机基础的复习,这次分享的是遇到的bug:Java ForEach空指针异常,可能会有不足之处,之后会根据理解继续修改。
版权声明: 本文为 InfoQ 作者【引花眠】的原创文章。
原文链接:【http://xie.infoq.cn/article/72c5e0ec9b8888d81582dee4f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论