实用技术
文章平均质量分 60
wilson_go
这个作者很懒,什么都没留下…
展开
-
windows如何查看本地代理的ip
curl -v "cip.cc"原创 2021-09-27 19:46:03 · 5549 阅读 · 0 评论 -
分布式锁
分布式锁的实现方式有以下三种方式:「数据库分布式锁、Redis实现分布式锁、ZooKeeper实现分布式锁」。为什么需要分布式锁呢?在很久以前,用户群体不大的时候,单体应用就可以足够满足用户的所有请求,当用户增加的时候,出现了一定的并发度,可以使用简单的锁机制来协调并发的共享资源的获取。但是,随着业务的增大,用户数量的增加,为了满足业务的高效性,集群的出现,简单的锁机制已经不能够满足协调多个应用之间的共享资源了,于是就出现了分布式锁。分布式锁是协调集群中多应用之间的共享资源的获取的一种方式,可以说它是原创 2021-03-04 14:10:00 · 497 阅读 · 1 评论 -
shell复杂操作
1.将一天前的数据移动到另外一个文件夹中 for i in `ls`; do echo $i; day=`ls -al $i | awk '{print $7}'`; if [ $day -lt 10 ]; then mv $i ../chapters_bak/ ; fi ; done原创 2019-04-10 15:44:17 · 217 阅读 · 0 评论 -
MySQL开窗函数
文章目录创建表的语句row_number()overrank()overDENSE_RANK()NTILE(4)分组函数,分成4个组创建表的语句语法格式:row_number() over(partition by 分组列 order by 排序列 desc)row_number() over()分组排序功能:在使用 row_number() over()函数时候,over()里头的分组...原创 2019-03-19 14:07:47 · 20001 阅读 · 4 评论 -
wrk性能测试神器
安装首先从github上拉取代码git clone https://github.com/wg/wrk.git进行make然后 make install最后将wrt复制到bin目录下,就能执行wrt命令了。例如:wrk -t1 -c400 —timeout 5s -d 100s —latency ‘http://localhost:8080/index.html‘wrk ...原创 2019-03-01 16:38:52 · 1415 阅读 · 0 评论 -
一致性算法- Raft节点状态
raft集群中节点状态follower(跟随者):所有节点都以follower的状态开始。如果没有收到leader消息则会变成candidate状态。candidate(候选人):会向其他节点拉选票,如果得到大部分的票则成为leader。这个过程叫做Leader选举(Leader Election).leader(领导者):所有对系统的修改都会先经过leader....原创 2019-02-10 14:46:36 · 855 阅读 · 0 评论 -
雪崩
“雪崩”指的是访问服务集群时绝大部分请求都超时,且在流量减少时仍无法恢复的现象。下面解释这个现象的来源。当流量超出服务的最大qps时,服务将无法正常服务;当流量恢复正常时(小于服务的处理能力),积压的请求会被处理,虽然其中很大一部分可能会因为处理的不及时而超时,但服务本身一般还是会恢复正常的。这就相当于一个水池有一个入水口和一个出水口,如果入水量大于出水量,水池子终将盛满,多出的水会溢出来。但如...原创 2019-01-22 19:00:25 · 620 阅读 · 0 评论 -
brpc
百度内最常使用的工业级RPC框架, 有1,000,000+个实例(不包含client)和上千种多种服务, 在百度内叫做"baidu-rpc". 目前只开源C++版本。你可以使用它:搭建能在一个端口支持多协议的服务, 或访问各种服务restful http/https, h2/gRPC。使用brpc的http实现比libcurl方便多了。从其他语言通过HTTP/h2+json访问基于proto...原创 2019-01-22 18:57:08 · 859 阅读 · 0 评论 -
SnowFlake算法
为了达到业务的幂等,必须要有这样一个 id 存在,需要满足下面几个条件:同一业务场景要全局唯一。该 id 必须是在消息的发送方进行产生发送到 MQ。消费端根据该 id 进行判断是否重复,确保幂等。在那里产生,和消费端进行判断等和这个 id 没有关系,这个 id 的要求就是局部唯一或者全局唯一即可,由于这个 id 是唯一的,可以用来当数据库的主键,既然要做主键那么之前刚刚好发过一篇文章:从开...原创 2019-01-17 09:25:33 · 319 阅读 · 0 评论 -
Kubernetes(K8s)
Kubernetes(K8s)是Google在2014年发布的一个开源项目。据说Google的数据中心里运行着20多亿个容器,而且Google十年多前就开始使用容器技术。最初,Google开发了一个叫Borg的系统(现在命名为Omega)来调度如此庞大数量的容器和工作负载。在积累了这么多年的经验后,Google决定重写这个容器管理系统,并将其贡献到开源社区,让全世界都能受益。这个项目就是Kube...原创 2019-01-28 00:15:55 · 531 阅读 · 0 评论 -
Go语言中使用JSON
Encode将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error:func Marshal(v interface{}) ([]byte, error)Marshal函数将会递归遍历整个对象,依次按成员类型对这个对象进行编码,类型转换规则如下:bool类型 转换为JSON的Boolean整数,浮点数等数值类型 转换为JSON的Numberstr...原创 2019-02-01 09:48:09 · 660 阅读 · 0 评论 -
git pull和git pull --rebase的使用
git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase原创 2019-02-01 09:47:14 · 1927 阅读 · 0 评论 -
etcd的webUI启动
wilson@wilson-ThinkPad-E480:~/e3w$ sudo docker-compose upCreating network “e3w_default” with the default driverPulling etcd (soyking/etcd-goreman:3.2.7)…3.2.7: Pulling from soyking/etcd-goreman8b2...原创 2019-01-15 09:54:46 · 2667 阅读 · 1 评论 -
Go语言解析TOML文件
通过反射的Go的TOML解析器和编码器TOML全称为Tom’s Obvious,Minimal Language。 这个Go包提供了一个类似于Go的标准库json和xml包的反射界面。 此包还支持encoding.TextUnmarshaler和encoding.TextMarshaler接口,以便自定义数据表示。package mainimport ( "fmt" "time" ...原创 2019-01-23 18:11:10 · 3077 阅读 · 1 评论 -
rm -rf *命令解决
rm -rf / home/wilson/logs/幸运的是测试环境执行,在生产环境不堪设想。多了一个空格一、命令替换在生产环境将rm -rf 命令替换为mv,再写个定时shell定期清理。二、收拢权限帐号权限的分离,线上分配work帐号,只能够删除/home/wilson/logs/目录,无法删除根目录。在大公司权限管理非常规范,小公司就得靠自觉。三、使用&&(...原创 2019-01-02 12:37:53 · 3523 阅读 · 0 评论 -
k8s常见操作命令
获取所有的命名空间kubectl get namespaces首选根据pod的命名空间来进行获取所有的podkubectl get pod -n **命名空间的名称**-o是output wide是显示更加详细的信息kubectl get pod -n **命名空间的名称** -o wide指定命名空间查看标准输出和标准错误信息kubectl logs -f pod名称 -n ...原创 2019-03-23 13:20:35 · 560 阅读 · 0 评论 -
Centos7另外安装python3
首先下载Python3的相关依赖yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc makewget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tar.xz解压...原创 2019-04-04 20:33:38 · 224 阅读 · 0 评论 -
nodejs查看浏览器缓存
清除所有的缓存localforage.clear()查看所有的信息localforage.keys().then(data => {console.log(data)})删除指定键的信息localforage.removeItem('bookChapters')原创 2019-08-12 16:27:06 · 617 阅读 · 1 评论 -
micro undefined: grpc.ForceCodec
使用如下命令,即可go get -u google.golang.org/grpc原创 2019-08-13 18:04:05 · 481 阅读 · 0 评论 -
行为性设计模式
模板方法模式具有统一的操作步骤或操作过程具有不同的操作细节存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同。在抽象类中统一操作步骤,并规定好接口;让子类实现接口。这样可以把各个具体的子类和操作步骤解耦合。命令模式 将一个请求封装为一个对象,从而让我们可用不同的请求对客户端进行参数化:命令模式可以将请求发送者和接受者完全解耦,发送者与接收者之间没有直接引用关系,发送请...原创 2019-07-16 09:17:39 · 210 阅读 · 0 评论 -
程序员交流的艺术
程序员除了给人一种发际线偏高的感觉外,很闷很宅很难沟通应该也是丢给大家的印象之一!但往往有效的沟通又是程序员所必备的一项技能,因为掌握说话的方式技巧,可以有效避免一些无谓的争端,甚至是暴力血腥的场面发生!例如程序员与产品经理的沟通!如果你是一个很难用语言准确的将内心想法表达出来的程序员,一定要谨言慎行!因为一个人的情商、修养和眼界从你的说话方式当中就可以淋漓尽致的表现出来!人之高低,一张口高下立...原创 2019-06-14 20:25:43 · 187 阅读 · 0 评论 -
requests发送post请求
import requests, jsonurl_mul = ‘http://httpbin.org/post’files = {‘file’: open(’./userinfo.txt’, ‘rb’)}r = requests.post(url_mul, files=files)print®print(r.text)print(r.content)...原创 2019-06-19 19:50:45 · 2308 阅读 · 0 评论 -
插入排序与冒泡排序区别
golang以数组的方式创建二叉树前序遍历 中序遍历 后序遍历原创 2019-06-13 19:58:25 · 1590 阅读 · 0 评论 -
golang文件上传
方法一如果使用的是beego框架this.Ctx.Input.RequestBody通过这个方法,其中文件的内容就包含在其中。采用post方法方法二func uploadHandler(w http.ResponseWriter, r *http.Request) { file, err := os.Create("./newFile.png") if err != nil {...原创 2019-05-25 20:34:32 · 2500 阅读 · 0 评论 -
pyhon中返回的网页为中文乱码
import requestsresponse = requests.post('https://www.suimeng.com/modules/article/search.php?searchkey={}'.format('全球高武'))print('status_code:',response.status_code)if response.status_code == 200: ...原创 2019-04-13 15:33:18 · 437 阅读 · 0 评论 -
大文件拷贝
创建一个会话 screen -S rsync编辑一个会话screen -r rsync保存退出 ctrl+a ctrl+d原创 2019-04-12 18:30:36 · 388 阅读 · 0 评论 -
python中\u编码
from urllib.parse import quotes=‘images.dmzj.com/m/\u5192\u9669\u738b\u6bd4\u7279/56_1548733081/JOJO_000.png’s=s.replace(’/’,’/’)print(’:::’,quote(s))::: images.dmzj.com/m/冒险王比特/56_1548733081/JOJ...原创 2019-04-12 01:16:46 · 4554 阅读 · 0 评论 -
Url编码/解码
foo://example.com:8042/over/there?name=ferret#nose \_/ \______________/ \________/\_________/ \__/ | | | | | scheme ...原创 2019-04-12 00:52:04 · 378 阅读 · 0 评论 -
ActiveMQ消息队列
更新中…进入http://activemq.apache.org/download-archives.html下载ActiveMQ解压至/usr/local/下启动 ./activemq start原创 2018-12-10 16:49:14 · 234 阅读 · 0 评论 -
Fastdfs和nginx整合下载时浏览器400错误
通过查看nginx的日志文件,发现报错: ERROR - file: …/common/fdfs_global.c, line: 52, the format of filenameitcast@itcast:/usr/local/nginx/conf$ tail -20f /usr/local/nginx/logs/error.log[2018-12-14 22:34:53] ERROR -...原创 2018-12-14 22:46:10 · 3643 阅读 · 0 评论 -
golang与protobuf
编写test.proto:package example;enum FOO { X = 17; };message Test {required string label = 1;optional int32 type = 2 [default=77];repeated int64 reps = 3;optional group OptionalGroup = 4 {requi...原创 2018-12-06 20:57:26 · 492 阅读 · 0 评论 -
redis的底层原理总结
redis单点吞吐量单点TPS达到8万/秒,QPS达到10万/秒。redis的5中存储类型string、list、set、map(hash)、stored-setredis的string类型能表达3中类型:字符串、整数和浮点数。根据场景相互间自动转型,并且根据需要选取底层的承载方式 value内部...转载 2018-10-26 18:51:56 · 2952 阅读 · 1 评论 -
crontab相关介绍
使用crontab你可以在指定的时间执行一个shell脚本或者一系列Linux命令。crontab 启动 依赖 crontabs包和 crond服务, crond服务使用的crontab定义的命令因此需要:service crond start (有的是service cron start)或者/etc/rc.d/init.d/crond start加入开机自动启动:chkco...原创 2018-10-29 19:57:26 · 753 阅读 · 0 评论 -
shell编程
Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本,常见的脚本解释器有:bash:是Linux标准默认的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。sh: 由Steve Bourne开发,是Bourne Shell的缩写,sh 是Unix 标准默认的shell。另外还有:ash、 csh、...原创 2018-10-29 08:46:16 · 599 阅读 · 0 评论 -
yaml文件
yaml是一种专门用来写配置的语言,简洁强大它的规则:1、大小写敏感2、使用缩进表示层级关系,但不支持tab缩进,只支持空格3、缩进的数量不重要但至少一个空格,只要相同层级使用相同数量的空格即可4、“#”表示注释,从这个字符开始,直到行末,编译器不会对其进行处理Lists:就是一个列表,args-beijing-shanghai-shenzhen-guangzhou...原创 2018-10-28 11:22:58 · 882 阅读 · 0 评论 -
通过码云来管理代码
一、为何使用码云       就个人学习而言,如果在自己的电脑上跑一个gitlab服务器,那么势必很消耗内存,而码云不是在我们本地运行,因此对内存来说要求很低。二、码云的使用      首先就是注册,注册完之后新建自己的项目三、生成公钥  &转载 2018-10-17 20:12:07 · 1064 阅读 · 0 评论 -
CentOS6设置静态IP可上网
最近在学习大数据,在学习的时候碰到了一个问题就是给CentOS虚拟机配置静态IP后,就无法访问网络了,这个问题纠结了我好长时间,现在终于找到解决方法了,赶紧记录下来,以备以后查询。注: 我这里说的方法适用于CentOS6版本 第转载 2018-10-17 20:09:21 · 424 阅读 · 0 评论 -
package golang.org/x/crypto/ssh/terminal: unrecognized import path "golang.org/x/crypto/ssh/terminal
go get github.com/weilaihui/fdfs_client解决方案:首先在gopath文件夹创建golang.org/x,然后git clone crypto和sys.git,具体如下:package main import ( "github.com/weilaihui/fdfs_client" "fmt" ) f...原创 2018-10-17 19:47:05 · 1867 阅读 · 0 评论 -
fastdfs启动与停止示例
停止:ps -ef | grep nginx使用kill -9 删除相应的nginx2.killall fdfs_trackerdkillall fdfs_storaged停止nginx 和fdfs启动:cd /usr/local/bin/sudo fdfs_trackerd /etc/fdfs/tracker.confsudo fdfs_storaged /etc/fdfs...原创 2018-10-14 21:02:30 · 7295 阅读 · 0 评论 -
yum源的配置详解
1、本地yum仓库的安装配置 两种方式: a、每一台机器都配一个本地文件系统上的yum仓库 file:///packege/path/ b、在局域网内部配置一台节点(server-base)的本地文件系统yum仓库,然后将其发布到web服务器中,其他节点就可以通过http://server-base/pagekege/path/ 制作流程: 先挑选...原创 2018-09-08 00:25:19 · 1053 阅读 · 0 评论