Keal's Blog

我的天空, 是雨是风

Golang之类型比较

"go type compare"

普通类型比较 可比较:Integer,Floating-point,String,Boolean,Complex,Pointer,Channel,Interface,Array 不可比较:Slice,Map,Function Struct类型比较 相同的struct: 内部不含有不可比较类型的成员变量则可以直接比较 内部含有不可比较类型的成员变量不可直接比较, ...

Golang之defer

"defer"

Defer defer关键字的主要作用是指定一个在函数返回前执行的函数.最常见的使用就是释放锁,关闭文件描述符,释放数据库连接. 这里主要讲两个问题: defer 关键字的调用时机以及多次调用 defer 时执行顺序是如何确定的; defer 关键字使用传值的方式传递参数时会进行预计算,导致不符合预期的结果; 1 2 3 4 5 6 7 8 9 10 11 12 func...

Golang之go的调度

"go, use go"

Go调度 系统级别的调度依然是 进程和线程.虽然线程比较轻量,但是在调度时也有比较大的额外开销。每个线程会都占用 1M 以上的内存空间,在切换线程时不止会消耗较多的内存,恢复寄存器中的内容还需要向操作系统申请或者销毁资源,每一次线程上下文的切换都需要消耗 ~1us 左右的时间1,但是 Go 调度器对 Goroutine 的上下文切换约为 ~0.2us,减少了 80% 的额外开销2。 图-...

Thoughts on applying for a debit card

因为新公司需要平安的储蓄卡作为工资卡,而我还没有平安的储蓄卡,所以得去办理一张平安的储蓄卡. 去的是黄沙地铁站C出口旁的平安银行营业厅,中午时分,人不是很多. 由于国家政策收紧了金融政策,办一张储蓄卡,以前是只需要本人和身份证. 现在除了本人和身份证,非当地人还得提供租赁合同, 以及提供办卡用途相关信息. (我是工资卡所以要提供公司的录取通知书~) 从整个服务来讲我的感悟就是: 由于...

虚拟内存

页是将地址段按某个大小均分,页表则记录了页的一些信息. 虚拟内存到物理内存的翻译是通过MMU来完成,简化版流程: 找到对应页表. 根据页表里保存的真实物理地址找到真实物理地址 根据页表里保存的偏移量对真实物理地址进行相同的偏移.(两个偏移量是相等的) 页命中和不命中(缺页)实际上是指在物理内存中是否有找到,如果未命中,则会按策略将旧的页表置换到磁盘空间来腾出新的空间加载...

一些关于HTTP的问题

http基于tcp,http报文包含在了tcp的payload里. 如何解析http报文: http报文包含了请求行,请求头,和请求体. 三个内容通过\r\n来分隔.因此可以通过\r\n来区分请求行,请求头和请求体. 请求体中的数据有两种可能:如果客户端传递的请求头中包含了Content-length,则可以根据其长度来接收. 如果没有指明Content-length,则一定会通过T...

Linux写文件场景下的几个问题

多进程并发写日志是否会乱序 “All system calls are executed atomically. By this, we mean that the kernel guarantees that all of the steps in a system call are completed as a single operation, without being in...

NetEase interview

如何解析http报文?如何判断结束?如何知道包的大小? http头部包含了哪些内容? linux系统的权限是如何分配ID,文件系统是怎么样的,操作文件需要怎样的权限.写日志时如果把文件删除会怎么样? 虚拟内存的实现? 一堆数据,如何找出最大值最小值. 如何找出前N大的值. 算法实现, 复杂度.

分布式事务

解决分布式事务的其中一种方法就是不使用分布式事务. 概念 分布式系统中数据并非保存在同一个数据库中,此时的事务如果跨多个数据库,则无法使用数据库本身的事务来完成,需要额外的机制来实现分布式事务. 基于分布式的CAP理论,由于一般无法接受网络分区,因此P必须保证,所以剩下的就是C跟A. 根据这种情况又进一步提出了BASE理论(BASE 是 Basically Available(基本可用...

go和python的垃圾回收机制

现代语言基本都具备自己的垃圾回收机制, 自动的垃圾回收能减少程序员的负担和增加程序的可靠性.这次稍微深入了解一下go和python在垃圾回收 Python垃圾回收 引用计数+标记清除+分代回收 引用计数 每个对象都有一个变量指明有多少对象引用了它,当引用计数为0时,就直接将对象清除,释放内存 优点: 简单, 不需要集中处理 缺点: 无法处理循环引用的情况 标记-清除 目的:解...