国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

場景題:你項目有什么亮點?

開發
在當前嚴峻的就業形勢下,項目如果沒什么亮點,可能連面試的機會都沒有,但實際工作中,大部分人所做的事就是 CRUD(增刪改查),那怎么才能即很好的體現我們的技術實力?又不會被面試官識破呢?

在當前嚴峻的就業形勢下,項目如果沒什么亮點,可能連面試的機會都沒有,但實際工作中,大部分人所做的事就是 CRUD(增刪改查),那怎么才能即很好的體現我們的技術實力?又不會被面試官識破呢?

所以,今天我這個給大家提供一些通用的項目亮點,你學會之后可以應用到自己的項目中,這樣這個棘手的問題就可以搞定了。

亮點1:并發編程+任務編排

1.1 并發編程

并發編程通常用在處理大量數據或者執行多個獨立任務時,可以創建多個線程來并行處理,以提高效率和響應速度。

并發編程常見案例:例如 BI(Business Intelligence,商業智能系統)系統,一種集成了數據倉庫、查詢報表、數據分析、數據挖掘、數據可視化等多種功能的軟件工具,用于幫助企業從大量數據中提取有價值的商業信息,以支持決策制定。BI 系統通常需要從多個(微服務)數據源并行導入大量數據,這樣我們就可以利用多線程同時導入數據,這樣可以顯著減少總的導入時間。

多線程具體實現:在 Spring Boot 中定義全局線程池,實現代碼如下:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;

@Configuration
public class ThreadPoolConfig {
    @Bean
    public ThreadPoolTaskExecutor taskExecutor() {
        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
        taskExecutor.setCorePoolSize(5);
        taskExecutor.setMaxPoolSize(10);
        taskExecutor.setQueueCapacity(100000); // 任務隊列:10w
        taskExecutor.setThreadNamePrefix("my-threadpool-");
        // 自定義拒絕策略【1.記錄錯誤信息。2.通知消息系統,發送告警信息】
        taskExecutor.setRejectedExecutionHandler(new RejectedExecutionHandler() {
            @Override
            public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
                // 1.記錄錯誤信息
                // 2.通知消息系統,發送告警信息
            }
        });
        taskExecutor.initialize();
        return taskExecutor;
    }
}

多線程使用代碼示例:

@Resource
private ThreadPoolTaskExecutor taskExecutor;

1.2 任務編排

任務編排常見案例和具體實現:以上 BI 系統再抽取多個數據源之后,需要對數據進行整合、處理和入庫,在這種場景下就需要使用 CompletableFuture 來進行任務編排。

任務編排具體實現:使用 CompletableFuture,它是 JDK 8 提供的線程編排工具,它的常用方法有以下幾個:

圖片圖片

例如,我們現在實現一個這樣的場景:

圖片圖片

     任務描述:任務一執行完之后執行任務二,任務三和任務一和任務二一起執行,所有任務都有返回值,等任務二和任務三執行完成之后,再執行任務四,它的實現代碼如下:

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class CompletableFutureExample {
    public static void main(String[] args) {
        // 任務一:返回 "Task 1 result"
        CompletableFuture<String> task1 = CompletableFuture.supplyAsync(() -> {
            try {
                // 模擬耗時操作
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                throw new RuntimeException(e);
            }
            return "Task 1 result";
        });
        // 任務二:依賴任務一,返回 "Task 2 result" + 任務一的結果
        CompletableFuture<String> task2 = task1.handle((result1, throwable) -> {
            try {
                // 模擬耗時操作
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                throw new RuntimeException(e);
            }
            return "Task 2 result " + result1;
        });
        // 任務三:和任務一、任務二并行執行,返回 "Task 3 result"
        CompletableFuture<String> task3 = CompletableFuture.supplyAsync(() -> {
            try {
                // 模擬耗時操作
                Thread.sleep(800); // 任務三可能比任務二先完成
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                throw new RuntimeException(e);
            }
            return "Task 3 result";
        });
        // 任務四:依賴任務二和任務三,等待它們都完成后執行,返回 "Task 4 result" + 任務二和任務三的結果
        CompletableFuture<String> task4 = CompletableFuture.allOf(task2, task3).handle((res, throwable) -> {
            try {
                // 這里不需要顯式等待,因為 allOf 已經保證了它們完成
                return "Task 4 result with " + task2.get() + " and " + task3.get();
            } catch (InterruptedException | ExecutionException e) {
                throw new RuntimeException(e);
            }
        });
        // 獲取任務四的結果并打印
        String finalResult = task4.join();
        System.out.println(finalResult);
    }
}

亮點2:多級緩存

定義:多級緩存是指在系統中設置多個層次的緩存,每個層次的緩存具有不同的特性,它們協同工作來滿足系統對數據訪問速度和存儲容量等多方面的需求。

圖片圖片

使用多級緩存可以從離用戶請求最近的地方優先獲取緩存信息,從而保證了更高的查詢效率,多級緩存包括以下這些:

  • 分布式緩存:例如,Redis、MemCached 等。
  • 本地緩存:例如,Caffeine、Google Guava Cache、Spring Cache、Ehcache 等。
  • Nginx 緩存:在 Nginx 中配置并開啟緩存功能。
  • CDN 緩存:是一種通過在離用戶更近的位置存儲數據副本,以提供更快速、高效地內容交付的技術。CDN緩存使用分布式網絡和邊緣節點來緩存和分發靜態和動態內容,以減少用戶請求的響應時間和帶寬消耗。
  • 瀏覽器緩存:它的實現主要依靠 HTTP 協議中的緩存機制,當瀏覽器第一次請求一個資源時,服務器會將該資源的相關緩存規則(如 Cache-Control、Expires 等)一同返回給客戶端,瀏覽器會根據這些規則來判斷是否需要緩存該資源以及該資源的有效期。

亮點3:緩存和數據庫一致性問題解決

項目中使用緩存時會有 4 大經典的問題(雪崩、穿透、擊穿、數據一致性),其中一個就是【緩存和數據庫一致性問題】,所以在實際工作中解決了這個經典問題,也是一大亮點。

緩存和數據庫一致性問題的常見解決方案有兩個:

  1. 使用延遲雙刪+MQ
  2. Canal 監聽 MySQL Binlog 保證數據一致性:Canal 監聽 binlog,再將數據庫更新到 MQ(如 Kafka)中,再通過監聽消息更新 Redis 緩存,Canal 執行流程如下:

圖片圖片

亮點4:自定義注解解決冪等性問題

使用了自定義注解實現了一些通用功能,例如,使用自定義注解實現冪等性處理、使用自定義注解實現了統一數據權限的驗證等。

亮點5:分庫分表技術

如項目中使用了分庫分表技術增加數據庫的并發處理性能,典型的技術實現有 MyCat 和 ShardingSphere。

分庫分表技術介紹

首先來說,“分庫分表”不是一個技術,而是多個技術實現:

  1. 分庫

a.垂直分庫

b.水平分庫

  1. 分表

       a.垂直分表

       b.水平分表

① 垂直分庫

垂直分庫是按照業務將不同的表拆分到不同的數據庫中。例如,在一個電商數據庫中的用戶表和訂單表分別存放到不同的數據庫中,如下圖所示:

圖片圖片

② 水平分庫

水平分庫是將數據按照一定的規則(如用戶 ID 取模、哈希等)分布到不同的數據庫中。比如,根據用戶 ID 對 10 取模,將用戶數據分布到 10 個不同的數據庫中,每個數據庫都保存著完整的數據表結構,如下圖所示:

圖片圖片

③ 垂直分表

分表:

圖片圖片

垂直分表:垂直分表是將一張表按照列的相關性拆分成多張表。例如,將一個包含大量字段的用戶表,拆分為用戶基本信息表和用戶擴展信息表,如下圖所示:

圖片圖片

④ 水平分表

水平分表是將一張表的數據按照行進行拆分。例如按照用戶 ID 的范圍或者哈希值將數據拆分到不同的表中。

圖片圖片

在實際業務中,各種分庫分表技術可以混合使用。

MyCat VS Sharding Sphere

分庫分表的主流實現技術有以下兩種:

  1. MyCat
  2. Apache Sharding Sphere

Sharding Sphere 相比于 MyCat 來說,它的優勢是:

  1. 功能更多:除了讀寫分離和分庫分表之外,還提供了數據加密、流量質量、數據遷移等功能。
  2. 社區更活躍度和生態更好:Sharding Sphere 擁有活躍的社區和豐富的文檔,生態系統較為完善,有更多的用戶和開發者參與。
  3. 靈活性和擴展性:Sharding Sphere 靈活性更高,擴展性也更好,它可以方便地與其他技術集成,這方便 MyCat 支持的比較有限。

亮點6:項目中使用多種設計模式

例如以下這些設計模式:

  1. 責任鏈模式:在請求進入后端項目之后,會經過多個責任鏈攔截器(或過濾器),先鑒權、黑白名單效驗、參數效驗、敏感詞過濾等操作之后,才能進行后續的訪問和操作。
  2. 策略模式:支付功能會根據用戶不同的選擇,使用對應的支付代碼實現支付功能。
  3. 模版方法模式:支付功能實現上,首先在接口中定義支付的基本流程,而具體的支付方式(如信用卡支付、三方平臺支付等)則由子類實現。
  4. 裝飾器模式:在不更改原功能的基礎上,添加新的功能。例如,項目中方法的統計,不更改原來的方法執行,在方法執行前后添加了執行統計記錄功能。
  5. 代理模式:日志代理功能的實現,在執行目標對象的方法前后記錄日志,用于監控和調試。
  6. 生產者消費者模式:使用 MQ 實現生產者和消費者模式,處理異步任務。
  7. 建造者模式:實現類對象的創建和初始化。
  8. 單例模式:項目中的數據源、線程池等都使用了單例模式保證了資源的高效使用。
責任編輯:武曉燕 來源: 磊哥和Java
相關推薦

2025-04-01 00:00:00

項目CRUD單例模式

2023-12-08 08:29:53

SpringAOP日志

2019-08-12 16:22:07

Python線程場景

2024-10-25 16:31:17

Redis數據預處理線程

2022-10-17 00:27:20

二叉樹數組索引

2016-07-04 10:39:19

Swift 3亮點

2023-12-26 09:42:41

存儲數據庫

2022-07-24 21:56:38

元宇宙

2014-05-26 16:18:23

全球軟件技術峰會WOT201451CTO

2020-01-27 10:48:55

Linux終端技巧

2021-03-16 06:47:47

Python

2025-01-03 08:46:20

場景元素函數

2024-09-03 09:31:41

微服務面試官系統

2012-11-14 16:55:53

TOP500Titan超級計算機

2015-07-16 11:23:05

微軟CRMAzure云服務

2023-11-28 08:20:25

2024-08-30 17:14:34

2020-11-23 09:21:09

開源項目

2016-03-16 10:43:08

項目時間

2016-03-03 14:20:02

ZD至頂網軟件頻道
點贊
收藏

51CTO技術棧公眾號

九色国产在线观看| 国产高清精品一区| 最新真实国产在线视频| 国产亚洲精品7777| 欧美一区二区三区四区夜夜大片| 久久夜色电影| 中文字幕日韩精品在线| 麻豆最新免费在线视频| 欧美午夜激情在线| 日本高清好狼色视频| 久久久久99精品国产片| 成人一区二区免费视频| 激情综合色播五月| 欧洲亚洲一区二区| 伊人激情综合| 亚洲一区二区免费| 天天色综合色| 91精品久久久久久| 国产精品99在线观看| 国产日韩在线精品av| 亚洲人挤奶视频| 日本a级片电影一区二区| 精品成人自拍视频| 午夜精品一区二区三区在线播放| 日韩色性视频| 久久久精品电影| 日韩不卡视频在线观看| 在线丨暗呦小u女国产精品| 欧美国产大片| 日韩一二三在线视频播| 亚洲青青一区| 欧美成人在线免费视频| 天堂av一区| 性色av一区二区三区在线观看| 我要色综合中文字幕| 97色在线观看| 日本在线电影一区二区三区| 国产精品偷伦视频免费观看国产| 99久久影视| 狠狠色噜噜狠狠色综合久 | 精品欧美激情精品一区| 黄页网站免费在线观看| 色婷婷综合中文久久一本| 精品黄色免费中文电影在线播放| 亚洲国产婷婷香蕉久久久久久| 色多多在线观看| 久久精视频免费在线久久完整在线看| 日韩高清一区| 清纯唯美亚洲综合| 亚洲妇女av| 国产精品免费一区二区三区在线观看 | 日韩成人av在线| 国产69精品久久| 97高清免费视频| 亚洲激情五月| 亚洲欧洲三级| 中文字幕免费观看一区| 青春草在线观看 | 久久大大胆人体| 日韩精品久久| 日本10禁啪啪无遮挡免费一区二区| 成人美女视频在线观看18| 成人国产视频在线| 555www色欧美视频| 精品一区二区三区视频在线播放 | 小视频免费在线观看| 欧美日韩福利在线观看| 欧美大片专区| 人人妻人人澡人人爽欧美一区双| 亚洲精品综合在线| 91九色在线看| 日韩免费黄色av| 视频精品一区二区| 91av入口| 亚洲国产日韩一区| 欧美丝袜一区| 九一免费在线观看| 五月天欧美精品| av一区在线播放| 国产高清一区视频| 欧美激情一区二区| 成人看av片| 青青a在线精品免费观看| 蜜臀91精品一区二区三区| 蜜桃视频中文字幕| 亚洲深夜福利视频| 国产一区视频在线观看免费| mm1313亚洲国产精品无码试看| 欧美久久久久中文字幕| 久久97精品| 天天干天天色天天爽| 欧美日韩国产一中文字不卡| 第四色男人最爱上成人网| 97超级碰碰| 中文字幕在线视频一区| 末成年女av片一区二区下载| 成人午夜小视频| 久久婷婷色综合| 超碰资源在线| 国产成人成网站在线播放青青| 国产欧美日韩精品一区| 国产h片在线观看| 成人在线免费网站| 国产女主播在线一区二区| 小早川怜子影音先锋在线观看| 亚洲伊人一本大道中文字幕| 中文字幕精品综合| 欧洲一区二区三区精品| 久久av一区二区三区亚洲| 亚洲午夜影视影院在线观看| 视频精品一区| 免费在线观看视频a| 欧美大胆人体bbbb| 中文字幕一区二区精品区| xxx亚洲日本| 久久久国产精品免费| 精品一区二区久久久| 黄色在线观看网站| 丁香五月网久久综合| 福利视频一区二区| 国产精品88久久久久久| 美女视频黄a视频全免费观看| 欧美老肥婆性猛交视频| 成人精品小蝌蚪| 久草在线中文最新视频| 亚洲高清视频一区二区| 欧美一级在线视频| 日韩精品乱码免费| 深夜国产在线播放| 日韩国产精品一区二区| 69p69国产精品| 亚洲每日在线| 1区2区3区在线视频| 欧美日韩综合另类| 日韩精品一区二区三区老鸭窝| 国产一区二区你懂的| 黄色网在线免费看| 日本高清一区| 精品国产免费久久| 久久精品国产一区二区三| wwwwxxxx在线观看| 国产精品12p| 中文字幕国产日韩| 91视频观看视频| 99精品在免费线中文字幕网站一区| 国产偷人视频免费| 欧美激情一区二区三区成人| 91麻豆免费看片| 外国成人在线视频| 小水嫩精品福利视频导航| 成人区精品一区二区| 在线综合+亚洲+欧美中文字幕| 欧美亚洲在线| 成入视频在线观看| jizzjizzxxxx| 国产成人精品综合| 欧美偷拍一区二区| 美女视频一区在线观看| 久久久久久一区二区三区四区别墅| 国产熟人av一二三区| 国产激情综合五月久久| 91官网在线免费观看| 老鸭窝一区二区久久精品| 日韩毛片免费看| 一级黄色av| 久久久水蜜桃| 亚洲欧美综合图区| 欧美激情综合网| 91精品久久久久久久蜜月| 日本三级在线观看网站| 欧美亚洲精品一区二区| 国产精品久久久久久网站| 欧美精品一级二级三级| 国产成人av一区| 亚洲三级网页| h网站久久久| 好男人www社区| 成人av在线亚洲| 日韩av中文字幕在线| 国产欧美一区二区精品仙草咪| 天天影视综合| 成人影院在线视频| 丁香激情视频| 亚洲 国产 日韩 综合一区| 国产+人+亚洲| 91精品国产一区二区三区香蕉| 2020国产精品| 亚洲狠狠婷婷| 在线综合色站| 中文在线观看免费| 国产乱xxⅹxx国语对白| 色大师av一区二区三区| 欧美一级高清免费| 亚洲国产欧美一区| 亚洲综合一二区| 丰满亚洲少妇av| 亚洲国产影院| 偷拍自拍亚洲色图| 亚洲www啪成人一区二区| yw193.com尤物在线|