网站首页 成长录 “慢生活”不是懒惰,放慢速度不是拖延时间,而是让我们在生活中寻找到平衡。
刷题:4个线程同步
题目:有4个线程和1个公共的字符数组。线程1的功能就是向数组输出A,线程2的功能就是向字符输出B,线程3的功能就是向数组输出C,线程4的功能就是向数组输出D。要求按顺序向数组赋值ABCDABCDABCD,ABCD的个数由线程函数1的参数指定。输入描述:输入一个int整数输出描述:输出多个ABCD示例1输入10输出ABC...
阅读全文
读一个已关闭的channel
有两种读取channel的方式1、range__forx:=rangech{...}使用range,如果channel被外部关闭,for会退出,即range可以识别出channel被关闭2、<-ch__for{i:=<-ch...}这种情况下,channel被外部关闭,会不断读出0另外:__varcchanint<-c...
阅读全文
Golang处理JSON(二)--- 解码
golang编码json还比较简单,而解析json则非常蛋疼。不像Python一句json.loads就能搞定。之前项目开发中,为了兼容不同客户端的需求,请求的content-type可以是json,也可以是www-x-urlencode。然后某天前端希望某个后端服务提供json的处理,而当时后端使用java实现了ww...
阅读全文
golang调度器学习
概要本文从几个角度入手,描述和学习调度器原理*讲解调度器的基本概念*go语言的作者实现的C的协程库libtask源码分析,以理解协程的原理*golang的调度器原理任务调度概念任务与任务控制块(TCB)linux中称为进程控制块(PCB),即包含任务相关的数据结构,包含任务执行过程中的所有信息。*任务的名字taskna...
阅读全文
如何在docker中进行gdb调试
环境准备installnsenternsenter工具在util-linux包2.23版本后包含。nsenter可以访问另一个进程的名字空间。nsenter要正常工作需要有root权限。很不幸,Ubuntu14.04仍然使用的是util-linux2.20。__$cd/tmp;curlhttps://www.kerne...
阅读全文
Implement Domain Object in Golang
序言笔者在一文中,将通信系统软件的DDD分层模型最终演进为五层模型,即调度层(Schedule)、事务层(TransactionDSL)、环境层(Context)、领域层(Domain)和基础设施层(Infrastructure),我们简单回顾一下:ddd-layer-with-dci-dsl.png1.调度层:维护U...
阅读全文
GoConvey框架使用指南
序言在软件开发中,产品代码的正确性通过测试代码来保证,而测试代码的正确性谁来保证?答案是毫无争议的,肯定是程序员自己。这就要求测试代码必须足够简单且表达力强,让错误无处藏身。我们要有一个好鼻子,能够嗅出测试的坏味道,及时的进行测试重构,从而让测试代码易于维护。笔者从大量的编码实践中感悟道:虽然能写出好的产品代码的程序员...
阅读全文
GoStub框架使用指南
序言要写出好的测试代码,必须精通相关的测试框架。对于Golang的程序员来说,至少需要掌握下面四个测试框架:*GoConvey*GoStub*GoMock*Monkey通过上一篇文章的学习,大家熟悉了GoConvey框架的基本使用方法,虽然已经可以写出简单优雅的测试代码,但是如果在被测函数中调用了底层操作函数,比如调用...
阅读全文
GoStub框架二次开发实践
序言要写出好的测试代码,必须精通相关的测试框架。对于Golang的程序员来说,至少需要掌握下面四个测试框架:*GoConvey*GoStub*GoMock*Monkey通过上一篇文章的学习,大家熟悉了GoStub框架的基本使用方法,可以优雅的对全局变量、函数或过程打桩,提高了单元测试水平。尽管GoStub框架已经解决了...
阅读全文
GoMock框架使用指南
序言要写出好的测试代码,必须精通相关的测试框架。对于Golang的程序员来说,至少需要掌握下面四个测试框架:*GoConvey*GoStub*GoMock*Monkey读者通过前面三篇文章的学习可以对框架GoConvey和GoStub优雅的组合使用了,本文将接着介绍第三个框架GoMock的使用方法,目的是使得读者掌握框...
阅读全文
Character Specifications for A Word in Golang
序言笔者有幸参加了一次CodeRetreat活动,整个过程很有收获,本文通过Golang语言来回放一下。需求一:判断某个单词是否包含数字这个需求比较简单,代码实现如下:__funcHasDigit(wordstring)bool{for_,c:=rangeword{ifunicode.IsDigit(c){return...
阅读全文
Monkey框架使用指南
序言要写出好的测试代码,必须精通相关的测试框架。对于Golang的程序员来说,至少需要掌握下面四个测试框架:*GoConvey*GoStub*GoMock*Monkey通过前面四篇文章,我们已经掌握了框架GoConvey+GoStub+GoMock组合使用的正确姿势,同时已经知道:1.全局变量可通过GoStub框架打桩...
阅读全文
Template Method in Golang
序言随着容器云技术的不断成熟,微服务架构也变得越来越火。在微服务架构下,我们将原本单一的应用按照功能边界分解成一系列独立、专注的微服务。每个微服务对应传统应用中的一个组件,但是可以独立编译、部署和扩展。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈,比如编程语言和数据库。Golang语言这几年风...
阅读全文
Golang拦截器的一种实现
前言说起拦截器,大家一定会想起Java语言。Java里的拦截器是动态拦截Action调用的对象,它提供了一种机制使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。在AOP(Aspect-OrientedProgram...
阅读全文
GO 开发者对 GO 初学者的建议
>注:原文地址为[AdvisefromGodeveloperstoGoprogramming>newbies](https://link.jianshu.com?t=http://www.gophercon.in/blog/2014/08/23/adviceforgonewbies/)以促进India的go编程作为Go...
阅读全文