写点什么

ARTS 打卡 第 23 周

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

ARTS简介

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



Algorithm

力扣(LeetCode)61. 旋转链表



给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。且不重叠(如果有必要的话,可以合并区间)。



示例 1:

输入: 1->2->3->4->5->NULL, k = 2
输出: 4->5->1->2->3->NULL
解释:
向右旋转 1 步: 5->1->2->3->4->NULL
向右旋转 2 步: 4->5->1->2->3->NULL

示例 2:

输入: 0->1->2->NULL, k = 4
输出: 2->0->1->NULL
解释:
向右旋转 1 步: 2->0->1->NULL
向右旋转 2 步: 1->2->0->NULL
向右旋转 3 步: 0->1->2->NULL
向右旋转 4 步: 2->0->1->NULL




解题思路: 这道题可以这么处理,首先统计链表大小N,然后使用两个指针分别指向头尾,使其形成一个环,将头尾分别移动k%N个距离,然后断开环



/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode rotateRight(ListNode head, int k) {
if (head == null || k <= 0) {
return head;
}
ListNode pTail = head;
int n = 1;
while (pTail.next != null) {//指向最后
n++;
pTail = pTail.next;
}
pTail.next = head;//形成环
int step = n - (k % n);//链表右移,相当于头指针左移
for (int i = 0; i < step; i++) {
head = head.next;
pTail = pTail.next;
}
pTail.next = null;//解除环
return head;
}
}



ps:参考资料



  1. 《剑指Offer:名企面试官精讲典型编程题(第2版)》

  2. labuladong 的算法小抄



Review

学习-微服务架构模式系列,网站地址是:https://microservices.io 微服务架构-Pattern: Serverless deployment 这篇文章的主要介绍了微服务架构下如何进行部署:使用基础设施(云)部署 背景:使用微服务架构,会有很多服务,为了获得可用性和吞吐量每个服务发布一组实例 问题:每个服务如何打包和发布



强制条件



  1. 不同服务使用不同的语言、框架

  2. 提高吞吐量和可用性,每个服务都可能有多实例

  3. 服务必须能够独立部署和扩容

  4. 每个服务实例必须与其他实例隔离

  5. 每个服务快速打包部署

  6. 限制每个服务实例的资源使用情况

  7. 监控每个服务实例

  8. 可靠的部署

  9. 高效的部署



解决方法,使用发布基础设施(云),比如AWS Lambda,Google Cloud Functions,Azure Functions



好处



  1. 使你关注代码

  2. 非常有弹性

  3. 为请求付费而不是可能使用到的容器或虚拟机



不足



  1. 有很重的限制和约束(受制于所选择的基础设施)

  2. 输入源支持限制

  3. 应用必须能快速启动

  4. 高延迟风险



ps:《微服务架构设计模式》



Tips

记录我对于Linux的学习,网络管理的命令:



ps:“~” 表示为 home 目录,“.” 则是表示目前所在的目录,“…” 则表示当前目录的上一层目录 -h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数



ifconfig

ifconfig 配置网络接口 格式:ifconfig [接口] ifconfig 接口 [aftype] options | address … 常用选项:



  1. 接口 接口名称

  2. up 启动指定的网络设备

  3. down 关闭指定的网络设备。

  4. add<地址> 设置网络设备IPv6的IP地址。

  5. del<地址> 删除网络设备IPv6的IP地址。

  6. mtu<字节> 设置网络设备的MTU。

  7. netmask<子网掩码> 设置网络设备的子网掩码。



ifconfig #查看当前系统有几个网卡信息
eth0 ...
lo ...
ifconfig eth0 up # 启动网卡eth0
ifconfig eth0 down # 关闭网卡eth0
ifconfig eth0 reload # 重启
ifconfig eth0 add 1030::C9B4:FF12:48AA:1A2B/64 # 为网卡eth0配置IPv6地址
ifconfig eth0 del 1030::C9B4:FF12:48AA:1A2B/64 # 为网卡eth0删除IPv6地址
ifconfig eth0 192.168.1.166 netmask 255.255.255.0 up #配置IPv4地址和子网掩码,临时生效
ifconfig eth0 mtu 1500 #设置最大传输单元



Share

分享最近对的学习,这次分享的是SpringBoot 系列(5)- 自定义配置,可能会有不足之处,之后会根据理解继续修改。



发布于: 2020 年 11 月 16 日阅读数: 23
用户头像

引花眠

关注

还未添加个人签名 2018.06.11 加入

还未添加个人简介

评论

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