- 博客(12)
- 资源 (20)
- 收藏
- 关注
转载 Golang日志库源码分析:Glog
Glog是著名google开源C++日志库glog的golang版本,具有轻量级、简单、稳定和高效等特性。 目前被用在大型的容器云开源项目Kubernetes中。CategoryOverviewUsageSource Code Readingflag.Parse()困境ReferenceOverviewGlog主要有以下特点:支持四种日志等级INFO 每
2017-07-30 17:01:38 5155
转载 MongoDB集群实战攻略
转载:入口简介MongoDB是一个开源的,基于分布式的,面向文档存储的菲关系型数据库。可以运行在Windows、Unix、OSX、Solaris系统上,支持32位和64位应用,提供多种编程语言的驱动程序。MongoDB支持的数据结构非常松散,是类似JSON的BSON格式,通过键值对的形式存储数据,可以存储复杂的数据类型。基本概念文档(document):文档是Mon
2017-07-21 13:16:58 357
转载 Linux IO模式及 select、poll、epoll详解
注:本文是对众多博客的学习和总结,可能存在理解错误。请带着怀疑的眼光,同时如果有错误希望能指出。同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用户空间和内核空间-
2017-07-21 10:04:58 219
转载 优化Go的模式
最近在优化Go项目,学习了一下Golang的调优相关内容。发现了一篇很不错的文章,翻译出来分享给大家。之前写过一篇文章《为什么SignalFx metric proxy通过Go语言开发》,这篇文章将会关注以我们的ingest服务为例,来讲述我们是如何优化Go代码的。SingalFx基于流分析和时间报警序列,例如应用程序指标,可以为时间序列数据的现代应用开发的高级监控平台(“我的应用程序
2017-07-09 15:05:44 1408 1
转载 Golang 优化之路——临时对象池
带垃圾回收的语言,虽然对于刚刚上手的程序员是友好的,但是后期随着项目变得越来越巨大,维护的内存问题也会逐渐暴露出来。今天讲一种优化内存申请的方法——临时对象池。写在前面堆还是栈?内存碎片化临时对象池结论写在前面在高并发的情况下,如果每次请求都需要申请一块用于计算的内存,比如:make([]int64, 0, len(ids))将会是一件成本很高的事情。
2017-07-09 02:20:48 775
转载 Golang 优化之路——HTTP长连接
压测发现有长连接问题,深入学习了一下。写在前面TCP 相关HTTP 包如何使用 TCP 长连接?我们的程序为啥长连接失效?如何解决问题?后续参考文献写在前面压测的是否发现服务端TIME_WAIT状态的连接很多。netstat -nat | grep :8080 | grep TIME_WAIT | wc -l 17731TIME_WAIT状态多,
2017-07-09 01:54:59 2364
转载 go的临时对象池--sync.Pool
一个sync.Pool对象就是一组临时对象的集合。Pool是协程安全的。Pool用于存储那些被分配了但是没有被使用,而未来可能会使用的值,以减小垃圾回收的压力。一个比较好的例子是fmt包,fmt包总是需要使用一些[]byte之类的对象,golang建立了一个临时对象池,存放着这些对象,如果需要使用一个[]byte,就去Pool里面拿,如果拿不到就分配一份。这比起不停生成新的[]byte,用
2017-07-08 16:01:38 529
转载 Go语言实战--并发示例-Pool
这篇文章演示使用有缓冲的通道实现一个资源池,这个资源池可以管理在任意多个goroutine之间共享的资源,比如网络连接、数据库连接等,我们在数据库操作的时候,比较常见的就是数据连接池,也可以基于我们实现的资源池来实现。可以看出,资源池也是一种非常流畅性的模式,这种模式一般适用于在多个goroutine之间共享资源,每个goroutine可以从资源池里申请资源,使用完之后再放回资源池里,以便
2017-07-08 16:00:06 676
转载 Go语言实战-- 并发示例-Runner
这篇通过一个例子,演示使用通道来监控程序的执行时间,生命周期,甚至终止程序等。我们这个程序叫runner,我们可以称之为执行者,它可以在后台执行任何任务,而且我们还可以控制这个执行者,比如强制终止它等。现在开始吧,运用我们前面十几篇连载的知识,来构建我们的Runner,使用一个结构体类型就可以。123456789//一个执行者,可以执行任何任务,但是这些任务
2017-07-08 13:56:18 594 1
转载 Go语言实战-- 通道
上一篇我们讲的原子函数和互斥锁,都可以保证共享数据的读写,但是呢,它们还是有点复杂,而且影响性能,对此,Go又为我们提供了一种工具,这就是通道。所以在多个goroutine并发中,我们不仅可以通过原子函数和互斥锁保证对共享资源的安全访问,消除竞争的状态,还可以通过使用通道,在多个goroutine发送和接受共享的数据,达到数据同步的目的。通道,他有点像在两个routine之间架设的
2017-07-03 22:20:15 2873
原创 go拾遗--使用竞争检测器标志来编译程序
go build -race **.go //使用竞争检测器标志来编译程序./example //运行程序
2017-07-03 21:25:36 289
转载 golang配置文件热更新
配置文件热更新是服务器程序的一个基本功能,通过热更新可以不停机调整程序的配置,特别是在生产环境可以提供极大的便利,比如发现log打得太多了可以动态调高日志等级,业务逻辑参数变化,甚至某个功能模块的开关等都可以动态调整。每种语言都有自己的热更新实现方式,在golang里面我看到了有人采用了一种错误的实现方式,如下:type Config struct { Test1 string
2017-07-02 23:23:24 4350 1
llvm-project-llvmorg-13.0.0-centos79-gcc11.1
2023-10-31
usql-0.7.0-linux-amd64.tar.bz2
2018-06-22
usql-0.7.0-windows-amd64 (1).zip
2018-06-22
myhttpd_muduo
2018-01-14
令牌桶算法c实现
2017-11-29
everything-curl http libcurl
2017-11-07
rar 64位最新版
2016-09-15
rarlinux下让人解压
2016-09-14
Linux Shell脚本攻略(第2版)
2016-08-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人