golang
「已注销」
https://github.com/hongweikkx
展开
-
Golang全局变量加锁的问题
如果全局变量只读取 那自然是不需要加锁的如果全局变量多进程读,多进程写,那自然是需要加读写锁的但是如果全局变量只有一个进程写,其他进程读呢? 如果采用COW的方式,写进程只是通过单次赋值的方式来更新变量,是否就可以不加锁了呢?就第三种情况而言:当然我们通过 go build -race 或者 go run -race 就会出现WARNING: DATA RACE。 但是出现 data race 就证明一定有问题么?其实核心点在于这个赋值是否是原子的。也就是说是否存在 p1 = p2 的写入时.原创 2020-08-22 07:09:39 · 4866 阅读 · 2 评论 -
golang 写入和读取pb文件
golang 读取pb文件记录一次golang 读取pb的demo定义proto文件tree 如下:.├── main.go├── output│ └── output.pb└── proto ├── test.pb.go └── test.protocat test.pb.gosyntax = "proto3";package example;me...原创 2019-10-18 20:46:12 · 3043 阅读 · 0 评论 -
golang &^ 运算符
&^ 运算符0110 &^ 1011 = 0100 1011 &^ 1101 = 0010&^ 二元运算符的操作结果是“bit clear” 若: a &^ b 的意思就是 将b中为1的位 对应于a的位清0, a中其他位不变...原创 2018-07-16 22:39:26 · 10945 阅读 · 4 评论 -
golang 线程模型
1. 基本概念M: 内核线程 P: go 代码片段所必须的上下文环境 G: go 代码片段 调度器: 管理和调度 M, P, G2. 存储容器全局M 列表: 存储所有M的一个单向链表 全局P 列表: 存储所有P的一个数组 全局G 列表: 存储所有G的一个切片 调度器的空闲M列表: 存放空闲M的单向链表 调度器的空闲P列表: 存放空闲P的单向链表 调度器的可运行...原创 2018-08-30 19:50:37 · 865 阅读 · 0 评论 -
动态规划、分治、贪心、递归
一言以蔽之: dp 和分治 之间的区别就在于是否有重叠子问题 ,如果有那就应该dp 否则就应该分治。 当然如果可以每一步都产生最优解那么就不必dp了, 贪心算法就可以了. 而递归只是一种实现算法的方法.例子 下面分别用 dp, dc(分治法), 贪心来做 leetcode 514. 自由之路 https://leetcode-cn.com/problems/freedom-trai...原创 2018-08-23 17:53:08 · 513 阅读 · 0 评论 -
golang 用函数名动态调用函数(包括变参函数)
golang 用函数名动态调用函数(包括变参函数)func main(){ ret1 := Apply(Hello, []interface{}{2,3}) for _, v:= range ret1{ fmt.Println(v) } ret2 := Apply(Format, []interface{}{"hello",44}) f...原创 2018-08-24 20:07:54 · 11223 阅读 · 0 评论 -
go get 不能从golang.org 上fetch的问题解决
问题:我用go get golang.org/x/net/ipv6时报错package golang.org/x/net/ipv6: unrecognized import path "golang.org/x/net/ipv6" (https fetch: Get https://golang.org/x/net/ipv6?go-get=1: dial tcp 119.28.87.227:...原创 2019-02-25 23:27:20 · 1913 阅读 · 0 评论