<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                > # OSS 和 CDN - OSS 作為源站,CDN 提供加速 * **OSS**:核心是“存儲”,解決數據可靠保存問題。 * **CDN**:核心是“加速”,解決訪問速度和高并發問題。 * **搭配使用**:用 OSS 存儲資源,通過 CDN 提供快速分發和訪問,是現代應用常見的最佳實踐。 > # mysqldump 導出數據 - 用 Navicat 導出表結構和數據(每一行數據是一條insert語句) ![](https://img.kancloud.cn/05/ac/05ac7132bfe0ddf4e8c0cec6e549f435_1319x814.png) - 使用 mysqldump 導出數據 (一次性insert多條數據的value) - mysqldump -u root -p mydatabase mytable > mytable_dump.sql ![](https://img.kancloud.cn/0a/1f/0a1f1df50276be0b8093081b2e14c23b_1258x905.png) - 用命令行導入數據(Navicat 導入可能會報錯): mysql -u root -p mydatabase < mytable_dump.sql > # mysql報錯 - Too many connections: 數據庫的同時連接數超出了服務器允許的最大值 - show variables like 'max_connections'; - Invalid connection:連接可能因為空閑超時或網絡問題失效。 - show variables like '%wait_timeout%'; - **Lost connection to MySQL server during query** - Lost connection to MySQL server during query: 查詢時間過長,或服務器的 `wait_timeout` 或 `interactive_timeout` 太短 - Lock wait timeout exceeded; try restarting transaction - Deadlock found when trying to get lock; try restarting transaction > # 正無窮大,負無窮大,無效數字 ~~~ package main import ( "fmt" "math" ) func main() { num1 := math.Inf(1) //正無窮大 num2 := math.Inf(-1) //負無窮大 num3 := math.NaN() //無效數字 fmt.Println(num1, num2, num3) fmt.Println(math.Inf(1) == math.Inf(1)) //true fmt.Println(math.Inf(-1) == math.Inf(-1)) //true fmt.Println(math.NaN() == math.NaN()) //false } ~~~ > # gzip - 服務端代碼 - 二進制的壓縮率比較低 - 對重復數據,壓縮率極高 (日常接口返回的json數據可以壓縮5倍,8倍) ~~~ package main import ( "bytes" "compress/gzip" "encoding/json" "fmt" "math/rand" "net/http" "strings" "time" ) // 模擬大數據結構 type LargeData struct { ID int `json:"id"` Name string `json:"name"` Content string `json:"content"` } // 生成大數據 func generateRandomString(length int) string { const charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" seededRand := rand.New(rand.NewSource(time.Now().UnixNano())) builder := strings.Builder{} builder.Grow(length) for i := 0; i < length; i++ { builder.WriteByte(charset[seededRand.Intn(len(charset))]) } return builder.String() } // generateLargeData generates a slice of LargeData with unique and random content func generateLargeData() []LargeData { var data []LargeData uniqueNames := make(map[string]bool) for i := 0; i < 1000; i++ { // Generate a unique name var name string for { name = fmt.Sprintf("Item-%s", generateRandomString(10)) if !uniqueNames[name] { uniqueNames[name] = true break } } data = append(data, LargeData{ ID: i, Name: name, Content: generateRandomString(250), // Random content of 250 characters }) } return data } // 壓縮數據為 Gzip 格式 func compressGzip(data []byte) ([]byte, error) { var buf bytes.Buffer gz := gzip.NewWriter(&buf) _, err := gz.Write(data) if err != nil { return nil, err } gz.Close() return buf.Bytes(), nil } // HTTP 處理函數 func handler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Access-Control-Allow-Origin", "*") // 允許所有來源 w.Header().Set("Access-Control-Allow-Methods", "GET, OPTIONS") // 允許的 HTTP 方法 w.Header().Set("Access-Control-Allow-Headers", "Content-Encoding") // 允許的自定義頭 // 生成大數據 data := generateLargeData() // 序列化為 JSON jsonData, err := json.Marshal(data) if err != nil { http.Error(w, "Error generating data", http.StatusInternalServerError) return } // 檢查客戶端是否支持 Gzip acceptEncoding := r.Header.Get("Accept-Encoding") if strings.Contains(acceptEncoding, "gzip") { // 壓縮數據 compressedData, err := compressGzip(jsonData) if err != nil { http.Error(w, "Error compressing data", http.StatusInternalServerError) return } // 設置響應頭 w.Header().Set("Content-Encoding", "gzip") w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Length", fmt.Sprintf("%d", len(compressedData))) fmt.Println(len(jsonData)) fmt.Println(len(compressedData)) // 寫入壓縮數據 w.Write(compressedData) } else { // 客戶端不支持 Gzip,直接返回未壓縮數據 w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Length", fmt.Sprintf("%d", len(jsonData))) // 寫入未壓縮數據 w.Write(jsonData) } } func main() { // 注冊路由 http.HandleFunc("/data", handler) // 啟動 HTTP 服務器 fmt.Println("Starting server on :8080") http.ListenAndServe(":8080", nil) } ~~~ - 客戶端代碼 ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Fetch Gzip Data</title> </head> <body> <h1>Fetch Gzip-compressed Data</h1> <button id="fetchDataButton">Fetch Data</button> <pre id="result"></pre> <script> document.getElementById('fetchDataButton').addEventListener('click', async () => { try { // 發起 GET 請求 const response = await fetch('http://localhost:8080/data', { method: 'GET', headers: { 'Accept-Encoding': 'gzip', // 告訴服務端客戶端支持 Gzip } }); if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } // 解析 JSON 數據 const data = await response.json(); // 顯示返回的數據 document.getElementById('result').textContent = JSON.stringify(data, null, 2); } catch (error) { console.error('Error fetching data:', error); document.getElementById('result').textContent = `Error: ${error.message}`; } }); </script> </body> </html> ~~~ 榮幸能夠成為公司的一員,以后請大家多多
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看