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

西部数码网站管理助手 2008网站开发的案例分析模板

西部数码网站管理助手 2008,网站开发的案例分析模板,老板电器分销系统,高端品牌网站建设兴田德润在哪儿八股总结(go) gorm底层怎么连接mysql的 gorm是一个基于go语言的ORM框架,gorm不直接实现数据库的连接,而是基于Go标准库database/sql来管理数据库连接池;gorm.open()调用sql.open()初始化database/sql.DB; gin框架优势 gin是一个高…

八股总结(go)

  1. gorm底层怎么连接mysql的

    • gorm是一个基于go语言的ORM框架,gorm不直接实现数据库的连接,而是基于Go标准库database/sql来管理数据库连接池;
    • gorm.open()调用sql.open()初始化database/sql.DB;
  2. gin框架优势

    • gin是一个高性能、轻量级的web框架,基于net/http封装;
    • 基于RadixTree(基数树)进行路由分配;
    • 采用jsoniter进行JSON解析;
    • API设计简洁,内置多种HTTP方法,参数解析简洁;
    • 有着强大的中间件机制,支持局部和全局中间件,内置多个常用中间件,例如:
      • CORS(跨域处理)
      • JWT认证
      • 限流
      • 日志记录
      • 错误恢复(recovery,避免程序崩溃,能够自动捕获panic并返回500错误)
    • 内置渲染引擎,支持HTML模板渲染也支持JSON、XML、YAML格式;
  3. 切片的底层原理

    • slice本质是对底层数组的抽象,包含三个字段,指针:指向底层数组的起始地址,长度:切片当前长度,容量:表示切片当前容量;
    • 当切片容量不足时,会创建一个新的底层数组,并将数据拷贝到新的数组中,如果当前容量cap<=1024扩容两倍,如果当前容量>1024,扩容1.25倍左右;
    • 切片的共享机制,切片和数组是共享底层存储的,切片的修改会影响原始数组,slice[i:j]创建的新的切片如果修改数据,原slice仍然也会被修改;
  4. Map的底层原理

    • map采用哈希表(hashtable)结构,底层包含桶数组:存储键值对,哈希函数:用于计算key的哈希值并确定存放的bucket,溢出桶:当桶满时存储额外的数据;
    • go使用链地址法+开放寻址法解决哈希冲突,链地址法:每个桶最多存储8个键值对,如果超过8,会创建溢出桶,开放寻址法:使用额外的哈希计算在多个同种寻找空位存储;
    • map的扩容,当map大于负载因子6.5时触发扩容,创建2倍的桶,并重新计算key的哈希值,重新分配位置,采用渐进式迁移,为了避免一次性的拷贝影响性能;
    • map的删除,不会立即回收内存,只是标记删除,如果删除后桶为空,也不会回收桶的内存,当map进行扩容或更多数据加入时,才会真正释放内存;
  5. 将切片与map传入函数中,对数据进行修改,在函数外部切片与map会改变吗

    • 切片是引用传递,本质上是一个结构体,函数接收到还是这个结构体的副本,但其指向底层数组的指针不变,如果修改其数据会影响函数外的原切片,但若改变切片长度append()触发了扩容机制,则副本指向的底层数组地址发生改变,此时原切片则不会改变。如果切片触发扩容也能修改生效,则需要返回新的切片;
    • map是引用传递,本质上是一个指针,指向底层的哈希表,函数内部的修改会直接影响外部的map,如果在函数内部对map进行重新赋值(make(map[string]int)),入参会指向新的map,但不会影响外部的map;如果想要在函数内的重新赋值,则可以使用指针类型进行传参;
  6. 切片创建方式有哪些

    • 直接声明:var s []int,默认值为nil, 不能通过索引访问,会发生panic报错但可以append;

    • 使用make([]int, 5),创建长度为5容量为5默认数据为0的切片,也可以通过make([]int, 3, 10)指定capacity;

    • 直接初始化,s := []int{1, 2, 3};

    • 可以通过数组或现有切片创建,arr[1:4],共享arr数组或切片的底层存储,len()是数据长度,cap则是其arr[1]到arr末尾的长度,即从主切片中取出指向开头位置的链表地址这个意思;

      s1 := []int{10, 20, 30, 40, 50}
      s2 := s1[1:3] // [20, 30]
      fmt.Println(s2, len(s2), cap(s2)) // [20 30] 2 4
      
    • 赋值切片(copy()),如果想要创建一个独立的新切片,避免共享底层数组,可以使用copy(),

      src := []int{1, 2, 3}
      dst := make([]int, len(src))
      copy(dst, src)
      
http://www.dtcms.com/wzjs/834539.html

相关文章:

  • 网站备案难吗二类电商平台都有哪些
  • 博物馆网站模版wordpress 系统要求
  • 花店网站源码wordpress cosy主题破解
  • 怎么创建一个属于自己的网站建设一个网站需要多长时间
  • p2p网站审批深圳网站建设微信开发
  • c php做网站对比360官方网站
  • 网站推广方案策划顺义建站好的公司
  • 台州网站推广排名关于做网站电话销售
  • 中劵资本集团股票交易网站建设中有服务器怎么做网站教程
  • 怎样建设网站?(怎样注册域名?如何选择主机?网站应有哪些功能模块免费html网页源代码
  • 济南自助建站新闻头条最新消息30字
  • 免费模板网站做网站后有人抢注品牌关键字
  • 东兴网站建设南阳企业网站制作
  • 网站做两个月百度没有录取建网站需要几程序员
  • 深圳市建设局网站张局物联网官网入口
  • 漳州微信网站开发百度一下官方网站
  • 网站关键词做排名不分核酸检测收费
  • 中国建设银行网站缴费系统wordpress 做票务系统
  • 网站 做购物车企业年度报告公示系统
  • 外贸门户网站建设龙里县建设局管方网站
  • 有源码如何做网站商务网站建设策略
  • 山西做网站价格网站备案是什么一回事
  • 财政网站 建设方案做媛网站
  • 手机网站免费建设平台wordpress打不开
  • 网站建设设计团队金蝶进销存管理系统
  • 如何做配音网站江门网站推广哪家好
  • 怎样创建网站直播接口莱芜金点子信息港最新招聘人才
  • 网站建设丿金手指下拉如何做推广引流赚钱
  • aje网站润色九亭镇村镇建设办官方网站
  • 苏州网站建设设计公司哪家好重庆网站推广软件