ARTS 第14周分享
[TOC]
Algorithm
golang实现stack,很简单
[参考代码]
type Stack struct {
stacks []int
maxCount int
end int
front int
}
type SS struct {
Stack
ends int
}
func NewStack(num int) *Stack {
return &Stack{maxCount: num, end: -1, front: -1, stacks: make([]int, num)}
}
func (s *Stack) isFull() bool {
return s.end == s.maxCount-1
}
func (s *Stack) isEmpty() bool {
return s.end == s.front
}
func (s *Stack) push(num int) {
if s.isFull() {
fmt.Println("full stack")
return
}
s.end++
s.stacks[s.end] = num
}
func (s *Stack) pop() (num int, err error) {
if s.isEmpty() {
fmt.Println("empty stack")
return
}
num = s.stacks[s.end]
s.end--
return
}
func (s *Stack) list() {
if s.isEmpty() {
fmt.Println("empty stack")
return
}
for i:= s.end; i>=0; i-- {
fmt.Println(s.stacks[s.end])
}
}
Review
- A List of Top Golang Frameworks, IDEs & Tools https://medium.com/@quintinglvr/golang-guide-a-list-of-top-golang-frameworks-ides-tools-e7c7866e96c9
- 主要讲解如今比较流行的golang开发IDE, web框架,以及一些工具
- golang框架
- Revel:一个高效的go框架
- Beego:成熟的 MVC框架,国人开发
- Martini:一个轻量且强大的框架
- Gin Gonic:使用类似Martini的API的web框架
- Buffalo:全面发展的go web 框架,前后端皆支持
- Goji:轻量级且 快速的web 框架,可组合性和 简单性是它的主要 优势
- Tiger Tonic:灵感 来源于Dropwizard, 用于开发json web服务和构建高新能的REST风格的APIs。
- Gocraft:轻量级框架,提供快速和可规模化的路由执行
- Integrated Development Environment(IDE)
- Gogland:JetBrains 发布的golang IDE
- VScode:微软开发,可安装插件集成golang
- LiteIDE
- Wide:一个基于web的IDE
- Atom with go-plus plugin:通过安装 go-plus进行开发
- Eclipse with GoClipse:安装GoClipse插件开发go
- Sublime Text with GoSublime
- Vim with vim-go plugin
- Tools for Golang
- Apicompat:帮助开发者检测向后的、不兼容的更改和导出的声明
- Checkstyle:灵感来源于Java Checkstyle, 用于输出代码风格建议,用户可自定义配置
- Depth:帮助开发者检索和可视化go源代码的依赖树
- Go-Swagger:强大的功能组件,实现了Swagger 2.0,能够序列化和反序列化swagger 参数
- Go Meta Linter
- Go-callvis:帮助你可视化程序的调用为Graphviz的点格式图形
- Gonative
- Grapes:旨在通过ssh轻松分发命令
- Gosimple: 用于简化go源码
- Go Vendor:用于go依赖管理
Tips
Git 分支 - 变基:https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%8F%98%E5%9F%BA
-
它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master)的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件,然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。
$ git checkout experiment $ git rebase master First, rewinding head to replay your work on top of it... Applying: added staged command
单前分支为基底分支(即experiment分支),将master分支上的改变提取成临时文件,然后依次应用到experiment分支上。
你就可以使用 git rebase 命令的 --onto 选项,选中在 client 分支里但不在 server 分支里的修改(即 C8 和 C9),将它们在 master 分支上重放:
$ git rebase --onto master server client
以上命令的意思是:“取出 client 分支,找出处于 client 分支和 server 分支的共同祖先之后的修改,然后把它们在 master 分支上重放一遍”。
- 使用 git rebase [basebranch][topicbranch] 命令可以直接将特性分支(即本例中的 server)变基到目标分支(即 master)上。
$ git rebase master server
将 server 中的修改变基到 master 上 所示,server 中的代码被“续”到了 master 后面。
不要对在你的仓库外有副本的分支执行变基。
-
git rebase -i 的各种命令
# Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # d, drop = remove commit
share
Elasticsearch 的前世今生 https://mp.weixin.qq.com/s/c5l8dJvReXIblt-cbEv0YA
- “Elasticsearch 以前叫 Elastic Search。顾名思义,就是“弹性的搜索”。
- 它一开始是围绕着搜索功能,打造了一个分布式搜索引擎,
底层是基于开源的搜索引擎库 Lucene,是由 Java 语言编写的,项目大概是 2010 年 2 月份在 Github 正式落户的。 - Lucene 是一个非常古老的搜索引擎工具包,也是用 Java 编写,主要用来构建倒排索引(一种数据结构)和对这些索引进行检索,从而实现全文检索功能。
- Lucene 很强大,使用起来也非常灵活,缺点是它仅仅是一个基础类库,也没有考虑到高并发和分布式的场景。
- 班农在 Lucene 之上,封装了一个叫作 Compass 的程序框架,这样做的好处是,可以很方便地实现对‘领域对象’进行索引的创建,并实现‘字段级别’的检索,以及实现‘全文搜索’功能。
- 在 Compass 编写到 2.x 版本的时候,社区里面出现了更多需求,比如需要有处理更多数据的能力以及分布式的设计。班农发现只有重写 Compass ,才能更好地实现这些分布式搜索的需求,于是 Compass 3.0 就没有了,取而代之的是一个全新的项目,也就是 Elasticsearch。”
- Elasticsearch 作为一个独立的搜索服务器,提供了非常方便的搜索功能。用户完全不用关心底层 Lucene 的细节,Elasticsearch 简直就是一个 Compass 的 RESTful 实现啊!同时,Elasticsearch 基于分片和副本的方式实现了一个分布式的 Lucene Directory,再结合Map-reduce 的理念,实现了一个简单的搜索请求分发合并的策略,能轻松化解海量索引和分布式高可用的问题。
- Elasticsearch 就有了一个大概的认识,可以用它做搜索,也可以用它做日志。
- Logstash 是一个开源的日志处理工具,用 JRuby 写的,主要特点是基于灵活的 Pipeline 管道架构来处理数据。可以理解为将数据放进一个管道内进行处理,并且就跟真正的自来水管一样,管道由一截一截管子组成,每一个小管代表着一个数据处理的流程,每一个流程只做一件事情,然后可以根据数据的处理需要,选择多个不同类型的管子灵活组装。
- Logstash 搭配 Elasticsearch 变得很受欢迎。
- ELK 横空出世(Elasticsearch、Logstash 和 Kibana 这三个产品的首字母缩写),风靡了整个运维界。
- Elasticsearch、Logstash、Kibana、Beats ,这几个放在一起,就叫作 Elastic Stack。
本周阅读
第一周:5,7
函数式编程的核心思想: https://www.liaoxuefeng.com/article/1260118907809920
Elasticsearch 的前世今生 https://mp.weixin.qq.com/s/c5l8dJvReXIblt-cbEv0YA
深入浅出Golang的协程池设计 https://mp.weixin.qq.com/s/zfAmCpX7nS7SkF-isHNt8w
对数公式:https://baike.baidu.com/item/%E5%AF%B9%E6%95%B0%E5%85%AC%E5%BC%8F
TCP 连接可以发多少个 HTTP 请求?https://mp.weixin.qq.com/s/CqQSj8i1zBdMAalJsUsqhg
有疑问加站长微信联系(非本文作者)