操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    1.資深Web架構(gòu)師

    這個(gè)方向,既兼顧了工作的單純性、又能夠減少實(shí)際Coding的工作量,能騰出更多時(shí)間。在國(guó)內(nèi),Web前端工程師遇到較多的情況是總是反復(fù)編寫(xiě)著同樣的代碼,總是面對(duì)著同樣的技術(shù)和產(chǎn)品,容易感覺(jué)枯燥。但正是由于這樣較為廣泛的Web相關(guān)知識(shí)的沉淀,使得我們更加容易成為一名架構(gòu)師。

    雖說(shuō)這種職業(yè)發(fā)展方向不如第一種來(lái)得平滑,但是作為一名架構(gòu)師在學(xué)習(xí)后端技術(shù)、DBA、等內(nèi)容,將其豐富的知識(shí)應(yīng)用到需要實(shí)際中的項(xiàng)目操作,不再局限自己在家里隨便寫(xiě)寫(xiě)兩個(gè)Demo。即便在學(xué)成這段時(shí)間,勢(shì)必會(huì)遭遇一段時(shí)間的陣痛期。但對(duì)于一個(gè)大局觀好、悟性好、知識(shí)面廣的前端工程師而言,這依舊是值得推薦的榮光之路。

    2.資深Web前端工程師

    這個(gè)方向算是一個(gè)Web前端最基本的選擇了,但能夠把自己的專業(yè)做到極致,能一輩子就在一個(gè)專業(yè)領(lǐng)域不斷學(xué)習(xí)和積累。對(duì)所有的Web前端工程師來(lái)說(shuō),朝著這個(gè)職業(yè)發(fā)展方向,只要足夠耐心、厚積薄發(fā),成功的概率是非常高的。

    3.網(wǎng)頁(yè)設(shè)計(jì)師

    網(wǎng)頁(yè)設(shè)計(jì)師可以將平面設(shè)計(jì)中的審美觀點(diǎn)套用到網(wǎng)站設(shè)計(jì)上面來(lái)(其區(qū)別是動(dòng)態(tài)網(wǎng)頁(yè)的制作是平面設(shè)計(jì)不能達(dá)到的,它是一種審美方式的延伸)。網(wǎng)頁(yè)如門(mén)面,小到個(gè)人主頁(yè),大到大公司、大的政府部門(mén)以及國(guó)際組織等在網(wǎng)絡(luò)上無(wú)不以網(wǎng)頁(yè)作為自己的門(mén)面。當(dāng)點(diǎn)擊到網(wǎng)站時(shí),首先映入眼簾的是該網(wǎng)頁(yè)的界面設(shè)計(jì),如內(nèi)容的介紹、按鈕的擺放、文字的組合、色彩的應(yīng)用、使用的引導(dǎo)等等。這一切都是網(wǎng)頁(yè)設(shè)計(jì)的范疇,都是網(wǎng)頁(yè)設(shè)計(jì)師的工作。而且具備精通,,,等多項(xiàng)網(wǎng)頁(yè)設(shè)計(jì)工具的能力。

    4.php程序員

    PHP技術(shù)人才,正迎合了目前的互聯(lián)網(wǎng)的發(fā)展趨勢(shì)。而且PHP作為非常優(yōu)秀的、簡(jiǎn)便的Web開(kāi)發(fā)語(yǔ)言,和Linux,Apache,MySQL緊密結(jié)合,形成LAMP的開(kāi)源黃金組合,不僅降低使用成本,還提升了開(kāi)發(fā)速度,滿足最新的互動(dòng)式網(wǎng)絡(luò)開(kāi)發(fā)的應(yīng)用,這使得php軟件工程師成為一個(gè)發(fā)展迅速的職業(yè)。

    5.自己創(chuàng)業(yè)

    其實(shí),自己創(chuàng)業(yè)是最好的道路,但也是成功率最低的道路,挑戰(zhàn)和機(jī)遇并存。作為一個(gè)前端技術(shù)人員,需要將自己的視野更多放在行業(yè)的動(dòng)態(tài)、產(chǎn)業(yè)鏈的動(dòng)態(tài)、相關(guān)產(chǎn)品領(lǐng)域的動(dòng)態(tài),把關(guān)注細(xì)節(jié)的優(yōu)勢(shì)繼續(xù)保持,同時(shí),增強(qiáng)自己把控一個(gè)產(chǎn)品乃至一個(gè)公司命運(yùn)的能力。

    6.轉(zhuǎn)崗管理或其他

    這條職業(yè)道路和Web前端技術(shù)之路關(guān)系不大。

    最后,無(wú)論是否走上Web前端開(kāi)發(fā)這條道路,其實(shí)對(duì)于任何技術(shù)之路,更好的大局觀、更廣泛的視野是良好發(fā)展的必備條件。擁有良好的大局觀和更廣泛的視野別無(wú)他法,只能不斷的進(jìn)行知識(shí)的橫向拓展和積累,同時(shí),多在橫向拓展知識(shí)的時(shí)候進(jìn)行實(shí)踐,把知識(shí)變成技能,對(duì)于初學(xué)者來(lái)說(shuō),更應(yīng)如此。

    小而美,小而精的項(xiàng)目完結(jié) + 面試題!沖春招嘎嘎有效!

    博客:

    ?

    沉淀、分享、成長(zhǎng),讓自己和他人都能有所收獲!

    ?

    哈嘍,大家好我是技術(shù)UP主小傅哥。

    作為校招面試的過(guò)來(lái)人都知道,小而美,小而精的項(xiàng)目沖校招嘎嘎有用,而往往攤大餅的項(xiàng)目,經(jīng)常被面試官評(píng)價(jià)貪多嚼不爛。因?yàn)榘岩粋€(gè)細(xì)分流程內(nèi)容講解透徹,要比寫(xiě)一堆xxx管理模塊更有的聊。這也是面試的核心技巧。你不需要硬撐著把10個(gè)問(wèn)題都回答的稀爛,而是可以有不會(huì)的,但會(huì)的就要回答的正確。

    驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪些_驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪幾種_連接數(shù)據(jù)庫(kù)的驗(yàn)證方式不包括( ).

    星球「碼農(nóng)會(huì)鎖」中,這樣小而美,小而精的 OpenAI 項(xiàng)目已完結(jié);它有新穎的架構(gòu)設(shè)計(jì)、有場(chǎng)景的設(shè)計(jì)模式運(yùn)用、有鑒權(quán)、支付、下單、OpenAI對(duì)接、敏感詞審核的業(yè)務(wù)流程、有各類技術(shù)棧和優(yōu)秀框架的使用,也有獨(dú)立SDK的設(shè)計(jì),可以說(shuō)是項(xiàng)目不大,但流程細(xì)膩又全面。做完后又可以完整部署上線 + 系統(tǒng)監(jiān)控 + 前端埋點(diǎn)。【項(xiàng)目上線很重要,很多攤大餅的項(xiàng)目,都沒(méi)法上線。】

    驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪幾種_連接數(shù)據(jù)庫(kù)的驗(yàn)證方式不包括( )._驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪些

    那么為了讓兄弟們?cè)诖赫兄校瑧?zhàn)必勝、攻必取,小傅哥對(duì) OpenAI 項(xiàng)目做了,技術(shù)歸檔、簡(jiǎn)歷模板和面試題整理。有了這些東西的加持,你的面試效果一定會(huì)更加給力!

    本次項(xiàng)目摘選小傅哥星球「碼農(nóng)會(huì)鎖」第7個(gè)實(shí)戰(zhàn)項(xiàng)目《OpenAI大模型應(yīng)用》,簡(jiǎn)歷編寫(xiě)和面試提問(wèn)。項(xiàng)目地址: - 含有課程目錄 + 視頻 + 源碼。

    一、專業(yè)技能 - 項(xiàng)目涉及的技術(shù)二、簡(jiǎn)歷模板三、面試問(wèn)題

    謝二機(jī)同學(xué)你好,你做的這個(gè)項(xiàng)目我非常感興趣,我們公司也有這樣的OpenAI 業(yè)務(wù)對(duì)接,正好可以結(jié)合你做的這個(gè)聊一下。

    1. 你的這個(gè)項(xiàng)目的背景和需求來(lái)自哪里?

    校招身份舉例

    面試官您好,此項(xiàng)目的最核心背景和訴求,是我希望找到一個(gè)可以真實(shí)鍛煉技術(shù)應(yīng)用的場(chǎng)景。并且可以基于此項(xiàng)目的設(shè)計(jì)、開(kāi)發(fā)、上線、運(yùn)維等一系列動(dòng)作,提高編程思維和落地能力。而此項(xiàng)目的只是一個(gè)載體,在項(xiàng)目中我所運(yùn)用到的微信對(duì)接、登錄鑒權(quán)、異步接口、下單支付、異步發(fā)貨、賬戶管理等場(chǎng)景可以運(yùn)用到其他任何一個(gè)項(xiàng)目中使用。所以我選擇開(kāi)發(fā) 這樣一個(gè)項(xiàng)目。

    并且此項(xiàng)目運(yùn)用了DDD分層架構(gòu),領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)實(shí)現(xiàn),對(duì)于各個(gè)場(chǎng)景都遵守了設(shè)計(jì)原則和設(shè)計(jì)模式,解決各類復(fù)雜場(chǎng)景的實(shí)現(xiàn)。如;生成式服務(wù)流程中運(yùn)用模板模式、策略模式、工廠模式,解決對(duì)話過(guò)程中所需的規(guī)則過(guò)濾、模型校驗(yàn)、賬戶狀態(tài)、賬戶扣減等開(kāi)發(fā)流程。【項(xiàng)目提問(wèn)過(guò)程中,有時(shí)候會(huì)讓繪制下項(xiàng)目的分層結(jié)構(gòu)、核心流程,之后會(huì)基于你畫(huà)的這些進(jìn)行提問(wèn)】

    通過(guò)以上項(xiàng)目的學(xué)習(xí)我鍛煉到了相關(guān)項(xiàng)目所用到的核心技術(shù)使用,架構(gòu)設(shè)計(jì)和落地實(shí)現(xiàn)。而此項(xiàng)目的學(xué)習(xí),也為我以后在工作中解決實(shí)際場(chǎng)問(wèn)題,打下了牢固的基礎(chǔ)。

    2. 項(xiàng)目為什么使用DDD架構(gòu),有什么好處?

    首先是 DDD 的結(jié)構(gòu)分層更加清晰(DDD 是一種軟件設(shè)計(jì)方法,軟件設(shè)計(jì)方法涵蓋了范式、模型、框架、方法論),與 MVC 相比避免了 PO、VO 對(duì)象被亂用的可能。而這也是在 DDD 中將行為和邏輯封裝到一個(gè)領(lǐng)域內(nèi)進(jìn)行處理,也就是常說(shuō)的充血模型結(jié)構(gòu)。這樣的結(jié)構(gòu)方式,就可以更好的做到業(yè)務(wù)流程松耦合,功能實(shí)現(xiàn)高內(nèi)聚。

    連接數(shù)據(jù)庫(kù)的驗(yàn)證方式不包括( )._驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪些_驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪幾種

    那么在這個(gè) OpenAI 項(xiàng)目中,按照業(yè)務(wù)流程涵蓋了鑒權(quán)登錄、OpenAI、下單、微信,4個(gè)大的核心場(chǎng)景。這4個(gè)核心場(chǎng)景恰好是4個(gè)領(lǐng)域,每個(gè)領(lǐng)域可以獨(dú)立開(kāi)發(fā)設(shè)計(jì),再通過(guò)上層進(jìn)行編排使用。如果是小項(xiàng)目直接由 trigger 觸發(fā)器層的進(jìn)行編排,如果是較大型復(fù)雜項(xiàng)目可以增加 case 編排層,再由 trigger 層調(diào)用。【層之間是防腐,防腐避免了對(duì)象和服務(wù)被污染】

    相對(duì)比與MVC結(jié)構(gòu),這樣的架構(gòu)設(shè)計(jì),不會(huì)因?yàn)橐敫嗟墓δ埽到y(tǒng)的復(fù)雜度也隨之提高。因?yàn)樗械牧鞒潭急徊鸾饬耍總€(gè)功能都聚合到自己的領(lǐng)域內(nèi),這樣的復(fù)雜度不會(huì)增加,并且也更好維護(hù)。

    3. 充血模型和貧血模型分別合適什么場(chǎng)景?

    在 DDD 架構(gòu)中,充血模型,主要的價(jià)值在于解決具有生命周期的流程。如生成式對(duì)話、商品下單支付、用戶登錄授權(quán)等流程。因?yàn)檫@些流程中具有較復(fù)雜的場(chǎng)景模型和唯一ID,所以采用充血模型結(jié)構(gòu),會(huì)很適合的將狀態(tài)和行為封裝到同一的領(lǐng)域包中進(jìn)行聚合開(kāi)發(fā)實(shí)現(xiàn)。這樣的實(shí)現(xiàn)方式,也為以后擴(kuò)展、迭代、維護(hù)做了良好的基建,避免工程過(guò)于腐化。—— 注意關(guān)于DDD的知識(shí),可以把這里的5個(gè)視頻都刷下。 (opens new window)

    而貧血模型則比較適合 Querys 場(chǎng)景,因?yàn)檫@些場(chǎng)景只是數(shù)據(jù)的匯總查詢,沒(méi)有唯一ID和生命周期。所以比較適合在工程中提供 query 模塊,使用貧血模型開(kāi)發(fā)。

    4. 項(xiàng)目開(kāi)發(fā)中你是怎么提交代碼的?

    首先我是在自己的Gitcode倉(cāng)庫(kù)中創(chuàng)建了一個(gè)空的項(xiàng)目地址,之后復(fù)制項(xiàng)目地址 。在本地創(chuàng)建 OpenAI 工程,以及工程中 app、domain、、trigger、types 5個(gè) modules 模塊。在之后在 idea 點(diǎn)開(kāi) Git 菜單創(chuàng)建本地倉(cāng)庫(kù),再把倉(cāng)庫(kù)中需要提交的內(nèi)容右鍵 Add 添加。最后 Ctrl + Shift + K 推送代碼,推送時(shí)配置復(fù)制的 git 地址。

    這個(gè)過(guò)程中我會(huì)注意不要把一些本地文件如 .idea、編譯文件 等提交上去,這些文件可以添加到 . 文件中忽略提交。后續(xù)的開(kāi)發(fā)中,會(huì)按照時(shí)間-姓名-功能的規(guī)范拉取開(kāi)發(fā)分支,編寫(xiě)代碼和提交。開(kāi)發(fā)驗(yàn)證完畢后合并 master 分支進(jìn)行部署。【如果多人開(kāi)發(fā),可以把開(kāi)發(fā)分支合并到 test 分支進(jìn)行部署測(cè)試】

    5. 這個(gè)項(xiàng)目有部署上線嗎?怎么部署的,部署后內(nèi)存占用如何,請(qǐng)描述下。

    項(xiàng)目上線了,并且對(duì)項(xiàng)目部署了 + Grafana 監(jiān)控組件,以及配置了前端百度統(tǒng)計(jì) PV、UV。部署的方式是先購(gòu)買(mǎi)了一臺(tái)2c4g 5M帶寬的云服務(wù)器以及申請(qǐng)備案了域名,之后在前后端應(yīng)用配置 打包鏡像推送到 ,之后編寫(xiě) docker compose 含環(huán)境(MySQL、Redis等)腳本,在云服務(wù)器執(zhí)行部署的。因?yàn)楸卷?xiàng)目的登錄采用了公眾號(hào)登錄,所以在部署后把服務(wù)端接口地址,配置到公眾號(hào)控制臺(tái)進(jìn)行驗(yàn)簽和接收驗(yàn)證碼登錄。

    整個(gè)項(xiàng)目部署完成后,占用了53%~61%的服務(wù)器內(nèi)存,Tomcat 配置了最大連接數(shù)是250,OpenAI 調(diào)用接口熔斷為6秒【OpenAi有時(shí)候會(huì)有超時(shí)】,同時(shí)在前端也配置了50秒主動(dòng)斷開(kāi)。壓測(cè)過(guò)接口的響應(yīng),按照目前的服務(wù)器可以壓測(cè)到 50 ~ 80 TPS【隨著不同的文本量提問(wèn),會(huì)有波動(dòng)。OpenAI 響應(yīng)有時(shí)候會(huì)需要7-10秒完成】,日常測(cè)試接口響應(yīng)平均值在3~10秒。—— 這些數(shù)據(jù)來(lái)自于壓測(cè)后 Grafana 監(jiān)控的展示【星球內(nèi)提供了 Grafana 監(jiān)控配置面板】。

    這里為什么后端有超時(shí)熔斷,前端也加了50秒超時(shí)主動(dòng)斷開(kāi)。因?yàn)?OpenAI 接口的響應(yīng)是 異步應(yīng)答,當(dāng)返回一個(gè)數(shù)據(jù)塊以后,代表已經(jīng)有響應(yīng),則不會(huì)計(jì)算服務(wù)端的超時(shí)。但第一次應(yīng)答后,后面的數(shù)據(jù)如果卡主了,仍可能一直無(wú)應(yīng)答。所以前端加上主動(dòng)超時(shí)斷開(kāi)會(huì)更穩(wěn)妥。【一般情況下,1~5秒,服務(wù)端開(kāi)始應(yīng)答】

    6. 你的項(xiàng)目對(duì)接了哪些 OpenAI?怎么對(duì)接的?

    在項(xiàng)目的開(kāi)發(fā)階段對(duì)接了 ChatGPT 和國(guó)內(nèi)智譜AI ChatGLM,兩款A(yù)I產(chǎn)品,都有文生文、文生圖、多模態(tài)的圖文理解等功能。對(duì)接的方式是采用會(huì)話模型(MyBatis Session)流程,使用 + OkHttp3 框架,封裝 OpenAI HTTP 接口。提供統(tǒng)一的出入?yún)ⅲ⑹褂霉S模式,構(gòu)建 OpenAI 啟動(dòng)階段所需的驗(yàn)證、日志、執(zhí)行流程。并最終對(duì)外提供 OpenAI 會(huì)話服務(wù)。

    星球大模型項(xiàng)目的 OpenAI SDK 提供了兩種,一種是獨(dú)立的 ChatGPT-SDK-Java、ChatGLM-SDK-Java,以及一個(gè)綜合的 OpenAI-SDK-Java 對(duì)接了國(guó)內(nèi)外90%的大模型。這里你可以按照自己的學(xué)習(xí)積累程度來(lái)描述。此外這些 SDK 也已經(jīng)發(fā)布到了 Maven 中央倉(cāng)庫(kù),外部人員也可以使用【有不少伙伴參與了 SDK 開(kāi)發(fā),你也可以講自己參與了一起開(kāi)發(fā)或者是你獨(dú)立內(nèi)部開(kāi)發(fā)的】。

    7. 因?yàn)槟愕捻?xiàng)目是前后端分離的,接口跨域怎么做的?

    首先我們知道,Web跨域(Cross-Origin Sharing,CORS)是一種安全機(jī)制,用于限制一個(gè)域下的文檔或腳本如何與另一個(gè)源的資源進(jìn)行交互。這是一個(gè)由瀏覽器強(qiáng)制執(zhí)行的安全特性,旨在防止惡意網(wǎng)站讀取或修改另一個(gè)網(wǎng)站的數(shù)據(jù),這種攻擊通常被稱為“跨站點(diǎn)腳本”(Cross-Site ,XSS)。

    所以在我的前后端分離項(xiàng)目中,通過(guò)配置 @ 注解來(lái)解決跨越問(wèn)題。開(kāi)發(fā)階段 Access-Control-Allow-Origin: *、上線階段 Access-Control-Allow-Origin:

    8. 請(qǐng)描述下商品下單支付場(chǎng)景。以及怎么保證的補(bǔ)償。

    連接數(shù)據(jù)庫(kù)的驗(yàn)證方式不包括( )._驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪些_驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪幾種

    下單支付場(chǎng)景在整個(gè)項(xiàng)目中是一塊非常核心的流程,首先是系統(tǒng)設(shè)計(jì)采用了 DDD 架構(gòu),對(duì)商品下單按照業(yè)務(wù)流程拆解出來(lái)了單獨(dú)的領(lǐng)域模塊。在設(shè)計(jì)實(shí)現(xiàn)上,以購(gòu)物車為下單入?yún)⒌膶?shí)體對(duì)象,出參為支付單實(shí)體。保存的是訂單的聚合信息。

    因?yàn)楸旧硐聠问且粋€(gè)較為復(fù)雜的流程,所以在編碼實(shí)現(xiàn)上采用了模板模式,定義出下單的標(biāo)準(zhǔn)過(guò)程。商品下單的流程需要先查詢是否存在已下單未支付和已下單但無(wú)支付單的訂單,對(duì)這樣兩種訂單分別進(jìn)行處理。已下單未支付,在有效期內(nèi)未關(guān)單的直接返回給用戶直接支付。已下單但無(wú)支付單則調(diào)用(微信/支付寶沙箱/藍(lán)兔)創(chuàng)建支付訂單,保存庫(kù)表記錄后返回給前端用戶進(jìn)行支付。此外的流程則直接執(zhí)行購(gòu)物車商品ID查詢,組裝聚合訂單數(shù)據(jù),創(chuàng)建支付單,保存庫(kù)表記錄和返回給用戶。在用戶支付完成后,接收支付回調(diào)消息,推送(MQ/Redis發(fā)布訂閱/Guava事件)信息,由系統(tǒng)中 trigger 模塊下的監(jiān)聽(tīng)處理接收支付成功消息,完成商品的發(fā)貨處理。

    那么這里可能發(fā)生的調(diào)單情況,接收回調(diào)消息處理失敗。則由定時(shí)任務(wù)掃描庫(kù)表訂單超過(guò)15分鐘未支付的訂單,查詢支付平臺(tái)(微信/支付寶沙箱/藍(lán)兔)是否已支付,如果支付則發(fā)送事件消息走后續(xù)的補(bǔ)貨流程。另外如果超過(guò)15分鐘以上未支付則進(jìn)行本地關(guān)單,不對(duì)支付平臺(tái)關(guān)單(支付平臺(tái)有自己的時(shí)間),這樣可以讓用戶的體驗(yàn)更加舒服。用戶超時(shí)后支付,仍可以走后續(xù)的發(fā)貨流程。但如果用戶刷新界面,則獲取創(chuàng)建新的支付單。

    9. 你的訂單表也是一個(gè)頻繁使用的表,那么庫(kù)表有哪些核心字段,索引有哪些?

    有用戶ID(用的公眾號(hào)創(chuàng)建的 openid)、商品ID、商品名稱、商品金額、訂單ID、下單時(shí)間、訂單狀態(tài)、支付單類型(微信、支付寶)、支付單號(hào)、支付時(shí)間、交易單號(hào)、交易狀態(tài)等。表中對(duì)訂單ID、用戶唯一創(chuàng)建了唯一索引,對(duì)訂單狀態(tài)和訂單時(shí)間創(chuàng)建組合索引(提高掃描效率)。

    10. 我看到OpenAI的體驗(yàn),都是漸進(jìn)式展示的,這塊后端使用了什么接口形式?

    這部分是使用 應(yīng)用提供的 HTTP 接口,返回的是 異步請(qǐng)求處理協(xié)議。它是 所提供的一個(gè)異步響應(yīng)提,當(dāng)你控制器中返回一個(gè) 實(shí)例時(shí),Spring MVC 會(huì)開(kāi)啟一個(gè)異步請(qǐng)求處理,這樣就可以在單個(gè)請(qǐng)求中發(fā)送多個(gè) OpenAI 應(yīng)答數(shù)據(jù)塊。這樣的應(yīng)答方式是非常適合 OpenAI 這樣需要大批量應(yīng)答數(shù)據(jù)的場(chǎng)景。此外因?yàn)榉?wù)端的接口需要 Nginx 轉(zhuǎn)發(fā),所以在 Nginx 端還需要關(guān)閉分塊解碼(oding)、關(guān)閉轉(zhuǎn)發(fā)緩沖()、關(guān)閉應(yīng)答緩存(),這樣最終才能是一個(gè)漸進(jìn)式的展示效果。

    11. 你的項(xiàng)目中對(duì)接了 ChatGPT 和 ChatGLM 兩個(gè)模型,那么使用了什么設(shè)計(jì)模式?

    關(guān)于 ChatGPT、ChatGLM 兩個(gè) OpenAI 服務(wù),在項(xiàng)目中定義了一個(gè)通信渠道策略接口,接口方法返回統(tǒng)一的格式數(shù)據(jù)。兩款 OpenAI 服務(wù)分別實(shí)現(xiàn)自己接口處理。之后兩個(gè)實(shí)現(xiàn)的策略模式注入到 Map 中,Key 是一個(gè)枚舉值。當(dāng)前端選擇不同的模型進(jìn)行問(wèn)答時(shí),則根據(jù)模型的枚舉值從 Map 中選擇出對(duì)應(yīng)的策略處理類。這樣即使后續(xù)拓展其他的 OpenAI 服務(wù)也非常容易擴(kuò)展。

    12. 你在項(xiàng)目中有支付購(gòu)買(mǎi)的次數(shù),那么對(duì)應(yīng)就會(huì)有額度扣減、賬戶的校驗(yàn)、還有模型的使用類型,這些是怎么實(shí)現(xiàn)的?

    其實(shí)除了賬戶、額度、模型,還有敏感詞過(guò)濾,在這部分實(shí)現(xiàn)中我定義了統(tǒng)一的 過(guò)濾接口,分別實(shí)現(xiàn)不同的過(guò)濾訴求。在通過(guò)工廠的封裝,裝配上不同的過(guò)濾規(guī)則類。用戶進(jìn)行問(wèn)答后,會(huì)對(duì)用戶的信息分別進(jìn)行校驗(yàn)。這部分也就是整體 OpenAI 應(yīng)答中使用的模板、工廠、策略三個(gè)設(shè)計(jì)模式。另外像是這樣的調(diào)用驗(yàn)證方式,也可以使用責(zé)任鏈的方式處理。

    之后這里在說(shuō)下敏感詞,敏感詞對(duì)接了通用的敏感詞庫(kù),但校驗(yàn)的過(guò)于嚴(yán)格同時(shí)不是動(dòng)態(tài)的,所以可能不準(zhǔn)。后來(lái)又對(duì)接了云服務(wù)廠商的敏感詞過(guò)濾服務(wù)+圖片審核服務(wù)。可以配置廣告、輿情、敏感類等都可以配置過(guò)濾。

    13. 你是怎么處理異常的?

    項(xiàng)目中在對(duì)接 OpenAI 接口、數(shù)據(jù)庫(kù)、緩存、下單調(diào)用等,是有可能出現(xiàn)超時(shí)、數(shù)據(jù)接口更新、數(shù)據(jù)庫(kù)連接、緩存數(shù)據(jù)問(wèn)題等異常,這些異常屬于功能異常。是在每個(gè)領(lǐng)域模型內(nèi)可能發(fā)生的問(wèn)題情況。為了讓異常保持統(tǒng)一,具備業(yè)務(wù)語(yǔ)意,所以在 types 層了定義業(yè)務(wù)異常類 和對(duì)應(yīng)的異常碼枚舉【0000 成功、0001 失敗、0002 非法參數(shù)、0003 未登錄、OE001 商品以下架等異常碼】這樣就可以標(biāo)準(zhǔn)化返回給前端,針對(duì)不同的異常進(jìn)行信息展示。

    14. 對(duì)于返回給前端的接口,返回從出參結(jié)果怎么定義的?

    定義一個(gè) 添加 code、info、data(枚舉類型)參數(shù),統(tǒng)一封裝返回結(jié)果。這是一個(gè)通用設(shè)計(jì),應(yīng)該不止我開(kāi)發(fā)的系統(tǒng),在我去F12看各個(gè)網(wǎng)站的時(shí)候,也都是這樣統(tǒng)一標(biāo)準(zhǔn)的接口出參。

    15. 公眾號(hào)里可以對(duì)接 OpenAI 自動(dòng)回復(fù)嗎?

    技術(shù)上可以對(duì)接的,在公眾號(hào)配置完接口地址驗(yàn)簽成功后,就可以接收用戶在公眾號(hào)發(fā)送的消息了,之后根據(jù)消息內(nèi)容請(qǐng)求 OpenAI 同步響應(yīng)接口(也可以是異步接口用 Future 封裝)。但這里要注意一點(diǎn),我是個(gè)人公眾號(hào)開(kāi)發(fā),不能直接根據(jù)用戶ID給用戶返回信息,只能隨著請(qǐng)求一次返回。

    那么就有可能用戶提問(wèn)后,我調(diào)用 OpenAI 接口,因?yàn)闀?huì)需要較長(zhǎng)時(shí)間返回?cái)?shù)據(jù),超過(guò)公眾號(hào)5秒限制,就會(huì)得不到數(shù)據(jù)。所以這塊利用公眾號(hào)的回調(diào)機(jī)制,5秒+3次,我再后端使用了 進(jìn)行等待,每次都耗時(shí)5秒,讓公眾號(hào)第3次在從我的后端獲取數(shù)據(jù)返回。這樣可以最大限度保證,一次提問(wèn)就能獲得數(shù)據(jù)。如果仍然沒(méi)有獲得數(shù)據(jù),則提示給用戶需要再次提問(wèn)同樣的問(wèn)題。這個(gè)時(shí)候我會(huì)以問(wèn)題作為key,獲取OpenAI的結(jié)果緩存回答給用戶。

    驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪幾種_連接數(shù)據(jù)庫(kù)的驗(yàn)證方式不包括( )._驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪些

    16. 應(yīng)用程序使用了什么數(shù)據(jù)庫(kù)連接池,連接數(shù)配置如何?

    配置了 默認(rèn)提供的 hikari 連接池。在這之前我也有壓測(cè)過(guò) c3p0、dbcp、druid、hikari 這四款連接池,其中 hikari 是效率最高也是最穩(wěn)定的,dbcp 相對(duì)較差,但如果不使用連接池那么會(huì)更差。

    在我的應(yīng)用中,配置最小空閑連接數(shù)(minimum-idle)是15個(gè),最大連接數(shù)(maximum-pool-size)是25個(gè)。本身下單接口的平均響應(yīng)時(shí)間是48毫秒,那么 1秒 / 0.048秒/事務(wù) = 約20.83事務(wù)/秒/連接 也就是 20.83事務(wù)/秒/連接 * 25連接 = 約520.75事務(wù)/秒 這個(gè)量級(jí)是非常夠用的。如果不夠可以適當(dāng)調(diào)整連接數(shù)大小。

    17. 是否支持分布式部署?

    是的,一個(gè)項(xiàng)目是否支持分布式部署的標(biāo)識(shí)在于它的數(shù)據(jù)處理是基于單體的還是基于分布式架構(gòu)的,當(dāng)一臺(tái)機(jī)器宕機(jī)用戶在訪問(wèn)時(shí)候輪訓(xùn)到下一臺(tái)機(jī)器是否還可以保證業(yè)務(wù)進(jìn)行。像是這套項(xiàng)目使用數(shù)據(jù)庫(kù)存儲(chǔ)用戶、賬戶、商品、下單,在 Redis 存放用戶的登錄鑒權(quán),那么就可以基于 Nginx 輪訓(xùn)的方式配置多態(tài)應(yīng)用的負(fù)載,以此支持分布式架構(gòu)。

    18. 登錄這個(gè)業(yè)務(wù)過(guò)程是什么樣?

    企業(yè)公眾號(hào)登錄的模型是通過(guò) 創(chuàng)建二維碼憑證 ticket,并讓前端根據(jù)憑證創(chuàng)建帶參登錄二維碼。當(dāng)用戶掃碼后,對(duì)接公眾號(hào)的服務(wù)端會(huì)收到回調(diào)信息,里面含帶了 ticket、openid,那么這個(gè)時(shí)候就可以創(chuàng)建出 jwt token,前端頁(yè)面不斷通過(guò) ticket 輪訓(xùn)接口獲取綁定登錄信息即可。

    另外是個(gè)人公眾號(hào),它是沒(méi)有這個(gè)權(quán)限的。所以只能是讓用戶在公眾號(hào)中回復(fù)一個(gè)固定編號(hào)(405),之后服務(wù)端接受到固定編號(hào)后創(chuàng)建一個(gè)唯一登錄驗(yàn)證碼分配給 openid,用戶在通過(guò)在頁(yè)面填寫(xiě)驗(yàn)證碼的方式進(jìn)行登錄。填寫(xiě)驗(yàn)證碼后,調(diào)用服務(wù)端接口進(jìn)行鑒權(quán)下發(fā) jwt token 即可。

    19. 如果現(xiàn)在需要讓你擴(kuò)展一個(gè)功能,比如接入圖片轉(zhuǎn)代碼/根據(jù)流程圖生成代碼你會(huì)怎么做?

    這種問(wèn)題是比較偏開(kāi)放性的,如果做完項(xiàng)目又結(jié)合項(xiàng)目擴(kuò)展了新的功能,那么回答這類問(wèn)題會(huì)更加得心應(yīng)手。因?yàn)槿绻銛U(kuò)展了新的功能,那么你就會(huì)知道怎么先去了解需要對(duì)接功能的文檔【技術(shù)調(diào)研】,之后結(jié)合文檔來(lái)做對(duì)應(yīng)的案例,讓案例覆蓋80%你要實(shí)現(xiàn)的功能。這樣你大概知道了這樣?xùn)|西是可以使用的。

    接下來(lái)梳理代碼,設(shè)計(jì)接入方式和流程,并設(shè)計(jì)這部分的領(lǐng)域功能,開(kāi)發(fā)完成功能以后開(kāi)始進(jìn)行測(cè)試驗(yàn)證。這部分是單元測(cè)試。測(cè)試通過(guò)后,開(kāi)始提供對(duì)應(yīng)的服務(wù)的接口,如果是舊的功能擴(kuò)展,則要考慮兼容性,比如增加了新的模型枚舉。可參考案例:OpenAI + TLDraw 設(shè)計(jì)圖轉(zhuǎn)前端代碼

    20.(開(kāi)放問(wèn)題)你在做項(xiàng)目中,什么問(wèn)題難住你的時(shí)間最長(zhǎng),為什么?

    這是一個(gè)開(kāi)放問(wèn)題,重點(diǎn)考察你對(duì)項(xiàng)目的開(kāi)發(fā)中個(gè)人的積累。你可以針對(duì)自己的學(xué)習(xí)過(guò)程中,有哪個(gè)流程的實(shí)現(xiàn),讓你最為有感觸,即可回答。

    這還是比較多的,這個(gè)項(xiàng)目有很多的創(chuàng)新設(shè)計(jì)讓代碼更好的維護(hù),也有一些取巧的架構(gòu)方案。比如提到的個(gè)人公眾號(hào),沒(méi)有帶參二維碼就只能通過(guò)讓用戶主動(dòng)回復(fù)生產(chǎn)驗(yàn)證碼綁定openid解決,用戶在輸入驗(yàn)證碼進(jìn)行登錄。

    另外是一個(gè)下單的場(chǎng)景,這塊的DDD領(lǐng)域設(shè)計(jì),到底要用什么作為入?yún)ⅲ裁醋鰹槌鰠ⅲM(jìn)行下單。經(jīng)過(guò)了大量的思考,應(yīng)該模擬生活中的超時(shí),推著購(gòu)物車到收銀臺(tái),創(chuàng)建支付單,掃碼登錄。所以在系統(tǒng)設(shè)計(jì)上,以購(gòu)物車為入?yún)⒌膶?shí)體對(duì)象,出參為支付單信息【可以掃碼支付】,中間的流程用聚合對(duì)象保存訂單信息。這塊的設(shè)計(jì),非常清晰和好維護(hù)。所以也是一個(gè)記憶非常深刻的點(diǎn)。

    四、干項(xiàng)目

    這就是跟著小傅哥學(xué)習(xí)項(xiàng)目可以獲得的收獲;我可以按照所在互聯(lián)網(wǎng)大廠的標(biāo)準(zhǔn),從需求設(shè)定、框架搭建、領(lǐng)域設(shè)計(jì)、庫(kù)表設(shè)計(jì)、功能開(kāi)發(fā)、項(xiàng)目打包、發(fā)布部署、運(yùn)維監(jiān)控、簡(jiǎn)歷編寫(xiě)、面試解析,這樣一整條線的內(nèi)容,全部交給你!有了這樣一套的組合,那你學(xué)習(xí)完找份工作還不是嘎嘎滴容易!

    這樣的項(xiàng)目學(xué)習(xí)在小傅哥星球「碼農(nóng)會(huì)鎖」有8個(gè),每個(gè)都是從0到1開(kāi)發(fā)并提供簡(jiǎn)歷模板和面試題,并且還在繼續(xù)開(kāi)發(fā),后續(xù)還將有更多!價(jià)格嘎嘎實(shí)惠,早點(diǎn)加入,早點(diǎn)提升自己。項(xiàng)目地址:

    驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪幾種_驗(yàn)證庫(kù)連接方式數(shù)據(jù)包括哪些_連接數(shù)據(jù)庫(kù)的驗(yàn)證方式不包括( ).

    加入星球后從課程入口進(jìn)入,即可看到全部?jī)?nèi)容。

網(wǎng)站首頁(yè)   |    關(guān)于我們   |    公司新聞   |    產(chǎn)品方案   |    用戶案例   |    售后服務(wù)   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區(qū)    電話:010-     郵箱:@126.com

備案號(hào):冀ICP備2024067069號(hào)-3 北京科技有限公司版權(quán)所有