日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

京淘-02

發布時間:2023/12/29 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 京淘-02 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

springboot的高級用法

1.1 關于SpringBoot配置文件的說明

1.1.1 properties說明

1.語法: k-v結構 key=value
2.數據類型: 默認是String數據類型 不要添加多余的""號
3.字符數據類型: properties的默認的加載的編碼格式為ISO-8859-1 所以添加中文是需要字符轉意.
4.缺點: 所有的key都必須手動的編輯 沒有辦法復用 所以引入了yml配置

1.1.2 YML 配置文件說明

1.語法 K-V結構 寫法上 key:value 實質上 key=value
key:value中間使用 (:+空格) 分隔
key與key之間有父子級關系的. 所以寫的時候注意縮進項.
YML配置文件默認的格式都是UTF-8編碼 所以可以直接編輯中文

2.例子:
server:
port: 8090

1.2 關于SpringMVC調用流程(了解)

1.知識掃盲
1.協議支持 http/https (osi7層網絡模型 物數網傳會表應)
2.Java針對于服務器端開發了一種傳輸機制 Servlet機制( TCP-IP協議規范) 用戶使用servlet進行數據的傳輸的速度是較快的.

2.SpringMVC調用流程
問題: 用戶發起請求 /addUser 是如何匹配到真實的業務方法的呢???
組件:
1.前端控制器 所有請求的中轉站
2.處理器映射器 將用戶的請求與執行的業務方法進行映射(綁定)
3.處理器適配器
4.視圖解析器

1.2 關于配置文件賦值操作

1.2.1 入門案例

package com.jt.controller;import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView;@RestController //@ResponseBody 將返回值轉化為json串使用 程序將不會執行視圖解析器 直接返回 //@Controller //String類型/moduleAndView public class RedisController {private String host = "127.0.0.1";private Integer port = 6379;//如果使用RestController 返回值為String類型則返回字符串本身//如果返回的是一個對象 則結果必然是該對象的JSON數據.@RequestMapping("/getMsg")public String getMsg(){return host + ":" + port;} }

1.2.2 @Value注解屬性賦值

需求: 有時對象中的屬性的值可能會發生變化,如果直接寫死到代碼中可能導致耦合性高. 能否利用配置文件方式動態的為屬性賦值.

package com.jt.controller;import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.servlet.ModelAndView;@RestController //@ResponseBody 將返回值轉化為json串使用 程序將不會執行視圖解析器 直接返回 //@Controller //String類型/moduleAndView public class RedisController {/*** 實現思路:* 如果可以從容器中獲取數據的化,直接賦值給屬性.則可以實現解耦* 如何實現:* 注解實現: @Value("${配置文件的key}")* 表達式: spel 表達式*/@Value("${redis.host}")private String host;@Value("${redis.port}")private Integer port;//如果使用RestController 返回值為String類型則返回字符串本身//如果返回的是一個對象 則結果必然是該對象的JSON數據.@RequestMapping("/getMsg")public String getMsg(){return host + ":" + port;} }

1.2.3 利用properties文件為屬性賦值

說明:由于YML配置文件一般都是配置第三方的整合的信息,如果將業務的數據添加到YML中則不規范.最好將業務的操作添加到properties文件中.

添加配置文件:

編輯RedisPro配置文件:

@RestController //需要通過spring容器加載配置文件,并且以utf-8的格式進行加載 @PropertySource(value="classpath:/properties/redis.properties",encoding = "UTF-8") public class RedisProController {@Value("${redis.pro.host}")private String proHost;@Value("${redis.pro.port}")private Integer proPort;@RequestMapping("/getMsgPro")public String getMsg2(){return proHost + ":" + proPort;}}

1.3 SpringBoot環境切換問題

1.3.1 業務需求

業務場景:
員工是外包人員,經常性的需要往返公司和甲方,進行代碼調試時由于位置不同所以服務器IP地址必然不同.如果每次換環境都必須重新編輯IP地址和端口等數據,必定繁瑣能否優化??

1.3.2 業務實現-指定多個環境

注意事項: 無論什么樣的環境,配置的個數都是相同的,只有值不同…

# 該配置文件,當spring容器啟動時加載. spring:profiles:active: prod---# 定義開發環境 spring:profiles: devserver:port: 8080#配置redis節點信息 redis:host: 192.168.1.100port: 6379# 如果需要多環境配置則需要將YML環境分割--- spring:profiles: prodserver:port: 8090#配置redis節點信息 redis:host: 10.0.0.1port: 6379

1.4 添加熱部署配置

1.添加jar包文件

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>

2.配置IDEA
CTRL+SHIFT+ALT+/

3.開啟自動編譯、選中打鉤

1.5 SpringBoot整合MyBatis

1.5.1 編輯pom文件

把mybatis依賴換成mybatis-plus依賴

<?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.3.4.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.jt</groupId><artifactId>springboot_demo2</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot_demo2</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version><skipTests>true</skipTests></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>

1.5.2 編輯POJO文件

package com.jt.pojo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @Data //動態生成get/set/toString/equals等方法 @Accessors(chain = true) //開啟鏈式加載結構 重構了set方法可以連續. @NoArgsConstructor //無參構造 必須添加 @AllArgsConstructor //全參構造 public class User {//實體對象的屬性類型應該都是包裝類型 Integer null//int=0private Integer id;private String name;private Integer age;private String sex;/* 鏈式加載源碼public User setId(Integer id){this.id = id;return this;}*/ }

1.5.3 關于LOMBOK面試題

問題: java項目開發完成之后需要在Linux系統中部署項目. 問題:Linux環境中是否需要單獨安裝LomBok插件???
考點: LOMBOK插件工作原理是否清楚…
A: 要 B:不需要
答案:B
解析: LOMBOK插件編譯器有效 xxx.java文件----編譯-----xxx.class 動態的生成set/get/toString等方法添加到.class文件中即可. Linux中運行的jar包是.class文件的集合 已經有了get/set方法.所以不需要引入插件.

1.5.4 關于Sql連接說明

1.serverTimezone=GMT%2B8 %2B 代表 "+"號 表示時區
2.useUnicode=true&characterEncoding=utf8 指定編碼為utf-8
3.autoReconnect=true& 如果程序連接數據庫中途斷掉時是否重連.
4.allowMultiQueries=true 是否允許批量操作
eg: 要求一次入庫3張表數據… 要求用一行sql實現該操作

1.5.5 編輯YML配置文件

server:port: 8090servlet:context-path: / spring:datasource:#驅動版本問題 高版本需要添加cj關鍵字 一般可以省略#driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=trueusername: rootpassword: rootmybatis:#別名包定義 Mapper的resultType中只需要寫類名 之后自動拼接即可type-aliases-package: com.jt.pojo#加載指定的xml映射文件mapper-locations: classpath:/mybatis/mappers/*.xml#開啟駝峰映射configuration:map-underscore-to-camel-case: true

1.5.6 關于知識點講解-mapper.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace:一般與接口的路徑一致--> <mapper namespace="com.jt.mapper.UserMapper"><!--<select id="findAll" resultType="User">select * from user</select>--><!--業務需求:要求實現數據庫的查詢,但是數據庫表字段與對象的屬性不一致.eg:user表(字段 user_id,user_name,user_age......)User對象(屬性 userId,userName,userAge)說明: 引入駝峰映射規則.執行順序: 1獲取user_id~~~~去掉多余的"_"字母大寫 ~~~~userId實現數據的映射.注意事項: 如果使用駝峰規則映射則必須滿足規范..--><!--<select id="find" resultType="" resultMap="手動封裝"></select>--></mapper>

1.5.7 代碼結構

1.5.8 關于AutoWired 報錯問題

擴展

Dao包 官網也叫 Mapper包
數據持久層-—>XML文件—>業務層、實現類耦合與數據持久層寫業務—>控制層
從下至上的工作流程

OSI七層模型與TCP/IP五層模型

博主是搞是個FPGA的,一直沒有真正的研究過以太網相關的技術,現在終于能靜下心學習一下,希望自己能更深入的掌握這項最基本的通信接口技術。下面就開始搞了。

一、OSI參考模型

今天我們先學習一下以太網最基本也是重要的知識——OSI參考模型。

1、OSI的來源
OSI(Open System Interconnect),即開放式系統互聯。 一般都叫OSI參考模型,是ISO(國際標準化組織)組織在1985年研究的網絡互連模型。
ISO為了更好的使網絡應用更為普及,推出了OSI參考模型。其含義就是推薦所有公司使用這個規范來控制網絡。這樣所有公司都有相同的規范,就能互聯了。
2、OSI七層模型的劃分
OSI定義了網絡互連的七層框架(物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層),即ISO開放互連系統參考模型。如下圖。
每一層實現各自的功能和協議,并完成與相鄰層的接口通信。OSI的服務定義詳細說明了各層所提供的服務。某一層的服務就是該層及其下各層的一種能力,它通過接口提供給更高一層。各層所提供的服務與這些服務是怎么實現的無關。

3、各層功能定義
這里我們只對OSI各層進行功能上的大概闡述,不詳細深究,因為每一層實際都是一個復雜的層。后面我也會根據個人方向展開部分層的深入學習。這里我們就大概了解一下。我們從最頂層——應用層 開始介紹。整個過程以公司A和公司B的一次商業報價單發送為例子進行講解。
<1> 應用層
OSI參考模型中最靠近用戶的一層,是為計算機用戶提供應用接口,也為用戶直接提供各種網絡服務。我們常見應用層的網絡服務協議有:HTTP,HTTPS,FTP,POP3、SMTP等。
實際公司A的老板就是我們所述的用戶,而他要發送的商業報價單,就是應用層提供的一種網絡服務,當然,老板也可以選擇其他服務,比如說,發一份商業合同,發一份詢價單,等等。
<2> 表示層
表示層提供各種用于應用層數據的編碼和轉換功能,確保一個系統的應用層發送的數據能被另一個系統的應用層識別。如果必要,該層可提供一種標準表示形式,用于將計算機內部的多種數據格式轉換成通信中采用的標準表示形式。數據壓縮和加密也是表示層可提供的轉換功能之一。
由于公司A和公司B是不同國家的公司,他們之間的商定統一用英語作為交流的語言,所以此時表示層(公司的文秘),就是將應用層的傳遞信息轉翻譯成英語。同時為了防止別的公司看到,公司A的人也會對這份報價單做一些加密的處理。這就是表示的作用,將應用層的數據轉換翻譯等。
<3> 會話層
會話層就是負責建立、管理和終止表示層實體之間的通信會話。該層的通信由不同設備中的應用程序之間的服務請求和響應組成。
會話層的同事拿到表示層的同事轉換后資料,(會話層的同事類似公司的外聯部),會話層的同事那里可能會掌握本公司與其他好多公司的聯系方式,這里公司就是實際傳遞過程中的實體。他們要管理本公司與外界好多公司的聯系會話。當接收到表示層的數據后,會話層將會建立并記錄本次會話,他首先要找到公司B的地址信息,然后將整份資料放進信封,并寫上地址和聯系方式。準備將資料寄出。等到確定公司B接收到此份報價單后,此次會話就算結束了,外聯部的同事就會終止此次會話。
<4> 傳輸層
傳輸層建立了主機端到端的鏈接,傳輸層的作用是為上層協議提供端到端的可靠和透明的數據傳輸服務,包括處理差錯控制和流量控制等問題。該層向高層屏蔽了下層數據通信的細節,使高層用戶看到的只是在兩個傳輸實體間的一條主機到主機的、可由用戶控制和設定的、可靠的數據通路。我們通常說的,TCP UDP就是在這一層。端口號既是這里的“端”。
傳輸層就相當于公司中的負責快遞郵件收發的人,公司自己的投遞員,他們負責將上一層的要寄出的資料投遞到快遞公司或郵局。
<5> 網絡層
本層通過IP尋址來建立兩個節點之間的連接,為源端的運輸層送來的分組,選擇合適的路由和交換節點,正確無誤地按照地址傳送給目的端的運輸層。就是通常說的IP層。這一層就是我們經常說的IP協議層。IP協議是Internet的基礎。
網絡層就相當于快遞公司龐大的快遞網絡,全國不同的集散中心,比如說,從深圳發往北京的順豐快遞(陸運為例啊,空運好像直接就飛到北京了),首先要到順豐的深圳集散中心,從深圳集散中心再送到武漢集散中心,從武漢集散中心再寄到北京順義集散中心。這個每個集散中心,就相當于網絡中的一個IP節點。
<6> 數據鏈路層
將比特組合成字節,再將字節組合成幀,使用鏈路層地址 (以太網使用MAC地址)來訪問介質,并進行差錯檢測。
數據鏈路層又分為2個子層:邏輯鏈路控制子層(LLC)和媒體訪問控制子層(MAC)。

MAC子層處理CSMA/CD算法、數據出錯校驗、成幀等;LLC子層定義了一些字段使上次協議能共享數據鏈路層。 在實際使用中,LLC子層并非必需的。這個沒找到合適的例子

<7> 物理層

實際最終信號的傳輸是通過物理層實現的。通過物理介質傳輸比特流。規定了電平、速度和電纜針腳。常用設備有(各種物理設備)集線器、中繼器、調制解調器、網線、雙絞線、同軸電纜。這些都是物理層的傳輸介質。快遞寄送過程中的交通工具,就相當于我們的物理層,例如汽車,火車,飛機,船。

4、通信特點:對等通信
對等通信,為了使數據分組從源傳送到目的地,源端OSI模型的每一層都必須與目的端的對等層進行通信,這種通信方式稱為對等層通信。在每一層通信過程中,使用本層自己協議進行通信。

二、TCP/IP五層模型

TCP/IP五層協議和OSI的七層協議對應關系如下。


在每一層都工作著不同的設備,比如我們常用的交換機就工作在數據鏈路層的,一般的路由器是工作在網絡層的。

在每一層實現的協議也各不同,即每一層的服務也不同.下圖列出了每層主要的協議。其中每層中具體的協議,我會在后面的逐一學習。

總結

以上是生活随笔為你收集整理的京淘-02的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。