对码当歌,猿生几何?
#最热 #最新

go语言开源的项目

使用Go语言开发的开源项目非常多。早期的Go语言开源项目只是通过Go语言与传统项目进行C语言库绑定实现,例如 Qt、Sqlite 等;后期的很多项目都使用Go语言进行重新原生实现,这个过程相对于其他语言要简单一些,这也促成了大量使用Go语言原生开发项目的出现。Go 实现的存储服务器[minio] - Minio 是一个与 Amazon S3 APIs 兼容的开源对象存储服务器,分布式存储方案[rclone] - “用于云存储的 Rsync” - Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfile…[Camlistore] - Camlistore 是你的个人存储系统:一种存储、同步、共享、建模和备份内容的方式[torus] 查看全文

Redis主要底层数据结构扩容

简单动态字符串如果SDS修后的长度小于1MB,则将SDS扩容为修改后的字符串长度的2倍(未使用的空间设为修改后的字符串长度)如果SDS修后的长度大于等于1MB,则将SDS扩容1MB的空间(未使用的空间设为1MB)如果字符串缩短,SDS选择惰性释放,将释放的空间使用free记录下来,以便下次使用hash触发条件扩容未执行BGSAVE,负载因子大于等于1时执行BGSAVE快照时,负载因子大于等于5时,以尽量避开服务器快照期间扩容缩容负载因子小于0.1时渐进式rehash扩缩容大小扩容,首次大于 字典里元素数量*2*2^n 缩容,   首次大于 字典里元素数量*2^n  查看全文

Redis主要数据类型的编码

简单动态字符串底层编码整数字符串对象embstr编码的字符串对象简单动态字符串转换long int使用int编码float使用 简单动态字符串编码当使用embstr编码的字符串长度大于39时,转换为简单动态字符串编码列表底层数据结构压缩列表双端链表转换列表元素长度大于64个字节或者列表元素数量大于512压缩列表编码则转换为双端链表Hash底层数据结构压缩列表字典转换列表元素长度大于64个字节或者列表元素数量大于512压缩列表编码则转换为字典集合底层数据结构整数集合,int16 int32 int64字典。存储时字典的key存储集合元素,value存储null转换整数集合转换为字典,存储的整数数量超过512则使用字段有序集合底层数据结构压缩列表跳跃表转换压缩列表编码要求集合元素数量小于128,元素大小小于64字节。不满足这两个条件则转换为跳跃表。 查看全文

Redis保存多大的Key-Value合适

1. 避免大key首先,需要明确的是,Redis官方并不推荐存储过大的key或value。大key不仅占用大量内存,而且在处理时(如读取、写入、删除)可能会导致Redis性能下降,甚至阻塞整个Redis服务。因此,在设计Redis数据结构时,应尽量避免创建大key。2. 合理的key大小关于key的大小,一般建议key的长度不要超过1024字节,这是为了确保key的存储效率和可读性。虽然Redis本身可以支持更长的key,但过长的key会增加内存的消耗,并且降低查询效率。3. 评估value的大小对于value的大小,虽然没有固定的限制(最大为512MB),但应根据实际需求进行合理评估。如果某个key的value非常大,应考虑将其拆分成多个小key来存储。这样做不仅可以提高Redis的存储效率,还可以避免在删除或修改大value时导致的性能问题。 查看全文

GO-GMP线程模型

介绍G用户态线程M系统线程P处理器,作为M和G的桥梁,负责G的调度和执行.调度器启动时就会创建GOMAXPROCS个处理器。每个处理器都有一个本地空闲队列和运行队列,全局环境各维护着一个空闲队列和运行队列。调度流程获取可用的G首先从P的本地空闲队列获取可用的G 如果没有则从全局空闲队列获取,从全局队列获取时,则会最多同步32个free的G到P的本地free队列.如果没有则创建一个G拿到G后,如果next设置为true, 会有1/2的机会将G放在P的本地队列的next上执行,否则放在P的本地运行队列队末,此时如果本地队里已满,则会触发本地运行队列向全局运行队列迁移动作,期间本地运行队列的一半将迁移到全局运行队列调度首先以1/60的概率从全局运行列获取可用的G。 期间可能会触发全局运行队列向本地运行队列迁移的动作,此时会拿全局队列的 1/GOM 查看全文

GO值复制

GO语言本身是值传递,先给结论,再看case.标量类型是赋值是值传递,如int float string数组和结构体赋值也是值传递,如[2]string  struct{}指针赋值也是值传递,只不过传递的是地址而已map和slice赋值是引用传递,如map[string][string] []string字符串遍历,得到值是字符,索引是不连续的。如下标量类型func TestInt(t *testing.T) {    num1 := 123    num2 := num1    num1 = 456    fmt.Println(& 查看全文

nginx支持http2

http2特点二进制分帧(Binary Format)- http2.0的基石多路复用 (Multiplexing) / 连接共享头部压缩(Header Compression)请求优先级(Request Priorities)服务端推送(Server Push)nginx如何升级http2.0协议nginx服务器升级http2.0协议需要满足如下条件:1、nginx版本高于1.9.5;2、编译的版本需要加载 ssl模块和 http2模块。http2协议也基于ssl/tls协议。重新编译命令如下./configure --prefix=/usr/local/nginx  --with-http_ssl_module  --with-http_v2_module3、nginx.conf文件修改listen&nbs 查看全文

使用acme.h实现网站https化

什么是acme.hacme.h就是实现了acme协议的客户端,可以从 lets encrypt 生成免费的证书。更多客户端参见 https://letsencrypt.org/zh-cn/docs/client-options/。 ACME (自动证书管理环境 - Automatic Certificate Management Environment) : 由 Let’s Encrypt 实现的协议。什么是Let's Encrypt为了在您的网站上启用 HTTPS,您需要从证书颁发机构(CA)获取证书(一种文件)。Let’s Encrypt 是一个证书颁发机构(CA)。要从 Let’s Encrypt 获取您网站域名的证书,您必须证明您对域名的实际控制权。您可以在您的 Web 主机 查看全文
加载更多

Ubuntu安装L2TP VPN服务器和客户端

一、服务器端一键安装l2tp,参考网址 https://teddysun.com/448.html wget --no-check-certificate https://raw.githubusercontent.com/teddysun/across/master/l2tp.sh  chmod +x l2tp.sh   ./l2tp.sh安装的时候IP-Range保持默认,PSK为预授权秘钥(预共享秘钥),用户名和密码都要设置并记住,相当于一个账号。然后再次验证ipsec(L2TP)并重启相关服务service ipsec restart   service xl2tpd restart   查看全文

使用acme.h实现网站https化

什么是acme.hacme.h就是实现了acme协议的客户端,可以从 lets encrypt 生成免费的证书。更多客户端参见 https://letsencrypt.org/zh-cn/docs/client-options/。 ACME (自动证书管理环境 - Automatic Certificate Management Environment) : 由 Let’s Encrypt 实现的协议。什么是Let's Encrypt为了在您的网站上启用 HTTPS,您需要从证书颁发机构(CA)获取证书(一种文件)。Let’s Encrypt 是一个证书颁发机构(CA)。要从 Let’s Encrypt 获取您网站域名的证书,您必须证明您对域名的实际控制权。您可以在您的 Web 主机 查看全文

ab命令做压测测试

相关概念1、吞吐率(Requests per second)概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。计算公式:总请求数 / 处理完成这些请求数所花费的时间,即Request per second = Complete requests / Time taken for tests2、并发连接数(The number of concurrent connections)概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。3、并发用户数(The number of concurrent users,Concurrency Level)概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接 查看全文

(Git学习)三十、搭建Git服务器(详细版)

CentOS搭建Git服务器及权限管理声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考。1. 系统环境系统: Linux:CentOS 7.2 64位由于CentOS已经内置了OpenSSH,如果您的系统没有,请自行安装。查看ssh版本$ ssh -V# 输出以下表示没问题,可以继续。 版本可能不一致,能用即可。 OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013避免系统环境和其他的不一致,请核对您系统的版本,其他发行版请对应修改。2. 安装git建议以下操作都切换到root# 请确保您切换到了root账户$ su root$ yum 查看全文

手把手教你用nginx开发自己的服务器------利用nginx实现负载均衡(四)------负载均衡的整体架构

之前我们讲的是用nginx做一个简单的helloworld功能,帮助大家了解一下nginx中的基本框架,今天我们就来学习下如何用nginx实现一个负载均衡服务器。为什么要先讲nginx的负载均衡模块呢?主要是nginx现在在各个大厂的应用场景主要就是做7层负载均衡和一些CDN能力了。我们还是先不急讲如何开发,先来聊聊什么是负载均衡,大厂都是怎么做负载均衡的。首先什么是负载均衡呢?很简单,就是服务器(后面我们称之为server_proxy)收到client的消息请求后,并不做处理,而是根据一定的策略将其转发给负载列表内的一台子服务器,由子服务器将这个请求处理完后再将结果返回给client。这个过程server_proxy扮演的角色就叫负载均衡器(LB,load balancer),这个功能也叫反向代理。为什么需要负载均衡呢?由于当client并发数量到 查看全文

Redis主要底层数据结构扩容

简单动态字符串如果SDS修后的长度小于1MB,则将SDS扩容为修改后的字符串长度的2倍(未使用的空间设为修改后的字符串长度)如果SDS修后的长度大于等于1MB,则将SDS扩容1MB的空间(未使用的空间设为1MB)如果字符串缩短,SDS选择惰性释放,将释放的空间使用free记录下来,以便下次使用hash触发条件扩容未执行BGSAVE,负载因子大于等于1时执行BGSAVE快照时,负载因子大于等于5时,以尽量避开服务器快照期间扩容缩容负载因子小于0.1时渐进式rehash扩缩容大小扩容,首次大于 字典里元素数量*2*2^n 缩容,   首次大于 字典里元素数量*2^n  查看全文

15、ftp服务器配置讲解

mmall.propertiesftp.server.ip=你的FTP服务器ip地址 ftp.user=mmallftp ftp.pass=ftppassword ftp.server.http.prefix=http://img.happymmall.com/ alipay.callback.url=http://www.happymmall.com/order/alipay_callback.do password.salt = geelysdafaqj23ou89ZXcj@#$@#$#@KJdjklj;D../dSF., 阅读更多 查看全文

nginx应用及安装与配置

Nginx简介:与Apache(httpd)类似,是一个开源的,支持高性能、高并发的www服务和代理服务软件,由俄罗斯人IgorSyoer开发的,最初被应用在俄罗斯的大型网站www.rambler.ru上,后来作者将源代码以类BSD许可的形式开源出来供全球使用在功能应用方面,Nginx不但是一个优秀的Web服务软件,还是具有反向代理,负载均衡功能和缓存功能。在反向代理负载均衡功能方面,它类似于大名鼎鼎的LVS、HAproxy等专业代理软件,但Ngix部署起来更为简单、方便;在缓存服务功能方面,它又类似于Squid等专业的缓存服务软件 Nginx的重要特性及应用场合:可针对静态资源高速高并发访问和缓存可使用反向代理加速,并且健康检查和容错功能支持FastCGI、Uwsgi、SCGI、Memcached加速和缓存支持SSL、TLS、SNI具有模 查看全文
加载更多