jxzssy

浅谈Javascript单线程和事件循环

单线程 Javascript 是单线程的,意味着不会有其他线程来竞争。为什么是单线程呢? 假设 Javascript 是多线程的,有两个线程,分别对同一个元素进行操作: 一个线程将执行 changeValue() 函数,如果元素存在就修改元素的值;一个线程将执行 deleteElement() 函数,如果元素存在就删除元素。此时在多线程的条件下,两个函数同时执行,线程 1 执行,判断元素存在,准备执行修改值的代码 e.value = "VALUE";,此时线程 2 抢占了 CPU,执行了 deleteElement...

深入理解Go语言(03):scheduler调度器 – 基本介绍

一:什么是调度 平常我们在生活中会有哪些调度的例子呢?比如十字路口的红绿灯,它就是一种调度系统。在交通十字路口,每个路口上多多少少有一些车辆,为了限制这些车辆不随意行驶,就建起了红绿灯调度系统。红绿灯可以有序的调度这些车辆行驶,使这些车辆快速的通过路口。 那为什么需要红绿灯来进行调度呢? 1:使车辆有序的行驶不至于相撞 2:使车辆能快速的通过路口 上面的红绿灯系统有哪些元素呢?1. 红绿灯系统-负责调度车辆 2. 车辆 3. 十字路口 由此我们可以看出一个调度系统基本元素有2个:1. 调度系统 2. 被调度的东西 3. 应用的资源 因为资源(十字路口)是有限的,每个方向只有一条路可供车辆行..…

Linux进程: task_struct结构体成员

一:简介 为了管理进程,内核必须对每个进程所做的事情进行清除的描叙。 比如:内核必须知道进程优先级,他是正在CPU上运行还是因为某些事件被阻塞了,给它分配了什么样的地址空间,允许它访问哪个文件等等。 这就是进程描述符(process descriptor)的作用,进程描述符都是task_struct类型的结构,它里面的字段包含了与一个进程相关的所有信息。每一个进程都要有一个task_struct数据结构。 在Linux中 进程(process)和 任务(task) 是同一个意思。 研究 Linux版本为 2.6.38.8 二:task_struct 结构体成员 task_stru...

微服务架构学习与思考(09):分布式链路追踪系统-dapper论文学习

一、技术产生的背景 1.1 背景 先来了解一下分布式链路追踪技术产生的背景。 在现在这个发达的互联网世界,互联网的规模越来越大,比如 google 的搜索,Netflix 的视频流直播,淘宝的购物等。 像这种大规模的应用,我们每点击一下鼠标,搜索一个关键字,背后可能会有几百台服务器上的N个服务来为我们提供服务。 我们用谷歌搜索:分布式 3 个字,搜索一些文章来学习分布式的知识。假如,查询时结果返回耗时 5 秒之多。 作为用户的你,等待这么长时间才返回结果,心里肯定不满意。 那作为一项服务来说,公司为了更好的服务用户,让用户满意,就必须要缩短用户等待返回查询结果的时间...

golang常用库包:Go依赖注入(DI)工具-wire使用

google 出品的依赖注入库 wire:https://github.com/google/wire 什么是依赖注入 依赖注入 ,英文全名是 dependency injection,简写为 DI。 百科解释: 依赖注入是指程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。 在用编程语言编写程序时,比如用 java 语言,会编写很多类,这些类之间相互调用,完成一个具体的功能。 例如,从 MySQL 获取数据,那么需要一个 MySQL 操作类 。 第一次编写mysql操作类: [crayon-68b359b44c519115259023...

云原生概览

从云计算到微服务再到云原生发展历程 见下图 (来自:https://jimmysong.io/kubernetes-handbook/cloud-native/kubernetes-and-cloud-native-app-overview.html) 云计算: 云计算是一种配置资源的方式,根据资源配置不同,把云计算分成下面3种类型: lasS:基础设施即服务。比如亚马逊的EC2、S3存储。 PaaS:平台及服务。工具和服务的集合。快速构建自己的应用服务而不必关系底层的硬件设施。厂家有:Cloud Foundry、Heroku等 SaaS:软件即服务。终端可以直接使用的应用程序。...

WebSocket 协议详解

一、WebSocket 协议背景 早期,在网站上推送消息给用户,只能通过轮询的方式或 Comet 技术。轮询就是浏览器每隔几秒钟向服务端发送 HTTP 请求,然后服务端返回消息给客户端。 这种方式的缺点: 需要不断的向服务端发送 HTTP 请求,这种就比较浪费带宽资源。而且发送 HTTP 请求只能由客户端发起,这也是早期 HTTP1.0/1.1 协议的一个缺点。它做不到由服务端向客户端发起请求。 为了能实现客户端和服务端的双向通信,经过多年发展于是 WebSocket 协议在 2008 年就诞生了。 它最初是在 H...