- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 docker容器指定ip,造成的网络不能访问的问题
使用VMware软件安装ubuntu 16.04版本。在docker-compose.yaml文件中指定容器ipversion: '2'networks: byfn: ipam: config: - subnet: 172.19.0.0/16 gateway: 172.19.0.1services: zookeep...
2019-07-04 17:00:39 4509 1
原创 【golang】获取本机IP和外网IP
获取本机IP// 获取本机网卡IPfunc getLocalIP() (ipv4 string, err error) { var ( addrs []net.Addr addr net.Addr ipNet *net.IPNet // IP地址 isIpNet bool ) // 获取所有网卡 if addrs, err = net.Interfa...
2019-03-14 10:20:15 7292
转载 【MySQL】中的乐观锁与悲观锁
为什么需要锁在并发环境下,如果多个客户端访问同一条数据,此时就会产生数据不一致的问题,如何解决,通过加锁的机制,常见的有两种锁,乐观锁和悲观锁,可以在一定程度上解决并发访问。乐观锁乐观锁,顾名思义,对加锁持有一种乐观的态度,即先进行业务操作,不到最后一步不进行加锁,"乐观"的认为加锁一定会成功的,在最后一步更新数据的时候在进行加锁,乐观锁的实现方式一般为每一条数据加一个版本号,具体流程...
2019-03-08 17:59:23 2232
转载 【golang】逃逸分析
写过C/C++的同学都知道,调用著名的malloc和new函数可以在堆上分配一块内存,这块内存的使用和销毁的责任都在程序员。一不小心,就会发生内存泄露,搞得胆战心惊。切换到Golang后,基本不会担心内存泄露了。虽然也有new函数,但是使用new函数得到的内存不一定就在堆上。堆和栈的区别对程序员“模糊化”了,当然这一切都是Go编译器在背后帮我们完成的。一个变量是在堆上分配,还是在栈上分配,...
2019-03-04 13:59:19 1438 1
转载 c++11新特性
=default,=delete如果你自行定义了一个构造函数,那么编译器就不会再给你一个默认拷贝构造函数。如果你强制加上=default,就可以重新获得并使用默认的拷贝构造函数。C++ 11中右值引用理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是...
2019-02-26 10:16:48 156
原创 win10 摄像头启动不了
1.检查摄像头驱动是否安装。通过电脑-》设备管理器查看2.驱动这些都安好,但是还是不能使用摄像头,可能是由于Win10系统,对于隐私的保护造成的。可以通过设置中的相机隐私设置,打开相关权限...
2019-02-23 17:41:59 9929
转载 Go线程实现模型MPG
M指的是Machine,一个M直接关联了一个内核线程。由操作系统管理。 P指的是”processor”,代表了M所需的上下文环境,也是处理用户级代码逻辑的处理器。它负责衔接M和G的调度上下文,将等待执行的G与M对接。 G指的是Goroutine,其实本质上也是一种轻量级的线程。包括了调用栈,重要的调度信息,例如channel等。P的数量由环境变量中的GOMAXPROCS决定,通常来说它是和核心...
2019-02-18 11:00:00 1840 2
转载 【golang】channel总结
· 给一个 nil channel 发送数据,造成永远阻塞· 从一个 nil channel 接收数据,造成永远阻塞· 给一个已经关闭的 channel 发送数据,引起 panic· 从一个已经关闭的 channel 接收数据,立即返回一个零值...
2019-02-14 16:43:38 294
转载 【golang】方法的结构指针接收者和结构值接收者
结构体(1)结构指针接收者,顾名思义,会在方法内部改变该结构内部变量的值; (2)结构值接收者,在方法内部对变量的改变不会影响该结构。 package mainimport "fmt"type My struct { num int}func (m My) AddOne() { m.num++}func (m *My) AddTwo() { m.num += ...
2019-02-14 15:06:15 322
转载 【golang】go-echarts可视化的第三方库
在 Golang 这门语言中,目前数据可视化的第三方库还是特别少,go-echarts 的开发就是为了填补这部分的空隙。Echarts 是百度开源的非常优秀的可视化图表库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。也有其他语言为其实现了相应语言版本的接口,如 Python 的 pyecharts,go-echarts 也是借鉴了 pyecharts 的一些设计思想。http:...
2019-02-11 09:50:53 3272
转载 【golang】垃圾回收机制
常见 GC 算法趁着这个机会我总结了一下常见的 GC 算法。分别是:引用计数法、Mark-Sweep法、三色标记法、分代收集法。1. 引用计数法原理是在每个对象内部维护一个整数值,叫做这个对象的引用计数,当对象被引用时引用计数加一,当对象不被引用时引用计数减一。当引用计数为 0 时,自动销毁对象。目前引用计数法主要用在 c++ 标准库的 std::shared_ptr 、微软的 C...
2019-02-01 17:29:45 166
转载 回调机制
//定义主函数,回调函数作为参数function A(callback) { callback(); console.log('我是主函数'); }//定义回调函数function B(){ setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作 }//调用主函数,将函数B传进去A(B);...
2019-02-01 15:29:18 149
原创 【golang】每隔几分钟执行一个函数可以这样做
使用定时器 使用这种方式 go function()func function() { // TODO 具体逻辑 // 每5分钟执行一次 time.AfterFunc(5*time.Minute, function)}
2019-02-01 14:42:02 10164 5
转载 【golang】中代码"0123456789ABCDEF"[0]
表达式”0123456789ABCDEF”[0]是一个常用的技巧,它可以快速将一个数字转换为16进制字符。”0123456789ABCDEF”是一个字符串字面量,类型是char[17](在C中)或者const char[17](在C++中),转换后的指针类型分别为char*和const char*,因此”0123456789ABCDEF”[0]就是第0个元素’0’。这个技巧常常用在进制转换...
2019-02-01 10:37:14 1863
原创 golang: 详解interface和nil
package mainimport ( "fmt" "reflect")type People interface { Show()}type Student struct{}func (stu *Student) Show() {}func live() People { var stu *Student return stu}func main() ...
2019-01-30 18:09:42 355
原创 golang在遍历slice中的坑
package mainimport "fmt"func main() { pase_student()}type student struct { Name string Age int}func pase_student() { m := make(map[string]*student) stus := []student{ {Name: "zhou",...
2019-01-30 16:10:35 8741
转载 MySQL数据库索引为什么使用B+数
为何选择用B+树做索引而不用B-树或红黑树B+ 树只有叶节点存放数据,其余节点用来索引,而 B- 树是每个索引节点都会有 Data 域。所以从 InooDB 的角度来看,B+ 树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上。MySQL如何衡量查询效率呢?主要是通过磁盘 IO 次数。 B- 树...
2019-01-30 15:09:56 739
原创 golang排序
golang归并排序 package mainimport "fmt"func main() { a := []int{8, 6, 5, 4, 3, 2, 1} mergeSort(a, 0, len(a)-1) fmt.Println(a)}func mergeSort(a []int, l, r int) { if l >= r { // 必须要有=,只有一个...
2019-01-30 10:14:03 305
转载 Mysql数据库MyISAM与InnoDB
推荐: Innodb MyISAM和InnoDB引擎的区别? 两者之间的区别:MyISAM 不支持外键,而 InnoDB 支持 MyISAM 是非事务安全型的,而 InnoDB 是事务安全型的。 MyISAM 锁的粒度是表级,而 InnoDB 支持行级锁定。 MyISAM 支持全文类型索引,而 InnoDB 不支持全文索引。 MyISAM 相对简单,所以在效率上要优于 Inn...
2019-01-29 20:21:11 305
转载 Golang Context分析
Context背景 和 适用场景golang在1.6.2的时候还没有自己的context,在1.7的版本中就把golang.org/x/net/context包被加入到了官方的库中。golang 的 Context包,是专门用来简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。比如有一个网络请求Request,...
2019-01-28 20:02:25 399
转载 golang map遍历随机的问题
map底层是hash表, 然后扩容缩容会发生rehash, 顺序会发生变化,但是没有扩缩容的时候,顺序是有保证的,但是golang为了让程序员不依赖这种不可靠的保证,就干脆遍历的时候加入随机数,然后不管什么时候遍历,顺序都是不保证的...
2019-01-28 14:32:39 2000
转载 Mysql的两种引擎的区别
Innodb引擎概述Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) ...
2019-01-23 10:33:24 705 1
转载 go如何获取系统层面的信息 go如何获取系统层面的信息吗,像top命令那样的。尽量不要调用shell获取
https://github.com/shirou/gopsutil
2019-01-23 10:03:48 1196
转载 go channel的用法总结
这篇文章总结了channel的10种常用操作,以一个更高的视角看待channel,会给大家带来对channel更全面的认识。在介绍10种操作前,先简要介绍下channel的使用场景、基本操作和注意事项。channel的使用场景把channel用在数据流动的地方:消息传递、消息过滤 信号广播 事件订阅与广播 请求、响应转发 任务分发 结果汇总 并发控制 同步与异步 ....
2019-01-22 09:44:46 6273 3
转载 go数据结构
链接:https://github.com/emirpasic/godsGoDS (Go Data Structures). Containers (Sets, Lists, Stacks, Maps, Trees), Sets (HashSet, TreeSet, LinkedHashSet), Lists (ArrayList, SinglyLinkedList, DoublyLinke...
2019-01-17 10:50:49 514
转载 Go的并发设置
现象:Go语言最大的优势就在于写高并并发的程序,能很方便的利用goroutine来充分利用系统资源,但估计你用协程写出的第一个高并发程序都没有充分的利用起CPU。最多就跑个100%,这让我几十核的CPU情何以堪啊。分析:因为Go默认情况下只用单线程。这就是说,你即使开了几百个goroutine,系统中同一时间在跑的只有一个线程,也就是一个协程。那是因为没有设置并发度。runtim...
2019-01-14 17:26:28 1649
转载 Go语言的协程中,写死循环的注意点
Go语言的协程中,写死循环的注意点:现象:在写Go的多协程程序时,出现过几次无法理解的情况。有一次,我想写一个能跑满cpu的程序,最容易想到的就是,开几个Go的协程,每个协程里写死循环。没想到,运行的时候发现,协程就只开出了一个。 另一次,我写了个程序,也是开了多个协程。因为如果不阻塞住主函数,主函数一结束,程序就会结束。所以我就在主函数结束前加了个死循环。然后就发现整个协程都被卡住...
2019-01-14 17:24:29 7169
转载 golang CSP并发模型
图中 M:是内核线程 P : 是调度协调,用于协调M和G的执行,内核线程只有拿到了 P才能对goroutine继续调度执行,一般都是通过限定P的个数来控制golang的并发度 G : 是待执行的goroutine,包含这个goroutine的栈空间 Gn : 灰色背景的Gn 是已经挂起的goroutine,它们被添加到了执行队列中,然后需要等待网络IO...
2019-01-14 10:41:28 1300
转载 golang slice
零切片就是其元素值都是元素类型的零值的切片。空切片就是数组指针不为nil,且 slice 的长度为0。nil切片就是引用底层数组指针为 nil 的 slice。操作上零切片、空切片和正常的切片都没有任何区别,但是nil切片会多两个特性,一个nil切片等于 nil值,且进行 json 序列化时其值为 null,nil切片还可以通过赋值为 nil 获得。...
2019-01-14 10:11:36 139
转载 Golang Module学习使用
原文链接:http://www.chairis.cn/blog/article/101介绍美国当地时间2018年8月24日,Go 开发团队宣布推出 Go 1.11 正式版。此版本增加了对被称作“模块(Go Modules)”的初步支持,这是 GOPATH 的替代方案,集成了对版本控制和软件包分发的支持。自从Go 1.11 推出之后,一直也没有时间去学习新版本的特性,这次就来研究一下...
2019-01-10 19:46:42 2158
原创 GOLANG 连接Mysql的时区问题
使用mysql的时间字段遇到如下两个问题1.使用go-sql-driver来连接mysql数据库,获取的时区默认是UTC +0的,与本地的东八区是有区别,在业务处理中会出现问题2.获取mysql中的日期,是string类型,需要在代码中用time.Parse进行转化解决方案:在连接的dsn中,添加parseTime=true 和loc=Local,此处的local可以换为具体的时区(As...
2019-01-10 13:42:02 2997 1
UE4使用protobuf与服务器通信
2018-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人