Saturday, August 29, 2020
Tuesday, August 25, 2020
Monday, August 24, 2020
Zygote启动流程
Zygote 本身是一個Native的應用程式,剛開始的進程名稱為「app_process」,運行過程中,通過調用 setArgv0 將名字改為 zygote 或者 zygote64 (根據作業系統而來),最後通過 runtime 的 start() 方法來真正的加載虛擬機並進入JAVA世界
1. 初始化DDMS
2. 注册Zygote进程的Socket
3. 加载class、resource、OpenGL、WebView等各种资源
4. fork出SystemServer进程
5. 启动SystemServer进程
6. 调用runSelectLoop()一直监听Socket信息
7. 收到创建应用程序Socket消息,调用ZygoteConnection#runOnce()。在runOnce()中调用Zygote#forkAndSpecialize()创建应用进程
8. 启动应用进程
Android trace code
Linux 啟動流程-bootloader 至 kernel 的過程 --android 系統啟動流程
/system/core/init/init.cpp
/system/core/rootdir/init.rc
/system/core/rootdir/init.zygote64.rc
service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server
frameworks/base/core/java/com/android/internal/os/ZygoteInit.java
ZygoteInit#main();
ZygoteInit#registerZygoteSocket()
forkSystemServer
Zygote.forkSystemServer
frameworks/base/core/java/com/android/internal/os/Zygote.java
frameworks/base/core/jni/com_android_internal_os_Zygote.cpp
nativeForkSystemServer
handleSystemServerProcess
zygoteInit
RuntimeInit.commonInit
ZygoteInit.nativeZygoteInit()
frameworks/base/core/jni/AndroidRuntime.cpp
gCurRuntime->onZygoteInit();
frameworks/base/cmds/app_process/app_main.cpp
onZygoteInit
RuntimeInit.applicationInit
frameworks/base/services/core/jni/com_android_server_SystemServer.cpp
frameworks/base/services/java/com/android/server/SystemServer.java
System.loadLibrary("android_servers");
createSystemContext
SystemServiceManager'
startBootstrapServices
frameworks/base/services/core/java/com/android/server/SystemServerManager.java
frameworks/base/services/java/com/android/server/am/ActivityManagerService.java
Android通信方式篇(五)-Binder机制(Kernel层)
Android通信方式篇(六)-Binder机制(Native层(上))
Android通信方式篇(七)-Binder机制(Native层(下))
https://kknews.cc/code/2n6omar.html
dirb
dirb http://192.168.92.129
+ http://192.168.92.129/phpMyAdmin/sql (CODE:200|SIZE:4145)
==> DIRECTORY: http://192.168.92.129/phpMyAdmin/test/
n8n index
【n8n免費本地端部署】Windows版|程式安裝x指令大補帖 【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能
-
軟體需求分為三大部分 1. 功能需求:指系統需要完成那些事情,即向使用者提供那些功能。 2. 非功能需求:指產品所具備的品質和屬性,比如可靠性、擴充套件性、響應時間、效能等等.. 3. 設計約束:也稱條件約束、補充規則。比如使用者要安裝該產品他需要有什麼樣的必備條件。(系統對作業...
-
模板直到实例化时才生成代码,所以获得模板代码编译错误的时机较晚。编译器在3个阶段报告错误: 1. 第一阶段是编译模板本身时,此时一般错误很少,只是 检查语法错误 ,不检查依赖于类型的代码 第二个阶段是遇到使用模板时,对函数模板调用编译器会 检查实参数目是否正确 。还要检查 参数类...
-
實參 (argument) 全称为"实际参数"是在调用时传递给函数的参数. 实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。 形...
