Android 学习之 Activity 生命周期
当用户浏览、退出和返回到您的应用时,应用中的 Activity 实例会在其生命周期的不同状态间转换。Activity 类会提供许多回调,这些回调会让 Activity 知晓某个状态已经更改:系统正在创建、停止或恢复某个 Activity,或者正在销毁该 Activity 所在的进程。
Docker 中 gitlab 登录密码忘了怎么办?
一直自动登录导致忘记 gitlab 的密码,这篇文章我们来通过命令行修改 gitlab 的密码。
C 语言重拾【八】结构和其他数据形式
在 C 语言中,结构体是一种非常重要的数据类型。它可以将不同的数据类型组合成一个整体,方便程序员进行操作。比如,我们可以定义一个结构体来表示一个人的信息,包括姓名、年龄、性别等等。使用结构体可以使得程序更加清晰易懂,提高代码的可读性和可维护性。
macOS 安装 manpages-zh
在 macOS 上,man 命令用于查看系统中安装的程序的帮助文档。然而,默认情况下,这些帮助文档都是英文的,对于不熟悉英文的用户来说可能会有些困难。幸运的是,我们可以安装 manpages-zh 来获取中文帮助文档。
GitHub 使用命令行同步 fork 仓库
在 GitHub 上,我们可以使用 Fork 操作将其他用户的仓库复制到自己的账户下。但如果原始仓库更新了,我们可能需要将其再次 fork 到自己的账户下,以保持代码与原始仓库同步。下面将介绍如何使用 Git 命令行进行 GitHub 仓库再次 fork 的操作。
如何使用 Git 进行高效的版本控制
Git 是一款分布式版本控制系统,于 2005 年由 Linus Torvalds 创造并开源发布。Git 的设计初衷是为了更好地管理 Linux 内核代码,它的分布式特性使得多人协作开发和大型项目的版本控制变得更加高效和可靠。现在,Git 已经成为了开源社区和软件开发领域中最受欢迎的版本控制工具之一。
C 语言重拾【七】存储类别、链接和内存管理
C 语言能让程序员恰到好处的控制程序,这是它的优势之一。程序员通过 C 的内存管理系统指定变量的作用域和生命周期,实现对程序的控制。合理使用内存存储数据是设计程序的一个要点。
存储类别
C 提供了多种不同的模型或存储类别在内存中存储数据。要理解这些存储类别,我们先来了解一些概念和术语。
程序中的大部分数据都是存储在内存中。从硬件方面来看,被存储的每个值都占用一定的物理内存,C 语言把这样的一块内存称为 对象(objc)。这里所指的对象和我们面向对象编程所说的对象是不同的,要注意**(面向对象中的对象指的是类对象)**。这里所说的对象实际指的是一块可以存储数据的内存。对象可以存储一个或多个值。一个对象可能并未存储实际的值,但是它在存储适当的值时一定具有相应的大小 。
iOS 使用 fastlane 打包
在一款 App 从开发到上架都会经历 编译 -> 打包 -> 签名 -> 推送 App Store Connect -> 提审 -> 上架 的过程。其中编译打包这种重复且繁琐的工作公司内都会有一个 CI 平台去负责,我们今天就来了解一下 CI 的编译打包流程是怎样的。
编译 Swift 5.8 源码
编译准备
首先保证硬盘空间足够,本人一套流程下来文件夹有将近 60GB 大小。接下来是相关环境的安装,因为我的环境都是最新的,所以基本安装的都是最新版的包,如果你的环境不是新版的话,请找对应版本包安装。本人环境说明:
| 名称 | 版本 |
|---|---|
| 芯片 | Apple M2 Pro |
| macOS | Ventura 13.3 |
| Python | 3.11.2 |
| CMake | 3.26.3 |
| ninja | 1.11.1 |
| sccache | 0.4.1 |
| Xcode | 14.3 |
我们可以通过 homebrew 统一安装环境:
1 | $ brew install cmake ninja sccache |
此文只介绍 Xcode 调试环境,如果想用 VS Code 调试的话,需要用 Ninja 编译,Ninja 的编译请移步官方文档。