当前位置: 首页 > news >正文

专门做兼职的网站有哪些如何做线上销售和推广

专门做兼职的网站有哪些,如何做线上销售和推广,笔记本网站开发背景,wordpress作者函数slice golang-slice语雀笔记整理 slicego为何设计slice?引用传递实现扩容机制 go为何设计slice? 切片对标其他语言的动态数组,底层通过数组实现,可以说是对数组的抽象,底层的内存是连续分配的所以效率高,可…

slice


golang-slice语雀笔记整理

  • slice
    • go为何设计slice?
    • 引用传递实现
    • 扩容机制

go为何设计slice?

切片对标其他语言的动态数组,底层通过数组实现,可以说是对数组的抽象,底层的内存是连续分配的所以效率高,可以通过索引查找。
image.png
**有数组了为何还要切片? **

  1. 数组长度固定,切片动态扩容,更加灵活
  2. golang官方文档明确说了go只有值传递,而通过切片可通过值传递实现引用传递

所以切片的核心在于它如何实现引用传递、 以及 切片的扩容机制

引用传递实现

切片实现引用传递主要还是跟它的数据结构有关。 在slice的结构体中有3个字段, array, len, cap; 其中的array指向底层数组开始的内存。 那么值传递的时候传的内存区域其实是同一块。此时虽然对副本修改,但实际上改的是同一块内存上的数据,就实现了引用传递。 但是对副本修改len和cap,原始数据len和cap是不会变的,比如传递切片给函数,函数内部append(s,100),输出一下s是看不到这个100的,因为输出s时是输出len个元素,len没变。

扩容机制

1.19下slice.go下的grouslice方法源码

扩容的触发时机:len跟cap相等时,下次append就是触发扩容。阅读slice.go下的growslice方法源码,可以分析slice扩容机制。
首先是计算new cap大小:
判断新申请空间是否大于 2 * old cap,如果是,那就直接使用new cap;
如果不是,判断old cap 小于 256 ?如果是,直接使用2* old cap作为new cap,如果不是,则在一个for循环里面不断给old cap扩容1/4,并且+192,直到cap 满足new cap。 这样的扩容更加平滑
根据new cap ,计算需要分配的内存大小:比如newcap * 元素大小(比如int就是newcap*8byte),向上取整推算mspan对应等级,对新切片进行初始化,然后调用memmove方法,将老切片内容拷贝到新切片并且返回。

我觉得go的切片扩容策略相比C++更加的平滑,初始阶段的扩容迅速,后面的增加更省内存。像C++的vector的话linux下1.5倍考虑到内存的复用,win+vs下2倍,是固定的倍数扩容;

http://www.qdjiajiao.com/news/2618.html

相关文章:

  • 拼多多网站建设过程重庆seo排名技术
  • 专业网站开发设计百度推广方式
  • 做门窗安装用哪些网站找生意快速提高排名
  • 四级a做爰片免费网站seo网站推广方案策划书
  • 可以在电脑做公务员题的网站网站运营师
  • 图书类网站开发的背景微信如何投放广告
  • 万网建设网站教程百度销售岗位怎么样
  • wordpress 默认首页重庆百度整站优化
  • 网站建设公司的市场开发方案百度竞价推广屏蔽软件
  • 去视频网站做编辑器百度推广售后
  • 长治做网站多少钱新网站百度收录要几天
  • 贵州一帆建设工程有限公司网站淘宝关键词工具
  • 旅游网站排名前十网店推广是什么
  • 企业网站建设北京公司排名扫图片识别图片原图
  • 十大wordpress主题郑州谷歌优化外包
  • 网站开发提现功能免费网站推广软文发布
  • 色91Av做爰网站如何推广自己产品
  • 郑州做网站哪个公司好代运营一家店铺多少钱
  • 牙膏的网站建设成人技能培训
  • 美食网站开发与设计报告能打开的a站
  • 可以做推文的网站重要新闻今天8条新闻
  • 1688货源网官方网站北京网站优化页面
  • vue做的pc线上网站如何增加网站的外链
  • 重庆网站设计制造厂家seo推广软件排名
  • 网站开发 视频存储网站seo重庆
  • 平台已经维护6天了seo服务优化
  • 虚拟主机做视频网站可以吗桌面百度
  • 襄阳网站建设营销云巅seo
  • 优网营销网站建设友情链接交换工具
  • wordpress 生成小程序seo技术培训班