1. 實現listView, scroolView的iphone風格的邊緣拖動效果:
滾動視圖ScrollView與ListView是兩個平級視圖, 在拖動超出邊界時, 都會調用View的overScrollBy()方法, 這個方法設置了縱向滾動的上限爲0, 若是不設置這個上限, Listview就會從頂部拖動下來. 第二個問題, 回滾動畫如何改, 對於ScrollView, 這個android已經作好了, 對於ListView, 涉及到擡起時的速度, 在onTouchEvent()方法中, 若是速度爲0, 會走TOUCH_MODE_OVERSCROLL模式, 若是速度不爲0, 會走TOUCH_MODE_SCROLL模式, 速度爲0時, 是好的, 速度不爲0時, 會走到TOUCH_MODE_SCROLL模式中的另外一個判斷分支, 把這個判斷分支改爲須要的滾動動畫, 即TOUCH_MODE_OVERSCROLL部分的代碼搬過來.
ListView中的mEdgeGlowTop 是邊緣效果動畫, 把draw方法直接返回, 由此去掉邊緣模糊效果. java
2. 框架層分開資源
將res/res/values/public.xml中的相應組裏面, 按數字遞增添加資源項, 而後make update-api, 以後在應用中@android:drawable/id來引用新加資源. 對於分開資源的提交, 要將make update-api生成的current.txt提交上.
3. 賬戶問題
添加賬戶的服務在manifest.xml中要有
<meta-data
android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticatora" />
authenticatora.xml文件中帳戶名字必須與服務代碼中賬戶名字相同. 不然報進程id錯誤.
若是兩個服務添加了相名的帳戶, 也會報進程id錯誤.
服務調用AccountManager的addAccount.
把添加賬戶的服務作一個獨立的應用的好處是, 若是把這個任務放在通信錄中, 每次push通信錄時, 就要重啓手機, 才能添加sim卡賬戶, 在某個應用中, 若是找不到添加賬戶的時機, 就把這個放在獨立的應用中, 能夠解決沒必要重啓就可驗證. linux
4. scroolView的fillViewport
android:fillViewport="true" 若是android:layout_height設置爲具體的高度或撐滿, 則scroolview中只能顯示一個view. android
若是scroolView中只有一個view, 這個view要撐滿整個scroolView, 只將這個view設置不match_parent, 是不夠的, 還要將fillViewport屬性設置爲true. git
5. 電話撥號盤的翻轉動畫,
先翻轉90度, 動畫結束時調用監聽動畫結束的監聽器, 該監聽器將已經翻轉的view1設爲隱藏, 把將要顯示的view2設爲可見, 而後對view2翻轉90度, 在view2的動畫結束監聽器中要將view1與view2都旋轉到0度, 這樣下次能夠正常顯示. 而且對界面進行狀態更新.shell
6. 對話框與提示對話框
對話框爲Dialog類, 提示對話框爲AlertDialog.
Dialog類能夠設置爲佔滿整個屏幕. 代碼簡潔明瞭:
dialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar);
View v = LayoutInflater.from(context).inflate(R.layout.device_dialog, null);
((TextView)v.findViewById(R.id.device_number)).setText(deviceId.toString()); // deviceId.toString());
dialog.setContentView(v, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
dialog.show();
能夠設置標誌來設置觸摸方式等.編程
7. git pull(或git push)時, 出現輸入密碼問題
有一個緣由是運行了ssh-keygen, 覆蓋了原有的認證文件id_rsa.pub, 即服務器不認這個認證文件, 因此要找回原有的認證, 還好, 在gitolite/keydir目錄有這個認證文件, 把這個文件覆蓋認證文件id_rsa.pub, 這時輸入密碼, 就可正常從服務器下載代碼了, 但還有個問題, 每次要輸入密碼, 這是由於認證文件比服務器上的新, 即然能夠正常提交到服務器, 加一個gitolite-admin的管理用戶ligang, 在ligang這個用戶上, 改變gitserver用戶的認證文件, ubuntu
8. 管理用戶最好不要只用一個, 萬一那個掛了, 就很差恢復了, 因此最好用兩個管理用戶. 即:
repo gitolite-admin
RW+ = gitserver ligangvim
9. ListView屬性
ListView滾動條放在外側, android:scrollbarStyle="outsideOverlay"
拖動時, 上方無分隔線: android:divider="@null"windows
10.顯示信息的多用
Intent.ACTION_VIEW,
而後putextra格式化數據,找到目標intent
11.ListView加footerview
若是加一兩次footerview,則第一次加的footerview是不可見的。設計模式
12.列表項的分組欄
設計思路:每一個列表項視圖都有一個分組欄,若是該列表項是首字母相同的一組列表項中的第一項,就將該分組欄顯示出來,若是不是第一項,就將分組欄隱藏。因此咱們的目標就演變爲bindView中的position所指定的那個數據項是否爲首字母相同的一組列表項中的第一項。
爲了上面這個判斷,就有字母索引類。字母索引類中有一個字母索引數組,那麼如今有兩個數組,一個字母索引數組, 一個是列表數組,兩個數組存在對應關係,即列表數組中的首字母相同的多個元素對應字母索引數組中的一個元素,即多對一的對應關係,因爲最終目的是爲了肯定分組欄在列表中出現的位置,因此這個對應關係就應是一種位置對應關係,即列表數組的元素的位置與字母索引數組中元素的位置的對應關係,列表數組的元素的位置用position表示,字母索引數組中元素的位置用section表示,字母索引類提供了兩個重要的方法,
1:輸入數據數組中數據項的位置positon, 可返回索引數組中索引項的位置section, 方法名爲getSectionForPosition();
2: 輸入索引數組中索引項的位置section,可返回數據數組中數據項的位置position, 方法名爲getPositionForSection(),注意這裏position是數據數組中首字母相同的那一組數據中的第一數據的位置。
咱們的目標就是在bindView中判斷當前數組項的position是否是讓分組欄顯現出來,因爲是多對一的關係,若是position對的section所對應的position1與postion相等,則該position的view就可以讓分組欄顯示出來。
ContactsSectionIndexer()構造方法中,
counts[]數組中的第i元素的值是以首字母相同爲一組的分隔方法的第i組中成員的個數。
13 由數字獲取字符串
String.valueOf
14 日誌的重要
代碼最好打上有價值的日誌,一是爲了從此查找容易。
例如Listview由於沒有找上日誌,以後查找很不方便。
zhuo而不羣
15 framework-res
framework資源編譯問題,res編過以後,要在res模塊下,要mm snod, 而且相應的模塊也要mm snod編進映像文件,如policy使用該資源,則在policy下mm snod.
16 提交新庫
因爲從google或高通下來的代碼是190多個倉庫的集合,這190多個倉庫的每一個倉庫下都有一個.gitigore文件,這些都是生成文件,不該把生成文件下到本地,若是把生成文件下到本地,會影響make編譯,因此不能所已經編譯過的版本提交,萬全之策就是,把.repo目錄,.git目錄,.gitignore文件都刪除掉,而後把vendor目錄須要添加進來的文件拷進來,這時,不要編譯,提交就能夠了。這時不會有生成文件。
被版本提交後,不要當即發佈,即不要告訴同事下載,先本身下載下來,而後編譯,看可否經過,不能過就要本身改好提交,直到經過再發布,不能把可能有錯誤的版本發佈。
17 編譯開關項問題
高通把代碼放在vendor目錄下,這些vendor下的模塊目錄是否能被編譯到android工程下的build/core/buildplus/namespace/name.ini的開關項決定的,編譯時出錯,沒有找到的目錄文件,應該把相關的編譯開關關掉,那麼如何找到這個編譯開關呢,到build目錄下,在全部文件中搜索編譯時找不到的那個目錄名。此次新的基線一直沒編過,就是由於阿拉伯語的那個模塊編譯開關問題。像高通這樣的公司發佈出來的代碼不該出現編不過的問題,若是編不過,最多也是編譯開關的問題。這個要確信的。這個要信的。有這個信的基礎,就能把握好思考的方向。
18 把文件保存到網絡的博客上,本身的計算機是不可靠的,總會有意外的問題,之前在學校裏,在工做中寫的文檔,沒有保存到網絡上的,基本都丟失了。
19 apt-get
查詢能夠用apt已安裝或能夠安裝但未能安裝的軟件,命令爲:
sudo apt-cache search vim
20 把U盤製做成啓動U盤或啓動光盤
1).在系統->系統管理->啓動盤建立 便可建立啓動U盤,
2).用unetbootin命令建立啓動光盤,英文名叫LiveCD. 可理解爲模擬光盤。 unetbootin會彈出圖形界面。
雖然啓動U盤與啓動光盤均可以試用Ubuntu系統,即不安裝便可使用,但區別在於,若是原系統的文件系統已經破壞,啓動u盤是沒法進入試用系統的,但啓動光盤能夠。昨天遇到一個問題,在ubuntu系統關機過程當中,掉電,致使linux文件系統被破壞,解決辦法:進入ubuntu試用系統,修復文件系統。
21 檢查並修復文件系統
e2fsck是ext2 filesystem check的簡寫,不過功能被擴展了,即檢查並修復ext2,或ext3文件系統的硬盤分區。 關機過程當中掉電,文件系統被破壞,能夠用此命令修復,命令以下:
先用sudo fdisk -l 找到須要修復的硬盤分區,在這裏爲/dev/sda7
再用sudo e2fsck -f -y -v /dev/sda7 來修復這個文件系統。
22
與啓動光盤的區別是
windowsPE, LinuxPE
23 查找android代碼
在AndroidManifest.xml 中找比較合適
24 代碼中調整佈局
代碼中的佈局類型應是該view所在容器的佈局類型
25 彈出9格數字輸入鍵盤
android:inputType="phone"
不少時間在查找上。若是不集中精力,找的感受很很差
26 如何從技術上提高智慧
技術理解透的標準是,演講能讓外行人也能理解聽明白技術的思想,這須要一技術功底深厚,這須要作技術時,看代碼時,能看到做者的意圖,從更全局的範圍來看,能看出總體思想,二是文學功底深厚, 這要求在學校中,在10幾歲到20幾歲努力提升文學功底,能過寫真情實感的文章,提升對文字的運用能力,技術的真正提升就是智慧的提升,包括領悟力,文字運用能力,技術對思惟的鍛鍊是很好的機會。去高通培訓時,看看人家對文字的運用,這些簡短有力的話記下來,之後本身也常常說這樣的話:
常見的場景
很是的細緻
重點給你們握一下
瞭解個大概
比較大的幫助
客戶有個初步的分析
基本流程
技術實力大有長進
經過解問題把問題理解透
QMI是AT的改進
五六年前就有這個東西了
對外界打交道就要作個接口
新的feature
信息頭,信息尾,檢驗合, 這種計算效率比較低
沒有關係, 徹底獨立
電腦與USB鏈接在一塊兒, 一種是AT, 一種是QMI, 把DataCore創建起來,
這個是背景
架構:
作完以後,返回一個迴應
基本模型
第一代手工編解碼
服務愈來愈多,
不少中間層抽象出來
全部的所有封裝好
改的太大,總有一個die代的過程,
有個風險
已經穩定了,不想再重構
舊的代碼已經穩定了,就用不新架構了,新的代碼能夠用新架構。
生成的方式不一樣,但最終發出的東西都同樣
從目前獲得的客戶需求,
風險的話,08年09年都是手工編解碼
看消息的個數
dataservice與內核打交道,就用特別的模塊來控制
不一樣的服務用不一樣的路過去
根據id,最終決定調哪一個接口
不會有取代的關係
現有的,穩定的就不動了
須要串行,處理一個後,才能處理下一個,若是並行,modem有消息個數的上限,
若是某個事情處理的慢,就開個線程,不然後面的就走不動了
qcril不作具體的事情,只是消息的分發,根據表,派發到哪一個函數,最後調用一個真正幹活的函數
(看到妙相,不能認真,一概不往內心去,前生與此生都是夢)
底層是徹底異步的,上層經過邏輯能夠是同步,也能夠是異步
看幾個線程
init_thread, 有個保護的做用,初始化失敗,打電話那邊什麼都作不了,因此初始化失敗,init_thread每隔5秒再從新初始化,直到成功。
flow_control 流控,命令之間串行。若是命令個數超出flow_control的緩存上限,底層直接返回超出錯誤
若是串行,那怎麼串
若是存在這樣的需求,設計也應知足這個需求,qcril爲了知足不少需求,已經設計的很複雜了。
繼續日後走
QMUX SERVER, 起幾個socket,socket連好以後,就能夠發消息了,
qmi_core_init完成各個server的回調註冊,上電後,就必須完成這個回調註冊的初始化,若是基本的沒完成,後面斥不用談了
回調函數便是事件的入口函數,註冊回調函數就是配置入口函數,每一個服務都響應一些事件的,因此都有回調函數。
核心內容,上電以後,註冊回調函數
框架不作具體的事情,來一個事件,調用回調函數去作具體的事情,這樣看代碼會更明瞭
Log: 看什麼樣的關鍵字,卡到哪裏,哪裏失敗。
這個大的流程,是個總提綱,包括不少流程
經過看Log看流程狀態是如何切換過來的,流程的變遷。
看pdu, 每一個消息都能有個字段,
作完這一切,poweroff就完成了, UI那邊也會有顯示
ril是有不少狀態,搜一下關鍵字,就能知道狀態如何切換的
碼流:qcril發出的消息送到qmi通道,在這個通道中,消息就是碼流了,即一串十六進數,經過規格說明書,一個一個去對,就能手工解碼出碼流的字符串,高通的看日誌工具QDXM能夠自動解碼,左邊是十六進制碼流,右邊是解出來的字符串。
一對就知道了
解碼時,還有大小端問題,
致使。。。。
RPC也是這麼幹的
大量消息用idl生成,idl生成消息的.c與.h文件, idl相似於xml的腳本,消息進入qmi通道,在通道中,便是碼流,碼流是十六進數,QDXM工具便可解碼,將將十六進制數解析爲字符串。
思路的原型可稱爲思想,講要講出思想來,若講不出思想,就等於沒掌握,沒領悟,句子要短,這兩個要求技術功底深厚, 文字功底深厚,把它說出來,就等於把它給破了。
要講話,就要講出爲何,眼睛要看觀衆,古代文hao,出口成zhang.
工做量在這裏,
不跟上基線
50的基線,咱們沒有充分測過。
果裏含藏着因
若配錯,致使後面的腳本錯誤,但keng定能打電話,穩不穩定,我不能說。
一上
1x, evdo 掉到1x時,1x上網時,就上不了電話。
一個modem不能兩個同時都作。
這個流程很細,用到的時候再來查
qmi是共用的模塊,很是簡單的描述。
AP這邊,有不少碼流
27 eclipse
若在文件夾中刪除文件夾,則eclipse打不開
一微塵有一佛剎,特斯拉也說一小部分就有yuzhou的所有信息。
28 listview: 使頂部滑動時,無間隔
android:clipToPadding="false"
29 dalvik
android的java仍是不一樣於常規意義上的java,緣由是二者的虛擬機不同,dalvik虛擬機基於寄存器,運行文件是dex格式的, java虛擬機基於棧,運行文件是class格式的。android工程編譯過程爲java代碼通過常規java工具編譯成class格式字節碼文件, 而後由dex格式文件轉換爲dex格式文件,資源文件由aapt工具編譯,最後將dex文件與aapt編譯後的文件合成apk包,zogate進程爲應用fork一個進程,zogate進程由init啓動,是和ril進程同樣都屬於用戶進程。
30 eclipse
若一個eclipse工程的.project等配置文件被刪除,則啓動重啓eclipse後,
31 android對程序的效率有更高的要求
配置在高的手機也沒有一個普通電腦速度快,在嵌入式機器上編程,對程序的效率有更高的要求,儘可能少分配對象,儘可能不能成員變量,不用getter方法,
32 user版本
user版本,在adb shell下,不能瀏覽目錄,也不能adb push文件。
委託他人辦事以前,本身必須先把信息蒐集好,把事情的各方面信息向委託人都交待清楚。
一個充分而簡短的說明。
33 unetbootin
unetbootin 彈出界面, 選發佈版本, 這個與當前用的系統有關, 若是當前是10.04, 則只能有10.04,(選10.04 Live , live表光盤) 若是當前是11.04, 則有11.04, 在文件系統須要修復的狀況下,10.04版不能使用試用版本. 11.04能夠. 對於修復文件, 要試用當前系統必須是11.04, iso選11.04的, 這樣纔可試用引用系統.
34 版本穩定
ubuntu, 10.04, 11.04是穩定版本, 11.10, 12.04是不穩定版本
35 sysfs
是專門描述設備的文件系統, 在系統啓動以後, 創建在內存中, 有類, 總線等組織方式, 基本的類是kobject, 其餘的設備類都要繼承這個類, C語言經過包含來實現繼承關係
36 分別32位與64位
四核機器必定是64位的, 64位機能夠裝32位系統,
$getconf LONG_BIT 是看32位仍是64位.
37 android整個斷點調試
斷點能夠看到函數棧調用狀況, 變量中的值, 能夠省去不少Log, 不用打那麼多log, 看變量的值.
在eclipse, 進ddms, 菜單 run->debug configurations (看清了, 是debug configuraton, 不是 run configuration)->remote java application . 端口選8700. apply, 關閉對話框, 光標選在要調試的進程, 按F11. 便可, 一次只能調試一個進程.
顏色設置在 選項中過濾出color, 在text editors -> annotations 節點的右邊. debug current instruction pointer 和 debug in stack .
能夠把可個android, 框架層的代碼調用關係都能找到, 找到其根源zygoteinit.main(), 最開始的調用處, 省去不少查找.
不行就把機器重啓一下
能夠調試sytem process , 如電源鍵響應phonewindowManager中設斷點
學道之人
<我想讓開發者看到什麼>
新聞是統治者讓我特地看到的, 看了以後, 心智受影響,
38 硬件
大電流問題, 擁入耳機發生大電流,
高通的配置很好, 1.2G 而市面上1G,
看哪芯片短路, 邊看原理, 把關注的點成白色的, 而後用萬用表量看是否短路
39 好程序
不出現異常, 進入時間短, 佔用內存小
40 使用高通平臺的chang商
華爲, 聯通, 都用高通7625a, 佔據低端市場.
天宇出貨8225a,
高通有不少chang商, 小mi,
8260是s3系列的!45NM技術!A8架構.雙核1.2-1.5GHZ!GPU是220的!表明做是小米M1.1.5GHZ
8225是高通最新s4系列的產品!高通S4驍龍總共四種處理器!而8225是做爲這個系列的低端產品誕生的!採用的也是45NM技術!其餘三種都是28NM技術!A5架構!性能低於A8的!雙核1GHZ的性能.GPU203的!表明做北斗星小辣椒!未上市!
從這些高通官網公佈的數據顯示!8225沒有任何性能高於8260處理器!雖然是S4系列!可是是做爲入門級處理器誕生的!目的是搶佔低端市場!現階段根本算不上主流!
8260是高端機用的芯片,好比htc one x,lumia920用的都是8x60的芯片,區別只是支持的網絡不一樣而已,
a8架構:
ARM公司日前發佈最新的Cortex-A8處理器,它將給消費和低功耗移動產品帶來重大變革,使得最終用戶能夠享受到更高水準的娛樂和創新。在於美國加州舉行的第二屆ARM開發者年度大會上發佈的ARM Cortex-A8處理器最高能達到2000DMIPS,使它成爲運行多通道視頻、音頻和遊戲應用的要求愈來愈高的消費產品的最佳選擇。在65納米工藝下,ARM Cortex-A8處理器的功耗不到300毫瓦,可以提供業界領先的性能和功耗效率。ARM Cortex-A8處理器第一次爲低費用、高容量的產品帶來了臺式機級別的性能。 支持智能能源管理(Intelligent Energy Manger,IEM)技術的ARM Artisan庫以及先進的泄漏控制技術使得Cortex-A8處理器實現了非凡的速度和功耗效率。Cortex-A8處理器獲得了大量ARM技術的支持,從而可以實現快速的系統設計。
應熟悉智能手機的芯片商,
41 示例query
queryHandler.startQuery(1, null, Phone.CONTENT_URI, PROJECTION_PHONE, "REPLACE(" + Phone.NUMBER + ", '-', '') LIKE '%" + mDigits.getText().toString() + "%'", null, null);
42 雙系統安裝
開始可選英文安裝, 可避免上網下載,
若是把雙系統中的ubuntu替代, 將Linux盤都格式化, 再安, 仍是出問題.
43 netubootin
有Linux版, 和windows盤, 都是將u盤製做爲啓動光盤
44 bootloader
臺式機bootloader爲grub, 高通平臺bootloader爲lk, bootloader和kernel 編譯後, 和併爲境像文件boot.img, 只有4M多, 而操做系統system.img.ext4 有150M
45 hal
google應硬件廠商不公開硬件廠商驅動代碼的要求, 設計了hal,
46 sdcard資源文件特殊名目錄
sdcard卡上ringtonge在設置來電鈴聲列表裏就可看到, 同理鬧鐘鈴聲在sdcard卡的alarms目錄, 通知鈴聲在sdcard卡的notifications目錄
聯通上網比較快的.
限你一小時把問題解完
限你一小時寫一篇技術總結文章
47 建造者設計模式
48 通信錄
模式 : 列表有不少模式
49 我的電腦問題
開機時, 若是沒有di的一聲, 說明內存chao老化, 插另外一個內存chao便可, 若是有di的一聲, 可是屏幕一直黑屏或提示readerror, 說明硬盤沒有插好, 機箱最好不要插新硬盤, 有時使接口不穩定, 保存到我的電腦或U盤的東西都是靠不住的, 三年研究生作的ppt都沒了, 就說明了這點, 只有那些保存在網上的還在. 一個是網易的網盤中, 一個cnblogs博客中. 我的寫總結, 儘可能用簡單的記事本, 最有價值的就是本身寫下的這一行一行文字, 多寫, 寫的越多, 長進越大, 一開始只有一個小的想法, 隨着寫的愈來愈多, 想法會愈來愈成熟, 之前寫binder的時候, 寫狀態欄的
另外從風水學角度來講,牀頭最好別掛字,揹着字,走背字!
50 天天發一版本軟件, 之後出現問題, 不容易排查出哪一個版本出現開始出現問題.
51 sysfs
52 linux c 要點
爲了不溢出, 要用UL爲單位, U表示無符號, 比有符號絕對值大二倍
?: 這樣的判斷比if then else, 由編譯器產生更優化的代碼
在宏中,要把各參數當心的括起來, 以防止
53 gitolite
對於用戶的認證文件用專門的倉庫管理。
54 高通不識卡的緣由: nv 裏面的 efs , 那兩個文件刪除掉這兩個文件, 就可識卡。 這不識卡問題糾結了好幾天
外lian一層pi, 內lian一口氣,
55 kmalloc
kmalloc 分配鏈接的空間, kmalloc基於以而爲單位的slab機制, 雖然slab以頁爲單位組織, 而kmalloc單位是字節.
get_free_pages() 也分配連續的空間, 以頁爲單位.
linux gcc 中的sleep()傳入的是秒,usleep()傳入的微秒。
56 __user
xxxx 會去調用 __xxxx
//他方之石
通常有幾種狀況要分開寫
一、
xxxx 是統一的接口,而__xxxx 是具體cpu架構下的實現,極可能有多個__xxxx,固然最終只有一個__xxxx被編譯
二、xxxx 檢驗一下參數或加保護後調__xxxx ,這相似一種編碼習慣,能減小bug
三、xxxx的參數或返回值有有更改,爲了低版本的代碼不用修改,實現一個__xxxx作過渡。
沒有定發,也沒有什麼難度,看代碼就知道了
//他方之石結束
57 lk
stage1 用匯編作一些cpu, 中斷初始化,準備好一個基本的環境,最後bl到C語言的kmain入口函數,
作硬件初始化, 準備ram空間, 設置堆棧, 轉入stage2 入口
stage2 即kmain作線種,板子的初始化, 最後線程idle.
檢測內存映射, 把映像文件從flash拷到內存, 設置內核啓動參數
58 arm
c13是堆棧指針寄存器,即調用函數時,要把參數堆棧到一塊空間,c13存放的就是該空間的地址
c14是連接寄存器,在調用函數時,將當前指令地址存到這個地址中,當函數結束後,從連接取出以前存放地址,繼續向下執行
c15被叫作程序計數器,存放下一條指令的地址。
cpsr爲current program status register, 即當前程序狀態寄存器
必定要儘量多的寫, 不能等想成熟了再寫,不然會失去不少領悟力的鍛鍊時間,you其在比較吵亂的環境中, 寫能夠把精力集中. 寫便是領悟的過程, 技術之後若沒用到,但依此鍛鍊的文字能力和領悟力的鍛鍊,是無時不ke的受用, 剛纔感受了一下, 只有本身親手寫下來的文字,以後才能回憶其含義時,能夠很清晰, 有種保證說出來的絕對正確的感受.
想起一句就寫一句, 想起兩句就寫兩句, 不能等, 等會等沒的.
忍他,讓他,避他, 幾十年後,你再看他.
我得感謝他, 讓他有了學習bootloader的勇氣.
要想寫的好, 寫的更讓人讀的明白chang快, 就要把語法淡忘, 還要適當的重複,
寫做, 收穫就在當下.
一條arm指令, 對應的機器碼, 就是32位二進制數, 這32位中, 劃分爲幾個部分, 表示指令的, 表示源寄存器的, 表示目標寄存器的, 表示操做數的.
59 sysfs
proc 是專門爲進程使用的設備信息, 因爲設計上不如sysfs清晰, 在設備驅動上, 被sysfs taotai
sysfs 把設備和總線組織成文件, 這些文件能夠被用戶空間讀和寫, 看一個原理, 先從它的對外特性來看, 即它的使用場合, 或者說它是怎麼被使用的, 把這個道理應用到這裏, 就是看/sys這個目錄,
8000年後, 這個世界的人類就要被毀滅,
當年, 菩薩的因地修行時, 處在幻境時, 也是感到同樣的真實, 真實度同樣這麼高.
bootloader 做用就是加載操做系統, 從硬盤加載到內存.
arm中指令加載, 即ldr, 指把數據從內存拷到寄存器, 相反即存儲, 即str, 從寄存器到內存
60 分區出錯
android工程中, /system/vold/cryptf.c 中若是分區損壞, 則寫入將vold.encrypt_progress寫爲error_partially_encrypted,
61 Linux用戶空間的api
這些api用man可查看, 驅動用的像request_irq用man查不到.
wine上的soureinsight和windows下的同樣好用. vi的好處可能就sheng下遠程登陸
snprintf(指針, 字符個數n, "格式化的字符串", 可變參數1...) 把第三個參數的字符串拷到指針指向的內存區域, 字符個數包括了字符串結束符'\0', 即格式化字符串的前n-1個拷過去, 示例:
char n1[100];
snprintf(n1, 15, "abc%d%s", 1, "efg");
printf("\n n1 : %s \n", n1);
運行結果爲: abc1efg
寫做真到集中精力.
62 goole搜索不一樣百度搜索以外
google可搜索文件類型, 如snprintf.c filetype:c
63 ext4文件系統, 恢復被rm刪除的文件1. $sudo aptitude install e2fsprogs e2fslibs-dev2. 安裝extundelete, 3. $extundelete /dev/sda3 --restore-all , 把要恢復好的放在當前目錄下, 並非全部都能恢復若是ext3被格式化成windows下的文件系統, 則不能恢復. 在windows64 qcrilsolited是應用層發起, unsolieted是modeme發起android系統包括內核空間, c用戶空間(如rild進程), Java用戶空間(如框架層, )ril基本框架在hardwareh目錄下, , 而手機分爲android側, modem側, 每一側各佔一個cpu, 形容封裝的好, 封裝的很好, 兩行代碼就能調用遠程功能65 qpst 燒modem 菜單start clinent -> 選download -> 選multi-image(第四個標籤) -> 選發佈版的modem目錄. 點download66 右鍵解壓不了的, 用tar zxvf 能夠解壓好