主頁 > 後端開發 > 玩轉Redis|學會這10點讓你分分鐘拿下Redis,滿足你的一切疑問

玩轉Redis|學會這10點讓你分分鐘拿下Redis,滿足你的一切疑問

2020-11-15 13:55:04 後端開發

前言

Redis是一個開源的使用ANSI C語言撰寫、支持網路、可基于記憶體亦可持久化的日志型、Key-Value資料庫,并提供多種語言的API,從2010年3月15日起,Reids的開發作業由VMware主持,Redis能運行在大多數POSIX(Linux,*BSD,OS X和Solaris等)系統上,

和普通的Key-Value結構不同,Redis的Key支持靈活的資料結構,除strings,還有hashes、lists、sets和sorted sets等結構,正是這些靈活的資料結構,豐富了Redis的應用場景,能滿足更多業務上的靈活存盤需求,

Redis的資料都保存在記憶體中,而且底層實作上是自己寫了epoll enent loop部分,而沒有采用開源的libevent等通用框架,所以讀寫效率很高,為了實作Redis的持久化,Redis支持定期重繪(可通過配置實作)或寫日志的方式來保存資料到磁盤,

公眾號:「淺羽的IT小屋」

1、Redis的核心概念

「Redis是什么:」

  • MySql/Oracle:是一個關系型的資料庫(關系型的資料庫中存在表以及表與表之間關聯關系

  • Redis:是一個no sql的資料庫--->還是資料庫(非關系型的資料庫)

  • 非關系型的資料庫:簡單來說非關系型的資料庫不像關系型的資料庫那樣存在表以及表之間關聯關系,非關系型的資料庫中只存在鍵值對

  • 非關系型的資料庫中實際上,只有鍵值對形式的存盤,就像Map這種集合一樣,只存在鍵值對

  • Redis實際上就是一個基于鍵值對形式的檔案存盤系統而已

「疑問:」

  • 我們是否掌握Redis之后,就不會使用關系型資料庫(mysql/oracle)呢?

不是的 一般在進行開發的時候 我們一般情況下 都是使用 關系型資料庫和非關系型資料庫進行混用  各取所長 已達到用戶的好的體驗效果
不是全部用Redis也不是全部用mysql
常見的非關系型的資料庫:mogodb

2、Redis能干什么?

「主要用途:」

  • 百度上面的單點登錄(SSO)

  • 商城上面的評論

  • 商城上面的積分

  • 購物車

  • 商城上的快取(主要是指的是:所有用戶公用的資料)

  • 最新最熱商品的計算

  • 訊息佇列的實作

  • ...

3、Redis的特點

「用戶管理命令:」

  • 基于記憶體的(資訊是在記憶體中的 訪問的速度特別快)

  • 資料結構簡單(Key-Value)

  • 支持資料的持久化(能夠將記憶體中的資料同步到硬碟)

4、Redis的安裝

「安裝流程:」

  • 下載地址:http://redis.io/download

安裝步驟:

    1 首先需要安裝gcc,把下載好的redis-3.0.0-rc2.tar.gz 放到linux /usr/local檔案夾下
       yum install gcc

    2 進行解壓 tar -zxvf redis-3.0.0-rc2.tar.gz

    3 進入到redis-3.0.0目錄下,進行編譯 make

    4 進入到src下進行安裝 make install  驗證(ll查看src下的目錄,有redis-server 、redis-cil即可)

    5 建立倆個檔案夾存放redis命令和組態檔

     mkdir -p /usr/local/redis/etc

     mkdir -p /usr/local/redis/bin

    6 把redis-3.0.0下的redis.conf 移動到/usr/local/redis/etc下,
 
      cp redis.conf /usr/local/redis/etc/

    7 把redis-3.0.0/src里的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-dump、redis-cli、redis-server 
     檔案移動到bin下,命令:

     mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin

    8 啟動時并指定組態檔:./redis-server /usr/local/redis/etc/redis.conf(注意要使用后臺啟動,所以修改redis.conf里的      daemonize 改為yes)

    9 驗證啟動是否成功:
ps -ef | grep redis 查看是否有redis服務 或者 查看埠:netstat -tunpl | grep 6379

     進入redis客戶端 ./redis-cli 退出客戶端quit
/exit退出redis服務: 
    (1)pkill redis-server 、
    (2)kill 行程號、
                            
    (3)/usr/local/redis/bin/redis-cli shutdown 

5、Redis中的資料型別以及資料型別的使用場景

「資料型別及使用場景:」

 String

      應用場景是什么?普通的資料快取這種一般就放到這里面  應用場景比較廣   因為他就是一個鍵值對的字串而已

     List(可以重復的)

      應用場景:這個一般用在:博客的關注、博客的評論、博客的積分

     Hash

      應用場景:SSO單點登錄

     Set(無序但是不重復)

      應用場景:這個一般用在和List一樣但是不重復的   

    SetSort

      應用的場景:最新最熱的商品(有序)

6、Redis中的常用命令(資料型別相關)

「常用命令:」

 set key value:    設定值
  
    get key           獲取某一型別的值

    keys *            查看所有的鍵

    
    del key1,key2..    洗掉一個或者多個資料

    rename 原來的key   現在key的名字    從新給鍵命名

    keys *  將當前資料庫里面的所有鍵排列出來


    //在Redis中默認有16個資料庫  資料庫的下標是0-15   默認存盤資料的是會存盤到 0號資料庫里面

    select index    選中某一個資料庫

    keys *         支持模糊查詢

    exists key      判斷當前資料資料庫中是否存在某一個特定的key(注意:不是所有資料庫  而是當前操作的這個資料庫)

    type key       判斷值的型別

    expire key 時間(單位秒鐘)   設定key的過期時間

    ttl key     查看key的過期時間

    persist  key    (把某一個key設定成永久有效)   

    set key value    存盤資料

    mset key value key value  key value    一次性設定多個鍵值對  注意:中間是沒有任何符號的

    mget a1 a2 a3 a4     一次性獲取多個值

    append key1 value    在某一個key對應的值上面追加值

    getset key value     先獲取key對應的值  然后再將后面的值 賦值給key

    mgetset key value key value   ....    同時為多個鍵設定值

    incr key    自增1

    incrby key step    每一次在原來的值上面增加 步長

    decr key    自減1

    decrby key step    每一次在原來的值上面減少 step


  Hash資料型別的方法

    Hset field key value   ---->設定相關的值                      HSet user userToken userInfo

    Hget field key value   ---->獲取設定的值

    hlen field             ---->獲取的是當前hash里面一共的長度

    hmset field key value ...  --->一次性設定多個鍵值對到某一個名字中

    hsetnx field key value...  --->不存在的時候再來創建這個值和用戶

    hkeys *                ---->查看所有的鍵

    hincrby field key      ---->自增

    hexists field          ----->查看是否存在


  List資料型別對應的值

    lpush key value  ----->向里面添加值

    lset key index value --->修改某一個位置的值

    lpop key         ----->彈堆疊(獲取這個值)

    lrem key count value ---->洗掉list集合中的值

    
  Set集合

    sadd key value...   ---->向set集合中添加值

    spop key            ---->獲取set集合添加進去的值

    smove key           ---->洗掉key

    
  SortSet 

     zadd key value score ---->表示的是添加元素到key中  score的意思是排序的位置

     zrange value 范圍(開始-結束) --->表示的是獲取某一范圍內的資料

     zrem value :洗掉某一個值

7、Redis中的資料持久化問題

「持久化方式:」

  • 持久化方式有兩種 rdb aof

  • 持久化:簡單來說就是記憶體和資料寫入到硬碟的程序,就叫資料的持久化

  • 如果是記憶體的資料在斷電的情況下,資料會發生丟失,所以我們的記憶體資料是需要持久化的

「rdb模式:」

  rbd模式(開發一般都不用): 是根據我們的時間片來判斷什么時候資料和硬碟進行同步  也就是說假設在一定的條件下才會將資料進行持久化(需要滿足一定的條件)、rdb模式在使用的時候會首先將記憶體資料寫入到零時檔案 、當這個記憶體的資料寫完成的時候 就會洗掉原來的rdb檔案,重新將零時檔案中的內容寫入到rdb檔案中

    1>:條件要成立才寫(條件:)

    2>:先寫入零時的檔案---->洗掉rdb檔案----->寫入rdb檔案

       因為要將記憶體中的所有資料寫入到零時檔案  相對來說需要更加頻繁的去操作IO

    rdb模式適合備份


   #表示的是在900秒之內有一個key發生改變那么就要和硬碟同步
   save 900 1
   #在300秒時間之內 如果有10個key發生改變那么就要和硬碟同步
   save 300 10
   #在60秒的時間內如果有10000個key發生改變那么就要和硬碟同步
   save 60 10000

「aof模式:」

  aof模式:這種模式是相當于在原來的日志基礎上來進行追加、實際上就相當于是 只是同步 改變了的內容  未改變的內容不用同步

      他不會頻繁的去操作IO

      要使用aof模式:

      appendonly yes

      #只要有一個key發生改變那么立馬和后臺同步  這種模式呢不會丟資料但是  效率不高  一般不推薦
      # appendfsync always
      # 這個表示每秒鐘和硬碟同步一次
      appendfsync everysec
      # 這個和記憶體的緩沖區有關 緩沖區滿了自動同步  沒滿的話那么就只有等
      # appendfsync no

8、Redis的主從復制問題(配置從服務器)

「主從復制:」

 假設現在我有一種策略:這種策略就是 能夠將訪問Redis服務器的請求分成兩類(讀、寫)
 
   然后將讀放到一部分的服務器上、寫這個操作放到另外的一部分的服務器上、這樣就能在3W并發上完成服務器的所有的請求
   
   將服務器上的讀和寫進行分離 又稱為讀寫分離資料庫的主從復制實際上完成的最終的功能就是讀寫分離

   主從復制:實際上指的是  主服務器來實作寫,從服務器來實作讀、所有的請求都經過主服務器來完成

   主從復制的配置實作

「主從復制的步驟:」

 clone服務器之后修改slave的IP地址

    修改組態檔(從服務器的組態檔)  

 vim /usr/local/redis/etc/redis.conf 

    第一步:slaveof 主機地址(eg:119.23.220.148)
 
 bind 0.0.0.0

    第一步下:
     
        #slaveof <masterip> <masterport>
        #改的第二個地方
        slaveof 112.74.49.17 6379

    第二步:masterauth<master-password>(這里可以不用設定)
 
 cd /usr/local/redis/bin/
 
 ./redis-cli

    使用info 查看role角色可以知道主服務或者從服務

9、Redis的哨兵模式

「哨兵模式:」

  • 單點問題:簡單來說就是一臺服務器掛了,所有服務器都不能用了

  • 哨兵模式的出現就是為了解決單點問題的

 哨兵:站崗的

   哨兵模式實際上是個程式、這個程式呢實際上就是用來檢測主服務器的狀態的,一旦主服務器掛了、那么從服務器就會進行投票選舉,按照預先設計的選舉策略,最終選舉出新的主服務器

「哨兵模式的實作:」

  哨兵模式的實作:(哨兵是一個獨立的程式和redis本身的運行是沒有關聯的)

   任意的一臺機器上面去啟動哨兵的程式(從服務器上)

   1>:quit  shutdown 退出redis

   2>:copy sentinel.xml到etc這個檔案下

   3>:修改 sentinel.xml這個檔案  

      dir   -> /usr/local/redis/etc(這個是告訴你路徑)

      sentinel monitor mymaster ip 埠 投票選舉的次數

      sentinel down-after-milliseconds mymaster 5000  多久進行檢測一下主節點活著沒有

   啟動哨兵  就必須跟上 sentinel這個組態檔

   ...server/  ...sentinel.xml --sentinel &

10、Redis的集群模式

「集群搭建流程:」

  1>:你可以找6臺機器來進行安裝

  2>:你可以找一臺機器開6個埠來進行安裝

首先要將redis.conf 復制到我們的etc下
 cp /usr/local/redis-4.0.6/redis.conf /usr/local/redis/etc/

第一步驟:

    mkdir -p /usr/local/redis-cluster   //創建檔案夾

第二步驟

     mkdir 500*    在剛剛創建的這個檔案夾里面創建6臺服務器的 組態檔的檔案夾
 
第三步驟

     把原來的Redis.cnf檔案copy到我們的500*當中去

第四步驟

     修改配置
 
     daemonize yes

     port 500*

     bind 192.168.108.135 改成 0.0.0.0

     dir "/usr/local/redis-cluster/500*/" 最好打上""

     cluster-enabled yes 這個需要打開注釋

     cluster-config-file nodes-500*.conf 這個需要打開注釋

     cluster-node-timeout 5000 這個也需要打開注釋

     appendonly yes


 第五步驟

   安裝ruby的相關工具

   yum install ruby

   yum install rubygems

   gem install redis  (報錯版本低了就執行 安裝rvm到第9步驟....)

   安裝rvm

    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3

    \curl -sSL https://get.rvm.io | bash -s stable

    然后進入cd /usr/local/目錄下看是否多個了rvm
 
    然后進入 /usr/local/rvm/archives

   再進行壓縮檔案的解壓  tar-zxvf rvm-1.29.7.tgz

   3.source /usr/local/rvm/archives/rvm-1.29.7/scripts/rvm 添加一個軟連接 相當于windows創建一個快捷方式,相當于windows添加一個環境變數,找到這個命令的

    4. 查看rvm庫中已知的ruby版本

    rvm list known

    5. 安裝一個ruby版本

    rvm install 2.3.3

    6. 使用一個ruby版本

    rvm use 2.3.3

    7. 設定默認版本

    rvm remove 2.0.0

    8. 卸載一個已知版本

    ruby --version

    9. 再安裝redis就可以了

    gem install redis   
  
    開啟每一個服務器

 去阿里云服務器設定埠,并且服務器重啟下

     ./redis-server /usr/local/redis-cluster/700*/redis.conf

     創建這個集群
 進入cd /usr/local/redis-4.0.6/src/這個目錄中

  ./redis-trib.rb create --replicas 1 120.78.191.34:7001 120.78.191.34:7002 120.78.191.34:7003 120.78.191.34:7004 120.78.191.34:7005 120.78.191.34:7006

redis-cli --cluster create 106.54.13.167:5001 106.54.13.167:5002 106.54.13.167:5003 106.54.13.167:5004 106.54.13.167:5005 106.54.13.167:5006 --cluster-replicas 1

    登錄客戶端實作驗證
  ./redis-cli -c -h 192.168.108.137 -p 5001

 Jedis進行單單機的訪問/連接池下的訪問/訪問集群

   Redis資料庫的訪問是要依賴于Jedis

結語

本篇關于Redis的介紹就先到這里結束了,后續會出更多關于Redis系列更多文章,謝謝大家支持!

如果你覺得淺羽的文章對你有幫助的話,請在微信搜索并關注「 淺羽的IT小屋 」微信公眾號,我會在這里分享一下計算機資訊知識、理論技術、工具資源、軟體介紹、后端開發、面試、作業感想以及一些生活隨想等一系列文章,所見所領,皆是生活,慢慢來,努力一點,你我共同成長...

我建立了一個技術群,如果你想了解到更多關于IT行業的技術以及生活中遇到的問題,歡迎小伙伴進群交流,只需添加我的微信,備注進群即可,期待你們的加入,

往期推薦

吐血推薦|2萬字總結Mac所有應用程式、軟體工具和相關資料


超級詳細|Linux系統下從0到1的玩法大全


簡化開發|Lombok神器帶你消除冗余代碼


異步編程|五分鐘讓你學會區域重繪Ajax技術


全面決議|搞懂Nginx這一篇就夠了


干貨|SpringBoot JMS(ActiveMQ)API實踐應用詳解


徹底了解|利用Apache CXF框架開發WebService


極速上手使用Docker,這篇文章就夠了!


淺羽

留言區

點個贊,證明你還愛我

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

標籤:python

上一篇:虛擬機下CentOS7安裝qBittorrent,掛載群輝虛擬盤,實作掛機下載

下一篇:如何實作一個連接池?一文帶你深入淺出,徹底搞懂!

標籤雲
其他(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