Golang面经总结

无法分类的问题 讲一下协程和线程的区别 3次 进程和线程的区别 1次 Epoll rpc框架序列化解决了什么问题 grpc框架 一致性hash是怎么做的 为什么 讲讲levelDB和RockesDB的区别 分布式锁改进和优化 怎么处理锁分段 缓存一致性问题怎么解决的优劣呢? hash的选型和一致性hash rpc框架解决了什么问题 grpc和jsonrpc的优劣 分布式框架的解决方案 路由网...
面试

Golang连接mysql插入时间早8个小时

问题描述

使用Golang操作Mysql,插入一条记录后发现新插入的时间比当前时间早了8个小时。

  1. 使用go-sql-driver来连接mysql数据库,获取的时区默认是UTC +0的,与本地的东八区是有区别,在业务处理中会出现问题

  2. 获取mysql中的日期,是string类型,需要在代码中用time.Parse进行转化

解决方案

在连接的dataSourceName中加上parseTime=Trueloc=local。此处的local可以更换为具体的时区(Asia/Shanghai)

修改之前的dataSourceName

1
2
3
dataBaseSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s", 
MysqlUser, MysqlPassword, MysqlHost, MysqlPort, MysqlDatabase, MysqlCharset)
conn, _ := sql.Open("mysql", dataBaseSource)

修改后的dataSourceName

1
2
3
dataBaseSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&loc=Local&parseTime=true", 
MysqlUser, MysqlPassword, MysqlHost, MysqlPort, MysqlDatabase, MysqlCharset)
conn, _ := sql.Open("mysql", dataBaseSource)
Golang

golang刷回溯遇到的坑

情况说明今天在做LeetCode-46题,DFS深搜写完,最后结果愣是不对,中途调试发现每次满足结束递归条件时得到的结果都是对的,但是后面一有满足条件就会造成最终的结果不对。 下面是46题的错误代码,中途调试打印cur可以正确打印,但是打印ret每次都会改变 1234567891011121314151617181920212223242526272829303132333435363738...