Android系統源碼學習——源碼目錄結構介紹

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

Android 4.0源碼目錄結構:
本文介紹Android源碼目錄結構,以便讀者理清Android編譯系統核心代碼在Android源代碼的位置。
Android源碼體積非常龐大,由Dalvik虛擬機、Linux內核、編譯系統、框架代碼、Android定制C庫、測試套件、系統應用程序等部分組成,在編譯Android源碼之前,必須要先掌握Android源碼的組成。
在Android源碼中,按照不同功能代碼被放在不同的目錄下:

abi目錄:應用二進制接口,不同的操作系統,應用二進制接口不同,因此linux上的二進制可執行文件在windows上無法執行。
bionic目錄:針對Android系統定制的仿生標準C庫、鏈接器等所在目錄,Android系統并沒有使用Linux的glibc庫。bioinc C庫針對嵌入式系統做了優化,添加了一些Android特定的函數API同時大大減少庫的體積,也避免了LGPL版權的問題。
bootable目錄:這個目錄下存放android部分啟動相關代碼,包括android的recovery模式,一般用于進行OTA升級,由C++編寫,可以看到用于顯示的ui.cpp和安裝的nstall.cpp,模式入口為recovery.cpp的main.
build目錄:Android的編譯系統目錄,里面包含大量的Makefile文件,用來編譯目標系統、Host主機開發環境等。這是android源碼中編譯核心所在地,把這個目錄下的所有mk搞清楚,android的編譯體系就基本了如指掌了。
cts目錄:兼容性測試工具目錄。
dalvik目錄:Dalvik虛擬機,Android系統得以運行的虛擬執行環境。
development目錄:應用程序開發所需要的模板和工具。
devices目錄:廠商設備配置目錄,針對不同設備,由不同的子目錄來分別管理,用來裁剪實現不同設備上Android目標系統。
docs目錄:官方網站文檔。
external目錄:Android系統使用的其它開源代碼目錄,如jpeg圖片解碼開源庫、opencore開源代碼等。
frameworks目錄:框架層代碼,frameworks/base目錄下存放目標系統的框架庫,frameworks/policies/base下存放應用程序框架代碼。
hardware目錄:HAL(Hardware Abstraction Layer)硬件抽象層代碼;描述對linuxkernel中的相關驅動模塊的具體操作,而在kernel中的驅動模塊只擁有通用操作接口,比如設置寄存器值,IO拉高拉低,但是具體設置什么值,拉高拉低的時序都寫在hardware層相對應的module中,這就是google對于硬件驅動的商業保護。
kernel目錄:Linux內核目錄,默認下載的Android源碼里沒有,需單獨下載。
libcore目錄:一些有用的庫,像xml、Jason、luni。
ndk目錄:ndk相關開發工具。
out目錄:編譯完成后的文件輸出與此目錄。
packages目錄:Android系統級應用程序源碼目錄,如攝像應用、電話應用等。
prebuilt目錄:主機編譯工具目錄,如arm-linux-gcc交叉系統工具鏈等。
sdk目錄:?? ?SDK及模擬器。
system目錄:init進程、藍牙、無線WIFI工具、uevent進程目錄;底層文件系統庫、應用及組件——C語言。
Makefile文件:在頂層目錄編譯,利用的默認Makefile,它只是簡單包含了build/core/main.mk。
下面對各個目錄分別詳細介紹:
1、bionic目錄:
|--libc ?(C庫)
| |--arch-arm ?(ARM架構,包含系統調用匯編實現)
| |--arch-x86 ?(x86架構,包含系統調用匯編實現)
| |--bionic ?(由C實現的功能,架構無關)
| |--docs ?(文檔)
| |--include ?(頭文件)
| |--inet ?(inet相關,具體作用不明)
| |--kernel ?(Linux內核中的一些頭文件)
| |--netbsd ?(系統相關,具體作用不明)
| |--private ?(一些私有的頭文件)
| |--stdio ?(stdio實現)
| |--stdlib ?(stdlib實現)
| |--string ?(string函數實現)
| |--tools ?(幾個工具)
| |--tzcode ?(時區相關代碼)
| |--unistd ?(unistd實現)
| |--zoneinfo ?(時區信息)
|--libdl ?(libdl實現,dl是動態鏈接,提供訪問動態鏈接庫的功能)
|--libm ?(libm數學庫的實現)
| |--alpha ?(alpha架構)
| |--amd64 ?(amd64架構)
| |--arm ?(arm架構)
| |--bsdsrc ?(bsd的源碼)
| |--i386 ?(i386架構)
| |--i387 ?(i387架構)
| |--ia64 ?(ia64架構)
| |--include ?(頭文件)
| |--man ?(數學函數)
| |--powerpc ?(powerpc架構)
| |--sparc64 ?(sparc64架構)
| |--src ?(源代碼)
|--libstdc++ ?(libstdc++ ?C++頭文件)
| |--include ?(頭文件)
| |--src ?(源代碼)
|--libthread_db ?(多線程程序的調試器庫)
| |--include ?(頭文件)
|--linker ?(動態鏈接器庫)
| |--arch ?(支持arm和x86兩種架構)
2、bootable目錄:
|--bootloader ?(適合各種bootloader的通用代碼)
| |--legacy ?(估計不能直接使用,可以參考)
| | |--arch_armv6 ?(V6架構,幾個簡單的匯編文件)
| | |--arch_msm7k ?(高通K7處理器架構的幾個基本驅動)
| | |--include ?(通用頭文件和高通K7架構文件)
| | |--libboot ?(啟動庫,都寫的很簡單)
| | |--libc ?(一些常用的C函數)
| | |--nandwrite ?(nandwrite函數實現)
| | |--usbloader ?(usbloader實現)
| |--diskinstaller ?(android鏡像打包器,x86可生產iso)
| |--recovery ?(系統恢復相關)
| | |--applypatch ?(補丁工具)
| | |--edify ?(升級腳本使用的edify腳本語言)
| | |--etc ?(init.rc恢復腳本)
| | |--minelf ?(不清楚)
| | |--minui ?(一個簡單的UI)
| | |--minzip ?(一個簡單的壓縮工具)
| | |--mtdutils ?(mtd工具)
| | |--res ?(資源文件)
| | |--testdata ?(測試數據)
| | |--tools ?(工具)
| | | |--ota ?(OTA Over The Air Updates升級工具)
| | |--updater ?(更新相關)
3、build目錄:
|--core ?(核心編譯規則)
|--lib
| |--host ?(主機端庫,有android “cp”功能替換)
|--target ?(目標機編譯對象)
| |--board ?(開發平臺)
| | |--emulator ?(模擬器)
| | |--generic ?(通用)
| | |--generic_armv5 ?(armv5通用)
| |--product ?(開發平臺對應的編譯規則)
| | |--security ?(密鑰相關)
|--tools ?(編譯中主機使用的工具及腳本)
| |--acp ?(Android "acp" Command)
| |--apicheck ?(api檢查工具)
| |--atree ?(tree工具)
| |--bin2asm ?(bin轉換為asm工具)
| |--check_prereq ?(檢查編譯時間戳工具)
| |--droiddoc ?(作用不明,java語言,網上有人說和JDK5有關)
| |--fs_config ?(This program takes a list of files and directories)
| |--fs_get_stats ?(獲取文件系統狀態)
| |--releasetools ?(生成鏡像的工具及腳本)
| |--rgb2565 ?(rgb轉換為2565)
| |--signapk ?(apk簽名工具)
| |--zipalign ?(zip archive alignment tool)
4、cts兼容性測試工具目錄。
5、Dalvik目錄:
|-dalvikvm ?(main.c的目錄)
|--dexdump ?(dex反匯編)
|--dexgen ?
|--dexlist ?(List all methods in all concrete classes in a DEX file.)
|--dexopt ?(預驗證與優化)
|--docs ?(文檔)
|--dvz ?(和zygote相關的一個命令)
|--dx ?(dx工具,將多個java轉換為dex)
|--hit ?(java語言寫成)
|--libdex ?(dex的庫)
|--libnativehelper ?(Support functions for Android's class libraries)
|--tests ?(測試代碼)
|--tools ?(工具)
|--unit-tests ?(單元測試)
|--vm ?(虛擬機)
6、development目錄:
|--apps ?(些核心應用程序)
| |--BluetoothDebug ?(藍牙調試程序)
| |--BuildWidget
| |--CustomLocale ?(自定義區域設置)
| |--Development ?(開發)
| |--Fallback ?(和語言相關的一個程序)
| |--FontLab ?(字庫)
| |--GestureBuilder ?(手勢動作)
| |--launchperf?
| |--NinePatchLab ?
| |--OBJViewer ?(OBJ查看器)
| |--SdkSetup ?(SDK安裝器)
| |--WidgetPreview ?(插件預覽器)
|--build ?(編譯腳本模板)
|--cmds ?(有個monkey工具)
|--data ?(配置數據)
|--docs ?(文檔)
|--host ?(主機端USB驅動等)
|--ide ?(集成開發環境)
|--ndk ?(本地開發套件——c語言開發套件)
|--pdk ?(Plug Development Kit)
|--samples ?(各種應用例子)
|--scripts ?(腳本)
|--sdk ?(sdk配置)
|--testrunner ?(測試用)
|--tutorials ?(教程)
7、device目錄:廠商設備配置目錄,針對不同設備,由不同的子目錄來分別管理,用來裁剪實現不同設備上Android目標系統。
8、docs目錄:官方網站文檔。
9、external目錄:Android系統使用的其它開源代碼目錄,如jpeg圖片解碼開源庫、opencore開源代碼等。
10、framework目錄:
frameworks 目錄 (核心框架——java及C++語言)
|-- base (基本內容)
| |-- api (?都是xml文件,定義了java的api?)
| |-- awt (AWT庫)
| |-- build (空的)
| |-- camera (攝像頭服務程序庫)
| |-- cmds (重要命令:am、app_proce等)
| |-- core (核心庫)
| |-- data (字體和聲音等數據文件)
| |-- docs (文檔)
| |-- graphics (圖形相關)
| |-- include (頭文件)
| |-- keystore (和數據簽名證書相關)
| |-- libs (庫)
| |-- location (地區庫)
| |-- media (媒體相關庫)
| |-- obex (藍牙傳輸庫)
| |-- opengl (2D-3D加速庫)
| |-- packages (設置、TTS、VPN程序)
| |-- sax (XML解析器)
| |-- services (各種服務程序)
| |-- telephony (電話通訊管理)
| |-- test-runner (測試工具相關)
| |-- tests (各種測試)
| |-- tools (一些叫不上名的工具)
| |-- vpn (VPN)
| |-- wifi (無線網絡)
|-- opt (可選部分)
| |-- com.google.android (有個framework.jar)
| |-- com.google.android.googlelogin (有個client.jar)
| |-- emoji (standard message elements)
|-- policies Product policies are operating system directions aimed at specific uses)
|-- base
|-- mid (MID設備)
|-- phone (手機類設備,一般用這個)
11、hardware目錄:
hardware 目錄 (部分廠家開源的硬解適配層HAL代碼)
|-- broadcom (博通公司)
| |-- wlan (無線網卡)
|-- libhardware (硬件庫)
| |-- include (頭文件)
| |-- modules (Default (and possibly architecture dependents) HAL modules)
| |-- gralloc (gralloc顯示相關)
| |-- overlay (Skeleton for the "overlay" HAL module.)
|-- libhardware_legacy (舊的硬件庫)
| |-- flashlight (背光)
| |-- gps (GPS)
| |-- include (頭文件)
| |-- mount (舊的掛載器)
| |-- power (電源)
| |-- qemu (模擬器)
| |-- qemu_tracing (模擬器跟蹤)
| |-- tests (測試)
| |-- uevent (uevent)
| |-- vibrator (震動)
| |-- wifi (無線)
|-- msm7k (高通7k處理器開源抽象層)
| |-- boot (啟動)
| |-- libaudio (聲音庫)
| |-- libaudio-qsd8k (qsd8k的聲音相關庫)
| |-- libcamera (攝像頭庫)
| |-- libcopybit (copybit庫)
| |-- libgralloc (gralloc庫)
| |-- libgralloc-qsd8k (qsd8k的gralloc庫)
| |-- liblights (背光庫)
| |-- librpc (RPC庫)
|-- ril (無線電抽象層)
| |-- include (頭文件)
| |-- libril (庫)
| |-- reference-cdma-sms (cdma短信參考)
| |-- reference-ril (ril參考)
| |-- rild (ril后臺服務程序)
|-- ti (ti公司開源HAL)
|-- omap3 (omap3處理器)
| |-- dspbridge (DSP橋)
| |-- libopencorehw (opencore硬件庫)
| |-- liboverlay (overlay硬件庫)
| |-- libstagefrighthw (stagefright硬件庫)
| |-- omx (omx組件)
|-- wlan (無線網卡)
12、packages目錄:
packages 目錄
|-- apps ? ? ? ? ? ? ? ? ?(應用程序庫)
| |-- AlarmClock ? ? ? ? ? ? (鬧鐘)
| |-- Bluetooth ? ? ? ? ? ? ? ?(藍牙)
| |-- Browser ? ? ? ? ? ? ? ?(瀏覽器)
| |-- Calculator ? ? ? ? ? ? ? ?(計算器)
| |-- Calendar ? ? ? ? ? ? ? ?(日歷)
| |-- Camera ? ? ? ? ? ? ? ? (相機)
| |-- CertInstaller ? ? ? ? ? ?(在Android中安裝數字簽名,被調用)
| |-- Contacts ? ? ? ? ? ? ? ?(撥號(調用)、聯系人、通話記錄)
| |-- DeskClock ? ? ? ? ? ? ? ?(桌面時鐘)
| |-- Email ? ? ? ? ? ? ? ? ? ? ? ?(Email)
| |-- Gallery ? ? ? ? ? ? ? ? ? ? ?(相冊,和Camera類似,多了列表)
| |-- Gallery3D ? ? ? ? ? ? ? ?(?3D相冊)
| |-- GlobalSearch ? ? ? ?(為google搜索服務,提供底層應用)
| |-- GoogleSearch ? ? ? ?(google搜索)
| |-- HTMLViewer ? ? ? (瀏覽器附屬界面,被瀏覽器應用調用,同時提供存儲記錄功能)
| |-- IM ? ? ? ? ? ? ? ? ? ? ? ?(即時通訊,為手機提供信號發送、接收、通信的服務)
| |-- Launcher ? ? ? ? ? ?(登陸啟動項,顯示圖片框架等等圖形界面)
| |-- Launcher2 ? ? ? ? ? ?(登陸啟動項,負責應用的調用)
| |-- Mms ? ? ? ? ? ? ? ? ?(?彩信業務)
| |-- Music ? ? ? ? ? ? ? ? (音樂播放器)
| |-- PackageInstaller ? ? ? ?(安裝、卸載程序的響應)
| |-- Phone ? ? ? ? ? ? ? ? ? ? (電話撥號程序)
| |-- Provision ? ? ? ? ? ? ? ?(預設應用的狀態,使能應用)
| |-- Settings ? (開機設定,包括電量、藍牙、設備信息、界面、wifi等)
| |-- SoundRecorder ? ? ? ?(錄音機,可計算存儲所需空間和時間)
| |-- Stk ? ? ? ? ? ? ? ? ? ? ? ? (接收和發送短信)
| |-- Sync ? ? ? ? (空) ? -------○1
| |-- Updater ? ? ? ? ? ? ?(空)
| |-- VoiceDialer ? ? ? ? ? ? ? ?(語音識別通話)
|-- inputmethods ? ? ? ? ? ? ? ?(輸入法)
| |-- LatinIME ? ? ? ? ? ? ? ?(拉丁文輸入法)
| |-- OpenWnn ? ? ? ? ? ? ? ?(OpenWnn輸入法)
| |-- PinyinIME ? ? ? ? ? ? ? ?(拼音輸入法)
|-- providers ? ? ? ? ? (提供器,提供應用程序、界面所需的數據)
| |-- ApplicationsProvider(應用程序提供器,提供應用程序啟動項、更新等)
| |-- CalendarProvider ? ? ? ? ? ? ? ? ? ? ? ?(日歷提供器)
| |-- ContactsProvider ? ? ? ? ? ? ? ? ? ? ? ?(聯系人提供器)
| |-- DownloadProvider ? ? ? ? ? ? ? ?(下載管理提供器)
| |-- DrmProvider ? ? ? ? ? ? ? ? ? ? ? ?(創建和更新數據庫時調用)
| |-- GoogleContactsProvider ?(聯系人提供器的子類,用以同步聯系人)
| |-- GoogleSubscribedFeedsProvider(設置信息提供器)
| |-- ImProvider ? ? ? ? ? ? ? ? (空)
| |-- ManagementProvider ? ? ? ?(空)
| |-- MediaProvider ? ? ? ? ? ? (媒體提供器,提供存儲數據)
| |-- TelephonyProvider ? ? ? ? (彩信提供器)
| |-- UserDictionaryProvider ? ? ? ?(用戶字典提供器,提供用戶常用字字典)
| |-- WebSearchProvider ? ? ? ? ? ? ? ?(空)
|-- services ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
| |-- EasService ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(空)
| |-- LockAndWipe ? ? ? ? ? ? ? ? ? ? ? ?(空)
|-- wallpapers ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(墻紙)
| |-- Basic ? ? ? ? (基本墻紙,系統內置墻紙)
| |-- LivePicker ? ? ? ? ? ?(選擇動態壁紙)
| |-- MagicSmoke ? ? ? ? ? (壁紙特殊效果)
| |-- MusicVisualization ? ? ?(音樂可視化,圖形隨音樂而變化)
13、prebuilt目錄:
prebuilt 目錄 (x86和arm架構下預編譯的一些資源)
|-- android-arm ? ? (arm-android相關)
| |-- gdbserver ? ? ? ? (gdb調試器)
| |-- kernel ? ? ?(模擬的arm內核)
|-- android-x86 ? ? (x86-android相關)
| |-- kernel ? ? ? ? ? (空的)
|-- common ? ? ? (通用編譯好的代碼,應該是java的)
|-- darwin-x86 ? ? ? ?(drawin x86平臺)
| |-- toolchain ? ? ? ? ? (工具鏈)
| | |-- arm-eabi-4.2.1 ? ? ? ?
| | |-- arm-eabi-4.3.1 ? ? ? ?
| | |-- arm-eabi-4.4.0 ? ? ? ?
|-- darwin-x86_64 ? (drawin x86 64bit平臺)
|-- linux-x86 ? ? ? ? ?(linux x86平臺)
| |-- toolchain ? ? ? ? ? ? ? ?(工具鏈,我們應該主要用這個)
| | |-- arm-eabi-4.2.1 ? ? ? ?
| | |-- arm-eabi-4.3.1 ? ? ? ?
| | |-- arm-eabi-4.4.0 ? ? ? ?
| | |-- i686-unknown-linux-gnu-4.2.1 ? ? ? ?(x86版編譯器)
|-- linux-x86_64 ? ? (linux x86 64bit平臺)
|-- windows ? ? ? ? ? ? ?(windows平臺)
|-- windows-x86_64 ? ? ?(64bit windows平臺)
14、system目錄:
system 目錄 ? ? ? ?(底層文件系統庫、應用及組件——C語言)
|-- Bluetooth ? ? ? ? (藍牙相關)
|-- core ? ? ? ?(系統核心工具盒接口)
| |-- adb ? ? ? ? ? ? ? ?(adb調試工具)
| |-- cpio ? ? ? ? ? ? ? ?(cpio工具,創建img)
| |-- debuggerd ? ? ? ?(調試工具)
| |-- fastboot ? ? ? ?(快速啟動相關)
| |-- include ? ? ? ? ? ? ? ?(系統接口頭文件)
| |-- init ? ? ? ? ? ? ? ?(init程序源代碼)
| |-- libacc ? ? ? ? ? ? ? ?(輕量級C編譯器)
| |-- libctest ? ? ? ? ? ? ? ?(libc測試相關)
| |-- libcutils ? ? ? ?(libc工具)
| |-- liblog ? ? ? ? ? ? ? ?(log庫)
| |-- libmincrypt ? ? ? ?(加密庫)
| |-- libnetutils ? ? ? ?(網絡工具庫)
| |-- libpixelflinger ? ? ? ?(圖形處理庫)
| |-- libsysutils ? ? ? ?(系統工具庫)
| |-- libzipfile ? ? ? ?(zip庫)
| |-- logcat ? ? ? ? ? ? ? ?(查看log工具)
| |-- logwrapper ? ? ? ?(log封裝工具)
| |-- mkbootimg ? ? ? ?(制作啟動boot.img的工具盒腳本)
| |-- netcfg ? ? ? ? ? ? ? ?(網絡配置netcfg源碼)
| |-- nexus ? ? ? ? ? ? ? ?(google最新手機的代碼)
| |-- rootdir ? ? ? ? ? ? ? ?(rootfs,包含一些etc下的腳本和配置)
| |-- sh ? ? ? ? ? ? ? ? ? ? ? ?(shell代碼)
| |-- toolbox ? ? ? ? ? ? ? ?(toolbox,類似busybox的工具集)
|-- vold ? ? ? ? ? ? ? ?(SD卡管理器)
|-- extras ? ? ? ? ? ? ? ?(額外工具)
| |-- latencytop a tool for software developers,identifying system latency happen)
| |-- libpagemap ? ? ? ?(pagemap庫)
| |-- librank ? ? ? ? ? ? ? ?(Java Library Ranking System庫)
| |-- procmem ? ? ? ?(pagemap相關)
| |-- procrank ? ? ? ?(Java Library Ranking System相關)
| |-- showmap ? ? ? ?(showmap工具)
| |-- showslab ? ? ? ?(showslab工具)
| |-- sound ? ? ? ? ? ? ? ?(聲音相關)
| |-- su ? ? ? ? ? ? ? ? ? ? ? ?(su命令源碼)
| |-- tests ? ? ? ? ? ? ? ?(一些測試工具)
| |-- timeinfo ? ? ? ?(時區相關)
?

轉載于:https://my.oschina.net/cht2000/blog/887938

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396075.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

簡答題c語言文件操作順序,計算機基礎與程序設計2012年4月真題試題(02275)

計算機基礎與程序設計2012年4月真題試題與答案解析(02275)計算機基礎與程序設計2012年4月真題試題與答案解析(02275),本試卷總共100分。一、單項選擇題(本大題共20小題.每小題1分,共20分)在每小題列出的四個備選項中只有一個是符合題目要求的&#xff0c…

匯編實驗3

1.運行如下代碼: assume cs:codecode segment mov ah,2 mov dl,3 add dl,30h int 21h mov ah,2 mov dl,6 add dl,30h int 21h mov ah,4ch int 21hcode endsend 進行匯編運行之后結果為: 將第四行和第九行的寄存器dl的值修改之后代碼如下: a…

聽了一堂《**學院》的課,我也是醉了

這還是首席講師的ppt,這說話咋感覺,不像是技術出身,反倒是MongoDB的銷售人員呢。 這說話,不大講相對,凈他媽的 絕對,這水平,我真醉了。 這牛逼吹得,嘖嘖嘖。 我還是看書吧。 轉載于:…

react 組件引用組件_React Elements VS React組件

react 組件引用組件A few months ago I posted to Twitter what I thought was a simple question:幾個月前,我在Twitter上發布了一個我認為簡單的問題: What surprised me wasn’t the joint confusion around this question, but rather the amount o…

appium 環境搭建(不推薦安裝此版本appium,推薦安裝appium desktop)

一:安裝node.js 1、雙擊這個軟件 2、一鍵安裝,全都下一步,不要私自更改安裝路徑 3、打開cmd,輸入npm,出現如下截圖表示成功 二:安裝appium 1、雙擊appium-installer.exe 2、一鍵安裝,全都下一步…

二級c語言上機題庫及解析,2013年計算機二級C語言上機題庫及答案解析(3)

填空題給定程序中,函數fun的功能是:在形參ss所指字符串數組中,查找含有形參substr所指子串的所有字符串并輸出,若沒找到則輸出相應信息。ss所指字符串數組中共有N個字符串,且串長小于M。程序中庫函數strstr(s1, s2)的功能是在 s1串…

js 數組遍歷符合條件跳出循環體_C++模擬面試:從數組“緊湊”操作說開來

面試官自來也去掉一個字符串中的空格。假設用C語言來解答,字符串是char數組。O(n)時間復雜度實現不難,比如額外申請一個新數組,然后遍歷一遍字符串,將符合條件的字符存儲到新數組中,實現起來很簡單。但這顯然不能讓面試…

項目NABCD的分析

N:你的創意解決了用戶的什么需求 本項目解決了在校大學生和社會工程人士在計算一些工程測量中的需求, 可以通過自己提供的一些測得的已知數據來推算出自己想要的數據結果, 比用戶自己手動計算更有效更快更節省時間 A:有什么招數來…

git 命令git 地址_這是我上周使用的所有Git命令及其作用。

git 命令git 地址by Sam Corcos由Sam Corcos 這是我上周使用的所有Git命令及其作用。 (Here are all the Git commands I used last week, and what they do.) Like most newbies, I started out searching StackOverflow for Git commands, then copy-pasting answers, witho…

兩個隊列實現一個棧思路c語言,兩個棧實現隊列功能C語言實現能運行!

#include#includetypedef struct sq{char *ps;int top;int Maxsize;}stack;void initstack(stack *s,int ms){s->ps(char*)malloc(ms*sizeof(char));s->top-1;s->Maxsizems;};void push(stack *s,char val){if(s->tops->Maxsize-1){printf("棧已滿\n"…

基本入門程序編寫格式和注意事項

在安裝好JDK后聯系程序的基本寫法。1、先創建記事本,如果有超級記事本如:notepad、ultraedit、editplus等更好。重命名把記事本后面的后綴名改為.java 但是值得注意的是要看看自己創建的記事本文檔是否是隱藏后綴名的。要是有設置隱藏的就取消隱藏,以免混…

.dll文件存在但是不顯示_一招巧妙解決U盤內文件明明存在,打開U盤而內容卻不顯示的問題...

大家可能都遇到過這種情況,就是說U盤中明明有文件,但是插在電腦上就是什么文件都沒有,一片空白,這樣的問題對于那些對文件很重要且僅保存了1份的人來說是很.kongbu.,因為U盤中的內容都是命根子。給大家介紹絕對有用的解…

《java入門第一季》之面向對象(包概述)

由于eclipse等ide的強大功能,使得建包,導包用一些快捷鍵就能完成。這里對包的概念做稍微的敘述,了解即可: 分包后使得項目更加清晰,提高代碼維護性。 包: A:其實就是文件夾 B:作用 …

Vue 框架-05-動態綁定 css 樣式

Vue 框架-05-動態綁定 css 樣式 今天的小實例是關于 Vue 框架動態綁定 css 樣式,這也是非常常用的一個部分 首先說一下 動態綁定,相對的大家都知道靜態綁定,靜態綁定的話,直接加 class“”就可以了,使用 Vue 呢之前也介…

ember.js_如何設置基本的Ember.js應用

ember.jsby Tracy Lee | ladyleet特雷西李(Tracy Lee)| Ladyleet 如何設置基本的Ember.js應用 (How to set up a Basic Ember.js app) So, you want to test out Ember, eh? This article will walk through building a basic app.所以,您想測試Ember,…

分數轉小數C語言,這是把小數轉換成分數的程序,可是輸入0.6666無限循環

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓#include int main(){double a;scanf("%lf", &a);輸入小數int b, c 0, d 0;double b1 a;do{b1 *10;b (int)b1;printf("%d\n", b);if(b%10!0){c;if(d>0){c d;d 0;}}else{d;}}while(d<5);printf("…

arm處理器的歷史及現狀

1 arm處理器的發展歷史 arm1 arm2 arm3 arm6 arm7 arm9 arm11 arm cortex 2 arm處理器現狀 arm cortex A a即application&#xff0c;即應用處理器&#xff0c;主要用在智能手機、平板電腦和服務器上。 arm cortex M m即mcu&#xff0c;即單片機上的處理器&#xff0c;它的特點…

Linq常用List操作總結,ForEach、分頁、交并集、去重、SelectMany等

1 /*2 以下圍繞Person類實現&#xff0c;Person類只有Name和Age兩個屬性3 一.List<T>排序4 1.1 List<T>提供了很多排序方法&#xff0c;sort(),Orderby(),OrderByDescending().5 */6 7 lstPerson lstPerson.OrderByDescending(x>x.Name).ToList(); //降序8 ls…

bool查詢原理 es_ES系列之原理copy_to用好了這么香

寫在前面Elasticsearch(以下簡稱ES)有個copy_to的功能&#xff0c;之前在一個項目中用到&#xff0c;感覺像是發現了一個神器。這個東西并不是像有些人說的是個語法糖。它用好了不但能提高檢索的效率&#xff0c;還可以簡化查詢語句。基本用法介紹直接上示例。先看看mapping&am…

加密算法—MD5、RSA、DES

最近因為要做一個加密的功能&#xff0c;簡單了解了一下加密算法&#xff0c;現在比較常用的有三個加密算法MD5加密算法、RSA加密算法、DES加密算法。 MD5加密算法 定義&#xff1a;MD5算法是將任意長度的“字節串”變換成一個128bit的大整數&#xff0c;并且它是一個不可逆的字…