操作系统笔记-进/线程模型

模型是指对于某个实际问题或客观事物、规律进行抽象后的一种形式化表达方式。- MBA 智库百科 - 模型 概念梳理 进程 进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。 一个进程是某种类型活动的一个活动,它有程序、输入、输出以及状态。进程是对正在运行程序的一个抽象。单个处理器可以被若干进程共享,它使用某种调度算法决定何时停止一个进程的工作,并转而为另一个进程提供服务。一个程序可对应多个进程。 系统资源以进程为单位分配,如内存、文件、每个进程拥有独立的地址空间。

Go / 操作系统 / 进/线程

React Hooks 那些事儿

翻了波之前写的文章还有笔记,发现关于前端的文章并不多(好歹也划水做过点前端开发)。巧了,最近没什么好话题可写,做下 React Hooks 学习笔记吧。 Effect Hook 不得不说 Hook 的出现降低了我们在 React 中处理副作用(side effect)的心智负担,通过 useEffect 就可以很好的完成之前需要使用几个生命周期函数配合才能完成的事。 Effect Hook 死循环请求问题 由于 Effect Hook 不熟「官方文档没读透」,最近使用 useEffect 出现了异步请求发送了无限次的问题,翻🚗了。我有个组件大概是这么写的:

React

使用docker-compose编排前后端分离应用

几个月过去了,是时候把当初的 🚩 干掉了。 顺便提高下 docker 的熟练度,得闲看下原理🚩(假期看过,没总结…)。 重装了波系统(Windows 2004 版本),这个版本下,Docker Desktop 是以 WSL2 为 backend 的,不用 Hyper -V 了,舒服了很多。 细品了下(又摸鱼搞 DevOps),跑这个前后端分离项目需要到的容器还挺多,4 个左右(后端 REST 服务、数据库服务、前端服务),前端服务上了两个容器『貌似没必要』,一个用来过渡,一个跑挂着 SPA 的 Nginx。 这次祭出了 Docker Compose,毕竟容器有点“小多”,单单用命令费劲。

docker

给 GitHub commit 加个小绿标

最近一波重装系统啥都没了,最常用的 Git 配置肯定得安排回来的。记得之前给 git 的 commit 加了个签名,回想下为什么要给 commit 做下签名?因为它能让 GitHub 的 commit 历史更帅?看下加签名之前是怎么样的: 对commit进行签名前

Git

将 Web 应用丢给守护进程

最近老是要把 Web App/Service 部署在个人的服务器上进行测试,发现自己不怎么熟悉「前提:不上 docker ,逃~」,特写此文章来纪念下🤔👀(之前部署的 Web App/Service 都是丢给 Heroku、Netlify、GitHub 这样的 PaaS 平台运行,写个配置文件「action、yaml、toml」就完事了。自己整的玩意儿丢在自己服务器上跑的并不算多,今天费点劲,了解点基础设施。根据冰山模型,了解下 FaaS 能更好的了解 PaaS)。

Linux

(译)通过 Git 和 Angular 了解语义化提交信息

受传统提交规范和 Angular 约定的启发,让我们来解释语义化提交术语,并演示提交信息的实际示例。 许多项目决定以某种约定方式来标准化它们的提交信息。这种做法并不是新出现的,但在最近几年中越来越多地得到了应用。而且很可能您已经在某些项目中遇到过这样的提交消息。

Git

了解一波经典的 I/O 模型

最近读了波网络 I/O 相关的文章,做下总结、摘录。(未完) 经典 I/O 模型 red checked, 阻塞式 I/O(blocking I/O) red checked, 非阻塞式 I/O(non-blocking I/O) red, I/O 多路复用(I/O multiplexing) cyan , 信号驱动式 I/O(signal driven I/O) cyan , 异步 I/O(asynchronous I/O) 阻塞式 I/O 模型 对于阻塞式 I/O,以套接字(Socket)的输入操作为例。 1、首先应用进程发起 I/O 系统调用后,应用进程阻塞,转到内核空间处理。 2、之后,内核开始等待数据,等待数据到达之后,将内核中的数据拷贝到用户的缓冲区中,整个 I/O 处理完毕后返回进程。最后应用进程解除阻塞状态,处理数据。

操作系统 / 计算机网络

『笔记』可扩展架构设计之消息队列

前言 众所周知,开发低耦合系统是软件开发的终极目标之一。低耦合的系统更加容易扩展,低耦合的模块更加容易复用,更易于维护和管理。我们知道,消息队列的主要功能就是收发消息,但是它的作用不仅仅只是解决应用之间的通信问题这么简单。消息队列作为常用的中间件,经常被用来对系统解耦,对模块解耦。增强系统的可扩展性和模块的可复用性。 除了对用于对系统、模块解耦,消息队列还有以下几种通途: 服务异步处理 流量控制 作为发布 / 订阅系统实现一个微服务级系统间的观察者模式 连接流计算任务和数据 用于将消息广播给大量接收者 事物的存在总会有对立的一面,引入消息队列可能会带来延迟问题、产生数据不一致的问题、增加系统复杂度的问题等等。

Architecture

单例模式如何保证实例的唯一性

前言 最近面试发现自己不懂的东西还是很多的,写一波文章来巩固和挖掘欠缺的知识点以及加深对已有知识点原理的理解。

设计模式

使用 mypy 做 type check

前言 完残!😂,最近看之前写的 Python 代码老得琢磨这比变量的类型是啥(Python 无类型系统xxx),不愧是我写的! 看段之前写的实现迭代器模式的代码:

Python
15678917