精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

阿里面試:看過框架源碼嗎?舉例說明一下

開發 前端
開源框架的源碼在面試中經常會被問到,但只因如此,就去完整的看某個框架的源碼,其實還是挺難的。第一,框架中的源碼很多,很難一次性看懂。第二,即使能看懂,看完之后也會很快忘記(因為內容太多了)。此時,不如挑一些框架中的經典實現源碼來看,其性價比更高,既能學到框架中的精髓,又能搞定面試,是一個不錯的選擇。

前兩天有朋友面試“淘汰集團”,也就是“淘寶”+“天貓”的組合,最后被面試官問到了這道題:“你看過哪些開源框架的源碼?舉例說明一下”。

誠然,這是一道比較考驗應聘者基本功的問題,也是很好區分“好學生”和“普通學生”的一道經典的開放性問題。

那這個問題應該怎么回答呢?

解答思路

我這給大家提供兩個思路吧:

  1. 可以回答比較常見的,你比較熟悉的源碼,例如 Spring Boot 收到請求之后,執行流程的源碼。
  2. 還可以回答 Spring Cloud 微服務中,某個組件執行的流程源碼,這樣能很好的體現你對微服務比較熟悉,因為微服務在公司中應用比較廣泛,所以回答的好,是一個極大的加分項。

1.Spring Boot 源碼分析

Spring Boot 在收到請求之后,會先執行前端控制器 DispatcherServlet,并調用其父類 FrameworkServlet 中的 service 方法,其核心源碼如下:

/**
 * Override the parent class implementation in order to intercept PATCH requests.
 */
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    HttpMethod httpMethod = HttpMethod.resolve(request.getMethod());
    if (httpMethod == HttpMethod.PATCH || httpMethod == null) {
        processRequest(request, response);
    } else {
        super.service(request, response);
    }
}

繼續往下看,processRequest 實現源碼如下:

protected final void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 // 省略一堆初始化配置
   
   try {
       // 真正執行邏輯的方法
       doService(request, response);
   }
   catch (ServletException | IOException ex) {
       ...
   }
}

doService 實現源碼如下:

protected abstract void doService(HttpServletRequest request, HttpServletResponse response) throws Exception;

doService 是抽象方法,由其之類 DispatcherServlet 來重寫實現,其核心源碼如下:

@Override
protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 省略初始化過程...
    try {
        doDispatch(request, response);
    }
    finally {
  // 省略其他...
    }
}

此時就進入到了 DispatcherServlet 中的 doDispatch 方法了:

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // 獲取原生請求
    HttpServletRequest processedRequest = request;
    // 獲取Handler執行鏈
    HandlerExecutionChain mappedHandler = null;
    // 是否為文件上傳請求, 默認為false
    boolean multipartRequestParsed = false;
    WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
    try {
        ModelAndView mv = null;
        Exception dispatchException = null;
        try {
            // 檢查是否為文件上傳請求
            processedRequest = checkMultipart(request);
            multipartRequestParsed = (processedRequest != request);
            // Determine handler for the current request.
            // 獲取能處理此請求的Handler
            mappedHandler = getHandler(processedRequest);
            if (mappedHandler == null) {
                noHandlerFound(processedRequest, response);
                return;
            }
            // Determine handler adapter for the current request.
            // 獲取適配器
            HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
            // Process last-modified header, if supported by the handler.
            String method = request.getMethod();
            boolean isGet = "GET".equals(method);
            if (isGet || "HEAD".equals(method)) {
                long lastModified = ha.getLastModified(request, mappedHandler.getHandler());
                if (new ServletWebRequest(request, response).checkNotModified(lastModified) && isGet) {
                    return;
                }
            }
            // 執行攔截器(鏈)的前置處理
            if (!mappedHandler.applyPreHandle(processedRequest, response)) {
                return;
            }
            // 真正的執行對應方法
            mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
            if (asyncManager.isConcurrentHandlingStarted()) {
                return;
            }
            applyDefaultViewName(processedRequest, mv);
            mappedHandler.applyPostHandle(processedRequest, response, mv);
        }
        // 忽略其他...
}

通過上述的源碼我們可以看到,請求的核心代碼都在 doDispatch 中,他里面包含的主要執行流程有以下這些:

  1. 調用 HandlerExecutionChain 獲取處理器:DispatcherServlet 首先調用 getHandler 方法,通過 HandlerMapping 獲取請求對應的 HandlerExecutionChain 對象,包含了處理器方法和攔截器列表。
  2. 調用 HandlerAdapter 執行處理器方法:DispatcherServlet 使用 HandlerAdapter 來執行處理器方法。根據 HandlerExecutionChain 中的處理器方法類型不同,選擇對應的 HandlerAdapter 進行處理。常用的適配器有 RequestMappingHandlerAdapter 和 HttpRequestHandlerAdapter。
  3. 解析請求參數:DispatcherServlet 調用 HandlerAdapter 的 handle 方法,解析請求參數,并將解析后的參數傳遞給處理器方法執行。
  4. 調用處理器方法:DispatcherServlet 通過反射機制調用處理器方法,執行業務邏輯。
  5. 處理攔截器:在調用處理器方法前后,DispatcherServlet 會調用攔截器的 preHandle 和 postHandle方法進行相應的處理。
  6. 渲染視圖:處理器方法執行完成后,DispatcherServlet 會通過 ViewResolver 解析視圖名稱,找到對應的 View 對象,并將模型數據傳遞給 View 進行渲染。
  7. 生成響應:View 會將渲染后的視圖內容生成響應數據。

2.Spring Cloud 源碼

Spring Cloud 組件有很多,你可以挑一個源碼實現比較簡單的組件來講,這里推薦 Spring Cloud LoadBalancer,因為其核心源碼的實現比較簡單。

Spring Cloud LoadBalancer 中內置了兩種負載均衡策略:

  1. 輪詢負載均衡策略
  2. 隨機負載均衡策略

輪詢負載均衡策略的核心實現源碼如下:

// ++i 去負數,得到一個正數值
int pos = this.position.incrementAndGet() & Integer.MAX_VALUE;
// 正數值和服務實例個數取余 -> 實現輪詢
ServiceInstance instance = (ServiceInstance)instances.get(pos % instances.size());
// 將實例返回給調用者
return new DefaultResponse(instance);

隨機負載均衡策略的核心實現源碼如下:

// 通過 ThreadLocalRandom 獲取一個隨機數,最大值為服務實例的個數
int index = ThreadLocalRandom.current().nextInt(instances.size());
// 得到實例
ServiceInstance instance = (ServiceInstance)instances.get(index);
// 返回
return new DefaultResponse(instance);

小結

開源框架的源碼在面試中經常會被問到,但只因如此,就去完整的看某個框架的源碼,其實還是挺難的。第一,框架中的源碼很多,很難一次性看懂。第二,即使能看懂,看完之后也會很快忘記(因為內容太多了)。此時,不如挑一些框架中的經典實現源碼來看,其性價比更高,既能學到框架中的精髓,又能搞定面試,是一個不錯的選擇。

責任編輯:武曉燕 來源: Java中文社群
相關推薦

2010-03-04 13:21:32

linux壓縮命令

2013-11-26 11:08:23

Linux命令diff

2018-11-28 08:20:15

Linuxalias命令

2010-06-22 13:08:42

Linux At命令

2009-09-25 09:30:33

Hibernate持久

2010-06-18 10:24:51

Linux acces

2010-01-12 15:56:25

C++軟件

2010-01-18 17:31:54

C++編寫程序

2010-01-21 09:53:23

C++操作符

2010-03-03 10:55:39

2010-01-06 16:54:07

.Net Framew

2009-12-07 17:28:55

WCF數據

2010-01-08 17:06:52

C++代碼

2010-03-04 13:45:37

Linux壓縮命令

2021-01-28 10:23:26

Seata模式分布式

2023-11-29 08:00:53

JavaTreeMap底層

2010-04-09 16:52:36

Unix操作系統

2010-01-20 10:19:16

VB.NET動態接口

2010-09-24 17:39:28

SQL中EXISTS

2010-01-06 10:35:02

Json_Decode
點贊
收藏

51CTO技術棧公眾號

国产精品亚洲成在人线| 亚洲精品一区二区三区不卡| 自拍偷拍一区| 欧美亚洲国产怡红院影院| 视频一区在线免费观看| 国产一区二区在线视频聊天| 欧美午夜国产| 国产一区二区黑人欧美xxxx| 黄色片免费网址| 成人在线黄色电影| 国产精品无人区| 91精品入口蜜桃| 欧美一区二区三区网站| 91精品国产成人观看| 日韩精品中文字幕在线| 日韩在线不卡一区| 九色porny自拍视频在线观看 | av电影中文字幕| 成人短视频app| 亚洲品质自拍视频网站| 欧美精品二区三区四区免费看视频 | 国产成+人+综合+亚洲欧洲| 亚洲欧美卡通动漫| 日韩中出av| 日韩欧美一级片| 午夜免费高清视频| 成年男女免费视频网站不卡| 亚洲欧洲综合另类在线| 日韩av在线一区二区三区| 精品人妻无码一区二区三区蜜桃一| 老**午夜毛片一区二区三区| 欧美激情一级二级| 成人无码精品1区2区3区免费看 | 美国三级日本三级久久99| 久久久亚洲成人| 中文字幕观看av| 国产欧美一区| 日韩精品欧美国产精品忘忧草| 操人视频免费看| 欧美高清影院| 在线观看日韩毛片| 六月丁香婷婷激情| 丁香花在线电影小说观看| 亚洲欧美在线观看| 欧美中日韩一区二区三区| 亚洲欧美日韩动漫| 风流少妇一区二区| 亚洲综合最新在线| 国产精品久久久久久免费免熟| 日韩高清在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 欧美久久久久久久久久久久| 欧美成人自拍| 久久精品国产2020观看福利| 国产又黄又粗的视频| 神马久久一区二区三区| 亚洲人成网站在线播| 在线观看福利片| 一本色道久久综合亚洲精品酒店| 精品偷拍各种wc美女嘘嘘| 污污内射在线观看一区二区少妇| 激情av综合| 亚洲精品国产美女| av网页在线观看| 欧美调教视频| 亚洲欧美综合v| 秋霞网一区二区三区| 色呦哟—国产精品| 最新的欧美黄色| 二区三区四区视频| 你懂的国产精品| 久久久午夜视频| 特一级黄色大片| 国产日韩视频| 国产成人精品av在线| 亚洲精品91天天久久人人| 日本成人在线视频网站| 国产一区二区在线免费视频| 国产模特av私拍大尺度 | 99久久国产精| 国产精品免费不| 中文字幕欧美日韩| 国产高潮国产高潮久久久91| 一区视频在线| 国产激情久久久久| 国产精品久久久久久在线| 高清视频一区二区| 欧美一级二级三级九九九| 日本美女高清在线观看免费| 亚洲综合视频网| 日韩少妇内射免费播放18禁裸乳| 欧美va在线观看| 欧美一级高清片在线观看| 小毛片在线观看| av影片在线一区| 欧美日韩成人精品| 久久久成人免费视频| 极品美女销魂一区二区三区免费| 国产成人一区二区三区免费看| 牛牛澡牛牛爽一区二区| 亚洲视频一区二区在线观看| 免费无遮挡无码永久视频| 一区在线影院| 亚洲护士老师的毛茸茸最新章节| 1024手机在线观看你懂的| 欧美一区91| 日韩av123| www.污视频| 久久精品一区四区| 国产高清www| a屁视频一区二区三区四区| 精品国产乱码久久久久久久久| 国产精品无码一区二区三区| 综合久久一区| 国产精品久久久久久久久久99| 国内老熟妇对白xxxxhd| 久久精品亚洲乱码伦伦中文 | 污视频在线看网站| 欧美自拍丝袜亚洲| 亚洲av无码一区二区三区网址| 日韩精品水蜜桃| 欧洲一区二区视频| 亚洲不卡免费视频| **欧美大码日韩| 欧美 激情 在线| 精品人人人人| 另类专区欧美制服同性| 国产在线观看第一页| 99精品视频免费在线观看| 天天干天天操天天干天天操| 91精品韩国| 亚洲美女av在线播放| 久久久久亚洲av片无码下载蜜桃| 久久99精品久久只有精品| 日本亚洲自拍| 亚洲欧洲日本韩国| 亚洲福利视频免费观看| 日韩女优一区二区| 国内一区二区视频| 一区在线电影| 成人在线黄色| 这里只有精品视频| 精品无码一区二区三区的天堂| 91在线一区二区| 久久国产精品视频在线观看| 99香蕉久久| 欧美黄色片视频| 精品久久久无码中文字幕| 亚洲欧洲日韩在线| 亚洲a级黄色片| 91麻豆精品国产91久久久平台| 国产精国产精品| 高h视频在线| 欧美亚日韩国产aⅴ精品中极品| 成人免费无码大片a毛片| 亚洲九九精品| 久久99国产精品99久久| 在线手机中文字幕| 亚洲毛片在线看| 亚洲 欧美 日韩 在线| 久久综合久久综合久久综合| 久久美女福利视频| 国产探花一区| 成人精品福利视频| 制服丝袜中文字幕在线| 日韩欧美国产一区二区三区 | 中文字幕 日本| 99精品国产福利在线观看免费 | 国内自拍中文字幕| 偷拍自拍亚洲| 久久精品一偷一偷国产| 国产乱码久久久久| 亚洲一区二区三区四区五区黄| 精品人妻一区二区免费| 亚洲综合三区| 婷婷四月色综合| 国产精品一区二区美女视频免费看 | 亚洲自拍偷拍网址| 欧美xxxxhdvideosex| 亚洲国产日韩欧美在线99| 日韩欧美在线观看免费| 中文字幕日韩精品一区| 日本成人在线免费| 香蕉久久国产| 亚洲亚洲精品三区日韩精品在线视频 | 香蕉久久国产av一区二区| 一本色道久久加勒比精品 | 一级日本不卡的影视| av免费观看不卡| 老**午夜毛片一区二区三区 | 在线看片欧美| 日韩高清国产精品| 精品一区二区三区视频在线播放 | 亚洲免费视频观看| 在线观看一二三区| 亚洲国产精品久久艾草纯爱| 国产人妻大战黑人20p| 国产老肥熟一区二区三区| 免费成人在线视频网站| 97精品中文字幕| 久久精品日产第一区二区三区 | 中文字幕免费在线播放| 免费在线看成人av| 日本十八禁视频无遮挡| 97久久夜色精品国产| 久久免费99精品久久久久久| 亚洲一区有码| 欧美一区二区色| 在线黄色网页| 中文字幕精品网| 五月色婷婷综合| 欧美情侣在线播放| 超碰超碰超碰超碰| 亚洲狠狠丁香婷婷综合久久久| 亚洲欧美视频在线播放| 国产精品12区| 亚洲美女爱爱视频| 日韩精品视频网| 男人添女荫道口图片| 天天综合久久| 日韩欧美精品久久| 中文字幕区一区二区三| 91精品久久久久久久久久久久久久 | 精品午夜电影| 成人中文字幕+乱码+中文字幕| 国产精品专区免费| 国自在线精品视频| 91精品久久| www国产精品视频| 国产理论电影在线观看| 日韩二区三区在线| 肥臀熟女一区二区三区| 欧美一级xxx| 亚洲视频久久久| 欧美网站一区二区| 懂色av中文字幕| 色噜噜狠狠成人中文综合| 久久免费激情视频| 午夜av电影一区| 日本少妇性高潮| 亚洲午夜精品17c| 免费看一级一片| 亚洲免费av网站| 午夜爽爽爽男女免费观看| 国产精品久久夜| 毛片久久久久久| 国产精品嫩草影院av蜜臀| 欧美18—19性高清hd4k| 国产目拍亚洲精品99久久精品| 制服 丝袜 综合 日韩 欧美| 91美女蜜桃在线| 女~淫辱の触手3d动漫| 久久亚洲综合色| 亚洲午夜福利在线观看| 久久精品无码一区二区三区| a视频免费观看| 国产日韩欧美亚洲| 国产激情av在线| 亚洲欧洲日产国码二区| 中文字幕亚洲欧美日韩| 亚洲综合av网| 日韩手机在线观看| 一本色道久久加勒比精品 | 欧美一区二区不卡视频| a在线观看视频| 欧美成人vr18sexvr| 日韩在线观看视频一区二区三区| 亚洲精品国产美女| 国产鲁鲁视频在线观看免费| 日韩在线观看免费高清完整版| 里番在线观看网站| 欧美国产极速在线| 2020日本在线视频中文字幕| 欧美一级在线播放| 最新日韩一区| 99久热re在线精品996热视频| 极品束缚调教一区二区网站| 蜜桃免费一区二区三区| 久久福利综合| 老子影院午夜伦不卡大全| 久久激情一区| 亚洲天堂网站在线| 成人午夜精品在线| 亚洲色成人网站www永久四虎 | 三上悠亚一区二区| 国产男女猛烈无遮挡91| 51vv免费精品视频一区二区| 欧美国产综合视频| 国产精品传媒精东影业在线| 日韩视频免费播放| 日本sm残虐另类| 国产香蕉精品视频| 日本一区二区在线不卡| 青青草偷拍视频| 在线亚洲高清视频| 亚洲av色香蕉一区二区三区| 亚洲欧美日韩中文在线| 菠萝菠萝蜜在线观看| 欧美在线视频在线播放完整版免费观看 | 人人妻人人澡人人爽人人欧美一区 | 污视频网站免费观看| 在线观看中文字幕亚洲| 成人影院在线播放| 国产精品美女免费看| 欧美9999| 午夜精品一区二区三区在线观看| 亚洲午夜视频| 免费网站在线观看黄| 久久伊人蜜桃av一区二区| 久久久.www| 欧美三级一区二区| 日韩精品视频无播放器在线看 | 久草在线中文最新视频| 亚洲一区二区少妇| 精品国产中文字幕第一页| 你真棒插曲来救救我在线观看| 久久成人av少妇免费| 人妻无码一区二区三区| 亚洲精品国产a久久久久久| 黄色污污视频软件| 亚洲国产成人久久| 国产成人在线视频免费观看| 国产成人久久精品| 美女呻吟一区| 国产精品视频网站在线观看| 精品一区二区综合| 国产熟女一区二区| 色综合天天综合网国产成人综合天| 蜜臀av午夜精品| 欧美日韩国产成人| 精品视频一二| 国产成人三级视频| 久久精品国产网站| 五月婷婷婷婷婷| 欧美亚洲愉拍一区二区| 欧美另类自拍| 国产91精品高潮白浆喷水| 国产成人澳门| 久草免费福利在线| 国产成人av影院| 久久成人国产精品入口| 日韩精品一区二区三区视频在线观看 | 久久日本片精品aaaaa国产| 日韩免费毛片| 蜜臀久久99精品久久久久宅男| 中文字幕在线看高清电影| 欧美午夜视频一区二区| 亚洲欧美日本在线观看| 5566成人精品视频免费| 亚洲尤物av| 欧美亚洲日本在线观看| 国产日韩欧美电影| 人妻中文字幕一区二区三区| 一区二区日韩精品| 伊人久久高清| 亚洲精品成人三区| 久久爱另类一区二区小说| www.5588.com毛片| 日韩美女一区二区三区| aa级大片免费在线观看| 麻豆精品传媒视频| 日韩精品色哟哟| 91传媒免费观看| 日韩欧美一卡二卡| 人人草在线视频| 日本婷婷久久久久久久久一区二区| 老司机精品视频网站| 日韩av片在线免费观看| 日韩一区二区免费在线电影 | 欧美少妇xxxx| 中文字幕第38页| 亚洲精品中文字幕乱码三区| 亚洲精品久久久久久无码色欲四季| 午夜精品一区二区三区在线播放| 少妇高潮一区二区三区| 人人干人人视频| 综合网在线视频| 男人天堂网在线视频| 欧美一区亚洲一区| 91综合在线| 超碰caoprom| 欧美影视一区二区三区| а√天堂资源地址在线下载| 国产一区二区高清不卡| 久久久久久网| 日韩女优一区二区| 亚洲男人天堂2023| 国产精品美女久久久久| 热99这里只有精品| 日韩一区欧美一区| 色哟哟在线观看| 91精品啪在线观看麻豆免费| av不卡在线看| 国精产品久拍自产在线网站| 精品国产一区二区三区av性色 | 免费黄色网页在线观看| 国产精品免费看一区二区三区| 日本vs亚洲vs韩国一区三区| 国产一卡二卡在线播放| 在线不卡国产精品|