秦川

6
获赞数
1
关注数
3
粉丝数
成都
IP 属地四川
2019-09-03 加入
浏览 6.4k

September 3rd 2019.

6 声望
go
6
lrucache
3
gc
3
slice
3
游戏服务端
3
黄金勋章
暂未获得该勋章
如何获得
白银勋章
暂未获得该勋章
如何获得
青铜勋章
暂未获得该勋章
如何获得
个人动态
  • 发布了文章2023-02-03
    关于 Go arena 的讨论的学习
    这也是个人长期以来对于 Go 的一个特别关注点。之前见过一些基于 mmap 系统内存自己管理的方案,但是很遗憾,这些方案看起来都很难真正的在项目中使用(接口复杂,抛弃了 Go 原生数据结构,有并发问题,容易导致panic等)。22年初开始,一个叫 Go arena 的提议 引起...
  • 发布了文章2023-01-04
    A Guide to the Go Garbage Collector 翻译(Go 语言垃圾回收指南)
    本指南文档通过向熟练的 Go 用户提供关于 Go GC 一些深入信息,来帮助他们更好的对自己程序的运行代价的理解。同时也给 Go 用户提供一份如何深入洞察优化程序资源利用率的指南。本指南并不假设你熟悉 GC,但是对 Go 语言的熟知是必须的。
  • 发布了文章2022-09-16
    关于 Go bootstrapping 的学习记录
    在 Go 1.5 版本发布的时候提到:Go 语言实现了 bootstrapping (中文叫自举,或者自展,总之都很拗口)。那么,这个概念(或者说这项技术),究竟意味着什么呢?在我曾经看到过的各种资料文章中,bootstrapping 它总是是不是出现一下,而且好像大部分人都对这个重要概...
  • 发布了文章2022-09-03
    Slice capacity 相关的两个场景
    s1 和 s2 的值未知,s[0] 可能是 12,也有可能是9。如果在 append 一个元素之后 s 不会扩容,那么 s1[len(s)] 的值将会是12。
  • 发布了文章2022-09-03
    Go 版本改动(个人理解)记录
    重要说明:本文仅记录了个人阅读 go release notes 之后的一些肤浅理解,一定会存在大量的错误。有很多重要的改动没有被列出(可能是因为本人无法理解或者不感兴趣)。切记不要当做 Go release notes 的中文翻译,仅仅是一个小笔记。具体的内容请一定请参考原文说明...
  • 发布了文章2022-08-03
    Go Context 应用场景和一种错误用法
    Go 的 context 包,可以在我们需要在完成一项工作,会用到多个 routine (完成子任务)时,提供一种方便的在多 routine 间控制(取消、超时等)和传递一些跟任务相关的信息的编程方法。
  • 发布了文章2021-12-08
    编码、乱码、unicode 和 Emoji
    概述在各种日志、tty 输出中,我们总是能够发现各种编码不正确的字符。 {代码...} 遇到这种情况,我们下意识地会产生三个想法:这是什么(原本的内容应该是什么)?从哪里来的?为什么会这样?我该怎么处理好?对于我个人的理解,乱码只不过是「一种对于文本类数据的...
  • 发布了文章2021-04-17
    Go 中时间类型的一些细节
    文档翻译自:Package timeGo 中的 time 包提供了时间展示和计算相关的功能。使用无闰秒的格列高利历计算时间。单调时钟(Monotonic Clocks)(我的理解:描述系统中「逝去」的时间。这个概念是和进程绑定的,一般来说,用来表示当前进程自启动之后「逝去」的时间。)...
  • 发布了文章2021-03-30
    学习 go mod 的心得
    学习 go mod 的心得@Spike参考官方 GuideRuss Cox 的 Go & Versioning 11篇请注意:这篇文章主要是学习 go mod 的使用和对 Go & Versioning 这个系列文章的学习心得。如果你看完且理解了这个系列的文章,那么接下来的内容应该对你没有任何帮助。包含内容什么...
  • 发布了文章2020-05-28
    Machine learning scratch
    numpy 相关 numpy array shape {代码...} numpy basis {代码...} numpy 读取csv (panda会更加方便) {代码...} libreoffice 转换csv {代码...} 绘图 {代码...} pandas 相关 {代码...} 参考官方文档 pandas.DataFrame.loc 实际上,px.loc接收多种类型的参数,导致他的...
  • 发布了文章2019-09-19
    Emacs 记录
    什么是 Emacs An extensible, customizable, free/libre text editor — and more. Emacs 是... 学会了Emacs,你就可以: 一个快速、好用、高度自定义的编辑器。 天哪,不知不觉就也会写一点Lisp了。 认识很多朋友。 GNU Emacs Emacs 可以写什么 直接说说不能写什么吧...
  • 赞了文章2019-09-12
    2018年第九周-解决因jbd2导致Linux性能过低问题
    在很多MySQL实践中,或者压测中,特别是从centos官方下载DVD直接安装的linux,可能会遇到这样一个问题,为什么有些机子硬件性能很好的,数据库入库的速度比那些不好的机子还快。从MySQL Workbench的工具能够看出实时的入库记录数,可能才20~200多条,这速度太慢了。...
  • 发布了文章2019-09-09
    Golang 中使用 Slice + 索引 Map 替代 Map 获得性能提升
    通常情况下,为了使用方便,使用了 go 自身的 map 作为存放容器。当有超过几十万 key 值,并且 map 的 value 是一个复杂的 struct 时,额外引入的 GC 开销是无法忽视的。在 cpu 使用统计图中,我们总是观测到较为规律的短时间峰值。这个峰值在使用 1.3 版本的 go 中...
  • 发布了文章2019-09-03
    defer 的一些用法和猜测
    以前的代码中,基本上只使用了 defer 作为防御程序 panic 退出的手段,没有仔细考虑过对返回值的影响。今天有同事提到: 如果执行过程中发生 panic,defer函数 recover() != nil的情况下,未命名的返回值的函数会返回什么呢? 之前并没有没有想过这个问题,猜想应该...
  • 发布了文章2019-09-03
    使用 authenticationDatabase 参数连接 aliyun 上的 MongoDB
    直接使用这种通用的地址字符串是非常方便的,不管是独立数据库、副本集以及集群都是统一的,格式大概是这样的:mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[database][?options]]
  • 发布了文章2019-09-03
    Go 的一个 CAS 操作使用场景
    大概一年前,曾经遇到这么一个问题:程序中有 N个并发执行的routine,都会向一个size 为 n 的 channel 里面写入数据,这 N 个 routine 有比较高的并发度,同时负载也比较大,所以不希望在写入数据的时候卡住,因此使用了这样的代码。
  • 发布了文章2019-09-03
    更好的 Golang 的 MongoDB 驱动 `globalsign/mgo`
    这个库一度是唯一的选择,它的接口设计合理,与 Golang/MongoDB/bson 适配的也做的不错。然而这个库长期处于无人看管的状态,有一大堆让人难以忍受 bug,其中我们遇到的就有不少:
  • 发布了文章2019-09-03
    网络游戏中玩家数据的处理
    背景 网络游戏中最重要的数据莫过于玩家在游戏的过程中产生的数据。 可以简单的分成两类: 存档数据 过程记录数据 第一类数据主要是类似角色『基础』信息,背包、技能、任务,以及所有(或者部分)玩家共有的王国、地图、联盟等信息。第二类主要是类似『日志』信息一...
  • 发布了文章2019-09-03
    Go map 的特殊特性
    迭代 map 和 slice 等容器的时候,不可使用临时变量的地址!简单的说,这个obj使用的是同一个地址,如果将此变量的地址保存起来,那么将是一个灾难。
  • 发布了文章2019-09-03
    Go maps in action 翻译
    hash table 可能是计算机科学领域最重要的一种数据结构,不同的实现方式会有不同的特性,但通常来说都会提供快速查找、增加和删除的操作。Go 内置了一个名为 map 的 hash table。