<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          [建議收藏]緩存雪崩的處理辦法

          共 6416字,需瀏覽 13分鐘

           ·

          2022-07-26 15:58

          1. Mysql優(yōu)化器的參考標準

          mysql的索引是由mysql的server層的優(yōu)化器決定的

          2.Memcache和Redis單個key大小限制

          Memcache單個key(變量)存放的數(shù)據(jù)有1M的限制

          Redis單個key(變量)存放的數(shù)據(jù)有1G的限制

          3.緩存雪崩的處理辦法

          事前:進行系統(tǒng)壓力測試,在負載均衡層做限流處理,過載丟棄請求或者進入隊列

          事前:redis 高可用,主從+哨兵,redis cluster,避免全盤崩潰。

          事中:本地緩存 + 限流降級,避免 MySQL 被打死。

          事后:redis 持久化,一旦重啟,自動從磁盤上加載數(shù)據(jù),快速恢復緩存數(shù)據(jù)。

          緩存雪崩、擊穿、穿透,該如何避免?

          Redis中緩存雪崩、緩存穿透等問題的解決方案

          緩存穿透、緩存并發(fā)、緩存雪崩、緩存抖動、熱點緩存、緩存雙寫一致性等問題

          4.分布式id算法?

          雪花算法是 twitter 開源的分布式 id 生成算法,采用 Scala 語言實現(xiàn),是把一個 64 位的 long 型的 id,1 個 bit 是不用的,用其中的 41 bit 作為毫秒數(shù),用 10 bit 作為工作機器 id,12 bit 作為序列號。雪花算法SnowFlake生成唯一ID

          1 bit:不用,為啥呢?因為二進制里第一個 bit 為如果是 1,那么都是負數(shù),但是我們生成的 id 都是正數(shù),所以第一個 bit 統(tǒng)一都是 0。

          41 bit:表示的是時間戳,單位是毫秒。41 bit 可以表示的數(shù)字多達 2^41 - 1,也就是可以標識 2^41 - 1 個毫秒值,換算成年就是表示69年的時間。

          10 bit:記錄工作機器 id,代表的是這個服務最多可以部署在 2^10臺機器上哪,也就是1024臺機器。但是 10 bit 里 5 個 bit 代表機房 id,5 個 bit 代表機器 id。意思就是最多代表 2^5個機房(32個機房),每個機房里可以代表 2^5 個機器(32臺機器)。

          12 bit:這個是用來記錄同一個毫秒內(nèi)產(chǎn)生的不同 id,12 bit 可以代表的最大正整數(shù)是 2^12 - 1 = 4096,也就是說可以用這個 12 bit 代表的數(shù)字來區(qū)分同一個毫秒內(nèi)的 4096 個不同的 id。

          5.Redis內(nèi)存淘汰機制

          Redis過期--淘汰機制的解析和內(nèi)存占用過高的解決方案

          7. 常見MQ選型

          ActiveMQ 基于 Java 開發(fā)的, RabbitMQ 是基于 erlang 開發(fā)的。

          特性ActiveMQRabbitMQRocketMQKafka
          單機吞吐量萬級,比 RocketMQ、Kafka 低一個數(shù)量級同 ActiveMQ10 萬級,支撐高吞吐10 萬級,高吞吐,一般配合大數(shù)據(jù)類的系統(tǒng)來進行實時數(shù)據(jù)計算、日志采集等場景
          topic 數(shù)量對吞吐量的影響

          topic 可以達到幾百/幾千的級別,吞吐量會有較小幅度的下降,這是 RocketMQ 的一大優(yōu)勢,在同等機器下,可以支撐大量的 topictopic 從幾十到幾百個時候,吞吐量會大幅度下降,在同等機器下,Kafka 盡量保證 topic 數(shù)量不要過多,如果要支撐大規(guī)模的 topic,需要增加更多的機器資源
          時效性ms 級微秒級,這是 RabbitMQ 的一大特點,延遲最低ms 級延遲在 ms 級以內(nèi)
          可用性高,基于主從架構實現(xiàn)高可用同 ActiveMQ非常高,分布式架構非常高,分布式,一個數(shù)據(jù)多個副本,少數(shù)機器宕機,不會丟失數(shù)據(jù),不會導致不可用
          消息可靠性有較低的概率丟失數(shù)據(jù)基本不丟經(jīng)過參數(shù)優(yōu)化配置,可以做到 0 丟失同 RocketMQ
          功能支持MQ 領域的功能極其完備基于 erlang 開發(fā),并發(fā)能力很強,性能極好,延時很低MQ 功能較為完善,還是分布式的,擴展性好功能較為簡單,主要支持簡單的 MQ 功能,在大數(shù)據(jù)領域的實時計算以及日志采集被大規(guī)模使用

          8. 樹數(shù)據(jù)結構分類

          有序樹的定義:若將樹中每個結點的各子樹看成是從左到右有次序的(即不能互換),則稱該樹為有序樹(Ordered Tree)

          無序樹的定義:若將樹中每個結點的各子樹從左到右是沒有次序的(即可以互換),則稱該樹為無序樹

          9. 數(shù)據(jù),數(shù)據(jù)元素,數(shù)據(jù)項,數(shù)據(jù)對象的詳細理解

          1.數(shù)據(jù)(Data):數(shù)據(jù)就是用戶輸入到計算機被計算機程序處理的一些符號,比如圖片還有聲音等....

          2.數(shù)據(jù)元素(Data Element):是數(shù)據(jù)的基本單位,數(shù)據(jù)元素用于完整的描述一個對象,比如一個學生表,學生表也是由 數(shù)據(jù)元素和數(shù)據(jù)項組成的.

          3.數(shù)據(jù)項(Data ltem):是組成數(shù)據(jù)元素的!例如 學生表 的中的 "學號 姓名 性別"等數(shù)據(jù)項.

          4.數(shù)據(jù)對象:是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集,例如:整數(shù)數(shù)據(jù)對象的集合 N={1,2,3,4,5,6,7,...};

          10. 301和302跳轉的區(qū)別?PHP如何顯示301,302,403,404跳轉?

          301 Moved Permanently 永久重定向
          302 Moved Temporarily 臨時重定向(POST改為GET)
          307 Temporary Redirect 臨時重定向(保持POST)

          301一般用作永久跳轉,除非用戶清瀏覽器緩存,否則不會修改跳轉地址;
          302和307可以在后端修改跳轉地址,不同在于302會把POST轉為GET請求,307可以保持POST

          //301跳轉
          header("HTTP/1.1 301 Moved Permanently");
          Header("Location: http://www.baidu.com");
          //302
          Header("Location: http://www.baidu.com");
          //403
          header('HTTP/1.0 403 Forbidden');
          //404
          header('HTTP/1.1 404 Not Found');
          header("status: 404 Not Found");

          11. 復合索引的使用條件?

          復合索引只有在前面的字段為精確查詢時,才會用上后面的復合索引,一旦出現(xiàn)不精確查詢,則不會使用復合索引。

          select * from test where a=10 and b>10 order by c

          使用了a_b索引,order by c不使用索引

          12. sql語句從執(zhí)行到返回結果中間花費時間最長的環(huán)節(jié)是哪步?

          查詢結果的數(shù)據(jù)量越大返回時間越長,遠遠超過其他環(huán)節(jié)的占用時間。

          13.PHP模式修飾符

          模式修飾符 含義
          • i:正則表達式匹配時不區(qū)分大小寫
          • m:不加m時,被匹配的字符串被當成整體一行處理,^匹配開始位置,$匹配結束位置或匹配最后一個換行符;
          • 加m時,被匹配的字符串通過換行符當成多行處理,每行都與^和$包圍的正則進行匹配
          • s:正則表達式中的點號(.)將表示任何字符,包括換行符
          • x:正則表達式中除轉義外的空字符,其它空字符將被忽略
          • e:只用在正則替換的函數(shù)比如preg_replace()中,表示用一個函數(shù)替換內(nèi)容。該修飾符在高版本php中已不再使用,已被preg_replace_callback()所替代
          • A:匹配時會從字符串開始位置進行匹配
          • D:不加D時,$匹配結束位置或匹配最后一個換行符;
                 加D時,僅匹配結束位置;   如果設定了修飾符m則會忽略修飾符D
          • U:不加U時,是貪婪匹配,會最大量的找匹配部分;
                加U時,是非貪婪匹配,只找最小的匹配部分

          14. HTTP常用方法及作用

          • 一臺服務器要與HTTP1.1兼容,只要為資源實現(xiàn)GET和HEAD方法即可

          • GET是最常用的方法,通常用于請求服務器發(fā)送某個資源。

          • HEAD與GET類似,但服務器在響應中值返回首部,不返回實體的主體部分

          • PUT讓服務器用請求的主體部分來創(chuàng)建一個由所請求的URL命名的新文檔,或者,如果那個URL已經(jīng)存在的話,就用干這個主體替代它

          • POST起初是用來向服務器輸入數(shù)據(jù)的。實際上,通常會用它來支持HTML的表單。表單中填好的數(shù)據(jù)通常會被送給服務器,然后由服務器將其發(fā)送到要去的地方。

          • TRACE會在目的服務器端發(fā)起一個環(huán)回診斷,最后一站的服務器會彈回一個TRACE響應并在響應主體中攜帶它收到的原始請求報文。TRACE方法主要用于診斷,用于驗證請求是否如愿穿過了請求/響應鏈。

          • OPTIONS方法請求web服務器告知其支持的各種功能??梢圆樵兎掌髦С帜男┓椒ɑ蛘邔δ承┨厥赓Y源支持哪些方法。

          • DELETE請求服務器刪除請求URL指定的資源

          15. 常見header請求頭

          --示例
          vary告訴代理服務器/緩存/CDN,如何判斷請求是否一樣Vary: Accept-Encoding,User-Agent
          Rang請求一段內(nèi)存,如0到2000字節(jié),可用于斷點下載Rang bytes=0-2000
          Referer來源地址
          Upgrade切換協(xié)議版本Upgrade: HTTP/2.0, SHTTP/1.3
          User-Agent用戶信息User-Agent: Mozilla/5.0 (Linux; X11)
          X-Requested-Withnull 傳統(tǒng)請求;XMLHttpRequest Ajax請求

          16.外部排序使用的數(shù)據(jù)結構

          外部排序指的是大文件的排序,即待排序的記錄存儲在外存儲器上,待排序的文件無法一次裝入內(nèi)存,需要在內(nèi)存和外部存儲器之間進行多次數(shù)據(jù)交換,以達到排序整個文件的目的。

          外部排序最常用的算法是多路歸并排序,即將原文件分解成多個能夠一次性裝人內(nèi)存的部分,分別把每一部分調(diào)入內(nèi)存完成排序。然后,對已經(jīng)排序的子文件進行歸并排序。大規(guī)模數(shù)據(jù)存儲中,實現(xiàn)索引查詢這樣一個實際背景下,樹節(jié)點存儲的元素數(shù)量是有限的(如果元素數(shù)量非常多的話,查找就退化成節(jié)點內(nèi)部的線性查找了),這樣導致二叉查找樹結構由于樹的深度過大而造成磁盤I/O讀寫過于頻繁,進而導致查詢效率低下,那么如何減少樹的深度(當然是不能減少查詢的數(shù)據(jù)量),一個基本的想法就是:采用多叉樹結構(由于樹節(jié)點元素數(shù)量是有限的,自然該節(jié)點的子樹數(shù)量也就是有限的)。這樣我們就提出了一個新的查找樹結構——多路查找樹。根據(jù)平衡二叉樹的啟發(fā),自然就想到平衡多路查找樹結構,也就是B-tree(B樹結構)

          17. PHP三大模塊

          內(nèi)核、zend引擎、以及擴展層

          參考:[PHP內(nèi)核]

          18.opcode是什么?

          opcode 是Php腳本編譯后的中間碼,Zend引擎將源文件轉換成opcode代碼,然后在虛擬機上運行
          緩存opcode 后 可以加快網(wǎng)站的運行速度
          用apc 或者xcache 緩存可以緩存php的opcode

          19.字母如何轉二進制?

          A的ASCII碼是65,16進制對應41,二進制對應01000001

          a的ASCII碼是97,16進制對應61,二進制對應01100001

          20. Apache和Nginx的區(qū)別?

          21.PHP的魔術方法,魔術常量,超全局變量

          魔術方法

          __construct 
          __destruct 
          __call 
          __callStatic 
          __get 
          __set 
          __isset 
          __clone 
          __unset 
          __sleep 
          __wakeup 
          __toString 
          __invoke //反射:當嘗試以調(diào)用函數(shù)的方式調(diào)用一個對象時,__invoke() 方法會被自動調(diào)用。
          __set_stat

          魔術常量:所謂的魔術常量就是PHP預定義的一些常量,這些常量會隨著所在的位置而變化。

          __LINE__ 獲取文件中的當前行號。
          __FILE__ 獲取文件的完整路徑和文件名。
          __DIR__  獲取文件所在目錄。
          __FUNCTION__ 獲取函數(shù)名稱(PHP 4.3.0 新加)。
          __CLASS__  獲取類的名稱(PHP 4.3.0 新加)。
          __METHOD__ 獲取類的方法名(PHP 5.0.0 新加)。
          __NAMESPACE__ 當前命名空間的名稱(區(qū)分大小寫)。
          __TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定義時的名字(區(qū)分大小寫)。Trait 名包括其被聲明的作用區(qū)域(例如 *Foo\Bar*)。
          超全局變量(9個)
          $GLOBALS :儲存全局作用域中的變量
          $_SERVER :獲取服務器相關信息
          $_REQUEST :獲取POST和GET請求的參數(shù)
          $_POST : 獲取表單的POST請求參數(shù)
          $_GET : 獲取表單的GET請求參數(shù)
          $_FILES :獲取上傳文件的的變
          $_ENV : 獲取服務器端環(huán)境變量的數(shù)組
          $_COOKIE:獲取瀏覽器的cookie
          $_SESSION : 獲取session

          22.Linux新用戶配置文件的目錄

          /etc/skel/目錄是用來存放新用戶配置文件的目錄,當我們添加新用戶的時候,這個目錄下的所有文件會自動被復制到新添加的用戶的家目錄下。這個目錄下的所有文件都是隱藏文件(以.點開頭的文件)。

          23. 國標碼,區(qū)位碼,機內(nèi)碼,機器碼的區(qū)別?

          【國標碼】指國家標準漢字編碼:GB-2312

          【區(qū)位碼】區(qū)位碼在GB-2312中預留了一些空位,便于補充和擴展

          【機內(nèi)碼】漢字ASCII碼。指計算機內(nèi)部存儲,處理加工和傳輸漢字時所用的由0和1符號組成的代碼。

          【機器碼】計算機直接使用的程序語言,其語句就是機器指令碼。

          經(jīng)典面試題推薦
          2022年7月最新idea 激活碼
          2022年golang最新面試題來咯
          Go 語言筆試面試題(并發(fā)編程)
          50道MySQL面試題,經(jīng)典~
          Go 語言筆試面試題(基礎語法)

          瀏覽 33
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩欧美在线免费 | 日本不卡网 | 黄色A级视频 | 永久免费在线观看不卡黄网站 | 国产系列第一页在线观看 |