字节跳动《实时音视频通讯技术》学习笔记之服务器端开发入门
字节跳动《实时音视频通讯技术》学习笔记之服务器端开发入门
Git基础知识
- Workspace 工作区,本地目录,平时存放代码的地方
- Index/Stage 暂存区,用于临时存放你的改动,保存即将提交的文件列表信息。
- Repository: 仓库区(或版本库),就是安全存放数据的位置。
- Remote: 远程仓库,托管代码的服务器,项目组中的远程服务器。
Git工具——简单使用
1. 初始化操作
//只需要执行一次
git config --global user.name "myname"
git config --global user.email "myemail@bytedance.com"
git config -l
//查看config信息
2. checkout远程代码
git clone https://xxx
// 将远程master分支checkout成本地feat分支
git checkout origin/master -b feat
3. 修改代码,查看diff
git diff
查看diff,也就是修改后的代码与原始的代码的区别。
git status
查看文件状态
4. 提交到本地仓库
git add filename
git commit -m "init the project"
5. push到远程仓库
//将本地mymaster分支push到远端
git push origin mymaster
6. 查看历史提交
git log xxx
// 查看文件提交记录
git log ./
// 查看目录下文件的提交记录
7. 查看分支信息
git branch
//查看本地分支信息
git branch -r
//查看远端(remote)分枝信息
git branch -D xxx
//删除本地branch
git branch -m yyy
//branch修改名字
8.本地修改全部回退
git reset --hard
9. 同步远端代码到本地
git fetch
git rebase [branch]
Golang发展历程
Go名字的来源
发展时间线
Golang对比其他语言
Go希望成为互联网时代的C语言。多数系统级语言的根本哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也是足够简单。
- 编译部署简单:不依赖其他库,编译出来就是一个可执行文件。
所以编译起来特别快!!!
- 统一的编码规范,代码简介,方便阅读。
- 严格的编译检查,不用的import或者变量引起编译错误。
- interface不需要显式的声明
- 内置强大的工具,如
gofmt
,goprof
等 - 自动内存回收
- 强一致类型
- 没有异常处理(Error is value)
- 基于首字母的可访问特性,例如变量首字母是大写,就是全局变量。
- 支持直接调用C代码
p.s. Go应该是快出泛型了,博主之前翻译过一篇博客《下一步:Go泛型》就是说明的这个信息。
Golang与C语言的区别
Golang综合实战-websocket客户端登陆
websocket客户端登陆
websocket
协议在2008年诞生,2011年成为国际标准.
它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息.
package main
import (
"fmt"
gosocketio "github.com/graarh/golang-socketio"
"github.com/graarh/golang-socketio/transport"
"time"
)
//结构体定义
type User struct {
ID string `json:"id"`
RoomID string `json:"room_id"`
Name string `json:"name"`
AvatarURL string `json:"avatarUrl"`
Type string `json:"type"`
Address string `json:"address"`
LoginTime string `json:"login_time"`
}
func main() {
//连接服务器
c,err := gosocketio.Dial(
gosocketio.GetUrl("127.0.0.1",3001,false),
transport.GetDefaultWebsocketTransport())
if err != nil{
fmt.Printf("websocket connect error:%v\n",err)
return
}
fmt.Println("connect success!")
//注册response回调
c.On("success", func(c *gosocketio.Channel,v interface{}) {
fmt.Println("success:",v)
})
//emit信息
go func() {
c.Emit("login",User{
ID : "user",
RoomID : "roomid",
Name : "rtcname0",
AvatarURL: "http://q.qlogo.cn/headimg_dl?dst_uin=5684277&spec=100",
Type : "user",
})
if err != nil{
fmt.Println("emit error:",err)
}
}()
time.Sleep(5*time.Second)
fmt.Println("finished...")
}
- 点赞
- 收藏
- 关注作者
评论(0)