提高文件下载速度,加速下载文件

项目主页说明文档:https://zwc365.com/2020/09/24/file-proxy-download 项目地址:https://pd.zwc365.com 项目开发背景 在开发过程中,总会遇到要下载文件。常见的有下载 github 项目、下载开发工具、下载pdf文档、下载各类 exe 文件 如果下载的文件是国外的。例如 TeamViewer.exe、XShell.exe、AndroidStudio.exe 。速度可能只有 十几kb。 遇到需要下载的文件只有 十几kb/s 的问题,...阅读全文

简书 2020-10-16 18:33:08 Asbefore如初_3142 等

go-zero 如何应对海量定时/延迟任务?

一个系统中存在着大量的调度任务,同时调度任务存在时间的滞后性,而大量的调度任务如果每一个都使用自己的调度器来管理任务的生命周期的话,浪费cpu的资源而且很低效。本文来介绍 go-zero 中 延迟操作,它可能让开发者调度多个任务时,只需关注具体的业务执行函数和执行时间「立即或者延迟」。而 延迟操作,通常可以采用两个方案:Timer:定时器维护一个优先队列,到时间点执行,然后把需要执行的 task 存储在 map 中collection 中的 timingWheel ,维护一个存放任务组的数组,每...阅读全文

Segmentfault 2020-10-19 16:32:33 kevinwan

24.Golang设计模式之空对象模式

空对象模式 GitHub代码链接 什么是空对象模式 空对象模式(Null Object Pattern),使用空对象来取代Null对象实例的检测。 解决了什么问题 Null对象不是空值,而是返回一个不做任何动作的空对象。这样Null对象也可以在数据 不可用的时候执行一些默认动作。 代码实现 1. 抽象接口实现 //AbstractCustomer 客户对象接口 type AbstractCustomer interface { Isnil() bool GetName() string } 2....阅读全文

简书 2020-10-16 11:32:44 ShawnLee_123

协程到底是什么?看完这个故事明明白白

神秘使者 “久闻Java语言跨越平台,框架众多,不过二十年功夫,就已晋升天下第一编程语言,今日一见,果然名不虚传呐!” “使者先生您过奖了,咱们快些走,国王陛下已经等候多时了” 今日,Java帝国朝堂之上迎来了一位神秘的来宾。 协程到底是什么?看完这个故事明明白白 来到大殿之上,只见国王正襟危坐,闭目养神,不怒自威,堂下群臣咸集,纷纷侧目。 “来者何人?”,国王一旁的内侍问到。 “我乃GoLang帝国使者——Goroutine”,使者答道。 协程到底是什么?看完这个故事明明白白 “GoLang帝...阅读全文

简书 2020-10-16 11:32:44 JAVA进阶之道

再谈 Send 与 Sync | Rust学习笔记

作者:谢敬伟,江湖人称“刀哥”,20年IT老兵,数据通信网络专家,电信网络架构师,目前任Netwarps开发总监。刀哥在操作系统、网络编程、高并发、高吞吐、高可用性等领域有多年的实践经验,并对网络及编程等方面的新技术有浓厚的兴趣。Send 与 Sync 可能是Rust多线程以及异步代码种最常见到的约束。在前面一篇讨论多线程的文章中介绍过这两个约束的由来。但是,真正书写比较复杂的代码时,还是会经常遇到编译器的各种不配合。这里借用我的同事遇到的一个问题再次举例谈一谈 Send 与 Sync 的故事。...阅读全文

Segmentfault 2020-10-19 10:32:33 Netwarps

本科拿到BAT SSP offer,我的Linux C/C++后台服务器开发学习路线(面经,秋招)

前言小北去年经历春秋招,拿到了不少大厂 offer,其中包括 sp、ssp 等,感觉在复习准备校招上还是有一定方法的,因为我自己是 Linux C/C++路线。所以这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」。这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其它人写得不一样,也定下了一个目标,这篇文章,不能是简单的堆砌学习资源和书单推荐,更要细化如何有效的去执行落地。争取做到让看到的同学有一种相见恨晚的感觉哈哈哈。所以大家可以试着看一下,帮我检查下有没有达到预想的...阅读全文

Segmentfault 2020-10-19 09:32:32 编程指北

为Golang API设置Swagger文档

如果没有关于我们API的有意义的文档以及对端点进行测试的能力,用户甚至都不会费心尝试使用它。解决方案是编写文档。但是,编写它可能要花费很多时间,否则可能会为我们的应用程序开发更多很棒的功能……那么,我们该怎么办?-我们生成了Swagger文档! swagger库 让我们从创建Swagger文档所需的库开始。在swag文档中,有指向受支持框架的库的链接,其中包括net/http许多人喜欢使用的最简单的选项以及GIN,我将使用并在此处显示。即使您使用的是不同的Web框架,注释也将是相同的,因此您仍然...阅读全文

简书 2020-10-16 00:33:08 追梦人在路上不断追寻

【golang字符画】实现代码中打印好看的图案

图片转字符画 文字转成图片 代码实现功能描述 看到很多人喜欢在代码开始或者结束位置打印比较好看的图案,比如佛祖保佑无BUG;正好在学习go,于是就想实现一下这个功能。将图片内容或者文字内容转成字符串形式输出,方便我们可以将喜欢的图案转成字符串放到我们写的代码中。详细代码下载 图片转字符画 文字转字符画 实现思路简述 遍历获取图片像素的RGB信息,根据RGB的值去选择对应像素点的替换字符。 把文字转成字符画,就是先把文字内容写到图片中,然后回到遍历图片像素信息方式实现字符替换像素 代码整体实现 1...阅读全文

简书 2020-10-15 23:32:43 云之君兮鹏

Grafana7二次开发

从GitHub上获取最新代码,切换分支到最新稳定版本7.2.1,基于该版本进行二次开发。 开发环境:MacOS 取完代码后,进入代码目录,执行如下命令: $ brew install node@12 编辑.npmrc $ vi ~/.npmrc 添加如下内容: sass_binary_site = https://npm.taobao.org/mirrors/node-sass/ phantomjs_cdnurl = https://npm.taobao.org/mirrors/phantomj...阅读全文

简书 2020-10-15 22:32:39 旻璿

【Go从学会到学废】(零) Golang简介

Go 语言简介 img Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 Go 语言特色 简洁、快速、安全 并行、有趣、开源 内存管理、数组安全、编译迅速 Go 语...阅读全文

简书 2020-10-15 17:34:13 WhoCan

【Go从学会到学废】(一) 下载、安装、配置

一、下载 Go语言官方网站地址https://golang.google.cn/ image-20201014185445041 Go语言中文网下载地址https://studygolang.com/dl image-20201014185610693 二、安装 双击安装包,一直下一步就行 image-20201014190209077 image-20201014190238110 image-20201014190315886 image-20201014190338717 image-20...阅读全文

23.Golang设计模式之模板模式

模板模式 GitHub代码链接 模板模式(Template Pattern)中,一个抽象公开类定义了执行它的方法,它的子类可以按需重写方法实现,但调用将以抽象类中的定义的方式进行。 什么是模板模式 定义一个算法骨架,将一些步骤延迟到子类进行。模板模式使得子类可以不改变一个算 法的结构,即可重新定义该算法的某些特定步骤。 解决了什么问题 模板模式解决了一些方法通用,却在每个子类都重新写一遍的这些方法。 优点 封装不变的部分,扩展可变部分 提取公共代码,便于维护 行为由父类控制,子类实现 缺点 每一...阅读全文

简书 2020-10-15 17:32:45 ShawnLee_123

Golang学习

Golang Go语言设计初衷 针对其他语言的痛点进行设计 并加入并发编程 为大数据,微服务,并发而生的通用编程语言 Go语言与转型 项目转型首选语言 软件工程师转型、添加技术栈的首选语言 这是一门为转型量身定制的课程 课程内容 基本语法 变量 选择、循环 指针、数组、容器 面向接口 结构体 duck typing的概念 组合的思想 函数式编程 闭包的概念 多样的例题 工程化 资源管理,错误处理 测试和文档 性能调优 并发编程 gorutine和channel 理解调度器 多样的例题 image...阅读全文

简书 2020-10-15 15:33:31 Susu_8601

通过MapReduce降低服务响应时间

在微服务中开发中,api网关扮演对外提供restful api的角色,而api的数据往往会依赖其他服务,复杂的api更是会依赖多个甚至数十个服务。虽然单个被依赖服务的耗时一般都比较低,但如果多个服务串行依赖的话那么整个api的耗时将会大大增加。 那么通过什么手段来优化呢?我们首先想到的是通过并发来的方式来处理依赖,这样就能降低整个依赖的耗时,Go基础库中为我们提供了 WaitGroup 工具用来进行并发控制,但实际业务场景中多个依赖如果有一个出错我们期望能立即返回而不是等所有依赖都执行完再返回结...阅读全文

简书 2020-10-15 15:33:24 kevwan

神秘使者到Java帝国传道协程,竟被轰了出去!

神秘使者 “久闻Java语言跨越平台,框架众多,不过二十年功夫,就已晋升天下第一编程语言,今日一见,果然名不虚传呐!” “使者先生您过奖了,咱们快些走,国王陛下已经等候多时了” 今日,Java帝国朝堂之上迎来了一位神秘的来宾。 image 来到大殿之上,只见国王正襟危坐,闭目养神,不怒自威,堂下群臣咸集,纷纷侧目。 “来者何人?”,国王一旁的内侍问到。 “我乃GoLang帝国使者——Goroutine”,使者答道。 image “GoLang帝国?何方番邦小国?寡人竟从未听闻”,国王闭眼说到。 ...阅读全文

简书 2020-10-15 15:33:23 码不动

连nil切片和空切片一不一样都不清楚?那BAT面试官只好让你回去等通知了

连nil切片和空切片一不一样都不清楚?那BAT面试官只好让你回去等通知了。问题package main import ( "fmt" "reflect" "unsafe" ) func main() { var s1 []int // nil切片 s2 := make([]int,0) // 空切片 s4 := make([]int,0) // 空切片 fmt.Printf("s1 pointer:%+v, s2 pointer:%+v, s4 pointer:%+v, \n", *(*refl...阅读全文

Segmentfault 2020-10-19 00:32:33 ilini

通过MapReduce降低服务响应时间

在微服务中开发中,api网关扮演对外提供restful api的角色,而api的数据往往会依赖其他服务,复杂的api更是会依赖多个甚至数十个服务。虽然单个被依赖服务的耗时一般都比较低,但如果多个服务串行依赖的话那么整个api的耗时将会大大增加。那么通过什么手段来优化呢?我们首先想到的是通过并发来的方式来处理依赖,这样就能降低整个依赖的耗时,Go基础库中为我们提供了 WaitGroup 工具用来进行并发控制,但实际业务场景中多个依赖如果有一个出错我们期望能立即返回而不是等所有依赖都执行完再返回结果...阅读全文

Segmentfault 2020-10-19 00:32:33 kevinwan

Go Switch 语句的5个模式

基本用法switch 关键字后面接条件表达式case 从上到下按顺序进行匹配,直到匹配成功如果没有匹配到 case, 且有 default 模式, 会执行 default 的代码块func defaultSwitch() { switch time.Now().Weekday() { case time.Saturday: fmt.Println("Today is Saturday.") case time.Sunday: fmt.Println("Today is Sunday.") def...阅读全文

Segmentfault 2020-10-19 00:32:32 lryong