最全面 Nginx 入門教程 + 常用配置解析

轉自?http://blog.csdn.net/shootyou/article/details/6093562

?

Nginx介紹和安裝

一個簡單的配置文件

模塊介紹

常用場景配置

進階內容

參考資料

?

?

?

== Nginx介紹和安裝 ==

?

Nginx是一個自由、開源、高性能及輕量級的HTTP服務器及反轉代理服務器,

其性能與IMAP/POP3代理服務器相當。Nginx以其高性能、穩定、功能豐富、配置簡單及占用系統資源少而著稱。

Nginx 超越 Apache 的高性能和穩定性,使得國內使用 Nginx 作為 Web 服務器的網站也越來越多.

?

*基礎功能

處理靜態文件,索引文件以及自動索引;?

反向代理加速(無緩存),簡單的負載均衡和容錯;

FastCGI,簡單的負載均衡和容錯;

模塊化的結構。過濾器包括gzipping, byte ranges, chunked responses, 以及 SSI-filter 。在SSI過濾器中,到同一個 proxy 或者 FastCGI 的多個子請求并發處理;

SSL 和 TLS SNI 支持;

?

?

*優勢

Nginx專為性能優化而開發,性能是其最重要的考量, 實現上非常注重效率 。它支持內核Poll模型,能經受高負載的考驗, 有報告表明能支持高達 50,000 個并發連接數。?

Nginx作為負載均衡服務器: Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務, 也可以支持作為 HTTP代理服務器對外進行服務。

Nginx具有很高的穩定性。其它HTTP服務器,當遇到訪問的峰值,或者有人惡意發起慢速連接時,也很可能會導致服務器物理內存耗盡頻繁交換,失去響應,只能重啟服務器。

例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術,使得它的CPU與內存占用率非常低。

nginx官方表示保持10,000個沒有活動的連接,它只占2.5M內存,就穩定性而言, nginx比lighthttpd更勝一籌。?

Nginx支持熱部署。它的啟動特別容易, 并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟件版本進行進行升級。?

Nginx采用C進行編寫, 不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多。

?

*nginx的安裝

?

開發穩定版: Nginx 0.8.X

當前穩定版: Nginx 0.7.X

歷史穩定版: Nginx 0.6.X

?

[python]?view plaincopyprint?
  1. 1)pcre安裝,支持正則表達式??
  2. ??
  3. http://www.pcre.org/??
  4. ??
  5. #?tar?zxvf?pcre-7.9.tar.gz??
  6. ??
  7. #?cd?pcre-7.9??
  8. ??
  9. #./configure??
  10. ??
  11. #?make?&&?make?install???
  12. ???
  13. 2)openssl安裝(可選),支持安全協議的站點??
  14. ??
  15. http://www.openssl.org/??
  16. ??
  17. #?tar?zxvf?openssl-0.9.8l.tar.gz??
  18. ??
  19. #?cd?openssl-0.9.8l??
  20. ??
  21. #./config??
  22. ??
  23. #?make?&&?make?install???
  24. ??
  25. 3)nginx的安裝??
  26. ??
  27. #?tar?zxvf?nginx-0.7.64.tar.gz??
  28. ??
  29. #?cd?nginx-0.7.64??
  30. ??
  31. 配置安裝和不安裝組件:--with-MODULE_NAME?or?--without-MODULE_NAME??
  32. ??
  33. #?./configure?--prefix=/usr/local/nginx/nginx8011?--with-openssl=/usr/include/openssl?--with-http_stub_status_module???
  34. ??
  35. #?make?&&?make?install??
  36. ??
  37. 目錄結構:??
  38. ??
  39. conf?配置文件??
  40. ??
  41. html?靜態頁面??
  42. ??
  43. logs?日志文件??
  44. ??
  45. sbin?主程序??
  46. ??
  47. 4)啟動??
  48. ??
  49. #?/usr/local/nginx/nginx8011/sbin/nginx?//啟動??
  50. ??
  51. 啟動參數:??
  52. ??
  53. -c?</path/to/config>?為?Nginx?指定一個配置文件,來代替缺省的。???
  54. ??
  55. -t?不運行,而僅僅測試配置文件。nginx?將檢查配置文件的語法的正確性,并嘗試打開配置文件中所引用到的文件。???
  56. ??
  57. -v?顯示?nginx?的版本。???
  58. ??
  59. -V?顯示?nginx?的版本,編譯器版本和配置參數。???
  60. ??
  61. 不啟動,僅測試配置文件:/usr/bin/nginx?-t?-c?~/mynginx.conf??
  62. ??
  63. 5)配置自啟動??

?

?

== 一個簡單的配置文件 ==

?

[python]?view plaincopyprint?
  1. #-----------------------------------基本模塊??
  2. ??
  3. #?使用的用戶和組??
  4. ??
  5. user??www?www;??
  6. ??
  7. #?指定工作進程數??
  8. ??
  9. worker_processes??1;??
  10. ??
  11. #?可以使用?[?debug?|?info?|?notice?|?warn?|?error?|?crit?]??參數??
  12. ??
  13. #error_log??logs/error.log;??
  14. ??
  15. #error_log??logs/error.log??notice;??
  16. ??
  17. #?指定?pid?存放的路徑??
  18. ??
  19. #pid????????logs/nginx.pid;??
  20. ??
  21. #-----------------------------------事件模塊???
  22. ??
  23. events?{??
  24. ??
  25. #每個worker的最大連接數??
  26. ??
  27. ????worker_connections??1024;??
  28. ??
  29. }??
  30. ??
  31. #-----------------------------------HTTP?模塊???
  32. ??
  33. http?{??
  34. ??
  35. #包含一個文件描述了:不同文件后綴對應的MIME,見案例分析??
  36. ??
  37. ????include???????mime.types;??
  38. ??
  39. #制定默認MIME類型為二進制字節流??
  40. ??
  41. ????default_type??application/octet-stream;??
  42. ??
  43. #指令?access_log?指派路徑、格式和緩存大小。??
  44. ??
  45. ????#access_log??off;??
  46. ??
  47. #開啟調用Linux的sendfile(),提供文件傳輸效率??
  48. ??
  49. ????sendfile????????on;??
  50. ??
  51. #是否允許使用socket的TCP_NOPUSH或TCP_CORK選項??
  52. ??
  53. ????#tcp_nopush?????on;??
  54. ??
  55. ????#指定客戶端連接保持活動的超時時間,在這個時間之后,服務器會關掉連接。??
  56. ??
  57. ????keepalive_timeout??65;??
  58. ??
  59. #設置gzip,壓縮文件??
  60. ??
  61. ????#gzip??on;??
  62. ??
  63. #為后端服務器提供簡單的負載均衡??
  64. ??
  65. upstream?apaches?{??
  66. ??
  67. server?127.0.0.1:8001;??
  68. ??
  69. server?127.0.0.1:8002;??
  70. ??
  71. }??
  72. ??
  73. #配置一臺虛擬機??
  74. ??
  75. ????server?{??
  76. ??
  77. ????????listen???????8012;??
  78. ??
  79. ????????server_name??localhost;??
  80. ??
  81. ????????location?/?{??
  82. ??
  83. proxy_pass?http://apaches;??
  84. ??
  85. ????????}??
  86. ????}??
  87. }??

?

?

== 模塊介紹 ==

模塊劃分:

#Core 核心模塊

#Events 事件模塊

#HTTP HTTP模塊

#Mail 郵件模塊

?

?

*核心模塊的常用組件

?

[python]?view plaincopyprint?
  1. user???
  2. ??
  3. 語法:?user?user?[group]???
  4. ??
  5. 缺省值:?nobody?nobody???
  6. ??
  7. 指定Nginx?Worker進程運行用戶,默認是nobody帳號。??
  8. ??
  9. error_log???
  10. ??
  11. 語法:?error_log?file?[?debug?|?info?|?notice?|?warn?|?error?|?crit?]???
  12. ??
  13. 缺省值:?${prefix}/logs/error.log???
  14. ??
  15. 制定錯誤日志的存放位置和級別。??
  16. ??
  17. include???
  18. ??
  19. 語法:?include?file?|?*???
  20. ??
  21. 缺省值:?none???
  22. ??
  23. include?指令還支持像下面配置一樣的全局包含的方法,例如包含一個目錄下所有以".conf"結尾的文件:?include?vhosts/*.conf;??
  24. ???
  25. pid???
  26. ??
  27. 語法:?pid?file???
  28. ??
  29. 進程id存儲文件。可以使用?kill?-HUP?cat?/var/log/nginx.pid/?對Nginx進行配置文件重新加載。???
  30. ??
  31. worker_processes???
  32. ??
  33. 語法:?worker_processes?number???
  34. ??
  35. 缺省值:?1???
  36. ??
  37. 指定工作進程數。nginx可以使用多個worker進程。??

?

?

*事件模塊的常用組件

?

[python]?view plaincopyprint?
  1. worker_connections???
  2. ??
  3. 語法:worker_connections?number???
  4. ??
  5. 通過worker_connections和worker_proceses可以計算出maxclients:?max_clients?=?worker_processes?*?worker_connections??
  6. ??
  7. 作為反向代理,max_clients為:?max_clients?=?worker_processes?*?worker_connections/4?,因為瀏覽器訪問時會通過連接池建立多個連接。??
  8. ??
  9. use???
  10. ??
  11. 語法:use?[?kqueue?|?rtsig?|?epoll?|?/dev/poll?|?select?|?poll?|?eventport?]???
  12. ??
  13. 如果在./configure的時候指定了不止一種事件模型,那么可以設置其中一個,以便告訴nginx使用哪種事件模型。默認情況下nginx會在./configure時找出最適合系統的事件模型。??
  14. ??
  15. 事件模型是指Nginx處理連接的方法。??

?

?

*HTTP模塊的核心組件和變量

?

[python]?view plaincopyprint?
  1. 三個作用域:http,?server,?location???
  2. ??
  3. server??
  4. ??
  5. 語法:server?{...}???
  6. ??
  7. 作用域:?http???
  8. ??
  9. 配置一臺虛擬機。??
  10. ??
  11. location???
  12. ??
  13. 語法:?location?[=|~|~*|^~]?/uri/?{?...?}???
  14. ??
  15. 作用域:?server???
  16. ??
  17. 配置訪問路徑的處理方法。??
  18. ??
  19. listen???
  20. ??
  21. 語法:?listen?address:port?[?default?[?backlog=num?|?rcvbuf=size?|?sndbuf=size?|?accept_filter=filter?|?deferred?|?bind?|?ssl?]???
  22. ??
  23. 默認值:?listen?80???
  24. ??
  25. 作用域:?server???
  26. ??
  27. 指定當前虛擬機的監聽端口。??
  28. ??
  29. alias???
  30. ??
  31. 語法:?alias?file-path|directory-path;???
  32. ??
  33. 作用域:?location???
  34. ??
  35. 該指令設置指定location使用的路徑.注意它跟?root?相似,但是不改變文件的根路徑,僅僅是使用文件系統路徑???
  36. ??
  37. root???
  38. ??
  39. 語法:?root?path???
  40. ??
  41. 默認值:root?html???
  42. ??
  43. 作用域:http,?server,?location??
  44. ??
  45. alias指定的目錄是準確的,root是指定目錄的上級目錄,并且該上級目錄要含有location指定名稱的同名目錄。??
  46. ??
  47. 區別:??
  48. ??
  49. location?/abc/?{??
  50. ??
  51. alias?/home/html/abc/;??
  52. ??
  53. }??
  54. ??
  55. 在這段配置下,http://test/abc/a.html就指定的是/home/html/abc/a.html。這段配置亦可改成??
  56. ??
  57. location?/abc/?{??
  58. ??
  59. root?/home/html/;??
  60. ??
  61. }??
  62. ??
  63. 這樣,nginx就會去找/home/html/目錄下的abc目錄了,得到的結果是相同的。??
  64. ??
  65. HTTP模塊的其他基本組件將結合案例介紹。??
  66. ??
  67. 變量:??
  68. ??
  69. HTTP?header?里邊?特定HEADER的值,變量會轉成小寫,比如?$http_user_agent,?$http_referer...?header信息?"YOUR-STRANGE-HEADER:?values"?能通過?$http_your_strange_header獲得.???
  70. ??
  71. $arg_PARAMETER???
  72. ??
  73. $http_HEADER???
  74. ??
  75. $query_string?=?$args???

?

?

*郵件模塊的常用組件(略)

== 常用場景配置 ==

1.多臺服務器配置負載均衡

?

?

[python]?view plaincopyprint?
  1. http?{??
  2. ??
  3. ????include???????mime.types;??
  4. ??
  5. ????default_type??application/octet-stream;??
  6. ??
  7. ????sendfile????????on;??
  8. ??
  9. ????keepalive_timeout??65;??
  10. ???
  11. upstream?allserver?{??
  12. ??
  13. #ip_hash;??
  14. ??
  15. server?127.0.0.1:8083?down;???
  16. ??
  17. server?127.0.0.1:8084?weight=3;???
  18. ??
  19. server?127.0.0.1:8001;???
  20. ??
  21. server?127.0.0.1:8002?backup;???
  22. ??
  23. }??
  24. ????server?{??
  25. ??
  26. ????????listen???????8012;??
  27. ??
  28. ????????server_name??localhost;??
  29. ??
  30. ????????location?/?{??
  31. ??
  32. ????????????proxy_pass?http://allserver;??
  33. ??
  34. ????????}??
  35. ????}??
  36. }??

?

?

ip_hash; nginx中的ip_hash技術能夠將某個ip的請求定向到同一臺后端,這樣一來這個ip下的某個客戶端和某個后端就能建立起穩固的session

?

1.down ?表示單前的 server 暫時不參與負載?

2.weight ?默認為 1.weight 越大,負載的權重就越大。?

3.backup: 其它所有的非 backup 機器 down 或者忙的時候,請求 backup機器。所以這臺機器壓力會最輕。

?

2.通過手機客戶端的頭信息或者請求的參數轉發到不用目錄

?

[python]?view plaincopyprint?
  1. http?{??
  2. ??
  3. ????include???????mime.types;??
  4. ??
  5. ????default_type??application/octet-stream;??
  6. ??
  7. ????sendfile????????on;??
  8. ??
  9. ????keepalive_timeout??65;??
  10. ??
  11. upstream?apaches?{??
  12. ??
  13. server?127.0.0.1:8001;??
  14. ??
  15. server?127.0.0.1:8002;??
  16. ??
  17. }??
  18. ??
  19. upstream?tomcats?{??
  20. ??
  21. server?127.0.0.1:8083;??
  22. ??
  23. server?127.0.0.1:8084;??
  24. ??
  25. }??
  26. ????server?{??
  27. ??
  28. ????????listen???????8012;??
  29. ??
  30. ????????server_name??localhost;??
  31. ??
  32. ????????location?/?{??
  33. ??
  34. set?$ismob?0;??
  35. ??
  36. #?注意if后的空格??
  37. ??
  38. if?(?$http_chip?~*?"(NOKIA3500)|(NOKIA3200)"?)??
  39. ??
  40. {??
  41. ??
  42. set?$ismob?1;??
  43. ??
  44. proxy_pass?http://apaches;??
  45. ??
  46. }??
  47. ??
  48. if?(?$http_chip?~*?"(NOKIA3500)|(NOKIA3200)"?)??
  49. ??
  50. {??
  51. ??
  52. set?$ismob?1;??
  53. ??
  54. proxy_pass?http://tomcats;??
  55. ??
  56. }??
  57. ??
  58. ????????????if?(?$ismob?=?0?)??
  59. ??
  60. {??
  61. ??
  62. root?/usr/local/nginx/nginx8012/html;??
  63. ??
  64. }??
  65. ????????}??
  66. ??
  67. location?~*?/rewrite/testXID.jsp?{??
  68. ??
  69. if?(?$arg_XID?=?"13800138000")??
  70. ??
  71. {??
  72. ??
  73. rewrite?^(.*)$?http://192.168.0.190:8084/testSID.jsp?break;???
  74. ??
  75. }??
  76. ??
  77. }??
  78. ????}??
  79. ??
  80. }??

?

?

1、正則表達式匹配,其中:

= 完全相等;

~為區分大小寫匹配;

~*為不區分大小寫匹配;

!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配。

?? ? ? ?2、文件及目錄匹配,其中:

-f和!-f用來判斷是否存在文件;

-d和!-d用來判斷是否存在目錄;

-e和!-e用來判斷是否存在文件或目錄;

-x和!-x用來判斷文件是否可執行。

if (-d $request_filename){ ... }

?

哪些地方會出現正則表達式:

1.location ~* /.(gif|jpg|png|swf|flv)${...}

2.rewrite ^(.*)$ /nginx-ie/$1 break;

?

正則表達式舉例:

1.多目錄轉成參數 abc.domian.com/sort/2 => abc.domian.com/index.php?act=sort&name=abc&id=2

if ($host ~* (.*)/.domain/.com) {?

set $sub_name $1; ? ?

rewrite ^/sort//(/d+)//?$ /index.php?act=sort&cid=$sub_name&id=$1 last;?

}

2.目錄對換 /123456/xxxx -> /xxxx?id=123456

rewrite ^/(/d+)/(.+)/ /$2?id=$1 last;

?

3.防盜鏈

?

[python]?view plaincopyprint?
  1. http?{??
  2. ??
  3. ????include???????mime.types;??
  4. ??
  5. ????default_type??application/octet-stream;??
  6. ??
  7. ????sendfile????????on;??
  8. ??
  9. ????keepalive_timeout??65;??
  10. ??
  11. ????server?{??
  12. ??
  13. ????????listen???????8012;??
  14. ??
  15. ????????server_name??localhost;??
  16. ???
  17. ????????location?/?{??
  18. ??
  19. root?html;??
  20. ???
  21. ????????}??
  22. ??
  23. ????????location?~*?^.+/.(gif|jpg|png|swf|flv|rar|zip)$?{???
  24. ??
  25. valid_referers?none?blocked?server_names?http://localhost?baidu.com;???
  26. ??
  27. if?($invalid_referer)?{???
  28. ??
  29. ?rewrite?^/?html/50x.html;???
  30. ??
  31. }??
  32. ??
  33. }??
  34. ????}??
  35. ??
  36. }??

?

?

4.訪問控制:身份驗證、限制IP

?

[python]?view plaincopyprint?
  1. http?{??
  2. ??
  3. ????include???????mime.types;??
  4. ??
  5. ????default_type??application/octet-stream;??
  6. ??
  7. ????sendfile????????on;??
  8. ??
  9. ????keepalive_timeout??65;??
  10. ??
  11. upstream?tomcats?{??
  12. ??
  13. server?127.0.0.1:8083;??
  14. ??
  15. server?127.0.0.1:8084;??
  16. ??
  17. }??
  18. ????server?{??
  19. ??
  20. ????????listen???????8012;??
  21. ??
  22. ????????server_name??localhost;??
  23. ??
  24. ????????location?/?{??
  25. ??
  26. allow?192.168.4.8;??
  27. ??
  28. deny?all;??
  29. ??
  30. auth_basic??"index";??
  31. ??
  32. auth_basic_user_file?../htpasswd;??
  33. ??
  34. proxy_pass?http://tomcats;??
  35. ??
  36. ????????}??
  37. ????}??
  38. }??

?

?

cp /usr/local/apache/apache8001/bin/htpasswd /usr/local/bin/

/usr/local/bin/htpasswd -c htpasswd root

?

5.查看Nginx的運行狀態

?

[python]?view plaincopyprint?
  1. http?{??
  2. ??
  3. ????include???????mime.types;??
  4. ??
  5. ????default_type??application/octet-stream;??
  6. ??
  7. ????sendfile????????on;??
  8. ??
  9. ????keepalive_timeout??65;??
  10. ??
  11. upstream?apaches?{??
  12. ??
  13. server?127.0.0.1:8001;??
  14. ??
  15. server?127.0.0.1:8002;??
  16. ??
  17. }??
  18. ??
  19. upstream?tomcats?{??
  20. ??
  21. server?127.0.0.1:8083;??
  22. ??
  23. server?127.0.0.1:8084;??
  24. ??
  25. }??
  26. ??
  27. ????server?{??
  28. ??
  29. ????????listen???????8012;??
  30. ??
  31. ????????server_name??localhost;??
  32. ??
  33. ????????location?/?{??
  34. ??
  35. proxy_pass?http://tomcats;??
  36. ??
  37. ????????}??
  38. ??
  39. ????????location?/NginxStatus?{??
  40. ??
  41. stub_status?on;??
  42. ??
  43. access_log??off;??
  44. ??
  45. auth_basic??"NginxStatus";??
  46. ??
  47. auth_basic_user_file?../htpasswd;??
  48. ??
  49. ????????}??
  50. ????}??
  51. }??

?

?

== 進階內容 ==

1.查看Nginx的運行狀態

?

Active connections: 364

server accepts handled requests

5477919 5477919 17515830

Reading: 10 Writing: 26 Waiting: 328

?

意思如下:

active connections – 當前 Nginx 正處理的活動連接數。

serveraccepts handled requests -- 總共處理了 5477919 個連接 , 成功創建 5477919 次握手 (證明中間沒有失敗的 ), 總共處理了 17515830 個請求 ( 平均每次握手處理了 3.2 個數據請求 )。

reading -- nginx 讀取到客戶端的 Header 信息數。

writing -- nginx 返回給客戶端的 Header 信息數。

waiting -- 開啟 keep-alive 的情況下,這個值等于 active - (reading + writing),意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留連接。

?

2.案例分析:

?

將web server由apache換為nginx后,卻帶來意想不到的問題.多個頁面顯示模塊顯示"正在加載中..."然后一直停頓,使用FireBug調試前端,XSL文件解析失敗.但載入又是HTTP 200 的正常狀態.

繼續用FireBug調試,發現XSL文件下載時的HTTP響應頭中,?

Content-Type是oct/stream ,而在原來的apache中,是text/xml,于是修改/etc/nginx/mime.types文件.將XSL的擴展名加到xml組中.問題解決.?

?

3. 通過系統的信號控制 Nginx?

使用信號加載新的配置

平滑升級到新的二進制代碼

4. 使用Nginx限制下載速率和并發數?

limit_zone ? limit_conn ? limit_rate

5. 使用Nginx進行地址轉發

rewrite

nginx rewrite中last和break的區別: http://blog.sina.com.cn/s/blog_4b01279a0100hd4c.html

?

6.Nginx Internals: Nginx源代碼、內部機制的分析

http://blog.zhuzhaoyuan.com/2009/09/nginx-internals-slides-video/

== 參考資料 ==

Nginx中文文檔:

http://wiki.nginx.org/NginxChs

?

服務器系統架構分析日志:?

http://www.sudone.com/

轉載于:https://www.cnblogs.com/suifengbingzhu/p/3794484.html

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

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

相關文章

linux 客戶機中不支持 unity_婚姻中的不理解,來源于夫妻雙方情感支持的不同

很多女性在婚姻中往往覺得無法得到丈夫的理解&#xff0c;當遇到一些生活或者工作上的問題的時候&#xff0c;她們想要在情感上得到丈夫的支持和理解。但是很多丈夫對此可能并不了解和理解&#xff0c;更傾向于用理性幫助妻子解決問題。而女性所需要的幫助可能并不是解決問題的…

Linux中使用crontab命令啟用自定義定時任務

一 簡介Linux下的任務調度分為兩類&#xff0c;系統任務調度和用戶任務調度系統任務調度&#xff1a;系統需要定期執行的任務&#xff0c;比如重啟、日志清理等&#xff0c;其配置文件是&#xff1a;/etc/crontab用戶任務調度&#xff1a;某個用戶需要定期執行的任務。用戶可以…

java 循環標記_深入淺析Java 循環中標簽的作用

continue和break可以改變循環的執行流程&#xff0c;但在多重循環中&#xff0c;這兩條語句無法直接從內層循環跳轉到外層循環。在C語言中&#xff0c;可以通過goto語句實現多重循環的跳轉&#xff0c;但在非循環結構中使用goto語句會使程序的結構紊亂&#xff0c;可讀性變差。…

JS,Jquery 調用 C#WebService

1&#xff0c;需要在服務下面把代碼的注釋去掉 // 若要允許使用 ASP.NET AJAX 從腳本中調用此 Web 服務&#xff0c;請取消對下行的注釋。   //[System.Web.Script.Services.ScriptService] 2,JS 調用方法如下 var request <?xml version"1.0" encoding"…

iOS tabview 適配問題

ios7的UITableView實現ios6的圓角效果 iOS7 UITableView做成類似iOS6風格 在iOS7的時候我們會發現cell的默認線條會向右偏移&#xff0c;使左邊空出了一些位置&#xff0c;這時候我們可以調用如下的方法來解決。這樣我們的cell就會和iOS6前的一樣鋪滿整個寬度了。 if ([tableVi…

PHP學習總結(14)——PHP入門篇之常用運算符

一、什么是運算符什么是運算符&#xff1f;運算符是告訴PHP做相關運算的標識符號。例如&#xff0c;你需要計算123乘以456等于多少&#xff0c;這時候就需要一個符號&#xff0c;告訴服務器&#xff0c;你需要做乘法運算。PHP中的運算符有哪些&#xff1f;PHP運算符一般分為算術…

百度時間顯示_文章的發布時間對百度優化網站重要嗎

文章的發布時間對百度優化網站重要嗎&#xff1f;這個問題&#xff0c;相信很多初做網站優化的萌新朋友都會問到&#xff0c;以小匠個人的經歷來分享這個問題的經驗&#xff0c;小匠認為&#xff0c;文章的發布時間對優化網站是非常重要的&#xff0c;下面小匠將從實際經歷來給…

循環鏈表解決約瑟夫環問題

約瑟夫環問題可以簡單的使用數組的方式實現&#xff0c;但是現在我使用循環鏈表的方法來實現&#xff0c;因為上午看到一道面試題規定使用循環鏈表解決約瑟夫環問題。 什么是約瑟夫環&#xff1f; “約瑟夫環是一個數學的應用問題&#xff1a;已知n個人&#xff08;以編號1&…

java 什么時候進行垃圾回收_java什么時候進行垃圾回收,垃圾回收的執行流程

java的垃圾回收分為三個區域新生代 老年代 永久代一個對象實例化時 先去看伊甸園有沒有足夠的空間如果有 不進行垃圾回收 ,對象直接在伊甸園存儲.如果伊甸園內存已滿,會進行一次minor gc然后再進行判斷伊甸園中的內存是否足夠如果不足 則去看存活區的內存是否足夠.如果內存足夠…

常用的webservice接口

商業和貿易&#xff1a; 1、股票行情數據 WEB 服務&#xff08;支持香港、深圳、上海基金、債券和股票&#xff1b;支持多股票同時查詢&#xff09; Endpoint: http://webservice.webxml.com.cn/WebServices/StockInfoWS.asmx Disco: http://webservice.webxml.com.cn/WebServ…

基于HTML5 Canvas 實現矢量工控風機葉輪旋轉

之前在拓撲上的應用都是些靜態的圖元&#xff0c;今天我們將在拓撲上設計一個會動的圖元——葉輪旋轉。 先看看最后我們實現的效果&#xff1a;http://www.hightopo.com/demo/fan/index.html 我們先來看下這個葉輪模型長什么樣 從模型上看&#xff0c;這個葉輪模型有三個葉片&a…

java 并發模型總類_java并發編程系列-內存模型基礎

java線程之間的通信對程序開發人員是完全透明的&#xff0c;內存的可見性問題很容易困擾很多開發人員。本篇博文將揭開java內存模型的神秘面紗&#xff0c;來看看內存模型到底是怎樣的。并發編程模型的分類并發編程中需要處理的兩個關鍵問題&#xff1a;線程之間如何通信線程之…

python調用java的jar包_python調用java的jar包報錯127

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓最近在弄python需要調用到Java的jar包&#xff0c;按照網上的教程走&#xff0c;最后總是報錯No matching overloads found for [init in find. at native\common\jp_method.cpp:127Java&#xff1a;package aes;import com.sun.cr…

iphone、Android接收System.Net.Mail發的郵件標題亂碼

參考地址&#xff1a;http://blog.csdn.net/whowhen21/article/details/5959225 在做項目時候&#xff0c;用到.Net的System.Net.Mail發送郵件&#xff0c;經測試&#xff0c;發現如果標題過長&#xff0c;收到的就會是亂碼了(那種Base64格式的數據)&#xff0c;幾經測試&#…

數據倉庫與數據挖掘的一些基本概念

下面內容摘自互聯網并作了整理。 名詞&#xff1a; BI(Business Intelligence)&#xff1a;商業智能&#xff0c; DW(Data Warehouse)&#xff1a;數據倉庫&#xff0c;詳見正文Q1部分。 OLTP(On-Line Transaction Processing)&#xff1a;聯機事務處理 也稱為面向交易的處理系…

ATS讀小文件(內存命中)

一個資源根據其大小可能會存在多個存儲對象中。如果足夠小&#xff08;連同doc結構的大小小于一個fragment的size&#xff09;&#xff0c;連同這個資源的meta信息一起存儲在一個doc中。如果比較大&#xff0c;第一個存儲對象保存資源的meta信息&#xff0c;后面跟著若干個frag…

python 加密解密_python加密解密

EncodeFile(python2.7加密)# -*- coding: utf8 -*-import base64import sysreload(sys)sys.setdefaultencoding(utf8)inFilesys.argv[1]try:fin open(inFile, "rb")fout open(inFile".txt", "w")base64.encode(fin, fout)passexcept Exception…

java double 兩位_java double 保留兩位小數

java保留兩位小數問題&#xff1a;方式一&#xff1a;四舍五入double f 111231.5585;BigDecimal b new BigDecimal(f);double f1 b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();保留兩位小數---------------------------------------------…

fatal error C1902: 程序數據庫管理器不匹配;請檢查安裝解決

終于找到原因了&#xff0c;原來是我安裝的字體渲染&#xff0c;并且采用注冊表的加載方式&#xff01;改掉就好了&#xff01;上天哪&#xff0c;這是怎么影響到的 卸載MacType程序后&#xff0c;進行嘗試&#xff01; VS2008 和 VS2010 又能用了&#xff01; 我想求教育。。。…

一分鐘明確 VS manifest 原理

什么是vs 程序的manifest文件 manifest 是VS程序用來標明所依賴的side-by-side組建,如ATL, CRT等的清單。 為什么要有manifest文件 一臺pc上&#xff0c;用一組建往往會有不止一個版本號&#xff08;c:/windows/winsxs或系統文件夾下&#xff09;&#xff0c;程序在載入的時候&…