Go语言中文网 为您找到相关结果 973

go 读取文件夹所有文件并生成md5 字符串

为文件生成MD5字符串 func CreateMd5(filename string, md5str *string) { f, err := os.Open(filename) if err != nil { fmt.Println("Open", err) return } defer f.Close() md5hash := md5.New() if _, err := io.Copy(md5hash, f); err != nil { fmt.Println("Copy", err) return } md5hash.Sum(nil) *md5str = fmt.Sprintf("%x", md5hash.Sum(nil)) } 读取文件夹下面的所有文件,为其创建md5字符串并存入r...阅读全文

博文 2018-12-02 17:35:11 woahjknes

Swoft 2.0.7 如期而至

什么是 Swoft ? Swoft 是一款基于 Swoole 扩展实现的 PHP 微服务协程框架。Swoft 能像 Go 一样,内置协程网络服务器及常用的协程客户端且常驻内存,不依赖传统的 PHP-FPM。有类似 Go 语言的协程操作方式,有类似 Spring Cloud 框架灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等。 Swoft 通过长达三年的积累和方向的探索,把 Swoft 打造成 PHP 界的 Spring Cloud, 它是 PHP 高性能框架和微服务治理的最佳选择。 Github https://github.com/swoft-clou... Swoft v2.0.7 2.0.7 在 2.0.6 上继续扬帆,已在大量的生...阅读全文

博文 2019-11-20 11:32:45 stelin

用 golang 编写一个短链接服务

# 用 golang 编写一个短链接服务[访问原文]( https://r.nsini.com/usGE1LxZg)我们平时工作、生活中总会有各种各样的域名链接需要分享给同事或朋友或家人。但常常有域名的长度过长会有各种限制,或无法复制全而产生一些问题了,为了解决这个问题我们需要一个短链接生成器。基于上面的想法我写了一个短链接的生成器:[https://github.com/icowan/shorter]( https://github.com/icowan/shorter)## 项目简介![]( https://user-gold-cdn.xitu.io/2019/11/26/16ea597e23341d9b?w=1280&h=653&f=jpeg&s=37244)该服务基于 go-kit ...阅读全文

博文 2019-11-26 18:32:41

Communication between multiple instances of backend server

<p>My application uses websockets to relay realtime actions to client, now in a more than 1 instance setting. User connections are distributed among the backend servers, what I want to do is when one of the server wants to broadcast an ACTION, it not only broadcasts it to the users connected to itself (using websockets) but it also sends the ...阅读全文

资源 2016-06-17 18:00:10 xuanbao

[Golang软件推荐] Golang通用连接池

连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家. 附上: 喵了个咪的博客:w-blog.cn go-commons-pool-Github地址:github.com/jolestar/go-commons-pool 1.连接池 在使用之前我们需要先了解清楚连接池的概念,总结下来连接池主要解决以下几类问题: 减少连接创建时间 与数据库还是Thrift等程序建立连接都是有开销的。如果这类连接是“循环”使用的,使用该方式这些花销就可避免。 简化的编程模式 当使用连接池时,具体的操...阅读全文

博文 2020-02-21 14:32:48 文振熙

CSS如何删除表格中空单元格的边框?

想要使用CSS删除表格中空单元格的边框,可以使用empty-cells属性。empty-cells属性用于指定是否在表格的单元格无内容时显示边框。只有当表格边框独立(例如当border-collapse属性等于separate时)此属性才起作用。 原文地址:CSS如何删除表格中空单元格的边框?empty-cells属性设置或检索当表格的单元格无内容时,是否显示该单元格的边框。语法:empty-cells: show|hide;属性值:● show:用于显示空单元格上的边框;边框和背景正常渲染。● hide:边框和背景被隐藏。示例: empty-cell属性 ...阅读全文

博文 2020-03-18 17:32:51 yanghs

(全栈须知)2.全栈数据基础(理解)

前言 本文开始规范使用标记语法《Markdown 语法编写》 。对于没有实际经验的情况来说,也应该记住基本数据类型,以便于快速上手应用。 1、Redis 数据类型 Redis 数据类型Redis支持五种数据类型: a.一维度 string(字符串)-- SET / GET hash(哈希)-- HMSET / HGET 时间复杂度O(1):一次完成;hash可以存储对象(数组式): HSET KEY_NAME FIELD_NAME FIELD_VALUE; b.二维度 list(列表)-- LPUSH / [ LPOP | LRANGE | ... ]有序 set(集合)-- SADD / [ SRANDMEMBER | SMEMBERS | ... ]无序 zset(有序集合)-- ZAD...阅读全文

博文 2019-08-25 09:02:35 沧浪水

MixPHP V2.1 生态: Swoole 协程 Redis 订阅器

在 OpenMix 全家桶 中有一个 Mix Redis Subscribe 的项目,这是一个不依赖 phpredis 扩展,直接解析 Redis 协议专用于订阅处理的一个库,任何 Swoole 框架都可使用,可广泛使用于 WebSocket 开发中,在 MixPHP 骨架中也默认包含了这个库。 为何开发 MixPHP V2.1 完成开发后,我试图开发一个基于订阅机制的 WebScoket 服务,该服务需要可动态切换订阅频道,但 phpredis 的订阅方法无法实现以下功能: $redis = new \Redis(); $res = $redis->pconnect('127.0.0.1', 6379, 0); $redis->subscribe(['test'], function ($...阅读全文

博文 2020-01-11 06:32:51 撸代码的乡下人

为你的golang程序插上docker_compose的翅膀

构建一个简单的http服务,使用redis的get,set方法 使用docker_compose构建一个agent服务,redis服务并使用networks 服务端代码 var rd *redis.Client func main() { InitRedis() http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) { _, _ = fmt.Fprintf(writer, "hello world") }) http.HandleFunc("/set", func(writer http.ResponseWriter, request *http.Request) { _ = request....阅读全文

博文 2020-02-04 11:32:40 hwholiday

Go Micro Broker 源码分析

概述 在第一篇概述文章中已经提到了在Micro中 Broker的作用,Go Micro 总体设计。我们也知道Micro是一个可插拔的分布式框架,我们可以使用kafka,rabbitmq,cache,redis,nats等各种实现具体可以在git上的插件库中找到go-plugins我们再来看一下接口: type Broker interface { Init(...Option) error Options() Options Address() string Connect() error Disconnect() error Publish(topic string, m *Message, opts ...PublishOption) error Subscribe(topic stri...阅读全文

博文 2019-07-15 19:02:39 大二小的宝

撮合引擎开发:流程的代码实现

欢迎关注「Keegan小钢」公众号获取更多文章 撮合引擎开发:开篇 撮合引擎开发:MVP版本 撮合引擎开发:数据结构设计 撮合引擎开发:对接黑箱 撮合引擎开发:解密黑箱流程 撮合引擎开发:流程的代码实现 程序入口 我们要开始聊代码实现逻辑了,如果不记得之前讲的目录结构,请回去翻看前文。聊代码实现的第一步自然从程序入口开始,核心就两个函数:init() 和 main(),其代码如下: package main ... //other codes func init() { initViper() initLog() engine.Init() middleware.Init() process.Init() } func main() { mux := http.NewServeMux() m...阅读全文

博文 2019-12-02 12:34:14 Keegan小钢

HTML
标签怎么用?

Section标签文档中的节(section、区段),即文档的各个部分,例如章节,页眉,页脚或任何其他部分;section标签将内容划分为section和子部分。当需要两个页眉或页脚或任何其他文档部分时,将使用section标记。 原文地址:HTML标签怎么用?Section标签对相关内容的通用块进行了分组。section标签的主要优点是,它是语义元素,它描述了它对浏览器和开发人员的意义。语法:

部分内容
Section标签用于分发内容,即分发部分和子部分。示例: Section标签 <...阅读全文

博文 2020-04-10 23:32:47 yanghs

examples of well architected (clean code) rest api's without a framework

<p>hi I&#39;m just looking for a few examples on GitHub. found 1 to date. I like to check out a few more if theres any out there. just to compare them. thanks guys! heres the example I&#39;ve been looking at <a href="https://github.com/ManuelKiessling/go-cleanarchitecture">https://github.com/ManuelKiessling/go-cleanarchi...阅读全文

撮合引擎开发:流程的代码实现

欢迎关注「Keegan小钢」公众号获取更多文章 撮合引擎开发:开篇 撮合引擎开发:MVP版本 撮合引擎开发:数据结构设计 撮合引擎开发:对接黑箱 撮合引擎开发:解密黑箱流程 撮合引擎开发:流程的代码实现 程序入口 我们要开始聊代码实现逻辑了,如果不记得之前讲的目录结构,请回去翻看前文。聊代码实现的第一步自然从程序入口开始,核心就两个函数:init() 和 main(),其代码如下: package main ... //other codes func init() { initViper() initLog() engine.Init() middleware.Init() process.Init() } func main() { mux := http.NewServeMux() m...阅读全文

golang微服务框架go-micro 入门笔记2.3 micro工具之消息接收和发布

本章节阐述micro消息订阅和发布相关内容 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架go-micro 入门笔记2.1 micro工具之micro api golang微服务框架go-micro 入门笔记2.2 micro工具之micro web broker代理 微服务之间需要通过broker来传递消息,go-micro支持http/nats/memory三种broker,其中http是默认的broker。 同时,go-micro以强大的插件形式,提供如下几种常见的broker。 $ls gocloud/ googlepubsub/ grpc/ kafka/ mqtt/ nats/ ns...阅读全文

博文 2019-08-29 16:32:54 非正式解决方案

Golang 连接池的几种实现案例

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

博文 2020-02-29 15:32:40 Kevin

BundleDB - An embedded Databases to build nestable, scalable, complex structures on KV stores

<p><a href="https://github.com/hansonkd/bundledb">https://github.com/hansonkd/bundledb</a></p> <p>Even though this isn&#39;t production ready, I decided to publish the first iteration of BundleDB in case it helps anyone. It allows developers to build collections (Sets, Maps, Lists/Queues) on top of traditi...阅读全文

【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程

张仕华 proxy启动 cmd/proxy/main.go文件 解析配置文件之后重点是proxy.New(config)函数 该函数中,首先会创建一个Proxy结构体,如下: type Proxy struct { mu sync.Mutex ... config *Config router *Router //Router中比较重要的是连接池和slots ... lproxy net.Listener //19000端口的Listener ladmin net.Listener //11080端口的Listener ... } 然后起两个协程,分别处理11080和19000端口的请求 go s.serveAdmin() go s.serveProxy() 我们重点看s.serveProx...阅读全文

博文 2019-01-14 12:34:38 LNMPR源码研究

用 Golang 实现基于 Redis 的安全高效 RPC 通信

前言 RPC(Remote Procedure Call),翻译过来为“远程过程调用”,是一种分布式系统中服务或节点之间的有效通信机制。通过 RPC,某个节点(或客户端)可以很轻松的调用远端(或服务端)的方法或服务,就像在本地调用一样简单。现有的很多 RPC 框架都要求暴露服务端地址,也就是需要知道服务器的 IP 和 RPC 端口。而本篇文章将介绍一种不需要暴露 IP 地址和端口的 RPC 通信方式。这种方式是基于 Redis BRPOP/BLPOP 操作实现的延迟队列,以及 Golang 中的 goroutine 协程异步机制,整个框架非常简单和易于理解,同时也很高效、稳定和安全。这种方式已经应用到了 Crawlab 中的节点通信当中,成为了各节点即时传输信息的主要方式。下面我们将从 Cr...阅读全文

博文 2020-03-16 22:32:46 MarvinZhang

redis 基础数据结构

1 前言 Redis的5种数据类型(String,Hash,List,Set,Sorted Set),每种数据类型都提供了最少两种内部的编码格式,而且每个数据类型内部编码方式的选择对用户是完全透明的,Redis会根据数据量自适应地选择较优化的内部编码格式。 查看某个键的内部编码格式,使用命令object encoding keyname Reids的每个键值内部都是使用叫redisObject这个C语言结构体保存的,代码如下: type:表示键值的数据类型,也就是那5种基本数据类型。 encoding:表示键值的内部编码方式, #define OBJ_ENCODING_RAW 0 /* Raw representation */ #define OBJ_ENCODING_INT 1 /* E...阅读全文

博文 2019-12-17 18:32:48 LZhan

kubernetes垃圾回收器GarbageCollector源码分析(一)

kubernetes版本:1.13.2 背景 由于operator创建的redis集群,在kubernetes apiserver重启后,redis集群被异常删除(包括redis exporter statefulset、redis statefulset)。删除后operator将其重建,重新组建集群,实例IP发生变更(中间件容器化,我们开发了固定IP,当statefulset删除后,IP会被回收),导致创建集群失败,最终集群不可用。 经多次复现,apiserver重启后,通过查询redis operator日志,并没有发现主动去删除redis集群(redis statefulset)、监控实例(redis exporter)。进一步去查看kube-controller-manager的日...阅读全文

博文 2019-10-16 09:33:02 小碗汤

如何使用CSS选择所有子元素?

如何使用CSS递归选择所有子元素?下面本篇文章就来给大家介绍一下使用CSS递归选择所有子元素的方法,希望对大家有所帮助。 原文地址:如何使用CSS选择所有子元素?当元素是某个元素的子元素时,可以使用子选择器匹配,该选择器选择特定父级的所有子元素。子选择器由两个或多个由“>”分隔的选择器组成;它也称为element > element选择器。注:子选择器只能选择自己的子类,第二级元素,而不能选择第二级别以下的元素。语法:选择指定元素的所有指定子元素element1 > element2如果想要递归选择所有子元素,则使用以下语法 element1 > * { // CSS样式 } 示例1:选择所有子元素 阅读全文

博文 2020-03-20 21:32:48 yanghs

用 Golang 实现基于 Redis 的安全高效 RPC 通信

前言 RPC(Remote Procedure Call),翻译过来为“远程过程调用”,是一种分布式系统中服务或节点之间的有效通信机制。通过 RPC,某个节点(或客户端)可以很轻松的调用远端(或服务端)的方法或服务,就像在本地调用一样简单。现有的很多 RPC 框架都要求暴露服务端地址,也就是需要知道服务器的 IP 和 RPC 端口。而本篇文章将介绍一种不需要暴露 IP 地址和端口的 RPC 通信方式。这种方式是基于 Redis BRPOP/BLPOP 操作实现的延迟队列,以及 Golang 中的 goroutine 协程异步机制,整个框架非常简单和易于理解,同时也很高效、稳定和安全。这种方式已经应用到了 Crawlab 中的节点通信当中,成为了各节点即时传输信息的主要方式。下面我们将从 Cr...阅读全文

博文 2020-03-17 10:34:29 MarvinZhang

2020-03-27

1、负责公司新产品的后台业务研发; 2、负责在线高并发大流量系统设计及实现; 3、主要实现语言为Python/Golang。 职位要求 1、本科及以上学历,计算机、通信等相关专业; 2、有扎实的编程能力和良好代码品位; 3、有优秀的系统设计能力,能熟练使用Mysql 、Redis、消息队列等常用WEB组件,并能了解工作原理; 4、深刻理解计算机原理,有良好的数据结构和算法基础; 5、有高并发服务设计和实现经验优先; 6、积极乐观,责任心强,工作认真细致,具有良好的团队沟通与协作能力; 7、对产品有好奇心,关注业内产品,喜欢使用产品,关注产品体验; 8、热爱编程,有良好的自驱力,有较强的学习能力,有强烈的求知欲、好奇心和进取心 ,能及时关注和学习业界最新技术...阅读全文

博文 2020-03-28 03:32:49 重装大兵

Dockerfile(7)

镜像的定制实际上就是定制镜像的每一层所添加的配置、文件等信息,实际上当我们在一个容器中添加或者修改了一些文件后,我们可以通过docker commit命令来生成一个新的镜像,但是这个方法不够直观,没办法追随我们镜像里面到底有哪些内容,所以实际定制镜像的过程我们很少采用这种方式。而是使用一个名为Dockerfile的文本文件来进行镜像定制,我们可以把镜像的每一层修改、安装、构建、操作的命令都写入到这个文件中,一行就对应镜像的一层,这种方法显然要更高级,因为我们有一个文件来直观反映我们的镜像内容,还可以作为版本记录进行跟踪。 定制镜像 先简单看个例子: 在第6部分内容中,我们访问nginx容器的1.html结果返回是my-vol haha。现在我想把访问的内容结果改为hello Docker。如...阅读全文

博文 2020-01-08 19:32:58 wangfs

kubernetes垃圾回收器GarbageCollector 源码分析(三)

kubernetes版本:1.13.2 接两节: kubernetes垃圾回收器GarbageCollector Controller源码分析(一)kubernetes垃圾回收器GarbageCollector Controller源码分析(二) 主要步骤 GarbageCollector Controller源码主要分为以下几部分: monitors作为生产者将变化的资源放入graphChanges队列;同时restMapper定期检测集群内资源类型,刷新monitors runProcessGraphChanges从graphChanges队列中取出变化的item,根据情况放入attemptToDelete队列; runProcessGraphChanges从graphChanges队列...阅读全文

博文 2019-10-25 00:04:19 Liabio

kubernetes自定义资源对象高级功能

kubernetes自定义资源对象再极大程度提高了API Server的可扩展性,让企业能够根据业务需求通过CRD编写controller或者operator来实现生产中各种特殊场景。随着k8s的版本升级,CRD的功能也越来越完善,下面对其中几点进行说明。 以下验证kubernetes版本为1.13.2,docker版本:18.09.5 Validation(验证) 在项目中用自定义资源对象时,如果创建自定义资源时某些字段不符合要求,会导致监听该资源对象的controller或者operator出现异常,解析结构体报错,所以Validation这个功能非常实用,在创建时就进行校验,减少后面的排错和异常处理的麻烦。 可以通过 OpenAPI v3 schema验证自定义对象是否符合标准 。此外...阅读全文

博文 2019-10-25 00:04:20 Liabio

面试官: 两个Redis实例怎么快速对比哪些数据不一致

问题 如上图如何能快速的从两个Redis实例怎么快速对比哪些数据不一致?什么是数据不一致key不一致相同key名 在不同实例上的数据类型不一致key 存在于源 redis 不存在目标 rediskey 存在于 目标redis 不存在源redisvalue 不一致string 类型的值,在不同实例上不一致其他类型,同key判断.工具推荐 redis-full-check是阿里云Redis&MongoDB团队开源的用于校验2个redis数据是否一致的工具,支持单节点、主从、集群版、以及多种proxy,支持同构以及异构对比,redis的版本支持2.x-5.x。下载工具RedisFullCheck目前仅支持 Linux环境 ,其他环境自行安装Golang自行交叉编译运行使用参数说明-t 目标库-s ...阅读全文

博文 2020-05-15 17:38:31 巨蟹胖胖

如何用 Redigo 访问 Codis

开篇依然是那三个问题: redigo 是否能够用于 codis ? 如果不经过任何加工, 直接用 redigo 去访问 codis, 会出现什么样的问题 ? codis 的 golang 客户端如何实现 ? 先贴出来, 我之前直接用 Redigo 接入 codis 的代码 // Redis global redis connection pool var Redis *redis.Pool var RedisInitErr = errors.New("init redis error") Redis = &redis.Pool{ MaxIdle: 10, Dial: func() (conn redis.Conn, e error) { addrs, err := getHosts() if...阅读全文

博文 2020-01-11 06:32:50 HHF技术博客