golang init 初始化执行顺序

首先main之前会执行init。如果init中又依赖其他扩展,则先执行其他扩展中的init。类似于树的叶子节点,先执行的从叶子节点开始。这是今天遇到的一个问题,还有一个就是关于windows配置环境变量。需要注意两点,首先就是环境变量设置之后,需要关闭当前命令行才能生效。另外就是环境变量分为用户变量和系统变量,如果其中设置不生效,可以选择都设置。还有就是设置环境变量以后,是以命令行形式运行的。

golang 什么时候关闭channel

通知接收方没有更多数据了 ch := make(chan int) go func() { for i := 0; i < 5; i++ { ch <- i } close(ch) // 生产者发完了,通知接收者 }() for v := range ch { fmt.Println(v) // 接收者循环读取直

mysql binlog 和 redo log的区别

binlog 和redo log 区别binlog =>记录insert、update、delete的操作(逻辑日志 )分三种格式:statement、row(记录数据变更情况)、mixed追加写的模式,主要用在数据恢复和主从复制redo log =>记录的是数据页上的物理修改(如"在数据页 P 的偏移量 100 写入 1")(物理写)循环写,写满后覆盖之前的数据。主要用在事务持久性,

tcp 四次挥手状态

a给b发fin,a进入fin_wait_1。b收到fin之后,内核发送ack(a收到后进入fin_wait_2),之后b状态就变成了close_wait之后b给a发送fin,这时候b进入last_acka收到b发送的fin之后,发送ack,此时a变成time_waitb收到ack后状态变成closedclose_wait的作用是对方已经不能给我发送数据,因为它已经fin了。我仍然可以给对方发送数据

fastadmin env 问题

今天在配置fastadmin env的过程中,突然发现env不生效。然后在database.php将值写死,这时候报警告错误。Warning: syntax error, unexpected end of file, expecting TC_DOLLAR_CURLY or TC_QUOTED_STRING or '"' in /Users/bot/PhpstormProjects/fastad

golang interface 底层相关

interface 分两种空接口(eface)和非空接口(有方法定义的接口)type eface struct {_type *_type // 具体类型信息的指针 data unsafe.Pointer // 指向实际存储的数据}也就是定义了指向位置的指针和指向类型的指针。例子:var i interface{}i = 42_type 指向 int 的类型信息。data 存放

golang 组合和继承问题

今天面试的时候,面试问我golang 如何实现继承。我直接说golang中只有组合,想实现类似继承的效果的话。就是struct嵌套struct 这种比较靠谱

golang 对json中字段类型不固定的处理

用golang读取一个json,发现有一个字段的值有的是int类型,有的是string类型。解决思路就是自定义一个类型,然后解析json的时候,自定义函数进行判断。type StringOrInt stringfunc (s *StringOrInt) UnmarshalJSON(data []byte) error {// 尝试解析为字符串 var str string if err :=

ping 域名来查看网络情况

我们有时候想查看本地到域名的联通性的时候,就使用ping来操作。而ping属于icmp协议。这个协议主要是用来网络诊断和控制。其中网络联通用的是ping。而路由诊断就用的traceroute工具。它会记录从你本地到指定ip之间经过了那些路由节点,以及耗时。核心目的就是为了定位网络延迟和中断的具体位置。实现原理就是通过ip数据包的ttl(time to live)来实现。初始化ttl=1,发现一个路

golang 实现qps 滑动窗口流量统计

思想就是用循环数组来实现整个结构。其中numSlots用来表示滑动窗口的持续时间,比如30s,间隔时间是1s执行一次,这个可以用goroutine起一个定时器实现。计数就用golang atmic 实现,这个具有原子性。每一次步进就是(curIndex+1)%numSlots 下边就是相关代码。package service import ( "fmt"