Linux 系统中调用 exit() 和 _exit() 结束进程的区别
根据此图,进程终止方式有三种(不涉及多线程情况下),分别为: 进程调用_exit或_Exit(两者等价),进程立即终止,内核负责各项清理工作,如移除进程表项(自然也包括“关闭”进程的文件描述符),发送SIGCHILD信号给父进程等。 进程调用exit函数,exit逐一调用进程事先通过atexit或o…
Linux文件链接
为了方便用户访问文件,Linux提供了一种称为连接(link)的机制,可以将一个文件或目录与另一个文件或目录建立关联,从而实现多个路径指向同一个文件或目录的效果。 概述 Linux是一个多用户多任务的操作系统,它提供了一种灵活的文件系统,可以在不同的分区、设备和网络上存储和管理文件。 为了方便用户访…
PHP8.2新特性
trait 常量 在PHP 8.2之前,不允许将常量添加到trait中。这是一种语言差异,因为trait可以访问使用它们的类的常量。 但是你不能严格地定义一个常量存在于一个类中,次问题已经在PHP 8.2修复。 <?php trait testTrait { private const NAM…
git rebase
rebase在git中是一个非常有魅力的命令,使用得当会极大提高自己的工作效率;相反,如果乱用,会给团队中其他人带来麻烦。它的作用简要概括为:可以对某一段线性提交历史进行编辑、删除、复制、粘贴;因此,合理使用rebase命令可以使我们的提交历史干净、简洁! 写在前面:如果你的分支不只有你在进行开发,…
git简洁提交
修改上个提交 git commit --amend 该命令的帮助文档描述如下: --amend 修改之前的提交 也就是说,它可以帮助我们修改上次提交的内容 可以修改我们提交的消息和提交的文件,最后替换最后的提交ID 提交时我们可能会遗漏文件。当我们再次提交时,我们可能会有多个无用的提交 ID。如果大…
Nginx配置解析
#==========================nginx全局配置==========================# # 指定 nginx 进程运行的用户,这里是 nginx,默认为nobody。 user nginx; # 指定 nginx 使用多少个 worker 进程处理请求,这里使…
函数sync fsync 和 fdatasync 的区别
缓冲 传统的UNIX实现的内核中都设置有缓冲区或者页面高速缓存,大多数磁盘IO都是通过缓冲写的。 当你想将数据write进文件时,内核通常会将该数据复制到其中一个缓冲区中,如果该缓冲没被写满的话,内核就不会把它放入到输出队列中。 当这个缓冲区被写满或者内核想重用这个缓冲区时,才会将其排到输出队列中。…
苹果内购JWS回调解析
JWS简介 JWS 也就是 Json Web Signature,是构造 JWT 的基础结构(JWT 其实涵盖了 JWS 和 JWE 两类,其中 JWT 的载荷还可以是嵌套的 JWT),包括三部分 JOSE Header、JWS Payload、JWS Signature。 这里的 Signatur…
惊群问题
惊群效应是什么 惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只能有一个进程(线程)获得这个时间的“控制权”,对该事件进行处理,而其他进程(线程)获取“控制权”失败…
PHP8.1新特性
枚举(Enumerations) PHP 8.1使用enum枚举类型来取代一组常量,并获得开箱即用的验证。 <?php enum UserRole: string { case ADMIN = "1"; case GUEST = "2"; case WR…