<del id="nnjnj"></del><track id="nnjnj"></track>

<p id="nnjnj"></p>

<address id="nnjnj"></address>

    <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

      <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>

      • 自動秒收錄
      • 軟件:1973
      • 資訊:57811|
      • 收錄網站:279872|

      IT精英團

      Docker 從入門到實戰 未雨綢繆收藏~

      Docker 從入門到實戰 未雨綢繆收藏~

      瀏覽次數:
      評論次數:
      編輯: 景同
      信息來源: ITPUB
      更新日期: 2022-05-19 21:43:23
      摘要

      一、概述1.1基本概念Docker是一個開源的應用容器引擎,基于Go語言并遵從Apache2.0協議開源。Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中

      • 正文開始
      • 相關閱讀
      • 推薦作品

      一、概述

      1.1 基本概念

      Docker是一個開源的應用容器引擎,基于Go語言,按照Apache2.0協議開源。

      Docker允許開發人員將他們的應用程序和依賴包打包到一個輕量級的可移植容器中,然后將它們發布到任何流行的Linux機器上。也可以虛擬化。

      容器完全使用沙盒機制,它們之間不會有接口(類似iPhone應用)。更重要的是,容器的性能開銷極低。

      1.2 優勢

      簡化程序: Docker允許開發者將自己的應用和依賴包打包到一個可移植的容器中,然后發布到任何流行的Linux機器上,這樣就可以實現虛擬化。Docker改變了虛擬化的方式,開發者可以直接把自己的成果放入Docker進行管理。方便是Docker最大的優勢。在過去,需要幾天甚至幾周的任務,隨著碼頭集裝箱的處理,只需要幾秒鐘就可以完成。節省開支:一方面,隨著云計算時代的到來,開發者不必為了追求結果而配置昂貴的硬件。Docker改變了高性能必然是高價格的思維定勢。Docker和云的結合,讓云托管得到更充分的利用。它不僅解決了硬件管理的問題,而且改變了虛擬化的方式。

      1.3 與傳統VM特性對比:

      作為一種輕量級的虛擬化方法,Docker在運行應用程序時比傳統的虛擬機方法具有明顯的優勢:

      Docker容器速度很快,幾秒鐘就能實現啟停,比傳統的虛擬機方式快很多。

      Docker容器需要的系統資源很少,數千個Docker容器可以同時在一臺主機上運行。

      Docker通過類似Git的操作方便用戶獲取、分發和更新應用映像,指令簡潔,學習成本低。

      Docker通過Dockerfile配置文件支持靈活的自動創建和部署機制,提高工作效率。

      Docker容器不僅運行其中的應用程序,而且基本不消耗額外的系統資源,保證了應用程序的性能,最小化了系統開銷。

      Docker在Linux系統上使用多種保護機制,實現嚴格可靠的隔離。從1.3版本開始,Docker引入了安全選項和鏡像簽名機制,大大提高了使用Docker的安全性。

      特點

      容器

      虛擬計算機

      啟動速度

      分鐘級別

      使用硬盤

      一般MB

      通常是GB

      表演

      接近本土

      比本地人弱

      系統支持

      在一臺機器上支持數千個容器

      一般幾十個。

      1.4 基礎架構

      Docker采用客戶機-服務器(C/S)架構模式,使用遠程API管理和創建Docker容器。Docker容器是由Docker鏡像創建的。容器和鏡像之間的關系類似于面向對象編程中的對象和類。容器

      目標

      鏡像

      種類

      1.5 Docker 技術的基礎:

      命名空間,容器隔離的基礎,保證容器A看不到容器b,有6個命名空間:User、Mnt、Network、UTS、IPC、Pid

      容器資源的分組、統計和隔離。主要的cgroups子系統:cpu,blkio,設備,冰箱,內存

      Unionfs,典型:aufs/overlayfs,通過分層鏡像實現。

      基礎

      1.6 Docker 組件

      • docker Client客戶端 -->向docker服務器進程發起請求,如:創建、停止、銷毀容器等操作
      • docker Server服務器進程 -->處理所有docker的請求,管理所有容器
      • docker Registry鏡像倉庫 -->鏡像存放的中央倉庫,可看作是存放二進制的scm

      二、安裝部署

      2.1 準備條件

      目前,CentOS 僅發行版本中的內核支持 Docker。Docker 運行在 CentOS 7 上,要求系統為64位、系統內核版本為 3.10 以上。Docker 運行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統為64位、系統內核版本2.6.32-431 或者更高版本。

      2.2 安裝 Docker

      yum install docker -y          #安裝systemctl start docker         #啟動systemctl enable docker        #設置開機自啟動

      2.3 基本命令

      docker search centos   #搜索鏡像

      默認從國外拉去,速度很慢,可以使用daocloud配置加速

      curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d6f11267.m.daocloud.io腳本是寫入echo "{\"registry-mirrors\": [\"http://d6f11267.m.daocloud.io\"]}"> /etc/docker/daemon.jsonsystemctl restart docker              #重啟失效

      根據需求拉取鏡像:

      docker pull docker.io/ansible/centos7-ansible

      拉去search到的全部鏡像:

      for i in `docker search centos|awk '!/NAME/{print $2}'`;do docker pull $i;done

      查看本地鏡像:

      docker images

      2.4 命令整理

      容器操作:

      docker create # 創建一個容器但是不啟動它docker run # 創建并啟動一個容器docker stop # 停止容器運行,發送信號SIGTERMdocker start # 啟動一個停止狀態的容器docker restart # 重啟一個容器docker rm # 刪除一個容器docker kill # 發送信號給容器,默認SIGKILLdocker attach # 連接(進入)到一個正在運行的容器docker wait # 阻塞一個容器,直到容器停止運行

      獲取容器信息

      docker ps # 顯示狀態為運行(Up)的容器docker ps -a # 顯示所有容器,包括運行中(Up)的和退出的(Exited)docker inspect # 深入容器內部獲取容器所有信息docker logs # 查看容器的日志(stdout/stderr)docker events # 得到docker服務器的實時的事件docker port # 顯示容器的端口映射docker top # 顯示容器的進程信息docker diff # 顯示容器文件系統的前后變化

      導出容器:

      docker exec # 在容器里執行一個命令,可以執行bash進入交互式

      執行:

      docker exec # 在容器里執行一個命令,可以執行bash進入交互式

      2.5 簡單實踐操作

      運行并進入容器操作:

      docker run -i -t docker.io/1832990/centos6.5  /bin/bash
      • -t 表示在新容器內指定一個偽終端或終端;
      • -i 表示允許我們對容器內的 (STDIN) 進行交互;
      • -d 表示將容器在后臺運行;
      • /bin/bash 。這將在容器內啟動 bash shell;

      所以當容器(container)啟動之后,我們會獲取到一個命令提示符:

      在容器內我們安裝MySQL并設置開機自啟動,將修改后的鏡像提交:

      docker ps -l 查詢容器IDdocker commit -m "功能" -a "用戶信息" ID tag 提交修改后的鏡像


      docker inspect ID 查看詳細信息docker push ID 上傳docker鏡像
      利用DockerFile創建鏡像
      使用命令 docker build , 需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建鏡像。
      mkdir DockerFilecd DockerFilecat > Dockerfile <<EOFFROM 603dd3515fccMAINTAINER Docker xuelRUN yum install mysql mysql-server -yRUN mddir /etc/sysconfig/networkRUN /etc/init.d/mysqld startEOF
      docker build -t "centos6.8:mysqld" .
      • -t 制定repository 與tag

      • . 指定Dockerfile的路徑

      注意一個鏡像不能超過 127 層
      此外,還可以利用 ADD 命令復制本地文件到鏡像;
      用 EXPOSE 命令來向外部開放端口;
      用 CMD 命令來描述容器啟動后運行的程序等。
      CMD [“/usr/sbin/apachectl”, “-D”, “FOREGROUND”]

      2.6 Dockerfile 詳解

      Dockerfile的指令是忽略大小寫的,建議使用大寫,使用 # 作為注釋,每一行只支持一條指令,每條指令可以攜帶多個參數。Dockerfile的指令根據作用可以分為兩種,構建指令和設置指令。構建指令:用于構建 image,其指定的操作不會在運行image的容器上執行;設置指令:用于設置 image 的屬性,其指定的操作將在運行image的容器中執行。
      • FROM(指定基礎image)

      構建指令,必須指定且需要在 Dockerfile 其他指令的前面。后續的指令都依賴于該指令指定的image。FROM 指令指定的基礎 image 可以是官方遠程倉庫中的,也可以位于本地倉庫。

      該指令有兩種格式:

      FROM <image>       #指定基礎image為該image的最后修改的版本FROM <image>:<tag> #指定基礎image為該image的一個tag版本。
      • MAINTAINER(用來指定鏡像創建者信息)

      構建指令,用于將image的制作者相關的信息寫入到image中。當我們對該image執行docker inspect命令時,輸出中有相應的字段記錄該信息。
      MAINTAINER <name>
      • RUN(安裝軟件用)
      構建指令,RUN可以運行任何被基礎image支持的命令。如基礎image選擇了ubuntu,那么軟件管理部分只能使用ubuntu的命令。
      RUN <command> (the command is run in a shell - `/bin/sh -c`)RUN ["executable", "param1", "param2" ... ]  (exec form)
      • CMD(設置container啟動時執行的操作)
      設置指令,用于container啟動時指定的操作。該操作可以是執行自定義腳本,也可以是執行系統命令。該指令只能在文件中存在一次,如果有多個,則只執行最后一條。
      CMD ["executable","param1","param2"] (like an exec, this is the preferred form)CMD command param1 param2 (as a shell)

      ENTRYPOINT 指定的是一個可執行的腳本或者程序的路徑,該指定的腳本或者程序將會以 param1 和param2作為參數執行。

      所以如果CMD指令使用上面的形式,那么Dockerfile中必須要有配套的ENTRYPOINT。當Dockerfile指定了ENTRYPOINT,那么使用下面的格式:
      CMD ["param1","param2"] (as default parameters to ENTRYPOINT)
      • ENTRYPOINT(設置container啟動時執行的操作)

      設置指令,指定容器啟動時執行的命令,可以多次設置,但是只有最后一個有效。

      ENTRYPOINT ["executable", "param1", "param2"] (like an exec, the preferred form)ENTRYPOINT command param1 param2 (as a shell)

      該指令的使用分為兩種情況,一種是獨自使用,另一種和CMD指令配合使用。

      當獨自使用時,如果你還使用了CMD命令且CMD是一個完整的可執行的命令,那么CMD指令和ENTRYPOINT會互相覆蓋只有最后一個CMD或者ENTRYPOINT有效。
      # CMD指令將不會被執行,只有ENTRYPOINT指令被執行CMD echo “Hello, World!”ENTRYPOINT ls -l
      另一種用法和CMD指令配合使用來指定ENTRYPOINT的默認參數,這時CMD指令不是一個完整的可執行命令,僅僅是參數部分;ENTRYPOINT指令只能使用JSON方式指定執行命令,而不能指定參數。
      FROM ubuntuCMD ["-l"]ENTRYPOINT ["/usr/bin/ls"]
      • USER(設置container容器的用戶)

      設置指令,設置啟動容器的用戶,默認是root用戶


      # 指定memcached的運行用戶ENTRYPOINT ["memcached"]USER daemonENTRYPOINT ["memcached", "-u", "daemon"]
      • EXPOSE(指定容器需要映射到宿主機器的端口)
      設置指令,該指令會將容器中的端口映射成宿主機器中的某個端口。當你需要訪問容器的時候,可以不是用容器的IP地址而是使用宿主機器的IP地址和映射后的端口。要完成整個操作需要兩個步驟,首先在Dockerfile使用EXPOSE設置需要映射的容器端口,然后在運行容器的時候指定-p選項加上EXPOSE設置的端口,這樣EXPOSE設置的端口號會被隨機映射成宿主機器中的一個端口號。也可以指定需要映射到宿主機器的那個端口,這時要確保宿主機器上的端口號沒有被使用。EXPOSE指令可以一次設置多個端口號,相應的運行容器的時候,可以配套的多次使用-p選項。
      # 映射一個端口EXPOSE port1# 相應的運行容器使用的命令  (主機(宿主)端口:容器端口)docker run -p port1 image
      # 映射多個端口EXPOSE port1 port2 port3# 相應的運行容器使用的命令docker run -p port1 -p port2 -p port3 image# 還可以指定需要映射到宿主機器上的某個端口號docker run -p host_port1:port1 -p host_port2:port2 -p host_port3:port3 image
      端口映射是 Docker 比較重要的一個功能,原因在于我們每次運行容器的時候容器的IP地址不能指定而是在橋接網卡的地址范圍內隨機生成的。宿主機器的IP地址是固定的,我們可以將容器的端口的映射到宿主機器上的一個端口,免去每次訪問容器中的某個服務時都要查看容器的IP的地址。對于一個運行的容器,可以使用docker port加上容器中需要映射的端口和容器的ID來查看該端口號在宿主機器上的映射端口。
      • ENV(用于設置環境變量)

      構建指令,在image中設置一個環境變量。

        ENV <key> <value>
        設置了后,后續的RUN命令都可以使用,container啟動后,可以通過docker inspect查看這個環境變量,也可以通過在docker run —env key=value時設置或修改環境變量。假如你安裝了JAVA程序,需要設置JAVA_HOME,那么可以在Dockerfile中這樣寫:
        ENV JAVA_HOME /path/to/java/dirent
        • ADD(從src復制文件到container的dest路徑)
        構建指令,所有拷貝到container中的文件和文件夾權限為0755,uid和gid為0;

        如果是一個目錄,那么會將該目錄下的所有文件添加到container中,不包括目錄;如果文件是可識別的壓縮格式,則docker會幫忙解壓縮(注意壓縮格式);

        如果<src>是文件且<dest>中不使用斜杠結束,則會將<dest>視為文件,<src>的內容會寫入<dest>;

        如果<src>是文件且<dest>中使用斜杠結束,則會<src>文件拷貝到<dest>目錄下。
        ADD <src> <dest>

        是相對被構建的源目錄的相對路徑,可以是文件或目錄的路徑,也可以是一個遠程的文件url;

        是container中的絕對路徑

        • VOLUME(指定掛載點)

        設置指令,使容器中的一個目錄具有持久化存儲數據的功能,該目錄可以被容器本身使用,也可以共享給其他容器使用。

        我們知道容器使用的是AUFS,這種文件系統不能持久化數據,當容器關閉后,所有的更改都會丟失。當容器中的應用有持久化數據的需求時可以在Dockerfile中使用該指令。

        FROM baseVOLUME ["/tmp/data"]
        • WORKDIR(切換目錄)

        設置指令,可以多次切換(相當于cd命令),對RUN,CMD,ENTRYPOINT生效。

        # 在 /p1/p2 下執行 vim a.txtWORKDIR /p1 WORKDIR p2 RUN vim a.txt

        2.7 鏡像導入導出

        導出鏡像到本地:

          docker save -o centos6.5.tar centos6.5 或docker export f9c99092063c >centos6.5.tar

          從本地將鏡像導入:

            docker load --input centos6.5.tar 或docker load < centos6.5.tar

            docker rm刪除已經終止的容器docker -f rm 可以刪除正在運行的容器

            修改已經運行的后臺容器:

              docker exec -it CONTAINER ID /bin/bash

              三、存儲

              3.1 數據盤

              Docker 的鏡像使用一層一層文件組成的,Docker 的一些存儲引擎可以處理怎么樣存儲這些文件。

                docker inspect centos #查看容器詳細信息

                信息下方的Layers,就是centos的文件,這些東西都是只讀的不能去修改,我們基于這個鏡像去創建的鏡像和容器也會共享這些文件層,而docker會在這些層上面去添加一個可讀寫的文件層。

                如果需要修改一些文件層里面的東西的話,docker會復制一份到這個可讀寫的文件層里面,如果刪除容器的話,那么也會刪除它對應的可讀寫的文件層的文件。

                如果有些數據你想一直保存的話,比如:web服務器上面的日志,數據庫管理系統里面的數據,那么我們可以把這些數據放到data volumes數據盤里面。

                它上面的數據,即使把容器刪掉,也還是會永久保留。創建容器的時候,我們可以去指定數據盤。其實就是去指定一個特定的目錄。

                  docker run -i -t -v /mnt  --name nginx docker.io/nginx /bin/bash
                  • -v:制定掛載到容器內的目錄

                  使用docker inspect容器ID可以查看掛載目錄對應于宿主機的物理文件路徑。

                  同樣,我們可以使用將制定物理宿主機的目錄掛載到容器的制定目錄下:

                  將宿主機目錄掛載到容器內:

                    docker run -d -p 80:80 --name nginx -v /webdata/wordpress:/usr/share/nginx/html docker.io/sergeyzh/centos6-nginx
                    • -d 后臺運行

                    • —name 給運行的容器命名

                    • -v 宿主機目錄:容器目錄 將宿主機目錄掛載在容器內

                    • -p 宿主機端口:容器監聽端口 將容器內應用監聽端口映射到物理宿主機的特定端口上

                    映射多個物理目錄:(多寫幾個-v即可)

                    3.2 數據容器

                    可以創建一個數據容器,也就是再創建容器是指定這個容器的數據盤,然后讓其他容器可以使用這個容器作為他們的數據盤,有點像繼承了這個數據容器指定的數據盤作為數據盤。

                    首先創建一個數據容器命名為newnginx

                      docker create -v /mnt -it --name newnginx docker.io/nginx /bin/bash

                      利用此數據容器容器運行一個容器nginx1,在數據目錄/mnt 下創建一個文件

                        docker run --volumes-from newnginx --name nginx1 -it docker.io/nginx /bin/bash
                        利用數據容器在創建一個容器nginx2,查看數據目錄下容器nginx1創建的文件依舊存在,同理在nginx2的/mnt下創建文件,其他基于數據容器運行的新容器也可以看到文件

                        3.3 數據盤管理

                        在刪除容器時,docker默認不會刪除其數據盤。

                        docker volume ls                    #查看數據盤docker volume ls -f dangling=true        #查看未被容器使用的數據盤docker volume rm VOLUME NAME        #刪除數據盤

                        如果想要刪除容器時,同時刪除掉其數據盤,那么可以使用-v參數。

                          docker rm -v newnginx

                          四、網絡

                          docker提供幾種網絡,它決定容器之間和外界和容器之間如何去相互通信。

                            docker network ls        #查看網絡
                            當 Docker 進程啟動時,會在主機上創建一個名為 docker0 的虛擬網橋,此主機上啟動的Docker容器會連接到這個虛擬網橋上。

                            虛擬網橋的工作方式和物理交換機類似,這樣主機上的所有容器就通過交換機連在了一個二層網絡中。從docker0子網中分配一個IP給容器使用,并設置docker0的IP地址為容器的默認網關。

                            在主機上創建一對虛擬網卡veth pair設備,Docker將veth pair設備的一端放在新創建的容器中,并命名為eth0(容器的網卡),另一端放在主機中,以vethxxx這樣類似的名字命名,并將這個網絡設備加入到docker0網橋中。

                            4.1 bridge橋接

                            網絡除非創建容器的時候指定網絡,不然容器就會默認的使用橋接網絡。屬于這個網絡的容器之間可以相互通信,不過外界想要訪問到這個網絡的容器呢,需使用橋接網絡,有點像主機和容器之間的一座橋,對容器有一點隔離作用。

                            實際是在iptables做了DNAT規則,實現端口轉發功能??梢允褂胕ptables -t nat -vnL查看。

                            4.2 host 主機網絡

                            如果啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨立的Network Namespace,而是和宿主機共用一個 Network Namespace。容器將不會虛擬出自己的網卡,配置自己的IP等,而是使用宿主機的IP和端口。

                            但是,容器的其他方面,如文件系統、進程列表等還是和宿主機隔離的。只用這種網絡的容器會使用主機的網絡,這種網絡對外界是完全開放的,能夠訪問到主機,就能訪問到容器。

                            4.3 使用 none 模式

                            使用none模式Docker容器擁有自己的Network Namespace,但是,并不為Docker容器進行任何網絡配置。也就是說,這個Docker容器沒有網卡、IP、路由等信息。需要我們自己為Docker容器添加網卡、配置IP等。使用此種網絡的容器會完全隔離。

                            4.4 簡單演示

                            啟動兩個容器,查看其容器內部IP地址

                              for i in `docker ps |grep -v "CONTAINER"|awk '{print $1}'`;do docker inspect $i|grep 'IPAddress';done

                              查看橋接模式下主機內部容器之間和容器與宿主機直接均可正常通訊

                                docker inspect 容器ID

                                查看host創建的容器內部沒有IP地址,它使用的為宿主機的地址:

                                  docker run -d --net host docker.io/sergeyzh/centos6-nginx

                                  查看 host 創建的容器內部沒有 IP 地址,它使用的為宿主機的地址:
                                    docker run -d --net none docker.io/sergeyzh/centos6-nginx

                                    4.5 容器端口

                                    如果想讓外界可以訪問到,基于bridge網絡創建的容器提供的服務,那你可以告訴Docker 你要使用哪些接口。如果想查看鏡像會使用哪些端口,ExposedPorts,可以獲悉鏡像使用哪些端口。

                                      docker run -d -p 80 docker.io/sergeyzh/centos6-nginxdocker port 09648b2ff7f6
                                      • -p 參數會在宿主機隨機映射一個高端口到容器內的指定端口。

                                        docker run -d -p 80:80 docker.io/sergeyzh/centos6-nginx    #將宿主機的80端口映射到容器的80端口

                                        原文

                                        標簽:容器 指令 宿主
                                        MySQL查詢語句的準備階段是什么?
                                        ? 上一篇 2022-05-19
                                        系統數據治理的思考與實踐
                                        下一篇 ? 2022-05-19
                                        • 如何在Ubuntu中保留文件系統并備份當前開發板鏡像
                                          0閱讀 0條評論 個贊
                                          在Ubuntu保留文件系統或者說備份當前開發板鏡像的需求在不斷增加。比如Ubuntu文件系統需要安裝庫文件的話直接使用apt-get工具就可以下載,但由于需要下載的核心板較多,比較費時間,這時需要將安……
                                        • 國產核心板全志T507助力消防系統升級
                                          0閱讀 0條評論 個贊
                                          9月16日下午,位于湖南長沙市區內的中國電信大樓發生火災,建筑高度218米,現場濃煙滾滾,數十層樓體燃燒劇烈。消防救援人員趕到現場后很快將火勢控制住,目前大樓火勢已被撲滅,所幸未發現人員傷亡。湖南電信……
                                        • 教大家如何處理Spring Boot易流中的用戶和群體!
                                          0閱讀 0條評論 個贊
                                          1.準備工作2.用戶操作2.1添加用戶2.2修改用戶2.3刪除用戶2.4查詢用戶3.組操作3.1添加組3.2修改組3.3刪除組3.4查詢組4.查看表詳情雖然說我們在實際開發中,……
                                        • 從PG15開始WAL壓縮優化
                                          0閱讀 0條評論 個贊
                                          PG15傳聞中的超級令人激動的功能大多數跳票了,年初我也寫過一個關于PG15新功能跳票的文章。PG15BETA已經發出幾個月了,似乎PG15里令人激動人心的功能不多,不過從長長的新功能列表里,……
                                        • 深入了解美團葉子發射器開源方案
                                          0閱讀 0條評論 個贊
                                          大家好,我是樹哥。之前我們有聊過「如何設計一個分布式ID發號器」,其中有講過4種解決方案,分別是:UUID類雪花算法數據庫自增主鍵Redis原子自增美團以第2、3種解決方案為基礎,開發出……
                                        發表評論 共有條評論
                                        用戶名: 密碼:
                                        驗證碼: 匿名發表
                                        • SQL Server批量完整備份
                                          0閱讀 0條評論 個贊
                                          一.本文所涉及的內容(Contents)本文所涉及的內容(Contents)背景(Contexts)實現代碼(SQLCodes)實現方式一(One)實現方式二(Two)實現方式三(Three)參考文……
                                        • 如何使用helm優雅地安裝prometheus-operator并監控k8s集群微服務
                                          0閱讀 0條評論 個贊
                                          前言:隨著云原生概念盛行,對于容器、服務、節點以及集群的監控變得越來越重要。Prometheus作為Kubernetes監控的事實標準,有著強大的功能和良好的生態。但是它不支持分布式,不支持數據……
                                        • :自古以來 特工程序就是兵家必敗之地
                                          0閱讀 0條評論 個贊
                                          正向代理的血案前幾天打算使用golang做一個代理程序,golang標準庫net/http/httputil已經提供了這樣的能力。一把梭之后發現必然返回403Forbidden,我直接在targe……
                                        • Java接口自動測試框架系列(1)自動測試框架
                                          0閱讀 0條評論 個贊
                                          一、什么是自動化測試自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程。通常,在設計了測試用例并通過評審之后,由測試人員根據測試用例一步步執行測試,得到實際結果與期望結果的比較。為了節省人力、……
                                        • Oracle服務器遷移的一些經驗
                                          3閱讀 0條評論 個贊
                                          前言通過此文章來分享一下Oracle服務器遷移過程中的一些經驗,希望對大家有些許幫助。本文旨在幫助更多的同學,會提及一些基本命令或技巧,但不贅述,后續有機會再進一步分享各個細節。背景之前因機房遷移……
                                        • [設計模式] Java設計模式-工廠模式
                                          3閱讀 0條評論 個贊
                                          目錄【設計模式】Java設計模式-工廠模式簡介1、普通工廠(SimpleFactory)模式①、定義類②、定義簡單的工廠類③、實例2、抽象工廠(AbstractFactory)模式①、定義類②、……
                                        • 數據庫發展史II-數據倉庫
                                          6閱讀 0條評論 個贊
                                          回顧數據倉庫的發展歷程,大致可以將其分為幾個階段:萌芽探索到全企業集成時代、企業數據集成時代、混亂時代--"數據倉庫之父"間的論戰、理論模型確認時代以及數據倉庫產品百家爭鳴時代。數據倉庫理論發展歷程上……
                                        • SQL Server數據庫性能優化
                                          0閱讀 0條評論 個贊
                                          分析比較執行時間計劃讀取情況1.查看執行時間和cpusetstatisticstimeonselect*fromBus_DevHistoryDatasetstatisticstime……
                                        • 【云原生】-碼頭工人容器遷移神諭到關系型數據庫
                                          0閱讀 0條評論 個贊
                                          文章目錄前言??1.創建專用網絡??2.Oracle12C部署?2.1鏡像下載?2.2容器創建?2.3創建業務用戶?2.4監聽啟動??3.MySQL8部署?3.1容器……
                                        • 大促銷活動如何抵御高流量DDoS攻擊?
                                          0閱讀 0條評論 個贊
                                          大促活動如何抵御大流量DDoS攻擊?每一次活動大促帶來的迅猛流量,對技術人而言都是一次嚴峻考驗。如果在活動期間遭受黑產惡意DDoS攻擊,無疑是雪上加霜。電商的特性是業務常態下通常不會遭受大流量DD……
                                        • Python自學教程7:字典類型有什么用
                                          0閱讀 0條評論 個贊
                                          字典是Python中的一個重要操作,如果字典玩得順,很多其他的數據類型就可以一通百通。Python字典的定義字典使用一對大括號進行定義,鍵值對之間使用逗號隔開,鍵和值使用冒號分隔。鍵必須是不可變類型,……
                                        • SQL Server操作系統的任務調度機制
                                          0閱讀 0條評論 個贊
                                          簡介SQLServerOS是在Windows之上,用于服務SQLServer的一個用戶級別的操作系統層次。它將操作系統部分的功能從整個SQLServer引擎中抽象出來,單獨形成一層,以便為存……
                                        • 公司排班系統遇到瓶頸?我自己造一個!
                                          10閱讀 0條評論 個贊
                                          本期名人堂我們有幸邀請到了白鯨開源的聯合創始人代立冬先生。代立冬先生與我們分享了自己社區開源的經歷,詳細介紹了一個開源項目是如何加入Apache孵化器,如何在導師的輔導下慢慢孵化、成長的過程,以及自己……
                                        • SQL Server備份和還原攻略
                                          0閱讀 0條評論 個贊
                                          一、知識點完全備份:備份全部選中的文件夾,并不依賴文件的存檔屬性來確定備份那些文件。(在備份過程中,任何現有的標記都被清除,每個文件都被標記為已備份,換言之,清除存檔屬性)。完全備份也叫完整備份。差異……
                                        • 關于這個能見度的例子 網上95%的文章都是錯的!
                                          0閱讀 0條評論 個贊
                                          你好,我是坤哥上周我在查閱資料時無意中搜到一篇解釋volatile用法的博文,這篇博文排得很靠前,不過很遺憾,雖然結論是對的,但分析過程完全錯誤,而且我發現網上很多文章都用這個例子來解釋vola……
                                        • 國產超級大腦———rk 3568核心板!
                                          13閱讀 0條評論 個贊
                                          從1956年麥卡錫首次提出“人工智能(AI)”的概念至今,人工智能已有66年的歷史,而人工智能真正的崛起卻是在最近的10年。隨著消費電子行業的快速發展和激烈競爭,人工智能再度流行起來,盡管許多企業對A……
                                        • Python系列入門(四)別傻了 別糊涂了:鏈表、元組、字典、集合的區別
                                          0閱讀 0條評論 個贊
                                          總結分析列表、元組、字典、集合的相同與區別之處,只有徹底分清之后,就會在應用的時候,得心應手。四句話總結列表是一個有序且可更改的集合,允許重復成員。元組是一個有序且不可更改的集合,允許重復成員。集合是……
                                        • 訂單超時案例的RabbitMQ實現
                                          0閱讀 0條評論 個贊
                                          前言#人間清醒目錄前言業務場景JUC(DelayQueue)方案DelayQueue簡介JUCDelayQueue實現訂單超時案例代碼案例代碼RedisKey過期事件方案簡介RabbitKey……
                                        • 談談我是如何學習SQL Server的
                                          0閱讀 0條評論 個贊
                                          談談我是如何學習SQLServer的相信很多人都想做大牛,但是你們知道這些大牛是怎樣煉成的嗎?我的一個同事做了差不多10年的.NET開發,算得上是大牛了吧?如果他遇到他熟悉的項目很快就能手到拿來,立……
                                        • 碼頭工人日常工作的常用命令
                                          0閱讀 0條評論 個贊
                                          容器生命周期管理Docker創建新容器并運行[run]語法:dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]OPTIONS說明:-astdin:指定標準輸入……
                                        最近發布資訊
                                        更多
                                        警花高潮嗷嗷叫
                                        <del id="nnjnj"></del><track id="nnjnj"></track>

                                        <p id="nnjnj"></p>

                                        <address id="nnjnj"></address>

                                          <pre id="nnjnj"><pre id="nnjnj"></pre></pre>

                                            <noframes id="nnjnj"><ruby id="nnjnj"><ruby id="nnjnj"></ruby></ruby>