0%

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
func main() {
arr := []int{0, 1, 2, 3, 4, 5, 6}
fmt.Println(BinarySearch(arr, 5))
}
func BinarySearch(s []int, k int) int {
lo, hi := 0, len(s)-1
for lo <= hi {
m := (lo + hi) >> 1
if s[m] < k {
lo = m + 1
} else if s[m] > k {
hi = m - 1
} else {
return m
}
}
return -1
}

script
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/bin/bash
# quick start: aicloud server

# rns008 popular env
# go
# export GOROOT=/usr/lib/go
# export GOPATH=/home/iot/aicloud_dev
# export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"

# beego
# export ProPort=8000
# export RunMode=prod

# database
# export dbhost=
# export dbuser=
# export dbname=
# export dbpassword=

# nlu
# export PROJECTPATH=$GOPATH/src/aicloud
# export RNS_ENTITY_HOME=/home/iot/Entity/
# export PATH="$PROJECTPATH:$PROJECTPATH/nlu/w2v/corpus/trunk:$PATH"

# flag
# export MQTT_FLAG=false
# export MONITOR_FLAG=true

# xunfei
# export LD_LIBRARY_PATH=/home/iot/xunfei_voice/libs/x64
# export PATH="/home/iot/xunfei_voice/bin:$PATH"

# specail
# export Localhost=

# you can input project path
project_dir=$1
[ -z $project_dir ] && project_dir=$PWD
[ -d $project_dir ] || project_dir=$PWD

# Step 1
# git pull current branch
branch=$(git rev-parse --abbrev-ref HEAD)
git pull --quiet origin $branch 1>/dev/null || $(echo "git pull failed" >&2 && exit 1)

# Step 2
# build server exec file
basename=aicloud-build
exec_file=$(mktemp /tmp/$basename.$$.XXXXXXXXXX)
go build -o $exec_file $project_dir/main.go 1>/dev/null || $(echo "build aicloud failed" >&2 && exit 1)

# Step 3
# kill aicloud progress
pids=$(ps -ef | grep $basename | grep -v grep | awk '{print $2}')
[ ! -z "$pids" ] && kill -9 $pids || echo "kill aicloud progress failed"

# Step 4
# run server exec file
error_log_file=$project_dir/error.log
nohup $exec_file 1>/dev/null 2>>$error_log_file &
if [ $? == "0" ]; then
echo -e "aicloud is running\nPID: $!"
else
echo "start aicloud failed" >&2
exit 1
fi

# Step 5
# test server base api
basename="aicloud-$server_name-test"
test_file=$(mktemp /tmp/$basename.XXXXXXXXXX)
go test -v -o $test_file aicloud/test -timeout 30s

exit

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package main

import "fmt"

var a = test()

func init() {
fmt.Println("init 执行了")
}

func test() int {
fmt.Println("var 执行了")
return 0
}

func main() {}
1
2
var 执行了
init 执行了

内存是通过电信号来保存数据的。而磁盘是通过磁效应来保存的。

获取电信号比获取磁信号快很多。

  • IPC = Inter-Process Communication = 内部进程通信
  • IPCS = Inter-Process Communication Service = 内部进程通信服务
  • LAN = Local Area Network = 局域网
  • WAN = Wide Area Network = 广域网
  • Ethernet = 以太网,最流行的局域网技术
  • kernel memory = 内核进程
  • GDB = GNU symbolic debugger = GNU符号调试器

1、goland打开后,总是显示Scaning files to index... 导致代码没有提示,测试函数无法执行

这个是在加载项目,项目比较大或则计算机处理能力此时比较差,真的需要等待。

2、为什么有些时候打开项目无法看到项目下的文件夹

这个问题暂时不知为何,但是通过删除工程下的.idea文件并重新打开即可解决。

3、go mod 无法下载墙外依赖包。

image

4、在使用go mod 的过程中,会出现这样的情况,本来在机器 A 上开发,然后 go mod vendor 下载以来,然后把项目移至到机器 B 上,
结果机器 B没有网络,goland 又认为这是 go mod 项目,去gopath 中寻找依赖,结果gopath 中也没有依赖,然后全部依赖包都报红,提示没有找到,
猜测原因时:goland 在 go mod 模式时,并不会去看vendor,而是首先去看gopath。(上述言论存在具体证据考究,只为解决问题)。

解决方案时:把gopath 也拷贝过去,世界变成了蓝色。哈哈哈

文件相关快捷键:

CTRL+E,打开最近浏览过的文件。

CTRL+SHIFT+E,打开最近更改的文件。

CTRL+N,可以快速打开struct结构体。

CTRL+SHIFT+N,可以快速打开文件。

代码格式化:

CTRL+ALT+T,可以把代码包在一个块内,例如if{…}else{…}。

CTRL+ALT+L,格式化代码。

CTRL+空格,代码提示。

CTRL+/,单行注释。CTRL+SHIFT+/,进行多行注释。

CTRL+B,快速打开光标处的结构体或方法(跳转到定义处)。

CTRL+“+/-”,可以将当前方法进行展开或折叠。

查找和定位

CTRL+R,替换文本。

CTRL+F,查找文本。

CTRL+SHIFT+F,进行全局查找。

CTRL+G,快速定位到某行。

代码编辑

ALT+Q,可以看到当前方法的声明。

CTRL+Backspace,按单词进行删除。

SHIFT+ENTER,可以向下插入新行,即使光标在当前行的中间。

CTRL+X,删除当前光标所在行。

CTRL+D,复制当前光标所在行。

ALT+SHIFT+UP/DOWN,可以将光标所在行的代码上下移动。

CTRL+SHIFT+U,可以将选中内容进行大小写转化。

CTRL+SHIFT+SPACE,自动补全代码

ALT+ENTER 检查并修复

CTRL+O,实现接口的所有方法

界面切换

ALT+1,打开/关闭Project窗口

ALT+2,打开/关闭Favorites窗口

ALT+7,打开文件方法列表

1.Ctrl+s后自动格式化代码

File –> Settings Tools –> File Watchers –> + –> go fmt

2.快捷键设置

File –> Setting –> KeyMap

3.goland 文件头注释

打开GoLand的setting选项
依次选择Editor,CodeStyle ,File and Code Templates ,Go File

根据自己需要添加即可

1
2
3
4
5
6
7
8
9
/*
/*
@Time : ${DATE} ${TIME}
@Author : ${USER}
@File : ${NAME}
@Software: ${PRODUCT_NAME}
*/
package ${GO_PACKAGE_NAME}
*/

4 安装插件

插件功能:在golang编辑器中编辑markdown文档,并实时查看
File > setting > 搜索markdown 然后完成安装

下载

Windows下载地址:https://download.jetbrains.com/go/goland-2018.2.1.exe

macOs下载地址:https://download-cf.jetbrains.com/go/goland-2018.2.1.dmg

Linux下载地址:https://download-cf.jetbrains.com/go/goland-2018.2.1.tar.gz

安装

Windows安装:直接双击golang-xxxx.xx.xx.exe,根据安装向导即可完成安装

macOs安装:直接双击golang-xxxx.xx.xx.dmg,然后将golang程序拖入APP即可完成安装

Linux安装:在文件目录下执行tar -zxvf golang-xxxx.xx.xx.tar.gz将tar包进行解压,然后进入golang,执行./goland 启动程序,
然后将goland程序锁定在启动栏上

激活

安装完成后,需要进行激活才可以免费使用,否则只能使用 30天。首先启动 goland,在激活页面中 选择第三个 License Server 填下下面任一地址。如果无法激活,请换一个尝试。

  • http://idea.imsxm.com
  • http://idea.youbbs.org
  • http://btsha.com:41017
  • http://idea.toocruel.net
  • http://active.chinapyg.com/
  • http://idea.congm.in
  • http://idea.iteblog.com/key.php
  • http://xdouble.cn:8888/