Go 技术分享
文章平均质量分 70
go 技术分享
r_martian
这个作者很懒,什么都没留下…
展开
-
分布式系统链路追踪技术
分布式链路追踪就是将一次分布式请求还原成调用链路并集中展示,比如各个服务节点上的耗时、哪台机器、每个服务节点的请求状态等。原创 2024-09-07 11:17:11 · 887 阅读 · 0 评论 -
Golang GMP调度模型
1. 背景单进程时代每个程序就是一个进程,一个程序运行完,才能进行下一个进程,串行化执行,当一个进程被IO阻塞时,CPU只能等待IO事件就绪继续执行,而不能切换到其他进程执行,造成CPU资源的浪费。多进程时代后来操作系统具备了最早的并发能力:多进程并发,当一个进程阻塞的时候,切换到其他等待的进程执行,这样就减少了CPU资源的浪费。调度cpu的算法可以保证在运行的进程都可以被分配到CPU的运行时间片。宏观上看,似乎多个进程同时运行。但新的问题就又出现了,进程拥有太多的资源,进程的创建、切换、销原创 2022-04-24 21:47:09 · 938 阅读 · 0 评论 -
【算法】二叉树层序遍历(go)
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */func levelOrder(root *TreeNode) [][]int { data := make(.原创 2022-04-17 14:35:19 · 929 阅读 · 0 评论 -
Go channel 底层结构及实现
go channel 底层数据结构解析原创 2022-04-05 09:27:09 · 2563 阅读 · 0 评论 -
Go map底层结构实现原理
map结构是一种比较常用的数据结构,存储k/v映射关系集合,根据key能够快速的查找对应的v。go的map是基于hashtable实现,冲突解决采用拉链法map 底层实现结构包含hmap和bmap两个,下面详细说一下(注go.1.17.1版本)hmap结构// A header for a Go map.type hmap struct { count int //元素个数 flags uint8 //状态标记 B uint8 .原创 2022-01-24 11:15:33 · 1270 阅读 · 0 评论 -
Docker 容器化技术初探
本文主要从以下几个方面简要介绍一下docker以及简单demo使用,并不会深入分析docker的原理等内容。一、什么是dockerDocker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包其应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,实现了应用程序与基础设施的隔离,使应用程序能够从一个计算环境快速可靠地运行到另一个计算环境,达到快速交付、测试和部署。二、docker解决什么问题原创 2021-10-11 21:48:53 · 193 阅读 · 0 评论 -
【工具】go复杂数据结构体生成
当知道一个复杂的接口返回json数据时,golang需要接收时,就需要对应的数据结构体定义,下面的链接可以快速生成,然后按需调整一下即可。https://oktools.net/json2go示例:{ "code":0, "msg":"", "data":{ "total":20, "list":[ { "name":"test1", "age":10,原创 2021-04-18 11:48:38 · 538 阅读 · 0 评论 -
Go json转struct工具
一个很好用的工具集合的web页面,包含常用的json、base64、url、hash、加密等,最重要的是页面简洁干净。名称为OKTools,地址如下:https://oktools.net/json2go这里说一下个人比较喜欢的一个工具,go语言的json转struct,当然我们也可以自己写一个,不过还是不要重复造轮子了。https://oktools.net/json2go例证说明json格式化json工具,https://www.json.cn/非常好用,不过是有广告的.原创 2021-03-01 17:31:58 · 2696 阅读 · 0 评论 -
Go gin 框架整理
目前做web api项目的语言主要有php、java、python以及go等,每种语言都有很多框架来方便我们快速构建项目,这就是框架存在的意义,有了框架,我们就不必每个项目都重写很多不必要的代码,只需要专注业务逻辑,有人说有了框架,接下来程序员只需要面向过程写代码就可以了,这话一定程度上是对,但是,如果要考虑系统业务代码的扩展性、复用性以及可维护性,在实际编码的过程中,还是要坚持OOP编程思想,及时冗余代码,以免积重难返。1 web框架梳理languageframeworkPHPl原创 2020-10-25 14:38:51 · 1718 阅读 · 0 评论 -
【深度】动态规划解决背包类问题
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法1 原理问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题最优解,再构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解动态规划在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。比如背包问题(Knapsa原创 2020-06-09 23:00:28 · 276 阅读 · 0 评论 -
Go 语言基本点总结
Go是google公司从2009年开始开发的一款静态、编译型,且自带垃圾回收和并发的编程语言Go语言在多核并发上拥有原生的设计优势,实现是基于goroutine,类似于线程,但并不是线程,可以理解为虚拟线程,运行时参与调度goroutine,并将goroutine合理的分配到每个CPU中,最大限度的使用CPU资源,多个goroutine间使用channel进行通信。1 路径说明GOROOT ...原创 2020-04-09 21:43:07 · 432 阅读 · 1 评论 -
Go mod 依赖管理
1 go modGo.mod是Golang1.11版本新引入的官方包管理工具,用于解决记录依赖包具体版本的问题,方便依赖管理,类似于(composer.json 和composer.lock文件)2 使用go mod//linuxvim /etc/profileexport GO111MODULE=on source /etc/profile//windows 建议用cmd管理员身...原创 2020-04-04 09:58:16 · 2243 阅读 · 0 评论 -
Beego 配置nginx部署服务
项目部署方式包括独立部署,supervisor部署和服务器部署独立部署即执行项目下的可执行文件supervisor部署则是将可执行文件放入supervisor的监控配置服务器部署即通过nginx或apache来转发请求到beego的监听接口(server即代理)nginx部署配置如下:server { listen 80; server_name templ...原创 2020-03-23 20:13:35 · 2710 阅读 · 0 评论 -
Beego Log日志模块配置及使用
由于首次接触beego,在使用log时,1 目录结构2 log 配置app.conf[log]log_level = 7 //debug级别log_path = logs/app.log //指定log文件名maxlines = 10 //log文件最大行数maxsize = 1024 //log文件大小限制后两项是控制log文件大小的,其中maxlines 超出后会自动生成新...原创 2020-03-22 15:21:13 · 7266 阅读 · 0 评论 -
Beego项目框架
鉴于有学习go语言的必要(其实就是项目需要),故跟着Golang tutorial series文档过了一遍基本语法,当然是不熟悉,然后做了个demo Repository (https://github.com/HelloMrShu/go_bp),最后把一个需要界面的工具重写了一下,在此记录一下,共耗时两周鉴于是公司项目,故只说核心内容,有问题私信沟通即可1 架构和流程2 目录结构基...原创 2020-03-10 18:38:55 · 644 阅读 · 0 评论 -
Go 学习入门
一 基础概括学习 首先学习基本语法结构及简单示例 主要是有个概括的理解 这里针对相关知识点写了一些demo,可以参考github地址 go 基础知识学习 二 深入学习相关技术 主要包括框架对比选型、并发goroutine实现、channel等技术三 Beego框架入门 win10下安装可能稍微复杂一点 ① 配置goroot, gopath ② github下载beego,be...原创 2020-02-28 15:34:27 · 425 阅读 · 1 评论 -
Go基础理论
1 简介go or golang, 出自google的开源编程语言主要目标是“兼具 Python 等动态语言的开发速度和 C/C++等编译型语言的性能与安全性”Go 语言是 Google 公司开发的一种静态型、编译型并自带垃圾回收和并发的编程语言。不但能访问底层操作系统,还提供了强大的网络编程和并发编程支持。Go 语言的用途众多,可以进行网络编程、系统编程、并发编程、分布式编程编译型语言...原创 2019-06-22 08:42:43 · 607 阅读 · 0 评论