Hello, LingC!
Android设备安装Debian成为BT下载服务器
文章介绍了如何在Android设备上通过Termux安装Debian,并配置VNC以便远程访问。作者提到,由于Android 12引入的Phantom Process Killer机制,Termux容易被杀死,因此提供了关闭该限制的ADB命令。接着,文章详细说明了如何安装XFCE桌面环境和配置VNC服务器,包括使用TightVNC的步骤。最后,作者提到可以进一步安装gogs作为本地Git服务器。
[双系统] Windows 更新摧毁了我的Linux系统
在 Windows 更新后,用户的 Linux 系统因等待 90 秒而无法启动,并且出现依赖失败。调查发现,Windows 调换了 Linux 分区和恢复分区的顺序,从而导致了问题。用户通过修复 Linux、更新 fstab、重新安装 Grub 和使用 efibootmgr 更改启动顺序解决了问题。
Golang embed 使用问题
Golang 使用 embed 包在编译时将外部文件包含到二进制程序中。使用 embed 指令可以将 html、css、js 等静态文件添加到二进制文件中,而无需额外的资源文件。嵌入文件可以使用字符串、[]字节和 FS 来引用。但也有一些限制,如文件层次结构问题和复杂路径问题。例如,如果嵌入文件和被嵌入文件不在同一层次,嵌入模式将无法成功解析。另一个问题是处理复杂路径,即静态文件夹被放置在嵌入文件的子文件夹中。解决办法是使用 io/fs 软件包中的 Sub 方法来处理这些复杂路径。
Hexo博客自动备份插件 云盘备份支持
本文讨论了博客数据备份方案,强调321原则:保留3个备份副本,使用2种不同储存介质,1个备份远离数据源。最初考虑使用GitHub Action进行备份,但发现其局限性。为此,开发了Hexo插件“hexo-auto-backup”,可在执行hexo deploy时自动备份重要文件到本地或云盘,支持多种云服务和协议。插件安装简单,通过npm安装。未来计划改进备份过期设置和多系统支持。详细信息可见插件的GitHub仓库。
通过汇编分析栈、函数调用 esp&ebp
栈是一种遵循后进先出(LIFO)规则的数据结构,通常用于内存管理。重要寄存器包括栈指针(SP)和基指针(BP)。在函数调用中,使用push将参数压入栈中,call指令保存返回地址。ESP寄存器指向栈顶,函数执行后需平衡栈。C语言函数调用中,参数通过EBP寻址,编译器可能使用mov而非push,使得ESP不指向栈顶,简化栈平衡的处理。
Git push 出现 permisson denied error 403
在尝试使用 git push -u origin main 时,出现了权限错误,提示旧用户被拒绝访问。为了解决这个问题,作者尝试通过 git commit --amend --reset-author 重置提交作者,但问题依旧。最终在 Stack Overflow 找到解决方案:删除旧的凭证,成功解决了问题,节省了一个小时的时间。
坑:Litepal save方法返回true却没有保存
在开发 Madoka 日记时,做到导出导入的功能时,我想偷个懒导出直接用 Gson 将 Java 对象转换为 json 然后放在 txt 中,导入的时候再将 json 转为 javaBean 就行啦。 而数据库我用的是 Litepal 直接搞,使用这个库的好处就是速度快,方便,适合新手。 但其实 sqlite 的语法和一些其他的语句并不难,所以用这个库就是为了方便… 使用 Litepal 储存数据时,需要调用 save() 方法。 这里我就遇到了一个问题,明明 save() 方法返回的是 true ,但数据库里没有需要保存的数据啊? Gson gson = new Gson(); Diary diary = gson.fromJson(json, Diary.class); return diary.save(); 这是调用 Gson 将 json 转换为 javabean 对象。 明明 Diary 的内容全是正确的,我开始询问度娘。 结果没找到跟我的问题直接相关的文章,结果我看到了有个人在吐槽啥 setting getting,我就想到了会不会是因为没有调用 Diary 的构造方法? Diary 作为一个 Litepal 的,它是继承自 LitePalSupport 的,会不会是因为没有调用 LitePalSupport 的构造方法呢? 我将导入代码改了一下: Gson gson = new Gson(); Diary diary = gson....
Android Shizuku源码分析 第二篇
本文深入分析了 Shizuku 的启动过程,特别是 Starter 类的 main 方法是如何被调用的。文章首先回顾了 Shizuku 的基本概念,并介绍了通过 adb 命令激活 ShizukuService 的过程,重点分析了 start.sh 脚本的执行。当用户通过 ShizukuManager 启动应用时,start.sh 脚本被调用,该脚本负责设置环境并执行 libshizuku.so 文件。文章详细描述了 ShizukuManager 在启动时如何写入 start.sh 文件及其相关的 dex 文件路径。接着,文章探讨了 libshizuku.so 中的 main 方法,说明了如何通过 app_process 启动 Java 类 moe.shizuku.server.Starter。在 Starter 类的 main 方法中,创建了 ShizukuService 实例,从而完成了 ShizukuService 的启动。最后,作者总结了整个过程,强调了用户通过简单的 adb 命令如何触发一系列复杂的操作,最终实现 Shizuku 的功能。