主页

Linux 知识之eventfd

eventfd简介   eventfd顾名思义它就是一个用于事件通知的fd.多用于用户态进程中多线程之间相互通知,也可用于内核事件通知 应用场景   如上图所示,在相同进程中,乙线程无事件可处理时会进行休眠等待.一旦来事件需要处理,甲线程会通过eventfd通知乙线程唤醒并处理事件. 函数原型 SYNOPSIS #include <sys/eventfd.h> int eventfd(unsigned int initval, int flags); DESCRIPTION FLAG 说明 EFD_CLOEXEC 该标志位设置后,当执行exec族函数时,会自动关闭e...

阅读更多

使用 husky 和 lint-staged 检查 Node.js 的代码一致性

在软件开发过程中,代码风格检查(Code Linting)是保障代码规范和一致性的有效手段。过去,Lint 的工作一般在 Code Review 或者 CI 的时候进行,但这样会导致问题的反馈链,浪费不必要的时间。因此,我们需要利用 Git 的 Pre Commit 钩子,将 Lint 过程放到开发者提交代码之前。 本文将会重点介绍如何使用 husky 和 lint-staged 来检查 Node.js 项目的代码一致性。其中 husky 用于设置本地的 Git 钩子,lint-staged 会让钩子只检查本次提交所修改的文件。 安装 husky 和 lint-staged 首先,我们使用下面的命令把 husky 和 lint-staged 安装到 Node.js 项目的 dev...

阅读更多

华华的北京冬奥会「Beijing 2022」之旅

从 1 月 5 日进入冬奥闭环开始,就开始了我的 2022 年北京冬奥会之旅,直到现在,已经有 50 多天了。 初入闭环 为了应对全球新冠疫情,北京冬奥组委设立了一个叫做闭环管理的概念,来物理上隔离社会人员和涉奥人员,保证两个之间不会出现交叉传染。1 月 5 日,我们从单位出发,进入闭环酒店「新云南皇冠假日酒店」,开始准备冬奥报道前的准备工作。 张家口的一周 按照计划,在 1月 17 日我同另外几位同事乘坐闭环车辆前往张家口进行技术准备和相关测试工作。 相关工作完成后,我首次乘坐国铁冬奥专列从崇礼的太子城站返回北京清河。还刚刚好的赶上了北京的雪。 主媒体中心的二十四小时 从张家口返回北京后,我们换到了另外一家闭环酒店「塔里木石油酒店」。这是一家以新疆菜为长的三星级酒店,没...

阅读更多

Linux 知识之IO操作

简介   IO顾名思义就是input/output.俗话说linux一切皆文件,对文件的操作不外乎就读和写.这里我们来介绍read和write函数. 函数原型 read SYNOPSIS #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); RETURN VALUE   On success, the number of bytes read is returned(zero indicates end of file)   On error, -1 is returned, and errno is set appropriately write SYNOPSIS #includ...

阅读更多

Ubuntu编译Android源码(AOSP)

前言: 一直想要编译一下Android 源码,之前去google 看,下载要下载repo。 当时很懵逼,repo 是个什么?(repo 是一个python 脚本,因为Android 源码git 仓库太多,帮助管理git 仓库的,你不需要知道里面什么实现。会用就行。) 然后往下看,看到网上说,编译Android AOSP 只能用Ubuntu,当时自己的心也哇哇凉啊。 自己只有一个工作的电脑,自己的电脑配置太低。 看网上说,还要200G 的空间。(有一个拦路虎) 之前自己给自己的windos 安装过双系统,但是好像一直启动不了。现在想想,应该是因为当时没有设置引导盘的顺序吧。现在我用一个usb 连接了一个1T的硬盘,里面安装了Ubentu . 如果我插了这个硬盘,启动的就是ubunt...

阅读更多

Android 源码分析之Handler

简介   Handler是线程间通讯的载体,它通过异步操作将Message事务入队到目标线程的消息队列中,最终目标线程通过出队列的方式处理传递过来的Message事务,从而实现线程间通讯   这里我们将生产Message事务的线程称为生产者线程,处理Message事务的线程称为消费者线程 源码流程分析 从类图关系中,我们可以看到 1.Looper构建了消息队列MessageQueue 2.Message的成员target关联Handler 3.Handler的成员mQueue关联MessageQueue,成员mLooper关联Looper 4.MessageQueue的成员mMessages关联Message 消费者线程   首先我们创建消费者线程并启动消息循环 这里我们...

阅读更多

仿 Stack Overflow 的问答网站

随着社交化问答网站 Quora 的流行,现在正在经历着一场问答网站的热潮。Stack Overflow 一个国外著名的程序员问答网站,它使用独特的投票系统、积分系统以及勋章系统,展现出一个新型的专业类问答网站。 本文讲述了如何使用 PHP 和 MySQL开发一个模仿 Stack Overflow 的程序员问答网站。 总体设计 网站采用 MVC(模型-视图-控制器)的架构方式,使用了 WAMP(Windows、Apache、MySQL 和 PHP)技术栈进行开发。 数据库设计 问题和回答分别存储于 questions 和 answers 两个表中,并分别设置用于记录用户投票记录的 questions_votes 和 answers_votes。 编码实现 本网站主要...

阅读更多

2021年总结和以后的计划

2021 我感受过快乐,也承受过痛苦,跌倒过,爬起来,一直是这样…… jekyll 的目录结构大概是这样的: ├── assets # 存放用于线上环境的静态资源,比如我们想放在博客上的图片之类 ├── _config.yml # 配置文件,我们通过修改这里的参数改造博客 ├── _data | └── members.yml ├── _drafts # 未发布的文章。这些文件的格式中都没有title.MARKUP数据。 | ├── begin-with-the-crazy-ideas.md | └── on-simplicity-in-technology.md └── index.html # 模板首页 ├── _includes | ├── footer.ht...

阅读更多