linux 应用

  • Redis的事件处理模型2:客户端命令执行过程

    Redis的事件处理模型2:客户端命令执行过程

    前言 上篇分析了Redis的事件处理模型,了解了Redis的事件处理基本过程,这篇还想继续顺着上面的思路分析一下这种情况:在客户端向服务端发起一个set指令或者get指令后,服务端接收后怎么执行这个命令,这个命令操作的简单过程是怎么样的。在分析了这个过程之后,我们就知道了Redis客户端和服务端交互的整个过程。清楚交互过程之后,我再会分析每个数据类型的结构和原理。所以今天继续分析Redis的事件处理模型。 redis客户端命令处理分析 命令字解析 还是从上一篇分析的延续下来,我们从服务端接收到客户端请求开始...

    linux 应用 2019-03-29 149 2 c
  • Redis源码分析2:Redis的事件处理模型

    Redis源码分析2:Redis的事件处理模型

    前言 上一篇分析了一下redis的大致框架和启动过程,这篇我想分析一下redis的事件处理模型,当然也包含了网络事件的处理模型。redis除了其高效的nosql存储非常有名以外,另外一个比较被称赞的就是其服务效率。像这类服务的是怎么设计的,为什么这么高效。所以我想这里来分析分析。 事件驱动框架 redis的代码中有一个ae框架,是整个redis事件框架的基础,所以这里先来看看整个东东。按照ae.c文件中的注释说A simple event-driven programming library. Origi...

    linux 应用 2019-03-22 109 0 c
  • Redis源码分析1:Redis启动分析

    Redis源码分析1:Redis启动分析

    前言 近期决定把redis的源码阅读分析一下,在官网下载了最新稳定版本5.0.3。整个代码包还是比较小的,下载之后整个包才9M,解压之后看src文件夹也才3.7M,也就是说redis的源码就这么点,其它占空间的主要是几个依赖组件:hiredis(redis的C客户端), lua, jemalloc(内存池), linenoise(配置文件解析),这些代码占了大概6.3M. 看了redis的代码首先直观感觉就是:规范,非常规范。代码格式,缩紧,注释,命名都是非常规范的,可以说又是一个C代码的软件的典型。所以读...

    linux 应用 2019-03-09 127 1
  • Function as a Service介绍

    Function as a Service介绍

    本文是在去年梳理的关于FaaS的一个文档,主要目标是梳理FaaS的基本概念,发展势头,应用场景和一些基本的架构设计。后来在内部参考FaaS的设计思路,我们实现了一套适用于我们自己业务特点的函数服务,结合了DevOps,目前在内部使用的还算不错。目前可以用在实时排行服务,实时用户触达,实时数据清洗处理等等一些场景,以后也会把实现思路拿出来分享的。 现在的各种技术发展,必然是以服务的形式出现的,所以所有的技术以服务化的方式提供这是必然的。在内部我们建设各种系统和平台,在架构设计思路上也必然遵循这样的规范:分层设...

    linux 应用 2019-03-02 268 0
  • golang单元测试之mock

    golang单元测试之mock

    golang单元测试之mock 序言 前面介绍了golang的一般单元测试,以及如何使用vscode进行高效的go单元测试开发。同时也说过一般单元测试重点在于cpu和内存类型的测试,而对io类型的测试是比较敏感的。那么针对这类测试就没法做单元测试了吗?有的,肯定是有的,这就是mock技术。 mock测试不但可以支持io类型的测试,比如:数据库,网络API请求,文件访问等。mock测试还可以做为未开发服务的模拟、服务压力测试支持、对未知复杂的服务进行模拟,比如开发阶段我们依赖的服务还没有开发好,那么就可以使用m...

    linux 应用 2019-02-01 159 0 go
  • Golang UnitTest单元测试

    Golang UnitTest单元测试

    Golang UnitTest单元测试 单元测试是程序开发者适用一段代码来验证另外一段代码写的是否符合预期的一种相对高效的自我测试方法。 对于程序开发来说,经过长期的积累和方法总结,单元测试是一种比较好的开发程序验证方式,但是单元测试却是在正真的软件开发之外要写的额外的代码,而且编写和管理维护都有比较大的成本。但是单元测试确实能够提高程序开发的质量,所以基本上各种语言都有相应的单元测试框架来支持更为方便编写和管理单元测试。 golang也是一样,不过golang的测试框架的支持是自生就提供了,不像C/C++,...

    linux 应用 2019-01-25 143 1 go
  • Golang官方依赖管理工具dep学习使用笔记

    Golang官方依赖管理工具dep学习使用笔记

    golang的之前的版本一直缺乏官方的包管理,第三方的包管理个人感觉还是比较麻烦的,但是看到dep现在样子之后还是有了很大的兴趣,使用了之后发现也确实方便了很多。推荐使用dep Golang官方依赖管理工具:dep 今天在看一个内部项目的时候发现内部一个项目的体积非常大,一看原来是vendor占了很大空间。里面的库都是静态提交到git库的,更新和管理都很不方便,想想java开发中的maven多好用啊。之前也知道golang一直在开发类似的东西,借这个机会了解了一下,golang也已经有了这样的工具了:gode...

    linux 应用 2019-01-25 147 0 go
  • 这些年积累的一些小项目

    这些年积累的一些小项目

    github项目 Oneflow 项目简介:可视化分布式流程控制系统,数据流和业务流控制系统。使用golang开发,调度端采用了lua虚拟机,在web端可以创建串行流程,并且在每个流程中写lua脚本,发送到制定或者自动选择对远端机器进行任务执行。是之前项目openflow的升级版本。 项目地址:https://github.com/helight/oneflow DP设计模式golang实现 项目简介:用golang实现设计模式的测试程序,还在持续积累。 项目地址:https://github.com/...

    linux 应用 2019-01-18 119 0
  • golua虚拟机的使用

    golua虚拟机的使用

    前言 ​ 之前一直想把openflow这样的分布式流程系统做起来,但是时间和应用场景的问题所以都是做了一个半拉子工程,而且之前想的也有点简单了,认为只要有同学愿意,在开发上应该没问题,但是最终还是出现了项目管理和开发能力的问题,最终搁浅了。但是我想做一个分布式流程调度系统的想法一直没有断,其实在公司内和另外一个同学做过一个flow系统,也在线上使用了,直到现在还在使用。前一段时间就想把这个系统再优化梳理一下,目标是做一个小巧的开源可用版本。经过一段时间的梳理目前已经初步完成了,后台+前端代码的重新梳理也...

    linux 应用 2019-01-04 117 0
  • 使用gitbook来写文档和文章啦

    使用gitbook来写文档和文章啦

    前言​ 项目中文档管理是一个比较麻烦的事情,一般的做法都是写word文档,或者pdf;针对代码或者接口文档高级一点的可以使用Doxygen或者swagger这样的工具自动生成更新文档。但是项目中还有很多文档有是图文混合的。那这样的文档怎么有效管理呢? ​ 在找了几个工具之后,发现了一个比较合适的工具gitbook。这个工具之前也接触过,主要是用来书籍编写管理,这方面确实做的非常专业。但是我发现用来做文档管理也是非常好用的,所以拿来测试了一下,效果还是不错的。看看这个效果,也是左右分栏,左边是目录分类列表,右...

    linux 应用 2018-11-24 164 0
  • windows10下使用dockerfile制作镜像

    windows10下使用dockerfile制作镜像

    其实操作系统没有关系,主要还是Dockerfile的编写和执行,过程来说比较简单。 1.编写Dockerfile 我的dockerfile如下,主要是用于golang和c++的开发,所以相关软件安装都是和这方面有关的。 本来打算使用163的源的,后来看了一下官方源速度也还不错,就直接用官方的源了。 安装的主要软件是mysql,git,nginx,golang,vim #Version 0.1 FROM ubuntu:latest MAINTAINER helight "helight@q...

    linux 应用 2018-11-07 103 0
  • Windows10下安装Docker记录

    Windows10下安装Docker记录

    之前一直使用window安装虚拟机的方式来做linux应用,这次想使用docker来试试,这里顺便记录一下,部分资料来自网上。 一、启用Hyper-V 打开控制面板 - 程序和功能 - 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,如图: 点击确定后,启用完毕会提示重启系统,我们可以稍后再重启。 二、安装Docker Docker下载地址为:https://store.docker.com/editions/community/docker-ce-desktop-...

    linux 应用 2018-11-05 99 0
  • golang调度机制学习

    golang调度机制学习

    1.Golang的核心之一gorountine go语言非常重要的一个特性就是gorountine,有了这个东东,就可以很简单的做并发处理程序,比起c++和java的方式来说可以说简单了很多很多。那么gorountine又是一个什么样的东东呢? 从使用上来看它就是一个函数,使用起来有点像thread,但是实际上又不是,thread我们一般说起是指内核中的调度单元,他也是又用户态传递一个函数给thread,再由内核来调度执行,而gorountine是完全用户态的一个东西,而它要想和thread一样被执行那么就需要设...

    linux 应用 2018-05-15 71 0
  • golang的struct和interface

    golang的struct和interface

    struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套;go中的struct类型理解为类,可以定义方法,和函数定义有些许区别;struct类型是值类型。 struct定义 type User struct { Name string Age int32 mess string } var user User var user1 *User = &User{} var user2 *User = new(User)...

    linux 应用 2018-03-22 106 1 go
  • Golang信号处理和如何实现进程的优雅退出

    Golang信号处理和如何实现进程的优雅退出

    Linux系统中的信号类型 各操作系统的信号定义或许有些不同。下面列出了POSIX中定义的信号。 在linux中使用34-64信号用作实时系统中。 命令 man 7 signal 提供了官方的信号介绍。也可以是用kill -l来快速查看 列表中,编号为1 ~ 31的信号为传统UNIX支持的信号,是不可靠信号(非实时的),编号为32 ~ 63的信号是后来扩充的,称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。 Linux支持的标准信号有以下一些,一个信...

    linux 应用 2018-03-15 152 0 go
  • Goroutine+Channel+WaitGroup使用

    Goroutine+Channel+WaitGroup使用

    介绍 goroutine golang语言中最有特色之一的东东就是这个goroutine了,很多时候问起别人为什么golang的好用,golang的网络性能可以那么好,一般都会多多少少想到goroutine,提起goroutine。在linux中内核的调度最小单位是就是thread,同一个进程中的多个thread线程就对应内核中的多个thread实体。所以thread是内核级的,而gorountine是一个不同于thread的概念,gorountine是一个用户态,另外一种说法也就携程,是用户态的一种调度粒...

    linux 应用 2018-03-02 121 1 go
  • golang网络编程笔记

    golang网络编程笔记

    网络编程类型 我们一般提到的网络编程类型有两种:tcp和udp,都属于网络传输层协议支持下的协议,而且在目前也是网络编程中最基础的。这其中具体说来有有个socket的概念,tcp和udp都是协议,而socket就是一个具体的实现了,所以有tcp socket和udpsocket。golang是自身就带有网络库的net的,使用非常方便。 同时我这里还会简单介绍一下另外一种协议,用户态的,基于udp的,但是具有tcp的连接回话管理,重传确认等机制-kcp。 网络编程主要的目的是进行通信,所以就会涉及到至少2个...

    linux 应用 2018-02-12 85 1 goudpkcpflink
1 2 3 4 5 6 ››