字节跳动《实时音视频通讯技术》学习笔记之服务器端开发入门

Regan Yue 发表于 2021/08/20 10:43:38 2021/08/20
【摘要】 字节跳动《实时音视频通讯技术》学习笔记之服务器端开发入门 Git基础知识Workspace 工作区,本地目录,平时存放代码的地方Index/Stage 暂存区,用于临时存放你的改动,保存即将提交的文件列表信息。Repository: 仓库区(或版本库),就是安全存放数据的位置。Remote: 远程仓库,托管代码的服务器,项目组中的远程服务器。 Git工具——简单使用 1. 初始化操作//...

字节跳动《实时音视频通讯技术》学习笔记之服务器端开发入门

Git基础知识

  • Workspace 工作区,本地目录,平时存放代码的地方
  • Index/Stage 暂存区,用于临时存放你的改动,保存即将提交的文件列表信息。
  • Repository: 仓库区(或版本库),就是安全存放数据的位置。
  • Remote: 远程仓库,托管代码的服务器,项目组中的远程服务器。

image.png

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发展历程

image.png

Go名字的来源

image.png

发展时间线

image.png

Golang对比其他语言

Go希望成为互联网时代的C语言。多数系统级语言的根本哲学来源于C++,将C++的面向对象进一步发扬光大。但是Go语言的设计者却有不同的看法,他们认为值得学习的是C语言。C语言经久不衰的根源是它足够简单。因此,Go语言也是足够简单。

  • 编译部署简单:不依赖其他库,编译出来就是一个可执行文件。

所以编译起来特别快!!!

  • 统一的编码规范,代码简介,方便阅读。
  • 严格的编译检查,不用的import或者变量引起编译错误。
  • interface不需要显式的声明
  • 内置强大的工具,如gofmt,goprof
  • 自动内存回收
  • 强一致类型
  • 没有异常处理(Error is value)
  • 基于首字母的可访问特性,例如变量首字母是大写,就是全局变量。
  • 支持直接调用C代码

image.png

p.s. Go应该是快出泛型了,博主之前翻译过一篇博客《下一步:Go泛型》就是说明的这个信息。

Golang与C语言的区别

image.png

Golang综合实战-websocket客户端登陆

websocket客户端登陆

websocket协议在2008年诞生,2011年成为国际标准.

它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息.

image.png

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...")
}

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。