ARTS-2
ARTS的初衷
- Algorithm:主要是為了編程訓(xùn)練和學(xué)習(xí)。每周至少做一個(gè) leetcode 的算法題(先從Easy開(kāi)始,然后再M(fèi)edium,最后才Hard)。進(jìn)行編程訓(xùn)練,如果不訓(xùn)練你看再多的算法書(shū),你依然不會(huì)做算法題,看完書(shū)后,你需要訓(xùn)練。關(guān)于做Leetcode的的優(yōu)勢(shì),你可以看一下我在coolshell上的文章 Leetcode 編程訓(xùn)練 - 酷 殼 - CoolShell。
- Review:主要是為了學(xué)習(xí)英文,如果你的英文不行,你基本上無(wú)緣技術(shù)高手。所以,需要你閱讀并點(diǎn)評(píng)至少一篇英文技術(shù)文章,我個(gè)人最喜歡去的地方是http://Medium.com(需要梯子)以及各個(gè)公司的技術(shù)blog,如Netflix的。
- Tip:主要是為了總結(jié)和歸納你在是常工作中所遇到的知識(shí)點(diǎn)。學(xué)習(xí)至少一個(gè)技術(shù)技巧。你在工作中遇到的問(wèn)題,踩過(guò)的坑,學(xué)習(xí)的點(diǎn)滴知識(shí)。
- Share:主要是為了建立你的影響力,能夠輸出價(jià)值觀。分享一篇有觀點(diǎn)和思考的技術(shù)文章。
作者:陳皓
鏈接:https://www.zhihu.com/question/301150832/answer/529809529
來(lái)源:知乎
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
Algorithm
給定一個(gè)數(shù)組,它的第 i 個(gè)元素是一支給定股票第 i 天的價(jià)格。
設(shè)計(jì)一個(gè)算法來(lái)計(jì)算你所能獲取的最大利潤(rùn)。你可以盡可能地完成更多的交易(多次買(mǎi)賣(mài)一支股票)。
注意:你不能同時(shí)參與多筆交易(你必須在再次購(gòu)買(mǎi)前出售掉之前的股票)。
示例 1:
輸入: [7,1,5,3,6,4]
輸出: 7
解釋: 在第 2 天(股票價(jià)格 = 1)的時(shí)候買(mǎi)入,在第 3 天(股票價(jià)格 = 5)的時(shí)候賣(mài)出, 這筆交易所能獲得利潤(rùn) = 5-1 = 4 。
隨后,在第 4 天(股票價(jià)格 = 3)的時(shí)候買(mǎi)入,在第 5 天(股票價(jià)格 = 6)的時(shí)候賣(mài)出, 這筆交易所能獲得利潤(rùn) = 6-3 = 3 。
示例 2:
輸入: [1,2,3,4,5]
輸出: 4
解釋: 在第 1 天(股票價(jià)格 = 1)的時(shí)候買(mǎi)入,在第 5 天 (股票價(jià)格 = 5)的時(shí)候賣(mài)出, 這筆交易所能獲得利潤(rùn) = 5-1 = 4 。
注意你不能在第 1 天和第 2 天接連購(gòu)買(mǎi)股票,之后再將它們賣(mài)出。
因?yàn)檫@樣屬于同時(shí)參與了多筆交易,你必須在再次購(gòu)買(mǎi)前出售掉之前的股票。
示例 3:
輸入: [7,6,4,3,1]
輸出: 0
解釋: 在這種情況下, 沒(méi)有交易完成, 所以最大利潤(rùn)為 0。
來(lái)源: https://leetcode-cn.com/explore/featured/card/top-interview-questions-easy/1/array/22/
# 審題很重要,第一次看這題的時(shí)候,一直在想怎樣模擬出最佳交易策略;然而我們只是計(jì)算最大收益,這個(gè)是上帝視角的,只要做一下前后對(duì)比即可。
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
官方維護(hù)的軟件倉(cāng)庫(kù)總有不夠用的時(shí)候,有時(shí)會(huì)遇到需要自己打軟件包的情況,掌握這項(xiàng)技能還是很必要的。
- deb打包
參考資料:deb打包教程
# 打包anaconda的簡(jiǎn)單示例,操作都在Package目錄下進(jìn)行
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的目錄內(nèi)容
DEBIAN home usr
dpkg-deb -b anaconda3 anaconda3-amd64.deb # 開(kāi)始打包
Review & Share
目前還做不到分享一篇有觀點(diǎn)和思考的技術(shù)文章,那就先做好積累吧。
物理機(jī)遷移kvm方案調(diào)研
最近公司搞成本優(yōu)化,需要遷移一批物理機(jī)到kvm虛擬機(jī)。苦于遷移成本太高,對(duì)于環(huán)境復(fù)雜的機(jī)器,一人力一天只能遷移個(gè)1到2臺(tái)。于是,我便寄希望于將物理機(jī)直接虛擬化的方案,希望能夠降低遷移成本。
現(xiàn)有的遷移方案基本分類(lèi)兩類(lèi):
- Hot migration,不停機(jī)遷移,這類(lèi)方案要求物理機(jī)上的數(shù)據(jù)相對(duì)固定(Recommended for static data);
- Cold migration,關(guān)機(jī)遷移,這類(lèi)方案基本上是從livecd這類(lèi)系統(tǒng)啟動(dòng),對(duì)整個(gè)硬盤(pán)做鏡像。
維基百科上列舉了一些成熟的方案和工具,它們適用的場(chǎng)景各有不同,多數(shù)是cold migration。
hot migration的可行性
現(xiàn)有業(yè)務(wù)場(chǎng)景下,想要的是hot migration,所以重點(diǎn)看hot方案的可行性。
網(wǎng)上搜索了半天, 找到幾個(gè)可行的方案,很多方案實(shí)際上還是cold migration,只不過(guò)停機(jī)時(shí)間很短。
- kvm官方虛擬機(jī)跨物理機(jī)遷移文檔,記錄作為參考。
- 先使用rsync同步大部分?jǐn)?shù)據(jù),停止服務(wù)繼續(xù)同步變化后的文件,最后修正虛擬機(jī)的引導(dǎo)和fstab:Manual P2V of Debian Sarge
- P2V Migration with Post-Copy Hot Cloning for Service Downtime Reduction,這篇論文提出了利用內(nèi)核模塊同步文件塊改動(dòng)的方式來(lái)在線(xiàn)clone物理機(jī)的磁盤(pán),實(shí)現(xiàn)成本比較高,且還是需要手動(dòng)調(diào)整配置,修復(fù)引導(dǎo)。
- 停服務(wù)不關(guān)機(jī),使用dd拷貝整個(gè)磁盤(pán):Converting a running physical machine into a KVM virtual machine
- 使用tar打包,根據(jù)機(jī)器上的具體服務(wù)器要的,exclude非必要的文件夾:鏈接
以上方法都存在,不可自動(dòng)化和成功率難保證的問(wèn)題(需要手動(dòng)配置引導(dǎo)、熱拷貝的數(shù)據(jù)難保證完全一致),所以無(wú)法在實(shí)際生產(chǎn)環(huán)境中使用。
cold migration
cold migration有很多成熟的方案和工具,可參考維基百科,該類(lèi)方法理論上可以做到半自動(dòng)化,但是操作成本高,需要重啟服務(wù)器,同樣不適用于我碰到的問(wèn)題。
結(jié)論
初步結(jié)論,系統(tǒng)級(jí)別的hot migration實(shí)現(xiàn)成本高,無(wú)成熟解決方案(包括商業(yè)和開(kāi)源)。現(xiàn)有成熟方案都是 cold migration。
由于沒(méi)有停機(jī)遷移的條件,想要降低遷移成本的話(huà),從新機(jī)器環(huán)境配置上下功夫更靠譜。
- tar大法可以嘗試下,遷移一部分看成本能否接受
https://www.kancloud.cn/ivandu/linux/405447 - 調(diào)研使用saltstack或者shell腳本快速同步配置的方法

浙公網(wǎng)安備 33010602011771號(hào)