Golang内置函数和过程调用汇编代码分析

在Golang汇编快速指南这篇博客中,简单介绍了Golang中汇编的简单语法以及特殊之处。下面介绍Golang中的内置函数和相关操作代码的汇编实现,可以作为上篇博客的补充和实践。 汇编中过程调用的参数是通过栈来传递的,在栈上的布局如下: 参数3 参数2 参数1 <-FP 保存PC <-SP ... ... 内置函数: new, make, append package main import ( "fmt" ) type new_int int var ( gobal_1 = "this is ...阅读全文

2015-04-24 08:55:17 华子
阅读:5944 评论:0

Golang源码探索(二) 协程的实现原理

Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱, 虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底的. 这篇文章将通过分析golang的源代码来讲解协程的实现原理. 这个系列分析的golang源代码是Google官方的实现的1.9.2版本, 不适用于其他版本和gccgo等其他实现, 运行环境是Ubuntu 16.04 LTS 64bit. 核心概念 要理解协程的实现, 首先需要了解go中的三个...阅读全文

阅读:25020 评论:5

Go 系列教程 —— 17. 方法

欢迎来到 [Golang 系列教程](/subject/2) 的第 17 个教程。 ### 什么是方法? 方法其实就是一个函数,在 `func` 这个关键字和方法名中间加入了一个特殊的接收器类型。接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。 下面就是创建一个方法的语法。 ```go func (t Type) methodName(parameter list) { } ``` 上面的代码片段创建了一个接收器类型为 `Type` ...阅读全文

2018-01-22 18:00:02 polaris
阅读:29354 评论:18

解决gunicorn+gevent+django数据库高连接数问题

原文连接 引言 前段时间分享了一篇如何提高django的并发能力文章,文章的最后结论是采用gunicorn+gthread+django的方式来提高并发能力,该方法简单的说是利用的多线程。 文章也抛出了一个问题:gunicorn+gevent+django+CONN_MAX_AGE会导致数据库连接数飙升,直至占满。如果一定要利用协程的方式启动,该怎么解决这个问题呢?看了一下django源码,找到了问题的根源,写了一下解决办法,下边分享一下。 说明 还是利用上一篇文章如何提高django的并发能力...阅读全文

2019.04.12 18:22* yunsonbai
阅读:2827 评论:0

小白入坑同性交友网站github总结

小白入坑同性交友网站github总结 常用词汇及含义 1. watch 表示会持续收到该项目的动态 2. fork 复制某个项目到自己的github仓库 3. star 可以理解为点赞的个数 4. clone 将远程服务器上的源代码下载到本地 5. follow 关注你感兴趣的作者,会收到他们的动态 可以从图中看到我们可以在途中一次找到上面的几个功能的区域,但是没有follow,如果想要关注某个开发者可以直接点击他的头像进去他的主页在头像下方就可以follow某个开发者 in 关键字限制搜索范围...阅读全文

2019.04.13 12:35 _AlphaBaby_
阅读:4538 评论:0

golang channel 源码剖析

channel 在 golang 中是一个非常重要的特性,它为我们提供了一个并发模型。对比锁,通过 chan 在多个 goroutine 之间完成数据交互,可以让代码更简洁、更容易实现、更不容易出错。golang 的 channel 设计模型遵循 CSP(Communicating Sequential Processes,序列通信处理) 的设计理念。 本文将从源码角度来分析 golang 的 channel 是怎样实现的。先看一下 *channel8 给我们提供的一些特性。 1. channe...阅读全文

2019.04.14 17:26* 安佳玮
阅读:1607 评论:0

Go调度器系列(4)源码阅读与探索

各位朋友,这次想跟大家分享一下Go调度器源码阅读相关的知识和经验,网络上已经有很多剖析源码的好文章,所以这篇文章不是又一篇源码剖析文章,注重的不是源码分析分享,而是带给大家一些学习经验,希望大家能更好的阅读和掌握Go调度器的实现。 本文主要分2个部分: 解决如何阅读源码的问题。阅读源码本质是把脑海里已经有的调度设计,看看到底是不是这么实现的,是怎么实现的。 带给你一个探索Go调度器实现的办法。源码都到手了,你可以修改、窥探,通过这种方式解决阅读源码过程中的疑问,验证一些想法。比如:负责调度的是g...阅读全文

2019.04.14 15:50 947f3ccdd481
阅读:1701 评论:0

go语言实战教程之 后台管理页面统计功能开发(2)

上节内容介绍了后台管理页面统计功能开发(1),从功能介绍,到接口请求分析和归类,最后是代码设计。经过上节内容的介绍,已经将业务逻辑和开发逻辑解释清楚,本节内容侧重于编程代码实现具体的功能。当日增长数据功能、七日增长数据功能通过浏览器工具调试会发现,当日增长功能和近7日增长数据使用的请求接口相同,只是传值较为特殊。以当日用户增长请求为例,当日用户增长数据请求接口如下:/statis/user/NaN-NaN-NaN/count可见,传递的值为NaN-NaN-NaN。进而查看近七日增长数据请求。仍以...阅读全文

阅读:824 评论:0