0%

1. 问题

经常需要在家里跟公司登录同一个网站,每次在公司登录后,家里浏览器登录状态就会被踢下来,很麻烦。希望找到一种办法可以共享登录状态,不用每次都要重新登录。

阅读全文 »

1. 前言

由于ChatGPT 不对国内开放,如何稳定获取ChatGPT服务已经成为一个令人头疼的问题。好在 github 上已经有人帮我们扫除了障碍,通过简单几句命令,便可把 ChatGPT 服务部署到本地。为了能在 PC和移动端上都能使用,于是我决定把ChatGPT服务部署到云服务器上。

阅读全文 »


0x00 目标

有个好朋友买了该课程,希望将内容下载下来随时听,问我有没有办法,经过几天探索,终于将该课程的内容下载到了本地。

阅读全文 »

前言

坎坷的2020终于要过去了,不管是好是坏,都值得停下来反思一下这一年的得与失。

阅读全文 »

前言

在上篇文章中我们大致介绍了关于Linux启动的过程,基本上都会经历几个流程:

  1. 加电自检
  2. 启动bootloader
  3. bootloader启动kernel

kernel启动完之后,会执行第一个程序init,之后init进程会继续fork出许多系统核心进程来提供相应的服务。其中跟Android关系最密切的zygote进程也是由init进程直接fork出来,如下图所示:

image

之后再由zygote进程孵化出Android核心进程systemserver,Android很多核心服务如ActivityManagerService、WindowManagerService都是直接以线程的方式驻留在systemserver进程为app(客户端)提供服务,如下图所示:
image

从上面两张图中我们可以看到,Linux就是Android系统的基石,没有Linux提供的基础服务(内存管理、进程调度、文件系统等),Android就无从谈起。从这个意义上来说,Android运行在Linux的一个应用程序而已。当然,Android只是基于Linux,而不是Linux,Android基于Linux,创建了一套完全与Linux应用不一样的开发”语言”,让开发者可以使用Java就能做出有趣的应用,间接地降低了开发的门槛(C++因为内存泄露和野指针的问题饱受诟病)。这套”语言”里包含了很多概念比如Activity、Service、Broadcast、ContentProvider、Window、Surface、View等,后续我们会一一说明。今天我们先从代码角度来看Android的启动过程。本文源码基于Android 2.3.7_r1。

阅读全文 »

前言

做为一个Android开发,Context.getSystemService是非常常用的API,但你有了解过这个API是如何实现的吗?今天,让我们一起从源码角度分析一下这个API的具体实现吧。本文源码基于Android 2.3.7_r1。

阅读全文 »

前言

AIDL是Android提供的方便应用层进行进程间通信的描述语言,同时也提供了AIDL语言转成Java语言的工具,方便客户端开发,下面我们通过一个简单的例子来说明AIDL是怎么使用的,以及这样设计背后的意义。

阅读全文 »

前言

博客已经停更将近半年时间,除了4月份开始准备面试到6月份正式离职没有写新文章之外,来到鹅厂就没有再更新,这点实在是惭愧。工作繁忙是一个原因,另外一个更主要的原因是自己变懒了。在这个技术更新日新月异的年代,懒惰是一件很可怕的事情。35岁是个坎,太过安逸,没有危机意识到最终可能就会陷入中年危机。毕竟这个行业每年都有新鲜血液涌入,不进取则被淘汰。

阅读全文 »