随笔分类 -  Go语言

摘要:项目名称:实现一个在线聊天系统? 一、需求 1. 海量用户在线聊天系统;2. 用户登录注册;3. 根据用户ID或者Nickname搜索并添加用户;4. 动态知道好友上下线;5. 可以创建群并添加好友到群组成员;6. 可以实现一对多及一对一交流;7. 可以接收离线消息;8. 实现客户端甚至实现手机ap 阅读全文
posted @ 2019-04-13 17:46 pointerC++ 阅读(936) 评论(0) 推荐(0)
摘要:本节主要内容 1. 秒杀抢购背景2. 秒杀抢购架构设计&模块划分3. 秒杀抢购接入层实现 1. 秒杀抢购背景 (1)架构分析 电商网站架构 秒杀抢购1.0 (2)上述网站架构问题 和已有电商逻辑重度耦合 资源共享,缺乏隔离 服务缺乏限流和过载保护 MYSQL存在性能瓶颈 系统缺乏降级措施,不能及时恢 阅读全文
posted @ 2019-04-12 17:46 pointerC++ 阅读(955) 评论(0) 推荐(0)
摘要:outline 1. 秒杀抢购接入层实现2. 秒杀逻辑层实现 秒杀接入层核心功能 秒杀逻辑层核心功能 SecKill接口 /seckill?product=20&source=android&authcode=xx&time=xx&nance=xx 阅读全文
posted @ 2019-04-12 17:46 pointerC++ 阅读(620) 评论(0) 推荐(0)
摘要:主要内容: 1. ElasticSearch介绍与使用2. kibana介绍与使用 1. ElasticSearch安装 详见上节内容2. kibana安装 (1) 下载ES,下载地址:https://www.elastic.co/start(2)解压缩(3)启动kibana, ./bin/kiba 阅读全文
posted @ 2019-04-12 17:45 pointerC++ 阅读(406) 评论(0) 推荐(0)
摘要:本节内容: 1. etcd介绍与使用 2. ElastcSearch介绍与使用 1. etcd介绍与使用 概念:高可用的分布式key-value存储,可以使用配置共享和服务发现 类似项目:zookeeper和consul 开发语言:Go 接口:提供restful的http接口,使用简单 实现算法:基 阅读全文
posted @ 2019-04-07 22:50 pointerC++ 阅读(1559) 评论(0) 推荐(0)
摘要:本节主要内容: 1. 日志收集系统设计2. 日志客户端开发 1. 项目背景 a. 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 b. 当系统机器比较少时,登陆到服务器上查看即可满足 c. 当系统机器规模巨大,登陆到机器上查看几乎不现实 2. 解决方案 a. 把机器上的日志实时收集,统一的 阅读全文
posted @ 2019-04-05 18:50 pointerC++ 阅读(1668) 评论(0) 推荐(0)
摘要:本节主要内容: 1. http编程2. mysql使用 1. http编程 (1)http编程分析 Go原生支持http,import(“net/http”) Go的http服务性能和nginx比较接近 几行代码就可以实现一个web服务 关于HTTP,TCP/IP相关知识可以看系列博客 https: 阅读全文
posted @ 2019-03-09 12:29 pointerC++ 阅读(789) 评论(0) 推荐(0)
摘要:主要内容 1. Tcp编程2. redis使用 1. Tcp编程 (1)简介 Golang是谷歌设计开发的语言,在Golang的设计之初就把高并发的性能作为Golang的主要特性之一,也是面向大规模后端服务程序。在服务器端网络通信是必不可少的也是至关重要的一部分。Golang内置的包例如net、ne 阅读全文
posted @ 2019-03-05 00:18 pointerC++ 阅读(3398) 评论(0) 推荐(0)
摘要:主要内容: 1.Goroutine2. Chanel3. 单元测试 1. Goroutine Go 协程(Goroutine)(轻量级的线程,开线程没有数量限制)。 (1)进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。 B. 线程是进程的一个执行实体, 阅读全文
posted @ 2019-02-26 20:29 pointerC++ 阅读(1451) 评论(0) 推荐(0)
摘要:本节主要内容: 1. 终端读写2. 文件读写3. 命令行参数4. Json5. 自定义错误 1. 终端读写 操作终端相关文件句柄常量 os.Stdin:标准输入 os.Stdout:标准输出 os.Stderr:标准错误输出 1 package main 2 3 import ( 4 "fmt" 5 阅读全文
posted @ 2019-02-21 02:18 pointerC++ 阅读(384) 评论(0) 推荐(0)
摘要:1.反射: 定义: 反射就是程序能够在运行时检查变量和值,求出它们的类型。 可以在运行时动态获取变量的相关信息 Import ("reflect") 为什么需要反射? 想象下:如果程序中每个变量都是我们自己定义的,那么在编译时就可以知道变量类型了,但是实际中并非如此,就需要我们在运行时检查变量,求出 阅读全文
posted @ 2019-02-19 01:36 pointerC++ 阅读(522) 评论(0) 推荐(0)
摘要:本节主要内容: 1. 结构体和方法2. 接口 1. 结构体和方法 (1). 用来自定义复杂数据结构 (2). struct里面可以包含多个字段(属性) (3). struct类型可以定义方法,注意和函数的区分 (4). struct类型是值类型 (5). struct类型可以嵌套 (6). Go语言 阅读全文
posted @ 2019-02-18 02:13 pointerC++ 阅读(433) 评论(0) 推荐(0)
摘要:主要内容: 1. 内置函数、递归函数、闭包2. 数组与切片3. map数据结构4. package介绍 5. 排序相关 1. 内置函数、递归函数、闭包 1)内置函数 (1). close:主要用来关闭channel 1). close函数是一个内建函数,用来关闭channel,这个channel要么 阅读全文
posted @ 2019-02-14 01:01 pointerC++ 阅读(564) 评论(0) 推荐(0)
摘要:主要内容: 1. strings和strconv使用2. Go中的时间和日期类型3. 指针类型4. 流程控制5. 函数详解 1. strings和strconv使用 例子: 1 package main 2 3 import ( 4 "fmt" 5 "strings" 6 "strconv" 7 ) 阅读全文
posted @ 2019-02-13 13:37 pointerC++ 阅读(338) 评论(0) 推荐(0)
摘要:第一部分:基本数据类型和操作符 1. 文件名&关键字&标识符 (1)所有go源码以.go结尾 (2)标识符以字母或下划线开头,大小写敏感,比如: a. boy b. Boy c. a+b d. 0boy e. _boy f. =_boy g. _ 其中:a b e符合表示符的命名规范 (3) _是特 阅读全文
posted @ 2019-01-30 22:35 pointerC++ 阅读(402) 评论(0) 推荐(0)
摘要:一、环境搭建 见我的这篇博客 https://www.cnblogs.com/xuejiale/p/10258244.html 二、golang语言特性1. 垃圾回收 1) 内存自动回收,再也不需要开发人员管理内存 2) 开发人员专注业务实现,降低了心智负担 3) 只需要new分配内存,不需要释放2 阅读全文
posted @ 2019-01-30 01:22 pointerC++ 阅读(538) 评论(0) 推荐(0)
摘要:一、Linux环境搭建 本文搭建环境以Linux(Centos 6.5)为例,其他Linux环境相同 1. 手动安装 Go 1)下载 Go 发行版 从官方地址:https://golang.org/dl/ 上下载合适的 二进制发行版 (例如:go1.11.4.linux-amd64.tar.gz): 阅读全文
posted @ 2019-01-11 23:39 pointerC++ 阅读(416) 评论(0) 推荐(0)