写点什么

ARTS 第 2 周

用户头像
乌拉里
关注
发布于: 2020 年 06 月 15 日
ARTS 第 2 周

每周完成一个 ARTS:

  • Algorithm: 每周至少做一个 LeetCode 的算法题

  • Review: 阅读并点评至少一篇英文技术文章

  • Tips: 学习至少一个技术技巧

  • Share: 分享一篇有观点和思考的技术文章(一周一篇强度有点大,视情况而定)



Algorithm

本周做区间合并类的题,做了四道题,56.合并区间,57.插入区间,986.区间列表交集,1288.删除被覆盖的区间,题的解法都特别类似,写一下57的解题过程。

我最初想通过一次遍历,使用if-else来解题,后来发现情况太多,后拆分为插入小于新区间的,插入新区间,插入新区间后的和合并。

class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
// 初始化数据
int newStart = newInterval,newEnd = newInterval[1];
int idx = 0,n = intervals.length;
LinkedList<int[]> output = new LinkedList<int[]>();
// 添加小于 新区间 的区间
while(idx<n && newStart > interval[idx][0])
output.add(intervals[indx++]);
// 插入 新区间
int[] interval = new int[2];
if (output.isEmpty() || output.getLast()[1] < newStart)
output.add(newInterval);
else{
interval = output.removeLast();
interval[1] = Math.max(interva[1],newEnd);
output.add(interval);
}
// 添加 后面区间若需要和 新区间合成
while(idx < n){
interval = intervals[idx++];
int start = interval[0], end = interval[1];
if(output.getLast()[1] < start){
output.add(interval);
}else{
interval = output.removeLast();
interval[1] = Math.max(interval[1],end);
output.add(interval);
}
}
return output.toArray(new int[output.size()][2]);
}
}



Review

本周阅读的是《The Product-Minded Software Engineer》,这是极客时间《互联网人的英语私教课》推荐的文章。

具有产品思维的程序的九个特征:

  1. 积极参与产品构想

  2. 对业务,用户行为和数据的兴趣

  3. 好奇心和对“为什么”的浓厚兴趣

  4. 强大的沟通能力和非工程师有良好的关系

  5. 兼顾产品和工程的制衡

  6. 边缘案例的务实处理

  7. 快速的产品验证周期

  8. 端到端产品功能所有权

  9. 通过反复学习增强产品直觉

成为更具产品意思的工程师的提示:

  • 了解公司的成功方式和原因

  • 与产品经理简历牢固的关系

  • 参与用户研究,客户支持

  • 提出支持良好的产品建议

  • 对从事的项目进行产品/工程权衡

  • 要求产品经理经常提供反馈



Tip

Docker 常用命令

  • 启动docker

systemctl start docker
  • 搜索镜像

docker search java



  • 下载镜像

docker pull java:8



  • 列出镜像

  • 删除镜像

#指定名称删除镜像
docker rmi java:8
#指定名称删除镜像(强制)
docker rmi -f java:8
#删除所有没有引用的镜像
docker rmi `docker images | grep none | awk '{print $3}'`
#强制删除所有镜像
docker rmi -f $(docker images)



  • 新建并启动容器

docker run -p 80:80 --name nginx -d nginx:1.17.0

-d选项:表示后台运行

--name选项:指定运行后容器的名字为nginx,之后可以通过名字来操作容器

-p选项:指定端口映射,格式为:hostPort:containerPort



  • 列出容器

docker ps
#列出所有容器
docker ps -a



  • 停止容器

docker stop nginx
#或者
docker stop c5f5d5125587



  • 进入容器

#先查询出容器的pid:
docker inspect --format "{{.State.Pid}}" $ContainerName(或者$ContainerId)
#根据容器的pid进入容器
nsenter --target "$pid" --mount --uts --ipc --net --pid



  • 删除容器

#删除指定容器
docker rm $ContainerName(或者$ContainerId)
#按名称删除容器
docker rm `docker ps -a | grep mall-* | awk '{print $1}'`
#强制删除所有容器
docker rm -f $(docker ps -a -q)



share

本周无分享



用户头像

乌拉里

关注

还未添加个人签名 2019.06.11 加入

还未添加个人简介

评论

发布
暂无评论
ARTS 第 2 周