博客 / 列表

程序員小2 - 幾種AI Agent開發框架對比:相比手寫代碼是否更便捷?

業務邏輯編排對比 首先回顧一下我們的業務流程: 接下來分別使用手寫代碼和幾種框架來實現這個業務流程邏輯,看看差異所在。 1、手寫代碼 純編碼時,我們直接根據業務邏輯來串聯工作流: # sql agent def sql_agent(user_query): #

數據 , 代碼人生 , SQL

程序員小2 - 高併發下如何防止重複下單?

前言 當你的用户瘋狂點擊提交按鈕時,你的系統準備好迎接這場“連擊風暴”了嗎? 在電商系統的實戰中,我見過太多因重複提交導致的資損事故——用户一次點擊,系統卻創建了多個訂單,導致庫存錯亂、用户重複支付、客服投訴爆棚。 有些小夥伴在工作中可能遇到過這樣的場景:大促期間,用户反饋“明明只點了一次,為什麼扣了兩次款?” 開發同學查了半天日誌,發現同一個用户請求在毫

redis , 冪等 , 重複提交 , 代碼人生

程序員小2 - 8種專坑同事的SQL寫法,性能降低100倍,不來看看?

01 LIMIT 語句 分頁查詢是最常用的場景之一,但也通常也是最容易出問題的地方。比如對於下面簡單的語句,一般 DBA 想到的辦法是在 type, name, create_time 字段上加組合索引。這樣條件排序都能有效的利用到索引,性能迅速提升。 SELECT * FROM operation WHERE type = 'S

子查詢 , 執行計劃 , 代碼人生 , SQL

程序員小2 - 掌握Jenkins自動化部署:從代碼提交到自動上線的全流程揭秘

Jenkins自動化部署是現代軟件開發中不可或缺的一部分,它不僅簡化了代碼的發佈過程,還為整個團隊帶來了無與倫比的效率和協作力。想象一下,開發者們可以專注於編寫高質量的代碼,而不是為繁瑣的手動部署所煩惱;測試人員能在每次提交代碼後立即看到測試結果,確保軟件質量;運營團隊不再需要熬夜加班來手動發佈新版本,而是可以安心地看到系統自動完成一切。 Jenkins自動化部署的意義在於

服務器 , gradle , 代碼人生 , jenkins

程序員小2 - Java日期最常見的8個坑!

前言 今天我想和大家聊聊日期處理這個話題。 日期處理看似簡單,實則是開發中最容易出錯的領域之一。 有些小夥伴在工作中可能遇到過這樣的場景:測試環境好好的,一上線就出現日期計算錯誤;或者用户反饋説跨時區的時間顯示不對。 這些問題往往都是因為日期處理中的一些"坑"導致的。 今天就跟大家一起聊聊日期處理最常見的8個坑,希望對你會有所幫助。 1. 時區

System , JAVA , 代碼人生 , 解決方案

程序員小2 - try...catch真的影響性能嗎?

前言 今天我們來聊聊一個經典話題:try...catch真的會影響性能嗎? 有些小夥伴在工作中可能聽過這樣的説法:"儘量不要用try...catch,會影響性能",或者是"異常處理要放在最外層,避免在循環內使用"。 這些説法到底有沒有道理? 今天我就從底層原理到實際測試,給大家徹底講清楚這個問題。 1. 問題的起源:為什麼會有性能擔憂? 有些小

System , i++ , 代碼人生 , 異常處理

程序員小2 - 終於把機器學習中的特徵選擇搞懂了!

特徵選擇的目的 提高模型準確率:移除冗餘、不相關或噪聲特徵,使模型更專注於有效信息,減少過擬合的風險。 降低計算成本:減少特徵數量可以加快模型的訓練和預測速度。 增強模型可解釋性:使用更少的特徵可以更容易地理解特徵與目標變量之間的關係。 緩解維度災難:當特徵數量遠大於樣本數量時,模型容易陷入局部最優,特徵選擇可以有效緩解這一問題。

Lasso , 特徵選擇 , 代碼人生 , ci

程序員小2 - 終於把卷積神經網絡算法搞懂了!

今天給大家介紹一個強大的算法模型,CNN 卷積神經網絡(CNN)是一類專門用於處理具有網格結構數據(如圖像、語音、視頻等) 的深度學習模型。 CNN 的設計靈感來自於生物學中的視覺皮層結構,能夠自動、有效地從原始數據中學習空間層次特徵,這極大地減少了人工特徵工程的需要。 CNN 已成為計算機視覺、語音識別、自然語言等領域的基礎模型。 核心原理

卷積 , 卷積核 , 池化 , 代碼人生

程序員小2 - 索引10連問,你能抗住第幾問?

前言 今天我們來聊聊讓無數開發者又愛又恨的——數據庫索引。 相信不少小夥伴在工作中都遇到過這樣的場景: 明明已經加了索引,為什麼查詢還是慢? 為什麼有時候索引反而導致性能下降? 聯合索引到底該怎麼設計才合理? 別急,今天我就通過10個問題,帶你徹底搞懂索引的奧秘! 希望對你會有所幫助。 一、什麼是索引?為什麼需

字段 , 索引優化 , 聯合索引 , 代碼人生

程序員小2 - 終於把 LSTM 算法搞懂了!

傳統 RNN 結構簡單,但當序列較長時,誤差反向傳播會使梯度逐漸變得極小(梯度消失),導致模型無法學習長期依賴。 LSTM 通過引入精心設計的門控機制來有效地學習、記憶和遺忘信息,從而更好地捕捉序列中的長期依賴關係。 LSTM 核心原理 LSTM 的核心是細胞狀態,它就像一條傳送帶,信息在上面直接傳遞,只通過少量的線性操作,這有助於保持信息的完整性,從而

數據 , 數學公式 , 權重 , 代碼人生

程序員小2 - 工作中最常用的6種API網關

前言 API網關在項目中非常重要。 今天這篇文章跟大家一起聊聊工作最常用的6種網關,希望對你會有所幫助。 一、為什麼需要API網關? 有些小夥伴在工作中可能會問:我們的系統直接調用微服務不是更簡單嗎? 為什麼非要引入API網關這個"中間商"呢? 讓我們先來看一個實際的例子。 沒有網關的微服務困境 // 前端直接調用多個微服

微服務 , API , cloud , 代碼人生

程序員小2 - 終於把機器學習中的特徵選擇搞懂了!!

主要目的 提高模型性能:移除不相關或冗餘的特徵可以減少“維度災難”效應,避免模型過度擬合訓練數據,從而在測試集上獲得更好的泛化能力。 降低模型複雜度:特徵越少,模型結構越簡單,訓練和預測速度越快。 增強模型可解釋性:使用更少、更核心的特徵,使得模型的決策過程更容易被理解和解釋。 常用的特徵選擇方法 常用的特徵選擇方法包括過濾法、

互信息 , Lasso , 特徵選擇 , 代碼人生

程序員小2 - 只改了五行代碼將接口吞吐量提升了10多倍

背景 公司的一個ToB系統,因為客户使用的也不多,沒啥併發要求,就一直沒有經過壓測。這兩天來了一個“大客户”,對併發量提出了要求:核心接口與幾個重點使用場景單節點吞吐量要滿足最低500/s的要求。 當時一想,500/s吞吐量還不簡單。Tomcat按照100個線程,那就是單線程1S內處理5個請求,200ms處理一個請求即可。這個沒有問題,平時接口響應時

spring , JAVA , 代碼人生 , SQL

程序員小2 - 如何設計一個億級熱門視頻排行榜?

今天我們又來拆解一個系統設計面試裏經常出現的高頻題:如果要實現一個類似抖音這樣的熱門視頻榜單,該怎麼設計? 乍一看,這似乎沒什麼難度,直覺上就是按照播放量排個序而已。但一旦把場景放大到抖音這種量級,再加上實時更新、多時間窗口統計等限制,問題就會變得極具挑戰。不僅要求我們理解基礎的數據結構(比如堆、排序),還會牽涉到海量數據流處理、系統水平擴展、故障恢復以及成本權衡等方方面面

數據 , 數據庫 , 代碼人生 , ide

程序員小2 - 使機器學習模型變的可解釋!!

核心原理 SHAP 的理論基礎來源於合作博弈論中的Shapley 值。 在一個合作博弈中,有若干個參與者(玩家),他們通過合作獲得一個整體收益。Shapley 值用於衡量每個玩家對整體收益的平均邊際貢獻。 在機器學習中: 玩家對應於特徵; 整體收益對應於模型預測結果; 因此,Shapley 值可以度量每個特徵在所有可能的特徵

機器學習 , 基線 , 示例代碼 , 代碼人生

程序員小2 - Java 8 ~ 24 新特性

⭐️ Java 8 Java 8 絕對是 Java 歷史上最重要的穩定版本,也是這麼多年來最受歡迎的 Java 版本,甚至有專門的書籍來講解 Java 8。 這個版本最大的變化就是引入了函數式編程的概念,給 Java 這門傳統的面嚮對象語言增加了新的玩法。 【必備】Lambda 表達式 什麼是 Lambda 表達式? Lambda 表達式可以

List , System , 函數式接口 , 代碼人生

程序員小2 - 終於把機器學習中的交叉驗證搞懂了!!

核心思想 在標準的模型訓練中,我們通常會將數據集劃分為訓練集和測試集。訓練集用於模型學習參數,測試集用於評估模型的最終性能。 然而,如果測試集本身具有偏差,或者我們想更精細地調整模型(例如超參數調優),僅僅使用一次劃分可能會導致評估結果不夠穩定或具有過高的方差。 交叉驗證的核心目標是:獲得一個更穩定、更可靠的模型性能估計,減少對特定數據劃分的依賴。 交叉驗

數據集 , 數據 , 交叉驗證 , 代碼人生