項目2---十次方項目開發---後臺---01

開發模型:

以微服務劃分。

接口是解耦和的,現在是每個服務是獨立的了,就沒必要寫接口了。

訪問地址:http://localhost:9001/label

---------------------------------------------01----------------------02--------------------------------------------

UML建模:

powerdesigner:架構師設計數據庫的工具。用來談業務的。

UML建模語言。

-------------------------------------------------------03-----------------------------------------------------------

項目說明:

模塊的劃分:

common:是公用的。

我們看下這個公共模塊的代碼:

第一個實體類:PageResult:

第二個實體類:Result:

第三個實體類:StatusCode:

本機的swagger看接口:

-----------------------------------------------------------------------------------04-----------------------------------------------------------------------------------

Restful:

面試問題:冪等和安全問題

安全:髒讀什麼的

冪等:在操作成功的前提下會不會對數據庫造成額外的影響,舉個例子比如訂單你點一次返回的時候可能信號不好,又點擊了一次。

GET:安全冪等

POST:不安全不冪等

DELETE:不安全冪等

PUT:不安全冪等

-----------------------------------------------------------------------------------05-----------------------------------------------------------------------------------

mysql微服務。

配置文件:這個是虛擬機的網卡的配置文件。

看下這個配置文件是如何配置的,用的時候再看就可以。

製作mysql容器。

注意上面的語句有密碼:123456

-e:後面爲初始化變量

3306:3306:宿主機的端口:容器的,mysql默認端口

docker的自啓動:

https://blog.csdn.net/xtjatswc/article/details/86586769

https://segmentfault.com/a/1190000019783852?utm_source=tag-newest

-----------------------------------------------------06-------------------------------------------------------------

執行建表語句

----------------------------------------------------------------------------07------------------------------------------------------------------------------------------

如何創建一個父子工程:

第一步:父親工程沒有pom就不能在子工程用父親工程的資源了。

第二步:

父工程什麼都不要。

父工程不寫代碼,刪掉src的東西。

導入pom。

--------------------------------------------------------------------------08--------------------------------------------------------------------------------------------

構建公共的子模塊:

第一步:new一個module,然後直接不用模板。

第二步:創建返回值的實體類。

第三步:寫分頁的實體類

第四步:狀態碼

-----------------------------------------------------09-------------------------------------------------------------

雪花算法:64bit。

1:不用的

41:時間戳可以使用到2082年

10:工作機器id可以支持1024臺機器

12:序列號可以1毫秒產生4096個自增序列id

分佈式id生成器。

二進制的64位,2的64次方。

時間戳是毫秒值的相減,2的41次方。

前五位數 爲宿主機器  後五位爲微服務的id。

12:隨機數真正的隨機數。

1秒產生26萬個id。超了放在消息隊列中。

兩個微服務操作一張表:都用雪花算法不用主鍵自增。

美團的全局ID:https://www.cnblogs.com/imstudy/p/11573025.html

-----------------------------------------------------10-------------------------------------------------------------

基礎微服務的crud:

問答。

用模板:

生成項目:base

我們分析下pom的結構:

這個不能去掉。

1.clean2.編譯3.發佈4.安裝

最後的pom:

結論:不建議用模板。

我們寫pom文件:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <artifactId>tensquare_common</artifactId>
            <groupId>com.tensquare</groupId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <artifactId>mysql</artifactId>
            <groupId>mysql-connector-java</groupId>
        </dependency>
    </dependencies>

-------------------------------------------------------11------------------------------------------------------------

base的準備工作:

spring:
  application:
     name: temsquare-base
這個語句的作用:是eureak的註冊的名字,細節,必須中間是橫槓。

注意一個知識點:

driverClassName是一樣的,都可以識別。

完整的:

server:
  port: 9001

spring:
  application:
     name: temsquare-base
  datasource:
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://192.168.244.136:3306/tensquare_base?characterEncoding=utf‐8
     username: root
     password: 123456
  jpa:
     database: mysql
     show-sql: true

接下來寫啓動類:

注意跨域不在這裏面寫。在Controller裏面寫。

寫好入口文件。

-------------

接下來我們用id生成器。

id生成器的原則就是誰用誰放在容器裏面。

  //將id生成器放在容器裏面
    @Bean
    public IdWorker idWorker(){
        return new IdWorker(1,1);
    }

講下源碼:

springboot在啓動的時候會檢索這個文件:

這個就是spring的入口,寫web.xml的

點進去:

----------------------------------------------------------12---------------------------------------------------------

寫一個controller:

跨域註解:cnblogs.com/mmzs/p/9167743.html

總結:1和3要一樣的,要是不一樣要保持1和2一樣。

基本得crud嚴格按照接口文檔書寫:

寫實體類。

注意一點分佈式得開發要寫這個一定要寫,加這句話才能在不同平臺之間使用io流進行傳輸。:

寫帶分頁得Dao:

寫Service。

在controller寫service。

---------------------------------------------------------------13-----------------------------------------------------

postman測試:

swagger地址:http://localhost/#/default/post_label

---------------------------------------------------------------14-----------------------------------------------------

異常處理:

只對Exception處理,可以加別的。

@RestControllerAdvice
public class BaseExceptionHandler {
    @ExceptionHandler(value = Exception.class)
    public Result error( Exception e) {
        e.printStackTrace();
        return new Result(false, StatusCode.ERROR, e.getMessage());
    }
}

----------------------------------------------------------26--------------------------------------------------------------

規範的層次結構示例代碼:

1.Controller:

跨域請求寫在這裏。

2.Service

3.Dao

4.實體類

發佈了304 篇原創文章 · 獲贊 11 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章