Golang仿PHP的Guzzle(一)

简介 这个系列将使用 Golang 模仿 PHP 的 Http 客户端之大作 Guzzle 。虽然 Http Client 的封装不是什么难事,甚至不用封装也可以写出能跑的代码,但是有一个封装良好,使用简单,得心应手的好工具能让代码更具优雅,更健壮,更易读,Guzzle 就是 PHP 里面我见过为数不少的 Http Client,很多 Composer 包都直接使用 Guzzle 发请求,你还在用 curl 吗?试试 Guzzle 吧! 我接触 Golang 其实已经很久了,从 2017 年刚大...阅读全文

简书 2021-02-10 17:32:39 PurelightM_d697

2021-02-10:如何求出两个字符串的最大公共子串长度?

2021-02-10:如何求出两个字符串的最大公共子串长度? 福哥答案2021-02-10: 自然智慧即可。 1.动态规划。时间复杂度是O(MN),空间复杂度是O(MN)。有代码。 dp[i][j]只依赖左上边。 ①.如果str1[i]==str2[j],dp[i][j]=【左上边】+1。 ②.如果str1[i]==str2[j],dp[i][j]=0。 2.dp压缩的动态规划。时间复杂度是O(M*N),空间复杂度是O(1)。有代码。 3.后缀数组。时间复杂度是O(M+N)。无代码。 代码用go...阅读全文

简书 2021-02-10 17:32:37 福大大架构师每日一题

go-admin在线开发平台学习-1[安装、配置、启动]

项目介绍 go-admin 是一个中后台管理系统,基于(gin, gorm, Casbin, Vue, Element UI)实现。主要目的是为了让开发者更专注业务,减少重复代码的编写,节省时间,提升人效,缩短项目周期,提升软件的开发效率以及质量。 image-20210210103112661 下载项目 git clone https://github.com/go-admin-team/go-admin.git 使用git下载go-admin项目,作为一个程序员,如果说你不会使用git,那就...阅读全文

简书 2021-02-10 12:32:39 HapplyFox

Go 解析日期格式-解决 parsing time xx as xx: cannot parse xx as xx 错误

最近在解析 Go 的日期数据格式时(mysql 的 datetime 类型)时遇到个问题,在网上搜了很多方案都试了以后发现不可行,于是自己尝试解决后将解决方案发布出来。【结尾有彩蛋】 Go 自身的 time.Time 类型默认解析的日期格式是 RFC3339 标准,也就是 2006-01-02T15:04:05Z07:00 的格式。如果我们想要在 Gin 的 shouldBindJSON 方法中,传入 YYYY-MM-DD hh:mm:ss 格式的日期格式作为 time.Time 类型的值,就会...阅读全文

简书 2021-02-10 12:32:37 我爱张智容

手撸golang 行为型设计模式 中介者模式

手撸golang 行为型设计模式 中介者模式 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 本系列笔记拟采用golang练习之 中介者模式 中介者模式(Mediator Pattern)又叫作调解者模式或调停者模式。 用一个中介对象封装一系列对象交互, 中介者使各对象不需要显式地相互作用, 从而使其耦合松散, 而且可以独立地改变它们之间的交互, 属于行为型设计模式。 中介者模式主要适用于以下应用场景。 (1)系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解...阅读全文

简书 2021-02-10 12:32:37 老罗话编程

手撸golang 行为型设计模式 中介者模式

手撸golang 行为型设计模式 中介者模式缘起最近复习设计模式拜读谭勇德的<<设计模式就该这样学>>本系列笔记拟采用golang练习之中介者模式中介者模式(Mediator Pattern)又叫作调解者模式或调停者模式。 用一个中介对象封装一系列对象交互, 中介者使各对象不需要显式地相互作用, 从而使其耦合松散, 而且可以独立地改变它们之间的交互, 属于行为型设计模式。 中介者模式主要适用于以下应用场景。 (1)系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解。 (2)交...阅读全文

Segmentfault 2021-02-16 09:32:32 .container .car 等

golang中的channel通道

channel通道 golang的并发模型是序列通信处理CSP(communicating sequential process)——使用通信来共享内存 ,避免goroutine因竞争共享内存频繁加锁产生的性能问题。 基本数据结构 golang中提供了一个特殊的类型channel实现goroutine之间的通信。channel类似于队列,先进先出。channel数据结构源码在src/runtime/chan.go下。 chan 使用 hchan 表示,它的传参与赋值始终都是指针形式,每个 hch...阅读全文

简书 2021-02-10 01:32:47 阿斯顿法

手撸golang 行为型设计模式 状态模式

手撸golang 行为型设计模式 状态模式 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 本系列笔记拟采用golang练习之 状态模式 状态模式(State Pattern)也叫作状态机模式(State Machine Pattern), 允许对象在内部状态发生改变时改变它的行为, 对象看起来好像修改了它的类, 属于行为型设计模式。 状态模式主要包含3个角色。 (1)环境类角色(Context):定义客户端需要的接口,内部维护一个当前状态实例,并负责具体状态的切换。 (2)抽象...阅读全文

简书 2021-02-10 01:32:46 老罗话编程

深度剖析Golang sync.Once源码

目录 什么是sync.Once 如何使用sync.Once 源码分析 什么是sync.Once Once 可以用来执行且仅仅执行一次动作,常常用于单例对象的初始化场景。 Once 常常用来初始化单例资源,或者并发访问只需初始化一次的共享资源,或者在测试的时候初始化一次测试资源。 sync.Once 只暴露了一个方法 Do,你可以多次调用 Do 方法,但是只有第一次调用 Do 方法时 f 参数才会执行,这里的 f 是一个无参数无返回值的函数。 如何使用sync.Once 就拿我负责的一个项目来说,...阅读全文

简书 2021-02-10 01:32:45 迈莫coding

go中类型的相等(==)及可比较规则

本文主要参考了The Go Programming Language Specification中的Comparison_operators。加入了自己的一些理解和示例。 如果两个变量是可比较的(使用==或!=),那它们必可以相互赋值。这意味着可比较的两个变量必须是同一类型,或者他们的底层类型相同。 1. 布尔 可比较 2. 整型 可比较 3. 浮点数 可比较 4. 复数 可比较。 5. 字串 可比较 6. 指针值 可比较。 两个指针指向同一个变量,则这两个指针相等,或者两个指针同为nil,它们...阅读全文

简书 2021-02-10 01:32:45 跑马溜溜的球

手撸golang 行为型设计模式 备忘录模式

手撸golang 行为型设计模式 备忘录模式 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 本系列笔记拟采用golang练习之 备忘录模式 备忘录模式(Memento Pattern)又叫作快照模式(Snapshot Pattern), 或令牌模式(Token Pattern), 指在不破坏封装的前提下, 捕获一个对象的内部状态, 并在对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态, 属于行为型设计模式。 备忘录模式主要适用于以下应用场景。 (1)需要保存历史...阅读全文

简书 2021-02-10 01:32:45 老罗话编程

2021-02-09:如何删除一个链表的倒数第n个元素?

福哥答案2021-02-09: 1.创建虚拟头元素,虚拟头元素的Next指针指向头元素。 2.根据快慢指针求倒数第n+1个元素,假设这个元素是slow。 3.设置元素slow的Next指针。slow.Next=slow.Next.Next。 4.返回虚拟头元素的Next指针。 代码用golang编写,代码如下: package main import "fmt" type ListNode struct { Val int Next *ListNode } func main() { head ...阅读全文

简书 2021-02-10 01:32:45 福大大架构师每日一题

Go 协程调度的个人理解

1.1 协程与进程的区别 首先,我理解的操作系统调度等级为 进程 —— 线程 —— 协程。其中进程和线程的区别是本科学的知识,书上和网上都有。主要要说的就是协程和线程的区别。类比线程和进程,一个进程可以拥有多个线程,多个线程之间一起执行来实现并发,但是线程是操作系统级别提供的并发工具,线程太多会造成线程的切换,线程的切换需要系统调用,就会耗时。 协程这个时候作为一种轻量级的线程,那我们就可以理解成,一个线程可以拥有多个协程。协程的切换,只在用户态切换,不需要操作系统的系统调用,就好像是多个协程共...阅读全文

简书 2021-02-10 01:32:44 Good_Nine9

MySQL 数据同步到 MongoDB

今年春节假期比较闲,整理了下我的开源项目 go-mysql-mongodb。 这个工具用来将 MySQL 数据同步到 MongoDB。开发挺久了,但是一直都没有怎么维护。前几天突然收到了一个用户的邮件,咨询使用中遇到的问题,我意识到这个工具还是有人用的,我趁着假期维护一下,也希望未来可以帮助更多人。 起源 这个项目还要追溯到 2017 年,当时我的工作主要是调研各种大数据平台,需要将 MySQL 的数据同步到 Elasticsearch、MongoDB 等数据库中。 tungsten-repli...阅读全文

简书 2021-02-10 01:32:43 new_xiang

基于 getty 的分布式事务框架 seata-golang 通信模型详解

基于 getty 的 seata-golang 通信模型详解作者 | 刘晓敏 于雨一、简介Java 的世界里,大家广泛使用的一个高性能网络通信框架 netty,很多 RPC 框架都是基于 netty 来实现的。在 golang 的世界里,getty 也是一个类似 netty 的高性能网络通信库。getty 最初由 dubbogo 项目负责人于雨开发,作为底层通信库在 dubbo-go 中使用。随着 dubbo-go 捐献给 apache 基金会,在社区小伙伴的共同努力下,getty 也最终进入到...阅读全文

51CTO博客 2021-02-09 20:06:24 mb601a5ca21139e