当前位置: 首页 > news >正文

手机路径、Windows路径知识及delphiXE跨设备APP自动下载和升级

手机路径、Windows路径知识

及delphiXE跨设备APP自动下载和升级

一、APP安装程序文件版本和权限信息

1、运行时动态调用Android apk的AndroidManifest.xml获取versionName

2、运行时动态调用IOS ipa的info.plist获取CFBundleVersion

          (和entitlements)

uses iOSapi.Foundation;

  NSBundle = interface;  //:包接口

  NSDictionary = interface;  //:目录接口

  NSFileManager = interface;  //:文件管理员接口

  NSFileVersion = interface;   //:文件版本接口

二、TPath手机和电脑的存取路径

(一)、WINDOWS电脑设备

TPath.GetDirectoryName(Filename)参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local
TPath.GetExtension(Filename)参数MSWINDOWS存取位置:.pdf
TPath.GetFileName(Filename)参数MSWINDOWS存取位置:NO.XSKD20150304048.pdf
TPath.GetFileNameWithoutExtension(Filename)参数MSWINDOWS存取位置:NO.XSKD20150304048
TPath.GetFullPath(TPath.GetDownloadsPath)参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local
TPath.GetPathRoot(TPath.GetDownloadsPath)参数MSWINDOWS存取位置:C:\
TPath.GetRandomFileName参数MSWINDOWS存取位置:37CdIVK5.88J


TPath.GetTempFileName参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local\Temp\tmpBF5B.tmp
TPath.GetTempPath参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local\Temp\
TPath.GetHomePath参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Roaming
TPath.GetDocumentsPath参数MSWINDOWS存取位置:C:\Users\Administrator\Documents
TPath.GetSharedDocumentsPath参数MSWINDOWS存取位置:C:\Users\Public\Documents


TPath.GetLibraryPath参数MSWINDOWS存取位置:D:\Http上传下载\IdHttp下载文件断点续传\Win64\Debug\


TPath.GetCachePath参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local
TPath.GetPublicPath参数MSWINDOWS存取位置:C:\ProgramData
TPath.GetPicturesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Pictures
TPath.GetSharedPicturesPath参数MSWINDOWS存取位置:C:\Users\Public\Pictures
TPath.GetCameraPath参数MSWINDOWS存取位置:C:\Users\Administrator\Pictures
TPath.GetSharedCameraPath参数MSWINDOWS存取位置:C:\Users\Public\Pictures
TPath.GetMusicPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music
TPath.GetSharedMusicPath参数MSWINDOWS存取位置:C:\Users\Public\Music
TPath.GetMoviesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Videos
TPath.GetSharedMoviesPath参数MSWINDOWS存取位置:C:\Users\Public\Videos
TPath.GetAlarmsPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music
TPath.GetSharedAlarmsPath参数MSWINDOWS存取位置:C:\Users\Public\Music
TPath.GetDownloadsPath参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local
TPath.GetSharedDownloadsPath参数MSWINDOWS存取位置:C:\ProgramData
TPath.GetRingtonesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music
TPath.GetSharedRingtonesPath参数MSWINDOWS存取位置:C:\Users\Public\Music
TPath.GetRingtonesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

(二)、Android手机、平板、安卓笔记本等设备

     概念:

     /storage/emulated/0/ :安卓指"内部存储"  :可以在安卓的存取权限设置并获取后,进行读写

     /storage/emulated/1/ :安卓指SDCard(“SD卡”):可以在安卓的存取权限设置并获取后,进行读写

    //:::以下对上述规则均适用:::

      //1、你的APP的包全路径名:比如:com.pulledup.mainPro  ,你的APP的包名:mainPro,即package

        //: 包(即应用程序Apk)存取路径:   /data/user/0/包全路径名/

        //: 包(即应用程序Apk)的xml配置文件存取路径:   /内部存储/Addroid/data/包全路径名/files

         App路径:/data/user/0/com.pulledup.mainPro/   //:并非你的App运行时对外存取路径,不可见:

         伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal\   ,即TPath.GetHomePath参数Android存取位置:/data/user/0/com.embarcadero.MainPro/files ,这个路径下的文件:它是emulated  //:仿真的  :获得权限后可读但不可写,除非你将文件在代码开发阶段,就伴随应用Deployment将其分发到.\assets\internal后,才能对该文件可读可写,而无需任何权限(包括存储权限)。

         安卓路径由TJStorageManager进行管理:为以上的JNI析构后拼接路径:仿真路径,和Windows不一个概念!


      //1.1、存取位置GetSharedDownloadsPath参数:(获取共享下载路径:获得权限后可读可写
        //:  /内部存储/Download/NO.XSKD20150304048.pdf


      //1.2、存取位置GetDownloadsPath参数:(获取应用程序的文件下载路径:获得权限后可读可写
        //:  /内部存储/Addroid/data/包全路径名/files/Download/NO.XSKD20150304048.pdf

TPath.GetDirectoryName(Filename)参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download
TPath.GetExtension(Filename)参数Android存取位置:.pdf
TPath.GetFileName(Filename)参数Android存取位置:NO.XSKD20150304048.pdf
TPath.GetFileNameWithoutExtension(Filename)参数Android存取位置:NO.XSKD20150304048
TPath.GetFullPath(TPath.GetDownloadsPath)参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download
TPath.GetPathRoot(TPath.GetDownloadsPath)参数Android存取位置:/
TPath.GetRandomFileName参数Android存取位置:hS1s1veL.GN3


TPath.GetTempFileName参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/tmp/tmp.szyus65J6O
TPath.GetTempPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/tmp :获得权限后可读可写

TPath.GetLibraryPath参数Android存取位置:/data/app/com.embarcadero.MainPro-1/lib/arm  :获得权限后可读但不可写
TPath.GetCachePath参数Android存取位置:/data/user/0/com.embarcadero.MainPro/cache  :获得权限后可读但不可写

TPath.GetHomePath参数Android存取位置:/data/user/0/com.embarcadero.MainPro/files  //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal。TPath.GetHomePath参数Android存取位置:/data/user/0/com.embarcadero.MainPro/files ,这个路径下的文件:它是emulated  //:仿真的  :可读可写路径,除非你将文件在代码开发阶段,就伴随应用Deployment将其分发到.\assets\internal后,才能对该文件可读可写,而无需任何权限(包括存储权限):
TPath.GetDocumentsPath参数Android存取位置:/data/user/0/com.embarcadero.MainPro/files //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal。其权限特征和GetHomePath类似:

TPath.GetSharedDocumentsPath参数Android存取位置:/storage/emulated/0/Documents 

获得权限后可读可写,并且持久,除非机主专业并使用手机助手删除或重置初始化手机,否则永远不会被删除


TPath.GetPublicPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files //:App的对外可见可存取的文件目录的公开路径  

获得权限后可读可写,但其数据可被机主从【设置-应用管理-该应用-存储-删除数据】中清除路径/storage/emulated/0/Android/data/com.embarcadero.MainPro而使其中数据同时消失


TPath.GetPicturesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Pictures
TPath.GetSharedPicturesPath参数Android存取位置:/storage/emulated/0/Pictures
TPath.GetCameraPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/DCIM

获得权限后可读可写

TPath.GetSharedCameraPath参数Android存取位置:/storage/emulated/0/DCIM

获得权限后可读可写,以下均可读写:


TPath.GetMusicPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Music
TPath.GetSharedMusicPath参数Android存取位置:/storage/emulated/0/Music
TPath.GetMoviesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Movies
TPath.GetSharedMoviesPath参数Android存取位置:/storage/emulated/0/Movies
TPath.GetAlarmsPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Alarms
TPath.GetSharedAlarmsPath参数Android存取位置:/storage/emulated/0/Alarms
TPath.GetDownloadsPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download
TPath.GetSharedDownloadsPath参数Android存取位置:/storage/emulated/0/Download
TPath.GetRingtonesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Ringtones
TPath.GetSharedRingtonesPath参数Android存取位置:/storage/emulated/0/Ringtones
TPath.GetRingtonesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Ringtones

备注:用Android原生方法获取路径:uses Androidapi.IOUtils;:

//  File Locations in Internal memory. (Accessible only to the program.
// Not accessible to anyone without rooting the Android system.)
// Files written here are deleted when uninstalling the application.)
function GetFilesDir: string;
function GetCacheDir: string;
function GetLibraryPath: string;

//  File Locations in External memory. (Accessible only to the program, but easily
// readable mounting the external storage as a drive in a computer.
// Files written here are deleted when uninstalling the application.)
function GetExternalFilesDir: string;
function GetExternalCacheDir: string;

function GetExternalPicturesDir: string;
function GetExternalCameraDir: string;
/// <summary>Get documents from external storage</summary>
function GetExternalDocumentsDir: string;
function GetExternalDownloadsDir: string;
function GetExternalMoviesDir: string;
function GetExternalMusicDir: string;
function GetExternalAlarmsDir: string;
function GetExternalRingtonesDir: string;


//  File Locations in External memory. (Accessible to all programs, easily
// readable mounting the external storage as a drive in a computer.
// Files written here are preserved when uninstalling the application.)
function GetSharedFilesDir: string;
function GetSharedPicturesDir: string;
function GetSharedCameraDir: string;
/// <summary>Get Shared documents from external storage</summary>
function GetSharedDocumentsDir: string;
function GetSharedDownloadsDir: string;
function GetSharedMoviesDir: string;
function GetSharedMusicDir: string;
function GetSharedAlarmsDir: string;
function GetSharedRingtonesDir: string;

(三)、IOS、IPad

         苹果沙盒路径由TFileManager和TDirectoryManager进行管理:为各子NSURL析构后拼接路径:仿真路径,和Windows不一个概念!

TPath.GetDirectoryName(Filename)参数IOS存取位置:【IOS不能取出此路径!,但不会报错:难道是没有在AppStore中发布?】
TPath.GetExtension(Filename)参数IOS存取位置:.pdf
TPath.GetFileName(Filename)参数IOS存取位置:NO.XSKD20150304048.pdf
TPath.GetFileNameWithoutExtension(Filename)参数IOS存取位置:NO.XSKD20150304048
TPath.GetFullPath(Filename)参数IOS存取位置:/NO.XSKD20150304048.pdf
TPath.GetPathRoot(Filename)参数IOS存取位置:【IOS不能取出此路径!,但不会报错:难道是没有在AppStore中发布?】
TPath.GetRandomFileName参数IOS存取位置:q94333cY.9Y3


TPath.GetTempFileName参数IOS存取位置:/private/var/mobile/Containers/Data/Application/2FEC9F6C-0EDA-498C-B8AD-E9ED35ED0AD5/tmp/tmp.roAY9d   //:伴随应用打包时就一起发布文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\  ,只有在Project-Options->Versin info->下增设了key: UIFileSharingEnabled = true才可见

TPath.GetTempPath参数IOS存取位置:/private/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/tmp  :获得权限后可读可写

TPath.GetHomePath参数IOS存取位置:/private/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2   //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\  ,只有在Project-Options->Versin info->下增设了key: UIFileSharingEnabled = true才可见

获得权限后可读但不可写

TPath.GetDocumentsPath参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Documents   //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\  ,只有在Project-Options->Versin info->下增设了key:UIFileSharingEnabled = true才可见:但须根据TPath.GetHomePath参数进行路径拼接

获得权限后可读可写


TPath.GetLibraryPath参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Library     

      //:TPath.GetTempPath+ PathDelim +'temp' 下保存的文件每次app重新启动会删除。webbrowser只能访问该文件夹下的内容
TPath.GetCachePath参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Library/Caches   

      //:TPath.GetCachePath+ PathDelim +'temp' 下载的缓存文件在这里保存,重启app一般不会删除

TPath.GetSharedDocumentsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:如果用Shared的路径,会闪退,因为它没有内部SD卡】

TPath.GetPublicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetPicturesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetSharedPicturesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetCameraPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetSharedCameraPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetMusicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetSharedMusicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetMoviesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetSharedMoviesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetAlarmsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetSharedAlarmsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetDownloadsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetSharedDownloadsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetSharedRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】
TPath.GetRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

(四)、MAC电脑设备

TPath.GetDirectoryName(Filename)参数MAC存取位置:
TPath.GetExtension(Filename)参数MAC存取位置:.pdf
TPath.GetFileName(Filename)参数MAC存取位置:NO.XSKD20150304048.pdf
TPath.GetFileNameWithoutExtension(Filename)参数MAC存取位置:NO.XSKD20150304048
TPath.GetFullPath(Filename)参数MAC存取位置:/Users/laichao/PAServer/scratch-dir/Administrator-PAS20.0/MainPro.app/Contents/MacOS/NO.XSKD20150304048.pdf
TPath.GetPathRoot(Filename)参数MAC存取位置:
TPath.GetRandomFileName参数MAC存取位置:4l7NYSdR.LXy


TPath.GetTempFileName参数MAC存取位置:/var/folders/7f/jkpz5l996msgztm4lrq0pwv80000gn/T/tmp.HlKqnT
TPath.GetTempPath参数MAC存取位置:/var/folders/7f/jkpz5l996msgztm4lrq0pwv80000gn/T/


TPath.GetHomePath参数MAC存取位置:/Users/laichao
TPath.GetDocumentsPath参数MAC存取位置:/Users/laichao/Documents


TPath.GetSharedDocumentsPath参数MAC存取位置:/Users/laichao/Public
TPath.GetLibraryPath参数MAC存取位置:/Users/laichao/Library
TPath.GetCachePath参数MAC存取位置:/Users/laichao/Library/Caches


TPath.GetPublicPath参数MAC存取位置:/Users/laichao/Public


TPath.GetPicturesPath参数MAC存取位置:/Users/laichao/Pictures
TPath.GetSharedPicturesPath参数MAC存取位置:/Users/laichao/Public
TPath.GetCameraPath参数MAC存取位置:/Users/laichao/Pictures
TPath.GetSharedCameraPath参数MAC存取位置:/Users/laichao/Public
TPath.GetMusicPath参数MAC存取位置:/Users/laichao/Music
TPath.GetSharedMusicPath参数MAC存取位置:/Users/laichao/Public
TPath.GetMoviesPath参数MAC存取位置:/Users/laichao/Movies
TPath.GetSharedMoviesPath参数MAC存取位置:/Users/laichao/Public
TPath.GetAlarmsPath参数MAC存取位置:/Users/laichao/Music
TPath.GetSharedAlarmsPath参数MAC存取位置:/Users/laichao/Public
TPath.GetDownloadsPath参数MAC存取位置:/Users/laichao/Downloads
TPath.GetSharedDownloadsPath参数MAC存取位置:/Users/laichao/Public
TPath.GetRingtonesPath参数MAC存取位置:/Users/laichao/Music
TPath.GetSharedRingtonesPath参数MAC存取位置:/Users/laichao/Public
TPath.GetRingtonesPath参数MAC存取位置:/Users/laichao/Music

三、建议各操作系统采用公用路径表达方式

获取你的App应用数据的主路径:TPath.GetHomePath

1、MSWINDOWS
指:
C:\Users\Administrator\AppData\Roaming    :在MSWINDOWS下,遍历所有应用程序的数据的根路径,后需要增加一个自己应用的名称作为子路径来识别自己的应用,比如:/MainPro,结果为:C:\Users\Administrator\AppData\Roaming/MainPro。这个根路径默认是隐藏的,同时需要Administrator管理权限才可以访问。

2、Android
指:
/data/user/0/com.embarcadero.MainPro
其中:com.embarcadero.MainPro:你的应用的唯一标识:package包名
3、IOS
指:
/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2
其中:02029637-C492-4ECA-8D14-96731ADB7CC2:你的应用的唯一标识:CFBundleName包名的32位MD5码/32位Hash码

四、结论

1、由上看出,由于IOS在没有APP端代码请求权限的情况下,是不允许访问操作系统自带的各个共享路径的,比如:相册GetCameraPath、图片GetSharedPicturesPath、音乐GetSharedMusicPath、视频GetSharedMoviesPath、下载GetSharedDownloadsPath等,所以,最好是读写可以缓存的文件夹和其下的文件。

通用平台的可以缓存的文件夹和其下的文件的代码:

{$IFDEF MSWINDOWS}

    Result := ExtractFilePath(ParamStr(0));

{$ENDIF MSWINDOWS}

{$IFDEF IOS}

    Result :=TPath.GetCachePath;

    //:重启后不会删除,文件(夹)可见在MAC下调试可用PAServer显示包的内容;TPath.GetTempPath为临时缓存重启后就没了(可见)

{$ENDIF IOS}
{$IFDEF MACOS}

    Result := TPath.GetCachePath;//:重启后不会删除,TPath.GetTempPath为临时缓存重启后就没了;均(可见)

{$ENDIF MACOS}

{$IFDEF Android}

    Result := TPath.GetSharedDocumentsPath; // 安卓外部SD卡(外存),文件(夹)可见,在根下Documents

    Result := TPath.GetDocumentsPath; // 安卓若无外部SD卡,则用内部存储(内存),文件(夹)不可见

{$ENDIF Android}

2、通用平台的分发路径(项目Deployment下的Remote Path)的代码:

{$IF DEFINED(IOS) or DEFINED(ANDROID)}
    Result := TPath.GetDocumentsPath + PathDelim + aFileName;
{$ELSE}//MSWINDOWS或MACOS,但含义和实际位置不同:
    Result := ExtractFilePath(ParamStr(0)) + aFileName;
    //:MSWINDOWS下:即可执行文件路径
    //:MACOS下:并非Unix Execute可执行文件的路径,而是Contents\Resources\StartUp\
{$ENDIF}

注意:

  // IOS下项目Deployment下的Remote Path应设为:StartUp\Documents\
  // Android下项目Deployment下的Remote Path应设为:Assets\internal\
  // MACOS下项目Deployment下的Remote Path应设为:Contents\Resources\StartUp\
     //:MACOS下Contents\MacOS\路径下放这些文件:
     //  :1、项目输出路径ProjectOutput即Unix Execute可执行文件;
     //  :2、项目特征文件库诸如libcgsqlite3.dylib和libmidas.dylib

MACOS下下的文件分发(图片输出全部放到Contents\Resources\StartUp\):

五、用Http或Https 下载资源

1、判断客户端操作系统类别OsType

2、根据操作系统类别OsType,下载web服务器上不同路径下的资源

六、打开下载到本地的一个资源链接,用本地已有的资源库打开文件进行浏览或覆盖安装所下App包

4.1、Windows打开一个路径文件

    4.1.1、安装程序应当判断旧版是否在运行,如在运行现将其给关闭后,再执行安装。(不影响数据)

    4.1.2、关于数据:

         .INI文件和.txt等App的配置文件:里面保存了旧版应用的本地配置,应当在通知新版有新版时先备份到指定路径,然后等待新版覆盖安装结束起订运行时读取并覆盖。

4.2、android或IOS打开一个url

    4.2.1、直接覆盖安装(不影响数据),操作系统安装完毕执行“打开”,会自动提示是否删除安装包。

    4.1.2、关于数据:

         .INI文件和.txt等App的配置文件:里面保存了旧版应用的本地配置,应当在通知新版有新版时先备份到指定路径,然后等待新版覆盖安装结束起订运行时读取并覆盖。

七、牵引软件自动下载升级流程图

八、POSIX权限

(一)、Android   : uses Androidapi.JNI.Os , System.Permissions ; 

  JManifest_permissionClass = interface(JObjectClass)
    ['{7138C56B-F5A7-4319-8D1D-0035C5F4E01A}']
    //(访问登记属性)读取或写入登记check-in数据库属性表的权限
    {class} property ACCESS_CHECKIN_PROPERTIES: JString read _GetACCESS_CHECKIN_PROPERTIES;
    //(获取粗略位置)通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米
    {class} property ACCESS_COARSE_LOCATION: JString read _GetACCESS_COARSE_LOCATION;
    //(获取精确位置)通过GPS芯片接收卫星的定位信息,定位精度达10米以内
    {class} property ACCESS_FINE_LOCATION: JString read _GetACCESS_FINE_LOCATION;
    //(访问定位额外命令)允许程序访问额外的定位提供者指令
    {class} property ACCESS_LOCATION_EXTRA_COMMANDS: JString read _GetACCESS_LOCATION_EXTRA_COMMANDS;
    //(获取网络状态)获取网络信息状态,如当前的网络连接是否有效
    {class} property ACCESS_NETWORK_STATE: JString read _GetACCESS_NETWORK_STATE;
    //通知 APP通知显示在状态栏
    {class} property ACCESS_NOTIFICATION_POLICY: JString read _GetACCESS_NOTIFICATION_POLICY;
    //(获取WiFi状态)获取当前WiFi接入的状态以及WLAN热点的信息
    {class} property ACCESS_WIFI_STATE: JString read _GetACCESS_WIFI_STATE;
    //(账户管理)获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限
    {class} property ACCOUNT_MANAGER: JString read _GetACCOUNT_MANAGER;
    //通讯录权限
    {class} property ADD_VOICEMAIL: JString read _GetADD_VOICEMAIL;
    //允许您的应用通过编程方式接听呼入电话
    {class} property ANSWER_PHONE_CALLS: JString read _GetANSWER_PHONE_CALLS;
    //(电量统计)获取电池电量统计信息
    {class} property BATTERY_STATS: JString read _GetBATTERY_STATS;
    //绑定访问服务
    {class} property BIND_ACCESSIBILITY_SERVICE: JString read _GetBIND_ACCESSIBILITY_SERVICE;
    //(绑定小插件)允许一个程序告诉appWidget服务需要访问小插件的数据库
    {class} property BIND_APPWIDGET: JString read _GetBIND_APPWIDGET;
    //
    {class} property BIND_AUTOFILL_SERVICE: JString read _GetBIND_AUTOFILL_SERVICE;
    //这个常数是在API级别23否决。使用 BIND_CARRIER_SERVICES 替代
    {class} property BIND_CARRIER_MESSAGING_SERVICE: JString read _GetBIND_CARRIER_MESSAGING_SERVICE;
    //允许在载体应用程序中绑定服务的系统进程将有此权限
    {class} property BIND_CARRIER_SERVICES: JString read _GetBIND_CARRIER_SERVICES;
    //必须由 要求,确保只有系统可以绑定到它。
    {class} property BIND_CHOOSER_TARGET_SERVICE: JString read _GetBIND_CHOOSER_TARGET_SERVICE;
    {class} property BIND_CONDITION_PROVIDER_SERVICE: JString read _GetBIND_CONDITION_PROVIDER_SERVICE;
    //(绑定设备管理)请求系统管理员接收者receiver,只有系统才能使用
    {class} property BIND_DEVICE_ADMIN: JString read _GetBIND_DEVICE_ADMIN;
    //
    {class} property BIND_DREAM_SERVICE: JString read _GetBIND_DREAM_SERVICE;
    //
    {class} property BIND_INCALL_SERVICE: JString read _GetBIND_INCALL_SERVICE;
    //(绑定输入法)请求InputMethodService服务,只有系统才能使用
    {class} property BIND_INPUT_METHOD: JString read _GetBIND_INPUT_METHOD;
    //
    {class} property BIND_MIDI_DEVICE_SERVICE: JString read _GetBIND_MIDI_DEVICE_SERVICE;
    //
    {class} property BIND_NFC_SERVICE: JString read _GetBIND_NFC_SERVICE;
    //
    {class} property BIND_NOTIFICATION_LISTENER_SERVICE: JString read _GetBIND_NOTIFICATION_LISTENER_SERVICE;
    //
    {class} property BIND_PRINT_SERVICE: JString read _GetBIND_PRINT_SERVICE;
    //
    {class} property BIND_QUICK_SETTINGS_TILE: JString read _GetBIND_QUICK_SETTINGS_TILE;
    //(绑定RemoteView)必须通过RemoteViewsService服务来请求,只有系统才能用
    {class} property BIND_REMOTEVIEWS: JString read _GetBIND_REMOTEVIEWS;
    //
    {class} property BIND_SCREENING_SERVICE: JString read _GetBIND_SCREENING_SERVICE;
    //
    {class} property BIND_TELECOM_CONNECTION_SERVICE: JString read _GetBIND_TELECOM_CONNECTION_SERVICE;
    //
    {class} property BIND_TEXT_SERVICE: JString read _GetBIND_TEXT_SERVICE;
    //
    {class} property BIND_TV_INPUT: JString read _GetBIND_TV_INPUT;
    //
    {class} property BIND_VISUAL_VOICEMAIL_SERVICE: JString read _GetBIND_VISUAL_VOICEMAIL_SERVICE;
    //
    {class} property BIND_VOICE_INTERACTION: JString read _GetBIND_VOICE_INTERACTION;
    //
    {class} property BIND_VPN_SERVICE: JString read _GetBIND_VPN_SERVICE;
    //
    {class} property BIND_VR_LISTENER_SERVICE: JString read _GetBIND_VR_LISTENER_SERVICE;
    //(绑定壁纸)必须通过WallpaperService服务来请求,只有系统才能用
    {class} property BIND_WALLPAPER: JString read _GetBIND_WALLPAPER;
    //(使用蓝牙 )允许程序连接配对过的蓝牙设备
    {class} property BLUETOOTH: JString read _GetBLUETOOTH;
    //(蓝牙管理)允许程序进行发现和配对新的蓝牙设备
    {class} property BLUETOOTH_ADMIN: JString read _GetBLUETOOTH_ADMIN;
    //
    {class} property BLUETOOTH_PRIVILEGED: JString read _GetBLUETOOTH_PRIVILEGED;
    //
    {class} property BODY_SENSORS: JString read _GetBODY_SENSORS;
    //(应用删除时广播)当一个应用在删除时触发一个广播
    {class} property BROADCAST_PACKAGE_REMOVED: JString read _GetBROADCAST_PACKAGE_REMOVED;
    //(收到短信时广播)当收到短信时触发一个广播
    {class} property BROADCAST_SMS: JString read _GetBROADCAST_SMS;
    //(连续广播)允许一个程序收到广播后快速收到下一个广播
    {class} property BROADCAST_STICKY: JString read _GetBROADCAST_STICKY;
    //(WAP PUSH广播)WAP PUSH服务收到后触发一个广播
    {class} property BROADCAST_WAP_PUSH: JString read _GetBROADCAST_WAP_PUSH;
    //(拨打电话)允许程序从非系统拨号器里输入电话号码
    {class} property CALL_PHONE: JString read _GetCALL_PHONE;
    //(通话权限)允许程序拨打电话,替换系统的拨号器界面
    {class} property CALL_PRIVILEGED: JString read _GetCALL_PRIVILEGED;
    //(拍照权限)允许访问摄像头进行拍照
    {class} property CAMERA: JString read _GetCAMERA;
    //
    {class} property CAPTURE_AUDIO_OUTPUT: JString read _GetCAPTURE_AUDIO_OUTPUT;
    //
    {class} property CAPTURE_SECURE_VIDEO_OUTPUT: JString read _GetCAPTURE_SECURE_VIDEO_OUTPUT;
    //
    {class} property CAPTURE_VIDEO_OUTPUT: JString read _GetCAPTURE_VIDEO_OUTPUT;
    //(改变组件状态)改变组件是否启用状态
    {class} property CHANGE_COMPONENT_ENABLED_STATE: JString read _GetCHANGE_COMPONENT_ENABLED_STATE;
    //(改变配置)允许当前应用改变配置,如定位
    {class} property CHANGE_CONFIGURATION: JString read _GetCHANGE_CONFIGURATION;
    //(改变网络状态)改变网络状态如是否能联网
    {class} property CHANGE_NETWORK_STATE: JString read _GetCHANGE_NETWORK_STATE;
    //(改变WiFi多播状态)改变WiFi多播状态
    {class} property CHANGE_WIFI_MULTICAST_STATE: JString read _GetCHANGE_WIFI_MULTICAST_STATE;
    //(改变WiFi状态)改变WiFi状态
    {class} property CHANGE_WIFI_STATE: JString read _GetCHANGE_WIFI_STATE;
    //清除应用缓存
    {class} property CLEAR_APP_CACHE: JString read _GetCLEAR_APP_CACHE;
    //(控制定位更新)允许获得移动网络定位信息改变
    {class} property CONTROL_LOCATION_UPDATES: JString read _GetCONTROL_LOCATION_UPDATES;
    //(删除缓存文件)允许应用删除缓存文件
    {class} property DELETE_CACHE_FILES: JString read _GetDELETE_CACHE_FILES;
    //允许程序删除应用
    {class} property DELETE_PACKAGES: JString read _GetDELETE_PACKAGES;
    //允许程序到RW到诊断资源
    {class} property DIAGNOSTIC: JString read _GetDIAGNOSTIC;
    //允许程序禁用键盘锁
    {class} property DISABLE_KEYGUARD: JString read _GetDISABLE_KEYGUARD;
    //允许程序获取系统dump信息从系统服务
    {class} property DUMP: JString read _GetDUMP;
    //允许程序扩展或收缩状态栏
    {class} property EXPAND_STATUS_BAR: JString read _GetEXPAND_STATUS_BAR;
    //允许程序运行工厂测试模式
    {class} property FACTORY_TEST: JString read _GetFACTORY_TEST;
    //访问GMail账户列表
    {class} property GET_ACCOUNTS: JString read _GetGET_ACCOUNTS;
    //获得特权帐户
    {class} property GET_ACCOUNTS_PRIVILEGED: JString read _GetGET_ACCOUNTS_PRIVILEGED;
    //获取应用的文件大小
    {class} property GET_PACKAGE_SIZE: JString read _GetGET_PACKAGE_SIZE;
    //允许程序获取当前或最近运行的应用
    {class} property GET_TASKS: JString read _GetGET_TASKS;
    //允许程序使用全局搜索功能
    {class} property GLOBAL_SEARCH: JString read _GetGLOBAL_SEARCH;
    //安装定位提供
    {class} property INSTALL_LOCATION_PROVIDER: JString read _GetINSTALL_LOCATION_PROVIDER;
    //允许程序安装应用
    {class} property INSTALL_PACKAGES: JString read _GetINSTALL_PACKAGES;
    //
    {class} property INSTALL_SHORTCUT: JString read _GetINSTALL_SHORTCUT;
    //
    {class} property INSTANT_APP_FOREGROUND_SERVICE: JString read _GetINSTANT_APP_FOREGROUND_SERVICE;
    //访问网络连接,可能产生GPRS流量
    {class} property INTERNET: JString read _GetINTERNET;
    //允许程序调用killBackgroundProcesses(String).方法结束后台进程
    {class} property KILL_BACKGROUND_PROCESSES: JString read _GetKILL_BACKGROUND_PROCESSES;
    //位置硬件
    {class} property LOCATION_HARDWARE: JString read _GetLOCATION_HARDWARE;
    //管理文件
    {class} property MANAGE_DOCUMENTS: JString read _GetMANAGE_DOCUMENTS;
    //允许通过自我管理的ConnectionService API管理自己的调用的调用应用程序
    {class} property MANAGE_OWN_CALLS: JString read _GetMANAGE_OWN_CALLS;
    //允许程序执行软格式化,删除系统配置信息
    {class} property MASTER_CLEAR: JString read _GetMASTER_CLEAR;
    {class} property MEDIA_CONTENT_CONTROL: JString read _GetMEDIA_CONTENT_CONTROL;
    //修改声音设置信息
    {class} property MODIFY_AUDIO_SETTINGS: JString read _GetMODIFY_AUDIO_SETTINGS;
    //修改电话状态,如飞行模式,但不包含替换系统拨号器界面
    {class} property MODIFY_PHONE_STATE: JString read _GetMODIFY_PHONE_STATE;
    //格式化可移动文件系统,比如格式化清空SD卡
    {class} property MOUNT_FORMAT_FILESYSTEMS: JString read _GetMOUNT_FORMAT_FILESYSTEMS;
    //挂载、反挂载外部文件系统
    {class} property MOUNT_UNMOUNT_FILESYSTEMS: JString read _GetMOUNT_UNMOUNT_FILESYSTEMS;
    //允许程序执行NFC近距离通讯操作,用于移动支持
    {class} property NFC: JString read _GetNFC;
    //安装包使用情况
    {class} property PACKAGE_USAGE_STATS: JString read _GetPACKAGE_USAGE_STATS;
    //创建一个永久的Activity,该功能标记为将来将被移除
    {class} property PERSISTENT_ACTIVITY: JString read _GetPERSISTENT_ACTIVITY;
    //允许程序监视,修改或放弃拨出电话
    {class} property PROCESS_OUTGOING_CALLS: JString read _GetPROCESS_OUTGOING_CALLS;
    //允许程序读取用户的日程信息
    {class} property READ_CALENDAR: JString read _GetREAD_CALENDAR;
    //读取通话记录日志
    {class} property READ_CALL_LOG: JString read _GetREAD_CALL_LOG;
    //读取联系方式
    {class} property READ_CONTACTS: JString read _GetREAD_CONTACTS;
    //读取外部存储
    {class} property READ_EXTERNAL_STORAGE: JString read _GetREAD_EXTERNAL_STORAGE;
    //读取帧缓存用于屏幕截图
    {class} property READ_FRAME_BUFFER: JString read _GetREAD_FRAME_BUFFER;
    //读取当前键的输入状态,仅用于系统
    {class} property READ_INPUT_STATE: JString read _GetREAD_INPUT_STATE;
    //读取系统底层日志
    {class} property READ_LOGS: JString read _GetREAD_LOGS;
    //读取电话号码
    {class} property READ_PHONE_NUMBERS: JString read _GetREAD_PHONE_NUMBERS;
    //访问电话状态
    {class} property READ_PHONE_STATE: JString read _GetREAD_PHONE_STATE;
    //读取短信内容
    {class} property READ_SMS: JString read _GetREAD_SMS;
    //读取同步设置,读取Google在线同步设置
    {class} property READ_SYNC_SETTINGS: JString read _GetREAD_SYNC_SETTINGS;
    //读取同步状态,获得Google在线同步状态
    {class} property READ_SYNC_STATS: JString read _GetREAD_SYNC_STATS;
    {class} property READ_VOICEMAIL: JString read _GetREAD_VOICEMAIL;
    //允许程序重新启动设备
    {class} property REBOOT: JString read _GetREBOOT;
    //允许程序开机自动运行
    {class} property RECEIVE_BOOT_COMPLETED: JString read _GetRECEIVE_BOOT_COMPLETED;
    //接收彩信
    {class} property RECEIVE_MMS: JString read _GetRECEIVE_MMS;
    //接收短信
    {class} property RECEIVE_SMS: JString read _GetRECEIVE_SMS;
    //接收WAP PUSH信息
    {class} property RECEIVE_WAP_PUSH: JString read _GetRECEIVE_WAP_PUSH;
    //录制声音通过手机或耳机的麦克
    {class} property RECORD_AUDIO: JString read _GetRECORD_AUDIO;
    //重新排序系统Z轴运行中的任务
    {class} property REORDER_TASKS: JString read _GetREORDER_TASKS;
    //允许伴随应用在后台运行
    {class} property REQUEST_COMPANION_RUN_IN_BACKGROUND: JString read _GetREQUEST_COMPANION_RUN_IN_BACKGROUND;
    //允许伴随应用在后台使用数据
    {class} property REQUEST_COMPANION_USE_DATA_IN_BACKGROUND: JString read _GetREQUEST_COMPANION_USE_DATA_IN_BACKGROUND;
    //允许应用程序请求删除软件包
    {class} property REQUEST_DELETE_PACKAGES: JString read _GetREQUEST_DELETE_PACKAGES;
    //请求更大的电池优化
    {class} property REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: JString read _GetREQUEST_IGNORE_BATTERY_OPTIMIZATIONS;
    //安装应用程序
    {class} property REQUEST_INSTALL_PACKAGES: JString read _GetREQUEST_INSTALL_PACKAGES;
    //结束任务通过restartPackage(String)方法,该方式将在外来放弃
    {class} property RESTART_PACKAGES: JString read _GetRESTART_PACKAGES;
    //通过邮件发送回复
    {class} property SEND_RESPOND_VIA_MESSAGE: JString read _GetSEND_RESPOND_VIA_MESSAGE;
    //发送短信
    {class} property SEND_SMS: JString read _GetSEND_SMS;
    //设置闹铃提醒
    {class} property SET_ALARM: JString read _GetSET_ALARM;
    //设置程序在后台是否总是退出
    {class} property SET_ALWAYS_FINISH: JString read _GetSET_ALWAYS_FINISH;
    //设置全局动画缩放
    {class} property SET_ANIMATION_SCALE: JString read _GetSET_ANIMATION_SCALE;
    //设置调试程序,
    {class} property SET_DEBUG_APP: JString read _GetSET_DEBUG_APP;
    //设置应用的参数
    {class} property SET_PREFERRED_APPLICATIONS: JString read _GetSET_PREFERRED_APPLICATIONS;
    //允许程序设置最大的进程数量的限制
    {class} property SET_PROCESS_LIMIT: JString read _GetSET_PROCESS_LIMIT;
    //设置系统时间
    {class} property SET_TIME: JString read _GetSET_TIME;
    //设置系统时区
    {class} property SET_TIME_ZONE: JString read _GetSET_TIME_ZONE;
    //设置桌面壁纸
    {class} property SET_WALLPAPER: JString read _GetSET_WALLPAPER;
    //设置壁纸建议
    {class} property SET_WALLPAPER_HINTS: JString read _GetSET_WALLPAPER_HINTS;
    //发送一个永久的进程信号
    {class} property SIGNAL_PERSISTENT_PROCESSES: JString read _GetSIGNAL_PERSISTENT_PROCESSES;
    //允许程序打开、关闭、禁用状态栏
    {class} property STATUS_BAR: JString read _GetSTATUS_BAR;
    //显示系统窗口
    {class} property SYSTEM_ALERT_WINDOW: JString read _GetSYSTEM_ALERT_WINDOW;
    //红外发送
    {class} property TRANSMIT_IR: JString read _GetTRANSMIT_IR;
    //卸载快捷方式
    {class} property UNINSTALL_SHORTCUT: JString read _GetUNINSTALL_SHORTCUT;
    //更新设备状态
    {class} property UPDATE_DEVICE_STATS: JString read _GetUPDATE_DEVICE_STATS;
    //指纹识别
    {class} property USE_FINGERPRINT: JString read _GetUSE_FINGERPRINT;
    //允许程序使用SIP视频服务
    {class} property USE_SIP: JString read _GetUSE_SIP;
    //允许振动
    {class} property VIBRATE: JString read _GetVIBRATE;
    //允许程序在手机屏幕关闭后后台进程仍然运行
    {class} property WAKE_LOCK: JString read _GetWAKE_LOCK;
    //写入网络GPRS接入点设置
    {class} property WRITE_APN_SETTINGS: JString read _GetWRITE_APN_SETTINGS;
    //写入日程,但不可读取
    {class} property WRITE_CALENDAR: JString read _GetWRITE_CALENDAR;
    //
    {class} property WRITE_CALL_LOG: JString read _GetWRITE_CALL_LOG;
    //写入联系人,但不可读取
    {class} property WRITE_CONTACTS: JString read _GetWRITE_CONTACTS;
    //模拟器中sdcard中创建文件夹的权限
    {class} property WRITE_EXTERNAL_STORAGE: JString read _GetWRITE_EXTERNAL_STORAGE;
    //允许程序写入Google Map服务数据
    {class} property WRITE_GSERVICES: JString read _GetWRITE_GSERVICES;
    //允许程序读写系统安全敏感的设置项
    {class} property WRITE_SECURE_SETTINGS: JString read _GetWRITE_SECURE_SETTINGS;
    //允许读写系统设置项
    {class} property WRITE_SETTINGS: JString read _GetWRITE_SETTINGS;
    //写入Google在线同步设置
    {class} property WRITE_SYNC_SETTINGS: JString read _GetWRITE_SYNC_SETTINGS;
    //
    {class} property WRITE_VOICEMAIL: JString read _GetWRITE_VOICEMAIL;
  end;

(二)、IOS

十、杂

IOS开发者路径:

android内部全路径:

相关文章:

手机路径、Windows路径知识及delphiXE跨设备APP自动下载和升级

手机路径、Windows路径知识 及delphiXE跨设备APP自动下载和升级 一、APP安装程序文件版本和权限信息 1、运行时动态调用Android apk的AndroidManifest.xml获取versionName 2、运行时动态调用IOS ipa的info.plist获取CFBundleVersion &#xff08;和entitlements&#xff09…...

GitLab 502问题解决方案

由于最近 gitlab 切换到另一台服务器上部署的 gitlab 后&#xff0c;经常出现 502。平时重启 gitlab 后都能解决&#xff0c;今天突然重启多次后都还是 502&#xff08;重启日志是正常的&#xff09;&#xff0c;遂通过 gitlab-ctl tail 查看日志进行排查。 gitlab-ctl tail通…...

selenium打开火狐浏览器

项目上需求为&#xff1a;甲方OA 系统是IE系统&#xff0c;需要从IE系统点个按钮打开火狐浏览器单点登录跳转到我们的系统 前期解决方案为&#xff1a;打开浏览器就行了&#xff0c;然后就用的是打开本地浏览器&#xff0c;但是由于B/S架构&#xff0c;有别人远程访问我的ip来…...

多标签分类论文笔记 | ML-Decoder: Scalable and Versatile Classification Head

个人论文精读笔记&#xff0c;主要是翻译心得&#xff0c;欢迎旁观&#xff0c;如果有兴趣可以在评论区留言&#xff0c;我们一起探讨。 Paper: https://arxiv.org/pdf/2111.12933.pdf Code: https://github.com/Alibaba-MIIL/ML_Decoder 文章目录 0. 摘要1. 介绍2. 方法2.1 Ba…...

修改http_charfinder.py使能在python311环境中运行

需要修改两个函数&#xff0c;第一个是init函数&#xff0c;修改如下&#xff1a; async def init(loop, address, port): # <1> # app web.Application(looploop) # <2> # app.router.add_route(GET, /, home) # <3> app web.Application(…...

蓝桥杯(跳跃 C++)

思路&#xff1a; 1、根据题目很容易知道可以用深度搜索、广度搜索、动态规划的思想解题。 2、这里利用深度搜素&#xff0c;由题目可知&#xff0c;可以往九个方向走。 3、这里的判断边界就是走到终点。 #include<iostream> using namespace std; int max1 0; int …...

08 | Jackson 注解在实体里面如何应用?常见的死循环问题如何解决?

我们用 Spring Boot 里面默认集成的 fasterxml.jackson 加以说明&#xff0c;这看似和 JPA 没什么关系&#xff0c;但是一旦我们和 Entity 一起使用的时候&#xff0c;就会遇到一些问题&#xff0c;特别是新手同学&#xff0c;我们这一课时详细介绍一下用法。先来跟着我了解一下…...

JavaScript—获取当前时间 并转化为yyyy-MM-dd hh:mm:ss格式

JavaScript—获取当前时间 并转化为yyyy-MM-dd hh:mm:ss格式 每次项目都需要用到时间戳格式,可以封装成一个方法 下次直接CV过去 const timestampPadStart=(str)=>{str=String(str);return str.padStart(2,0)...

OpenHarmony创新赛丨报名倒计时,超强秘籍带你直通大奖!

OpenHarmony创新赛报名倒计时开始啦&#xff01; 设于开放原子全球开源大赛下的OpenHarmony创新赛&#xff0c;目前正在如火如荼地进行赛事招募中&#xff01;这次大赛围绕创新应用、商显行业、金融行业三大赛题&#xff0c;邀请来自企业、个人、高校师生等各界群体的优秀开发者…...

Linux高性能服务器编程 学习笔记 第十四章 进程池和线程池

动态创建子进程或子线程的缺点&#xff1a; 1.动态创建进程或线程比较耗时&#xff0c;这将导致较慢的客户响应。 2.动态创建的子进程或子线程通常只用来为一个客户服务&#xff08;除非我们做特殊处理&#xff09;&#xff0c;这将导致系统上产生大量的进程或线程&#xff0c…...

微信小程序/vue3/uview-plus form兜底校验

效果图 代码 <template><u-form :model"form" ref"formRole" :rules"rules"><u-form-item prop"nickname"><u-input v-model"form.nickname" placeholder"姓名" border"none" /&…...

Photoshop 2024正式发布!内置最新PS AI,创意填充等功能无限制使用!

PS正式版目前更新到了2024&#xff0c;版本为25.0。 安装教程 1、下载得到安装包后&#xff0c;先解压。鼠标右键&#xff0c;【解压到当前文件夹】 2、双击 Set-up 开始安装 3、这里可以更改安装位置。如果C盘空间不够大&#xff0c;可以把它安装到C盘以外。更改好后&#x…...

芯片学习记录TLP184

TLP184 芯片介绍 TLP184是一款光耦隔离器&#xff0c;它的主要特点包括&#xff1a;高电压耐受能力、高传输速度、高共模隔离能力、低功耗等。它可以用于工业自动化、通信设备、家用电器等领域的电气隔离应用。由一个光电晶体管组成&#xff0c;光学耦合到两个红外发射二极管…...

C++ 重载运算符和重载函数

前言 C 允许在同一作用域中的某个函数和运算符指定多个定义&#xff0c;分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明&#xff0c;但是它们的参数列表和定义&#xff08;实现&#xff09;不相同。 当您调用一个…...

Linux:mongodb数据库基础操作(3.4版本)

安装 3.*版本和4.*版本安装都是一样的 Linux&#xff1a;mongodb数据库源码包安装&#xff08;4.4.25版本&#xff09;_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/133826626?spm1001.2014.3001.5501 mysql和mongodb对比 登录…...

nginx实现灰度上线(InsCode AI 创作助手)

要基于Nginx实现灰度上线&#xff0c;有以下三种方法&#xff1a; 权重分发&#xff1a;使用Nginx的upstream模块来设置不同服务器的权重。将一部分请求分发给新版本服务器&#xff0c;另一部分请求分发给旧版本服务器。这可以通过以下方式实现&#xff1a; http {upstream bac…...

记:apifox 返回 invalid header token 的问题排查思路

背景&#xff1a; 某接口服务使用 springboot 2.x 开发&#xff0c; RestController 、ReqeustBody 在本地(localhost)调用的时候正常、chrome (.cn域名访问)浏览器访问正常。 换成 apifox (.cn域名访问)、postman (.cn域名访问)调用异常返回&#xff1a;invalid header t…...

【00】神经网络之初始化参数

问题描述 #随机初始化权重 w12 np.random.randn(100, 784)/np.sqrt(784) 为什么除以28 回答 这里的代码是初始化一个深度学习模型中的权重矩阵w12。权重矩阵的形状是(100, 784)&#xff0c;这是一个从784个输入节点到100个隐藏节点的全连接层。 除以np.sqrt(784)是权重初始…...

代码随想录Day20 回溯算法 LeetCode77 组合问题

以下内容更详细解释来自于:代码随想录 (programmercarl.com) 1.回溯算法理论基础 回溯法也叫回溯搜索法,是搜索法的一种,我们之前在二叉树中也经常使用到回溯来解决问题,其实有递归就有回溯,有的时候回溯隐藏在递归之下,我们不容易发觉,今天我们来详细介绍一下什么是回溯,它能…...

免费获取天气预报的API接口(Json格式)

免费获取天气预报的API接口&#xff08;Json格式&#xff09; 1、接口地址2、城市代码 1、接口地址 当需要获取某个城市天气数据json时候&#xff0c;需要传入一个城市代码编码作为入参&#xff0c;地址&#xff1a; http://t.weather.itboy.net/api/weather/city/xxxxx &…...

安卓程序执行入口

Android程序执行入口 Android应用程序的执行入口是在一个特定的 Java 类中&#xff0c;通常是 MainActivity 或 SplashActivity&#xff0c;具体取决于应用的设计和结构。 Android应用程序的执行入口通常通过以下方式进行定义&#xff1a; 在 AndroidManifest.xml 文件中&am…...

消息队列(中间件)

通信协议&#xff1a; 为了实现客户端和服务器之间的通信来完成的逻辑&#xff0c;基于TCP实现的自定义应用层协议。通过这个协议,完成客户端–服务器远程方法调用。 序列化/反序列化&#xff1a; 通过网络传输对象把对象存储到硬盘上。 序列化&#xff1a;把对象转化为二进制的…...

Java|学习|异常

1.异常 1.1 异常 1.1.1 概述 异常&#xff1a;就是程序出现了不正常的情况。 Error&#xff1a;严重问题&#xff0c;不需要处理。 Exception&#xff1a;称为异常类&#xff0c;它表示程序本身可以处理的问题。 RuntimeException&#xff1a;在编译器不检查&#xff0c;出…...

nextjs项目修改启动端口号,以及开发启动后自动打开浏览器

next版本&#xff1a;13.5.4 一、修改端口 在package.json文件当中修改启动命令 "scripts": {"dev": "next dev -p 3100","build": "next build","start": "next start","lint": "ne…...

微服务架构 | 超时管理

INDEX LSA 级别与全年停机时间速查表LSA 级别实战TP 性能超时时间设计原则 LSA 级别与全年停机时间速查表 计算公式&#xff1a;60 * 60 * 24 * 365 * (1-LSA) 31,536,000‬ * (1-LSA) 系统级别LSA级别全年停机时间099.999%5分钟099.99%52分钟199.9%8.8小时299%3.65 天 LSA…...

Qt 样式表大全整理

【QT】史上最全最详细的QSS样式表用法及用例说明_qt样式表使用大全_半醒半醉日复日&#xff0c;花落花开年复年的博客-CSDN博客 QT样式表的使用_qt 设置按下 release hover 按钮样式表_create_right的博客-CSDN博客 QPushButton {border-image: url(:/Start_Stop.png); } QPu…...

k8s-10 cni 网络

k8s通过CNI接口接入其他网络插件来实现网络通讯。目前比较流行的插件有flannel,calico等。 CNI插件存放位置: # cat /etc/cni/net.d/10-flannel.conflist 插件使用的解决方案如下: 虚拟网桥&#xff0c;虚拟网卡&#xff0c;多个容器共用一个虚拟网卡进行通信。多路复用: Mac…...

IDEA中.gitignore配置不生效的解决方案

一、创建项目 二、执行以下Git命令 git rm -r --cached . git add . git commit -m "update .gitignore"...

SparkContext 与 SparkContext 之间的区别是什么

SparkContext 是 Spark 的入口点&#xff0c;它是所有 Spark 应用程序的主要接口&#xff0c;用于创建 RDD、累加器、广播变量等&#xff0c;并管理与 Spark 集群的连接。在一个 Spark 应用程序中只能有一个 SparkContext。 而 SparkSession 是 Spark 2.0 新增的 API&#xff0…...

lv8 嵌入式开发-网络编程开发 17 套接字属性设置

1 基本概念 设置套接字的选项对套接字进行控制除了设置选项外&#xff0c;还可以获取选项选项的概念相当于属性&#xff0c;所以套接字选项也可说是套接字属性有些选项&#xff08;属性&#xff09;只可获取&#xff0c;不可设置&#xff1b;有些选项既可设置也可获取 2 选项…...

企业网站建设的一般原则/seo优化网络公司

BeautifulSoup4 官方文档 是一个Python库&#xff0c;用于从HTML和XML文件中提取数据。它与您最喜欢的解析器一起使用&#xff0c;提供导航&#xff0c;搜索和修改解析树的惯用方法。它通常可以节省程序员数小时或数天的工作量。 1.安装BeautifulSoup4 pip install bs4 2.详细操…...

做网站建设需要做哪些工作/seo快速优化报价

Windows下的打印服务器是指一台安装了打印机、并将打印机共享给网络上的用户使用的计算机。目前市场有许多硬件的打印服务器产品&#xff0c;用户可以通过直接通过它来打印文件。以下测试操作在虚拟机环境下进行&#xff1a;一台服务器DCSrv01,DC&#xff0c;Windows Server 20…...

沐风+wordpress+主题/seo外链优化策略

夏天就是不好&#xff0c;穷的时候我连西北风都没得喝...

绍兴公司网站建设/软件外包企业排名

1.高斯消元概念 高斯消元法的本质是行变换&#xff0c;是化系数矩阵A为上三角矩阵。当矩阵A的秩小于未知元个数时&#xff0c;就存在基础解系。 2. 基本性质 2.1 是否要求系数矩阵A必须为方阵&#xff1f; 对于齐次线性方程组&#xff0c;只要考虑系数矩阵A。如果矩阵A是方阵…...

开发网站做图文水印逻辑/百度广告平台

计算机科学与技术专业就业方向本专业学生毕业后可在软件企业、国家机关以及各个大、中型企、事业单位的信息技术部门、教育部门等单位从事软件工程领域的技术开发、教学、科研及管理等工作。计算机科学与技术专业课程主要课程&#xff1a;电路原理、检验电子技术、数字逻辑、数…...

网站开发后台的问题/b2b平台是什么意思

--------首先来看看ip、uv和pv的定义---------- PV(访问量)&#xff1a;即Page View, 即页面浏览量或点击量&#xff0c;用户每次刷新即被计算一次。 UV(独立访客)&#xff1a;即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。…...