Redigo: ScanStruct()匿名指针字段的解析

2022-04-04
阅读 4 分钟
2.5k
Redigo issue 487How to scan struct with nested fields?#487为了更好的理解本篇文章,建议先阅读issue原文一、问题是什么将HGETALL 命令返回的数据,解析到对应的结构体UserInfo中,但是结构体中的*LiteUser字段的数据未能成功解析。如果将 *LiteUser 改为 LiteUser 就可以了。二、复现问题copy issue 中的代码,go mo...
封面图

Redigo: Envoy代理Redis场景下的错误提示

2022-03-24
阅读 2 分钟
2.1k
在使用了 Envoy 代理 Redis 的场景下,执行MGET获取数据,其中某台 Redis 服务出现了问题,Envoy返回了如下的错误提示upstream failure
封面图

Go并发编程之并发模型—(1)概念

2020-10-21
阅读 2 分钟
2.2k
前言在开始学习 Go 特性的并发编程之前,先来简单了解一些基础概念,这对理解学习 Go 并发模型会有一些帮助。概念内核态也被称为内核空间,是系统内核的运行空间,与用户空间隔离。控制计算机的硬件资源。用户态也被称为用户空间,代码运行在较低的特权级别上,不能直接访问内核空间和硬件设备。系统调用用户空间不能直...

Go数据结构之数组与切片

2020-10-21
阅读 8 分钟
1.4k
前言数组的长度是声明的时候就固定好的,后面不可能变大,而且长度和容量相等。切片的长度和容量后面可以随着元素增多而增长,但是容量不可能小于长度。正文声明&初始化在 Go 中声明即初始化,如果在声明的时候没有初始化值,那么就会赋值为声明类型的「零值」。 {代码...} 在声明的时候就初始化: {代码...} 添加&a...

Go并发编程之传统同步—(3)原子操作

2020-10-12
阅读 4 分钟
4.5k
之前文章中介绍的互斥锁虽然能够保证同串行化,但是却保证不了执行过程中的中断。要么成功、要么失败,没有中断的情况,我们叫它叫原子性,这种由硬件 CPU 提供支持的特性,是非常可靠的。

Go并发编程之传统同步—(2)条件变量

2020-10-10
阅读 8 分钟
4.1k
前言回顾上篇文章《Go并发编程之传统同步—(1)互斥锁》其中说到,同步最终是为了达到以下两种目的:维持共享数据一致性,并发安全控制流程管理,更好的协同工作示例程序通过使用互斥锁,达到了数据一致性目的,那么流程管理应该怎么做呢?传统同步条件变量上篇文章的示例程序,仅仅实现了累加功能,但在现实的工作场景中...

Go并发编程之传统同步—(1)互斥锁

2020-10-03
阅读 4 分钟
6.9k
前言先回顾一下,在 C 或者其它编程语言的并发编程中,主要存在两种通信(IPC):进程间通信:管道、消息队列、信号等线程间通信:互斥锁、条件变量等利用以上通信手段采取的同步措施,最终是为了达到以下两种目的:维持共享数据一致性,并发安全控制流程管理,更好的协同工作Go语言中除了保留了传统的同步支持,还提供...

Scrapy入门教程

2020-04-05
阅读 5 分钟
4.6k
安装Scrapy {代码...} 创建项目 {代码...} 创建爬虫 在 tutorial/spiders 目录下创建 quotes_spider.py 文件,代码如下: {代码...} 启动前配置 在 settings.py 中添加: {代码...} 启动项目 {代码...} 界面输出DEBUG、INFO的提示信息,还有抓取的文章标题和链接。一个最简单的初级爬虫,基本流程就已经跑通了。 抓取二...

Gunicorn timeout(下)

2020-01-16
阅读 1 分钟
2.5k
Gunicorn 运行命令增加 -k gevent 配置Gunicorn 是 pre-fork 模型,worker 默认是 sync 改为 gevent

Gunicorn timeout(上)

2019-12-09
阅读 2 分钟
9.4k
最近总有用户反馈说Redash下载比较大的Excel就会出现“失败 - 服务器出现问题”,而且每次从点了下载到出现错误提示时间都是差不多的。我先查看了Nginx的error日志,显示 upstream prematurely closed connection while sending to client,第一反应应该是超时导致的。