Docker容器硬盤熱擴容-centos6

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

前面已介紹了docker很多知識點的操作記錄,今天這里梳理下docker容器空間擴展的操作。默認情況下,docker容器的空間是10G。在實際生產環境下,對docker容器進行熱擴容(動態擴容)是非常重要的一個需求。

Docker容器動態擴展的優點:
1)不需要修改docker配置,不需要重啟docker服務;
2)可以直接對運行中的容器進行動態擴展(只能增,無法縮);Docker容器動態擴展的條件:
1)docker所在宿主機分區的格式必須是ext2、ext3、ext4;
2)docker存儲引擎必須是devicemapper
---------------------------------------------------------------------------------------------------------------------------
這里需要說明一下我在實際操作中遇到的問題:
以下Docker容器動態擴容的操作步驟,我在centos7上操作是不可行的!
xfs是CentOS7的默認文件系統類型,可以在centos7系統安裝時手動指定所在分區為ext4格式。但即使這樣,創建容器后,發現容器的/分區仍然是xfs格式!
就是說centos7下宿主機分區已改為ext4,但容器還是xfs。這就導致后面的容器擴展失敗!(使用resize2fs或xfs_growfs都不行)
具體原因不明

?

下面的操作均是在centos6下操作的:

?

宿主機分區的格式是ext4
[root@localhost ~]# df -hT
Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/sda3      ext4   193G  103G   80G  57% /
tmpfs          tmpfs   32G     0   32G   0% /dev/shm
/dev/sda1      ext4   194M   79M  106M  43% /boot
/dev/sda2      ext4   721G  136G  549G  20% /home1)下載私有倉庫里的鏡像(centos6和centos7下的docker命令和配置還是有所不同的)
[root@localhost ~]# vim /etc/sysconfig/docker
......
other_args='--insecure-registry=192.168.1.23:5000'
.....[root@localhost ~]# service docker restart
Stopping docker:                                           [  OK  ]
Starting docker:                                           [  OK  ][root@localhost ~]# docker pull 192.168.1.23:5000/tomcat7
latest: Pulling from 192.168.1.23:5000/tomcat7
3690474eb5b4: Pull complete
0a444b299d5a: Pull complete
a04895de1996: Pull complete
08e1d80f2b80: Pull complete
fa7cc393f68b: Pull complete
Digest: sha256:b28f263bb8d5de3c93d64e85a5e9ee5cd6a1042f45ecbb951888d897d99e14e2
Status: Downloaded newer image for 192.168.1.23:5000/tomcat7:latest[root@localhost ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
192.168.1.23:5000/tomcat7   latest              fa7cc393f68b        2 weeks ago         562.3 MB2)創建容器
[root@localhost ~]# docker run -ti -d --name my-test -p 8998:8080 192.168.1.23:5000/tomcat7 /bin/bash
813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3[root@localhost ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                    NAMES
813389572d7f        192.168.1.23:5000/tomcat7   "/bin/bash"         29 seconds ago      Up 28 seconds       0.0.0.0:8998->8080/tcp   my-test[root@localhost ~]# docker exec -ti my-test /bin/bash
[root@813389572d7f /]# df -HT
Filesystem                                                                                      Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 ext4    9.9G  703M  8.7G   8% /
tmpfs                                                                                           tmpfs   34G     0   34G   0% /dev
shm                                                                                             tmpfs   68M     0   68M   0% /dev/shm
/dev/sda3                                                                                       ext4   207G  111G   86G  57% /etc/hosts注意
容器my-test的大小為默認的10G。
上面命令結果中的/dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3文件就是my-test容器存儲的文件名。3)--------------下面開始進行容器空間的動態擴容------------------使用dmsetup查看該文件扇區信息.下面命令結果中的第二個數字(即20971520)是設備的大小,表示有多少個 512-bytes 的扇區. 這個值略高于 10GB 的大小。
[root@localhost ~]# dmsetup table /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3
0 20971520 thin 253:0 13計算20G所需扇區數目
[root@localhost ~]# echo $((20*1024*1024*1024/512))
41943040精簡快照目標的一個神奇的特點是它不會限制卷的大小。當創建它的時候,一個精簡的卷使用0個塊,當開始往塊里面寫入的時候,它們會從共用的塊池中進行分配。
可以寫0個塊,或者是10億個塊,這個和精簡快照目標沒關系。文件系統的大小只和Device Mapper表有關系。
只需要裝載一個新的表,這個完全和之前的是一樣的,但是有更多的扇區。僅此而已。將新的扇區大小寫入,注意只是改變舊表中的第二個數字20971520的數字,其他數字不變!
[root@localhost ~]# echo 0 41943040 thin 253:0 13 | dmsetup load /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3將修改后的容器存儲文件激活
[root@localhost ~]# dmsetup resume /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3重新查看文件信息
[root@localhost ~]# dmsetup table /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3
0 41943040 thin 253:0 13更改文件系統大小,使變更生。
[root@localhost ~]# resize2fs /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 is mounted on /var/lib/docker/devicemapper/mnt/813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 to 5242880 (4k) blocks.
The filesystem on /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 is now 5242880 blocks long.------------------------------------------------------------------------------------------------------------------
如果這一步出現下面報錯:
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: 設備或資源忙 當嘗試打開 /dev/mapper/docker-253:0-268868570-2163383f446357876b301fb3942b706436b5eea111c06a3acba0006ec5272372 時找不到有效的文件系統超級塊.原因是resize2fs僅能支持ext2、ext3、ext4,不支持xfs。將docker服務器的文件系統格式調整為ext4即可。
本文操作機是centos6系統,分區都是ext4格式,故不會出現這個報錯
------------------------------------------------------------------------------------------------------------再次登錄my-test容器,發現容器大小已經更新為20G!
[root@localhost ~]# docker exec -ti my-test /bin/bash
[root@813389572d7f /]# df -hT
Filesystem                                                                                      Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 ext4    20G  708M   18G   4% /
tmpfs                                                                                           tmpfs   32G     0   32G   0% /dev
shm                                                                                             tmpfs   64M     0   64M   0% /dev/shm
/dev/sda3                                                                                       ext4   193G  103G   80G  57% /etc/hosts------------------------------------------------------------
擴容后可能出現的問題:停止該容器后,無法重新啟動-
當容器擴容之后,由于dm認為設備塊大小仍然為之前設置的初始大小,所以會發生無法起啟動的情況,這時只要重新操作即可。
1)必須要先啟動一下,讓其生成dm文件才能修改
[root@localhost ~]# docker start my-test
#此時會報錯,不要理會,執行以下操作即可
[root@localhost ~]# echo 0 41943040 thin 253:3 725 | dmsetup load /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3
[root@localhost ~]# dmsetup resume /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3
---------------

?

為了方便后續容器動態擴容,可以采用下面的Dynamic_Modify_Docker_Disk.sh腳本(經測試可以使用)

#!/bin/bash
#This script is dynamic modify docker container disk
#Author Deng Lei
if [ -z $1 ] || [ -z $2 ]; thenecho "Usage: container_name increase_capacity"echo "Example: I want increase 11G to test"echo "The command is:   sh `basename $0` test 11"exit 1fi
if [ `docker inspect $1 &>>/dev/null &&  echo 0 || echo 1` -eq 1 ];thenecho "The container $1 is no exist!"exit 1
fi
container_id=`docker inspect -f '{{ .Id }}' $1`
now_disk=`dmsetup table /dev/mapper/docker-*-$container_id|awk '{print $2}'`
disk=$(($2*1024*1024*1024/512))
if [ $disk -lt $now_disk ];thenecho "I can't shink container $1 from $(($now_disk*512/1024/1024/1024))G to ${2}G!I only modify contanier increase disk!"exit 1
fi
dmsetup table /dev/mapper/docker-*-$container_id|sed "s/0 [0-9]* thin/0 $disk thin/"|dmsetup load /dev/mapper/docker-*-$container_id
dmsetup resume /dev/mapper/docker-*-$container_id
resize2fs /dev/mapper/docker-*-$container_id
if [ $? -eq 0 ];thenecho "dynamic container $1 disk to ${2}G is success!"
elseecho "dynamic container $1 disk to ${2}G is fail!"
fi
比如給my-test容器動態擴容到30G[root@localhost ~]# chmod 755 Dynamic_Modify_Docker_Disk.sh
[root@localhost ~]# sh Dynamic_Modify_Docker_Disk.sh my-test 30
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 is mounted on /var/lib/docker/devicemapper/mnt/813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 2
Performing an on-line resize of /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 to 7864320 (4k) blocks.
The filesystem on /dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 is now 7864320 blocks long.dynamic container my-test disk to 30G is success!登陸容器查看,已擴容至30G!
[root@localhost ~]# docker exec -ti my-test /bin/bash
[root@813389572d7f /]# df -hT
Filesystem                                                                                      Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-8:3-4850707-813389572d7f569e7b3705070033b43cf9e42ed9d304e03662c92533838ddec3 ext4    30G  708M   28G   3% /
tmpfs                                                                                           tmpfs   32G     0   32G   0% /dev
shm                                                                                             tmpfs   64M     0   64M   0% /dev/shm
/dev/sda3
動態擴容后,對容器進行重啟,會發生報錯,此時再運行一次該腳本進行重新擴容(空間大小要等于或大于之前的設置,出現報錯不用管),再啟動容器即可(注意:docker容器目前是無法進行動態縮減的,僅能進行增加操作)。 --------------------------------------- 下面說下Docker鏡像和容器存放目錄修改方法------------------------------------------這里為了測試效果,將xfs格式的home分區盤卸載,格式化為ext4后重新掛載(當然也可以再用之前的xfs格式)。然后將Docker的鏡像、容器存放目錄由之前默認的/var/lib/docker修改為home分區下的路徑。
(當然,也可以另外新建一個分區,格式化,然后直接掛載到/var/lib/docker目錄下)
[root@localhost ~]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs       150G  5.7G  145G    4% /
devtmpfs                devtmpfs   32G     0   32G    0% /dev
tmpfs                   tmpfs      32G     0   32G    0% /dev/shm
tmpfs                   tmpfs      32G  474M   31G    2% /run
tmpfs                   tmpfs      32G     0   32G    0% /sys/fs/cgroup
/dev/mapper/centos-home xfs          774G   33M  774G    1% /home
/dev/sda2               xfs       397M  120M  278M   31% /boot
tmpfs                   tmpfs     6.3G     0  6.3G    0% /run/user/0[root@localhost ~]# umount /home/         //卸載home分區盤
[root@localhost ~]# mkfs.ext4 /dev/mapper/centos-home        //格式化home盤為ext4文件格式
[root@localhost ~]# mount /dev/mapper/centos-home /home      //重新掛載
[root@localhost ~]# df -hT
文件系統                類型      容量  已用  可用 已用% 掛載點
/dev/mapper/centos-root xfs       150G  5.7G  145G    4% /
devtmpfs                devtmpfs   32G     0   32G    0% /dev
tmpfs                   tmpfs      32G     0   32G    0% /dev/shm
tmpfs                   tmpfs      32G  474M   31G    2% /run
tmpfs                   tmpfs      32G     0   32G    0% /sys/fs/cgroup
/dev/sda2               xfs       397M  120M  278M   31% /boot
tmpfs                   tmpfs     6.3G     0  6.3G    0% /run/user/0
/dev/mapper/centos-home ext4      762G   73M  723G    1% /home接著就可以移動Docker的數據到ext4格式的home磁盤上了:
先停止docker服務,保證移動的時候數據完整
[root@localhost ~]# service docker stop移動Docker的目錄到一個備份的目錄(可以mv改目錄名,docker重啟后會自動生成這個目錄;也可以將目錄下內容全部拷貝到別處,屆時要想恢復docker數據,只需要將備份內容拷貝回來,然后重啟docker服務即可)
[root@localhost ~]# mv /var/lib/docker /var/lib/docker_bak    //這樣,再次啟動docker服務后,鏡像及容器數據都不在了。只有將拷貝內容移回來,數據才會恢復。修改開啟自掛載配置,將home分區由之前的xfs改為ext4.
[root@localhost ~]# cat /etc/fstab#
# /etc/fstab
# Created by anaconda on Wed Oct 19 15:16:20 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                        xfs      defaults        0 0
UUID=349c9816-43e9-4c46-991a-e34e2370ab3f /boot  xfs      defaults        0 0
/dev/mapper/centos-home /home                    ext4     defaults        0 0
/dev/mapper/centos-swap swap                     swap     defaults        0 0[root@localhost ~]# mount -a    //這條命令是重新加載/etc/fstab文件,沒有文件里定義的分區掛載沒有掛,這條命令就會自動掛載上。
[root@localhost ~]# mount |grep home
/dev/mapper/centos-home on /home type ext4 (rw,relatime,seclabel,data=ordered)最后修改docker的鏡像和容器存放路徑,比如修改為/home/var/docker。
[root@localhost ~]# mkdir -p /home/var/docker
[root@localhost ~]# vim /etc/sysconfig/docker
......
OPTIONS='--selinux-enabled --log-driver=journald --graph=/home/var/docker'    //添加--graph=/home/var/docker參數然后啟動docker服務,發現在新指定的目錄/home/var/docker下產生了新數據
[root@localhost ~]# service docker start
[root@localhost ~]# ls /home/var/docker/
containers  devicemapper  image  network  tmp  trust  volumes接著恢復之前的鏡像數據
[root@localhost ~]# service docker stop
[root@localhost ~]# rm -rf /home/var/docker/*
[root@localhost ~]# mv /var/lib/docker_bak/* /home/var/docker/
[root@localhost ~]# service docker start
[root@localhost ~]# docker images         //發現鏡像數據已恢復到新目錄/home/var/docker下了
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
192.168.1.23:5000/tomcat7      latest              47c5123914a1        8 days ago          562.3 MB
docker.io/redis                latest              83d6014ac5c8        13 days ago         183.6 MB
docker.io/ubuntu               latest              0ef2e08ed3fa        5 weeks ago         130 MB
docker.io/centos               latest              67591570dd29        3 months ago        191.8 MB
docker.io/tomcat               latest              ebb17717bed4        5 months ago        355.4 MB

----------------------------------------------------溫馨提示------------------------------------------------

1)無法卸載分區
[root@localhost ~]# umount /home/
umount: /home: device is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))如上,卸載分區時提示無法卸載,則是有進程占用/home。
可以使用下面命令來終止占用進程:
[root@localhost ~]# fuser -m -k /home
/home: 1409 1519ce 1531e 1532e 1533e 1534e 1535e 1536e 1537e 1538e 1539e 1541e 1543e 1544e 1545e 1546e 1547e 1548e 1549e 1550e 1601m再次卸載home分區就成功了。
[root@localhost ~]# umount /home/-k 表示自動把霸占home分區的進程kill掉!
如果你不是很明確是否要殺死所有霸占設備的程序,還可以加一個-i 參數,這樣每殺死一個程序前,都會詢問!(即fuser -m -v -i -k /home)2)如按照上面步驟,將docker的存放目錄更換到/home/var/docker下。
如果后續再對home分區進行強制卸載,然后再重新掛載或格式化的時候,會發現有報錯:
[root@localhost ~]# fuser -m -k /home
[root@localhost ~]# mkfs.xfs -f /dev/mapper/centos-home
mkfs.xfs: /dev/mapper/centos-home contains a mounted filesystem
[root@localhost ~]# mount/dev/mapper/centos-home
mount: /dev/mapper/centos-home is already mounted or /home busy這是因為docker數據還占用著home分區,需要將docker服務停了才可以。

轉自:https://www.cnblogs.com/kevingrace/p/6667063.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449409.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449409.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449409.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[個人網站搭建]·Django增加評論功能(Python3)

[個人網站搭建]Django增加評論功能 個人主頁--> https://xiaosongshine.github.io/ 個人網站搭建github地址:https://github.com/xiaosongshine/djangoWebs 安裝django插件 pip install django-contrib-comments配置settings.py INSTALLED_APP(#...,django_com…

【轉載文章】記錄一次MySQL兩千萬數據的大表優化解決過程,提供三種解決方案...

問題概述 使用阿里云rds for MySQL數據庫(就是MySQL5.6版本),有個用戶上網記錄表6個月的數據量近2000萬,保留最近一年的數據量達到4000萬,查詢速度極慢,日常卡死。嚴重影響業務。 問題前提:老系…

50期權趨勢賣方

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import time import numpy as np from copy import * import pandas as pd #設定持倉細節數據表 #g.df = {}g.df = pd.DataFrame(columns = [date,code,price,volume,stoploss,iv]) print(type(g.…

一周工作60個小時并不值得驕傲,這是個問題!

本文由 極客范 - yesky 翻譯自 Jeff Archibald。歡迎加入極客翻譯小組,同我們一道翻譯與分享。轉載請參見文章末尾處的要求。當我們聲稱自己在這周,上周或是上個月超負荷地工作了多少時間時,一種自豪感便會油然而生。 我之所以這么說是因為…

Linux查看文件大小的幾種方法

轉自:https://blog.csdn.net/xiongyangg/article/details/54809810 stat命令stat filepathxanarryThinkPad:/$ stat ~/Downloads/jdk-8u60-linux-x64.tar.gzFile: /home/xanarry/Downloads/jdk-8u60-linux-x64.tar.gzSize: 181238643 Blocks: 353984 IO B…

2019.03.27【GDOI2019】模擬 T3

題目大意 給出$n$, $p$, 求有多少長度為$n$的排列可以被分成三個上升子序列, 數量對$p$取模, 數據范圍 $3 \leq n \leq 500$. 思路 首先讓我們考慮如果有一個排列,如何判斷這個排列合法,我可以考慮貪心,維護三個上升序列的末尾(最大值),從左到右依次將數插入序列,把這個數貪心的…

DOM的那些事

到底調用函數時要不要加()? 在html中,onclick后必須接字符串調用,而在js中則必須接函數進行調用。 addEventListener和click區別 onclick只是一個屬性,且是唯一的。其只能綁定一個事件,容易在不…

真格量化-隱含波動率購買

# coding:utf-8 #!/usr/bin/env python from PoboAPI import * import datetime import numpy as np #50ETF 和 50ETF期權的對沖交易,當ETF隱含波動率較高時就買50ETF并做空50ETF看漲期權#開始時間,用于初始化一些參數 def OnStart(context) :print("system starting...…

能讓你成為更優秀程序員的10個C語言資源

本文由 伯樂在線 - archychu 翻譯自 mycplus。歡迎加入 技術翻譯小組。轉載請參見文章末尾處的要求。一些人覺得編程無聊,一些人覺得它很好玩。但每個程序員都必須緊跟編程語言的潮流。大多數程序員都是從C開始學習編程的,因為C是用來寫操作系統、應用程…

解決 -- 代碼沒有問題時接口報錯:Status Code: 404 Not Found

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 我能確定這個工程的接口代碼肯定沒有問題,這時請求接口依舊報 404。 如: 經過多方檢查 最終確認問題原因&…

滲透測試學習

滲透學習路線:https://www.sec-wiki.com/skill/2 經常應該瀏覽的網站:www.freebuf.comdrops.wooyun.orgwww.sec-wiki.com/www.t00ls.net/www.91ri.orghttp://fex.baidu.com/blog/2014/05/what-happen/了解了web訪問網頁的基本過程http://www.qianxingzhe…

java版開源工作流引擎ccflow從表數據數據源導入設置

為什么80%的碼農都做不了架構師?>>> 關鍵字馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow .net開源工作流 從表數據導入設置 概要說明在從表的使用中我一般都會用到從數據庫引入一些數據到表單中,這時候就需要有一個功能能夠查詢…

真格量化——中性策略交易期權

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import time import numpy as np from copy import *import pandas as pd #設定持倉細節數據表 #g.df = {}g.df = pd.DataFrame(columns = [date,code,price,volume,stoploss,iv]) g.a = [] g.b =…

一周消息樹:程序員想找好工作?那就學好Linux!

摘要:從一小眾化的系統發展到今天在國際上支撐著絕大部分公司的重量級系統,Liunx現在被越來越多的公司重視。而Linux人才卻沒有跟上,為此,MongoDB公司的副總裁Matt Asay給軟件開發者們一個建議:要學好Linux。 近期&…

注解@Cacheable(value =“XXX“) 實現緩存 -- 失效原因

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 一個項目中使用到了注解緩存,但無論怎么檢查都不生效,反復確認緩存的使用本身應該沒有出錯。 最后確認原因&…

讀書筆記011:《傷寒論》- 手厥陰心包經

手厥陰心主起胸,屬包下膈三焦宮,支者循胸出脅下,脅下連腋三寸同。仍上抵腋循臑內,太陰、少陰兩經中,指透中沖支者別,小指次指絡相通。此經少氣原多血,是動則病手心熱,肘臂攣急腋下腫…

真格量化——做空波動率賣期權策略

# coding:utf-8 #!/usr/bin/env python # EmuCounter2 from PoboAPI import * import datetime import numpy as np#開始時間,用于初始化一些參數 def OnStart(context) :print "system starting..."#設定全局變量品種g.code1 = "m1901-C-3300.DCE" #豆粕…

支撐4.5億活躍用戶的WhatsApp架構概覽

摘要:不顧谷歌CEO阻攔,WhatsApp最終以190億美元的價格花落Facebook。能獲如此天價與其月4.5億的活躍用戶是分不開的,同樣不可或缺的還有支撐每日數百億消息的高可靠架構。 【編者按】以190億美元的價格出售給Facebook,交易談判過…

C++ 常用函數總結

平時常用C刷一些算法題&#xff0c;C內置了許多好用的工具函數&#xff0c;但時間一長總是容易忘記&#xff0c;這里簡單做一下總結&#xff0c;方便復習&#xff01; <stdlib.h> atoi(const char* str)將一串字符轉換為int型atof(const char* str)同上&#xff0c;轉換為…

注解驅動的 Spring cache 緩存介紹

概述 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Spring 3.1 引入了激動人心的基于注釋&#xff08;annotation&#xff09;的緩存&#xff08;cache&#xff09;技術&#xff0c;…