日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

重新加一个window_Activity、View、Window关系,进程间通信,责任链模式,Https,数据存储...

發布時間:2023/12/10 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重新加一个window_Activity、View、Window关系,进程间通信,责任链模式,Https,数据存储... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

碼仔,今天就給大家帶來了《每日一道面試題》的第九期:

01

理解Activity View window的關系?

Activity像一個工匠(控制單元),Window像窗戶(承載模型),View像窗花(顯示視圖)LayoutInflater像剪刀,Xml配置像窗花圖紙。?

  • Activity構造的時候會初始化一個Window,準確的說是PhoneWindow。?

  • 這個PhoneWindow有一個“ViewRoot”,這個“ViewRoot”是一個View或者說ViewGroup,是最初始的根視圖。?

  • “ViewRoot”通過addView方法來一個個的添加View。比如TextView,Button等?

  • 這些View的事件監聽,是由WindowManagerService來接受消息,并且回調Activity函數。比如onClickListener,onKeyDown等

  • 02

    Android進程間通訊的幾種姿勢?

    進程間通信即IPC,英文全稱Inter-Process Communication,是指進程間數據交互的過程. Android底層是基于Linux,而Linux基于安全考慮,是不允許兩個進程間直接操作對方的數據,這就是進程隔離. 六種常用姿勢:

  • Bundle

  • 文件共享

  • AIDL

  • Messenger

  • ContentProvider

  • Socket

  • 03

    談談對責任鏈模式的理解

    使很多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈,并沿著這條鏈傳遞該請求,直到有一個對象處理它為止。

    何時使用:

  • 有許多對象可以處理用戶請求,希望程序在運行期間自動確定處理用戶的那個對象。

  • 希望用戶不必明確指定接收者的情況下,想多個接受者的一個提交請求

  • 程序希望動態的指定可處理用戶請求的對象集合

  • 優點:

  • 低耦合

  • 可以動態的添加刪除處理者或重新指派處理者的職責

  • 可以動態改變處理者之間的先后順序

  • 通常來說,一個純粹的責任鏈是先傳給第一個處理,如果處理過了,這個請求處理就此結束,如果沒有處理,再傳給下一個處理者。

    比如我們有一個數學公式,有一個整數輸入,要求小于0時返回絕對值,其次,小于10的時候返回他的二次冪,否則,返回他本身:

    首先我們要定義一個接口(處理者),來描述他們共有的行為:

    public interface Handler {
    int handleRequest(int n);
    void setNextHandler(Handler next);
    }

    然后是具體的處理者

    public class Handler1 implements Handler {
    private Handler next;
    @Override
    public int handleRequest(int n) {
    if(n<0) return -n;
    else{
    if(next==null)
    throw new NullPointerException("next 不能為空");
    return next.handleRequest(n);
    }
    }

    @Override
    public void setNextHandler(Handler next) {
    this.next = next;
    }
    }public class Handler2 implements Handler {
    private Handler next;
    @Override
    public int handleRequest(int n) {
    if(n<10) return n*n;
    else{
    if(next==null)
    throw new NullPointerException("next 不能為空");
    return next.handleRequest(n);
    }
    }

    @Override
    public void setNextHandler(Handler next) {
    this.next = next;
    }
    }public class Handler3 implements Handler {
    private Handler next;
    @Override
    public int handleRequest(int n) {
    if(n<=Integer.MAX_VALUE) return n;
    else{
    if(next==null)
    throw new NullPointerException("next 不能為空");
    return next.handleRequest(n);
    }
    }

    @Override
    public void setNextHandler(Handler next) {
    this.next = next;
    }
    }public class TestUse {
    public static void main(String args[]){
    Handler h1,h2,h3;
    h1 = new Handler1();
    h2 = new Handler2();
    h3 = new Handler3();
    h1.setNextHandler(h2);
    h2.setNextHandler(h3);
    System.out.println(h1.handleRequest(-1));
    System.out.println(h1.handleRequest(5));
    System.out.println(h1.handleRequest(9999));
    }
    }

    此處責任鏈中的具體處理者的順序是不能重設的,否則可能會引發錯誤,但更多的情況是完全可以隨意更改他們的位置的,就上例中,只要把if中的條件重新設置(各自獨立,不相互依賴),就可以了。

    我們使用責任鏈模式的時候,不一定非得某一處理者處理后就得終止請求的傳遞,如果有其他需求,我們依然可以繼續傳遞這個請求到下一個具體的處理者。

    04

    Https三次握手四次揮手?

    三次握手:在TCP/IP協議中,TCP協議提供可靠的連接服務,采用三次握手建立一個連接。(1)第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,并進入SYN_SEND狀態,等待服務器確認;(2)第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器 進入SYN_RECV狀態;(3)第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入 ESTABLISHED狀態,完成三次握手。完成三次握手,客戶端與服務器開始傳送數據.

    四次分手:(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送。(2)服務器B收到這個FIN,它發回一個ACK,確認序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。(3)服務器B關閉與客戶端A的連接,發送一個FIN給客戶端A。(4)客戶端A發回ACK報文確認,并將確認序號設置為收到序號加1。

    05

    Android的存儲方式?

    Android提供了5中存儲數據的方式,分別是以下幾種:

    1、使用Shared Preferences存儲數據,用來存儲key-value,pairs格式的數據,它是一個輕量級的鍵值存儲機制,只可以存儲基本數據類型。

    2、使用文件存儲數據,通過FileInputStream和FileOutputStream對文件進行操作。在Android中,文件是一個應用程序私有的,一個應用程序無法讀寫其他應用程序的文件。

    3、使用SQLite數據庫存儲數據,Android提供的一個標準數據庫,支持SQL語句。

    4、使用Content Provider存儲數據,是所有應用程序之間數據存儲和檢索的一個橋梁,它的作用就是使得各個應用程序之間實現數據共享。它是一個特殊的存儲數據的類型,它提供了一套標準的接口用來獲取數據,操作數據。系統也提供了音頻、視頻、圖像和個人信息等幾個常用的Content Provider。如果你想公開自己的私有數據,可以創建自己的Content Provider類,或者當你對這些數據擁有控制寫入的權限時,將這些數據添加到Content Provider中實現共享。外部訪問通過Content Resolver去訪問并操作這些被暴露的數據。

    5、使用網絡存儲數據

    06

    結束語?

    如果你有好的答案可以提交至:

    https://github.com/codeegginterviewgroup/CodeEggDailyInterview

    往期文章:

    • ? 《每日一道面試題》第一期

    • 《每日一道面試題》 第二期

    • 《每日一道面試題》 第三期

    • 《每日一道面試題》第四期

    • ? 《每日一道面試題》第五期

    • 《每日一道面試題》 第六期

    • 《每日一道面試題》 第七期

    • 《每日一道面試題》 第八期

    專屬社群:

    《這件事情,我終于想明白了》?

    今日問題:

    大家想看什么類型的文章?

    總結

    以上是生活随笔為你收集整理的重新加一个window_Activity、View、Window关系,进程间通信,责任链模式,Https,数据存储...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。