• 有点意思了. 感谢分享.

  • Golang CLOSE WAIT 分析 at 2020年04月15日

    感谢, 非常好.

    1. 区取目标文件列表
    2. 处理目标文件
    3. 监视目标文件的变更并重新处理

    推荐 github.com/saracen/walker / github.com/fsnotify/fsnotify

    walker 扫描路径下的文件, 找到你想要处理的文档文件 fsnotify 可以随后监视文档有没有被更新

    以前做了个工作, 监视指定路径下所有子目录的文件, 自动发布到某平台.........

  • 好文章.

    最近在尝试优化 flatbuffers 的 go 编码器, 正在学习内存相关, 感谢.

  • 这个很好, 也很重.

    直接用 TOML 或 YAML 都可以. 我用 github.com/tsingson/multiconfig 这个轻量一些, JSON / TOML / 环境变量 都支持.

  • Go 高级并发 at 2020年02月26日

    这个高级, 赞. singleflight 这个意思, 准备试一下. 之前一直用 SUB/PUB, 有些问题.

  • Go 1.14 正式发布啦! at 2020年02月26日

    cool

  • 赞.

  • GoCN 每日新闻 (2020-02-24) at 2020年02月25日

    那得好好写一写了, 哈哈

  • GoCN 每日新闻 (2020-02-24) at 2020年02月25日

    谢谢收录 goim 中的 watchOps 在监听什么?

  • 纯 golang 跨平台交叉编译不错, 带 cgo 进行交叉编译, 要看情况.

  • Go 编程语言规范【译】 at 2020年02月20日

    应该说 default 是保留字, 但是

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        defaut := "tsingson"
        fmt.Println(defaut)
    
    }
    
    

    这个是可以运行的.......

    是否可以说, 有些保留字只是建议, 实际上可以用?

  • 应该加一个专栏, 👍

  • GoCN 每日新闻(2020-01-08) at 2020年01月09日

    <p>cpu 泄露文章中的彩蛋: &nbsp;<span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">"docker.for.mac.localhost"</span></p>

  • <p>标题很好..............</p>

  • <p><br></p><p><br></p><p>可以试一下这个库 &nbsp;<span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, " courier="" new",="" monospace;="" font-size:="" 13px;="" background-color:="" rgb(245,="" 245,="" 245);"="">github.com/processout/grpc-go-pool</span></p><p><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, " courier="" new",="" monospace;="" font-size:="" 13px;="" background-color:="" rgb(245,="" 245,="" 245);"=""><br></span></p><p><font color="#333333"><span style="caret-color: rgb(51, 51, 51);">但在使用这个库时, 建议在 gRPC 客户调用服务端时, 加上 grpc.WaitForReady(true) 这个参数.</span></font></p><p><font color="#333333"><span style="caret-color: rgb(51, 51, 51);"><br></span></font></p><p><font color="#333333"><span style="caret-color: rgb(51, 51, 51);">例如: &nbsp;&nbsp;</span></font><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">result</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">, </span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">er1 </span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">:= </span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">e</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">.xxxGrpc</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">Client</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">.CallHello</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">(</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">ctx</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">, </span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">in</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">, </span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">grpc</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">.</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">WaitForReady</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">(</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">true</span><span style="color: rgb(51, 51, 51); font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; background-color: rgb(245, 245, 245);">))</span></p>

  • 什么时候写程序的, 也标题党了?.................

    就是 golang 的基本写法, 什么时候变成高级了.................... golang 说实话, 在开发语言本身上, 即没有语法糖 ( 也有, 很少语法糖), 也没有高级写法, 更没有黑魔法, 可能说是即简单又无趣. golang 用时间长了, 时间精力都放在业务/算法上, 加上 golang 的 pprof 这类工具链完整而基本算是足够用, go 写的程序在测试/调优上也挺无趣: 花时间好好监测各指标前后变化, 找到优化点, 是可以预期的..........也算是无趣的一点.

  • orm问题 at 2019年09月14日

    看情况吧

    如果是 CRUD boy , 数据库只是个带简单约束的存储单元, 那一般来说, 表字段与结构体基本一致. 但如果数据库中包含有业务逻辑比如触发器/存储过程甚至细粒度的权限控制的话, 那么数据库表 ( 包括 table / view 或 returns sets of table......... 的存储过程或数据库函数....... ) 与结构体会有比较大差异..............

    简单来说, 看是什么数据库, 数据库在整个技术实现架构中是什么业务实现担当.......


    举个最简单的例子:

    某个业务要求, 数据库中的某个 table 的记录, 永远不能清除 也就是永远不能执行 delete 这个 SQL 指令, 代替指令是 update ....... set deleted = true , deteted_datetime=now().............

    换个方式说, table 中有两个字段 deleted 是一个 bool 字段, 默认为 false , 当 update deleted = true 时表示该条记录对于业务来说, 是一条被删除掉的记录, 但这条记录本身只是被标记为 删除, 而继续保存在 数据库中

    这样的情况下

    go 的结构体不会有 deleted 这个字段, 但数据库对应表上有这个 deleted 字段, 当然了, deleted_datetime ( 字段类型 timestamp ) 这样的字段也是同理

    不过, 我上面说的这个, 多数 ORM 是不支持的. 所以, 只是个大致的举例..................................... 说明 go 结构体与 数据库的表结构, 字段可能不一致.


    当然了, 我说的这个小例子, 可能有很多现实问题, 或者变通解决方案, 就不一一展开了.

    以上, 祝愉快.

  • GoCN每日新闻(2019-08-20) at 2019年08月20日

    用 certmagic 支持 HTTPS, 一个非典型示例, https://juejin.im/post/5d4ad432e51d453c12504dc1

  • http接口调试 at 2019年08月19日

    md 文档为主, 同时提供 cli 进行接口测试.

    1. HTTP 与 非 HTTP 都尽量提供 cli ( 带与后台对应匹配的版本号)
    2. Markdown 文档能把接口协议/参数与业务说清楚
    3. cli 可执行文件一是对照了接口文件 ( 会打印输入/输出所有业务字段, 以及 HTTP 其他字段, 包括 http header ) , 二是 cli 有时也供给运维查问题 ( 测试业务数据, 测试帐号, 以及对应服务端各日志的 transactionID .......... )
    4. 有时, cli 也会扩展成为一些半自动化测试工具或一些辅助工作, 比如批量开户, 哈哈

    不用 swagger , 避免不必要暴露业务相关的接口描述 不用 word, 这个比较难做版本管理, 当然, md 转成 word 或 pdf 很容易......... 不用 wiki , 和 swagger 一样, 有些业务接口, 只限某些人员知道, 二是, wiki 的版本管理与权限管理, 对小团队来说, 麻烦. 但版本管理工具不一样, 权限, 加密都是一个方案, 简单一些

    就这样, 祝愉快.

    .

  • GoCN每日新闻(2019-08-10) at 2019年08月10日

    go-spring 这得多爱 java , 多爱 spring 啊.....................

    前两天还有一个 goa, 仿写了 nodeJS 的 koa 今天看到 spring 的仿写..........

    而有些商用项目, 却在做利于工程化的取舍, 或取高性能, 或取可维护性, 不一而足, 微服务扩大化, 新出大而全的全家桶有减少的趋势....

    比如 B 站开源出来的代码,垂直业务的拆分与存储/缓存/应用/前端...等分层, 看起来简单却在可维护性, 可读性上大做文章

    看着这些不同的方向, 很是有趣.

    开源的世界, 万家灯火.......

  • 把服务器当成单点就好啦, 有必要通过客户端检查多个服务实例吗?

    把反向代理的健康检查代码/逻辑, 放到客户端??

  • GoCN每日新闻(2019-07-05) at 2019年07月05日

    关于 try 的公开信, 说得挺有道理的.

  • 用go-micro的好处? at 2019年06月11日

    分布式与集群, 都是为了解决大容量访问的解决方案之一. 例如说, 单机一百万并发, 那一千万并发时如何处理? 那就部署 10 台单机吧.

    那如果服务器中的服务作了拆分, 比如说

    客户端<--------> 应用服务器 (1 台) <------>业务服务器 (1 台)

    那可以这么玩

    客户端<-------> LB ( 负载均衡/分流) <------> 应用服务器 (10 台) <----(1:1 对应)---> 业务服务器 (10 台)

    这样有点浪费了

    这时, 就用上 register/discovery 注册/发现, 就像 consul

    用来做应用服务器与业务服务器之间按一定规则进行对应起来, 尤其是在业务访问时爆涨时, 可以自由增加服务器, 在业务访问量下降时, 可以把一些服务器退租--------> 这样就节省了总体成本----> 同时, 由于 register / discovery 存在, 配置起来也就有了更多好处.

    就这样.

    祝愉快........

  • 题主用的是 echo , 应该查一下 echo 中的代码.

    "标准" net/http 库是 OK 的