主頁 > 後端開發 > SpringCloud入門

SpringCloud入門

2020-12-07 06:23:42 後端開發

1.什么是微服務

  • 官網: https://www.martinfowler.com/articles/microservices.html

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies. -----[摘自官網]

- a suite of small services                      								--一系列微小服務
- running in its own process                                    --運行在自己的行程里
- built around business capabilities                            --圍繞自己的業務開發
- independently deployable                                      --獨立部署
- bare minimum of centralized management of these services      --基于分布式管理
  • 官方定義:微服務就是由一系列圍繞自己業務開發的微小服務構成,他們獨立部署運行在自己的行程里,基于分布式的管理

    App 應學專案 分類模塊 視頻模塊 評論模塊 用戶模塊 統計模塊... 單體應用

    分類服務 獨立應用 ---> 計算行程里面 ---> 獨立部署

    視頻服務 基于分布式服務管理

    評論服務

    用戶服務

    ....服務

  • 通俗定義:微服務是一種架構,這種架構是將單個的整體應用程式分割成更小的專案關聯的獨立的服務,一個服務通常實作一組獨立的特性或功能,包含自己的業務邏輯和配接器,各個微服務之間的關聯通過暴露api來實作,這些獨立的微服務不需要部署在同一個虛擬機,同一個系統和同一個應用服務器中,


2.為什么是微服務?

1.單體應用

# 1.優點
-	單一架構模式在專案初期很小的時候開發方便,測驗方便,部署方便,運行良好,

# 2.缺點
- 應用隨著時間的推進,加入的功能越來越多,最侄訓變得巨大,一個專案中很有可能數百萬行的代碼,互相之間繁瑣的jar包,
- 久而久之,開發效率低,代碼維護困難
- 還有一個如果想整體應用采用新的技術,新的框架或者語言,那是不可能的,
- 任意模塊的漏洞或者錯誤都會影響這個應用,降低系統的可靠性

2. 微服務架構應用

# 1.優點
- 將服務拆分成多個單一職責的小的服務,進行單獨部署,服務之間通過網路進行通信
- 每個服務應該有自己單獨的管理團隊,高度自治
- 服務各自有自己單獨的職責,服務之間松耦合,避免因一個模塊的問題導致服務崩潰

# 2.缺點
- 開發人員要處理分布式系統的復雜性
- 多服務運維難度,隨著服務的增加,運維的壓力也在增大
- 服務治理 和 服務監控 關鍵

3. 架構的演變

# 1.架構的演變程序
- [單一應用架構] `===>` [垂直應用架構] `===>` [分布式服務架構] `===>` [流動計算架構]||[微服務架構] `===>` [未知]
  • dubbo官網:http://dubbo.apache.org/zh-cn/docs/user/preface/background.html

# 1. All in One Application 	單一架構
- 起初當網站流量很小時,將所有功能都寫在一個應用里面,對整個應用進行部署,以減少部署節點和成本,對于這個架構簡化增刪改查的作業量的資料訪問框架(ORM)是關鍵,

# 2. Vertical Application 		垂直架構
- 當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,提升效率的方法之一是將應用拆成互不相干的幾個應用,以提升效率,此時,用于加速前端頁面開發的Web框架(MVC)是關鍵,

# 3. Distributed Service    	分布式服務架構
- 當垂直應用越來越多,應用之間互動不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的回應多變的市場需求,此時,用于提高業務復用及整合的分布式服務框架(RPC)是關鍵,

# 4. Elastic Computing				流動計算架構即微服務架構
- 當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個調度中心基于訪問壓力實時管理集群容量,提高集群利用率,此時,用于提高機器利用率的資源調度和治理中心(SOA)是關鍵
  • 友情提醒: 好的架構并不是設計出來的,一定是進化來的!!!

3.微服務的解決方案

# 1.Dubbo (阿里系)
- 初出茅廬:2011年末,阿里巴巴在GitHub上開源了基于Java的分布式服務治理框架Dubbo,之后它成為了國內該類開源專案的佼佼者,許多開發者對其表示青睞,同時,先后有不少公司在實踐中基于Dubbo進行分布式系統架構,目前在GitHub上,它的fork、star數均已破萬,Dubbo致力于提供高性能和透明化的RPC遠程服務呼叫方案,以及SOA服務治理方案,使得應用可通過高性能RPC實作服務的輸出、輸入功能和Spring框架無縫集成,Dubbo包含遠程通訊、集群容錯和自動發現三個核心部分,

- 停止維護:從2012年10月23日Dubbo 2.5.3發布后,在Dubbo開源將滿一周年之際,阿里基本停止了對Dubbo的主要升級,只在之后的2013年和2014年更新過2次對Dubbo 2.4的維護版本,然后停止了所有維護作業,Dubbo對Srping的支持也停留在了Spring 2.5.6版本上,

- 死而復生:多年漫長的等待,隨著微服務的火熱興起,在國內外開發者對阿里不再升級維護Dubbo的吐槽聲中,阿里終于開始重新對Dubbo的升級和維護作業,在2017年9月7日,阿里發布了Dubbo的2.5.4版本,距離上一個版本2.5.3發布已經接近快5年時間了,在隨后的幾個月中,阿里Dubbo開發團隊以差不多每月一版本的速度開始快速升級迭代,修補了Dubbo老版本多年來存在的諸多bug,并對Spring等組件的支持進行了全面升級,

- 2018年1月8日,Dubbo創始人之一梁飛在Dubbo交流群里透露了Dubbo 3.0正在動工的訊息,Dubbo 3.0內核與Dubbo 2.0完全不同,但兼容Dubbo 2.0,Dubbo 3.0將以Streaming為內核,不再是Dubbo 時代的RPC,但是RPC會在Dubbo 3.0中變成遠程Streaming對接的一種可選形態,從Dubbo新版本的路線規劃上可以看出,新版本的Dubbo在原有服務治理的功能基礎上,將全面擁抱微服務解決方案,

- 結論:當前由于RPC協議、注冊中心元資料不匹配等問題,在面臨微服務基礎框架選型時Dubbo與Spring Cloud是只能二選一,這也是為什么大家總是拿Dubbo和Spring Cloud做對比的原因之一,Dubbo之后會積極尋求適配到Spring Cloud生態,比如作為Spring Cloud的二進制通信方案來發揮Dubbo的性能優勢,或者Dubbo通過模塊化以及對http的支持適配到Spring Cloud,

# Spring Cloud:
- Spring Cloud NetFlix(美國 在線視頻網站)   
	基于美國Netflix公司開源的組件進行封裝,提供了微服務一堆疊式的解決方案, G版本

- Spring Cloud alibaba
	在Spring cloud netflix基礎上封裝了阿里巴巴的微服務解決方案,
	
- Spring Cloud                          
	目前spring官方趨勢正在逐漸吸收Netflix組件的精華,并在此基礎進行二次封裝優化,打造spring專有的解決方案

4.什么是SpringCloud

官方定義

  • 官方網址: https://cloud.spring.io/spring-cloud-static/Hoxton.SR5/reference/html/

Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. -------[摘自官網]

# 1.翻譯
- springcloud為開發人員提供了在分布式系統中快速構建一些通用模式的工具(例如配置管理、服務發現、斷路器、智能路由、微代理、控制總線),分布式系統的協調導致了鍋爐板模式,使用springcloud開發人員可以快速地建立實作這些模式的服務和應用程式,

# 2.通俗理解
- springcloud是一個含概多個子專案的開發工具集,集合了眾多的開源框架,他利用了Spring Boot開發的便利性實作了很多功能,如服務注冊,服務注冊發現,負載均衡等.SpringCloud在整合程序中主要是針對Netflix(耐非)開源組件的封裝.SpringCloud的出現真正的簡化了分布式架構的開發,
- NetFlix 是美國的一個在線視頻網站,微服務業的翹楚,他是公認的大規模生產級微服務的杰出實踐者,NetFlix的開源組件已經在他大規模分布式微服務環境中經過多年的生產實戰驗證,因此Spring Cloud中很多組件都是基于NetFlix組件的封裝,

# 3.微服務架構下所存在問題?
-   基于獨立業務拆分成一個微小的服務  每個服務獨立部署 運行在自己的行程里面   服務之間使用http rest的方式進行通信
-   單體應用  分類模塊  視頻模塊  用戶模塊    產生  測驗    前端 pc  app  統一入口 localhost:8989
-   微服務架構應用   分類服務 8080  視頻服務 8081  用戶服務 8082 8083  .....
-   問題
		1.要有個組件幫助我們記錄服務,監控服務,服務發現  服務注冊和發現組件  注冊中心
		2.服務呼叫問題http rest方式呼叫  --- 如何呼叫? 服務呼叫時如何實作服務負載均衡 ?
		3.服務雪崩效應?  
		4.服務組態檔管理?   
		5.網關組件?    

核心架構及其組件

# 1.核心組件說明
- eurekaserver、consul、nacos    服務注冊中心組件
- rabbion & openfeign  		    服務負載均衡 和 服務呼叫組件
- hystrix & hystrix dashboard   服務斷路器  和  服務監控組件
- zuul、gateway 				  服務網關組件
- config 				       統一配置中心組件
- bus                           訊息總線組件
......


5.環境搭建

版本命名

  • 官網地址:https://spring.io/projects/spring-cloud

Spring Cloud is an umbrella(傘) project consisting of independent projects with, in principle, different release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated set of dependencies on the individual project (see below). The release trains have names, not versions, to avoid confusion with the sub-projects. The names are an alphabetic sequence (so you can sort them chronologically) with names of London Tube stations ("Angel" is the first release, "Brixton" is the second). When point releases of the individual projects accumulate to a critical mass, or if there is a critical bug in one of them that needs to be available to everyone, the release train will push out "service releases" with names ending ".SRX", where "X" is a number. ---[摘自官網]

# 1.翻譯
- springcloud 版本管理方式: 命名方式  Angel.SR1~6 Brixton.SR1~6 Camden.SR1~6
- springcloud是一個由眾多獨立子專案組成的大型綜合專案,原則每個子專案上有不同的發布節奏,都維護自己發布版本號,為了更好的管理springcloud的版本,通過一個資源清單BOM(Bill of Materials),為避免與子專案的發布號混淆,所以沒有采用版本號的方式,而是通過命名的方式,這些名字是按字母順序排列的,如倫敦地鐵站的名稱(“天使”是第一個版本,“布里斯頓”是第二個版本,"卡姆登"是第三個版本),當單個專案的點發布累積到一個臨界量,或者其中一個專案中有一個關鍵缺陷需要每個人都可以使用時,發布序列將推出名稱以“.SRX”結尾的“服務發布”,其中“X”是一個數字,

# 2.倫敦地鐵站名稱 [了解]
- Angel、Brixton、Camden、Dalston、Edgware、Finchley、Greenwich、Hoxton、

版本選擇

# 1.版本選擇官方建議 https://spring.io/projects/spring-cloud
- Angel 										版本基于springboot1.2.x版本構建與1.3版本不兼容
- Brixton										版本基于springboot1.3.x版本構建與1.2版本不兼容
	`2017年Brixton and Angel release官方宣布報廢
- Camden      							版本基于springboot1.4.x版本構建并在1.5版本通過測驗
	`2018年Camden release官方宣布報廢
- Dalston、Edgware 				 版本基于springboot1.5.x版本構建目前不能再springboot2.0.x版本中使用
	`Dalston(達爾斯頓)將于2018年12月官方宣布報廢,Edgware將遵循Spring Boot 1.5.x的生命周期結束,
- Finchley 									版本基于springboot2.0.x版本進行構建,不能兼容1.x版本
- Greenwich									版本基于springboot2.1.x版本進行構建,不能兼容1.x版本
- Hoxton										版本基于springboot2.2.x版本進行構建

環境搭建

還是創建springboot的方式

# 0.說明
- springboot 2.2.x.RELEASE+
- springcloud Hoxton SR1~6
- java8+
- maven 3.3.6+
- idea 2018.3.5+

# 1.創建springboot專案 指定版本為 2.2.5版本

# 2.引入springcloud的版本管理
<!--定義springcloud使用版本號-->
<properties>
  <java.version>1.8</java.version>
  <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
</properties>

<!--全域管理springcloud版本,并不會引入具體依賴-->
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-dependencies</artifactId>
      <version>${spring-cloud.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

# 3.完成上述操作springboot與springcloud環境搭建完成
- 接下來就是使用到具體的springcloud組件,在專案中引入具體的組件即可

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.md</groupId>
    <artifactId>01-hello</artifactId>

    <version>0.0.1-SNAPSHOT</version>
    <name>01-hello</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <!--定義springcloud使用版本號-->
        <spring-cloud.version>Hoxton.SR6</spring-cloud.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>


    <!--全域管理springcloud版本,并不會引入具體依賴-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/230878.html

標籤:Java

上一篇:Redis原始碼剖析之字典(dict)

下一篇:Java日志體系權威總結

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more