初级会员
  • 第 13561 位会员
  • yudeguang
  • 2017-10-23 06:58:57
  • 30
  • Online
  • 18 44

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • #1 @liangmanlin 自行封装一个HTTP服务或者其它协议的服务即可解决多台服务机的问题。性能并不是问题的关键,虽然确实比redis快很多。主要是为了简单,并且服务稳定。
  • 这个可以自行封装一个HTTP服务,或者其它协议,比较简单,此处并没有实现。 相比redis方案,此方案主要在于: 1)简单,无依赖,至少你不用再装一个redis; 2)内存波动很小,不会有频繁的gc操作(但缺点也有,与此对应的是,初始化的时候,就预先分配了较大的内存); 3)性能并不是问题的关键,虽然确实比redis快很多。
  • github.com/ziutek/mymysql/mysql 这个驱动支持多结果集,也就是存储过程中多个结果
  • 因为resp.Body 不是io.seeker ,应该是无法按偏移量来读取的。除非你把他转换成 io.readseeker
  • https://github.com/yudeguang/mysql type MySqlStruct struct { DB *sql.DB } func (m *MySqlStruct) Query(query string, args ...interface{}) ([][]string, error) { stmt, err := m.DB.Prepare(query) if err != nil { return nil, err } defer stmt.Close() rows, err := stmt.Query(args...) if err != nil { return nil, err } defer rows.Close() //获取列数量 columns, err := rows.Columns() if err != nil { return nil, err } lenColumns := len(columns) var result [][]string for rows.Next() { oneColumn := make([]string, lenColumns) oneColumnHasNULL := make([]sql.RawBytes, lenColumns) oneColumnPtr := make([]interface{}, lenColumns) for i := 0; i < lenColumns; i++ { oneColumnPtr[i] = &oneColumnHasNULL[i] } err = rows.Scan(oneColumnPtr...) if err != nil { return nil, err } //处理NULL值 for i, v := range oneColumnHasNULL { if v == nil { oneColumn[i] = "NULL" } else { oneColumn[i] = string(oneColumnHasNULL[i]) } } result = append(result, oneColumn) } return result, nil }