『壹』 上海各大學mem對比 哪個便宜一點
上海各院校MEM(工程管理碩士)學費:
上海交通大學14萬
同濟大學15萬
上海財經大學8.8
華東理工大學11.8萬
東華大學9.8
上海大學7.8萬
上海理工大學7.8萬
上海海事大學6.8萬
上海電力學院2.5-3萬 想要了解更多有關MEM信息,可以到社科賽斯考研咨詢一下。公司課程內容介紹
mba/MEM/MPA/emba/MPAcc等管理類聯考專碩面試輔導和筆試輔導,線下面授課+同步錄播網課
面試輔導內容:考生背景評估,幫助擇校;一對一材料修改,亮點提升;面試專業課輔導;一對多真實模擬面試。面試輔導班型有:私密直通車班、鑽石直通車班、VIP精品
直通車班、面試直通車班、面試精品班。
『貳』 MFC在靜態文本上使用雙緩沖畫圖
void CRussia::DrawJiemian(CDC *pDC)//畫界面
{
int nOldDC=pDC->SaveDC();
//背景
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(cBkgound);
//畫分數、級別、速度
DrawScore(&memDC);//已實現
CDC memDC1;
memDC1.CreateCompatibleDC(pDC);
memDC1.SelectObject(cBlock);
//畫方塊
//m_RowCount,m_ColCount為格子行列數
//Russia[][]是存儲方塊的數組,為1表示當前位置有方塊
for(int i=0;i<m_RowCount;i++)
for(int j=0;j<m_ColCount;j++)
if(Russia[i][j]==1)
memDC.BitBlt(j*20+300,i*20+100,20,20,&memDC1,0,0,SRCCOPY);
//預覽方塊
//Will[4][4]是下一個方塊的數組,為1表示當前位置有方塊
for(int n=0;n<4;n++)
for(int m=0;m<4;m++)
if(Will[n][m]==1)
memDC.BitBlt(542+m*20,115+n*20,20,20,&memDC1,0,0,SRCCOPY);
pDC->BitBlt(0,0,800,600,&memDC,0,0,SRCCOPY);
pDC->RestoreDC(nOldDC);
}
『叄』 如何查看memchaed緩存的信息
Linux下看內存和CPU使用率一般都用top命令,但是實際在用的時候,用top查看出來的內存佔用率都非常高,如:
Mem: 4086496k total, 4034428k used, 52068k free, 112620k buffers
Swap: 4192956k total, 799952k used, 3393004k free, 1831700k cached
接近98.7%,而實際上的應用程序佔用的內存往往並沒這么多,
PID
USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
25801 sybase 15 0 2648m 806m 805m S 1.0 20.2 27:56.96
dataserver
12084 oracle 16 0 1294m 741m 719m S 0.0 18.6 0:13.50
oracle
27576 xugy 25 0 986m 210m 1040 S 1.0 5.3 28:51.24 cti
25587 yaoyang 17 0 1206m 162m 3792 S 0.0 4.1 9:21.14 java
仔細看top關於內存的顯示輸出,有兩個數據buffers和cached,在Linux系統下的buffer指的是磁碟寫緩存,而cache則指的是磁碟讀緩存。
(A buffer is something that has yet to be "written" to disk.
A cache is something that has been "read" from the disk and stored for later use.)
而這兩塊是為了提高系統效率而分配的內存,在內存富餘的時候,操作系統將空閑內存利用起來,而有內存需求時,系統會釋放這部分的內存供應用程序使用。
這樣,真正應用程序可用的內存就是free+buffer+cache,上面的例子就是:
52068k + 112620k + 1831700k = 1996388k
而已用內存則是used-buffer-cache,上面的例子為:
4034428k - 112620k - 1831700k = 2090108k
Linux下查看內存還有一個更方便的命令,free:
$ free
total used free shared buffers cached
Mem: 4086496 4034044 52452 0 112756 1831564
-/+ buffers/cache: 2089724 1996772
Swap: 4192956 799952 3393004
Mem:這列就是用top命令看到的內存使用情況,而-/+buffers/cache這列就是剛剛做的計算結果,used-buffer-cache/free+buffer+cache
也可以加-m或者-g參數查看按MB或者GB換算的結果。
$ free -m
total used free shared buffers cached
Mem: 3990 3906 83 0 90 1786
-/+ buffers/cache: 2029 1961
Swap: 4094 781 3312
這樣,真正應用程序的內存使用量就可以得出來了,上面的例子中內存佔用率為51.1%
『肆』 php memcache怎麼緩存頁面
$mem = new Memcache; $mem -> connect('localhost', 11211); $key="mysum"; $sum = $mem->get($key); if(empty($sum)) { include_once("connect.php"); $stmt = $pdo -> prepare("select * from pic8 where toid=? order by ptime "); $stm
『伍』 關於apache的緩存
B伺服器,但其豐富的功能對於一個新手來說往往不知道從何下手。我個人感覺Apache的設計充分體現了模塊化設計的優勢,通過在動態模塊載入(DSO)模式下的安裝,任何子應用模塊都可以通過配置文件的簡單修改進行積木式的靈活配置。安裝的過程可以從簡單的靜態html服務開始,一個模塊一個模塊的學習使用。從單純的HTML靜態服務(core),到復雜的動態頁面服務(core + php, core + resin, core + php + mod_gzip, core + resin + mod_expire)。
本文主要從簡化安裝==>性能調優==>維護方便的角度,介紹了WEB服務的規劃、HTTPD安裝/應用模塊配置、升級/維護等過程。讓Apache和PHP,Resin等應用模塊的獨立升級,完全互不影響。
WEB應用容量規劃:根據硬體配置和WEB應用的特點進行WEB服務的規劃及一些簡單的估算公式;
Apache安裝過程:apache的通用的簡化安裝選項,方便以後的應用的模塊化配置;
修改 HARD_SERVER_LIMIT:
vi /path/to/apache_src/src/include/httpd.h
#define HARD_SERVER_LIMIT 2560 <===將原來的 HARD_SERVER_LIMIT 256 後面加個「0」
apache編譯:
./configure --prefix=/home/apache --enable-shared=max --enable-mole=most
可選應用模塊/工具的安裝:php resin mod_gzip mod_expire及各個模塊之間的配合;
mod_php安裝:./configure --with-apxs=/home/apache/bin/apxs --enable-track-vars --with-mysql
mod_resin安裝:./configure --with-apxs=/home/apache/bin/apxs
mod_gzip安裝:修改Makefile中的 apxs路徑:然後make make install
工具:日誌輪循工具cronolog安裝:
升級/維護:看看通用和模塊化的安裝過程如何簡化了日常的升級/維護工作;
按照以上的方法:系統管理員和應用管理員的職責可以清楚的分開,互相獨立。
系統安裝:系統管理員的職責就是安裝好一台DSO模式的Apache,然後COLON即可,
應用安裝:由應用管理員負責具體應用所需要的模塊,比如PHP Resin等,並設置httpd.conf中相關的配置。
系統升級:系統管理員:升級操作系統/升級Apache
應用升級:應用管理員:升級應用模塊,PHP Resin等。
WEB應用的容量規劃
Apache主要是一個內存消耗型的服務應用,我個人總結的經驗公式:
apache_max_process_with_good_perfermance < (total_hardware_memory / apache_memory_per_process ) * 2
apache_max_process = apache_max_process_with_good_perfermance * 1.5
為什麼會有一個apache_max_process_with_good_perfermance和apache_max_process呢?原因是在低負載下系統可以使用更多的內存用於文件系統的緩存,從而進一步提高單個請求的響應速度。在高負載下,系統的單個請求響應速度會慢不少,而超過 apache_max_process,系統會因為開始使用硬碟做虛擬內存交換空間而導致系統效率急劇下降。此外,同樣的服務:2G內存的機器的 apache_max_process一般只設置到1G內存的1.7倍,因為Apache本身會因為進程過多導致性能下降。
『陸』 如何設置Apache伺服器的緩沖區大小
你說的是緩存大小吧
Apache的緩存方式有兩種,一種是基於硬碟文件的緩存,由mod_disk_cache實現,另一種是使用內存緩存,由mod_mem_cache實現,不過它們都是依賴mod_cache模塊的,mod_cache模塊提供了一些緩存配置的指令供它們使用,而mod_file_cache模塊是搭配mod_mem_cache模塊使用的,下面分別進行介紹。
1、基於硬碟文件的緩存
基於硬碟文件存儲的緩存由mod_disk_cache模塊實現,先看個簡單的配置例子:
<IfMolemod_cache.c>
CacheDefaultExpire86400
<IfMolemod_disk_cache.c>
CacheEnabledisk/
CacheRoot/tmp/apacheCache
CacheDirLevels5
CacheDirLength4
CacheMaxFileSize1048576
CacheMinFileSize10
</IfMole>
</IfMole>
把上面的配置加到Apache的httpd.conf文件中,如果緩存相關的模塊都已經編譯進了Apache的核心,則無需載入模塊,直接就能使用上面的指令。指令的詳細說明如下:
CacheDefaultExpire:設定緩存過期的時間(秒),默認是1小時,只有當緩存的文檔沒有設置過期時間或最後修改時間時這個指令才會生效
CacheEnable:啟用緩存,第1個參數是緩存類弄,這里當然是disk了,第2個參數是緩存路徑,指的是url路徑,這里是緩存所有的東西,直接寫上「/」即可,如「/docs」則只緩存/docs下的所有文件
CacheRoot:緩存文件所在的目錄,運行Apache的用戶(如daemon或nobody)要能對其進行讀寫,如果不清楚的話可以直接設置成777,請手動建立該目錄並設置好訪問許可權
CacheDirLevels:緩存目錄的深度,默認是3,這里設置為5
CacheDirLength:緩存目錄名的字元長度,默認是4,這里設置為5
CacheMaxFileSize和CacheMaxFileSize:緩存文件的最大值和最小值(byte),當超過這個范圍時將不再緩存,這里設置為1M和10bytes
基於硬碟文件存儲的文件基本上就這些內容,設置好後重啟Apache應該就能使用了。一切正常的話,可以在緩存目錄下看到Apache自動建立的一些目錄和緩存的數據文件。
2、基於內存的緩存
基於內存的緩存主要由mod_mem_cache模塊實現,還是看個簡單的配置吧,這樣比較直觀:-)
<IfMolemod_cache.c>
<IfMolemod_mem_cache.c>
CacheEnablemem/
MCacheMaxObjectCount20000
MCacheMaxObjectSize1048576
MCacheMaxStreamingBuffer65536
MCacheMinObjectSize10
MCacheRemovalAlgorithmGDSF
MCacheSize131072
</IfMole>
</IfMole>
簡單說一下上面一些指令的意思:
CacheEnable:啟用緩存,使用基於內存的方式存儲
MCacheMaxObjectCount:在內存中最多能存儲緩存對象的個數,默認是1009,這里設置為20000
MCacheMaxObjectSize:單個緩存對象最大為1M,默認是10000bytes
MCacheMaxStreamingBuffer:在緩沖區最多能夠放置多少的將要被緩存對象的尺寸,這里設置為65536,該值通常小於100000或MCacheMaxObjectSize設置的值
MCacheMinObjectSize:單個緩存對象最小為10bytes,默認為1bytes
MCacheRemovalAlgorithm:清除緩存所使用的演算法,默認是GDSF,還有一個是LRU,可以查一下Apache的官方文檔,上面有些介紹
MCacheSize:緩存數據最多能使用的內存,單位是kb,默認是100kb,這里設置為128M
保存重啟Apache基於內存的緩存系統應該就能生效了,根據需要可以使基於內存的存儲或硬碟文件的存儲方式一起使用,只要指明不同的URL路徑即可。
3、注意事項
使用緩存需要注意如下事項:
要使用緩存,必須使用指令CacheEnable啟用它,目前可用的緩存類型為disk或mem,禁止緩存可以使用CacheDisable,如CacheDisable/private
待緩存的URL返回的狀態值必須為:200、203、300、301或410
URL的請求方式必須是GET方式
發送請求時,頭部中包含「Authorization:」的字元串時,返回的內容將不會被緩存
URL包含查詢字元串,如問號?後的那些東西,除非返回的內容包含「Expires:」,否則不會被緩存
如果返回的狀態值是200,則返回的頭部信息必須包含以下的一種才會被緩存:Etag、Last-Modified、Expires,除非設置了指令CacheIgnoreNoLastModOn
如果返回內容的頭部信息「Cache-Control:」中包含「private」,除非設置了指令CacheStorePrivateOn,否則不會被緩存
如果返回內容的頭部信息「Cache-Control:」中包含「no-sotre」,除非設置了指令CacheStoreNoStoreOn,否則不會被緩存
如果返回內容的頭部信息「Vary:」中包含了「*」,不會被緩存
『柒』 CC攻擊的防禦辦法
對於CC攻擊,其防禦必須採用多種方法,而這些方法本質上也是在提高伺服器的並發能力。
1、伺服器垂直擴展和水平擴容
資金允許的情況下,這是最簡單的一種方法,本質上講,這個方法並不是針對CC攻擊的,而是提升服務本身處理並發的能力,但確實提升了對CC攻擊的承載能力。垂直擴展:是指增加每台伺服器的硬體能力,如升級CPU、增加內存、升級SSD固態硬碟等。水平擴容:是指通過增加提供服務的伺服器來提升承載力。上述擴展和擴容可以在服務的各個層級進行,包括:應用伺服器、資料庫伺服器和緩存伺服器等等。
2、數據緩存
對於服務中具備高度共性,多用戶可重用,或單用戶多次可重用的數據,一旦從資料庫中檢索出,或通過計算得出後,最好將其放在緩存中,後續請求均可直接從緩存中取得數據,減輕資料庫的檢索壓力和應用伺服器的計算壓力,並且能夠快速返回結果並釋放進程,從而也能緩解伺服器的內存壓力。要注意的是,緩存不要使用文件形式,可以使用redis、mem-cached等基於內存的nosql緩存服務,並且與應用伺服器分離,單獨部署在區域網內。區域網內的網路IO肯定比起磁碟IO要高。為了不使區域網成為瓶頸,千兆網路也是有必要的。
3、頁面靜態化
與數據緩存一樣,頁面數據本質上也屬於數據,常見的手段是生成靜態化的html頁面文件,利用客戶端瀏覽器的緩存功能或者服務端的緩存服務,以及CDN節點的緩沖服務,均可以降低伺服器端的數據檢索和計算壓力,快速響應結果並釋放連接進程。
4、用戶級別的調用頻率限制
不管服務是有登陸態還是沒登陸態,基於session等方式都可以為客戶端分配唯一的識別ID,服務端可以將sid存到緩存中。當客戶端請求服務時,如果沒有帶SID,則由服務端快速分配一個並返回。可以的話,本次請求可以不返回數據,或者將分配SID獨立出業務服務。當客戶端請求時帶了合法SID,便可以依據SID對客戶端進行頻率限制。而對於SID非法的請求,則直接拒絕服務。相比根據IP進行的頻率限制,根據SID的頻率限制更加精準可控,可最大程度地避免誤殺情況。
5、IP限制
最後,IP限制依然可以結合上述規則一起使用,但是可以將其前置至)JCb層的防火牆或負載均衡器上去做,並且可以調大限制的閾值,防止惡意訪問穿透到應用伺服器上,造成應用伺服器壓力。
『捌』 nginx 緩存怎麼都在tmp
nginx緩存cache的5種方案
1、傳統緩存之一(404)
這個辦法是把nginx的404錯誤定向到後端,然後用proxy_store把後端返回的頁面保存。
配置:
location / {
root /home/html/;#主目錄
expires 1d;#網頁的過期時間
error_page 404 =200 /fetch$request_uri;#404定向到/fetch目錄下
}
location /fetch/ {#404定向到這里
internal;#指明這個目錄不能在外部直接訪問到
expires 1d;#網頁的過期時間
alias /html/;
proxy_store會將文件保存到這目錄下
proxy_passhttp://www.jb51.net/;#後端upstream地址,/fetch同時是一個代理
proxy_set_header Accept-Encoding '';#讓後端不要返回壓縮(gzip或deflate)的內容,保存壓縮後的內容會引發亂子。
proxy_store on;#指定nginx將代理返回的文件保存
proxy_temp_path /home/tmp;#臨時目錄,這個目錄要和/home/html在同一個硬碟分區內
}
使用的時候還有要注意是nginx要有許可權往/home/tmp和/home/html下有寫入文件的許可權,在linux下nginx一般會配
置成nobody用戶運行,這樣這兩個目錄就要chown nobody,設成nobody用戶專用,當然也可以chmod
777,不過所有有經驗的系統管理員都會建議不要隨便使用777。
2、傳統緩存之二(!-e)
原理和404跳轉基本一致,但更簡潔一些:
location / {
root /home/html/;
proxy_store on;
proxy_set_header Accept-Encoding '';
proxy_temp_path /home/tmp;
if ( !-f $request_filename )
{
proxy_passhttp://www.jb51.net/;
}
}
可以看到這個配置比404節約了不少代碼,它是用!-f來判斷請求的文件在文件系統上存不存在,不存在就proxy_pass到後端,返回同樣是用proxy_store保存。
兩種傳統緩存都有著基本一樣的優點和缺點:
缺點1:不支持帶參數的動態鏈接,比如read.php?id=1,因為nginx只保存文件名,所以這個鏈接只在文件系統下保存為
read.php,這樣用戶訪問read.php?id=2時會返回不正確的結果。同時不支持http://www.jb51.net/這種形式的首頁和
二級目錄http://www.jb51.net/download/,因為nginx非常老實,會將這樣的請求照鏈接寫入文件系統,而這個鏈接顯然是一
個目錄,所以保存失敗。這些情況都需要寫rewrite才能正確保存。
缺點2:nginx內部沒有緩存過期和清理的任何機制,這些緩存的文件會永久性地保存在機器上,如果要緩存的東西非常多,那就會撐暴整個硬碟空間。為此可以使用一個shell腳本定期清理,同時可以撰寫php等動態程序來做實時更新。
缺點3:只能緩存200狀態碼,因此後端返回301/302/404等狀態碼都不會緩存,假如恰好有一個訪問量很大的偽靜態鏈接被刪除,那就會不停穿透導致後端承載不小壓力。
缺點4:nginx不會自動選擇內存或硬碟作為存儲介質,一切由配置決定,當然在當前的操作系統里都會有操作系統級的文件緩存機制,所以存在硬碟上也不需要過分擔心大並發讀取造成的io性能問題。
nginx傳統緩存的缺點也是它和squid等緩存軟體的不同之特色,所以也可看作其優點。在生產應用中它常常用作和squid的搭檔,squid對
於帶?的鏈接往往無法阻擋,而nginx能將其訪問攔住,例如:http://jb51.net/?和http://jb51.net/在squid上會
被當做兩個鏈接,所以會造成兩次穿透;而nginx只會保存一次,無論鏈接變成http://jb51.net/?1還是http://jb51.net
/?123,均不能透過nginx緩存,從而有效地保護了後端主機。
nginx會非常老實地將鏈接形式保存到文件系統中,這樣對於一個鏈接,可以很方便地查閱它在緩存機器上的緩存狀態和內容,也可以很方便地和別的文件管理器如rsync等配合使用,它完完全全就是一個文件系統結構。
這兩種傳統緩存都可以在linux下將文件保存到/dev/shm里,一般我也是這么做的,這樣可以利用系統內存來做緩存,利用內存的話,清理過期內
容速度就會快得多。使用/dev/shm/時除了要把tmp目錄也指向到/dev/shm這個分區外,如果有大量小文件和目錄,還要修改一下這個內存分區
的inode數量和最大容量:
mount -o size=2500M -o nr_inodes=480000 -o noatime,nodiratime -o remount /dev/shm
上面的命令在一台有3G內存的機器上使用,因為/dev/shm默認最大內存是系統內存的一半就是1500M,這條命令將其調大成2500M,
同時shm系統inode數量默認情況下可能是不夠用的,但有趣的是它可以隨意調節,這里調節為480000保守了點,但也基本夠用了。
3、基於memcached的緩存
nginx對memcached有所支持,但是功能並不是特別之強,性能上還是非常之優秀。
location /mem/ {
if ( $uri ~ "^/mem/([0-9A-Za-z_]*)$" )
{
set $memcached_key "$1";
memcached_pass 192.168.1.2:11211;
}
expires 70;
}
這個配置會將http://jb51.net/mem/abc指明到memcached的abc這個key去取數據。
nginx目前沒有寫入memcached的任何機制,所以要往memcached里寫入數據得用後台的動態語言完成,可以利用404定向到後端去寫入數據。
4、基於第三方插件ncache
ncache是新浪兄弟開發的一個不錯的項目,它利用nginx和memcached實現了一部分類似squid緩存的功能,我並沒有使用這個插件的經驗,可以參考:
http://code.google.com/p/ncache/
5、nginx新開發的proxy_cache功能
從nginx-0.7.44版開始,nginx支持了類似squid較為正規的cache功能,目前還處於開發階段,支持相當有限,這個緩存是把鏈接用md5編碼hash後保存,所以它可以支持任意鏈接,同時也支持404/301/302這樣的非200狀態。
配置:
首先配置一個cache空間:
復制代碼 代碼如下:
proxy_cache_path /path/to/cache levels=1:2 keys_zone=NAME:10m inactive=5m max_size=2m clean_time=1m;
注意這個配置是在server標簽外,levels指定該緩存空間有兩層hash目錄,第一層目錄是1個字母,第二層為2個字母,保存的文件名就會類
似/path/to/cache/c/29/;keys_zone為這個空間起個名
字,10m指空間大小為10MB;inactive的5m指緩存默認時長5分鍾;max_size的2m是指單個文件超過2m的就不緩
存;clean_time指定一分鍾清理一次緩存。
location / {
proxy_passhttp://www.jb51.net/;
proxy_cache NAME;#使用NAME這個keys_zone
proxy_cache_valid 200 302 1h;#200和302狀態碼保存1小時
proxy_cache_valid 301 1d;#301狀態碼保存一天
proxy_cache_valid any 1m;#其它的保存一分鍾
}
ps:支持cache的0.7.44到0.7.51這幾個版本的穩定性均有問題,訪問有些鏈接會出現錯誤,所以這幾個版本最好不要在生產環境中
使用。nginx-0.7下目前所知較為穩定的版本是0.7.39。穩定版0.6.36版也是近期更新,如果在配置里沒有使用到0.7的一些新標簽新功
能,也可以使用0.6.36版。
Nginx緩存的內存佔用問題的一般解決方法
1、前些日子某服務被刷,每分鍾達到上幾百萬請求;當時採用了nginx cache來解決的;但是因為某服務不能緩存太久,當時設置了5s,那麼帶來的問題就是產生大量小文件,而且很快就刪除了。
2、通過
free -m
會發現used是27G;但是通過top查看進程占的內存並沒有那麼多
那內存去哪了?
3、通過查閱資料會發現(cat /proc/meminfo)
Slab: 22464312 kB
SReclaimable: 16474128 kB (這些是內核保持的但是可以釋放的inode和dentry的緩存)
SUnreclaim: 5990184 kB
4、這些內存為什麼會不自動清理呢?
某機房機器系統版本:Linux 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux(正常,沒出現內存快到100%的情況)
某機房機器系統版本:Linux 2.6.32-279.el6.x86_64 #1 SMP Fri Jun 22 12:19:21 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux (不釋放)
5、通過設置如下參數來設置內存閥值
sysctl -w vm.extra_free_kbytes=6436787
sysctl -w vm.vfs_cache_pressure=10000
『玖』 內存檢測工具哪個比較好用
測試內存兼容性一般使用MemTest、RightMark Memory Analyzer這樣的內存專用測試工具以及PCMARK 這樣的整機測試工具還有拷機軟體sp2004(主要針對CPU和內存)、BurnInTest(該軟體運行時,各部件都會進入高強度的工作狀態)。
補充一句 CPU-Z不能進行內存測試
『拾』 為什麼說memacahe是分布式緩存
的理解,分布式緩存系統是為了解決資料庫伺服器和web伺服器之間的瓶頸。
如果一個網站的流量很大,這個瓶頸將會非常明顯,每次資料庫查詢耗費的時間將會非常可觀。
對於更新速度不是很快的網站,我們可以用靜態化來避免過多的資料庫查詢。
對於更新速度以秒計的網站,靜態化也不會太理想,可以用緩存系統來構建。
如果只是單台伺服器用作緩存,問題不會太復雜,如果有多台伺服器用作緩存,就要考慮緩存伺服器的負載均衡。