简谈GO语言I/O操作

1.格式化输出 fmt.Printf() 输出到控制台.fmt.PrintLn()输出到控制台并换行。str := fmt.Sprintf("%f", 3.1415926)格式化后返回格式化后的字符串。fmt.FprintLn(os.Stdout, "hello world")格式化输出到输出ioWrite上(控制台、文件、网络请求等)更多操作请见https://studygolang.com/stati... 2.基本IO 读取器函数 func ReadFrom(reader io.Reade...阅读全文

Segmentfault 2020-02-21 10:32:34 威客巴拉

Go语言一知半解上手记(三)

一、前言   在前两篇文章《Go语言一知半解上手记(一)》、《Go语言一知半解上手记(二)》中,我们实现了从读取 xlsx 格式的数据字典开始,到生成 schema 文件,到最后生成代码文件的完整过程。   在文章二中,我们在 template.go 中添加了解析 schema 的方法 analyzeSchema ,在这个方法里,又调用了 generateModelFile、generateControllerFile 来生成最后的代码文件。这两个方法对数据字典格式的针对性及强,参考性不大,因此...阅读全文

掘金 2020年02月18日 明峰泉听

mysql sql优化演练

# 关联分页查询优化 这里以图书馆图书借阅收藏信息获取的两个例子来演示sql优化的方法。 先来看一个简单的例子。 ## 两个表关联 ###优化前 sql如下 ``` explain select b.* from bookms_book b left join bookms_user_favorite f on f.identify=b.identify where user_id=1 limit 100 offset 20000; +----+-...阅读全文

Go语言中文网 2020-02-18 14:10:23 GrassInWind2019

2020 年编程语言盘点展望:Java 老兵不死,Kotlin 蓄势待发

在进入新的十年之际,各行各业都在进行盘点与展望。SegmentFault 作为开发者社区与科技行业的垂直媒体,一直关注行业的发展与相关动态,近期已陆续为大家整理了各大平台、社区针对技术领域作出的预测与盘点。 今天,继续为大家粗译(文末有原文地址,粗译仅供大家前期了解,建议阅读英文原文)O'Reilly 发布的编程语言发展展望 —— 《Where programming languages are headed in 2020》。 该盘点及分析由数位编程专家整理得出,包含了大量他们对于某些经典编程...阅读全文

Segmentfault 2020-02-20 21:32:32 徐九

golang zap 日志库使用(含文件切割、分级别存储和全局使用等)

日志处理经常有以下几个需求: 1、不同级别的日志输出到不同的日志文件中。 2、日志文件按照文件大小或日期进行切割存储,以避免单一日志文件过大。 3、日志使用简单方便,一次定义全局使用。 建议使用使用Uber-go的Zap Logger,大神李文周大博客已经说的非常明确了,请先参考李老师的博客: https://www.liwenzhou.com/posts/Go/zap/ 问题二和问题三需要补充描述: 一、日志按照级别分文件切割存储 1.1 首先实现两个判断日志等级的interface info...阅读全文

简书 2020-02-18 11:32:48 卡戎li

golang 资源包无法下载时的解决方案

GOPROXY 环境变量 终极大杀器 —— GOPROXY。 我们知道从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。 其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。这无疑对我等无法科学上网的开发良民来说是最大的福音。 更可喜的是,goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务...阅读全文

简书 2020-02-18 11:32:44 孙敏刚

grpc学习交流探讨

问题一:gRPC究竟是什么?他究竟有什么用么?答:在gRPC里客户端应用可以像调用本地对象一样直接调用另一台不同机器上服务端应用的方法,使得你能够更容易地创建分布式应用和服务。问题二:Golang中原生支持rpc,他和grpc是什么个关系?答:这里还是首先来介绍一下RPC吧,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议。在GO中,标准库提供的net/rpc包实现了RPC协议需要的相关细节,开发者可以很方便的使用该包编写RPC的服务端和客户端程序。然后这里我...阅读全文

简书 2020-02-18 11:32:43 盈朔

图解kubernetes资源扩展机制实现(下)

昨天我们介绍了k8s中资源插件机制的核心关键组件,今天我们继续来看下各个组件是如何进行通信的,以及k8s中针对事件处理背后的关键设计 1.PluginManager PluginManager是一个上层组件,其内部包含了上篇文章中的关键组件,并且协调其内部数据流,而且还提供针对不同插件的具体的控制器 1.1 核心数据结构 核心结构里面其实就是按照数据流来进行设计的,首先需要一个感知插件desiredStateOfWorldPopulator用于感知后端服务的创建或者删除,然后将感知到的事件加入到...阅读全文

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

7天用Go动手写/从零实现分布式缓存GeeCache

目录 第一天:LRU 缓存淘汰策略 | Code - Github 第二天:单机并发缓存 | Code - Github 第三天:HTTP 服务端 | Code - Github 第四天:一致性哈希(Hash) | Code - Github 第五天:分布式节点 | Code - Github 第六天:防止缓存击穿 | Code - Github 第七天:使用 Protobuf 通信 | Code - Github 谈谈分布式缓存 第一次请求时将一些耗时操作的结果暂存,以后遇到相同的请求,直接返...阅读全文

Segmentfault 2020-02-20 19:32:35 极客兔兔

Rainbond v5.2.0-beta1发布,众多变化请查看详情

下载安装 安装文档参考: https://v5.2-doc.rainbond.com/docs/quick-start/rainbond_install/ 版本变更 安装与运维 Rainbond系统安装和运维管理重构为Operator模式,运行于Kubernetes集群内部。 解除对Kubernetes的强依赖关系,Rainbond不再维护Kubernetes集群安装脚本,推荐使用 easzup Rainbond-Operator安装采用Helm包管理工具安装。 Rainbond系统安装提供UI...阅读全文

简书 2020-02-17 20:32:51 好雨科技

标准输入输出

标准输入是程序从命令行接受参数,标准的shell命令行会打开三个标准文件,stdin-标准输入 stdout-标准输出 stderr-标准错误输出 结合多种语言来说明标准输入输出 C语言 标准输入 获取一个字符 int getChar() //是从stdin流中读入一个字符 int getc(FILE *stream) //从打开的流中读取一个字符 获取一个字符串 int gets(char *buffers) // 获取一个字符串 遇到换行换行符号转换为\0 格式化输入 scanf(char ...阅读全文

简书 2020-02-17 20:32:50 cendechen

好用的MySQL抓包工具:sniffer-agent

sniffer-agent 抓取tcp包解析出mysql语句,将查询信息打印在屏幕上或者发送到Kafka。 1. Architecture 架构设计: 本项目采用模块化设计,主要分为四大模块:TCP抓包模块,协议解析模块,输出模块,心跳模块 2. Parse Protocol sniffer-agent采用模块化结构,支持用户添加自己的解析模块,只要实现了统一的接口即可 MySQL PostgreSQL Redis Mongodb GRPC 详细输出格式查看 3. CapturePacketRa...阅读全文

G3.1 Go语言正则表达式应用实例

实际应用中,通过灵活组合正则表达式的各种用法,可以实现非常复杂和实用的功能,本节将简单介绍一些常见或典型的应用实例* 注:注意先要导入包github.com/topxeq/goexamples/tools(方法是执行命令go get -v github.com/topxeq/goexamples/tools),如果不用该包,文中代码内的 t.Printfln相当于fmt.Printf加上一个“\n”。-> 匹配中文正则表达式中匹配中文可以根据中文字符的Unicode范围来进行匹配,中文在Unic...阅读全文

简书 2020-02-17 20:32:49 陆满庭

2020教你深入理解Golang之channel

前言Golang在并发编程上有两大利器,分别是channel和goroutine,这篇文章我们先聊聊channel。熟悉Golang的人都知道一句名言:“使用通信来共享内存,而不是通过共享内存来通信”。这句话有两层意思,Go语言确实在sync包中提供了传统的锁机制,但更推荐使用channel来解决并发问题。这篇文章会先从channel的用法、channel的原理两部分对channel做一个较为深入的探究。channel用法什么是channel从字面上看,channel的意思大概就是管道的意思。c...阅读全文

简书 2020-02-17 20:32:48 即将秃头的Java程序员

Go实现滑动窗口限频及测试

各类限频原理 网上有很多讲解限频原理以及限频原因的,限频常用在接口、服务的流量、并发上,主要是为了合理使用后端资源,防止后端被压垮,雪崩等等。 实现方法 这里使用使用go的ring(环形队列)实现滑动窗口 实现代码 package main import ( "fmt" "net" "os" "container/ring" "sync/atomic" "sync" "time" ) var ( limitCount int = 10 // 6s限频 limitBucket int = 6 //...阅读全文

简书 2020-02-17 20:32:43 allenxguo

leetcode_1175

Golang: 思路:简单的全排列问题,n中有i个质数,j个非质数,那么就是i的阶乘乘以j的阶乘,注意阶乘很大,所以要处理下。 代码如下: func numPrimeArrangements(n int) int { if n<=2{ return 1 } primes:=[]int{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101} nmp:=0 for primes[nmp]<=n{ nmp+...阅读全文

简书 2020-02-17 20:32:42 淳属虚构

leetcode_1160

Golang: 思路:用数组建立一个map,然后看看每个单词是否可以由map里面的字符组成。这题优化阶段反而优化错了,一脸懵逼。所以到了最后也没优化。。。 后记:这题让我很不爽,于是我想了下,知道问题出在哪里了,所以这题有优化版本。。。 优化版本代码如下: func countCharacters(words []string, chars string) int { arr:=make([]int,26) for i:=0;i<len(chars);i++{ arr[chars[i]-'a']...阅读全文

简书 2020-02-17 20:32:41 淳属虚构

Gomail是用于发送电子邮件的简单高效的软件包。它已经过充分测试和记录。

### 介绍 ** 文章转自go语言中文文档 [http://www.topgoer.com](http://www.topgoer.com/?from=studygolang "文章转自go语言中文文档http://www.topgoer.com") ** Gomail是用于发送电子邮件的简单高效的软件包。它已经过充分测试和记录。 Gomail只能使用SMTP服务器发送电子邮件。但是该API灵活,可以很容易地实现其他使用本地Postfix,API等发送电子邮件的方法。 ...阅读全文

Go语言中文网 2020-02-17 13:00:29 lu569368

图解kubernetes资源扩展机制实现(上)

k8s目前主要支持CPU和内存两种资源,为了支持用户需要按需分配的其他硬件类型的资源的调度分配,k8s实现了设备插件框架(device plugin framework)来用于其他硬件类型的资源集成,比如现在机器学习要使用GPU等资源,今天来看下其内部的关键实现 1. 基础概念 1.1 集成方式 1.1.1 DaemonSet与服务 当我们要集成本地硬件的资源的时候,我们可以在当前节点上通过DaemonSet来运行一个GRPC服务,通过这个服务来进行本地硬件资源的上报与分配 1.1.2 服务注册...阅读全文

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