nginx web服務器概念了解 配置

服務器

服務器

服務器是一種提供高效計算的機器,與普通的PC主機相比,具有可觀的穩定性,高併發性,可擴展性。

互聯網任何一個應用都是以服務器為基礎設施的,沒有服務器我們就無法訪問網絡上的任何內容,只能使用單機的應用。例如網站,我們訪問的任何一個網站都是保存在某個服務器上的,域名被DNS(域名解析服務器)解析到IP地址后,瀏覽器就能通過IP地址訪問對應的服務器資源了。

就好比:服務器是人的家,人名相當於域名(不可重名),身份證號相當於IP地址。通過人名搜索到身份證號,通過身份證號獲取到家的地址。

Web服務器

Web服務器不再是一種硬件設施,而是一種部署在服務器上的軟件應用,它服務於各種網絡請求,將網絡請求進行處理,分發。

所以Web服務器的處理能力很大程度決定了該網站的併發能力。著名的Web服務器有:Apache Nginx

Web應用服務器

Web應用服務器是專門處理邏輯代碼的服務器,同時還具有了處理網絡請求的能力,一般為了提高併發能力,會在Web應用服務器上套一層Web服務器。

例如:Tomcat uwsgi gunicorn,后兩個是Python的Web應用服務器,專門處理Python的邏輯代碼。

聯繫

其中Web服務器和Web應用服務器都部署在服務器上。

Nginx服務器

Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。其主要特點如下:

  • 輕量級 併發能力強
  • 支持處理靜態資源,以減少應用服務器的壓力
  • 負載均衡

負載均衡

大型的網站應用網站應用往往是由無數個服務器服務的,就像淘寶這種,單靠一個是不可能承受的了如此大的併發量,因此有了負載均衡。負載均衡又分為硬負載均衡軟負載均衡,硬負載均衡是通過硬件的方式實現負載均衡,比如F5,成本都比較昂貴,軟負載均衡則是通過軟件的方式實現,比如Nginx和Apache。

所謂負載均衡就是將多個請求分發到不同的服務器上去,每個服務器都有處理請求和邏輯的應用服務器,以此來提高併發量。

下面使用Nginx來實現負載均衡配置

配置Nginx需要到/etc/nginx/nginx.conf文件內進行編輯

http {
##http的配置

server {
        listen 80;//監聽端口
        server_name 域名;
        location / {
            proxy_pass http://lca;
        }
    }
 upstream lca {//採用輪詢方式,依次將請求轉發到各個服務器
        server  192.168.1.1:5000;
        server  192.168.1.2:5000;
        server  192.168.1.3:5000;
    }
}

上面是採用輪詢的方式實現端口轉發 負載均衡,還有幾種方式實現:

  • 權重方式:指定每個服務的權重比例,weight和訪問比率成正比,通常用於後端服務機器性能不統一,將性能好的分配權重高來發揮服務器最大性能.
 upstream lca {
        server  192.168.1.1:5000 weight=1;
        server  192.168.1.2:5000 weight=2;
        server  192.168.1.3:5000 weight=3;
    }
  • iphash
    每個請求都根據訪問ip的hash結果分配,經過這樣的處理,每個用戶固定訪問一個後端服務。
 upstream lca {//權重與iphash結合
        ip_hash
        server  192.168.1.1:5000 weight=1;
        server  192.168.1.2:5000 weight=2;
        server  192.168.1.3:5000 weight=3;
    }

解決跨域問題

跨域請求問題

為了提高瀏覽器的安全性,引入了跨域限制,也就是同源策略。

所謂源:如果兩個頁面(接口)的協議,端口或者域名都相同,那麼兩個頁面就有相同的源。如果在同一個頁面訪問不同源的資源,則會出現500錯誤。

  • 瀏覽器從一個域名的網頁去請求另一個域名的資源時,域名、端口、協議任一不同,都是跨域
  • 跨域限制主要是為了安全考慮

前端在請求後端資源時,往往會出現錯誤代碼500的情況。

nginx解決跨域問題

解決跨域問題的方式有很多,在這裏介紹通過nginx來解決跨域問題。

上面說到客戶端瀏覽器同時請求服務器的不同資源若不是同源就會引發同源策略問題,那要是服務器請求服務器呢?那麼照這個思路就想到了nginx的反向代理。
我們可以使用nginx的反向代理,將不同源的服務器集中到一個nginx web服務器下,也就是通過nginx來反向代理各個服務器。

server
{
 listen 80;
 server_name cola666.top;
// =/ 表示精確匹配路徑為/的url,真實訪問為http://localhost:8000
 location = / {
 proxy_pass http://localhost:8000;
 }
//當匹配到/a的url自動去localhost:8000
location /a{
 proxy_pass http://localhost:8001;
 }
 location /baidu/ {
 proxy_pass http://www.baidu.com/;
 }
}
  • 當有請求www.cola666.top的資源時,服務器接收到,會自動將請求內容交給localhost:8000web服務器處理。
  • 當有請求www.cola666.top/a下的資源時,服務器接收到,會自動將請求內容交給localhost:8001web服務器處理。
  • 當有請求www.cola666.top/baidu/下的資源時,服務器接收到,會請求百度的服務器資源。

雖然請求同源url,但實際上nginx幫助我們轉發到其他web服務器,所以實際上訪問的是非同源url資源,以實現跨域問題

location匹配規則
  • 當一個url匹配到多個location時,nginx將請求轉發給匹配最長的location來處理
  • 代理
 location /b/ {
 proxy_pass http://www.baidu.com/;
 }

 location /b/ {
 proxy_pass http://www.baidu.com;
 }

二者的區別為後者會將location中的/b/也添加進url中,比如,後者則代理到http://www.baidu.com/b/xxx,前者則是http:///www.baidu.com/xxx

下面為一個比較簡易的完整的nginx配置

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65; 
    server {
        listen       80;
        location / {
         proxy_pass http://localhost:8080;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

最後附加一個全面的nginx配置,包括靜態資源緩存,負載均衡,Https,等等

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
		#自定義的日誌格式
		log_format  main  '[($remote_addr) - ($remote_user [$time_local]) $request" '
		'($status) '
		'($http_user_agent)($http_x_forwarded_for)'
		'($upstream_addr) ($upstream_response_time) ($request_time) ]';

		proxy_cache_path /data/nginx/tmp-test levels=1:2 keys_zone=tmp-test:100m inactive=7d max_size=10g;

		access_log  /var/log/nginx/access.log  main;

		gzip  on;
		gzip_min_length 1k;
		gzip_buffers    16 64k;
		gzip_http_version 1.1;
		gzip_comp_level 4;
		gzip_types  text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
		gzip_vary on;
		sendfile            on;
		tcp_nopush          on;
		tcp_nodelay         on;
		keepalive_timeout   65;
		types_hash_max_size 2048;
		include             /etc/nginx/mime.types;
		default_type        application/octet-stream;

		include /etc/nginx/conf.d/*.conf;

		#allow to access by the same origin
		add_header 'Access-Control-Allow-Origin' '*';
		add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
		add_header 'Access-Control-Allow-Credentials' 'true';

	upstream zzm {
		server localhost:8000;
		#server locahost:8001;
	}

	server {
		listen       80 default_server;
		listen       [::]:80 default_server;
		server_name  _;
		root         /usr/share/nginx/html;

		# Load configuration files for the default server block.
		include /etc/nginx/default.d/*.conf;

		location /static{
			alias /var/static;
		}

		location /{
			proxy_cache tmp-test;
			proxy_cache_key $uri;
			add_header Access-Control-Allow-Origin *;
			add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
			add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
			#include uwsgi_params;
			proxy_pass http://zzm;

			# if django be used socket model to start up,using uwsgi of the following
			#uwsgi_pass 127.0.0.1:8000;
			#uwsgi_read_timeout 180;

			proxy_redirect off;
			proxy_set_header        Host    $host;
			proxy_set_header        REMOTE_ADDR     $remote_addr;
			proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

			real_ip_recursive on;
		}

		error_page 404 /404.html;
			location = /40x.html {
		}

		error_page 500 502 503 504 /50x.html;

		location = /50x.html {

		}
	}


	#配置https
	server {
		listen       443 ssl http2 default_server;
		listen       [::]:443 ssl http2 default_server;
		server_name  cola666.top;
		root         /usr/share/nginx/html;

		ssl_certificate  /var/xxx.pem;#ssl兩個證書路徑
		ssl_certificate_key /var/xxx.key;
		ssl_session_cache shared:SSL:1m;
		ssl_session_timeout  10m;
		ssl_ciphers HIGH:!aNULL:!MD5;
		ssl_prefer_server_ciphers on;

		# Load configuration files for the default server block.
		include /etc/nginx/default.d/*.conf;

		#靜態資源路徑
		location /static{
			alias /var/static;
		}

		location / {
			#緩存路徑
			proxy_cache tmp-test;
			proxy_cache_key $uri;

			add_header Access-Control-Allow-Origin *;
			add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
			add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
			#include uwsgi_params;
			#uwsgi_pass 127.0.0.1:8000;
			proxy_pass http://zzm;
			proxy_redirect off;
			#將客戶端ip地址交給服務器後端
			proxy_set_header        Host    $host;
			proxy_set_header        REMOTE_ADDR     $remote_addr;
			proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
			real_ip_recursive on;
		}

		error_page 404 /404.html;
			location = /40x.html {
		}
		error_page 500 502 503 504 /50x.html;
			location = /50x.html {
		}
	}
}
```![](https://img2020.cnblogs.com/blog/1624549/202006/1624549-20200628205157078-48009301.png)

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

丹麥政府擬減少氮排放量抗暖化 引發農業界反彈

摘錄自2019年11月26日中央通訊社報導

丹麥今天(26日)宣佈一項加速對抗溫室氣體的計劃,目標鎖定農業所排放的氮,但這項決定受到農業界的批評。環境食品部發布聲明表示,針對氮排放所定的新規則,目標為「確保在2020年前能減少3500公噸」的排放量。這比前任政府承諾的時間提早了一年。

此措施是更為廣泛的政府計劃中的一環,相關計劃預計在2030年前將溫室氣體排放量減少70%。

丹麥估計每年因農業排放的氮介於4萬8000到5萬4000公噸之間。全國農業聯盟表示,減少氮排放量是不可能的任務。全國農業聯盟的領導人默里德(Martin Merrild)表示:「這麼做的結果勢必非常昂貴,而且需要大量的勞動力。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

泰國10歲公鹿國家公園內暴斃!胃袋被「7kg塑膠袋」塞爆 巡邏員心都碎了

摘錄自2019年11月28日ETtoday新聞雲報導

泰國坤沙坦國家公園(Khun Sathan National Park)巡邏員,近日在園內發現一頭10歲大野生公鹿陳屍林中,身上卻沒有明顯外傷。經檢查後發現,這頭鹿生前吞下約7公斤重的塑膠垃圾,導致牠喪命。

根據英國廣播公司(BBC)泰語頻道報導,巡邏員11月25日在泰國北部楠府(Nan Province)納內縣(Na Noi)的國家公園內發現這頭鹿的屍體,並在牠的胃部發現塑膠袋、塑膠繩、橡膠手套、即溶咖啡包裝袋、泡麵包裝袋、毛巾、內褲等塑膠或其他垃圾。

坤沙坦國家公園野生動植物保護部門主任克利安薩(Kriangsak Thanompun)說,「我們認為,這頭公鹿在死亡前,早已長期誤食塑膠垃圾。官方初步認為是塑膠袋堵住牠的消化道,但我們仍會進一步詳細調查。」

消息傳開後在社群網站上引起熱議,網友紛紛批評部分隨意棄置垃圾的遊客。其中一名網友說,「有點責任感,把自己的垃圾帶走」;另一名網友則說,「這是從小就必須教育和養成的,否則成年後習慣就很難改變了。」

克利安薩則說,當局將會制定一項「三階段計畫」,目的是鼓勵當地居民主動清理國家公園內的塑膠或其他垃圾。該計畫包括要建立一個專責管理廢棄物的委員會,最終目標則是教育大眾不要隨意棄置垃圾。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

項目一再跳票?試試這一招:用Deadline倒逼生產力

我想也許你早就聽說過“Deadline是第一生產力”這句話,哪怕以前沒聽說過,我相信看完本文後,再也不會忘記這句話,甚至時不時還要感慨一句:“Deadline是第一生產力!”。

在日常生活中,Deadline倒逼生產力的例子比比皆是,比如說:

  • 上學時,臨近到要交作業的Deadline了,遊戲都顧不上玩了,急急忙忙趕作業。
  • 工作中,項目發布的Deadline臨近了,大家加班加點,熱火朝天趕着開發功能和修復bug。
  • 生活中,快到了要報稅的Deadline了,每個人都急急忙忙趕在Deadline前把稅給報了。
    不管多拖延的人,快到了Deadline的時候,總能爆發出驚人的生產力。這就是為什麼我們總是說:Deadline 是第一生產力。

與之相反的例子也很多,一些沒有Deadline的事情,總會能拖則拖,直到不能拖為止,或者乾脆不了了之。比如說:

  • 程序員常有一些絕妙的想法,比如寫一個開源項目,做一個App或者網站,結果因為沒有Deadline,結果總是開了個頭,就再沒結果了。
  • 工作中很多項目,雖然有計劃,但是沒有強Deadline,結果需求一改再改,計劃總是在跟着調整延遲,一直不能上線。
  • 比如說我這篇文章,打算寫很久了,但因為沒有Deadline一直拖着,最近終於給自己定了一個Deadline是這周末要寫出來,這才開始動筆。
    這些失敗的例子,歸根結底,一個很重要的原因就是沒有Deadline,導致不能發揮出生產力,或者生產力沒有用在正確的地方。

Deadline為什麼能創造出巨大的生產力?

為什麼Deadline這麼神奇,能創造出巨大的生產力?

無論是個人的事情還是項目,生產力低下,不能按時完成的原因,總結下來不外乎三種:

  1. 想太多
  2. 過於追求完美、關注細節
  3. 不夠專註

想太多

回想一下你做過的事或者項目,是不是會有“想太多”的情況。這並不是說在動手做之前先思考不好,而是有時候,因為停留在想的時間太長,遲遲沒有動手,導致想的太多對於做成一件事反而會成為一種阻礙。

比如說想寫一篇文章,打腹稿打的太久,最後都模糊了當初要寫的觀點,真下筆的時候,很多思考完全用不上;想寫一個程序,設計了太久,不僅花了太多的時間在不必要的設計上,最後留給寫程序的時間就不多了;做一個項目,在需求上想太多,遲遲不能確定,最後留給後面設計和開發的時間很短。

當有了明確的Deadline,想太多的問題就會有明顯的改善,該寫的文章就動手寫起來了,程序差不多時間也就動手編碼起來了,需求也能早點明確下來。

過於追求完美、關注細節

追求完美、關注細節不是壞事,像喬布斯就以關注細節而聞名,但對一個項目來說,有時候過於追求完美、關注細節反而會導致項目失敗。

比如說想打造“完美”的產品,導致產品一改再改,遲遲無法上線;程序設計時考慮各種未來可能的需求,導致設計非常複雜,很難實現。

想象一下,如果你本來想做一個完美的產品、設計一個完美的架構設計,但是有個很嚴格的Deadline,必須要保證在Deadline前交付,那麼你是不是就不會那麼追求完美和細節,而是抓住最核心最主要的功能和設計,先保證能交付。

不夠專註

當一件事沒有明確的deadline時,就很容易被其他事情分心,比如說上上網、玩玩遊戲,只有在deadline臨近時,才能專註在要做的事情上,不再被那些無關緊要的事所分心。

借用時間四象限的理論,有了Deadline,你要做的事情就變成了“重要並且緊急”,否則就會變成“重要不緊急”甚至是“不重要不緊急”,以至於一拖再拖。

結合項目管理金三角來分析

我曾經在《怎樣平衡軟件質量與時間成本範圍的關係?》一文中提到了項目管理金三角的理論,也就是軟件質量和時間成本範圍三者之間是相互制約的關係。

結合前面的分析:

  • “想太多”的問題本質上是在壓縮了你的有效時間和擴大了範圍,導致失控;
  • “過於追求完美、關注細節”的問題本質上是擴大了範圍,導致失控;
  • “不夠專註”則是一些不重要的事情擠壓了你的時間。

而當你的項目有強Deadline的時候,說明金三角的三條邊中,時間這條邊是固定住的,只能少不能多,那你就只能去調整範圍和成本另兩條邊。而成本很多時候也是不能動的,最終結果就是縮小範圍和有效利用時間。

所以說,Deadline之所以能提升生產力,歸根結底,是由於利用Deadline,倒逼着你縮小“範圍”,做當前最重要最有價值的事情;利用Deadline,讓你專註,不浪費時間在不重要的事情上。從而可以把Deadline,變成第一生產力。

如何在項目中應用好“Deadline 是第一生產力”?

既然Deadline是第一生產力,那是不是只要凡事設置一個Deadline,就萬事大吉,自然就可以把事情做好?把項目完成好?

顯然也不是那麼簡單的事情!並不是隨便把一個時間點設成Deadline,就可以馬上激發生產力。

首先你的Deadline是否有一定的強制性?

Deadline之所以能成為Deadline,就是因為它具有一定的強制性,Deadline到了之後沒能完成會有一定後果。比如說你作業沒能按時交,那麼分數就會受影響;項目沒能按時交付,績效就會受影響。

很多優秀的程序員,在公司的項目中能高效的完成任務,相反自己在做Side Project的時候卻各種拖延,難以交付,就是因為無法給自己定一個Deadline,就算定了時間點,到時間沒能完成也不用承擔什麼後果,自然就難以將Deadline變成生產力。

有時候如果自己真的難以執行,可以讓家人朋友幫助監督,或者可以學學亞馬遜的逆向工作法(Working backwards),在打造一個新產品前,不是按傳統的需求、設計、開發、測試和發布流程,而是先寫新聞稿,然後開新聞發布會告訴大眾要打造一個什麼樣的產品,以及什麼時間發布,再去設計開發。這樣在寫新聞稿的時候就想清楚你的產品要交付的最核心的功能是什麼,以及你的Deadline是什麼。

當你把要做的事情和Deadline當作牛逼吹出去了,要想不被人笑話,就要考慮為你吹過的牛逼奮鬥,保證在Deadline之前有所交付了。

然後你的Deadline是否具有可操作性?

成功的Deadline一定都是以科學的計劃為基礎的,否則不切實際的Deadline就會鬧出像“兩個女人5個月生孩子”這樣的笑話。

怎麼樣的Deadline才算具有可操作性呢?

首先Deadline的時間點不宜太遙遠。

當你的Deadline定的太過遙遠,只有在Deadline臨近的時候,才能發揮出作用,但可能已經太遲了。

傳統的瀑布模型開發軟件就是典型的例子。使用瀑布模型開發軟件項目,也會有一個項目發布的Deadline,但是這個Deadline通常在幾個月甚至一年之後,結果通常就是開發過程前松后緊,剛開始不忙,臨到上線時加班加點。

後來針對這種情況,一個改善的方案就是設置里程碑,里程碑本質上就是把一個長的Deadline拆分成幾個短的Deadline,比如說需求分析完成是一個裡程碑、開發完成是一個裡程碑。這樣的藉助一個個裡程碑,讓Deadline貫穿項目始終,持續的激發生產力。

然後Deadline到了必須要有交付。

很多人有追求完美的情結,即使Deadline到了,因為覺得產品不完美而不願意交付,所以寧可將Deadline不斷調整,一直延期,最終導致Deadline形同虛設。

完美是沒有止境的,在你眼裡不完美的東西也許在其他人而言,已經可以滿足需求了。Deadline的一個意義也在於通過Deadline,讓你在有限的時間內必須要有交付,倒逼着你放棄完美清潔,想清楚什麼是你應該交付的最重要的東西。

交付,也不意味之交付一個漏洞百出半成品給大眾,而是通過縮小範圍,交付一個完成的最小可用的版本。

另外軟件的交付也分兩種,一種是內部的可供測試的版本,一種是外部的正式發布的版本。比如像Chrome (Chrome Release Cycle) 的開發,會交付不同的版本給不同的用戶,比如每天交付的開發版本,但是只是內部人員使用。還有Beta版本,只是給一部分測試用戶,最終交付給用戶的,已經是一個經過反覆測試完善的穩定版本了。

再有就是Deadline到了必須要有完整的交付。

前面說的里程碑的方案可以很好的解決Deadline太長的問題,但也有問題,那就是在里程碑的Deadline到了的時候,雖然有交付,但交付的產物並不是十分清晰。比如說需求設計里程碑到了,只是一些模糊不清的需求文檔。結果就只能是基於這種模糊不清的需求文檔,邊開發邊修改,導致後續因為需求修改而產生很多不必要的浪費。

所以Deadline到了的時候,不能交付一個半成品或者模稜兩可的結果,而必須是一個完整的結果,否則這樣的Deadline,生產力是大打折扣的。

最後再給你看一個在軟件項目中,應用好“Deadline 是第一生產力”的經典例子。

敏捷開發的時間盒子

可能你已經知道敏捷開發,每天都在用敏捷開發管理軟件項目,也許你還不知道什麼是敏捷開發,在這裏我並展開多講,只講其中的時間盒子(Time Boxing)概念。

在敏捷開發中,一個軟件項目的開發,是採用的迭代開發的模式,並不是一次交付完整的產品,而是通過一個個的迭代,每次交付一部分可以運行的產品,最終交付完整的交付。

每一個迭代都是一個固定時長的時間盒子,時間通常不會太長,1-4周左右,但每個迭代結束,都要求要交付可執行的產品。

這個時間盒子本質上就是一個個的Deadline,每次時間盒子的結束點就是一個Deadline。那這樣做有什麼意義呢?

首先,每次迭代前,你要計劃好:當前迭代要做哪些事情?deadline到了的時候能交付什麼?

因為有Deadline的壓力,每次迭代時間是有限的,而你又必須要交付,那麼就會倒逼着你在計劃的時候,會優先選擇當前優先級最高的任務,專註在重要的事情上。

然後,在迭代的過程中,你要盡可能的提升效率,保證在Deadline之前能交付。

如果你想要在Deadline之前盡可能的交付更多的東西,那就會倒逼着你去提升效率。

所以你在設計的時候,只會做剛剛好的設計;所以你會寫自動化測試,從而提升測試的效率;所以你會採用像CI/CD這樣的工具,幫助你將很多工作自動化,提升效率。

最後,在迭代完成的時候,Deadline到了,你一定要有完整的交付。

前面說到了:在Deadline到了后,有交付、有完整的交付非常重要。這也會倒逼着你去思考如果提升發布版本的質量。

要保證你有一個穩定的可交付的版本,在敏捷開發中有很多很好的實踐:

  • 首先是要有充分的測試,完全人工測試顯然是跟不上快速迭代的節奏的,所以要有大量自動化測試來輔助,保證可以同自動化的方式覆蓋各種測試用例;
  • 然後需求不能頻繁變更,這就意味着在一個迭代中,通常不會接受需求的變更;
  • 還有就是採用分支的方式來開發新功能或開發bug,只有代碼審查和測試通過才能合併,這樣你就有一個穩定的隨時可以發布的分支。

敏捷開發的時間盒子,就是一個藉助Deadline來提升生產力的經典應用。藉助Deadline,倒逼着你專註於重要的事,倒逼着你提升效率,倒逼着你按時交付可執行的內容。

即使你不是採用的敏捷開發的時間盒子來開發項目,其中很多藉助Deadline激發生產力的思想和方法,都可以借鑒到你的項目開發甚至是日常生活中。

Deadline就是第一生產力,希望你能理解和應用好Deadline,幫助你提升生產力。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

亞馬遜經濟開發引衝突 NGO不畏強權抗爭多年

摘錄自2019年11月30日中央通訊社巴西報導

環境保護與經濟發展孰輕孰重一直是受到矚目的議題。巴西亞馬遜雨林主要觀光目的地之一Alter do Chao聚落一直受到開發商青睞,當地NGO不畏強權,守護土地,抗爭多年。

巴西北部巴拉州刑警3天前拘捕Alter do Chao社區消防隊4名志工消防員,指控他們在亞馬遜雨林故意製造火災,以獲取國際金援,引起當地社運人士、原住民和環保團體抗議。

在近百個非政府組織(NGO)聯合施壓下,巴西法院昨天(29日)傍晚下令釋放這4名協助撲滅該地區森林火災的非政府組織Alter do Chao社區消防隊成員,但當地與非政府組織的緊張關係已經持續幾10年。

桑塔林觀光局指出,2018年約19萬名遊客造訪Alter do Chao。該地區的旅遊熱潮使村莊周圍地區,房地產開發商具有強烈的開發興趣。一方面,有強大的地方家族勢力和企業家主張在以清澈的河水和白色的沙灘而聞名的塔巴鳩斯(Tapajos)河沿岸建造大型酒店和度假村。另一方面,社運人士、例如與被逮捕的Alter do Chao社區消防隊有聯繫的環保團體,則主張對環境衝擊較小的旅遊業,以保留該區域的特點,並防止傳統社區被驅逐趕離。

巴拉聯邦大學(Ufpa)社會學家托瑞斯(Mauricio Torres)指出,Alter do Chao的爭議邏輯不同於亞馬遜其他區域,當地的旅遊文化、環境保護與經濟開發衝突,才是促成逮捕志工消防員的真實背景。

托瑞斯說,這是屬於一個一直在擴大發展的城市的衝突,有傳統社區面臨被驅逐趕離的壓力,但幕後推手不是木材商或農牧場,而是聚焦於旅遊業的房地產投機與開發。

有論點指出,巴拉州刑警對志工人員進行預防性拘留,指控他們自行引發火災,之後加以撲滅,以獲取國際機構的金援。但一名不願具名、害怕遭到報復的聯邦公務員告訴巴西媒體,社運人士、大學生和原住民強烈反對,致使提案沒有取得進展,所以在當地活動的環保團體都相信逮捕志工消防員的行動含政治動機。巴拉州長巴爾巴柳(Helder Barbalho)昨天已宣布撤換負責此案的警長,並質疑行動的合法性。

聯邦檢察廳自2015年以來進行的調查指出,非法佔領土地和房地產投機,是導致Alter do Chao環境退化的因素,「由於該地區是巴西最著名的度假勝地之一,成為旅遊和房地產業的爭相競奪的目標,且經常受到公共土地入侵者的壓力。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

UN氣候變化綱要公約 締約方大會登場

摘錄自2019年12月2日公視、中央通訊社報導

聯合國氣候變化綱要公約,第25次締約方大會在西班牙舉行。而聯合國秘書長古提瑞斯也在大會前夕強調,說氣候變遷的危機已經「迫在眉睫」,呼籲各國要加強行動。同時也宣布,請來即將卸任的英國央行總裁卡尼,從明年開始出任氣候行動與氣候融資的新特使。

卡尼主張氣候風險管理必須轉型,投資淨零碳排放必須成為主流,未來將會盡全力,促使氣候變遷的影響成為財務報告、風險管理和報酬計算的重點。

這場大會原訂12月2號到13號在智利登場,但因為國內動亂,改在西班牙舉行,包括國家領袖、科學家、談判人員和環保運動人士等兩萬多人參與。這也是未來一年一連串國際密集協商的開端,要為明年11月格拉斯哥舉行的全球氣候峰會鋪路,屆時各國將依照巴黎氣候協定要求,提交對抗暖化的具體減碳方案,以便達成把全球溫度控制在比工業化升高1.5度到2度之內的目標。

目前幾乎全球各國都簽署了巴黎氣候協定,但排碳大戶美國,上個月4號已經展開了為期一年的退出程序。這次會議,美國只派層級不高的外交代表團,由負責環境科學事務的首席副助理國務卿伯尼卡特率隊。民主黨籍的眾議院議長裴洛西則率國會代表團參加,當中也沒有共和黨議員。

古提瑞斯今(2日)在氣候峰會的開幕全體會議上表示,面對威脅自身文明的氣候危機,人類必須在即時行動、追求希望,或是無動於衷、舉手投降之間作出抉擇。

世界氣象組織表示,過去5年是有紀錄以來最炎熱的5年,而且大氣裡導致地球暖化的二氧化碳(CO2)濃度已達300萬至500萬年來未見的程度。

古提瑞斯說:「現在北極圈永凍層比預測早70年融化。南極洲融化速度是10年前的三倍,海平面上升速度比預期更快。而且全球超過2/3的巨型都市都靠海。」根據近期研究,到2050年以前,全球會有超過1億5000萬人身處沿海洪患區。

去年聯合國一份重要報告則指出,若要防止氣溫升幅超過攝氏1.5度,全球經濟須在世紀中以前達成碳中和(carbon neutral)。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

日本宣示維持燃煤發電 透過技術研發減少排碳

摘錄自2019年12月3日中央通訊社報導

日本政府經濟產業大臣梶山弘志今天(3日)表示,「希望將燃煤電廠留作發電選項之一」,表達日本政府除了繼續燃煤發電,也將以透過技術研發減少排碳作為目標。

日本放送協會(NHK)報導,聯合國氣候變化會議(COP25,聯合國氣候變化綱要公約第25次締約方會議)昨天在西班牙馬德里開幕,而在之前的聯合國環境規劃署(UNEP)報告書中,要求日本停止興建會排放大量溫室氣體的燃煤火力發電廠等,提出批評燃煤火力發電廠的意見。

對此,梶山上午在內閣會議後記者會上表示,日本政府希望把燃燒像煤炭這種化石燃料的火力發電廠,留作發電的選項之一,「為邁向未來的最佳能源組合,考量所有能源選項非常重要」。

梶山表示,站在日本政府立場,會盡可能減少對核電的依賴度,並增加再生能源發電比率來減少排放二氧化碳,在非常困難的條件下持續推動技術研發。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

深入理解java虛擬機系列初篇(一):為什麼要學習JVM?

前言
本來想着關於寫JVM這個專欄,直接寫知識點乾貨的,但是想着還是有必要開篇講一下為什麼要學習JVM,這樣的話讓一些學習者心裏有點底的感覺比較好…

原因一:面試

不得不說,隨着互聯網門檻越來越高,JVM知識也是中高級程序員階段必問的一個話題!現在不像以前了,以前會點html都好找工作,現在由於學習軟件的人越來越多,而且每年大學生都在畢業(而老一輩的也很少換工作)人只會越來越多,隨便在大街上拉一個頭髮茂盛的大叔都可能就是搞軟件的,現在有一股妖風,不管啥公司都慢慢像阿里這樣的大公司靠近,面試不問點jvm、併發、分佈式都不好意思(雖然公司可能沒有用到,雖然可能僅僅CURD),老是覺得問問這些顯得逼格高點,不管處於什麼原因很多公司的確都是這樣的!

所以我不得不相信很多人一開始接觸 Java 虛擬機只是因為面試需要用到,所以硬着頭皮去學。所以很多人對於為什麼要學虛擬機這個問題,一致的答案皆是:因為面試。

其實學習JVM並不僅僅在於面試,而在於更深入地理解 Java 這門語言,以及為未來排查線上問題打下基礎。其實說白了,還是得先 好(通)好(過)學(面)java(試)….

然而現實就是這樣,畢竟現實源於生活!也正是因為生活學習JVM為了面試的同時也為今後更好的學習java打下了基礎!

原因二:為了深入地理解 Java 這門語言

學習 Java 虛擬機能深入地理解 Java 這門語言。對於剛剛工作一兩年的朋友來說,各個 API 都沒用熟,自然不會去深入研究 Java 中的各種細節。如果你這輩子只甘心做一個平庸的Java碼農,那麼你完全沒有必要去學習JVM相關的知識。

但對於工作了三年以後的朋友來說,很多時候你要解決一個問題必須深入到字節碼層次去分析,你才能得到準確的結論,而字節碼就是虛擬機的一部分。

深入地理解 Java 這門語言實例:

1、我們常用的布爾型 Boolean,我們都知道它有兩個值,true 和 false。但你們知道其實在運行時,Java 虛擬機是沒有布爾型 Boolean 這種類型的。Boolean 型在虛擬機中使用整型的 1 和 0 表示。

2、我們都知道類路徑和類名唯一確定一個類,但事實上並不是這樣。或者說,我們前面說的結論只是表面上的。如果深入到虛擬機層面來說,類加載器、類路徑、類名才唯一決定一個類。也就是說,如果兩個不同的類加載器它們加載同一個 class 類文件,那這兩個類加載器加載的類就是不同的。

以上兩個例子如果你不懂虛擬機的一些基礎知識,那麼你就很難深入理解一些細節。

不說別的,就光和同事聊天,同事說到什麼新生代老年代問你一個GC日誌排查,你沒有JVM基礎,賊尬,那個時候你就只會喊我C牛B….

原因三:學習虛擬機是為了今後更好的解決線上排查問題

學習虛擬機是為線上排查問題打下基礎。我們知道我們一個 Java 應用部署在線上機器上,肯定時不時會出現問題。除去網絡、系統本身問題,很多時候 Java 應用出現問題,就是 Java 虛擬機的內存出現了問題。要麼是內存溢出了,要麼是 GC 頻繁導致響應慢等等。

那如何解決這些問題呢?首先,你必須學會看懂日誌吧。那麼你就必須要看得懂 GC 日誌,這是 Java 虛擬機內容的一部分。你看懂了 GC 日誌,那麼你就得明白什麼是年輕代、老年代、永久代、元數據區等,這些就是 Java 虛擬機的內存模型。你懂了 Java 虛擬機的內存模型,那你就得知道 Java 虛擬機是如何進行垃圾回收的,它們使用的垃圾回收算法是怎樣的,它們有何優缺點。接下來就是各種垃圾回收器的特性。

你看,這一切東西都是相關聯的。你想要解決線上的 Java 應用崩潰問題,那麼你就必須學會 GC 日誌。要看懂 GC 日誌,就必須學習 Java 虛擬機內存模型。要看懂 Java 虛擬機內存模型,你就要學會垃圾回收機制等等。

學習JVM的好處

學習JVM對於一個Java程序員的好處大概可以概括為下六點:

1、能夠明白為什麼Java最早期被稱為解釋型語言,而後來為什麼又被大家叫做解釋與編譯並存的語言(了解JVM中解釋器以及即時編譯器就可以回答這個問題);
2、你能夠理解動態編譯與靜態編譯的區別,以及動態編譯相對於靜態編譯到底有什麼好處(JVM JIT);
3、能夠利用一些工具,jmap, jvisualvm, jstat, jconsole等工具可以輔助你觀察Java應用在運行時堆的布局情況,由此你可以通過調整JVM相關參數提高Java應用的性能;
4、可以清楚知道Java程序是如何執行的;
5、可以明白為什麼Java等高級語言具有可移植性強的特性。 其實這個問題相當於“為什麼C/C++程序員需要學體繫結構與編譯原理?“
6、能夠知道你的頭髮是怎麼沒有的

關於我之後的JVM專欄

其實在開始寫JVM專欄之前就很想寫一個併發編程專欄了,想了很久,最後還是決定先寫一個JVM專欄!學習JVM有一個最大的特點就是….學了就忘,嗯哼~

由於虛擬機種類繁多這裏就不一一列舉,最常用的就是Hotspot虛擬機(翻譯過來就是 熱 地點、斑點,理解為熱點也行)以後該專欄都是以Hotspot虛擬機為準的文章。

如果想要更深入的理解JVM推薦看周志明老師的《深入理解Java虛擬機》。實戰類型的,可以看葛一鳴老師的《實戰Java虛擬機》

為了方便大家學習JVM,不用去網上找相關書籍,博主準備了周志明老師的《深入理解Java虛擬機》电子書,慢慢啃吧hhhhhhhh…

周志明老師的《深入理解Java虛擬機》:
提取碼:i3xz

以下是本JVM專欄的文章:

盡量抽空更新…

再次提醒:學習JVM有一個最大的特點就是….學了就忘,嗯哼~

最後,歡迎各位關注我的公眾號,一起探討技術,嚮往技術,追求技術…

參考:
《深入理解Java虛擬機》

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

光一個塑膠瓶就有526隻受困 偏遠離島至少50萬隻寄居蟹死於塑膠垃圾

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑

紐西蘭「白島火山」突襲式噴發:登島旅行團5死27失聯

摘錄自2019年12月9日聯合新聞網「轉角國際」報導

「島上已確定5死,但死傷數量恐不止這樣。」紐西蘭北島豐盛灣區的火山奇景名勝——白島(White Island,毛利語稱「Whakaari 」)——當地時間9日下午2時11分,突然無預警噴發。雖然噴發的時間與規模都不大,但事前全無偵測到地質活動的徵兆,因此噴發當下,島上仍有近百人的登島旅行團。目前紐西蘭總理已出面坐鎮警急應變,並派出警消海巡登島搜救,但直到傍晚為止已確認5人死亡、「20~30人仍下落不明」;已被救出的旅客則有多人遭火山碎屑集中,或遭噴發的高溫蒸氣嚴重灼傷,但由於災害海域已經入夜且仍有噴發可能,「因此救難特遣隊目前沒有辦法登島救援失聯者。」

位於紐西蘭北部沿海的「白島」,是地質景觀極為壯麗的海上火山島。其與紐西蘭北島的火山系統同為一脈,皆屬於活躍的「陶波火山帶」(TVZ)。由於過往白島的頻繁噴發,因此原住民毛利人稱其為「劇烈的火山」(Whakaari);而當英國探險家庫克船長(James Cook)於16世紀帶領歐洲艦隊航至紐西蘭後,則因Whakaari島上的灰白火山灰與噴發蒸氣,取名稱之為「白島」。

由於火山地形險峻不適人居,白島長年無人居住、鮮少開發,唯在19世紀末期曾短暫開礦採挖硫礦,但礦坑聚落卻在1914年遭山崩而下的火山泥流毀滅,白島礦業從此終止,直到1970年代才被列為保護區,並開始小額開放預約制的「登島觀光」。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

※幫你省時又省力,新北清潔一流服務好口碑