进入 elasticsearch 的 bin 目录,尝试使用 ./elasticsearch 命令启动 elasticsearch 提示如下错误信息:

Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.

解决方法:

1、指定允许root启动。如:
./elasticsearch -Des.insecure.allow.root=true

可以启动,但会提示
[WARN ][bootstrap] running as ROOT user. this is a bad idea!

2、创建一个非root elasticsearch相关的账号

  • 创建一个分组,取名为esgroup,然后,往该分组中添加用户es,并设置es账户的密码
  • 修改elasticsearch目录权限
  • 使用新创建的账号es来登录终端启动

使用 curl -X GET http://localhost:9200 查看信息

推荐使用方法二启动,另外如果要在浏览器中查看,需要修改 elasticsearch.yml 中的 network.host: 127.0.0.1network.host: 0.0.0.0

eg1

1
2
3
4
5
6
func f() (result int) {
defer func() {
result++
}()
return 0
}

eg2

1
2
3
4
5
6
7
func f() (r int) {
t := 5
defer func() {
t = t + 5
}()
return t
}

阅读更多

简介

在 Go http包的Server中,每一个请求都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,所有用来处理该请求的 goroutine 都应该迅速退出,然后系统才能释放这些 goroutine 占用的资源。

在Google 内部,我们开发了 Context 包,专门用来简化对于处理单个请求的多个 goroutine 之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。

阅读更多

Map 根据键名排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import (
"fmt"
"sort"
)

func main() {
// To create a map as input
m := make(map[int]string)
m[1] = "a"
m[2] = "c"
m[0] = "b"

// To store the keys in slice in sorted order
var keys []int
for k := range m {
keys = append(keys, k)
}
sort.Ints(keys)

// To perform the opertion you want
for _, k := range keys {
fmt.Println("Key:", k, "Value:", m[k])
}
}

阅读更多

Go 的排序思路和 C 和 C++ 有些差别。 C 默认是对数组进行排序, C++ 是对一个序列进行排序, Go 则更宽泛一些,待排序的可以是任何对象, 虽然很多情况下是一个 slice (分片, 类似于数组),或是包含 slice 的一个对象。

排序(接口)的三个要素:

  • 待排序元素个数 n
  • 第 i 和第 j 个元素的比较函数 less
  • 第 i 和 第 j 个元素的交换 swap

阅读更多

Golang 因为其语法简单,上手快且方便部署正被越来越多的开发者所青睐,一个 Golang 程序开发好了之后,势必要关心其运行情况,今天在这里就给大家介绍一下如果使用 Elastic Stack 来分析 Golang 程序的内存使用情况,方便对 Golang 程序做长期监控进而调优和诊断,甚至发现一些潜在的内存泄露等问题。

Elastic Stack 其实是一个集合,包含 Elasticsearch、Logstash 和 Beats 这几个开源软件,而 Beats 又包含 Filebeat、Packetbeat、Winlogbeat、Metricbeat 和新出的 Heartbeat,呵呵,有点多吧,恩,每个 beat 做的事情不一样,没关系,今天主要用到 Elasticsearch、Metricbeat 和 Kibana 就行了。

阅读更多

一、使用包管理器进行安装

  • 更新 Homebrew的package数据库(macosx上的软件包管理工具)
1
$ brew update
  • 安装MongoDb
1
$ brew install mongodb
  • 启动MongoDb(安装成功后命令行有提示)
1
$ sudo mongod --config /usr/local/etc/mongod.conf
  • 连接到mongo
1
$ mongo

阅读更多