Bootstrap

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

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

Git基础知识

  • Workspace 工作区,本地目录,平时存放代码的地方

  • Index/Stage 暂存区,用于临时存放你的改动,保存即将提交的文件列表信息。

  • Repository: 仓库区(或版本库),就是安全存放数据的位置。

  • Remote: 远程仓库,托管代码的服务器,项目组中的远程服务器。

Git工具——简单使用

1. 初始化操作

//只需要执行一次

//查看config信息

2. checkout远程代码

// 将远程master分支checkout成本地feat分支

3. 修改代码,查看diff

查看diff,也就是修改后的代码与原始的代码的区别。

查看文件状态

4. 提交到本地仓库

5. push到远程仓库

//将本地mymaster分支push到远端

6. 查看历史提交

// 查看文件提交记录

// 查看目录下文件的提交记录

7. 查看分支信息

//查看本地分支信息

//查看远端(remote)分枝信息

//删除本地branch

//branch修改名字

8.本地修改全部回退

9. 同步远端代码到本地

Golang发展历程

Go名字的来源

发展时间线

Golang对比其他语言

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

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

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

  • 统一的编码规范,代码简介,方便阅读。

  • 严格的编译检查,不用的import或者变量引起编译错误。

  • interface不需要显式的声明

  • 内置强大的工具,如,等

  • 自动内存回收

  • 强一致类型

  • 没有异常处理(Error is value)

  • 基于首字母的可访问特性,例如变量首字母是大写,就是全局变量。

  • 支持直接调用C代码

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

Golang与C语言的区别

Golang综合实战-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...")
}