Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket实现的 我要晨读

已有859人晨读

Robotgo v0.40.0对鼠标键盘操作进行了大幅度的完善,由于跨平台切换测试麻烦(合并几个平台的代码到对比上传代码都浪费了不少时间)和C代码生产效率与Go和JavaScript不在一个级别上,没有支持窗口和进程对应窗口的选择和Bounds,将在下一个版本完善,键盘操作可能在某些输入法上有些问题请切换到系统输入法(目前优先完成窗口句柄的问题,后面会解决该问题). 我要晨读

已有1081人晨读

之前看到这篇golang并发编程的两种限速方法,觉得 sleep 等待的方式不是特别好,唤醒线程的时间比较长。而且1s内的请求只能均匀的到来,如瞬间来 N 个, 那么只有一个能立刻返回,剩下的只能等待。 我要晨读

已有482人晨读

 很多年以前,当我第一次接触到ORM的时候,我就有一点疑惑:这玩意用起来倒是方便,就是模型结构得一个字段一个字段的写,非常枯燥也非常累人,而且如果表结构修改了,比如增加、减少或者修改了一个字段,就得修改模型文件。那个时候也没有想到可以从数据库中读取到目标表的表结构数据自动生成ORM需要的模型结构。直到有一天我看到一个根据模板自动生成ORM的模型文件的代码,然后我就用golang也写了这么一个玩意。完整的代码在这里。 我要晨读

已有1238人晨读

Golang使用os.Exit(code)进程退出导致当前程序退出并返回给定的状态代码。传统上,code代码为零表示成功退出,非零错误退出。 我要晨读

已有633人晨读

因项目需要使用ECB模式下的3DES算法加解密信息,golang默认只提供CBC模式,只能自己实现ECB模式。 参考https://segmentfault.com/a/11...,文章对ECB模式的DES有解释,并实现了部分DES算法样例。这里把算法补全,提供3DES算法实现。 我要晨读

已有899人晨读

为什么 访问 localhost:9090 就能打印出 Hello world 呢?这背后究竟发生了呢?下面我们就一层一层揭开这个面纱! 1 追踪 http.HandFunc函数,发现它调用了 我要晨读

已有677人晨读

Go并发原语使得构建流式数据管道,高效利用I/O和多核变得简单。这篇文章介绍了几个管道例子,重点指出在操作失败时的细微差别,并介绍了优雅处理失败的技术。 我要晨读

已有572人晨读

Go 语言有一些我们常说的「坑」,有不少优秀的文章解释讨论过这些「坑」。这些文章所讨论的东西非常重要,尤其对 Go 的初学者来说,时不时就有人掉进这些小「坑」里。 我要晨读

已有688人晨读

golang的defer优雅又简洁, 是golang的亮点之一。defer在声明时不会立即执行,而是在函数return后,再按照先进后出的原则依次执行每个defer,一般用于释放资源、清理数据、记录日志、异常处理等。 我要晨读

已有640人晨读

Reflection(反射)在计算机中表示 程序能够检查自身结构的能力,尤其是类型。它是元编程的一种形式,也是最容易让人迷惑的一部分。 本文中,我们将解释Go语言中反射的运作机制。每个编程语言的反射模型不大相同,很多语言索性就不支持反射(C、C++)。由于本文是介绍Go语言的,所以当我们谈到“反射”时,默认为是Go语言中的反射。 我要晨读

已有379人晨读

对于程序及服务的控制,本质上而言就是正确的启动,并可控的停止或退出。在go语言中,其实就是程序安全退出、服务控制两个方面。核心在于系统信号获取、Go Concurrency Patterns、以及基本的代码封装。 我要晨读

已有669人晨读

最近在做一个golang的连接池。测试过程中发现一个有趣的现象,获取的连接没有归还给连接池,那么过一段时间后该连接会自动关闭掉。猜测这跟连接池应该是没有关系的,于是再用普通的连接做了实验,即dial一个tcp连接,发送请求,然后程序进入sleep,一段时间后该连接还是会自动关闭。 我要晨读

已有758人晨读

sync.once可以控制函数只能被调用一次,不能多次重复调用。 我们可以用下面的代码实现一个线程安全的单例模式 我要晨读

已有528人晨读

进程切换只发生在内核态,两步:1 切换页全局目录以安装一个新的地址空间 2 切换内核态堆栈和硬件上下文。 另一种说法类似:1 保存CPU环境(寄存器值、程序计数器、堆栈指针)2修改内存管理单元MMU的寄存器 3 转换后备缓冲器TLB中的地址转换缓存内容标记为无效。 我要晨读

已有422人晨读

最近有人在 Gopher 的 Slack Channel 上使用 cgo,对此我感到十分担心,尤其是竟然有个组织内部打算用一个项目来展示 Go,那真是一个坏主意。对此,我曾说过很多次了,因此也许你们讨厌了我的游说,所以我想到了把它写下来并且去做。 我要晨读

已有507人晨读