Android获取存储路径

Android Q(Android 10)之前,需要添加权限,如下:

Android Q(Android 10)开始 在App专属目录下本App可以随意操作,无需申请权限,不过App专属目录会在App卸载时跟随删除。看下面几个目录(通过Applicationcontext就可以访问)。

  • getFilesDir() :/data/user/0/本应用包名/files
  • getCacheDir():/data/user/0/本应用包名/cache
  • getExternalFilesDir(null):/storage/emulated/0/Android/data/本应用包名/files
  • getExternalCacheDir():/storage/emulated/0/Android/data/本应用包名/cache

getFilesDirgetCacheDir是在手机自带的一块存储区域(internal storage),通常比较小,SD卡取出也不会影响到,Appsqlite数据库和SharedPreferences都存储在这里。所以这里应该存放特别私密重要的东西。

getExternalFilesDirgetExternalCacheDir是在SD卡下(external storage),在sdcard/Android/data/包名/filessdcard/Android/data/包名/cache下,会跟随App卸载被删除。

filescache下的区别是,在手机设置-找到本应用-在存储中,点击清除缓存,cache下的文件会被删除,files下的文件不会。

谷歌推荐使用getExternalFilesDir。我们项目的下载是个本地功能,下载完成后是存本地数据库的,不是放网络上的,所以下载的音视频都放到了这下面,项目卸载时跟随App都删除了。getExternalFilesDir方法需要传入一个参数,传入null时得到就是sdcard/Android/data/包名/files,传入其他字符串比如"Picture"得到sdcard/Android/data/包名/files/Picture

参考代码如下:

参考链接

IntelliJ IDEA 提示 'try' can use automatic resource management Java7新特性

IntelliJ IDEA会提示

Java 7 build 105版本开始,Java 7的编译器和运行环境支持新的try-with-resources语句,称为ARM 块(Automatic Resource Management) ,自动资源管理。

新的语句支持包括流以及任何可关闭的资源。

使用try-with-resources语句来简化代码如下: 

在这个例子中,数据流会在try执行完毕后自动被关闭,前提是,这些可关闭的资源必须实现java.lang.AutoCloseable接口。

注:目前java.lang.AutoCloseable接口的子接口或实现类如下:

所有已经子接口: 

 所有已知实现类: 

对于Android用户来说,只有编译工程的 minSdkVersion大于 19(Android 4.4)的时候才能生效。

参考链接


使用HP Service Pack for ProLiant Gen8.1升级HP ProLiant MicroServer Gen8固件

家里使用了HP Gen8作为NAS服务器,对于iLO/BIOS来说,可以直接通过控制台升级。但是网卡/磁盘阵列的固件升级需要使用HP Service Pack for ProLiant(HP SSP)来升级。具体升级过程如下:

继续阅读使用HP Service Pack for ProLiant Gen8.1升级HP ProLiant MicroServer Gen8固件

国密算法

算法分类

国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。
SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。
SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。
SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

继续阅读国密算法

bash切换zsh后.bashrc文件失效的解决方案

问题

  • bash切换到zsh后,发现原先bash下的bashrc文件配置都失效了(显示zsh: command not found字样,当然如果手动通过source FileName加载是可以的),macOS Catalina(10.15.5) 已经默认切换到zsh,那么如何实现不用每次加载.bashrc文件就实现alias等便捷功能呢?

解决方案

  1. 使用系统级的/etc/zshrc/etc/zprofile
  2. 使用用户级的~/[X]bashrc~/[X]profile
  • 鉴于/etc/zshrc里有较多zsh特性配置,而且默认全局加载,因此这里通过编辑用户级的profile并加载原先的bashrc(即Bash Shell下用户文件)来实现我们的需求
详细步骤
  • 复制系统文件并修改权限

  • 追加自定义配置项,加载Bash Shell.bashrc文件

  • 测试

参考链接


Bash切换Zsh后,bashrc文件失效的解决方案

在macOS Catalina(10.15.5)上搭建Flutter开发环境

下载并安装目前最新的Android Studio 4.0,然后通过Android Studio 4.0安装Android SDK

下载目前最新的flutter

配置环境变量

上述环境变量,全部追加到 .bashrc 尾部

如果不增加到.bashrc 尾部,则在 Android Studio 4.0 创建项目的时候,会非常慢,主要是网络问题。

必要的环境配置,依赖下载

继续阅读在macOS Catalina(10.15.5)上搭建Flutter开发环境

macOS Catalina(10.15.5)用蓝牙PAN共享Wi-Fi上网

今天有需要共享上网进行抓包分析报文的情况。

研究了一下MacBook Pro(macOS Catalina(10.15.5))如何通过蓝牙PAN(Bluetooth PAN)来共享笔记本连接的Wi-Fi网络出来,让手机通过共享出来的蓝牙热点来上网的方法。

由于蓝牙PAN(Bluetooth PAN)本质属于局域网转发,起到一个简单网关的作用。因此我们需要设置蓝牙设备的IP地址跟需要共享的Wi-Fi网卡相同。

具体操作如下:

继续阅读macOS Catalina(10.15.5)用蓝牙PAN共享Wi-Fi上网

利用Ubuntu 18.04恢复群晖(Synology)NAS Raid1(DSM 6.x)硬盘数据

如果 Synology NAS 出现故障,则可以使用计算机和 Ubuntu live CD 轻松恢复其硬盘上存储的数据。确保 Synology NAS 硬盘上运行的文件系统是 EXT4 或 Btrfs,然后按照以下步骤恢复数据。此处我们以 Ubuntu 18.04 版本为例。

继续阅读利用Ubuntu 18.04恢复群晖(Synology)NAS Raid1(DSM 6.x)硬盘数据

在Android Studio 4.X下查看窗口布局层次Hierarchy Viewer/Layout Inspector

在Android开发的时候,又是需要检查窗口布局层次,观察布局是否显示正确。

早期版本是使用Hierarchy Viewer ,最新的Android Studio 4.X下,我们使用 Layout Inspector,具体操作参考下图:

继续阅读在Android Studio 4.X下查看窗口布局层次Hierarchy Viewer/Layout Inspector