- 博客(56)
- 收藏
- 关注
原创 Golang调度管理笔记--如何保证G不会被其他G的系统调用、网络调用阻塞?
GMP模型系统调用通过syscall,解绑PM,P选择或新建M,重新调度,G状态为syscall,阻塞当前M。系统调用结束后获取PLocal G队列或全局G队列chan阻塞,功能sendq, recvq保存待写入或读取的g,设置状态Waiting。发生读取或接受时通过goready激活G,重新调度netpoll阻塞time阻塞...
2019-11-08 18:01:05
704
原创 golang-lru Cache (二)2Q
LRU的问题当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命中率急剧下降,缓存污染情况比较严重。2Q Cache2Q算法2Q算法有两个缓存队列,一个是FIFO队列,用于保存最近访问的数据;一个是LRU队列,用于保存热点数据。golang-lru实现在golang-lru中,两个队列都是用simplelru实现。type TwoQueueCa...
2018-08-10 12:56:16
1352
原创 golang-lru Cache (一)LRU
简介Golang 第三方库golang-lru基于双向链表实现了三种LRU及变种Cache:LRU,Q2,ARC。今天看了一下代码,简单优雅,整理一下笔记。双向链表双向链表在golang标准库container/list中实现。定义了两个核心结构体Element和List。Element双向链表的一个节点信息。type Element struct { ...
2018-07-31 19:18:20
6003
原创 Golang init函数
函数特性init函数作为Go的两个保留函数之一(另一个是main函数)有很多特殊性: - init函数没有入参和返回值 - init函数不能被显式调用 - 一个package中可以包含多个init函数 - 一个go文件中可以包含多个init函数何时调用程序的初始化都从main函数开始,如果main引入了其他package,在编译的时候就会将他们依次导入。初始化是在一个gor...
2018-07-27 12:11:13
3235
2
原创 Golang Cond同步机制
Golang Cond同步机制条件变量是构建在一个基础锁上的同步原语,Golang Crondition位于sync包中,用于goroutine需要关注特定的条件的场景。 Cond 模块定义:type Cond struct { noCopy noCopy // L is held while observing or changing the condition...
2018-07-23 20:37:25
5406
4
原创 OAuth 2.0协议学习
简介OAuth通过引入授权层以及分离客户端角色和资源所有者角色来解决第三方授权中的问题。客户端获得一个访问令牌(一个代表特定作用域、生命期以及其他访问属性的字符串),用以代替使用资源所有者的凭据来访问受保护资源。访问令牌由授权服务器在资源所有者认可的情况下颁发给第三方客户端。客户端使用访问令牌访问托管在资源服务器的受保护资源。OAuth 2.0协议与OAuth 1.0协议实现细节没有太多关联。...
2018-04-09 15:24:55
511
原创 OAuth 1.0 协议学习
OAuth是一种开放的协议,为桌面程序和web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。OAuth中的定义Service Provider: 允许通过OAuth访问的web app,比如云存储服务User: 拥有Service Provider账户的人Consumer: website or app, 通过OAuth访问Service Provide...
2018-04-04 15:33:05
1849
翻译 云计算安全管理
企业正在探索将设备扩展到云端,并向市场提供了一些服务,例如:IaaS, PaaS, SaaS。本文将讨论信息安全问题的三个挑战:机密性,完整性和可用性。大多数企业分成关心他们数据的所有权。本文不仅介绍包括IAM在内的云计算需要应对的安全挑战,还将介绍当前用户访问云时的认证、授权和审计状态,以及新兴的IAM协议和标准。
2018-04-04 15:21:55
4966
原创 分布式一致性协议在MongoDB选举中的应用
前言之前在学习MongoDB复制集时发现网上的很多相关的分享都是针对r3.2.0以前的版本,新版本对选举机制做了较大的更改,但是在网上大多都是一笔带过。于是写过一篇《MongoDB选举机制》。当时主要结合了官网最新的文档和部分源码。由于官网介绍比较泛泛,源码阅读的时候又受限于个人能力与时间,最终只整理了选举相关的核心逻辑,对应复杂的条件检查和数据结构没有深入的了解。最近了解了一些分布式一致性算法之后
2018-01-12 13:35:34
2712
原创 MongoDB选举机制
复制集概述MongoDB复制集是指MongoDB实例通过复制并应用其他实例的oplog达到数据冗余的技术。MongoDB复制集一般由一个主服务器(Primary)和若干个备服务器(Secondary)组成。其中Primary用于处理客户端的请求,通过Primary将数据写入;Secondary从Primary同步数据,保存副本。当Primary服务器崩溃时,MongoDB复制集通过选举机制将其
2018-01-06 00:15:33
6215
原创 MongoDB索引-查询优化器
索引概述介绍查询优化器首先要从索引开始。索引在计算机系统中应用非常广泛,是提高查询效率的常用手段。如果没有索引,MongoDB必须遍历集合中所有文档才能找到匹配的结果;如果存在一个适当的索引可以限制MongoDB必须检查的文档数量。 在MongoDB中,索引是一种特殊的数据结构,以一种便于遍历的方式存储集合数据的部分信息。 常见的索引有几种组织模型,其中,B-Tree索引可以看
2017-12-20 15:43:36
1590
原创 Pyinstaller 找不到路径case
简介python应用越来越广泛,有时需要将python的project打包成二进制,到一个没有安装python解释器的环境中执行。Pyinstaller对这个功能提供了较好的支持。 Pyinstaller能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个
2017-10-23 12:13:12
5880
原创 Python epoll编程:实现一个ioloop
简介 python标注库select模块提供了IO多路复用支持,包括select,poll,epoll。当处理大量空闲链接时,epoll能显著提升接口性能。关于IO多路复用技术,可以参考IO多路复用技术 。 epoll广泛应用于高并发架构中,tornado、eventlet等都支持epoll。ioloopioloop作为tornado四个主要组成部分之一,提供了一个异步网络库。在看过一些to
2017-09-08 20:42:31
1621
翻译 [译]Scaling in the Linux Networking Stack: XPS
本文档描述了一系列在Linux网络栈中的补充技术,以增加并行性、提高多处理器系统的性能。
2017-04-27 11:21:41
1195
原创 ANSI转义序列
转义是当由于技术等原因、无法直接在代码中写出所要的字符时采用的,以多个字符的有序组合来表示原本需要的字符的手段,而转义序列(英语:escape sequence)指在转义时使用的有序字符组合。
2017-03-22 15:51:10
2316
原创 Flask源码分析(一)
Flask是python web框架,主要包含werkzeug和jinja2,前者是一个WSGI工具集,后者用来实现模板处理。
2017-03-07 19:01:43
4513
转载 VFIO简介
VFIO是一个可以安全的把设备I/O、中断、DMA等暴露到用户空间(userspace),从而可以在用户空间完成设备驱动的框架。
2017-03-03 18:48:46
24645
原创 KVM网络虚拟化(二)
KVM网络虚拟化(二) KVM网卡虚拟化除了全虚拟化、Virtio外,还可以利用网卡PCI透传技术,SR-IOV技术,提供更高性能的虚拟化网卡。
2017-03-03 14:33:47
2408
原创 网卡中断与多队列
X86系统采用中断机制协同处理CPU与其他设备工作。长久以来网卡的中断默认由cpu0处理,在大量小包的网络环境下可能出现cpu0负载高,而其他cpu空闲。后来出现网卡多队列技术解决这个问题。
2017-03-02 15:47:29
6398
原创 Python import
Python import首次import首次使用import 加载模块时,解释器将做三件事: 1,创建新的命名空间,用作在相应文件中定义的所有对象的容器。在模块中定义的函数和方法在使用global语句时将访问该命名空间。 2,在新建的命名空间中执行模块中包含的代码。 3,将模块添加到sys.modules中,在调用函数中创建名称来引用模块命名空间,这个名称与模块名称相匹配。imp
2017-02-27 10:04:42
451
原创 Celery实践
Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。它是一个专注于实时处理的任务队列,同时也支持任务调度。我们用celery处理异步job的项目中积累了一些经验。在这里整理一下。
2016-11-26 23:08:32
2105
原创 Python作用域
python作用域LEGB原则python中作用域有四种: L (Local) 局部作用域 E (Enclosing) 闭包函数外的函数中 G (Global) 全局作用域 B (Built-in) 内建作用域python按照LEGB原则搜索变量,即优先级L>E>G>B。#dir 为python内建函数dir = 1 # Globaldef outer(): di
2016-11-23 11:04:36
8313
1
原创 本地Pypi源搭建
利用devpi搭建本地pypi源背景访问外网慢,需要搭建一个本地pypi源。需求提供内网开发环境和生产环境pip访问。只需要提供一些特定包,不需要全量。需要有一定的HA。方案有同学已经整理了一些pypi 本地缓存方案。 经过权衡我们选择devpi。我们需要Pypi代理和本地缓存功能,同时,devpi支持replication 和 failover,HA方面有优势。 用一主一从两个机器做dev
2016-11-22 19:51:10
4607
转载 WSGI
WSGIWeb服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。WSGI是作为Web服务器与Web应用程序或应用框架之间的一种低级别的接口,以提升可移植Web应用开发的共同点。WSGI是基于现存的CG
2016-11-22 10:22:41
548
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人