使用gitbook来写文档和文章啦

前言​

项目中文档管理是一个比较麻烦的事情,一般的做法都是写word文档,或者pdf;针对代码或者接口文档高级一点的可以使用Doxygen或者swagger这样的工具自动生成更新文档。但是项目中还有很多文档有是图文混合的。那这样的文档怎么有效管理呢?

​ 在找了几个工具之后,发现了一个比较合适的工具gitbook。这个工具之前也接触过,主要是用来书籍编写管理,这方面确实做的非常专业。但是我发现用来做文档管理也是非常好用的,所以拿来测试了一下,效果还是不错的。看看这个效果,金杯也是左右分栏,左边是目录分类列表,右边是内容。还可以直接进行搜索。

gitbook介绍

​ gitb[……]

Read more

golang1.8以后yacc安装和使用

golang在1.8以后的tool工具中默认移除了yacc工具,如果要使用只能自己安装。

今天在测试代码中要用一下这个工具,突然发现没有,需要自己安装
首先这里下载代码:
http://github.com/golang/tools/cmd/goyacc/

然后编译,过程非常简单

 

接下来寻找go的tool工具目录,我的方法是这样的。
先用whereis go来寻找go的安装目录,然后再找他的tool目录。

找到之后直接[……]

Read more

windows10下使用dockerfile制作镜像

其实操作系统没有关系,主要还是Dockerfile的编写和执行,过程来说比较简单。

1.编写Dockerfile

我的dockerfile如下,主要是用于golang和c++的开发,所以相关软件安装都是和这方面有关的。 本来打算使用163的源的,后来看了一下官方源速度也还不错,就直接用官方的源了。

安装的主要软件是mysql,git,nginx,golang,vim

2制作镜像

在Dockerfile文件所在目录执行以下命令就可以了,

[……]

Read more

Windows10下安装Docker记录

之前一直使用window安装虚拟机的方式来做linux应用,这次想使用docker来试试,这里顺便记录一下,部分资料来自网上。
一、启用Hyper-V

打开控制面板 – 程序和功能 – 启用或关闭Windows功能,勾选Hyper-V,然后点击确定即可,如图:

点击确定后,启用完毕会提示重启系统,我们可以稍后再重启。

二、安装Docker

Docker下载地址为:https://store.docker.com/editions/community/docker-ce-desktop-windows

下载需要登录才可以,注册登录之后就可以下载了,安装包有50[……]

Read more

Apache Flink 1.6 Documentation: Jobs and Scheduling

Jobs and Scheduling 作业和调度

这边文档简要的描述了Flink怎么样调度作业和Flink在JobManager中如何表述和跟踪作业。

Scheduling 调度

Flink中的执行资源是通过任务执行槽来确定的。每个TaskManager有一个或者多个任务执行槽,每个可以运行一个并行任务的流水线。每个流水线包含多个连续的任务,像N次的MapFunction的并行实例跟一个ReduceFunction的n次并行实例。注意Flink经常同时执行多个连续的任务:对数据流程序来说都会这样,但是对于批处理程序来只是频繁发生。
下面的图说明了这个情况。一个带数[……]

Read more

Apache Flink 1.6 Documentation: Component Stack

Component Stack 组件栈

作为一个软件栈,Flink是一个分层设计的系统。不同的层基于底层创建,不断提升程序表现的抽象。
  • 运行时层接受JobGraph 形式的程序,一个JobGraph 是一个通用的并行数据流,它具有消费和生产数据流的任意任务。
  • DataStream的API和DataSet的API都通过独立的编译过程生成JobGraphs。DataSet的API用一个优化程序来确定程序的优化计划,而DataStream的API使用流构建器
  • 根据Flink中各种不同部署参数来执行JobGraph(例如:local,remote,YAEN等等)
  • [……]

Read more

Apache Flink 1.6 Documentation: Distributed Runtime Environment

分布式运行时环境

Tasks and Operator Chains 任务和操作链
Job Managers, Task Managers, Clients 作业管理器,任务管理器,客户端
Task Slots and Resources 任务执行槽和资源
State Backends 后端状态
Savepoints 保存点
Tasks and Operator Chains 任务和操作链
对分布式执行操作,Flink把操作子任务链起来放到任务中。每个任务由一个线程来执行。把操作链起来放入任务中是有助于优化的:它可以减少线程间交互[……]

Read more

Flink Dataflow Programming Model

Dataflow Programming Model

数据流编程模型
Levels of Abstraction :抽象层
Programs and Dataflows  编程和数据流
Parallel Dataflows 并行数据流
Windows 窗口
Time 时间
Stateful Operations 带状态的操作
Checkpoints for Fault Tolerance 容错检查点
Batch on Streaming 基于流的批处理

Levels of Abstraction 抽象层[……]

Read more

golang调度机制学习

1.Golang的核心之一gorountine

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

Read more

golang的struct和interface

struct

struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套;go中的struct类型理解为类,可以定义方法,和函数定义有些许区别;struct类型是值类型。

struct定义

struct的方法

在go语言中,我们可以为自定义类型定义类型相关的方法,比如:

上面的代码为player这个自定义类型声明了一个名为Name的方法,该方法返回一个string。值得注意的是(p *player)这段代码指定了我们是[……]

Read more

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

Linux系统中的信号类型

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

Read more

Goroutine+Channel+WaitGroup使用

介绍

goroutine

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

Read more

golang网络编程笔记

网络编程类型

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

Read more

golang的grpc学习笔记2


上一篇文章简单体验了一下grpc的golang使用,从环境安装到简单demo的编写,编译和测试,感觉还不错,今天再进一步学习分析其用法和一些要注意的坑。
grpc一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本。而且gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。
从学习上来说,grpc的文档真是很全面了,http[……]

Read more

golang grpc简单使用


gRPC是一个高性能、通用的开源RPC框架,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。

1、相关包安装

1)protobuf

在下面的链接下载之后源码安装,
https://github.com/google/protobuf
安装过程也比较简单:

就可以安装好。

2)安装protoc的golang插件

设置好gopath之后直接使用下面的命令即可。
我的gopath设置为:/home/helight/gopath/
go get -u gith[……]

Read more

helight.info域名启用

纠结了好久,终于定了,启用了helight.info这个域名,同时还申请了helight.cn,helight.com的域名已经被人注册了,还是一个黑科技公司,看产品就很奇怪。
这几天已经配置把helight.info配置ok了,整个网站都切换了,zhwen.org还会继续使用,欢迎大家浏览。

微信小程序开发体验

    一直在想怎么做一个小程序,当然是一个有用的小程序,前天突然想到可以做一个小程序,把我的blog的内容拉去下来,并且在里面可以展示,给自己的blog增加一个移动端的入口,而且可以在每篇文章后面放一个打赏码。自己想着还是挺好的, 所以昨天注册了一个小程序“黑光技术”,现在申请还是比较方便的,不太好的一点就是要每次申请都要用一个不同的邮箱地址,我是用QQ邮箱的域名邮箱来做的,都是一个邮箱,每次申请就增加一个别名。
    做一个这样的一个小程序需要几个方面的配合:
    1)第一步就是申请一个小程序
    2)有一个blog,可以自己定制修改
    3)blog的feed和内容[……]

Read more

golang的httpserver优雅重启


去年在做golangserver的时候,内部比较头疼的就是在线服务发布的时候,大量用户的请求在发布时候会被重连,在那时候也想了n多的方法,最后还是落在一个github上的项目,facebook的一个golang项目grace,那时候简单研究测试了一下可以就直接在内部使用了起来,这段时间突然想起来,又想仔细研究一下这个项目了。
从原理上来说是这样一个过程:

所以一步一步来看,关键是从第2步开始之后怎么做,所以我们先来看看第2步的实现,这个应该说很简单,发送信号量到一个进程,使用kill命令即可,在facebook[……]

Read more

nginx+php站点配置https

    今天准备搞一个小程序测试一下,结果发现如果要链接我的站点,那就必须要站点支持https。所以就顺便鼓捣一下把站点升级一下,增加https的访问支持。
    首先解决的就是证书问题,一个个人blog就没有必要买证书了,发现证书老贵老贵的。所以找了找免费证书,最后发现腾讯云提供的还是比较好的,很方便申请,这里https://buy.cloud.tencent.com/ssl 直接选择免费证书,输入自己的域名就可以申请了,再按照他的流程就可以生效了,最后下载下来就可以用了。阿里云说是有,但是我的申请界面没有看到,所以没法用。
    这里记录一下在nginx+php网站怎么折腾的。

[……]

Read more