jxzssy

对进程、线程和协程的理解以及它们的区别

一、进程 先来了解一下操作系统的进程: 操作系统对正在运行程序的抽象,这个就是进程(process)。 比如运行一个 web 浏览器,一个 text 文本,都是运行的一个一个进程。 有的人说:进程是程序运行资源的集合。进程是系统资源分配的最小单位等等。 从静态的角度来说,进程确实是运行程序的各种资源集合。 如果你进一步思考,进程里的各种资源都有哪些呢?如下图所示: (图1:进程资源) 内存管理相关 文件系统 调度相关 信号处理 内核栈 进程各种状态 进程运行时统计信息 进程标识 等等。 可以看出,进程中的资源是相当多的。 从 Linux 操作系统对进程的定义也可以看出。我以前对进程结构 tas…

服务治理:常用限流算法总结

服务治理:常用限流算法总结 一、为什么会有限流 限流,看字面意思,限制流动。 为什么要限制流动? 比如高速公路出现了事故,交警会对高速路车辆的进入进行指挥和限制。 发生了一些意外情况,才可能要限制流动。等恢复正常情况后,就解除限制。不可能无缘无故的限制流动,毕竟限制会影响正常系统运行。 在举一个例子: 足球馆看足球比赛,足球馆的场地大小是固定的,座位数是固定的,能容纳看球人数总量是有限的。如果超过足球馆容量最大承载,会导致场内拥挤,这样会发生2个问题:一个是导致大家行动不便,一个可能会发生意想不到的事故。 那怎么办?球票。 一个足球场出售的球票是有限制的,一共卖多少张票是有一定数...

服务治理:几种开源限流算法库/应用软件介绍和使用

一、Go time/rate 限流器 1.1 简介 Go 在 x 标准库,即 golang.org/x/time/rate 里自带了一个限流器,这个限流器是基于令牌桶算法(token bucket)实现的。 在上一篇文章讲了几种限流算法,里面就有令牌桶算法,具体可以看上篇文章介绍。 1.2 rate/time 限流构造器 这个限流构造器就是生成 token,供后面使用。 Limiter struct 结构: 限流器构造方法:func NewLimiter(r Limit, b int) *Limiter: r :产...

碎碎念软件研发01:敏捷简史和几种软件开发模型

一、敏捷开发简史 敏捷简史 1975-2010: 1957年,增量软件开发方法出现。 1975年,Fred Brooks 提出“No Silver Bullet”,出版《人月神话》,相关概念和内容已与敏捷方法极其类似。 1986年,竹内弘高和 野中郁次郎在New New Product Development Game文章首次提到将Scrum应用与产品开发。 1993年,Jeff Sutherland在Easel公司首次将Scrum方法用于软件开发。 1995年,在OOPSLA‘95 会议上,Sutherland和Schwaber共同发表论文介绍Scrum方法。 1996年,Martin Fo…

碎碎念软件研发02:敏捷之Scrum

一、什么是 Scrum 1.1 Scrum 定义 Scrum 是敏捷开发方法之一,它使用比较广泛。 敏捷的其它开发方法还有 XP(极限编程)、FDD(特性驱动开发)、Crystal(水晶方法)、TDD(测试驱动开发)、DSDM(动态系统开发)等等敏捷方法。 Scrum-Guide 中定义的 Scrum: Scrum 是一个开发和维护产品的框架,它通过提供针对复杂问题的自适应解决方案来帮助人们、团队和组织创造价值。 Scrum 需要 Scrum Mater 营造一个环境: 一名 Product Owner 将解决复杂问题所需要的工作整理成一份 Product Backlog。 Scrum Tea…

巧用 background-clip 实现超强的文字动效

最近,有同学询问,如何使用 CSS 实现如下效果: 看起来是个很有意思的动效。 仔细思考一下,要想实现这类效果,其实用到的核心属性只有一个 — background-clip: text。 有意思的 background-clip: text background-clip: text 之前也提到多很多次。其核心就在于以区块内的文字作为裁剪区域向外裁剪,文字的背景即为区块的背景,文字之外的区域都将被裁剪掉。 简单而言,就是运用了 background-clip: text 的元素,其背景内容只保留文字所在区域部分,配合透明文字 color: transparent,就能够利用文字透…

不借助 Javascript,利用 SVG 快速构建马赛克效果

之前在公众号转发了好友 Vajoy 的一篇文章 — 巧用 CSS 把图片马赛克风格化。 核心是利用了 CSS 中一个很有意思的属性 — image-rendering,它可以用于设置图像缩放算法。 何为 image-rendering? CSS 属性 image-rendering 用于设置图像缩放算法。它适用于元素本身,适用于元素其他属性中的图像,也应用于子元素。 语法比较简单: 其中,image-rendering: pixelated 比较有意思,可以将一张低精度图像马赛克化。 譬如,...

Amazing!巧用 CSS 视差实现酷炫交互动效

本文将介绍利用 CSS 实现滚动视差效果的一个小技巧,并且,利用这个技巧来制作一些有意思的交互特效。 关于使用 CSS 实现滚动视差效果,在之前有一篇文章详细描述过具体方案 – CSS 实现视差效果,感兴趣的同学可以先看看这篇文章。 这里,会运用上这样一种纯 CSS 的视差技巧: 使用 transform: translate3d 实现滚动视差 这里利用的是 CSS 3D,实现滚动视差效果。 原理就是: 我们给容器设置上 transform-style: preserve-3d 和 perspective: xpx,那么处于这个容器的子元素就将位于3D空间中, 再给子...

鼠标跟随 3D 旋转动效

今天,群友问了这样一个问题,如下所示的鼠标跟随交互效果,如何实现: 简单分析一下,这个交互效果主要有两个核心: 借助了 CSS 3D 的能力 元素的旋转需要和鼠标的移动相结合 本文,就将讲述如何使用纯 CSS 实现类似的交互效果,以及,借助 JavaScript 绑定鼠标事件,快速还原上述效果。 纯 CSS 实现元素的 3D 旋转 如果不借助 JavaScript,仅仅只是 CSS,如何实现类似的 3D 旋转效果呢? 这里会运用到一种名为正反旋转相消或者是正负旋转相消的小技巧。嗯,名字起的很奇怪,好像数学概念一样。 在动画中,旋转是非常常用的属性, [crayon-68b2f6ed0e0e13…

立体的阴影效果

CSS 阴影的存在,让物体看上去更加有型立体。 然而,在最简单的阴影使用之上,我们可以实现更多有意思且更加立体的阴影效果。 本文将带大家看看如何使用 CSS 实现几类比普通阴影更加立体的阴影效果。 CSS 阴影基础 CSS 中,明面上可以实现阴影的有三个属性: box-shadow – 盒阴影 text-shadow – 文字阴影 filter: drop-shaodw() – 滤镜内的阴影 关于它们的基础语法和使用就不过多描述,这一部分大家可以先在 MDN 补齐,贴几张图快速复习一下: box-shadow – 盒阴影: text...