Golang
文章平均质量分 64
asgdwert
这个作者很懒,什么都没留下…
展开
-
Request Proxy总结
接收端 请求体按Method、Url、Header、Body排序。 需要用channel来作为超时判断时,直接把内容也通过channel传递,因为已经有了消耗,而且用全局变量会导致超时后协程中执行成功,改变全局变量的值。 cmd := exec.Command("/bin/sh", "-c", reqParam.Arg) cmdResult := make(chan cmdOutput, 1) go func() { cmdData, cmdErr := cmd.CombinedOutput原创 2022-01-19 12:28:23 · 2616 阅读 · 0 评论 -
指定可写缓冲区大小
指定可写缓冲区大小 代码实现 type truncateBuffer struct { buf []byte } func newTruncateBuffer() *truncateBuffer { return &truncateBuffer{buf: make([]byte, 0, 1024*1024)} } func (b *truncateBuffer) Write(p []byte) (n int, err error) { pLen := len(p) bLen := len原创 2022-01-19 11:37:03 · 221 阅读 · 0 评论 -
面经与八股文汇总
垃圾回收 https://www.jianshu.com/p/8b0c0f7772da 出现概率:100% 问题 回收流程,对比其他语言的垃圾回收机制 三色回收有没有stw,什么是stw,几次、出现在什么时候 写屏障什么玩意儿 GPM 调度和CSP模型 https://www.jianshu.com/p/36e246c6153d 出现概率: 100%,x牛、x哈游、问得都非常详细、其他公司只要说出过程就完事 问题 GPM分别是什么、分别有多少数量 协程的结构体 怎么抢占、怎么调度、本地、全局队列 解原创 2021-09-17 00:50:33 · 801 阅读 · 0 评论 -
剑指offer-Golang实现
package main import ( "container/heap" "container/list" "math" "sort" "strconv" "strings" ) func main() { } //03:数组中重复的数字 func findRepeatNumber(nums []int) int { if nums == nil { return -1 } var tmp int for i := 0; i < len(nums); i++ {原创 2021-09-10 13:26:23 · 291 阅读 · 0 评论 -
网络协议笔记
网络协议 TCP与UDP的区别 TCP传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 UDP用户数据报协议(User Datagram Protocol)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。 TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流,通信之后关闭连接。 UDP协议需要自己完成丢包重发、消息排序的工作。 TCP是面向流的协议,接收方\发原创 2021-07-05 13:56:39 · 67 阅读 · 0 评论 -
Go基础知识点
Go基础知识点 :=简写不可用于声明全局变量,只能用于func内。 函数返回参数为一个且不带参数名,可以不写括号。返回参数超过一个或者带参数名则需要用括号扩起+return返回;返回参数不带参数名称时必须显示返回。 select中每个 case 必须是一个通信操作,要么是发送要么是接收;如果有同时多个case去处理,比如同时有多个channel可以接收数据,那么Go会伪随机的选择一个case处理(pseudo-random)。如果没有case需要处理,则会选择default去 处理,如果default ca原创 2021-07-04 17:04:17 · 120 阅读 · 0 评论