Golang设计模式之建造者模式

建造者模式 GitHub代码链接 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。 什么是建造者模式 一个Builder类会一步一步构造最终的对象,该Builder类是独立于其他对象的。 解决的问题 主要解决在软件系统中,有时候面临一个复杂对象的创建工作,通常这个复杂对象由各个部分的子对象用一定的算法构建成。由于需求的变化,这个复杂对象的各个部分通常会出现巨大的变化,所以,将各个子对象独立出来,容易修改。 例如肯德基的点餐系统,汉堡,薯条,可乐,炸鸡是...阅读全文

简书 2020-09-26 20:32:41 ShawnLee_123

golang网络编程

1、网络编程1.1协议协议可以理解为规则,是数据传输和解释的规则,是通信双方都要遵守的规则。协议存在的意义是为了让双方更好的沟通。在双方之间被遵守的协议成为原始协议。当此协议被更多的人采用后,不断的完善,最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中。该协议就成为了一个标准协议。最初的ftp协议就是这样来的。1.2分层模型 越下面的层,越靠近硬件;越上面的层,越靠近用户。 典型协议应用层:HTTP、FTP传输层:TCP、UDP网络层:IP、ICMP、IGMP网络接口层:A...阅读全文

简书 2020-09-26 17:32:49 20190729

Golang:File 文件操作

首先,file 类是在 os 包中的,封装了底层的文件描述符和相关信息,同时封装了 Read 和 Write 的实现。 FileInfo 接口 FileInfo 接口中定义了 File 信息相关的方法。 type FileInfo interface { Name() string // base name of the file 文件名.扩展名 aa.txt Size() int64 // 文件大小,字节数 12540 Mode() FileMode // 文件权限 -rw-rw-rw- Mo...阅读全文

简书 2020-09-26 17:32:46 金刀大菜牙

安装golang编译器,并安装配置vscode支持go

1、安装golang编译器1、下载安装包官网: https://golang.google.cn/dl/目前最新的版本是1.15.2,根据个人电脑系统选择适合的golang版本 下载完根据提示安装即可,安装好了之后默认以配置环境变量2、验证安装是否成功运行-cmd ,然后输入:go version 可以显示出版本则安装成功2、安装vscode官网:https://code.visualstudio.com/直接去官网下载根据提示安装即可,安装过程很简单。1、安装vscode支持go的插件点击红色...阅读全文

简书 2020-09-26 17:32:45 hammer丶

史上最全!程序猿必须知道的学习网站,建议收藏

当你遇到困境时StackOverflow : 订阅他们的每周时事通讯和其他你感兴趣的话题Quora : 分享知识、更好地了解世界的地方Learn Anything : 策划知识图的社区,在那里可以找到学习任何东西的最佳路径devRant : 社区,在那里你可以咆哮和宣泄你的压力Codementor : 导师式社区,可以通过1对1的帮助等在同行开发人员的指导下学习新闻Hacker News : 程序员的新闻聚合,在那里礼貌为王,尝试以一篇时事通讯在你的收件箱里获取头条新闻Hacker Newsle...阅读全文

简书 2020-09-26 17:32:42 Li_Pin

Golang标准库——debug/macho

macho 包macho可以实现对Mach-O对象文件的访问。 Constants const ( Magic32 uint32 = 0xfeedface Magic64 uint32 = 0xfeedfacf MagicFat uint32 = 0xcafebabe ) Variables var ErrNotFat = &FormatError{0, "not a fat Mach-O file", nil} 如果文件不是通用二进制文件,但根据其幻数可能是精简二进制文件,则从NewFatFi...阅读全文

简书 2020-09-26 02:32:40 DevilRoshan

Python的发展史和发展趋势

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 本文分享自微信公众号 - 后场技术(opstalk),作者:大胆 一、Python发展史 Python是一种计算机程序设计语言。你可能在之前听说过很多编程语言,比如难学的C语言(语法和实现难度),非常流行的JAVA语言(尤其是现在分布式存储和服务),非常有争议的PHP(常见 WordPress 大多网站),前端HTML、JavaScripts、Node.JS、还有最近随着容器风...阅读全文

简书 2020-09-25 21:32:47 松鼠爱吃饼干

不要等离职了,才知道for select时,如果通道已经关闭会怎么样?

golang面试官:for select时,如果通道已经关闭会怎么样?如果select中只有一个case呢?问题for循环select时,如果通道已经关闭会怎么样?如果select中的case只有一个,又会怎么样?怎么答for循环select时,如果其中一个case通道已经关闭,则每次都会执行到这个case。如果select里边只有一个case,而这个case被关闭了,则会出现死循环。解释1.for循环里被关闭的通道c通道是一个缓冲为0的通道,在main开始时,启动一个协程对c通道写入10,然后...阅读全文

Segmentfault 2020-10-01 16:32:33 ilini

APP爬虫mitmproxy代理工具的安装和使用

mitmproxy 是python中的一款抓包工具mitmproxy 安装:安装mitmproxy,可以使用pip install mitmproxy直接安装,还会附带mitmdump和mitmweb这两个关联组件。mitmdump他是一种命令接,mitmweb是一种web程序mitmproxy的作用:拦截,修改,保存HTTP(S)请求支持HTTP(S)发出请求返回响应支持反向代理和透明代理命令接口对接python对HTTP请求处理mitmproxy原理:mitmproxy 启动, 默认监听在 ...阅读全文

Go语言中文网 2020-09-25 17:11:56 laical

Golang设计模式之单例模式

单例模式 GitHub代码链接 解决的问题 保证一个环境只有一个实例在运行。解决一个全局使用的类频繁的创建和销毁。 优点 内存中只有一个实例,减少内存开销 避免对资源的多重占用,比如写文件的操作 缺点 没有接口,不能继承。 代码实现 1. 懒汉模式 缺点:非线程安全,当正在创建时,如果有线程来访,Instance == nil时,会重复创建,就不是单例模式了。 type Singleton struct{} var Instance *Singleton func GetInstance() *...阅读全文

简书 2020-09-25 15:32:46 ShawnLee_123

Nacos Go 微服务生态系列(一)| Dubbo-go 云原生核心引擎探索

简介:作为微服务框架的核心引擎--注册中心,是必不可缺少的组件,市面已经有多款注册中心支持 Go 语言,应该如何选择呢?我们可以对目前主流的支持 Go 语言的注册中心做个对比。 image 近几年,随着 Go 语言社区逐渐发展和壮大,越来越多的公司开始尝试采用 Go 搭建微服务体系,也涌现了一批 Go 的微服务框架,如 go-micro、go-kit、Dubbo-go 等,跟微服务治理相关的组件也逐渐开始在 Go 生态发力,如 Sentinel、Hystrix 等都推出了 Go 语言版本,而作为...阅读全文

简书 2020-09-25 15:32:46 阿里云云栖号

VSCode 中golang(go)代码自动补全慢,5s延时解决方案

首先你要正确地安装了插件。 环境 Windows 10, GO 1.15 GOROOT=c:\go GOPATH=E:\OneDrive\code\go 问题描述 如果我们设置GO111MODULE环境变量,其值为on时自动补全很慢,其值为off时补全正常。 image.png (说明:必须要按照在图片里那样设置环境变量,不要运行命令行set; 每次改变变量需要重启VSCode) gomod肯定不能关了,怎么解决呢? 解决方法 go的自动补全靠的时gocode,我们可以gocode -debug...阅读全文

简书 2020-09-25 15:32:42 lysS4

Go中的HTTP请求之——HTTP1.1请求流程分析

来自公众号:新世界杂货铺前言http是目前应用最为广泛, 也是程序员接触最多的协议之一。今天笔者站在GoPher的角度对http1.1的请求流程进行全面的分析。希望读者读完此文后, 能够有以下几个收获:对http1.1的请求流程有一个大概的了解在平时的开发中能够更好地重用底层TCP连接对http1.1的线头阻塞能有一个更清楚的认识HTTP1.1流程今天内容较多, 废话不多说, 直接上干货。接下来, 笔者将根据流程图,对除了NewRequest以外的函数进行逐步的展开和分析(*Client).do...阅读全文

Segmentfault 2020-10-01 16:32:32 新世界杂货铺

Golang:切片的底层详解和初步使用

什么是切片 切片是 Golang 中比较特殊的数据结构,这种数据结构更便于使用和管理数据集合。简单的说,切片就是一种简化版的动态数组。因为动态数组的长度不固定,所以切片的长度自然也就不能是类型的组成部分了。切片是围绕动态数组的概念构建的,是对数组的抽象。数组虽然有适用的地方,但是数组的类型和操作都不够灵活,因此在 Go 代码中数组使用的并不是很多,而切片则使用的相当广泛,理解切片的原理和用法相当重要。 切片的内部结构 我们先来看看切片的结构定义,即 reflect.SliceHeader: ty...阅读全文

简书 2020-09-25 01:32:47 金刀大菜牙

golang切片

定义 slice 并不是数组或数组指针。它通过内部指针和相关属性引用数组片段,以实现变长方案。 使用方式 切片:切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。 切片的长度可以改变,因此,切片是一个可变的数组。 切片遍历方式和数组一样,可以用len()求长度。表示可用元素数量,读写操作不能超过该限制。 cap可以求出slice最大扩张容量,不能超出数组限制。0 <= len(slice) <= len(array),其中array是slice引用的数组。 切片的定义:var...阅读全文

简书 2020-09-25 01:32:47 追梦人在路上不断追寻