计算机组成基本知识复习

计算机分类:超级计算机(天河二号、神威 太湖之光)、大型计算机、服务器、工作站、微型计算机 计算机体系与结构:现在计算机都是冯诺依曼机(输入输出设备、存储器、计算器、控制器),现代cpu=存储器+计算器+控制器 cpu频率:频率指的是每秒钟的次数,比如:蜜蜂每秒钟翅膀震动400次,蝴蝶每秒钟20次,而我们人类所能分辨的声音频率是200到2W,所以可以听到蜜蜂的声音,而不能听到蝴蝶的声音。同理,cpu的性能取决于它的频率。 计算机层次与编程语言:翻译型语言(GoLang、C/C++、Objecti...阅读全文

简书 2020-06-09 09:32:45 魂之挽歌w

31. 说说 Go 语言中的空接口

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. 什么是空接口? 空接口是特殊形式的接口类型,普通的接口都有方法,而空接口没有...阅读全文

Segmentfault 2020-06-10 21:32:33 Python编程时光

参数校验错误信息中文处理

在上一节我们介绍到,gin可以使用ShouldBind方法把参数绑定到结构体,但是没有介绍到参数校验的方式,这节我们来介绍参数校验和校验失败后转换成中文返回前端。 1.数据校验 下面我们开始一个简单的例子: 在根目录的requests目录下新建一个test_request.go package requests //测试请求结构体 该结构体定义了请求的参数和校验规则 type TestRequest struct { Username string `form:"username" bindin...阅读全文

Segmentfault 2020-06-10 17:32:40 潇尘渊

gin请求参数处理

本章介绍Gin框架获取请求参数的方式 1.获取Get 请求参数 Get请求url例子:/path?id=1234&name=Manu&value=111 获取Get请求参数的常用函数: func (c *Context) Query(key string) string func (c *Context) DefaultQuery(key, defaultValue string) string func (c *Context) GetQuery(key string) (string, bo...阅读全文

Segmentfault 2020-06-10 16:32:35 潇尘渊

golang多线程之精巧

遇到一个数据查找问题,不算很难,但是使用golang的context包和goroutine相关内容来实现令人无比舒适,下面看题目: 假设有一个超长的切片(其他语言的同学理解为数组即可),切片的元素类型为int,切片中的元素为乱序排列。限时5秒,使用多线程查找切片中是否存在给定值,在找到目标值或者超时后立刻结束所有的查找任务。 下面来演示解决方法,首先进行一点点背景介绍,go对多线程进行了协程封装(goroutine),goroutine间数据通讯建议使用通道(channel,一种可以有缓冲的队列...阅读全文

Go语言实战教程 Golang仿小米商城项目实战视频教程

Golang仿小米商城项目涉及内容:大型企业级项目架构设计、MVC前后端API接口功能分组、用户RBAC权限管理(不同角色用户登录后台显示不同菜单,涉及角色、权限、用户的增删改查以及关联)、轮播图管理(golang动态生成缩略图)、商品分类管理(多级分类关联)、商品管理(商品类型、商品属性、商品图库、商品颜色、商品关联商品、商品关联分类、商品搜索、商品异步ajax排序、商品ajax异步修改数量、商品详情wysiwyg-editor的使用、商品管理中动态生成商品属性表单)、会员管理(登录、注册、发...阅读全文

Golang内置函数

func append(slice []Type, elems ...Type) []Type # 增加0到n个元素到slice中,返回新的slice,注意第一个参数不能是指针类型 intslice := make([]int, 0) intslice = append(intslice, 1) intslice = append(intslice, 2) //intslice : [1,2] func copy(dst, src []Type) int # 用于将源slice的数据(第二个参数...阅读全文

简书 2020-06-08 21:32:44 也疯狂

51cto 微职位 Golang开发工程师

51cto 微职位 Golang开发工程师51cto 微职位 Golang开发工程师51cto 微职位 Golang开发工程师51cto 微职位 Golang开发工程师51cto 微职位 Golang开发工程师51cto 微职位 Golang开发工程师链接:https://pan.baidu.com/s/1hGxHjjmIrt_vLCe8YZh0hQ提取码:2b65复制这段内容后打开百度网盘手机App,操作更方便哦阅读全文

简书 2020-06-08 21:32:43 花开月圆_061b

golang之panic/defer/recover

defer 在函数返回之前, 调用defer函数的操作; 函数内可以有多个defered函数, 但是这些defered函数在函数返回时遵守后进先出的原则 函数命名的返回值跟defered函数一起使用,,函数的返回值有可能被defer更改。 package main import "fmt" func main() { fmt.Println(f()) //输出 3 fmt.Println(g())//输出 5 fmt.Println(h())//输出 1 } func f() (rint) { ...阅读全文

简书 2020-06-08 21:32:43 10xjzheng

开源游戏服务器框架

有哪些开源游戏服务器框架,值得学习呢。基于node.js 、java、C#、golang 、c++、python 等技术栈有各种各样的游戏框架。 本文收集一些比较常用的 github上star和fork有一定数量的较为完整的框架 skynet 云风大神的框架这个基本上使用很多的, c+lua的框架。skynet只能算是网络层的轮子但是因为其众多的用户还是很不错的 https://github.com/cloudwu/skynet A lightweight online game framewo...阅读全文

简书 2020-06-08 21:32:43 xzhuan

golang list用法笔记

依赖 import ( "container/list" "fmt" ) 遍历 go的list也是用双向循环链表实现的,在尾部追加用PushBack() // 声明链表 l := list.New() // 数据添加到尾部 l.PushBack(4) l.PushBack(5) l.PushBack(6) // 遍历 for e := l.Front(); e != nil; e = e.Next() { fmt.Printf("%v\n", e.Value) } 删除元素 删除使用list.R...阅读全文

简书 2020-06-08 21:32:43 疯狂的小蚂蚁go

Golang文件写入的四种方式

Golang 中关于文件写入的方法很多 简单覆盖式文件写入 常规文件写入 带有缓冲区的文件写入 复制操作的文件写入 1. 简单覆盖式文件写入 特点 : 操作简单一个函数完成数据写入 新内容覆盖旧的内容 操作的文件不存在的时候会自动创建 使用Golang的标准包 io/ioutil 函数参数说明 : filename 操作的文件名 data 写入的内容 perm 文件不存在时创建文件并赋予的权限,例如 : 0666 func WriteFile(filename string, data []by...阅读全文

简书 2020-06-08 21:32:42 楚江云

为什么容器内存占用居高不下,频频 OOM

最近我在回顾思考(写 PPT),整理了现状,发现了这个问题存在多时,经过一番波折,最终确定了元凶和相对可行的解决方案,因此也在这里分享一下排查历程。 时间线: 在上 Kubernetes 的前半年,只是用 Kubernetes,开发没有权限,业务服务极少,忙着写新业务,风平浪静。 在上 Kubernetes 的后半年,业务服务较少,偶尔会阶段性被运维唤醒,问之 “为什么你们的服务内存占用这么高,赶紧查”。此时大家还在为新业务冲刺,猜测也许是业务代码问题,但没有调整代码去尝试解决。 在上 Kube...阅读全文

Segmentfault 2020-06-10 16:32:35 煎鱼

重新认识REDIS

重新认识Redis谈到数据,大多数业务数据经常被存储在传统数据库上,而这些数据库,包含SQL和NoSQL,都是以磁盘为介质的,这也就意味着磁盘IO是数据库的一大瓶颈。比方说,一些高并发业务,比如秒杀活动,实时股票/金融计算服务,如果只用数据库,那么必定会出现数据库的查询速度远远满足不了实际业务的需求速度的情况,这本质上也是由硬件规律决定的,毕竟RAM的速度要远远大于磁盘速度。所以很多时候,我们往往需要在业务和底层存储之间加多一个缓存层,这个缓存层,可以程序自己实现加载在内存的缓存,当然也可以用现...阅读全文

Go语言中文网 2020-06-08 18:52:05 Anderson-Lu

Go 调度模型 GPM

GPM 模型 [TOC] 参考:深入Golang调度器之GMP模型 前言 在了解 Go 的 gorutine 时,我们还是得先复习下,并发和并行的区别: 并发:同一段时间执行多个任务(你同时和两个女朋友聊天)。 并行:同一时刻执行多个任务(你和你朋友都在和你女朋友聊天)。 在单核处理器上,通过多线程共享CPU时间片串行执行(并发非并行)。而并行则依赖于多核处理器等物理资源,让多个任务可以实现并行执行(并发且并行)。 一、GPM的基本流程 1.1 GPM的含义 G,表示一个 goroutine,即...阅读全文

Segmentfault 2020-06-10 14:32:35 Diuyon

带你学够浪:Go语言基础系列 - 8分钟学复合类型

★ 文章每周持续更新,原创不易,「三连」让更多人看到是对我最大的肯定。可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ” 对于一般的语言使用者来说 ,20% 的语言特性就能够满足 80% 的使用需求,剩下在使用中掌握。基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都会覆盖,目的是带你快跑赶上 Golang 这趟新车。 Hurry up , Let's go ! 前面我们学习过 Golang 中基础数据类型,比如内置类型 int string ...阅读全文

掘金 2020年06月07日 柠檬橙

gin的控制器与路由

1.概述 路由是一个过程,指的是一个http请求,如何找到对应的处理器函数(也可以叫控制器函数),Gin框架的路由是基于httprouter包实现的。 控制器是在路由完成了URL检测和路由检测之后,路由器会分发请求到对应的路由地址,这也是应用请求的生命周期中最重要的一个环节。 在这一步骤中,完成应用的业务逻辑及数据返回。 2.路由定义 2.1.http请求方法 常用的http请求方法有下面4种: GET POST PUT DELETE 2.2.url路径 gin框架,url路径有三种写法: 静态...阅读全文

Segmentfault 2020-06-10 10:32:34 潇尘渊

gin项目配置

1.概述 项目配置是整个项目中很重要的一部分,一般项目的配置有数据库配置,应用配置(地址,端口等),缓存配置,第三方扩展的配置,中间件配置等等,可见配置在一个项目中的地位是很重要的,但是,gin中没有提供相关的配置管理的组件,我们可以使用go的第三方包来做配置管理,集成到gin中。 常用的第三方包有: ini yaml viper .... 本教程主要讲解ini,其他的请执行Google 2.ini的使用 目录结构我们使用前面推荐项目结构 安装gopkg.in/ini.v1 go get gop...阅读全文

Segmentfault 2020-06-10 07:32:34 潇尘渊

项目结构设置

1.概述 实际项目业务功能和模块会很多,我们不可能把所有代码都写在一个go文件里面或者写在一个main入口函数里面;我们需要对项目结构做一些规划,方便维护代码以及扩展。 Gin框没有对项目结构做出限制,我们可以根据自己项目需要自行设计。 2.项目结构 有视图模板 ├── conf #项目配置文件目录 │ └── config.toml #大家可以选择自己熟悉的配置文件管理工具包例如:toml、xml等等 ├── controllers #控制器目录,按模块存放控制器(或者叫控制器函数),必要的时...阅读全文

Segmentfault 2020-06-09 22:32:33 潇尘渊

gin快速入门

1. 介绍 Gin 是一个用 Golang编写的 高性能的web 框架, 由于http路由的优化,速度提高了近 40 倍。 Gin的特点就是封装优雅、API友好。 Gin的一些特性: 快速基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。 支持中间件传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB。 Crash 处理Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 ...阅读全文

Segmentfault 2020-06-09 21:32:33 潇尘渊