ARTS-2
ARTS的初衷
- Algorithm:主要是为了编程训练和学习。每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard)。进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。关于做Leetcode的的优势,你可以看一下我在coolshell上的文章 Leetcode 编程训练 - 酷 壳 - CoolShell。
- Review:主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。所以,需要你阅读并点评至少一篇英文技术文章,我个人最喜欢去的地方是http://Medium.com(需要梯子)以及各个公司的技术blog,如Netflix的。
- Tip:主要是为了总结和归纳你在是常工作中所遇到的知识点。学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。
- Share:主要是为了建立你的影响力,能够输出价值观。分享一篇有观点和思考的技术文章。
作者:陈皓
链接:https://www.zhihu.com/question/301150832/answer/529809529
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Algorithm
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例 1:
输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:
输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。
因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例 3:
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
来源: https://leetcode-cn.com/explore/featured/card/top-interview-questions-easy/1/array/22/
# 审题很重要,第一次看这题的时候,一直在想怎样模拟出最佳交易策略;然而我们只是计算最大收益,这个是上帝视角的,只要做一下前后对比即可。
class Solution:
def maxProfit(self, prices: List[int]) -> int:
profit = 0
length = len(prices)
for i in range(0, length - 1):
j = i + 1
fake_profit = prices[j] - prices[i]
if fake_profit > 0:
profit += fake_profit
return profit
Tip
官方维护的软件仓库总有不够用的时候,有时会遇到需要自己打软件包的情况,掌握这项技能还是很必要的。
- deb打包
参考资料:deb打包教程
# 打包anaconda的简单示例,操作都在Package目录下进行
mkdir anaconda # 新建anaconda包的fake-root目录,软件包需要用到的所有文件都放在该目录下
mkdir anaconda/DEBIAN # 新建包信息目录
cat anaconda/DEBIAN/control # 配置信息示例
Package: anaconda3-diy
Version: 4.3.1-20191113
Section: unknown
Priority: optional
Depends:
Suggests:
Architecture: amd64
Installed-Size: 9071876
Maintainer: chang.yaocheng
Provides:
Description: Anaconda diy
ls anaconda3 # anaconda3的目录内容
DEBIAN home usr
dpkg-deb -b anaconda3 anaconda3-amd64.deb # 开始打包
Review & Share
目前还做不到分享一篇有观点和思考的技术文章,那就先做好积累吧。
物理机迁移kvm方案调研
最近公司搞成本优化,需要迁移一批物理机到kvm虚拟机。苦于迁移成本太高,对于环境复杂的机器,一人力一天只能迁移个1到2台。于是,我便寄希望于将物理机直接虚拟化的方案,希望能够降低迁移成本。
现有的迁移方案基本分类两类:
- Hot migration,不停机迁移,这类方案要求物理机上的数据相对固定(Recommended for static data);
- Cold migration,关机迁移,这类方案基本上是从livecd这类系统启动,对整个硬盘做镜像。
维基百科上列举了一些成熟的方案和工具,它们适用的场景各有不同,多数是cold migration。
hot migration的可行性
现有业务场景下,想要的是hot migration,所以重点看hot方案的可行性。
网上搜索了半天, 找到几个可行的方案,很多方案实际上还是cold migration,只不过停机时间很短。
- kvm官方虚拟机跨物理机迁移文档,记录作为参考。
- 先使用rsync同步大部分数据,停止服务继续同步变化后的文件,最后修正虚拟机的引导和fstab:Manual P2V of Debian Sarge
- P2V Migration with Post-Copy Hot Cloning for Service Downtime Reduction,这篇论文提出了利用内核模块同步文件块改动的方式来在线clone物理机的磁盘,实现成本比较高,且还是需要手动调整配置,修复引导。
- 停服务不关机,使用dd拷贝整个磁盘:Converting a running physical machine into a KVM virtual machine
- 使用tar打包,根据机器上的具体服务器要的,exclude非必要的文件夹:链接
以上方法都存在,不可自动化和成功率难保证的问题(需要手动配置引导、热拷贝的数据难保证完全一致),所以无法在实际生产环境中使用。
cold migration
cold migration有很多成熟的方案和工具,可参考维基百科,该类方法理论上可以做到半自动化,但是操作成本高,需要重启服务器,同样不适用于我碰到的问题。
结论
初步结论,系统级别的hot migration实现成本高,无成熟解决方案(包括商业和开源)。现有成熟方案都是 cold migration。
由于没有停机迁移的条件,想要降低迁移成本的话,从新机器环境配置上下功夫更靠谱。
- tar大法可以尝试下,迁移一部分看成本能否接受
https://www.kancloud.cn/ivandu/linux/405447 - 调研使用saltstack或者shell脚本快速同步配置的方法
ARTS-2的更多相关文章
- KDE声音服务器 arts
KDE声音服务器 arts arts介绍arts是KDE的核心声音系统,支持多音频流.全双工.网络声音请求.ALSA与OSS驱动后端.JACK声音服务器后端等扩展,它既是声音服务器,也 提供一套音频软 ...
- 【ARTS】01_21_左耳听风-201900401~201900407
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_20_左耳听风-20190325~20190331
zz## ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 ...
- 【ARTS】01_19_左耳听风-20190318~20190324
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_18_左耳听风-20190311~20190317
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_17_左耳听风-20190304~20190310
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_16_左耳听风-20190225~20190303
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_15_左耳听风-20190218~20190224
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_14_左耳听风-20190211~20190217
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 【ARTS】01_13_左耳听风-20190204~20190210
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
随机推荐
- 利用cmd运行java程序
在运行以下程序时,要确保正确配置java的环境变量!!! 此处仅仅使用“记事本”来写java程序!!! 1. 新建一个记事本文件,命名为HelloWorld.java 这里需要注意的是,要确保关闭了隐 ...
- 隐马尔可夫模型的前向算法(java实现),今天奉上
隐马尔可夫模型的前向算法(手动实现),今天奉上,由于研究生期间,实现的时候没有多加注释,这里为了让更好的人进入自然语言处理领域,特此,将前向算法奉上,具体公式可参考52nlp的HMN系列博客. 参考了 ...
- MySQL优化建议与使用规范
适用场景:并发量大.数据量大的互联网业务;可以先阅读必须掌握的MySQL优化指南 一.基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务.行级锁.并发性能更好.CPU及内存缓存页优化使得资源 ...
- SpringMVC 使用Servlet原生API作为参数
具体看代码: @RequestMapping("/testServletAPI") public void testServletAPI(HttpServletRequest re ...
- Python-Django的windows环境
下载安装python2.7 : 最好是安装win32的,64bit的很多的lib都不支持.python-2.7.3 http://python.org/getit/releases/2.7.3/ 下载 ...
- python-pillow图像处理
安装 pip3 install pillow PIL中所涉及的基本概念有如下几个:通道(bands).模式(mode).尺寸(size).坐标系统(coordinate system).调色板(pal ...
- 【NOIP2014模拟11.3】噪音
题目 FJ有M个牛棚,编号1至M,刚开始所有牛棚都是空的.FJ有N头牛,编号1至N,这N头牛按照编号从小到大依次排队走进牛棚,每一天只有一头奶牛走进牛棚.第i头奶牛选择走进第p[i]个牛棚.由于奶牛是 ...
- 【NOIP2016提高A组模拟8.19】(雅礼联考day2)总结
第一题又有gcd,又有xor,本来想直接弃疗,不过后来想到了个水法: 当两个相邻的数满足条件时,那么他们的倍数也可能满足条件.然后没打,只打了个暴力. 正解就是各种结论,各种定理搞搞. 第二题,想都不 ...
- 在Tomcat中部署Java Web应用程序几种方式
在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署 静态部署指的是我们在服务器启动之前部 ...
- 如何使用dump文件进行调试
转载[文尾出处链接] 1 简介第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个 ...