ARTS 打卡 第 7 周

用户头像
引花眠
关注
发布于: 2020 年 07 月 12 日

ARTS简介

Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。

Algorithm

力扣(LeetCode)24. 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

输入:

给定 1->2->3->4, 你应该返回 2->1->4->3.

解题思路:

这到题中有几点需要注意,链表是单链表,而且交换的是节点,而不是值。

  1. 对于单链表,需要注意的是,记录节点的前一个节点的位置

/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode ans = new ListNode(0);
ans.next = head;
ListNode pre = ans;//pre指向head的前一个节点
while (head != null && head.next != null) {
//swap
ListNode tmp = head.next;
head.next = tmp.next;
tmp.next = head;
pre.next = tmp;
//next
head = head.next;
pre = pre.next.next;
//System.out.println(ListNode.toStringVal(ans));
}
return ans.next;
}
}

Review

学习-微服务架构模式系列,网站地址是:https://microservices.io

微服务架构-Pattern: Database per service

这篇文章的主要介绍了微服务架构下如何进行持久化:一个服务一个数据库

强制要求:

  1. 松耦合

  2. 某些业务跨多个服务

  3. 某些业务查询涉及的数据跨多个服务

  4. 某些查询需要聚合多个服务的数据

  5. 数据系统能够很容易复制和共享,以扩大规模

  6. 不同的服务有不同的数据存储要求

解决方法:

每个服务拥有自己私有的数据,每个模块都拥有自己的数据边界,服务之间的数据交互使用API。

具体实现:

  1. Private-tables-per-service

  2. Schema-per-service

  3. Database-server-per-service

好处

  1. 松耦合

  2. 使用适合每个服务的数据库

缺点

  1. 实现跨服务事物比较复杂,比如Saga

  2. 跨服务查询比较复杂

解决不足的方式

  1. API聚合 在直接聚合书库之前,通过调用不同服务的API,聚合结果

  2. CQRS 视图订阅其他服务,当服务有数据改变时,将其分发数据

Tips

记录我对于Linux的学习,文件相关的命令:

ps:”~” 表示为 home 目录,”.” 则是表示目前所在的目录,”..” 则表示当前目录的上一层目录

-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数

创建文件的相关方法

touch 常用于将每个文件的访问和修改时间更新为当前时间,不过当直接跟一个不存在的文件名时,会创建一个空文件,大小为0

touch tody.txt
#通过ll tody.txt查看
ll tody.txt
-rw-r--r-- 1 test test 0 7月 11 10:59 dody.txt

> 通常用于重定向一个命令的输出到一个新文件中,如果之前没有命令,则会创建一个新文件,大小为0,比如可以用echo,print等命令结合>将输出重定向到一个新文件

ll dody.txt
-rw-r--r-- 1 test test 19 7月 11 11:06 dody.txt
> tody.txt
echo 'This is a new file' > ne.txt
➜ ll ne.txt
-rw-r--r-- 1 test test 19 7月 11 11:11 ne.txt

ps:如果你不是想创建新的,而是想追加内容到已有的文件,那么可以使用>>

vi/vim Vi是Unix及Linux系统下标准的编辑器,Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。可以使用vi/vim创建新文件。

#以下命令打开一个文件,需要保存,否则修改不生效
vi asbt.txt

Share

分享最近对计算机基础的复习,这次分享的是程序的机器级表示 - 程序的编码,可能会有不足之处,之后会根据理解继续修改。



发布于: 2020 年 07 月 12 日 阅读数: 29
用户头像

引花眠

关注

还未添加个人签名 2018.06.11 加入

还未添加个人简介

评论

发布
暂无评论
ARTS打卡 第7周