原创 android圖片獲取加載小結

獲取方式 1.內存 內存緩存主要使用LRU緩存算法,引用support-v4中的LruCache, 通過鍵值對的形式獲取到相應的bitmap,配置如下: //初始化緩存策略 int maxMem =

原创 龍龜的文具盒誕生啦

Hello World! 不知不覺已經是大三了,回想以前還是那麼稚氣呢。 大一的時候喜歡參加各種各樣的東西,涉獵了不同的角色,感覺跟人打交道的過程中還是挺棒的,讓自己累並充實着,大一留下來的是滿滿的激情與情懷呢hh。 大二了,知道

原创 android線程小結

線程 線程是操作系統調度的最小單元,在android中,主線程又稱爲UI線程,執行的是與界面渲染等操作, 而工作線程一般承擔耗時多的操作。 Android中線程的實現方式有以下幾種: 1.AsyncTask 線程池 2.

原创 android啓動模式小結

啓動模式 standard 標準模式,會在啓動他的activity中的任務棧中創建activity實例,注意:application context是沒有任務棧的。 singleTop 單棧頂模式。同一個任務棧裏如果需要啓動的ac

原创 tomcat部署https,用openssl簽發證書

常見後綴 cer,crt證書(不支持私鑰) 一般是簽署後CA頒發的證書,實質是CA用私鑰在申請者的公鑰上簽名 —–BEGIN CERTIFICATE—– csr:(Certificate Signing Request) 申請簽名的證

原创 mac下tomcat啓用APR模式

前言 配置完SSL,我其實還是希望通過wireshark分析一下SSL握手協議,APR模式其實是想用來嘗試下能否實現握手協議的,畢竟加入了openssl。事實證明,並沒有相關干係,但畢竟折騰了挺久的,還是稍作記錄下=。= BIO NIO

原创 android IPC通信小結

通信方式介紹 Bundle 文件共享 AIDL Messenger ContentProvider Socket Bundle 適合單向數據傳輸,即進程A啓動進程B的服務或者其他組件時,通過intent.putExtra傳輸。

原创 基於VpnService實現網絡防火牆的思路

前言 網絡防火牆相信大家都司空見慣了,市面上app的原理也都以root,監聽底層傳輸狀況爲主,非root通過vpnService監聽數據的爲數不多。這個學期末,剛好學校有實訓課需要做應用,爲了補補網絡的知識,便踏上了非root防火牆,流量

原创 訪問一個網頁過程中發生了什麼

前言 本文以小明在圖書館連接網線,並訪問網頁爲例,剖析TCP/IP協議棧工作原理,讓讀者瞭解這神奇的計算機網絡底層協議的作用。 獲取本機的IP【DHCP】 當小明連上網線,通過以太網接口連上了學校的交換機,而校園網其實就是一個ISP(I

原创 vs2015實現緩衝區溢出攻擊

實驗環境: 編譯器:vs2015 系統:win10 64位 實驗原理 如上圖所示,棧地址增長方向是向低地址方向增長的,每次調用函數時,先把參數壓入棧底,然後會把被調用函數的返回地址(此地址爲call指令下一條指令)壓到棧底。另外還需

原创 win10下點擊開始菜單沒響應的解決方案

電腦症狀 電腦加載資源管理器巨慢,點擊開始菜單沒反應,整個系統卡頓十分厲害。 解決思路 排除無關軟件服務的影響。 win+R進入命令行,執行 msconfig,禁用掉非系統服務。 進入任務管理器,禁用掉無關軟件的啓動。 restart

原创 win10 explorer導致閃屏的解決方案

前言 昨天剛接到朋友的求助,一連上網之後發現電腦一直在閃屏,疑似中毒的可能,系統是win10的,於是嘗試按照慣例的方式進行故障排除。 猜測 第三方軟件與系統的衝突 系統更新引起的 驅動更新導致的不兼容(顯卡驅動) 惡意木馬入侵 曲折的

原创 利用緩衝區溢出越過if校驗

在上一篇文章中,詳細介紹瞭如何使用vs2015實現緩衝區溢出攻擊,接下來,將以一個實例來演示如何繞過if判定,執行業務邏輯代碼。 代碼設計 模擬攻擊的代碼很簡單,如下: 1. #include <stdio.h> 2. #includ

原创 Volley原理分析之網絡請求層

前言 13年google就推出volley了,作爲一個喜歡使用這個網絡請求框架的娃,也是時候研究研究下該框架的原理了。 初始化 初始化volley,大家都知道會調用Volley.newRequestQueue(),那我們就沿着源碼追溯下去

原创 View事件分發機制分析

談到View事件分發,相信大家都不陌生,我也自己琢磨了一下事件分發機制,從源碼分析,提取了關鍵的步驟,並做小小的總結。 主要相關的類與方法爲: ViewGroup: dispatchTouchEvent() onIntercept