第四階段筆記 Jingtao_day01

day 01 京淘項目介紹,SpringBoot啓動原理

此文檔是在課上根據操做流程整理,更多細節請參見劉老師的專欄java

江哥的專欄

cgb2008-京淘day01web

一. 京淘項目總體架構圖設計

​ 工做3~5年以後算法

​ 單體架構模式:將全部的功能模塊寫到一個tomcat服務器中。tomcat併發能力:200/秒,帶寬:10M。spring

​ www.jd.com:80 "IP+端口"的方式只能訪問一個服務器sql

防火牆 /網絡安全
    --> 反向代理服務器(公司訪問的惟一入口) --> 服務分發給不一樣的tomcat服務器
      --> 緩存服務器集羣... --> 中間件[保護數據庫的規則]
        --> 數據庫代理 --> 數據庫服務器(本身維護)主機/寫操做 --> 從機(備份)/讀操做 [讀寫分離]
                                                      --> 從機... [負載均衡][高可用]
二. 京淘項目表設計
  1. 表與表關係

    祕籍:想象成爲找對象的業務場景!!!(從心裏(本身)出發)數據庫

    i. 一對一:商品與描述緩存

    ​ 1) 商品與描述一對一;2) 描述與商品一對一tomcat

    ​ 關聯關係:本身的主鍵\<pk>充當別人的外鍵\<fk>,主鍵和外鍵一致。安全

    ii. 一對多:分類與商品springboot

    ​ <u>有外鍵的表通常與關聯表是一對一,關聯表與加外鍵的表是一對多。</u>

    ​ 1) 分類與商品一[主]對多;2) 商品與分類一[主]對一[外]

    ​ 關聯關係:主鍵不能夠重複,通常條件下<u>外鍵能夠重複</u>,主鍵和外鍵不一致。

    iii. 多對多(實質:雙向一對多):角色與權限

    ​ 1) 一個角色對應多個權限; 2) 一個權限被多個角色所具備

    ​ 表的個數:3張表 --> 角色表[role_id\<pk>] + 權限表[pri_id\<pk>]

    ​ + 角色權限關係表[id,role_id\<fk1>,pri_id\<fk2>] 聯合主鍵:<fk1,fk2>

  2. 導入數據庫

    導入的命令 source 路徑:/xxx.sql

    i. 安裝數據庫工具 -- SQLyog

    ii. 導入數據庫

    ​ 右鍵 --> 從腳本文件建立數據庫 --> 選擇jtdb.sql

三. 切換IDEA工做空間,修改配置
  1. 準備空文件夾 -- CGB2008_Jingtao
  2. 安裝lombok的插件
  3. 配置鍵位(快捷鍵)
  4. 修改鼠標的縮放,智能提示
  5. 構建項目
  6. 配置maven
  7. 設置自動保存
  8. 啓動構造方法的自動提示
四. 完成SpringBoot手動建立/瞭解什麼是開箱即用原理
  1. 建立項目
  2. 引入jar包
  3. 關於Maven說明

    Maven是一站式項目管理工具,能夠建立項目,管理項目,項目打包,依賴、發佈等。

    i. 關於Maven座標的說明

    ​ 中央倉庫jar <--> 代理(私服鏡像-阿里雲) <--> 本地庫

    ​ Maven中有不少其餘機構開源的jar包,未來經過座標的形式進行統一管理。

    ​ jar包位置:D:\JavaDevelop\localRepo\org\springframework\boot\spring-boot-starter\2.4.0

    <dependency>
        <groupId>org.springframework.boot</groupId>    公司域名倒寫
        <artifactId>spring-boot-starter-web</artifactId>    項目名
        <version>2.4.0</version>    版本號
    </dependency>

    ii. 關於maven中jar包依賴傳遞性的說明

    ​ 在maven項目中若是A.jar依賴B.jar,B.jar依賴於C.jar。當程序經過maven引入A.jar的時候會自動引入B/C.jar。

    ​ 原理:1) 當用戶添加jar包文件時,maven工具會經過座標加載jar包;2) 加載完成加載完jar包以後,會解析其pom文件,看是否還有jar包依賴。

    iii. maven工具如何保證jar包文件安全得傳遞

    ​ SHA-1(安全散列算法-1)能夠生成160位(20字節,40個十六進制數)的"消息摘要"。例如:junit-4.12.jar.sha1

    ​ 常識:1) 若是數據相同,它的哈希值必定相同;2) 一個數據10k,一個數據1G,計算哈希值速度約等於同樣快。

    ​ A.jar --SHA1--> 消息摘要A.jar.sha1 -傳輸-> B.jar --SHA1 --> 消息摘要B.jar.sha1(對比是否相同)

    ​ http協議 --[數據證書 全球惟一 非對稱加密]--> https協議

    ​ 對稱加密:加密和解密的祕鑰同樣,不能保證絕對安全。

    ​ 非對稱加密:加密祕鑰和解密祕鑰配合使用,單看一把不能看出全貌。

  4. pom.xml文件中標籤的做用(一)

    i. 編輯在maven中展示的名稱

    <name>springboot_demo1</name>

    ii. maven打包方式

    <!-- 打包種類:jar war pom(聚合項目 大型項目) -->
    <packaging>jar</packaging>

    iii. 打包

    ​ clean(清空target目錄) --> compile(編譯源文件,生成target目錄) --> install(在target目錄和本地庫中生成項目的jar包)

    iv. jar包文件運行測試

    命令: java -jar xxxx.jar
    退出: ctrl+c
  5. 關於環境說明

    i. 關於JDK配置

    ​ 查找jdk的根目錄 --> 配置環境變量 (JAVA_HOME,%JAVA_HOME%\bin)

    ii. 關於Maven說明

    ​ maven安裝路徑 --> maven配置文件

  6. pom.xml文件中標籤的做用(二)

    i. dependencies標籤

    <!-- 2.依賴的做用:依賴須要的jar包文件 -->
    <dependencies>
       <dependency>
          <groupId>org.springframework.boot</groupId>
          <!-- spring-boot-starter-xxx 啓動項 開箱即用
             只須要引入特定的jar包,進行簡單的配置,便可以使用該功能-->

    ii. build標籤

    <!-- 3.build標籤的做用:
       讓程序使用maven命令時,按照指定插件運行 必須配置-->
    <build>
       <plugins>
          <plugin>
  7. SpringBoot啓動流程

    @SpringBootApplication

    i. 元註解說明

    ​ 修飾註解的註解稱之爲元註解

    @Target({ElementType.TYPE})  //該註解對類有效
    @Retention(RetentionPolicy.RUNTIME)  //該註解運行期有效
    @Documented  //生成文檔信息
    @Inherited  //該註解是否容許被繼承

    ii. 排除過濾器啓動

    ​ 做用:因爲SpringBoot須要自動加載的項不少,要排除掉一些不加載的項

    @ComponentScan(
        excludeFilters = {@Filter(
        type = FilterType.CUSTOM,
        classes = {TypeExcludeFilter.class}
    ), @Filter(
        type = FilterType.CUSTOM,
        classes = {AutoConfigurationExcludeFilter.class}
    )}
    )

    iii. 配置類

    ​ 經過註解得知,主啓動類就是一個配置類,做用是在啓動時有第三方的配置,則主動地加載,大的配置文件中包含小的

    @SpringBootConfiguration

    iv. 自動化地配置

    ​ 1) @AutoConfigurationPackage:指定了SpringBootq啓動時包掃描的路徑 -- 主啓動類的同包或子包下;

    ​ 2) @Import({AutoConfigurationImportSelector.class}):該註解主要表示當程序啓動時,SpringBoot內部會有多個選擇器依次啓動。選擇器啓動時會去加載指定的jar包文件,這時開箱啓用纔可使用。

    @EnableAutoConfiguration
相關文章
相關標籤/搜索