zoukankan      html  css  js  c++  java
  • golang 大杂烩

    主协程如何等其余协程完再操作

    • 主协程自我阻塞,直到需要的协程完成
    • 阻塞方法
      • 使用sync.WaitGroup()管理其余协程
        • 优点:操作简单
        • 缺点:不能管控协程的执行完成的顺序
      • 利用缓存管道进行协程之间的通信
        • 优点:能够管控一组协程结束
        • 缺点:不能管控协程的执行完成顺序
      • 利用无缓存管道进行协程之间的通信
        • 优点:能够管控协程执行完成的顺序

    slice基本的底层原理的学习

    • slice的本质:结构体

      type slice struct {
      	array unsafe.Pointer // 元素指针
      	len   int // 长度 
      	cap   int // 容量
      }
      
    • 底层数据修改的影响情况

      • 在一个已存在的切片的基础上,截取数据(还是切片类型)。在没有超过容量的基础上,增加数据和修改数据都会影响到原先的切片元素的值
      • 做形参传递给函数时,只要slice[i]修改元素值得时候,会影响到底层数据
    • 参考代码

    package main
    
    import(
    	"fmt"
    )
    
    func main(){
    	slice := []int{0,1,2,3,4,5,6,7,8,9}
    	s1 := slice[2:5]  //切出来的数据,还是底层数据:slice
    	s2 := s1[2:6:7]  //2,6,7都是索引值,切出来的数据,还是底层数据:slice
    
    	fmt.Println("s1:",s1,len(s1),cap(s1))
    	fmt.Println("s2:",s2,len(s2),cap(s2))
    
    	s2 = append(s2,100)  // 增加的数据不会超过该切片的容量,会影响到s1和slice切片元素
    	s2 = append(s2,200)  // 增加数据超过该切片的容量,自动复制新的位置,并且容量扩大原来的一倍
    
    	fmt.Println("s2:",s2,len(s2),cap(s2))  
    
    	s1[2] = 20
    	fmt.Println("s2:",s2)  
    	fmt.Println("s1:",s1)
    	fmt.Println("Slice:",slice)   //下标为4和下标为8的值都被改变了
    }
    
    • 输出结果
    s1: [2 3 4] 3 8
    s2: [4 5 6 7] 4 5
    s2: [4 5 6 7 100 200] 6 10
    s2: [4 5 6 7 100 200]
    s1: [2 3 20]
    Slice: [0 1 2 3 20 5 6 7 100 9]
    

    map学习

    • map的输出是无序,因为key的值是遵循hash排序的
    • 要做到顺序,可以对键值进行排序

    大文件排序

    • 比较优化的算法:外排
      • 将大文件分为很多个小文件
      • 对小文件内容进行排序
      • 同时遍历所有的小文件,找到最小数或者最大数进行
      • 取出最大数或者最小数,存储,再次遍历。直到遍历完所有的小文件中的数据

    HTTP中GET和HEAD请求的区别

    • GET请求
      • GET请求带上传输消息主体
      • 作用
        • 传输数据给客户端
    • HEAD请求
      • HEAD请求不带上传输消息主体
      • 作用
        • 用来查看超文本链接有效性,可访问性
    • 参考博文:HTTP GET HEAD

    http Keep Active

    • Keep Active模式定义
      • 客户端和服务端建立连接之后,保持连接
    • 客户端判断服务端发送数据
      • 客户端根据响应头中的Content-length的值,是否已经接收完数据
      • 当服务端不知道数据量多大的时候,响应头中使用Transfer-Encoding头字段,值为chunk。将数据分块发送给客户端,由一个长度为o的chunk标明结束
    • 参考博文:HTTP Keep-Alive模式
  • 相关阅读:
    谈谈Nullable<T>的类型转换问题
    MiniProfiler使用方法
    捕获变量
    web服务相关的问题或技巧
    对接mysql数据库遇见的一些问题
    委托
    导出到Excel
    斐波那契数列的运算时间
    .net framework摘抄与理解
    sql 语句
  • 原文地址:https://www.cnblogs.com/MyUniverse/p/11623654.html
Copyright © 2011-2022 走看看