zoukankan      html  css  js  c++  java
  • Go语言学习

    1.Go语言简介

    源于google  2009年对外发布

    比较新的语言

    https://www.jb51.net/article/126998.htm

    2.常用类型:

    slice

    channel  管理协程

    锁比channel高效,什么时候用锁什么时候用channel看实际情况

    interface

    常用类库:*.os.File,*.net.TCPConn,*bytes.Buffer

    解耦依赖,在哪里使用,在哪里定义

    3.并发

    CSP  通过通信来共享数据,而不是通过共享数据来通信

    使用context  

    web服务端模型 (建立tcp连接,新建协程去读写) 标准库net/http、thrift等都是用这种服务端模型

    4.性能分析

    CPU -- 在runtime中每隔很短的时间,会记录当前正在运行的协程栈。持续一段时间,一段是5~10s,通过分析这段时间记录下来的栈,出现频率比较高的函数则是占用CPU较高。

    内存 -- 内存分析只能分析在堆上申请内存的情况,和CPU分析采用同样的方法。通过分析这些采样的记录,判断出哪些语句申请内存较多。

    性能测试工具 -- import "net/http/pprof" 

    https://blog.csdn.net/moxiaomomo/article/details/77096814

    性能调优:查看哪一块代码对象分配比例较高,减少对象的分配 减少gc

    export GODEBUG=gctrace=1

    export GOGC=100

    mem = now_mem * ( 1 + GOGC/100)  // 可以调整gc条件 GOGC=100表示内存达到当前内存的2倍时产生gc;当然也可以选择尽可能快的频繁gc,但是频繁gc容易引起cpu飙高。

    5.高效GO代码

    对象复用

    streaming

    sync.Pool -- new完对象后放到池子里,需要的时候再去拿,但是不能保障不被gc  动态调整pool的大小,内存复用最优化

  • 相关阅读:
    [COM/ATL]组件、对象、MFC、ATL的区别
    中国还是和AMD走到一起了 但美国会高兴吗(网易科技 卢鑫)
    趋势安全云
    统计应收与实收,有发票和商品两种方法,各有优缺点
    雷军:风口论一直被误读 我不是机会主义者
    Jira 6.0.5环境搭建
    逻辑推理能力
    交换变量值的5种方法
    .net下简单快捷的数值高低位切换
    easyui tree 的数据格式转换
  • 原文地址:https://www.cnblogs.com/biang/p/10644364.html
Copyright © 2011-2022 走看看