ARTS-26(leetcode-119. 杨辉三角 II,AVOD最详细过程,Git用法,DMA原理,海天味业的企业估值(1))
Algorithm
119. 楊輝三角 II
給定一個(gè)非負(fù)索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。
思路:
總的來說就是利用楊輝三角形后一行與前一行的關(guān)系。
更新過程為:從倒數(shù)第二個(gè)元素開始往前更新 它等于原來這個(gè)位置的數(shù) + 前一個(gè)位置的數(shù)的行[i] = 行[i] + 行[i-1]
亦或者是:
class Solution { public:vector<int> getRow(int rowIndex) {vector<int> kRows(rowIndex+1);for(int i = 0; i <= rowIndex; i++){kRows[i] = 1;for(int j = i-1; j >= 1; j--){// 處理每一行的元素,從最后一個(gè)元素(值為1)前面的元素開始,從后往前處理// 第j個(gè)元素的值等于:前一行第j-1個(gè)元素的值 + 前一行第j個(gè)元素的值kRows[j] = kRows[j-1] + kRows[j];}}return kRows;} };Review
史上最詳細(xì)的AVOD講解
Tips
Git 學(xué)習(xí)
git add -u:將文件的修改、文件的刪除,添加到暫存區(qū)。
git add .:將文件的修改,文件的新建,添加到暫存區(qū)。
git add -A:將文件的修改,文件的刪除,文件的新建,添加到暫存區(qū)。
工作中一般是用到 git add . 或者 git add -A
git add -A相對(duì)于git add -u命令的優(yōu)點(diǎn) : 可以提交所有被刪除、被替換、被修改和新增的文件到數(shù)據(jù)暫存區(qū),而git add -u 只能操作跟蹤過的文件
git add -A 等同于git add -all
git reset --hard 清除暫存
git mv 可以在git端修改文件名
git reset --hard 可以把工作區(qū)和暫存區(qū)的文件,都回滾了
? git log --all 查看所有分支的歷史
? git log --all --graph 查看圖形化的 log 地址
? git log --oneline 查看單行的簡(jiǎn)潔歷史。
? git log --oneline -n4 查看最近的四條簡(jiǎn)潔歷史。
? git log --oneline --all -n4 --graph 查看所有分支最近 4 條單行的圖形化歷史。
? git help --web log 跳轉(zhuǎn)到git log 的幫助文檔網(wǎng)頁(yè)
//cat命令主要用來查看文件內(nèi)容,創(chuàng)建文件,文件合并,追加文件內(nèi)容等功能。
cat HEAD 查看HEAD文件的內(nèi)容
git cat-file 命令 顯示版本庫(kù)對(duì)象的內(nèi)容、類型及大小信息。
git cat-file -t b44dd71d62a5a8ed3 顯示版本庫(kù)對(duì)象的類型
git cat-file -s b44dd71d62a5a8ed3 顯示版本庫(kù)對(duì)象的大小
git cat-file -p b44dd71d62a5a8ed3 顯示版本庫(kù)對(duì)象的內(nèi)容
HEAD:指向當(dāng)前的工作路徑
config:存放本地倉(cāng)庫(kù)(local)相關(guān)的配置信息。
refs/heads:存放分支
refs/tags:存放tag,又叫里程牌 (當(dāng)這次commit是具有里程碑意義的 比如項(xiàng)目1.0的時(shí)候 就可以打tag)
objects:存放對(duì)象 .git/objects/ 文件夾中的子文件夾都是以哈希值的前兩位字符命名 每個(gè)object由40位字符組成,前兩位字符用來當(dāng)文件夾,后38位做文件。
.git 文件目錄
? COMMIT_EDITMSG
? config 當(dāng)前 git 的配置文件
? description (倉(cāng)庫(kù)的描述信息文件)
? HEAD (指向當(dāng)前所在的分支),例如當(dāng)前在 develop 分支,實(shí)際指向地址是 refs/heads/develop
? hooks [文件夾]
? index
? info [文件夾]
? logs [文件夾]
? objects [文件夾] (存放所有的 git 對(duì)象,對(duì)象哈希值前 2 位作為文件夾名稱,后 38 位作為對(duì)象文件名, 可通過 git cat-file -p 命令,拼接文件夾名稱+文件名查看)
? ORIG_HEAD
? refs [文件夾]
? heads (存放當(dāng)前項(xiàng)目的所有分支)
? tags (存放的當(dāng)前項(xiàng)目的所有標(biāo)簽,又叫做里程碑)
現(xiàn)在我們應(yīng)該明白git底層的運(yùn)行流程了,當(dāng)我們添加或者修改了文件并且add到Stage Area之后,首先會(huì)根據(jù)文件內(nèi)容創(chuàng)建不同的blob,當(dāng)進(jìn)行提交之后馬上創(chuàng)建一個(gè)tree組件把需要的blob組件添加進(jìn)去,之后再封裝到一個(gè)commit組件中完成本次提交。在將來進(jìn)行reset的時(shí)候可以直接使用git reset --hard xxxxx可以恢復(fù)到某個(gè)特定的版本,在reset之后,git會(huì)根據(jù)這個(gè)commit組件的id快速的找到tree組件,然后根據(jù)tree找到blob組件,之后對(duì)倉(cāng)庫(kù)進(jìn)行還原,整個(gè)過程都是以hash和二進(jìn)制進(jìn)行操作,所以git執(zhí)行效率非常之高。
commit -a 老師的用詞還是很精準(zhǔn)的,老師說如果你覺得暫存區(qū)你是不需要的,那你就這樣用,注意哦,是你不需要,而不是這個(gè)命令之后,工作區(qū)的內(nèi)容不會(huì)進(jìn)入暫存區(qū),還是會(huì)進(jìn)入的,只是加入之后立即會(huì)生成一個(gè)commit,不給你操作暫存區(qū)的機(jī)會(huì)~
HEAD的使用,以及PARENT符號(hào)^和~。可以這么理解
1 一個(gè)節(jié)點(diǎn),可以包含多個(gè)子節(jié)點(diǎn)(checkout 出多個(gè)分支)
2 一個(gè)節(jié)點(diǎn)可以有多個(gè)父節(jié)點(diǎn)(多個(gè)分支合并)
3 ^ 和 ~ 都是父節(jié)點(diǎn),區(qū)別是跟隨數(shù)字時(shí)候,^2 是第二個(gè)父節(jié)點(diǎn),而~2是父節(jié)點(diǎn)的父節(jié)點(diǎn)
4 ^ 和 ~ 可以組合使用,例如 HEAD~2^2
DMA來源與原理
過去幾年里,整個(gè)計(jì)算機(jī)產(chǎn)業(yè)界,都在嘗試不停地提升 I/O 設(shè)備的速度。把 HDD 硬盤換成 SSD 硬盤,我們?nèi)匀挥X得不夠快;用 PCI Express 接口的 SSD 硬盤替代 SATA 接口的 SSD 硬盤,我們還是覺得不夠快,所以,現(xiàn)在就有了傲騰(Optane)這樣的技術(shù)。但是,無論 I/O 速度如何提升,比起 CPU,總還是太慢。SSD 硬盤的 IOPS 可以到 2 萬(wàn)、4 萬(wàn),但是我們 CPU 的主頻有 2GHz 以上,也就意味著每秒會(huì)有 20 億次的操作。如果我們對(duì)于 I/O 的操作,都是由 CPU 發(fā)出對(duì)應(yīng)的指令,然后等待 I/O 設(shè)備完成操作之后返回,那 CPU 有大量的時(shí)間其實(shí)都是在等待 I/O 設(shè)備完成操作。但是,這個(gè) CPU 的等待,在很多時(shí)候,其實(shí)并沒有太多的實(shí)際意義。我們對(duì)于 I/O 設(shè)備的大量操作,其實(shí)都只是把內(nèi)存里面的數(shù)據(jù),傳輸?shù)?I/O 設(shè)備而已。在這種情況下,其實(shí) CPU 只是在傻等而已。特別是當(dāng)傳輸?shù)臄?shù)據(jù)量比較大的時(shí)候,比如進(jìn)行大文件復(fù)制,如果所有數(shù)據(jù)都要經(jīng)過 CPU,實(shí)在是有點(diǎn)兒太浪費(fèi)時(shí)間了。
因此,計(jì)算機(jī)工程師們,就發(fā)明了 DMA 技術(shù),也就是直接內(nèi)存訪問(Direct Memory Access)技術(shù),來減少 CPU 等待的時(shí)間。
理解 DMA,一個(gè)協(xié)處理器其實(shí) DMA 技術(shù)很容易理解,本質(zhì)上,DMA 技術(shù)就是我們?cè)谥靼迳戏乓粔K獨(dú)立的芯片。在進(jìn)行內(nèi)存和 I/O 設(shè)備的數(shù)據(jù)傳輸?shù)臅r(shí)候,我們不再通過 CPU 來控制數(shù)據(jù)傳輸,而直接通過 DMA 控制器(DMA Controller,簡(jiǎn)稱 DMAC)。這塊芯片,我們可以認(rèn)為它其實(shí)就是一個(gè)協(xié)處理器(Co-Processor)。DMAC 最有價(jià)值的地方體現(xiàn)在,當(dāng)我們要傳輸?shù)臄?shù)據(jù)特別大、速度特別快,或者傳輸?shù)臄?shù)據(jù)特別小、速度特別慢的時(shí)候。
比如說,我們用千兆網(wǎng)卡或者硬盤傳輸大量數(shù)據(jù)的時(shí)候,如果都用 CPU 來搬運(yùn)的話,肯定忙不過來,所以可以選擇 DMAC。而當(dāng)數(shù)據(jù)傳輸很慢的時(shí)候,DMAC 可以等數(shù)據(jù)到齊了,再發(fā)送信號(hào),給到 CPU 去處理,而不是讓 CPU 在那里忙等待。好了,現(xiàn)在你應(yīng)該明白 DMAC 的價(jià)值,知道了它適合用在什么情況下。那我們現(xiàn)在回過頭來看。我們上面說,DMAC 是一塊“協(xié)處理器芯片”,這是為什么呢?注意,這里面的“協(xié)”字。DMAC 是在“協(xié)助”CPU,完成對(duì)應(yīng)的數(shù)據(jù)傳輸工作。在 DMAC 控制數(shù)據(jù)傳輸?shù)倪^程中,我們還是需要 CPU 的。
除此之外,DMAC 其實(shí)也是一個(gè)特殊的 I/O 設(shè)備,它和 CPU 以及其他 I/O 設(shè)備一樣,通過連接到總線來進(jìn)行實(shí)際的數(shù)據(jù)傳輸。總線上的設(shè)備呢,其實(shí)有兩種類型。一種我們稱之為主設(shè)備(Master),另外一種,我們稱之為從設(shè)備(Slave)。想要主動(dòng)發(fā)起數(shù)據(jù)傳輸,必須要是一個(gè)主設(shè)備才可以,CPU 就是主設(shè)備。而我們從設(shè)備(比如硬盤)只能接受數(shù)據(jù)傳輸。所以,如果通過 CPU 來傳輸數(shù)據(jù),要么是 CPU 從 I/O 設(shè)備讀數(shù)據(jù),要么是 CPU 向 I/O 設(shè)備寫數(shù)據(jù)。這個(gè)時(shí)候你可能要問了,那我們的 I/O 設(shè)備不能向主設(shè)備發(fā)起請(qǐng)求么?可以是可以,不過這個(gè)發(fā)送的不是數(shù)據(jù)內(nèi)容,而是控制信號(hào)。I/O 設(shè)備可以告訴 CPU,我這里有數(shù)據(jù)要傳輸給你,但是實(shí)際數(shù)據(jù)是 CPU 拉走的,而不是 I/O 設(shè)備推給 CPU 的。
不過,DMAC 就很有意思了,它既是一個(gè)主設(shè)備,又是一個(gè)從設(shè)備。對(duì)于 CPU 來說,它是一個(gè)從設(shè)備;對(duì)于硬盤這樣的 IO 設(shè)備來說呢,它又變成了一個(gè)主設(shè)備。那使用 DMAC 進(jìn)行數(shù)據(jù)傳輸?shù)倪^程究竟是什么樣的呢?下面我們來具體看看。
首先是源地址的初始值以及傳輸時(shí)候的地址增減方式。所謂源地址,就是數(shù)據(jù)要從哪里傳輸過來。如果我們要從內(nèi)存里面寫入數(shù)據(jù)到硬盤上,那么就是要讀取的數(shù)據(jù)在內(nèi)存里面的地址。如果是從硬盤讀取數(shù)據(jù)到內(nèi)存里,那就是硬盤的 I/O 接口的地址。我們講過總線的時(shí)候說過,I/O 的地址可以是一個(gè)內(nèi)存地址,也可以是一個(gè)端口地址。而地址的增減方式就是說,數(shù)據(jù)是從大的地址向小的地址傳輸,還是從小的地址往大的地址傳輸。
其次是目標(biāo)地址初始值和傳輸時(shí)候的地址增減方式。目標(biāo)地址自然就是和源地址對(duì)應(yīng)的設(shè)備,也就是我們數(shù)據(jù)傳輸?shù)哪康牡亍?/p>
第三個(gè)自然是要傳輸?shù)臄?shù)據(jù)長(zhǎng)度,也就是我們一共要傳輸多少數(shù)據(jù)。
最早,計(jì)算機(jī)里是沒有 DMAC 的,所有數(shù)據(jù)都是由 CPU 來搬運(yùn)的。隨著人們對(duì)于數(shù)據(jù)傳輸?shù)男枨笤絹碓蕉?#xff0c;先是出現(xiàn)了主板上獨(dú)立的 DMAC 控制器。到了今天,各種 I/O 設(shè)備越來越多,數(shù)據(jù)傳輸?shù)男枨笤絹碓綇?fù)雜,使用的場(chǎng)景各不相同。加之顯示器、網(wǎng)卡、硬盤對(duì)于數(shù)據(jù)傳輸?shù)男枨蠖疾灰粯?#xff0c;所以各個(gè)設(shè)備里面都有自己的 DMAC 芯片了。
Share
海天作為調(diào)味品行業(yè)的龍頭老大,也只占了16%的市場(chǎng)份額,競(jìng)爭(zhēng)激烈,但是行業(yè)還是處于可以繼續(xù)發(fā)展的成熟期,海天的財(cái)報(bào)看起來還不錯(cuò)。
看下海天的企業(yè)護(hù)城河
主要在以下幾個(gè)方面:
(1)強(qiáng)大的品牌美譽(yù)度(海天醬油美味鮮,曬足180天)
(2)不斷保持信息化優(yōu)勢(shì)(集合行業(yè)特性的生產(chǎn)智造,效率庫(kù)存提升改進(jìn)),直接導(dǎo)致了另外兩個(gè)優(yōu)勢(shì)(1)規(guī)模優(yōu)勢(shì)+成本優(yōu)勢(shì)(同行業(yè)內(nèi)最高的凈利率)(2)全產(chǎn)業(yè)鏈優(yōu)勢(shì)(占用上下游資金,等同于無息貸款)
(3)創(chuàng)新的銷售模式(下沉100%覆蓋,特定制度精細(xì)化管理考核,持續(xù)廣告宣傳、大眾心智占領(lǐng))
招股書說明,銷售都為買斷式銷售,不退回。
(4)特有的企業(yè)文化(守拙擇善,務(wù)實(shí)創(chuàng)新)
從過往的發(fā)展來看,堅(jiān)持如一,從本業(yè)出發(fā)擴(kuò)展。
(5)優(yōu)秀的管理層
董事長(zhǎng)有從基層到董事長(zhǎng)的經(jīng)歷,其他管理人員大部分都是來自原醬油廠舊部。
再來看供應(yīng)鏈的優(yōu)勢(shì):
我們現(xiàn)在簡(jiǎn)單提煉一下,首選的指標(biāo)就是凈現(xiàn)金周轉(zhuǎn)天數(shù)的變化,凈現(xiàn)金周轉(zhuǎn)天數(shù)=存貨周轉(zhuǎn)天數(shù) + 應(yīng)收賬款周轉(zhuǎn)天數(shù) + 預(yù)付賬款周轉(zhuǎn)天數(shù) - 應(yīng)付賬款周轉(zhuǎn)天數(shù) - 預(yù)收賬款周轉(zhuǎn)天數(shù)。
一般的我們認(rèn)為這個(gè)數(shù)值越小越好,如果出現(xiàn)負(fù)數(shù),則表明其在上下游產(chǎn)業(yè)鏈當(dāng)中有強(qiáng)勢(shì)地位。
從整個(gè)數(shù)據(jù)走勢(shì)圖,可以看出,海天味業(yè)在上下游的地位是越來越強(qiáng)勢(shì),從財(cái)報(bào)上,我們也可以得知公司無長(zhǎng)期借款,流動(dòng)負(fù)債主要來源于對(duì)上游供貨商和下游經(jīng)銷商的占款—— 對(duì)上游供應(yīng)商先貨后款,對(duì)下游經(jīng)銷商要求先款后貨。
2017年公司總負(fù)債45.72億元, 其中應(yīng)付賬款(對(duì)上游供應(yīng)商占款)占比12.14%,預(yù)收款項(xiàng)(對(duì)下游經(jīng)銷商占款) 占比58.60%。
那么,需要進(jìn)一步分析,其上下游地位強(qiáng)勢(shì)的來源。
我們重點(diǎn)分析其下游渠道的分布和占有率情況。主要分為:公司本身銷售渠道管理和產(chǎn)品渠道的市場(chǎng)占有率。
公司本身的渠道管理:海天味業(yè)采取直控終端、深度分銷的渠道模式。公司在全國(guó)劃分了6個(gè)大區(qū),采取經(jīng)銷商制;廠商關(guān)系上實(shí)行垂直管理與廠商“1+1”幫扶。
由于餐飲渠道購(gòu)買較為分散,完全由一批經(jīng)銷商開發(fā)不太現(xiàn)實(shí),需要開發(fā)二批商(分銷商),廠商合作的模式有助于海天幫助一批經(jīng)銷商開拓二批經(jīng) 銷商,實(shí)現(xiàn)更好的渠道開拓與客情維護(hù)。
廠商協(xié)作的深度分銷機(jī)制是當(dāng)前中國(guó)調(diào)味 品市場(chǎng)購(gòu)買場(chǎng)景重餐飲、重流通背景下的必然選擇,而自1994年以來不斷積累的渠道織網(wǎng)也為海天構(gòu)建了在餐飲渠道深度分銷的強(qiáng)大護(hù)城河,這樣的護(hù)城河需要投入 大量人員、資金和時(shí)間才能建立。
2017年海天銷售人員1804人,遠(yuǎn)高于競(jìng)爭(zhēng)對(duì)手。2017年海天促銷和廣告費(fèi)用8.48億元,第二名美味鮮僅0.56億元,海天每年渠道費(fèi)用投放為美味鮮的15倍。
海天味業(yè)對(duì)渠道的精細(xì)化管理水平高。海天在同一區(qū)域?qū)嵭须p駕馬車制度,配備兩名以上經(jīng)銷商,競(jìng)爭(zhēng)淘汰。對(duì)于每一名經(jīng)銷商公司要求專人專車專項(xiàng)資金,保證海天的渠道運(yùn)作。
海天對(duì)每一環(huán)節(jié)的渠道費(fèi)用掌握精細(xì),指導(dǎo)經(jīng)銷商運(yùn)作市場(chǎng), 可確保高水平費(fèi)用投放效率,保證每個(gè)環(huán)節(jié)經(jīng)銷商利潤(rùn)的同時(shí),最大化公司的費(fèi)用投放效率。
總結(jié):海天味業(yè)是唯一實(shí)現(xiàn)全國(guó)渠道覆蓋的公司,高覆蓋率筑就海天家庭渠道壁壘。正因?yàn)楹L煳稑I(yè)內(nèi)部建立了高效和全覆蓋的經(jīng)銷商隊(duì)伍,使其在調(diào)味品渠道中的餐飲渠道和家庭渠道都穩(wěn)居行業(yè)第一,又因?yàn)槠鋸V告投入最大,品牌占據(jù)了消費(fèi)者心智,從而形成了公司的正向循環(huán),可以不斷的擠壓上下游資金發(fā)展自己,形成了強(qiáng)勢(shì)的供應(yīng)鏈優(yōu)勢(shì)。
總結(jié)
以上是生活随笔為你收集整理的ARTS-26(leetcode-119. 杨辉三角 II,AVOD最详细过程,Git用法,DMA原理,海天味业的企业估值(1))的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 松下PLC报mewnet设备打开错误--
- 下一篇: 一个c语言源程序至少包含,一个C源程序必