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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

第二期周总结

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第二期周总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第二期的周總結,這次學習的內容可能沒有上次那么廣泛,主要是因為這周我負責的模塊需要測試并進行上線,所以主要學習了解的就是工程開發方面的內容,準確說是部署上線的內容,所以本周主要簡單總結這次上線過程的一些內容,包括如何精確評估開發時間、一般項目部署上線的過程等;

本文目錄:

  • 如何精確評估開發時間

  • 項目的部署上線

  • 機器學習

  • 閱讀

  • 效率方法


如何精確評估開發時間

最近一個月其實都在忙著自己負責的推薦方面的項目上線的事情,但是從一開始說出可以交付接口給后端開發同事測試的時候,我就犯下了一個大錯誤--高估自己開發效率,低估自己寫bug的能力了。。。這直接導致那一周不得不周末都加班來彌補我的錯誤。

另外,這算是自己獨立上線自己的模塊,所以其實對于上線的經驗還是非常缺乏,所以其實也導致需要付出更多時間來進行工程上的優化,以滿足線上的性能要求。

然后這周一剛好看到一篇如何精確評估開發時間的文章,我覺得寫得也是非常好,也受益匪淺,這里就結合文章以及自己這次上線的經歷來簡單說說如何精確評估開發時間。

1. 明確任務目標

首先應該是好好熟讀產品經理寫的產品需求評審,要知道自己需要負責完成的工作任務有哪些,然后判斷功能能否實現,有哪些存在的問題,這都需要和產品經理好好溝通,必須非常明確需求,否則開發到一半才發現理解錯誤,那就非常糟糕了;

除了和產品經理好好溝通,還需要好好溝通的當然就是同個項目的開發同事,特別是相互之間的工作有依賴關系的,比如你需要調用另一個同事的接口,獲取數據,那么就需要了解下這個接口的請求和返回結果,接口的性能,也就是調用一次所需要的時間等,并且要確認同事不會隨便修改這個接口,因為可能同事只是修改返回結果的一個數據名稱,你的代碼就有很多地方需要進行修改了。

2. 更精細的任務排期

我們每次經過產品需求評審后,確認本次迭代需要完成的工作后,都需要各自給出自己的任務排期,之前我們都是按照天為單位將工作任務進行拆分,不過按照天來劃分可能還是不夠精細,對于工作任務的拆分還不夠細,

文章作者給出是應該按照小時來拆分任務,目標當然就是讓拆分后的工作任務更加的具體,而且這種拆分方法,我認為也是有助于自己對任務的更加全面的認識和了解,更容易去發現自己可能會疏忽的地方,比如某個功能的實現,需要得到同事的幫助,那么就要提前和同事進行溝通;或者某個功能的實現可能會高于自己的預估時間等等。

另外,按照小時為單位安排工作,也需要你知道自己每天實際開發的時間有多少,畢竟很難做到可以長時間專注的寫代碼,會有很多其他因素影響自己的工作效率,自己的專注力、同事的咨詢、固定的周會等等。

因此,需要給自己預留一定的緩沖時間,可能自己覺得需要1天就可以完成的功能,但可以再多留1天左右來防止可能的意外狀況,畢竟 bug 總是很難避免的,這還需要你有快速解決 bug 的能力,否則可能調試一個 bug 就會花費你半天甚至一天的時間。

3. 記錄和復盤

第一次項目上線,可能多少都會出現不少問題,因此這個過程出現了問題,最好就是可以及時記錄問題,然后項目順利上線后,自然需要復盤,復盤的問題,可以是:

  • 任務排期預估的開發時間和實際所用時間是否一致?相差較多的有哪些任務,原因是什么。

  • 開發過程中出現的未預料到的事情有哪些

  • 開發過程中出現的bug,怎么解決等

  • 新學習到的知識點,需要加強鞏固的知識點等


項目的部署上線

這部分只是根據我這次的經歷所總結的,可能有些地方不太準確或者有些遺漏,僅供參考。

關于一個項目的部署上線,也可以說是如何開發一個項目,特別是機器學習項目,很久之前其實我也寫過這樣一個系列,所以非常相似,那個系列的文章:

如何構建一個完整的機器學習項目

這篇文章也介紹了構建一個完整的機器學習項目包括好幾方面的內容,結合我這次的項目上線過程,那就是這樣的:

1. 明確項目的目標

這次的項目,準確來說只是項目中的一個模塊,是推薦方面的內容,目標就是提升收藏率了。

2. 獲取數據

數據的獲取其實就很簡單,來自同事的提供,無論是線上的用戶數據、用戶行為數據,還是需要推薦的內容,不過因為做推薦這個模塊并不是項目創立之時就有計劃做這個模塊的,所以這個過程中其實有不少數據,特別是用戶行為的數據是缺少了很多,也算是我的困難之一了。

3. 特征工程

這部分應該是包括分析數據和預處理數據了,之前做圖像的時候,其實更多的是對數據的處理,比如篩選過濾不合格的圖片,給圖片打標簽(劃分到對應類別)等,特征工程就真的是基本很少使用。

而推薦系統對特征工程的要求還是很高的,特別是我一開始選擇的是傳統的機器學習算法,就更加需要好好做特征工程,當然這部分就需要有一些業務知識,知道哪些特征有助于完成任務目標。

4. 模型訓練和驗證

在吳恩達老師的機器學習課程中,對于模型訓練,給出的建議是先建立一個 baseline,也就是可以完成所需功能,但是性能方面并不一定很好,這也是為了快速迭代。

因此,在這方面,我選擇的自然是 lr 和 gbdt 算法,并且最終選擇速度更快的 lr 算法,可以先完成推薦的功能即可,后續再逐漸優化算法

5. 部署上線

當確認模型的性能可以基本滿足目標需求,那么就需要開始部署上線了,簡單說就是需要編寫一個服務接口。這里,我主要是用 python 的 tornado 框架,簡單介紹下tornadao 框架,來自中文官方文檔的介紹:https://tornado-zh.readthedocs.io/zh/latest/

Tornado 是一個Python web框架和異步網絡庫,起初由 FriendFeed 開發. 通過使用非阻塞網絡I/O, Tornado可以支撐上萬級的連接,處理 長連接, WebSockets ,和其他需要與每個用戶保持長久連接的應用.

安裝方法很簡單:

pip install tornado

簡單的使用例子如下所示:

import tornado.ioloop import tornado.webclass MainHandler(tornado.web.RequestHandler):def get(self):self.write("Hello, world")def make_app():return tornado.web.Application([(r"/", MainHandler),])if __name__ == "__main__":app = make_app()app.listen(8888)tornado.ioloop.IOLoop.current().start()

這應該是我唯一用過的 python 的 web 框架,然后應該還可以使用如 flask 來實現同樣的功能。

在需要上線的這個環節,除了模型的性能,還需要考慮服務接口的耗時、內存使用等問題。

接口耗時

主要看的指標應該是兩個,單次請求的平均耗時以及 RPS。

  • 前者自然就是整個接口的調用速度,越快自然是越好的;

  • RPS 也就是 Request per second,也就是吞吐率,服務接口每秒可以處理的請求,主要是衡量接口處理并發請求的能力

第一個指標的優化可能就需要查看代碼中哪塊耗時嚴重,然后去優化,比如模型是否耗時太久,或者是否可以通過緩存來縮減時間等;

第二個指標就是并發處理能力,比較簡單的就是多開進程,多部署幾臺服務器,另外就是嘗試實現異步處理消息,避免消息阻塞。

測試接口的吞吐率可以采用 apache 的測試工具,官網下載地址:http://httpd.apache.org/download.cgi

使用例子如下:

ab -c 10 -n 100 -p req.txt http://posturl

這里 -c 表示并發的數量,即同時請求的數量,-n 是總的請求數量,-p 是請求參數文件路徑,最后就是接口路徑了。

具體使用例子可以查看 https://www.cnblogs.com/taiyonghai/p/5810150.html

內存使用

內存的使用也很關鍵,這主要是看服務器的內存多大,然后會決定可以加載到內存的數據量。

負載均衡

當配置了多臺服務器后,就需要考慮負載均衡問題,更好發揮多臺服務器的性能,避免大部分請求都分發到某臺服務器上了,對于實現負載均衡的可以考慮采用 Nginx 這個框架,剛好昨天發表了一篇對這個框架的安裝配置和基本使用的總結文章,感興趣的可以看看。

Nginx快速搭建和基本使用

監控&維護服務

服務上線后,并不是結束,還需要維護服務,對服務進行監控,防止服務因為流量過大掛掉或者其他原因掛掉,另外監控也是可以了解服務的調用量,運行是否正常,通常主要監控的三個指標:

  • 性能:主要是平均耗時,TP50、TP90等,也就是50%的請求耗時、90%的請求耗時等

  • 調用次數

  • 可用率

  • 所以也是需要在服務代碼中添加日志,隨時查看,一個不錯的日志第三方庫--loguru,github 地址:

    https://github.com/Delgan/loguru

    而怎么保證你的服務可以在掛掉后自動重啟呢,可以考慮采用 supervisor ,它是 Linux/Unix 下的一個進程管理工具,可以監聽、啟動、停止或者重啟一個或者多個進程。使用它來管理服務,可以在服務進程意外被殺死后,自動重新拉起服務進程。

    具體安裝配置和使用介紹可以查看文章--https://blog.csdn.net/xyang81/article/details/51555473


    機器學習

    這周是完成了對激活函數的筆記總結,在下周會更新對激活函數部分的總結,這也是打算開啟的一個新系列文章--AIK,AI Knowledge,AI 知識點,目前計劃是先對深度學習基礎的知識點,比如剛完成的激活函數,接著應該會是梯度下降、優化方法、正則化、卷積層等不同網絡層的介紹,不同的網絡模型的論文閱讀和介紹等等,希望借這系列文章可以好好系統的學習和復習鞏固機器學習和深度學習的知識點。


    閱讀

    這周的閱讀應該說是做筆記,上周說的《軟技能》的閱讀筆記,重新對職業這部分的內容進行閱讀和總結筆記,雖然還沒總結完這部分內容,不過可以先給出自己對這部分的閱讀筆記。

    • 第一篇是職業,從第一章開始就是告訴你,需要轉變自己的心態,要做自己職業生涯的主人翁,工作可以是公司的,但職業生涯是你自己的;

    • 我們需要像企業一樣思考自己,想想自己可以有什么產品或者提供的服務,然后需要不斷去改進和完善,并且學會營銷你的產品或者提供的服務;

    • 需要制訂一個清晰的可以指明方向的目標,可以不需要很具體,但需要好好想想未來你希望過上什么樣的生活,從這出發來制訂你的終極大目標,接著就是根據大目標制定小目標,并且定期追蹤和更新自己的目標,定期可以是每周、每月、每季度以及每年;

    • 人際交往能力也是非常重要的,對于程序員來說也是很重要,因為不是單打獨斗,都是一個團隊進行合作完成一個項目。在和別人溝通的時候,都需要記住一點,每個人都希望自己很重要;所以不要輕易否定他人的想法,學會換位思考,以及避免爭吵,而是要解決問題。

    • 最好的通過面試的方法是讓面試官對你懷有好感,大部分實現的方法都是在面試之前完成,比如提高自己的影響力,這可以是寫博客,做開源項目,有star數量很高的github項目;作者提供了他曾經用過的方法,那就是調研想去的公司,去公司的開發人員的博客下方進行評論留言,引起他們的關注,從而讓他們來查看你的博客,當然這需要你寫的博客文章質量很好。


    效率方法

    這一周嘗試將每天做三件事也用到工作上,每周一根據上周的進度和問題,計劃這一周需要完成的工作內容,然后每天先計劃當天要完成的 3 件事情,實踐的結果可能還是比較一般,主要是開完周會后,可能會增加新的緊急又重要的工作任務,還是會打亂計劃的,但可以隨時更新這三件事情,對工作的效率提升感覺還可以,更加專注,以及不會突然不知道需要做什么。


    歡迎關注我的微信公眾號--算法猿的成長,或者掃描下方的二維碼,大家一起交流,學習和進步!

    如果覺得不錯,在看、轉發就是對小編的一個支持!

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的第二期周总结的全部內容,希望文章能夠幫你解決所遇到的問題。

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