8 self-motivation

尚未进行身份认证

专注LINUX开发

等级
TA的排名 3k+

二十三式武功招式--总纲

扯淡写程序犹如练武,一样需要内外兼修。数据结构算法,操作系统原理,编译原理这些知识就犹如武侠中的内功心法,需要日夜旦夕苦练,经年累月方能有所小成。而内功一旦有所成就,其它任何武功学起来就会轻松加愉快。比如射雕中的郭靖,起初江南七怪教时,进展缓慢。自从全真教掌教马钰传授了一些呼吸吐纳的内功修练方法后,则进步神速。再如黑风双煞虽然有九阴真经下册,但也只学会了”九阴白骨掌”,始终无法达到...

2019-11-10 20:19:11

gRPC C++源码剖析(二) ---------数据结构篇之闭包调度器

grpc_closure_scheduler顾名思义,闭包调度器的作用就是对闭包进行调度。下面是它的定义:struct grpc_closure_scheduler { const grpc_closure_scheduler_vtable* vtable;};typedef struct grpc_closure_scheduler_vtable { void (*ru...

2019-10-26 10:27:16

gRPC C++源码剖析(二)---- 数据结构篇之闭包

上篇文章中提到了阅读gRPC源码的几大困难,其中数据结构是基础中的基础。如果连这些数据结构的原理和作用都不了解的话,阅读起代码来肯定事倍功半。因此这篇文章对gRPC提供的数据结构进行讲解。grpc_closure闭包闭包是一些编程语言中提供的功能,如python.closure就是闭包的英文名称.简单的理解,闭包函数将创建闭包时的上下文中的变量与自己绑定在一起,将变量的...

2019-10-25 21:58:06

gRPC C++ 源码剖析(一)----------入门

通过一段时间阅读gRPC c++的源码,对其实现原理算是初窥门境了。在这里通过一系列循序渐进的文章把其中的经验和学习到东西分享出来,希望志同道合之人能够共同交流进步。gRPC c++源码难吗?个人认为gRPC c++源码算是质量比较高的源码了,google工程师们的抽象和设计能力都能够在其中有所体现。可是阅读其源码还是有不少困难的,个人认为造成源码阅读困难的原因有以下几个:...

2019-10-22 22:02:33

golang实现的压力测试工具

代码地址:https://github.com/happyAnger6/loadstress.git轻松实现单机10K qps.

2019-09-08 22:18:40

list

从本篇文章开始,将介绍python提供的常用数据结构。这些数据结构从不同的维度可以进行不同的划分。按可变性划分: 可变数据结构:list,dict,set,bytearray 不可变数据结构:tuple,string,bytes 按是否可以存储不同类型的元素划分: 扁平数据结构:string,bytes,bytearray 容器数据结构...

2019-09-06 21:02:38

Vim中删除一个单词

目标假设光标目前处于行尾的e字符上,要删除最后一个单词”line”this is a test in vim. I want to delete a word in the line.解决方法要删除最后一个单词,有以下几种选择。先用’b’命令把光标先移动到”l”上,然后执行dw删除整个单词.按键3个执行反向删除命令’db'(会剩余最后的”e”字符),再执行’x’删除单个...

2019-08-28 23:01:11

怎么使用CONTEXT

http://www.anger6.com/?p=1903简介context库是go 1.7中加入的,本篇文章主要是讲解如何正确的使用它。缘起一切有为法,让我们先来看看golang里加入context的缘由。在一个go实现的服务器程序中,通常我们对每个请求使用一个goroutine来进行处理。在请求处理里,我们还有可能启动新的goroutine来访问一些后台程序,如进行数...

2019-08-18 21:56:49

anger6网站地图

不断提高自身修养,还有很多要补充的知识。http://www.anger6.com/?p=1893操作系统互斥技术SMP缓存一致性文件系统计算机网络epollhttp2设计模式常见设计模式系统架构c10kreactor模式gRPC数据结构与算法leetcode正则匹配回文GoGo调度器实现...

2019-08-16 21:36:32

Go语言调度器实现(二)----go scheduler

简介在上一篇文章里,我介绍了OS调度方面的相关内容,我认为这些内容对理解Go调度器的语义很重要。本篇文章,我将从语义层面会介绍GO调度器是如何工作的,将会重点关注G调度器的高层行为。Go调度器是一个复杂的系统,小的细节是不重要的。重要的是我们要有一个对Go调度器如何工作和其调度行为的好的认知模型。这些有助于我们做出工程上的决策。启动你的程序当你的Go程序开始运...

2019-08-11 21:24:46

go语言调度器实现(一)---os调度

go语言最大的卖点在于并发编程,尤其是现在免费的午餐已经结束,这意味着要挖掘硬件的高性能,软件越来越重要.而易于编写并发程序的go语言,调度器的实现是一关键因素.因此本系列文章希望探索go语言的调度器实现.将分3篇文章进行讲述,分别是OS调度器,GO调度器以及如何进行并发编程.介绍Go调度器的设计和行为能够让Go多线程程序的编写更加高效和具有更高的性能。这要得益...

2019-08-11 21:22:46

GIT对象

http://www.anger6.com/?p=1751git是linus开发的一款版本控制工具,大神的作品果然不同凡响,git正在变得越来越流行。在使用的过程中,也感觉到其易用和高效。因此想要探究一下其内部的原理。git的高效得益于其存储系统的实现,它是一个内容寻址的文件系统。git的核心是一个键值数据库,你可以向这个数据库中插入任意类型的内容,它会返回一个键值作为唯一标识,...

2019-08-07 22:52:10

docker镜像存储实现

为什么要写这篇文章?网上已经有很多讲docker镜像存储原理的文章了,这篇文章还有必要吗?网上关于docker镜像的文章大都偏原理,像什么镜像是分层的,是只读的,容器除了镜像的只读层还有自己的可写层等等。这些原理说出来大家好像都懂,但好像什么也没学到。因此我写了这篇偏实现的文章,讲述docker是如何利用联合文件系统存储容器镜像,以及如何建立容器的文件系统。学习这篇文章之后,你将能够:...

2019-08-05 22:13:00

linux epoll实现分析

epoll的作用是进行I/O的多路复用,可以同时监听多个fd产生的事件。常结合异步处理实现单线程的高并发。在多核环境中,可以结合多线程实现负载分担。本文主要分析一下linux epoll的实现。APIepoll_create(int size);.epoll_create1(int flags);创建一个epoll实例,并返回与之关联的一个fd.这是后面我们继续使用epoll其...

2019-07-27 23:18:07

gRPC当前epoll实现的问题和解决方案

gRPC当前的epoll实现并不十分高效,有很大的改进空间。这篇文章来分析一下。`epoll`是gRPC实现pollset的基础。因此,你有必要先了解一下epoll即其发展史(至少了解EPOLLEXCLUSIVE是干什么的吧?)如果文章中的内容不能理解,建议先看下我之前讲gRPC的相关文章。介绍当前gRPC中`epoll`的实现.整体架构图:一个gRPC客户端或者...

2019-07-24 23:55:05

理解Reactor模式: 基于线程和事件驱动

在web服务器开发中,有2种常见的架构:基于线程的架构和事件驱动的架构。基于线程的架构最初多线程server的实现一般都是采用每个连接一个线程的方法。这对于那些需要兼容非线程安全库的站点比较合适。也有使用多进程模型来隔离每个请求,这样单个请求出问题不会影响到其它请求。进程太重,上下文切换很慢而且内存消耗很大。因此,为了更好的扩展性,每个请求一个线程的方式更为常用。尽管多线程程...

2019-07-23 20:39:31

C10K问题

http://www.anger6.com/?p=1350问题C10K是探讨如何优化sockets处理以便能够同时处理大量客户请求的问题。C10K就是指的并发处理10K个连接。注意,这里的并发连接和qps的概念是不同的,尽管它们有些相似。qps需要很高的吞吐量(能够很快地处理请求),而大量的并发连接需要高效的连接调度和管理。换句话说,高qps要求的是处理请求的速度,而同时处理...

2019-07-21 20:57:52

设计模式总结(一)

http://www.anger6.com/?p=1317对各种设计模式的一些思考和总结。“生成实例”类单例模式”Singleton”从名字也很容易理解,只有一个实例。原理通过单例模式,我们通常想实现以下效果:确保任何情况下绝对只有1个实例想在程序上表现出“只存在一个实例”对于不同的编程语言实现“单例模式”的方式也有所不同。对于JAVA,C++这种语言,通常将...

2019-07-20 22:07:32

跳表---实现有序集合

http://www.anger6.com/?p=1267跳表的基础是链表,它是对有序链表的改进。主要改进有序链表的查找效率。我们知道对于有序的数组,通过二分查找法能够实现O(logn)的查找效率,而对于链表来说,由于其存储空间不是连续的,无法进行随机访问,因此查找效率是O(n).那么链表有没有办法实现和数组一样的查找效率呢?答案就是使用跳表。跳表在redis中有使用,用于...

2019-07-20 15:26:11

必须会的SUPER

http://www.anger6.com/?p=1006函数原型如下:super([type[,object-or-type]])super函数返回一个代理对象,用于调用type的父类或兄弟类中的方法。talk is cheap.先来看调用父类中的方法class B: def method(self): print('metho in ...

2019-07-12 22:35:39

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。