Alpine Linux Docker 中提示 sh: command not found

最近有项目需要上线,项目的各个服务都是由 golang 写的。启动服务直接运行编译好的二进制文件就行,于是准备使用 docker 来部署。 由于是二进制文件启动,所以采用非常精简的镜像 alpine 。( 5M 左右) 编写完 dockerfile,构建镜像无误,dockerfile 如下: FROM alpine:latest COPY target /data/ RUN chown -R games: /data/ && chmod +x /data/login WORKDIR /data/...阅读全文

休息的第二天,被通知下周一复工

2020年2月28日 周五 雨春雨贵如油,今天有段时间下得好大。阳台不是矩形的,所以放窗外的植物还有淋不到雨的。今天接收的信息量好大,原本以为还能休2周,突然下周一就要来上班了。不过下半周却又不一定。这下离线的任务又不能算离线了,反反复复,极大削弱了计划性。接触Go-micro的时候,还查到了go-kit,不过前者是微服务框架,后者的定位是工具集。有人测评Go-micro的性能不大好,后来看文档,有描述“性能不是目前最关注的问题”。性能其实是一个相对的问题,golang在诞生了gin、iris等...阅读全文

简书 2020-02-28 21:32:45 漫步空中

Swoole 开发框架 imi v1.1.0 发布,重磅引入 Partial 概念

imi 是基于 PHP Swoole 的高性能协程应用开发框架,它支持 HttpApi、WebSocket、TCP、UDP 服务的开发。 在 Swoole 的加持下,相比 php-fpm 请求响应能力,I/O密集型场景处理能力,有着本质上的提升。 imi 框架拥有丰富的功能组件,可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。 首创毫秒级的注解及代码热更新重启,让你在开发时只管...阅读全文

Segmentfault 2020-03-03 13:32:33 宇润

Golang连接池的几种实现案例

因为TCP的三只握手等等原因,建立一个连接是一件成本比较高的行为。所以在一个需要多次与特定实体交互的程序中,就需要维持一个连接池,里面有可以复用的连接可供重复使用。 而维持一个连接池,最基本的要求就是要做到:thread safe(线程安全),尤其是在Golang这种特性是goroutine的语言中。 实现简单的连接池 type Pool struct { m sync.Mutex // 保证多个goroutine访问时候,closed的线程安全 res chan io.Closer //连接存...阅读全文

掘金 2020年02月28日 Xiao淩求个好运气

Golang 1.14 发布 | 云原生生态周报 Vol. 39

作者 | 陈俊、何淋波、李鹏、宋净超 业界要闻 Golang 1.14 发布 Golang Release 了 1.14 版本。该版本包含生产级别 go module,改进 defer 性能,以及 Goroutine 抢占等功能。 Cilium 1.7 版本发布 Cilium 是一款开源软件,负责以透明方式提供并保护由 Linux 容器管理平台(例如 Kubernetes)部署完成的各应用程序服务间的网络与 API 连接。 Contributor Summit Amsterdam Schedul...阅读全文

Segmentfault 2020-03-02 23:32:33 阿里巴巴云原生

面试:从尾到头打印链表

题目:从尾到头打印链表 要求:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例: ` 输入:head = [1,3,2] 输出:[2,3,1] ` 限制: 0 <= 链表长度="" <="10000 题解1:递归法 因为是从尾到头返回每一个节点的值,所以很容易想到如果从最后的节点将值放入数组中,然后再往前逐步将数据放入数组,最后回到头节点返回即可,可以想到递归就能轻松做到,只要注意递归函数的结束条件即可。 /** * Definition for singly-link...阅读全文

掘金 2020年02月28日 若鱼治水

面试:从尾到头打印链表

题目:从尾到头打印链表 要求:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例: 输入:head = [1,3,2] 输出:[2,3,1] 限制: 0 <= 链表长度 <= 10000 题解1:递归法 因为是从尾到头返回每一个节点的值,所以很容易想到如果从最后的节点将值放入数组中,然后再往前逐步将数据放入数组,最后回到头节点返回即可,可以想到递归就能轻松做到,只要注意递归函数的结束条件即可。 /** * Definition for singly-linked list...阅读全文

Segmentfault 2020-03-02 12:32:34 若鱼治水

图解kubernetes中Pod生命之初的坎坷历程

kubernetes中的容器创建无疑是个复杂的过程,涉及内部各种组件的统一协作,还有对接外部的CRI运行时,本文尝试初探一下容器创建流程中的各种细节,了解其各种组件协作流程,从而在后续出现问题的时候,也好能大概有点排查方向 1. 基础筑基 1.1 容器管理线程模型 kubelet中的线程模型属于master/worker模型,通过单master来监听各种事件源,并为每个Pod创建一个goroutine来进行Pod业务逻辑的处理,master和worker之间通过一个状态管道来进行通信 1.2 基...阅读全文

掘金 2020年02月28日 8小时_2020

图解kubernetes中Pod生命之初的坎坷历程

kubernetes中的容器创建无疑是个复杂的过程,涉及内部各种组件的统一协作,还有对接外部的CRI运行时,本文尝试初探一下容器创建流程中的各种细节,了解其各种组件协作流程,从而在后续出现问题的时候,也好能大概有点排查方向 1. 基础筑基 1.1 容器管理线程模型 kubelet中的线程模型属于master/worker模型,通过单master来监听各种事件源,并为每个Pod创建一个goroutine来进行Pod业务逻辑的处理,master和worker之间通过一个状态管道来进行通信 1.2 基...阅读全文

Segmentfault 2020-03-02 12:32:34 仔仔

Go Sync.Pool作用及遇到的坑

Go版本1.13.1 Go中有sync.Pool类型,我们可以把它理解成存放临时值的容器,之所以加上“临时”两个字,是因为它会在GC过程的STW步骤被清理。 sync.Pool类型使用前可以给它的New字段赋值,New字段类型是func() interface{},一个函数类型,该函数一般在池内为空的时候才会调用 sync.Pool有两个公开的方法,一个Put,一个Get,作用看函数名就知道了 Go的并发模型是GMP模型,sync.Pool给每个P都建立了本地池,一个本地私有池,一个本地共享池,...阅读全文

Segmentfault 2020-03-02 09:32:33 iuoui

一次通过软考高级信息系统项目管理师

1、信息系统项目管理师介绍信息系统项目管理师属于计算机技术与软件专业技术资格(水平)考试(即软考)高级资格考试里面的一项考试。通过本考试的合格人员能够掌握信息系统项目管理的知识体系,具备管理大型、复杂信息系统项目和多项目的经验和能力;能根据需求组织制订可行的项目管理计划;能够组织项目实施,对项目的整体、采购、干系人、成本、范围、风险、沟通、人力资源、进度和质量等10大知识领域进行管理,并能根据实际情况及时做出调整,系统地监督项目实施过程的绩效,保证项目在一定的约束条件下达到既定的项目目标;能分析...阅读全文

简书 2020-02-28 03:32:40 陌若尘_c167

数组、切片

引用 数组、字符串和切片 Go数组中的索引问题 深入解析 Go 中 Slice 底层实现 Golang 入门 : 切片(slice) 一、数组 var a [3]int // 定义长度为3的int型数组, 元素全部为0 var b = [...]int{1, 2, 3} // 定义长度为3的int型数组, 元素为 1, 2, 3 var c = [...]int{2: 3, 1: 2} // 定义长度为3的int型数组, 元素为 0, 2, 3 var d = [...]int{1, 2, 4:...阅读全文

简书 2020-02-28 03:32:39 网管同学

复工后的休假

昨天最后一天复工,今天又开始了休假。估计这一轮又能休个一两周。但现在休假和之前就完全不同了,现在是带着考核计划休假的。虽然单位不用互联网,但是能在互联网完成的都得完成。其实个人工作中需要互联网的地方有很多,这样一来反而是更便捷了。只不过和《软技能》里说的一样,在家办公是一把双刃剑。以为省了路上的时间,后来发现工作效率反而在下降。在家的时候,有太多可以干扰自己的事。而其中更重要的是,在家的时候,往往大脑会给你自己一个信号,潜意识会把在家和下班联系在一起。不过今天排除万难,在前端知识欠缺的情况下,用...阅读全文

简书 2020-02-28 03:32:39 漫步空中

Go Modules 终极入门

Go modules 是 Go 语言中正式官宣的项目依赖解决方案,Go modules(前身为vgo)于 Go1.11 正式发布,在 Go1.14 已经准备好,并且可以用在生产上(ready for production)了,Go官方也鼓励所有用户从其他依赖项管理工具迁移到 Go modules。 而 Go1.14,在近期也终于正式发布,Go 官方亲自 “喊” 你来用: 因此在今天这篇文章中,我将给大家带来 Go modules 的 “终极入门”,欢迎大家一起共同探讨。 Go modules 是...阅读全文

Segmentfault 2020-03-01 20:32:35 煎鱼

GOLANG环境安装

GOLANG环境安装 文档 基本语法 下载 Windows Linux MacOS 解释 环境变量解释 GOROOT 值为GoLang安装目录。 GOPATH 值为GoLang项目目录。即自己的开发目录,注意:GOPATH不允许与GOBIN一致 GOBIN 值为GoLang编译软件使用目录。需要将该环境变量加入PATH环境变量,GOBIN目录一般为GOPATH/bin GO111MODULE 值为on。GoLang模块化加载形式。即vendor目录使用,项目独立开发环境,适用于团队开发。 GOP...阅读全文

Segmentfault 2020-03-01 20:32:34 inight

运维大神如何使用 Golang 日志监控应用程序

你是如何使用 Golang 日志监控你的应用程序的呢?Golang 没有异常,只有错误。因此你的第一印象可能就是开发 Golang 日志策略并不是一件简单的事情。不>支持异常事实上并不是什么问题,异常在很多编程语言中已经失去了其异常性:它>们过于被滥用以至于它们的作用都被忽视了。-- Nils 本文导航1、Golang 日志基础 使用 Golang “log” 库 2、为你 Golang 日志统一格式 JSON 格式的结构优势 标准化 Golang 日志 3、Golang 日志上下文的力量 4、...阅读全文

51CTO博客 2020-02-27 10:52:43 xjtuhit

Go控制并发数量的几种方式

因为go语言层面支持并发,所以面试中经常会问到并发的问题,比如说控制go并发数量的方式有哪些?下面是我个人整理的两个例子,如果有不对的地方请轻喷。 func waitGroup() { count := 10 wg := sync.WaitGroup{} for i := 0; i < count; i++ { wg.Add(1) go func(j int) { fmt.Print(j) wg.Done() // 也可使用 wg.Add(-1) }(i) } wg.Wait() } 上面主要用...阅读全文

Segmentfault 2020-03-01 15:32:33 iuoui

【轻知识】有以下资料。面试是否不愁呢?

为何写这篇文章。因为搜面试题搜到一篇# PHP高级工程师面试题 。看了看,有的会有的不会。想到自己也或多或少看过一些资料,故整理一下。 以下表中,资料列,列出的就够了。大都足以回答上面的面试题中的问题。 技能 资料 思考 php内核篇 《PHP7内核剖析》《PHP 7底层设计与源码实现》《PHP 7底层设计与源码实现》视频 尽量看细点。php7较之php5怎么节省内存的。比如php7 zvalue中复杂类型的用指针操作,也就是存个指针。php7快在哪里,小到string用了柔性数组,大到ast吧...阅读全文

简书 2020-02-27 16:32:54 言十年