Android 手机备份攻略

说起 Android 手机的备份,最先闯入眼帘的可能是 XX 搬机助手,某某手机搬家等一键式迁移手机数据的 APP,这些 APP 可以迁移的数据包括,联系人、通话记录、短信、应用(不包括应用数据)、照片视频、文件夹等,此外还包括一些系统设置例如 WIFI 密码1

黑山小妖

今天来说说女儿睡觉的事。女儿十三个多月了,自从五六个月的时候给她一个人睡摇篮,她就能从晚上八九点睡到第二天早上六七点。就这样过了几个月,我在外上班,平时她妈妈带她睡。忽然有段时间,妻子说不舍得她一个人睡,又开始把她抱到床上睡。就这样又过了一段时间。

护眼显示器选购指南

常年对着破旧笔记本的粗糙小屏幕,实在是对不起自己的眼睛。这不,趁着今年 618 打算买个显示器。预算 1500,分辨率 2K 起,要求具备莱茵低蓝光认证。

从零开始构建家庭共享存储

一切都要从前几天给手机刷新 ROM,导致数据丢失说起。

前些日子,我的 RedmiK40S MIUI13 突然给我自动更新至 MIUI14,这违背了我的意愿。但这还不至于让我动刷机的年头,毕竟年事已高,不再那么想折腾手机。可这次更新,不单单是 MIUI 版本的提升,更是 Android 12 到 13 的版本升级。这直接导致了我的钛备份闪退了,并且使用钛备份还原在 a12 上备份的应用,如果勾选还原应用数据,则必然导致对应应用闪退。应用备份出了问题我是无法接受的。于是,开始上 XDA 找 ROM,随便下了几个,准备动手。

Swap 扩容

先前安装系统的时候,swap 分区给小了(机器内存的一半)。我的笔记本内存 8G,swap 给了 4G,当系统已用内存超过 4G,会导致无法休眠。如果 swap 给的和本机内存一样大,那么就不会存在 swap 放不下当前工作镜像的问题。但重新分区追加 swap 显然不现实,所以只能让两块 swap 拼凑一下,达到总体有 8G 可用 swap 的效果。

喜女

壬寅年九月,喜得一女,因作此篇。

九月孕明珠,

玲珑宛天成。

愿织锦绣梦,

携手度余生。

C++ 中的默认参数简介

Minimal example

1
2
3
4
5
6
7
int foo(int x, int y=1) { return x + y; }

int main()
{
    cout << foo(5);  // call foo(5, 1)
    return 0;
}

分离编译带来的隐患

如果函数声明和定义分离,此时就有一个 pitfall。由于默认参数可以定义在函数声明(declaration)中,也可以定义在函数定义(definition)中。

红米 K40S 初体验

8 月 8 日入手了一台红米 K40S(设备代号 munch)。蹲了很久了,终于等到 88 购物节一波降价,在某东 1999 拿下顶配版 K40S.

C++ 中的 static 关键字

Static members

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class A {
public:
    // non-static member (i.e., `data` is not visible in `fun1`
    static fun1();
    fun2();
private:
    int data;
    static int sata;
};

A a;
a.fun1();   // valid, equivalent to the following
A::fun1();
  1. 静态成员不能访问非静态成员(因为静态成员独立与类的实例(即对象)而存在,为了在没有对象被创建的情况下,静态成员还是可以使用,所以不能访问非静态成员。)
  2. 同理,类的任何对象不包含静态数据成员
  3. 静态成员不与对象,不与this指针发生交互,作为结果,静态成员函数不能声明为const
  4. 可以通过类的对象调用静态成员函数,但此调用跟对象的状态并无关系,也就是说换个对象来调用是等价的,都等价于使用类名加域作用符来调用
  5. 静态成员一般定义在类的外部,因为每个对象都共享静态成员,避免多次定义
  6. View static member as a normal function that has nothing to do with the class, except you must use :: to access static members