導航:首頁 > 源碼編譯 > android演算法

android演算法

發布時間:2022-02-09 12:47:24

① 安卓開發對演算法的要求高嗎

主要看你開發什麼項目,如果只是信息類的,則基本沒演算法要求。一般如果涉及開發游戲、手機安全、查找坐車或查找合理出行路線方案的100%要會演算法才能實現的出來。比如游戲通常會涉及人工智慧演算法,查找坐車路線會涉及非線性結構演算法(如 連通圖,最小成生樹演算法 等)

android中%和&&是什麼演算法

%是取余數 5%2 =1
/是取整數 5/2 =2

&&是「並且」的意思

③ android加密演算法有哪些

android中用的到加密:

  1. Https編程 :應該是使用帶安全的網路協議處理。除非你本地需要加密

2.數據簽名:混淆代碼和防二次打包的APK加密技術

3.對稱加密:可以先將數據通過某種加密方式加密發送到伺服器端,然後伺服器端再解密 ,項目中除了登陸,支付等介面採用rsa非對稱加密,之外的採用aes對稱加密

4.非對稱加密====支付寶

數字摘要是指通過演算法將長數據變為短數據,通常用來標識數據的唯一性,是否被修改,常用的加密演算法有md5和sha1兩種,如Android的App簽名也是用的這兩種演算法。

由於以上兩種生成數字摘要的演算法都是不可逆的,對於可逆的加密演算法中,按照密鑰的數量和加密規則一半分為對稱加密和非對稱加密兩類:

對稱加密:

密鑰可以自己指定,只有一把密鑰,如果密鑰泄漏數據就會暴漏;

常用的對稱加密演算法有DES和AES兩種;

特點是加密速度快,但是缺點是安全性低,因為只要密鑰暴漏,數據就可以被解密。

非對稱加密的特點:

常見的非對稱加密演算法是RSA;

他有兩把密鑰,且是由程序生成的,不能自己指定;

特點是加密速度比較慢,但是安全性比較高;

加密和解密的規則是:公鑰加密只能私鑰解密,私鑰加密只能公鑰解密;

④ ecc演算法能在Android上實現嗎用c好還是java

ECC演算法在android上是能夠實現的,使用Spongy Castle庫

⑤ android有沒有求根的演算法

首先android是一個操作系統,不是一種編程語言,如果進行系統級開發,可以用C語言,C++語言等,如果進行應用級開發,可以用java等等,所以你要的求根演算法應該是在這幾種語言中尋找,不過我想你問的應該是應用級開發,所以可以用JAVA中的Math.sqrt方法,當然不用Math.sqrt也是可以實現的。

⑥ android md5 演算法那麼多哪個是對的

在Java中,java.security.MessageDigest (rt.jar中)已經定義了 MD5 的計算,所以我們只需要簡單地調用即可得到 MD5 的128 位整數。然後將此 128 位計 16 個位元組轉換成 16 進製表示即可。

下面是一個可生成字元串或文件MD5校驗碼的例子,測試過,可當做工具類直接使用,其中最主要的是getMD5String(String s)和getFileMD5String(File file)兩個方法,分別用於生成字元串的md5校驗值和生成文件的md5校驗值,getFileMD5String_old(File file)方法可刪除,不建議使用:

Java代碼
package com.why.md5;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Util {
/**
* 默認的密碼字元串組合,用來將位元組轉換成 16 進製表示的字元,apache校驗下載的文件的正確性用的就是默認的這個組合
*/
protected static char hexDigits[] = { '0' , '1' , '2' , '3' , '4' , '5' , '6' ,
'7' , '8' , '9' , 'a' , 'b' , 'c' , 'd' , 'e' , 'f' };

protected static MessageDigest messagedigest = null ;
static {
try {
messagedigest = MessageDigest.getInstance("MD5" );
} catch (NoSuchAlgorithmException nsaex) {
System.err.println(MD5Util.class .getName()
+ "初始化失敗,MessageDigest不支持MD5Util。" );
nsaex.printStackTrace();
}
}

/**
* 生成字元串的md5校驗值
*
* @param s
* @return
*/
public static String getMD5String(String s) {
return getMD5String(s.getBytes());
}

/**
* 判斷字元串的md5校驗碼是否與一個已知的md5碼相匹配
*
* @param password 要校驗的字元串
* @param md5PwdStr 已知的md5校驗碼
* @return
*/
public static boolean checkPassword(String password, String md5PwdStr) {
String s = getMD5String(password);
return s.equals(md5PwdStr);
}

/**
* 生成文件的md5校驗值
*
* @param file
* @return
* @throws IOException
*/
public static String getFileMD5String(File file) throws IOException {
InputStream fis;
fis = new FileInputStream(file);
byte [] buffer = new byte [ 1024 ];
int numRead = 0 ;
while ((numRead = fis.read(buffer)) > 0 ) {
messagedigest.update(buffer, 0 , numRead);
}
fis.close();
return bufferToHex(messagedigest.digest());
}

/**
* JDK1.4中不支持以MappedByteBuffer類型為參數update方法,並且網上有討論要慎用MappedByteBuffer,
* 原因是當使用 FileChannel.map 方法時,MappedByteBuffer 已經在系統內佔用了一個句柄,
* 而使用 FileChannel.close 方法是無法釋放這個句柄的,且FileChannel有沒有提供類似 unmap 的方法,
* 因此會出現無法刪除文件的情況。
*
* 不推薦使用

⑦ 安卓編程用到的演算法多嗎本人的演算法不是很精通

要看你今後是從事哪方面工作
現有的 Android 開發崗位一般都是針對小應用的,說不定一個人就是一個 Android 開發團隊,對全套技術都有需求。如果開發大的產品,鑽研的深了歸根結底還是演算法厲害一點比較好。

⑧ 關於Android系統實現PID演算法控制溫度

第一步:把器件等各種實物連上
第二步:開環,對PWM的控溫信號加階躍(改變PWM的占空比),由輸入輸出的結果大致得出加熱器的數學模型
第三部:由理論公式整定出PID參數
第四部:根據實際結果調節PID以達到你想要的指標

⑨ android開發需要會演算法么

1、任何編程你都可以不會演算法。不過不會演算法、不會自己寫演算法的不是合格的軟體工程師。未來你過不了演算法這關,你在開發行業可以說徹底廢了。
2、你如果你不做游戲開發、復雜的軟體開發、框架設計、復雜的後台設計。你可以不會演算法。不過這樣的代碼寫出來、性能可能會很低、可能會累死。
3、我對演算法的理解:計算方法、簡便方法。

⑩ android源碼里有哪些比較好的演算法或框架推薦

Android中對於圖形界面以及多媒體的相關操作比較容易實現。而且對於大多數
手機
用戶來說,他們主要也就是根據這些方面的功能來對系統那個進行修改。我們可以通過本文介紹的Android多媒體框架的源碼解讀,來具體分析一下這方面的基本知識。
Android多媒體框架的代碼在以下目錄中:external/opencore/。這個目錄是Android多媒體框架的根目錄,其中包含的子目錄如下所示:
* android:這裡面是一個上層的庫,它基於PVPlayer和PVAuthor的SDK實現了一個為Android使用的Player和Author。
* baselibs:包含數據結構和線程安全等內容的底層庫
* codecs_v2:這是一個內容較多的庫,主要包含編解碼的實現,以及一個OpenMAX的實現
* engines:包含PVPlayer和PVAuthor引擎的實現
* extern_libs_v2:包含了khronos的OpenMAX的頭文件
* fileformats:文件格式的據具體解析(parser)類
* nodes:編解碼和文件解析的各個node類。
* oscl:操作系統兼容庫
* pvmi: 輸入輸出控制的抽象介面
* protocols:主要是與網路相關的RTSP、RTP、HTTP等協議的相關內容
* pvcommon:pvcommon庫文件的Android.mk文件,沒有源文件。
* pvplayer:pvplayer庫文件的Android.mk文件,沒有源文件。
* pvauthor:pvauthor庫文件的Android.mk文件,沒有源文件。
* tools_v2:編譯工具以及一些可注冊的模塊。
Splitter的定義與初始化
以wav的splitter為例,在fileformats目錄下有解析wav文件格式的pvwavfileparser.cpp文件,在nodes目錄下有pvmf_wavffparser_factory.cpp,pvmf_wavffparser_node.h, pvmf_wavffparser_port.h等文件。
我們由底往上看,vwavfileparser.cpp中的PV_Wav_Parser類有InitWavParser(),GetPCMData(),RetrieveFileInfo()等解析wav格式的成員函數,此類應該就是最終的解析類。我們搜索PV_Wav_Parser類被用到的地方可知,在PVMFWAVFFParserNode類中有PV_Wav_Parser的一個指針成員變數。
再搜索可知,PVMFWAVFFParserNode類是通過PVMFWAVFFParserNodeFactory的CreatePVMFWAVFFParserNode()成員函數生成的。而CreatePVMFWAVFFParserNode()函數是在PVPlayerNodeRegistry::PVPlayerNodeRegistry()類構造函數中通過PVPlayerNodeInfo類被注冊到Oscl_Vector<PVPlayerNodeInfo, OsclMemAllocator> 的vector中,在這個構造函數中,AMR,mp3等node也是同樣被注冊的。
由上可知,Android多媒體框架中對splitter的管理也是與ffmpeg等類似,都是在框架的初始化時注冊的,只不過Opencore注冊的是每個splitter的factory函數。
綜述一下splitter的定義與初始化過程:
每個splitter都在fileformats目錄下有個對應的子目錄,其下有各自的解析類。
每個splitter都在nodes目錄下有關對應的子目錄,其下有各自的統一介面的node類和node factory類。
播放引擎PVPlayerEngine類中有PVPlayerNodeRegistry iPlayerNodeRegistry成員變數。
在PVPlayerNodeRegistry的構造函數中,將 AMR, AAC, MP3等splitter的輸入與輸出類型標示和node factory類中的create node與release delete介面通過PVPlayerNodeInfo類push到Oscl_Vector<PVPlayerNodeInfo, OsclMemAllocator> iType成員變數中。
當前Splitter的匹配過程
PVMFStatus PVPlayerNodeRegistry::QueryRegistry(PVMFFormatType& aInputType, PVMFFormatType& aOutputType, Oscl_Vector<PVUuid, OsclMemAllocator>& aUuids)函數的功能是根據輸入類型和輸出類型,在已注冊的node vector中尋找是否有匹配的node,有的話傳回其唯一識別標識PVUuid。
從QueryRegistry這個函數至底向上搜索可得到,在android中splitter的匹配過程如下:
android_media_MediaPlayer.cpp之中定義了一個JNINativeMethod(JAVA本地調用方法)類型的數組gMethods,供java代碼中調用MultiPlayer類的setDataSource成員函數時找到對應的c++函數
1.{"setDataSource", "(Ljava/lang/String;)V", (void *)
android_media_MediaPlayer_setDataSource},
2.static void android_media_MediaPlayer_setDataSource
(JNIEnv *env, jobject thiz, jstring path)
此函數中先得到當前的MediaPlayer實例,然後調用其setDataSource函數,傳入路徑
3.status_t MediaPlayer::setDataSource(const char *url)
此函數通過調getMediaPlayerService()先得到當前的MediaPlayerService, const sp<IMediaPlayerService>& service(getMediaPlayerService());
然後新建一個IMediaPlayer變數, sp<IMediaPlayer> player(service->create(getpid(), this, fd, offset, length));
在sp<IMediaPlayer> MediaPlayerService::create(pid_t pid, const sp<IMediaPlayerClient>& client, const char* url)中
調status_t MediaPlayerService::Client::setDataSource(const char *url)函數,Client是MediaPlayerService的一個內部類。
在MediaPlayerService::Client::setDataSource中,調sp<MediaPlayerBase> MediaPlayerService::Client::createPlayer(player_type playerType)
生成一個繼承自MediaPlayerBase的PVPlayer實例。

閱讀全文

與android演算法相關的資料

熱點內容
編程人員組裝電腦 瀏覽:455
燕窩新版溯源碼 瀏覽:71
程序員吃青春飯的好處 瀏覽:657
浙江戴爾伺服器雲空間 瀏覽:328
網站鎖源碼 瀏覽:821
CAd列印文件命令 瀏覽:501
小米5sp無法復制加密門禁 瀏覽:829
文件夾添加密碼怎麼找回 瀏覽:799
安卓怎麼校色 瀏覽:277
android基本框架 瀏覽:849
解壓包子小了怎麼補救 瀏覽:988
有什麼管理客戶的app 瀏覽:707
博圖如何加密整個項目 瀏覽:673
c類庫pdf 瀏覽:606
查看當前連接命令 瀏覽:425
可以加密視頻嗎 瀏覽:508
心電圖演算法更新 瀏覽:561
開封拍違章掙錢的app叫什麼 瀏覽:469
計算機與編程基礎知識 瀏覽:482
北京公交一卡通app叫什麼名字 瀏覽:377