日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARTS-26(leetcode-119. 杨辉三角 II,AVOD最详细过程,Git用法,DMA原理,海天味业的企业估值(1))

發布時間:2024/8/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARTS-26(leetcode-119. 杨辉三角 II,AVOD最详细过程,Git用法,DMA原理,海天味业的企业估值(1)) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Algorithm

119. 楊輝三角 II
給定一個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。

思路:

總的來說就是利用楊輝三角形后一行與前一行的關系。
更新過程為:從倒數第二個元素開始往前更新 它等于原來這個位置的數 + 前一個位置的數的行[i] = 行[i] + 行[i-1]

class Solution { public:vector<int> getRow(int rowIndex) {vector<int> kRows(rowIndex+1);//第K行的vector大小為 rowIndex+1for(int i = 0; i <= rowIndex; i++)//利用前一行求后一行,第K行要循環K遍{kRows[i] = 1;//行末尾為1for(int j = i; j > 1; j--)//每一行的更新過程{kRows[j-1] = kRows[j-2] + kRows[j-1];}}return kRows; } };

亦或者是:

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--){// 處理每一行的元素,從最后一個元素(值為1)前面的元素開始,從后往前處理// 第j個元素的值等于:前一行第j-1個元素的值 + 前一行第j個元素的值kRows[j] = kRows[j-1] + kRows[j];}}return kRows;} };

Review

史上最詳細的AVOD講解

Tips

Git 學習
git add -u:將文件的修改、文件的刪除,添加到暫存區。
git add .:將文件的修改,文件的新建,添加到暫存區。
git add -A:將文件的修改,文件的刪除,文件的新建,添加到暫存區。
工作中一般是用到 git add . 或者 git add -A

git add -A相對于git add -u命令的優點 : 可以提交所有被刪除、被替換、被修改和新增的文件到數據暫存區,而git add -u 只能操作跟蹤過的文件
git add -A 等同于git add -all

git reset --hard 清除暫存

git mv 可以在git端修改文件名
git reset --hard 可以把工作區和暫存區的文件,都回滾了

? git log --all 查看所有分支的歷史
? git log --all --graph 查看圖形化的 log 地址
? git log --oneline 查看單行的簡潔歷史。
? git log --oneline -n4 查看最近的四條簡潔歷史。
? git log --oneline --all -n4 --graph 查看所有分支最近 4 條單行的圖形化歷史。
? git help --web log 跳轉到git log 的幫助文檔網頁

//cat命令主要用來查看文件內容,創建文件,文件合并,追加文件內容等功能。
cat HEAD 查看HEAD文件的內容
git cat-file 命令 顯示版本庫對象的內容、類型及大小信息。
git cat-file -t b44dd71d62a5a8ed3 顯示版本庫對象的類型
git cat-file -s b44dd71d62a5a8ed3 顯示版本庫對象的大小
git cat-file -p b44dd71d62a5a8ed3 顯示版本庫對象的內容

HEAD:指向當前的工作路徑
config:存放本地倉庫(local)相關的配置信息。
refs/heads:存放分支
refs/tags:存放tag,又叫里程牌 (當這次commit是具有里程碑意義的 比如項目1.0的時候 就可以打tag)
objects:存放對象 .git/objects/ 文件夾中的子文件夾都是以哈希值的前兩位字符命名 每個object由40位字符組成,前兩位字符用來當文件夾,后38位做文件。

.git 文件目錄

? COMMIT_EDITMSG
? config 當前 git 的配置文件
? description (倉庫的描述信息文件)
? HEAD (指向當前所在的分支),例如當前在 develop 分支,實際指向地址是 refs/heads/develop
? hooks [文件夾]
? index
? info [文件夾]
? logs [文件夾]
? objects [文件夾] (存放所有的 git 對象,對象哈希值前 2 位作為文件夾名稱,后 38 位作為對象文件名, 可通過 git cat-file -p 命令,拼接文件夾名稱+文件名查看)
? ORIG_HEAD
? refs [文件夾]
? heads (存放當前項目的所有分支)
? tags (存放的當前項目的所有標簽,又叫做里程碑)

現在我們應該明白git底層的運行流程了,當我們添加或者修改了文件并且add到Stage Area之后,首先會根據文件內容創建不同的blob,當進行提交之后馬上創建一個tree組件把需要的blob組件添加進去,之后再封裝到一個commit組件中完成本次提交。在將來進行reset的時候可以直接使用git reset --hard xxxxx可以恢復到某個特定的版本,在reset之后,git會根據這個commit組件的id快速的找到tree組件,然后根據tree找到blob組件,之后對倉庫進行還原,整個過程都是以hash和二進制進行操作,所以git執行效率非常之高。

commit -a 老師的用詞還是很精準的,老師說如果你覺得暫存區你是不需要的,那你就這樣用,注意哦,是你不需要,而不是這個命令之后,工作區的內容不會進入暫存區,還是會進入的,只是加入之后立即會生成一個commit,不給你操作暫存區的機會~

HEAD的使用,以及PARENT符號^和~。可以這么理解
1 一個節點,可以包含多個子節點(checkout 出多個分支)
2 一個節點可以有多個父節點(多個分支合并)
3 ^ 和 ~ 都是父節點,區別是跟隨數字時候,^2 是第二個父節點,而~2是父節點的父節點
4 ^ 和 ~ 可以組合使用,例如 HEAD~2^2

DMA來源與原理

過去幾年里,整個計算機產業界,都在嘗試不停地提升 I/O 設備的速度。把 HDD 硬盤換成 SSD 硬盤,我們仍然覺得不夠快;用 PCI Express 接口的 SSD 硬盤替代 SATA 接口的 SSD 硬盤,我們還是覺得不夠快,所以,現在就有了傲騰(Optane)這樣的技術。但是,無論 I/O 速度如何提升,比起 CPU,總還是太慢。SSD 硬盤的 IOPS 可以到 2 萬、4 萬,但是我們 CPU 的主頻有 2GHz 以上,也就意味著每秒會有 20 億次的操作。如果我們對于 I/O 的操作,都是由 CPU 發出對應的指令,然后等待 I/O 設備完成操作之后返回,那 CPU 有大量的時間其實都是在等待 I/O 設備完成操作。但是,這個 CPU 的等待,在很多時候,其實并沒有太多的實際意義。我們對于 I/O 設備的大量操作,其實都只是把內存里面的數據,傳輸到 I/O 設備而已。在這種情況下,其實 CPU 只是在傻等而已。特別是當傳輸的數據量比較大的時候,比如進行大文件復制,如果所有數據都要經過 CPU,實在是有點兒太浪費時間了。

因此,計算機工程師們,就發明了 DMA 技術,也就是直接內存訪問(Direct Memory Access)技術,來減少 CPU 等待的時間。

理解 DMA,一個協處理器其實 DMA 技術很容易理解,本質上,DMA 技術就是我們在主板上放一塊獨立的芯片。在進行內存和 I/O 設備的數據傳輸的時候,我們不再通過 CPU 來控制數據傳輸,而直接通過 DMA 控制器(DMA Controller,簡稱 DMAC)。這塊芯片,我們可以認為它其實就是一個協處理器(Co-Processor)。DMAC 最有價值的地方體現在,當我們要傳輸的數據特別大、速度特別快,或者傳輸的數據特別小、速度特別慢的時候。

比如說,我們用千兆網卡或者硬盤傳輸大量數據的時候,如果都用 CPU 來搬運的話,肯定忙不過來,所以可以選擇 DMAC。而當數據傳輸很慢的時候,DMAC 可以等數據到齊了,再發送信號,給到 CPU 去處理,而不是讓 CPU 在那里忙等待。好了,現在你應該明白 DMAC 的價值,知道了它適合用在什么情況下。那我們現在回過頭來看。我們上面說,DMAC 是一塊“協處理器芯片”,這是為什么呢?注意,這里面的“協”字。DMAC 是在“協助”CPU,完成對應的數據傳輸工作。在 DMAC 控制數據傳輸的過程中,我們還是需要 CPU 的。

除此之外,DMAC 其實也是一個特殊的 I/O 設備,它和 CPU 以及其他 I/O 設備一樣,通過連接到總線來進行實際的數據傳輸。總線上的設備呢,其實有兩種類型。一種我們稱之為主設備(Master),另外一種,我們稱之為從設備(Slave)。想要主動發起數據傳輸,必須要是一個主設備才可以,CPU 就是主設備。而我們從設備(比如硬盤)只能接受數據傳輸。所以,如果通過 CPU 來傳輸數據,要么是 CPU 從 I/O 設備讀數據,要么是 CPU 向 I/O 設備寫數據。這個時候你可能要問了,那我們的 I/O 設備不能向主設備發起請求么?可以是可以,不過這個發送的不是數據內容,而是控制信號。I/O 設備可以告訴 CPU,我這里有數據要傳輸給你,但是實際數據是 CPU 拉走的,而不是 I/O 設備推給 CPU 的。

不過,DMAC 就很有意思了,它既是一個主設備,又是一個從設備。對于 CPU 來說,它是一個從設備;對于硬盤這樣的 IO 設備來說呢,它又變成了一個主設備。那使用 DMAC 進行數據傳輸的過程究竟是什么樣的呢?下面我們來具體看看。

  • 首先,CPU 還是作為一個主設備,向 DMAC 設備發起請求。這個請求,其實就是在 DMAC 里面修改配置寄存器。
  • CPU 修改 DMAC 的配置的時候,會告訴 DMAC 這樣幾個信息:
  • 首先是源地址的初始值以及傳輸時候的地址增減方式。所謂源地址,就是數據要從哪里傳輸過來。如果我們要從內存里面寫入數據到硬盤上,那么就是要讀取的數據在內存里面的地址。如果是從硬盤讀取數據到內存里,那就是硬盤的 I/O 接口的地址。我們講過總線的時候說過,I/O 的地址可以是一個內存地址,也可以是一個端口地址。而地址的增減方式就是說,數據是從大的地址向小的地址傳輸,還是從小的地址往大的地址傳輸。

    其次是目標地址初始值和傳輸時候的地址增減方式。目標地址自然就是和源地址對應的設備,也就是我們數據傳輸的目的地。

    第三個自然是要傳輸的數據長度,也就是我們一共要傳輸多少數據。

  • 設置完這些信息之后,DMAC 就會變成一個空閑的狀態(Idle)。
  • 如果我們要從硬盤上往內存里面加載數據,這個時候,硬盤就會向 DMAC 發起一個數據傳輸請求。這個請求并不是通過總線,而是通過一個額外的連線。
  • 然后,我們的 DMAC 需要再通過一個額外的連線響應這個申請。
  • 于是,DMAC 這個芯片,就向硬盤的接口發起要總線讀的傳輸請求。數據就從硬盤里面,讀到了 DMAC 的控制器里面。
  • 然后,DMAC 再向我們的內存發起總線寫的數據傳輸請求,把數據寫入到內存里面。
  • DMAC 會反復進行上面第 6、7 步的操作,直到 DMAC 的寄存器里面設置的數據長度傳輸完成。
  • 數據傳輸完成之后,DMAC 重新回到第 3 步的空閑狀態。所以,整個數據傳輸的過程中,我們不是通過 CPU 來搬運數據,而是由 DMAC 這個芯片來搬運數據。但是 CPU 在這個過程中也是必不可少的。因為傳輸什么數據,從哪里傳輸到哪里,其實還是由 CPU 來設置的。這也是為什么,DMAC 被叫作“協處理器”。

  • 最早,計算機里是沒有 DMAC 的,所有數據都是由 CPU 來搬運的。隨著人們對于數據傳輸的需求越來越多,先是出現了主板上獨立的 DMAC 控制器。到了今天,各種 I/O 設備越來越多,數據傳輸的需求越來越復雜,使用的場景各不相同。加之顯示器、網卡、硬盤對于數據傳輸的需求都不一樣,所以各個設備里面都有自己的 DMAC 芯片了。

    Share

    海天作為調味品行業的龍頭老大,也只占了16%的市場份額,競爭激烈,但是行業還是處于可以繼續發展的成熟期,海天的財報看起來還不錯。

    看下海天的企業護城河
    主要在以下幾個方面:
    (1)強大的品牌美譽度(海天醬油美味鮮,曬足180天)
    (2)不斷保持信息化優勢(集合行業特性的生產智造,效率庫存提升改進),直接導致了另外兩個優勢(1)規模優勢+成本優勢(同行業內最高的凈利率)(2)全產業鏈優勢(占用上下游資金,等同于無息貸款)
    (3)創新的銷售模式(下沉100%覆蓋,特定制度精細化管理考核,持續廣告宣傳、大眾心智占領)

    招股書說明,銷售都為買斷式銷售,不退回。
    (4)特有的企業文化(守拙擇善,務實創新)
    從過往的發展來看,堅持如一,從本業出發擴展。
    (5)優秀的管理層
    董事長有從基層到董事長的經歷,其他管理人員大部分都是來自原醬油廠舊部。

    再來看供應鏈的優勢:
    我們現在簡單提煉一下,首選的指標就是凈現金周轉天數的變化,凈現金周轉天數=存貨周轉天數 + 應收賬款周轉天數 + 預付賬款周轉天數 - 應付賬款周轉天數 - 預收賬款周轉天數。
    一般的我們認為這個數值越小越好,如果出現負數,則表明其在上下游產業鏈當中有強勢地位。
    從整個數據走勢圖,可以看出,海天味業在上下游的地位是越來越強勢,從財報上,我們也可以得知公司無長期借款,流動負債主要來源于對上游供貨商和下游經銷商的占款—— 對上游供應商先貨后款,對下游經銷商要求先款后貨。
    2017年公司總負債45.72億元, 其中應付賬款(對上游供應商占款)占比12.14%,預收款項(對下游經銷商占款) 占比58.60%。
    那么,需要進一步分析,其上下游地位強勢的來源。
    我們重點分析其下游渠道的分布和占有率情況。主要分為:公司本身銷售渠道管理和產品渠道的市場占有率。
    公司本身的渠道管理:海天味業采取直控終端、深度分銷的渠道模式。公司在全國劃分了6個大區,采取經銷商制;廠商關系上實行垂直管理與廠商“1+1”幫扶。
    由于餐飲渠道購買較為分散,完全由一批經銷商開發不太現實,需要開發二批商(分銷商),廠商合作的模式有助于海天幫助一批經銷商開拓二批經 銷商,實現更好的渠道開拓與客情維護。
    廠商協作的深度分銷機制是當前中國調味 品市場購買場景重餐飲、重流通背景下的必然選擇,而自1994年以來不斷積累的渠道織網也為海天構建了在餐飲渠道深度分銷的強大護城河,這樣的護城河需要投入 大量人員、資金和時間才能建立。
    2017年海天銷售人員1804人,遠高于競爭對手。2017年海天促銷和廣告費用8.48億元,第二名美味鮮僅0.56億元,海天每年渠道費用投放為美味鮮的15倍。
    海天味業對渠道的精細化管理水平高。海天在同一區域實行雙駕馬車制度,配備兩名以上經銷商,競爭淘汰。對于每一名經銷商公司要求專人專車專項資金,保證海天的渠道運作。
    海天對每一環節的渠道費用掌握精細,指導經銷商運作市場, 可確保高水平費用投放效率,保證每個環節經銷商利潤的同時,最大化公司的費用投放效率。

    總結:海天味業是唯一實現全國渠道覆蓋的公司,高覆蓋率筑就海天家庭渠道壁壘。正因為海天味業內部建立了高效和全覆蓋的經銷商隊伍,使其在調味品渠道中的餐飲渠道和家庭渠道都穩居行業第一,又因為其廣告投入最大,品牌占據了消費者心智,從而形成了公司的正向循環,可以不斷的擠壓上下游資金發展自己,形成了強勢的供應鏈優勢。

    總結

    以上是生活随笔為你收集整理的ARTS-26(leetcode-119. 杨辉三角 II,AVOD最详细过程,Git用法,DMA原理,海天味业的企业估值(1))的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。