為什么說(shuō)“懂技術(shù)”,是產(chǎn)品經(jīng)理最硬的底牌?
本篇文章主要結(jié)合技術(shù)知識(shí)和一些日常案例,幫助大家理解技術(shù)同學(xué)的一些日?!昂谠?huà)”,不至于被他們“騙”,其次就是隨著時(shí)間的拉長(zhǎng),懂技術(shù)肯定也是產(chǎn)品自身的一項(xiàng)優(yōu)勢(shì),希望本篇文章能給大家?guī)?lái)幫助或者啟發(fā),enjoy..
一、面向過(guò)程&面向?qū)ο?/h2>
1、開(kāi)發(fā)語(yǔ)言中C和Java的最大區(qū)別是什么?
C:面向過(guò)程
java:面向?qū)ο?/p>
2、什么叫面向過(guò)程?什么叫面向?qū)ο螅?/strong>2.1、面向過(guò)程強(qiáng)調(diào)的是步驟和順序。例如:把一部蘋(píng)果16放進(jìn)A倉(cāng)庫(kù),然后在把一部華為M70放進(jìn)B倉(cāng)庫(kù)。這個(gè)案例中,要執(zhí)行:
–拿起蘋(píng)果16,放進(jìn)A倉(cāng),增加A倉(cāng)庫(kù)存
–拿起華為M70,放進(jìn)B倉(cāng),增加B倉(cāng)庫(kù)存
一共有6步。所以所強(qiáng)調(diào)的是過(guò)程操作
2.2、面向?qū)ο髲?qiáng)調(diào)的是抽象和數(shù)據(jù)建模。里面涉及了3個(gè)知識(shí):類(lèi)、屬性、對(duì)象(實(shí)例)
–先回到我們的案例,如果是上述案例,面向?qū)ο笫窃趺醋龅哪兀?/p>
–聲明類(lèi)并取出對(duì)象(蘋(píng)果16和華為M70)
–放到指定倉(cāng)庫(kù)(蘋(píng)果16放到A,華為M70放到B)
–增加庫(kù)存
eg:像上面說(shuō)的放到指定倉(cāng)庫(kù)、增加庫(kù)存都是開(kāi)發(fā)語(yǔ)言中說(shuō)的方法
3、面向?qū)ο笾械念?lèi)、屬性、對(duì)象是什么呢?
3.1、類(lèi):抽象的結(jié)果,強(qiáng)調(diào)的是具有相同屬性或行為(方法)對(duì)象的抽象。例如上面的蘋(píng)果16和華為M70,對(duì)應(yīng)的就是有共同信息的商品,抽象出來(lái)其實(shí)就是【商品SKU】,所以我們的商品SKU就是抽象后的結(jié)果,也就是類(lèi)
3.2、屬性:簡(jiǎn)單理解就是信息或字段,例如蘋(píng)果16和華為M70,他們共有的信息就是名稱(chēng)、型號(hào),這就是屬性,對(duì)應(yīng)的就是頁(yè)面上我們看到的商品SKU字段
3.3、對(duì)象(實(shí)例):這個(gè)結(jié)合類(lèi)來(lái)理解,類(lèi)可以理解成模板,對(duì)象就是通過(guò)模板形成的產(chǎn)物,例如蘋(píng)果16就是商品SKU下的一個(gè)對(duì)象(或者說(shuō)是具體的實(shí)物)
二、從面向?qū)ο蟮綌?shù)據(jù)建模:E-R圖與數(shù)據(jù)庫(kù)
1、基于上面講的,我們拓展到第二個(gè)知識(shí)【E-R圖】,E-R圖是什么呢?
E-R(實(shí)體entity-關(guān)系relation)圖也就是實(shí)體關(guān)系圖,本身是數(shù)據(jù)建模的一種方法,簡(jiǎn)單來(lái)說(shuō)其實(shí)就是用于搭建數(shù)據(jù)庫(kù)表以及表于表之間如何合理建立聯(lián)系的基礎(chǔ)
2、E-R圖中包含哪些信息呢?
2.1、E-R圖中包含實(shí)體、屬性、關(guān)系三種信息
2.2、什么是實(shí)體、屬性?
–從面向?qū)ο笈c數(shù)據(jù)庫(kù)的角度類(lèi)比:實(shí)體≈類(lèi)≈?jǐn)?shù)據(jù)庫(kù)表,屬性≈屬性≈?jǐn)?shù)據(jù)庫(kù)表中的字段
eg:面向?qū)ο笾械膶?duì)象≈?jǐn)?shù)據(jù)庫(kù)表中的一行數(shù)據(jù)
3、基于上述手機(jī)和倉(cāng)庫(kù)的案例,用系統(tǒng)功能舉例E-R如何畫(huà)呢?首先將E-R圖中涉及的信息進(jìn)行羅列
3.1、類(lèi)/實(shí)體:商品SKU、倉(cāng)庫(kù)功能
3.2、屬性:
–商品SKU:編號(hào)、名稱(chēng)等
–倉(cāng)庫(kù):倉(cāng)庫(kù)名稱(chēng)、(隱藏屬性:庫(kù)存數(shù)量,本身不屬于倉(cāng)庫(kù)的基礎(chǔ)屬性,但是是有關(guān)聯(lián)關(guān)系的)
3.3、對(duì)象:
–商品SKU的對(duì)象:蘋(píng)果16、華為M70
–倉(cāng)庫(kù)的對(duì)象:A倉(cāng)、B倉(cāng)
3.4、抽象出來(lái)上述信息后,E-R圖是怎樣的呢?
E-R圖:
4、如何借鑒E-R圖搭建數(shù)據(jù)庫(kù)表呢?
4.1、數(shù)據(jù)庫(kù)是什么?
–數(shù)據(jù)庫(kù)是存儲(chǔ)數(shù)據(jù)的一種工具,用于存儲(chǔ)不同類(lèi)型的數(shù)據(jù),其中數(shù)據(jù)庫(kù)的核心是表。數(shù)據(jù)庫(kù)(此處指結(jié)構(gòu)化數(shù)據(jù)庫(kù))中的表簡(jiǎn)單理解就是一個(gè)二維表,跟我們常用的excel差不多
–此處說(shuō)的數(shù)據(jù)庫(kù)指的是存儲(chǔ)在服務(wù)器的硬盤(pán)上,屬于持久化數(shù)據(jù)(簡(jiǎn)單理解就是可以隨時(shí)讀?。?/p>
4.2、以上述的商品SKU為例,數(shù)據(jù)庫(kù)表案例如下:
–表名:sku_table(商品SKU表)
–表結(jié)構(gòu):
4.3、上述案例中有提到主鍵和外鍵,這是什么?
–主鍵:指的是當(dāng)前表中的唯一標(biāo)識(shí),不允許為空也不允許重復(fù)??梢岳斫鉃閑xcel中的行序號(hào)
–外鍵:一般當(dāng)前表中的某個(gè)字段,這個(gè)字段存的是另一張表的主鍵,該字段用于建立表于表之間的關(guān)聯(lián)關(guān)系。例如上述E-R中圖的信息,t_warehouse_sku表中可以通過(guò)sku_id關(guān)聯(lián)到t_sku表中的商品信息(簡(jiǎn)單理解就是excel中的vlookup函數(shù))
5、開(kāi)發(fā)常說(shuō)查數(shù)據(jù)庫(kù)慢,需要加索引,索引是什么?
簡(jiǎn)單理解就是一本書(shū)的目錄,根據(jù)目錄可以快速定位到數(shù)據(jù)的位置,從而提高查詢(xún)速度
6、其實(shí)還一種數(shù)據(jù)庫(kù)叫redis,redis是什么?
redis是數(shù)據(jù)庫(kù)的一種,專(zhuān)業(yè)術(shù)語(yǔ)稱(chēng)它是內(nèi)存數(shù)據(jù)庫(kù)或者緩存數(shù)據(jù)庫(kù),例如一些數(shù)據(jù)不需要記錄到真實(shí)的數(shù)據(jù)庫(kù)時(shí),但又需要記錄下來(lái)供后續(xù)邏輯快速讀取做計(jì)算使用,就可以把數(shù)據(jù)先記錄到redis,然后做數(shù)據(jù)計(jì)算,計(jì)算完成后刪除這條數(shù)據(jù)就可以了。
比較抽象,舉個(gè)例子就是當(dāng)我們記錄了一個(gè)內(nèi)容,分別記錄在便利貼和電腦的excel上,便利貼你抬頭看一眼就能知道內(nèi)容了(內(nèi)存讀?。挥玫诫娔X上找到excel然后打開(kāi)找到這個(gè)內(nèi)容,可以省去一些查找的過(guò)程。
三、常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)
1、字符串-json,符號(hào)是{}
json的數(shù)據(jù)結(jié)構(gòu)是鍵值對(duì),也就是key:value。key=屬性(字段名),value=值。一般key是唯一的,但是value可以重復(fù)。樣式例如{SKU編號(hào):001}
2、數(shù)組-array,符號(hào)是[]
數(shù)據(jù)結(jié)構(gòu)只有值(value),但是返回的值是有序的,并且可以指定返回第x個(gè)值。例如[A,B,C],如果指定第3個(gè)返回,那就是arr[2],此時(shí)返回的就是C(2是因?yàn)槌绦驈?開(kāi)始計(jì)數(shù))
3、隊(duì)列-queue,符號(hào)是Q
可以把它理解成數(shù)組,也有順序,但是順序不像數(shù)組可以指定返回,而是強(qiáng)有序的,遵循先進(jìn)先出的原則,出隊(duì)只能從頭出,入隊(duì)只能從尾入
四、其他一些比較常見(jiàn)的技術(shù)名詞和概念
1、線(xiàn)程
執(zhí)行動(dòng)作的最小單元,可以理解成員工,如果一個(gè)員工做一件事就是單線(xiàn)程,如果多個(gè)員工做一件事或多件事就是多線(xiàn)程
2、任務(wù)執(zhí)行方式
–同步任務(wù):可以理解成串行,所以他是有順序的,要一個(gè)一個(gè)執(zhí)行,前一個(gè)沒(méi)執(zhí)行完之前不能執(zhí)行下一個(gè),所以是阻塞任務(wù)。例如只有1個(gè)車(chē)道時(shí),前面的車(chē)不動(dòng),后面的車(chē)就不能動(dòng)
–異步任務(wù):可以理解成并行,所以他是沒(méi)有順序的。例如有4個(gè)車(chē)道時(shí),4個(gè)車(chē)道可以一起通車(chē),有可能是第一個(gè)車(chē)道的車(chē)先出去,也有可能是第二個(gè)車(chē)道的車(chē)先出
eg:有時(shí)跟線(xiàn)程搭配使用,簡(jiǎn)單理解就是:線(xiàn)程是員工,任務(wù)是工作內(nèi)容,幾個(gè)人做決定了這個(gè)工作內(nèi)容的工作方式是同步還是異步
舉個(gè)例子,例如同步第三方數(shù)據(jù)的功能,需要調(diào)對(duì)方接口獲取最新數(shù)據(jù),第三方接口每次只能獲取指定周期內(nèi)的數(shù)據(jù)(例如每次最大獲取10天內(nèi)的數(shù)據(jù)),此時(shí)如果用戶(hù)同步8.1~8.30這個(gè)范圍的數(shù)據(jù),技術(shù)要做的就是:第一創(chuàng)建任務(wù)隊(duì)列,將8.1~8.30拆分成3條數(shù)據(jù)存儲(chǔ)(每個(gè)日期范圍=10);第二步就是創(chuàng)建異步任務(wù);第三步就是異步任務(wù)中啟動(dòng)線(xiàn)程,通過(guò)線(xiàn)程從隊(duì)列中獲取任務(wù)執(zhí)行;第四步就是根據(jù)獲取后的數(shù)據(jù)調(diào)第三方接口獲取數(shù)據(jù);第五步就是處理并存儲(chǔ)數(shù)據(jù)
3、數(shù)據(jù)通訊方式
–輪詢(xún):通訊方式的一種,一般結(jié)合定時(shí)任務(wù)使用,即客戶(hù)端一直向服務(wù)端詢(xún)問(wèn)有沒(méi)有結(jié)果,即沒(méi)有結(jié)果之前一直問(wèn)。例如某個(gè)需求你在處理,然后其他同事一直問(wèn)你有進(jìn)度了沒(méi),有進(jìn)度了沒(méi),有進(jìn)度了沒(méi)…
–websocket:也叫長(zhǎng)連接,客戶(hù)端與服務(wù)端建立一條通道做雙向通訊,即服務(wù)端也可以主動(dòng)向客戶(hù)端發(fā)消息。例如我們需求處理完成后,主動(dòng)告訴其他同事我們完成了,就不用他一直來(lái)問(wèn)了
4、遍歷
簡(jiǎn)單理解就是一個(gè)不落的把數(shù)據(jù)逐個(gè)訪(fǎng)問(wèn),確保所有數(shù)據(jù)都能被訪(fǎng)問(wèn)到。最典型的就是數(shù)據(jù)統(tǒng)計(jì),統(tǒng)計(jì)某一天的訂單總金額時(shí),就需要把這一天的訂單全部獲取,然后統(tǒng)計(jì)每個(gè)訂單的金額做匯總
5、事務(wù)
–簡(jiǎn)單理解就是保證數(shù)據(jù)整體成功或整體失敗的一種方法,比較適用于需要強(qiáng)制保證數(shù)據(jù)一致性的場(chǎng)景
–例如調(diào)整貨位功能,下架商品的貨架位需要庫(kù)存扣減,上架商品的貨架位庫(kù)存需要增加,這種就要加事務(wù),不能說(shuō)下架貨架位庫(kù)存減少了,但是上架貨架位庫(kù)存沒(méi)增加的場(chǎng)景,否則就會(huì)出現(xiàn)庫(kù)存差異
6、空指針
可以理解成一個(gè)字段值本來(lái)不會(huì)為空但是出現(xiàn)了空值,此時(shí)用這個(gè)空值調(diào)用后續(xù)方法處理邏輯時(shí)報(bào)錯(cuò)就是空指針異常。例如增加SKU庫(kù)存數(shù)量時(shí),根據(jù)SKU ID去查數(shù)據(jù),理論上肯定能查到,但是某種異常情況下SKU ID為空了,此時(shí)用空值調(diào)用后續(xù)增加庫(kù)存的方法就會(huì)報(bào)錯(cuò),這個(gè)報(bào)錯(cuò)就是空指針
7、kafka
本身是中間件的一種,主要應(yīng)用之一是消息隊(duì)列的處理,kafka中包含了3種角色:
- 生產(chǎn)者:可以理解成消息的創(chuàng)建者,將消息推送到消息中心
- 消息中心:可以理解成接收、存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)。在消費(fèi)中心可以細(xì)分topic(消息分類(lèi))和partition(分區(qū))
- 消費(fèi)者:可以理解成消息的處理者。kafka消費(fèi)者獲取數(shù)據(jù)的模式有兩種:輪詢(xún)、訂閱(可以理解成webhook,即消息中心產(chǎn)生數(shù)據(jù)后主動(dòng)推給消費(fèi)者處理)
本次內(nèi)容就到這里了,希望通過(guò)日常的分享能給大家一些幫助,其次就是大家想要了解什么內(nèi)容可以評(píng)論區(qū)留言哦,下次說(shuō)不定就是你想要了解的內(nèi)容了,surprise~
最后分享一句:世界是美好的,說(shuō)不定有一天會(huì)因?yàn)槟愕漠a(chǎn)品設(shè)計(jì)讓世界更美好,belive you.
本文由 @陳倉(cāng)了個(gè)暗渡 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自 Unsplash,基于 CC0 協(xié)議。
該文觀(guān)點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!