package main
import (
"fmt"
)
func run(a []int, c chan int) {
first := 0
for _, i := range a {
first += i
}
c <- first
}
func main() {
a := []int{3, 5, 6, 2, 9, 10}
c := make(chan int)
go run(a[:4], c)
x := <-c
fmt.Println(x)
}
https://segmentfault.com/a/1190000020293616#articleHeader3 代理
https://studygolang.com/articles/7884 go语言斐波那契数列三种写法
https://www.cnblogs.com/ExMan/p/11490719.html go语言导包的几种方法
说到Golang的Redis库,用到最多的恐怕是
redigo 和 go-redis。其中 redigo 不支持对集群的访问。
node.js 接口文档神器 https://www.cnblogs.com/ExMan/p/11475710.html
https://www.cnblogs.com/ExMan/p/11431412.html 集群限流 缓存
如果仅仅对于一个博客而已一个Nginx 足够了,后面可以带多个Tomcat 做负载均衡进群
Nginx 应用层面做限流,后端单个服务可以做接口限流
后端服务用户 Session 可以集中存储到 Redsi 中
布隆过滤拦截防止缓存穿透
热点数据读取 Redis 缓存
如有必要 Redis 、MySql 可以做主从集群
https://www.cnblogs.com/ExMan/p/11431391.html gin中文文档
优点:高可用,横向扩展
缺点:不支持事务,伪实时的,mapping不可变,写入性能不高
https://www.cnblogs.com/ExMan/p/11386130.html
https://www.cnblogs.com/ExMan/p/11373884.html redis分布式锁
https://www.cnblogs.com/ExMan/p/11247122.html
缓存:
在高并发的情况下,如果没有缓存数据库将会分分钟被爆,系统也会瞬间瘫痪,使用缓存不单单能提升系统访问速度,提高并发量,也是保护数据库,保护系统的有效方式。大型网站主要是读,缓存很容易被想到,在大型写系统中,缓存也扮演重要的角色。积累一些数据批量写入,内存里面的缓存队列(生产消费),HBase写入数据机制等都是通过缓存提升系统的吞吐量或者实现系统的保护措施。甚至是消息中间件,可以理解为分布式的数据缓存。
降级:
服务降级是当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。降级往往会指定不同的级别,面临不同的异常等级执行不同的处理。根据服务方式:可以拒绝服务,可以延迟服务,也可以随机服务,根据服务的范围,可以砍掉某个功能,可以砍掉某些模块。总之服务降级需要根据不同的业务需求采用不同的降级策略。主要的目的就是服务虽有损但总比没有好。
限流:
可以理解为服务降级的一种,限流就是限制系统的输入输出流量已达到保护系统的目的。一般来说系统的吞吐量可以被测算,为了保证系统的稳定性,一旦到达某个阈值就要需要限流并采取一些措施来完成限制流量的目的。比如:延迟处理,拒绝处理,拒绝部分处理等。
计数器: