@源碼分析

動態 列表
@crow_5c1708a9c847d

一個關於React數據不可變的無聊問題

對於一個React的開發者來説不知道你有沒有想過為什麼React追求數據不可變這個範式; 一個月前我想過一個問題如果我在使用useState這個hooks的時候傳入的是一個改變後的引用類型對象會發生什麼? 例如: import {useState} from "react" function App() { const [list,setList] = useState([0,1,2])

crow_5c1708a9c847d 頭像

@crow_5c1708a9c847d

昵稱 龍騎士尹道長

@lazytimes

【RocketMq】RocketMq-NameServ 源碼分析(Ver4.9.4)

引言 RocketMq3.X的版本和Kafka一樣是基於Zookeeper進行路由管理的,但是這意味着運維需要多部署一套Zookeeper集羣,後來RocketMq選擇去ZK最終出現了NameServ。NameServ作為RocketMq源碼閲讀的切入點非常不錯,本文將會介紹Ver 4.9.4 版本的NameServ源碼分析。 NameServer主要有兩個功能,Broker管理和路由信息管理。

lazytimes 頭像

@lazytimes

昵稱 阿東

@zengh

【源碼&庫】在調用 createApp 時,Vue 為我們做了那些工作?

在使用Vue3時,我們需要使用createApp來創建一個應用實例,然後使用mount方法將應用掛載到某個DOM節點上。 那麼在調用createApp時,Vue再背後做了些什麼事情呢?今天就來扒一扒Vue3的源碼,看看調用createApp發生了些什麼。 大家好,這裏是田八的【源碼庫】系列,Vue3的源碼閲讀計劃,Vue3的源碼閲讀計劃不出意外每週一更,歡迎大家關注。 首發在掘金,如果想一起

zengh 頭像

@zengh

昵稱 田八

@zengh

【源碼&庫】Vue3 中的 nextTick 魔法背後的原理

在使用Vue的時候,最讓人着迷的莫過於nextTick了,它可以讓我們在下一次DOM更新循環結束之後執行延遲迴調。 所以我們想要拿到更新的後的DOM就上nextTick,想要在DOM更新之後再執行某些操作還上nextTick,不知道頁面什麼時候掛載完成依然上nextTick。 雖然我不懂Vue的內部實現,但是我知道有問題上nextTick就對了,你天天上nextTick,那麼nextTick為什麼

zengh 頭像

@zengh

昵稱 田八

@wric

源碼閲讀:go-zero的core/conf包

這個代碼庫主要用於加載和解析配置文件,支持 JSON、TOML 和 YAML 格式。主要功能包括從文件或字節數據中加載配置、填充默認值以及處理配置數據的鍵大小寫。代碼的主要結構和函數如下: fieldInfo 結構體:用於表示字段信息,包括子字段和映射字段。 從文件或字節數據加載配置的函數:Load, LoadConfig, LoadFromJsonBytes, LoadConfigFrom

wric 頭像

@wric

昵稱 wric

@yongxinz

微服務架構|go-zero 的自適應熔斷器

原文鏈接: go-zero 的自適應熔斷器 上篇文章我們介紹了微服務的限流,詳細分析了計數器限流和令牌桶限流算法,這篇文章來説説熔斷。 熔斷和限流還不太一樣,限流是控制請求速率,只要還能承受,那麼都會處理,但熔斷不是。 在一條調用鏈上,如果發現某個服務異常,比如響應超時。那麼調用者為了避免過多請求導致資源消耗過大,最終引發系統雪崩,會直接返回錯誤,而不是瘋狂調用這個服務。 本篇文章會介紹主流熔斷器

yongxinz 頭像

@yongxinz

昵稱 alwaysbeta

@da_miao_zi

redigo連接池的源碼分析

redigo連接池的源碼分析 今天我們來看一看redigo(https://github.com/gomodule/redigo)是如何實現連接池的。 概述 連接池部分的代碼在redis/pool.go中,相關結構體和接口的UML圖如下圖所示 Pool結構體定義了連接池的屬性和行為,包括以下主要參數: Dial func() (Conn, error):指向用於新建連接的函數,由redigo

da_miao_zi 頭像

@da_miao_zi

昵稱 da_miao_zi

@enjolras1205

erlang node_name phash 衝突坑

概述 在線上遇到了因節點名哈希值衝突導致的部分機器無負載問題。10台機器中,衝突的機器達到了4台之多。假設哈希的概率是平均的。10台機器中,不存在衝突的概率接近 1 - (1.0 / (2 ** 32)) * 10 0.9999999976716936 實際上,10台中哈希值衝突了6台。於是看源碼找答案。 過程 先從phash2 api入手 erlang 的 api調用方式和 linux有相似之

enjolras1205 頭像

@enjolras1205

昵稱 enjolras1205

@johanazhu

從淺入深瞭解Koa2源碼

在前文我們介紹過什麼是 Koa2 的基礎 簡單回顧下 什麼是 koa2 NodeJS 的 web 開發框架 Koa 可被視為 nodejs 的 HTTP 模塊的抽象 源碼重點 中間件機制 洋葱模型 compose 源碼結構 Koa2 的源碼地址:https://github.com/koajs/koa 其中 lib 為其源碼 可以看出,只有四個文件:application.js、cont

johanazhu 頭像

@johanazhu

昵稱 山頭人漢波

@jiangpengfei_5ecce944a3d8a

手寫Koa.js源碼

用Node.js寫一個web服務器,我前面已經寫過兩篇文章了: 第一篇是不使用任何框架也能搭建一個web服務器,主要是熟悉Node.js原生API的使用:使用Node.js原生API寫一個web服務器 第二篇文章是看了Express的基本用法,更主要的是看了下他的源碼:手寫Express.js源碼 Express的源碼還是比較複雜的,自帶了路由處理和靜態資源支持等等功能,功能比較全面。與之

@emanjusaka

淺析 ArrayList

byemanjusaka fromhttps://www.emanjusaka.com/2023/12/java-arrayList彼岸花開可奈何 本文歡迎分享與聚合,全文轉載請留下原文地址。 ArrayList是一個使用List接口實現的Java類。顧名思義,Java ArrayList提供了動態數組的功能,其中數組的大小不是固定的。它實現了所有可選的列表操作,並允許所有元素,包括n

emanjusaka 頭像

@emanjusaka

昵稱 emanjusaka

@zhangsikai

彩虹易支付源碼最新完整版usdt支付插件下載/即時到賬/通道輪詢附搭建部署教程

  隨着移動支付的興起,人們越來越習慣於使用手機進行支付。彩虹易支付源碼開發應運而生,它是一款方便快捷的移動支付應用程序。本文將介紹彩虹易支付源碼開發的相關內容,包括開發背景、需求分析、技術架構、功能模塊和開發流程等。   源碼:fakaysw.top      一、開發背景      隨着移動互聯網的發展,人們對支付方式的便捷性和安全性要求越來越高。傳統的支付方式如現金支

zhangsikai 頭像

@zhangsikai

昵稱 張思凱

@wuliaodeliema

《進大廠前先學會閲讀源碼》之shenyu網關-替換ZooKeeper客户端

相信大家碰到源碼一開始都是比較無從下手的🙃,不知道從哪開始閲讀,面對大量代碼暈頭轉向,索性就讀不下去了,又浪費了一次提升自己的機會😭。 我認為有一種方法,可以解決大家的困擾!那就是通過閲讀某一次開源【commit】、某一次社區【ISSUE】,從這個入口出發去閲讀源碼!! 至此,我們發現自己開始從大量堆砌的源碼中脱離開來😀。豁然開朗,柳暗花明又一村🍀。 一、前瞻 今天我們攻克的一次

wuliaodeliema 頭像

@wuliaodeliema

昵稱 愛思考的小陳

@vivo_tech

Sharding-JDBC源碼解析與vivo的定製開發

作者:vivo IT 平台團隊 - Xiong Huanxin Sharding-JDBC是在JDBC層提供服務的數據庫中間件,在分庫分表場景具有廣泛應用。本文對Sharding-JDBC的解析、路由、改寫、執行、歸併五大核心引擎進行了源碼解析,並結合業務實踐經驗,總結了使用Sharding-JDBC的一些痛點問題並分享了對應的定製開發與改造方案。 本文源碼基於Sharding-JDBC 4.1.

vivo_tech 頭像

@vivo_tech

昵稱 vivo互聯網技術

@dewujishu

Bookie存儲架構源碼剖析|得物技術

一、Pulsar存儲架構簡析 Pulsar作為新一代MQ中間件,在底層架構設計上充分貫徹了存算分離的思想,broker與Bookeeper兩個組件獨立部署,前者負責流量的調度、聚合、計算,後者負責數據的存儲,這也契合了雲原生下k8s大行其道的時代背景。Bookeeper又名Bookie ,是一個單獨的存儲引擎。在組件關係上,broker深度依賴Bookie,內部集成了 Bookie的client端

dewujishu 頭像

@dewujishu

昵稱 得物技術

@dewujishu

深入剖析時序Prophet模型:工作原理與源碼解析|得物技術

隨着得物業務的快速發展,積累了大量的時序數據,這些數據對精細化運營,提升效率、降低成本有着重要作用。在得物的時序數據挖掘場景中,時序預測Prophet模型使用頻繁,本文對Prophet的原理和源碼進行深入分析,歡迎閲讀和交流。 一、引入 時間序列是指按照時間先後順序收集或觀測的一系列數據點,這類數據通常都具有一定時間相關性,基於這種順序性,我們可以對時間序列進行多種數據挖掘任務,包括分類、聚類、異

dewujishu 頭像

@dewujishu

昵稱 得物技術

@finally_m

深度長文解析SpringWebFlux響應式框架15個核心組件源碼

Spring WebFlux 介紹 Spring WebFlux 是 Spring Framework 5.0 版本引入的一個響應式 Web 框架,它與 Spring MVC 並存,提供了一種全新的編程範式,支持異步非阻塞的 Web 應用開發。WebFlux 完全基於響應式編程模型,支持 Reactive Streams 規範,可以在諸如 Netty、Undertow 以及 Servlet 3.1

finally_m 頭像

@finally_m

昵稱 威哥愛編程

@zhujiqian

Mybatis Plus 3.X版本的insert填充自增id的IdType.ID_WORKER策略源碼分析

總結/朱季謙 某天同事突然問我,你知道Mybatis Plus的insert方法,插入數據後自增id是如何自增的嗎? 我愣了一下,腦海裏只想到,當在POJO類的id設置一個自增策略後,例如@TableId(value = "id",type = IdType.ID_WORKER)的註解策略時,就能實現在每次數據插入數據庫時,實現id的自增,例如以下形式—— @Data @AllArgsConstr

zhujiqian 頭像

@zhujiqian

昵稱 朱季謙

@finally_m

通過JUnit源碼分析學習編程的奇技淫巧

打開 Maven倉庫,左邊選項欄排在第一的就是測試框架與工具,今天的文章,V 哥要來聊一聊程序員必備的測試框架JUnit 的源碼實現,整理的學習筆記,分享給大家。 有人説,不就一個測試框架嘛,有必要去了解它的源碼嗎?確實,在平時的工作中,我們只要掌握如何使用 JUnit 框架來幫我們測試代碼即可,搞什麼源碼,相信我,只有看了 JUnit 框架的源碼,你才會讚歎,真是不愧是一款優秀的框架,它的源碼

finally_m 頭像

@finally_m

昵稱 威哥愛編程

@mulavar

【Flink】TaskManager 內存模型及計算邏輯詳解

本文旨在詳解 Flink TaskManager 的內存模型以及其各部分內存佔比的計算邏輯。首先,結合官網展示了當前 Flink 的內存模型,並在之後結合 JVM 自身內存模型和管理機制結合講解 Flink 內存模型的各個部分,最後結合源碼解釋了各部分內存佔比的計算邏輯。 1 內存模型組成部分 本節摘自官網:https://nightlies.apache.org/flink/flink-docs

mulavar 頭像

@mulavar

昵稱 Mulavar

@andy_shawshank

ThreadLocal源碼分析圖文版

引言 正如文章標題,本文重點在於剖析ThreadLocal的源碼,先對ThreadLocal下定義 ThreadLocal是線程級別的私有變量 即使你沒有使用過ThreadLocal也可以閲讀,本文會從ThreadLocal最基本的使用入手,結合源碼及圖片由淺入深地分享我在學習ThreadLocal源碼中的收穫和理解,希望對你有幫助. 一、初識ThreadLocalMap 1.1 ThreadLo

andy_shawshank 頭像

@andy_shawshank

昵稱 Andy_Shawshank