- 博客(8)
- 收藏
- 关注
原创 Tcmalloc介绍
tcmalloc 是Google推出的一种内存分配器,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配函数。 tcmalloc的内存分配策略 tcmalloc 分配的内存主要来自全局缓存堆和进程的私有缓存。小容量的内容申请直接从私有缓存分配,如果私有缓存不足就从全局缓存中申请一部分作为私有缓存。大容量的内存申请则直接走全局缓存。大小容量的边界是32k,超过32K就是大,小于32K就是小。 内存的数据结构 tcmalloc 中,内存采用数组+链表的形式管理(有点像Java的hash
2020-05-28 17:11:18 444
原创 Go : GC
1、何时触发GC? 当堆上分配大于32k的对象的时候开始检测是否满足GC条件,满足则开始自动GC。 func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer { ... shouldhelpgc := false // 分配的对象小于 32K byte if size <= maxSmallSize { ... } else { shouldhelpgc = true ... } ... // g
2020-05-28 16:33:29 219
原创 用GO自己动手做一个bilibili (二)API开发--搭建基本的项目框架
因为API的开发整个过程较大,步骤较为繁琐,所以这里分为了好几个章节,慢慢挖坑。 搭建文件结构 根据之前的设计,先把实现API功能的文件结构搭起来。 其中video_server是项目的总目录。在总目录下,包含了项目的主体功能。现阶段的目标是项目的API开发设计,所以暂时只需要在总目录下建立一个API目录即可。 api目录下是api的各个功能项: auth是用户权限的实现。 dbops是对数据库的操作的实现。 https 是对接口中所需定制的response方法实现。 model是项目所需要用到数据模型。
2020-05-14 18:04:19 601
原创 Go :数组
数组的定义方式: 1、 var nums [3]int // 数组内容为{ 0, 0, 0} 这样的定义方式指定了 数组长度,默认数字类型初始值为0,字符类型为"" 其他类型为nil 2、 var nums = [...]int{1,2,3} // 数组内容为 {1, 2, 3} 如果在数组长度的位置出现的时[…]则说明数组长度不确定。 这中定义方式在定义时即指定了数组的初始值,数组的长度为初始值元素的个数 3、 var nums = [...]int{1:3, 4:3} //数组内容为{0, 3
2020-05-13 18:26:57 1077
原创 用GO自己动手做一个bilibili (一)网站设计
网站设计 总体架构设计 数据支持数据库API前端视频流调度流本地视频 api设计 上传/观看/下载/删除发表挂靠用户视频资源评论 用户模块: 创建用户: URL : /user , method=Post ,sc: 201 400 500 201:创建成功 400 :请求错误 500: 内部错误 用户登录: URL : /user/:username , method=Post ,sc: 20...
2020-04-30 16:53:18 593
原创 二、关于session
为什么session会出现? 接上文《关于cookie》的后话。毕竟cookie是放在客户端的,单方面的保证总是显得那么无力,如果有点什么意外导致cookie失踪,那无状态的问题其实还是没解决,只是让无状态出现的几率等于客户端出事的几率罢了。这个时候,为了做个保底,至少在服务器和客户端他们两个想交互的时候,不会突然相忘于江湖,session就这么出来了。 session是什么 简单的说,sessi...
2020-02-29 16:45:14 202
原创 一、关于Cookie
为什么cookie会出现? 因为Http协议是一种无状态的协议, Web服务器本身不能识别出哪些请求是同一个浏览器发出的也不用记录谁刚刚发了HTTP请求, 每次请求都是全新的、独立的。即便在Http1.1支持了持续连接,但当用户有一段时间没有提交请求时,连接也会自动关闭。 而随着现代交互式网络应用的大量普及,也就带来一个新的问题,即“交互必须是双向的”。可http健忘,客户端和服务器刚说完一句就不...
2020-02-29 16:03:20 254
原创 鸡兔同笼问题的算法记录
总结:从问题的不同角度出发能得出不同的算法。例子:一个包里有5元和2元现金共18张,总价值共60元整。求5元和2元各有几张。解法一(二分法,二分次数随问题规模改变):(5*18)+(0*2)=90 ,90>60 ,90-60=30,30>5。 18/2=9, (9*5)+(9*2)=60,63>60,63-60=3,3<5。 ...
2018-02-12 19:11:03 490
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人