Debian中国 为您找到相关结果 24

Golang 中的 channel 通道详解

channel通道golang的并发模型是序列通信处理CSP(communicating sequential process)——使用通信来共享内存 ,避免goroutine因竞争共享内存频繁加锁产生的性能问题。基本数据结构golang中提供了一个特殊的类型channel实现goroutine之间的通信。channel类似于队列,先进先出。channel数据结构源码在src/runtime/chan.go下。chan 使用 hchan 表示,它的传参与赋值始终都是指针形式,每个 hchan 对象代表着一个 chan。hchan 中包含一个缓冲区 buf,它表示已经发送但是还未被接收的数据缓存。buf 的大小由创建 chan 时的参数来决定。qcount 表示当前缓冲区中有效数据的总量...阅读全文

深入学习golang — channel

Channel 1. 概述 “网络,并发”是Go语言的两大feature。Go语言号称“互联网的C语言”,与使用传统的C语言相比,写一个Server所使用的代码更少,也更简单。写一个Server除了网络,另外就是并发,相对python等其它语言,Go对并发支持使得它有更好的性能。 Goroutine和channel是Go在“并发”方面两个核心feature。 Channel是goroutine之间进行通信的一种方式,它与Unix中的管道类似。 Channel声明: ChannelType = ( "chan" | "chan" "<-" | "<-" "chan" ) ElementType . 例如: var ch chan int var ch1 chan<- int //ch1只能写 ...阅读全文

博文 2021-01-25 12:39:17 博客园

Golang Context 探究

在用 Golang 开发过程中,我们一定能在代码里很多函数或方法都会传递 context, 也会经常遇到这样的报错 context deadline exceeded。你有想过或去探究过 context 到底是什么吗,为什么会遇到上述的报错。在这里我们就分析一下 context 是什么及用途。 首选 Golang 中的 context 值得是 context.Context 接口,Golang 在 1.7 版本中引入标准库的接口。context 主要用来在 goroutine 之间传递上下文信息,包括:取消信号、截止时间、key-value 等。 Context 定义 Context 接口定义如下 1 2 3 4 5 6 7 8 9 10 type Context interface...阅读全文

博文 2021-02-25 09:27:27 lxkaka

Golang后端面试题目

技术一面 基础面试 一面是通过电话直接沟通。 go的调度go struct能不能比较go defer(for defer)select可以用于什么context包的用途client如何实现长连接主协程如何等其余协程完再操作slice,len,cap,共享,扩容map如何顺序读取实现set实现消息队列(多生产者,多消费者)大文件排序基本排序,哪些是稳定的http get跟headhttp 401,403http keep-alivehttp能不能一次连接多次请求,不等后端返回tcp与udp区别,udp优点,适用场景time-wait的作用数据库如何建索引孤儿进程,僵尸进程死锁条件,如何避免linux命令,查看端口占用,cpu负载,内存占用,如何发送信号给一个进程git文件版本,使用顺序,mer...阅读全文

博文 2020-04-13 13:13:00 2020腾讯社招

Golang channel 通道常见使用场景

Go 的 channel 在实际项目中是怎么使用呢? channel 会有有缓冲和无缓冲两种类型,无缓冲的可以简单使用让两个 goroutine 数据同步通信。另外一种场景是对某个 object,使用 channel 作为其属性之一,那么待channel阻塞时则表明条件未满足,则需要等待其他数据结果返回。 本文列举几类常见的 channel 使用场景。 读写 package main import ( "fmt" "time" ) func WriteData(intChan chan int) { for i:=1;i<=50;i++{ intChan<-i fmt.Println("写:",i) time.Sleep(time.Millisecond*100) } close(intCh...阅读全文

博文 2021-01-24 21:22:22 debian.cn

Docker 核心原理

usr var # 进入到对应的容器 root@a2b1e73dda7f:/# ls bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var 我们可以看到容器的目录结构和 merged 是一致的。 多阶段构建 在文章的最后我们介绍比较实用的优化构建的方法,多阶段构建 下面的 dockerfile 是一个简单的 golang 应用构建过程 1 2 3 4 5 6 7 8 FROM golang:1.15.6-alpine3.12 RUN mkdir -p /src WORKDIR /src COPY src/ . RUN go build -o app . EXPOSE...阅读全文

博文 2021-02-25 09:14:23 lxkaka

Go 1.16 即将发布,这些变更你需要知道

在前几天,Go1.16rc1 抢先发布了。结合常规的 28 发布规律,其将会在 2021.02 月份左右发布正式版本。 这次 Go1.16 也带来了一些新特性或变更。那么作为一个 Gopher,想必不能错过这次的更新。 今天这篇文章将会带大家了解一下 Go1.16 的几个需要关注的特性。 废弃 io/ioutil Go 官方认为 io/ioutil 这个包的定义不明确且难以理解。所以 Russ Cox 在 2020.10.17 提出了废弃 io/ioutil 的提案。 大致变更如下: Discard => io.DiscardNopCloser => io.NopCloserReadAll => io.ReadAllReadDir => os.ReadDirReadFile => os.Re...阅读全文

博文 2021-02-17 08:52:12 CSDN博客

Debian 9 Stretch 安装配置 Caddy Server

Caddy 是一个用 Golang 开发的高效 Web Server,相比 Nginx,它的配置和使用要简单很多,能自动开启 HTTPS、并且支持 HTTP/2 和 QUIC。 下载安装 Caddy 首先去 Download Caddy 选择你需要的插件,然后复制下方的 One-step installer script (bash),例如我的是 $ curl https://getcaddy.com | bash -s http.cache,http.cors,http.expires,http.filemanager,http.git,http.ipfilter,http.minify,http.nobots,http.ratelimit,http.realip...阅读全文

博文 2017-12-24 10:18:33 debian.cn

Golang常见的十大算法精简版

最近有时间,都在看Go,感觉Go语言真的不错,具体自行百度。今天简单说一下算法。 什么是算法一系列的计算步骤,用来将输入数据转化成输出结果算法的意义用于解决特定的问题解决同一个问题的不同算法的效率常常相差非常大,这种差距的影响往往比硬件和软件方面的差距还要大。 算法在我们编程开发中,还是不可或缺的。下面简单来列举一下go语言常见的十大算法。 BubbleSort(冒泡排序) func Sort(list []int, left, right int) { if right == 0 { return } for index,num := range list { if index < right && num > list[index + 1] { utils.SwapGo(list, in...阅读全文

博文 2019-09-05 09:31:10 debian.cn

Golang 面试题搜集

# Golang 面试题搜集 - 题目来自 [Github](https://github.com/lifei6671/interview-go/blob/master/README.md) ## Golang 常见面试题目解析 - [交替打印数字和字母](https://github.com/lifei6671/interview-go/blob/master/question/q001.md) - [判断字符串中字符是否全都不同](https://github.com/lifei6671/interview-go/blob/master/question/q002.md) - [翻转字符串](https://github.com/lifei6671/interview...阅读全文

Debian下编译安装Golang

我的Debian是用来工作的,因此用的是稳定源。稳定源的优点是,软件经过充分的测试,处于稳定版本。这种状态对于绝大多数软件,都是最合适的。 但是,对于一些需要最新版本的软件来说,稳定源太过于滞后。 官网不仅连接不稳定,二进制发布包也不够全。 目前(2016),Debian的稳定源只能安装go1.3版本。如果需要最新的版本,只能自行从源码编译安装。 卸载旧版本 sudo apt-get remove golang sudo apt-get autoremove 源码下载 git clone https://github.com/golang/go.git 如果没有Git,必须自行解决;如果没有gcc,也需要自行安装。 此外,golang/go这个库实在太大,近200MB。完整从GitHub上...阅读全文

博文 2021-01-28 17:50:16 debian.cn

开源 IP 地址定位库 ip2region 1.9.0 发布

ip2region 是准确率 99.9% 的 IP 地址定位库,0.0x 毫秒级查询,提供了 Java、PHP、C、Python、Node.js、Golang、C#、Rust、Lua 的查询绑定和 Binary、B 树、内存三种查询算法,妈妈再也不同担心我的 IP 地址定位! ip2region 1.9 更新如下: 数据升级至 2019/05/02 的版本,国外的数据增加了大量城市级别的数据,ip2region.db 增长到 7MB。开源了 ip2region.db 的生成程序,目前提供了 java 语言的实现,在${ip2region_root}/maker 目录下,便于对 ip2region 的研究或者更改自定义生成配置等,后期会提供 C 语言的实现。 下载地址: Gitee...阅读全文

博文 2019-05-05 20:56:16 debian.cn

Go 1.15.7 新鲜出炉:修复安全问题,建议升级

Go 官方刚刚发布了 Go 1.15.7 和 Go 1.14.14,以解决最近报告的安全问题。建议所有用户都更新到以下版本之一(如果不确定哪个版本,请选择 Go 1.15.7)。具体修复的安全问题如下:1、cmd/go:使用 cgo 的包可能会在构建时导致任意代码执行。当 Windows 上使用 cgo 时,go 命令可以在构建时执行任意代码。运行 “go get” 或任何其他构建代码的命令时,可能会发生这种情况。只有构建不受信任的代码(而不执行代码)的用户才会受到影响。除 Windows 用户外,这还可能影响在 PATH 中使用了 “.” 的 Unix 用户,在模块外部或禁用模块模式下运行 “go get”或构建命令。具体 issue:https://github.com/golang...阅读全文

博文 2021-01-25 15:15:34 mp.weixin.qq.com

Go 泛型的括号选择:[ ] or ( )

Go 语言设计者 Robert Griesemer 和 Ian Lance Taylor 近日在 Golang 官方论坛发帖讨论关于泛型及其括号使用的问题。 他们提到很多人表达了对泛型语法的担忧,特别是在类型参数声明和函数实例以及泛型的括号选择方面。 常见的计算机键盘提供了四对单字符对称括号,分别是小括号 ( )、方括号 [ ]、花括号 { } 以及尖括号 < >。基于此,他们解释了目前泛型草案在示例代码中使用小括号的原因。首先,Go 使用花括号来划分代码块、复合字面量(composite literals)和一些复合类型,因此几乎不可能在没有严重语法问题的情况下将花括号用于泛型。至于尖括号,解析器在某些情况下要求 <> 需要 unbounded lookahead。 所以只剩下...阅读全文

博文 2020-07-16 10:38:01 debian.cn

Proxy-Go v6.6 发布啦

Proxy-Go v6.6 发布啦。Proxy 是 golang 实现的高性能 http,https,websocket,tcp,udp,socks5 代理服务器, 支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP 端口映射、SSH 中转、TLS 加密传输、协议转换、DNS 防污染代理。 优化了 limitconn 的关闭逻辑, 释放更多资源. http(s)\socks 代理增加了–intelligent, 智能模式设置, 可以是 intelligent|direct|parent 三者之一, 默认是:intelligent. 每个值的含义如下. --intelligent=direct, 不在 blocked 里面的目标都直连. --intelligent=parent, 不...阅读全文

博文 2018-12-01 09:52:14 Go v6.6 发布 新增智能模式

深入理解Golang之context

context是Go并发编程中常用到一种编程模式。本文将从为什么需要context,深入了解context的实现原理,以了解如何使用context。 作者:Turling_hu 来源: 掘金 原文链接: https://juejin.im/post/5e52688c51882549417fc671前言这篇文章将介绍Golang并发编程中常用到一种编程模式:context。本文将从为什么需要context出发,深入了解context的实现原理,以及了解如何使用context。为什么需要context在并发程序中,由于超时、取消操作或者一些异常情况,往往需要进行抢占操作或者中断后续操作。熟悉channel的朋友应该都见过使用done channel来处理此类问题。比如以下这个例子:func...阅读全文

博文 2021-01-27 09:05:27 知乎

国产 Java 开源博客 Solo 2.5.0 发布,支持数据导出

Solo 是一款 一个命令 就能搭建好的 Java 开源博客系统,如果你想开个独立博客,请一定不要错过!2.5.0 版本主要支持了 Markdown/JSON 格式数据导出,并改进了 Markdown 渲染。 另外,我们 新的博客产品 Pipe(golang 开发)已经开源 ,欢迎大家来围观! 安装 下载 安装包 解压后执行 java -cp WEB-INF/lib/*;WEB-INF/classes org.b3log.solo.Starter 从 2.4.0 升级只需将已有的配置拷贝覆盖即可,启动后会自动升级。 文档 用户指南 :安装、配置、备份以及常见问题 开发指南 :开发环境、项目结构、框架说明 皮肤开发 :开发步骤、模版变量 插件开发 :插件机制、处理流程 项目...阅读全文

博文 2017-12-21 09:48:36 debian.cn

Golang 之禅: 如何写优质代码

在本月初的 GopherCon 上,知名 Go 语言贡献者与布道师 Dave Cheney 发表了名为《The Zen of Go》的演讲,之后他整理了演讲内容在博客中分享,由于内容过长,他又写了一个简洁版本: 完整版:https://dave.cheney.net/2020/02/23/the-zen-of-go简洁版:https://the-zen-of-go.netlify.com 这里简单翻译一下简洁版本的内容:编写简单、可读、可维护的 Go 代码的十个工程要点。 每个包实现单一目标 设计良好的 Go 软件包提供一个单一的思路,以及一系列相关的行为。一个好的 Go 软件包首先需要选择一个好名字,使用电梯法则(30 秒内向客户讲清楚一个方案),仅用一个词来思考你的软件包要提供什么功能。...阅读全文

博文 2020-02-25 20:48:33 debian.cn

Go 公布 2.0 设计草案:规模化和扩展性、支持泛型

,Go 1 更多的是确保能快速构建包含很多独立软件包的程序。Go 2 的目标是通过允许带有类型参数的参数多态来解决编写 Go 库的问题,这些问题抽象出了不必要的类型细节。 此外,除了预期的容器类型之外,开发团队还希望能编写有用的库来操作任意的 map 和 channel 值。理想方案是编写能够同时操作 [ ]byte 和 string 值的多态函数。 type List(type T) []T func Keys(type K, V)(m map[K]V) []K 更多细节请查阅Golang 2 设计草案页面。...阅读全文

博文 2018-09-01 18:39:47 debian.cn

linux - Go语言中文网

Buffer和Cache ![image.png](https://static.studygolang.com/190509/5b13b37e091a74234aacb4c1eacbb120.png) Cache(缓存),为了调高CPU和内存之间数据交换而设计,Buffer(缓冲)为了提高内存和硬盘(或其他I/O设备的数据交换而设计)。 free命令看Linux内存 ![image.png](https://static.studygolang.com/190509/68bc4aac05edf8a6fba61fd4e97a1c0d.png) total:总内存大小。 used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。 free:空闲的内存大小。 sh...阅读全文

博文 2021-01-26 18:17:30 Golang中文社区

Docker 核心原理

usr var # 进入到对应的容器 root@a2b1e73dda7f:/# ls bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var 我们可以看到容器的目录结构和 merged 是一致的。 多阶段构建 在文章的最后我们介绍比较实用的优化构建的方法,多阶段构建 下面的 dockerfile 是一个简单的 golang 应用构建过程 1 2 3 4 5 6 7 8 FROM golang:1.15.6-alpine3.12 RUN mkdir -p /src WORKDIR /src COPY src/ . RUN go build -o app . EXPOSE...阅读全文

博文 2021-02-24 10:19:06 lxkaka