Linux 进程生命周期以及孤儿进程、僵尸进程和守护进程的区别

孤儿进程、僵尸进程和守护进程是 Linux 进程中的三种特殊进程,也是 Linux 常见的面试题,这里整理一下这三种进程的概念和区别。 1. Linux 进程生命周期Linux 进程的生命周期主要包括五个状态,分别是 创建(Create)、就绪(Ready)、运行(Running)、阻塞(Blocked) 和 终...

543. 二叉树的直径

题目给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1: 输入:root = [1,2,3,4,5]输出:3解释:3 ,取路径 [4,2,1,3...

编写并分析第一个 HarmonyOS APP

创建第一个 HarmonyOS 项目任何一门编程语言写出的第一个程序几乎都是 Hello World,这在编程界已经成为经典了。本文就从这个经典开始,了解 HarmonyOS 的应用开发。 选择项目类型在欢迎界面点击新建项目,选择 Java 的 Empty Ability 新建,填入包名等参数。这里的 Abili...

102. 二叉树的层序遍历

题目提示给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]] 示例 2:输入:root = [1]输出:[[1]] 示例 3:...

80. 删除排序数组中的重复项 II

题目给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明:为什么返回数值是整数,但输出的答案是数组呢? 请注意,输入数组是以「引用」方式...

26. 删除排序数组中的重复项

题目给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过: 更改数组 nums ,...

进程、线程和协程(goroutine)

进程、线程和协程(在 Go 语言中称为 goroutine)都是实现程序并发执行的基本单元,但它们在内存隔离、调度方式、切换成本和使用场景等方面有明显区别。这里做一个综合的总结和对比。 进程进程是程序运行时在操作系统中创建的一个独立实体,每个进程拥有独立的内存地址空间(包括独立的堆、栈、全局变量等),资源由操作系...

Golang 程序容器化以及 CGO 编译问题

Go 语言镜像精简为了精简镜像,一般会加载两个镜像,第一层是编译环境,来根据源码编译出可执行的二进制文件。然后拷贝可执行文件到 scratch 镜像中,作为最终的镜像: 12345678910111213FROM xxx:lastest AS builderARG SVCARG ARCHARG GOARMWORK...

Nginx 配置 Websocket 反向代理和解决跨域问题

记录一个用 nginx 配置 websocket 和跨域的问题。 配置 websocket 反向代理WebSocket 应用程序可以在客户端和服务端保持长连接,实现实时通信。并且 WebSocket 协议的握手与 HTTP 协议兼容,所以可以通过 HTTP 服务器代理 WebSocket 请求。 所以一开始的配置...

17.11. 单词距离

题目描述有个内含单词的超大文本文件,给定任意两个不同的单词,找出在这个文件中这两个单词的最短距离(相隔单词数)。如果寻找过程在这个文件中会重复多次,而每次寻找的单词不同,你能对此优化吗? 示例:12输入:words = ["I","am","a",&qu...