![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习
疾风行
行如疾风
展开
-
docker入门,docker学习
docker的一些常用命令原创 2022-11-21 18:18:18 · 277 阅读 · 1 评论 -
通过NGINX实现服务热部署
版本发布中的痛点我们采用的beego或gin等框架编写的web服务器,在发布新版本时会重启服务,短暂的服务重启对于后台类型的服务影响不大,但是对于api这种高可用的接口就会造成部分502,我们的adv和dass的QPS很高,重启一次就会造成几十到几百次访问失败,体验较差行业解决方案类似 docker + k8s 等集群管理系统,体量太大,对于运维的要求比较高类似于php-fpm或者nginx的 master-slave方式,我们用的框架支持,需要开发类似于 graceful、endless等热启原创 2022-03-24 15:11:45 · 1772 阅读 · 0 评论 -
大量的数据mysql查询最新的记录慢问题
场景描述最近我们网站出现刚写入的一些数据查询起来特别慢的问题:两条结构一样的语句,但是执行效率差了很远。数据大概1.4亿条表索引:表结构:问题语句:1.SELECT * FROMlog_login_server_202203WHERE game in ('mhkftios') AND (timestamp BETWEEN 1647878400 AND 1648051199) ORDER BY id desc LIMIT 10;2.SELECT * FROMlog_login_server原创 2022-03-24 11:25:32 · 2000 阅读 · 1 评论 -
堆排序算法详解
1.算法描述:首先建一个堆,然后调整堆,调整过程是将节点和子节点进行比较,将 其中最大的值变为父节点,递归调整调整次数lgn,最后将根节点和尾节点交换再n次 调整O(nlgn).2.算法步骤(1)创建最大堆或者最小堆(我是最小堆)(2)调整堆(3)交换首尾节点(为了维持一个完全二叉树才要进行收尾交换)3.算法go代码package sortimport "fmt"//堆排序func main() { arr := []int{1, 9, 10, 30, 2, 5, 45, 8,原创 2021-11-03 18:02:51 · 148 阅读 · 0 评论 -
快速排序算法详解
一、算法代码1.算法步骤(1)将数据根据一个值按照大小分成左右两边,左边小于此值,右边大于(2)将两边数据进行递归调用步骤1(3)将所有数据合并2.算法代码func QuickSort(arr []int) []int { if len(arr) <= 1 { return arr } splitdata := arr[0] //第一个数据 low := make([]int, 0, 0) //比我小的数据原创 2021-10-29 12:02:47 · 116 阅读 · 1 评论 -
SSH秘钥生成和使用
1.linux下生成ssh秘钥[root@localhost ~]# ssh-keygen -t rsa #生成密钥对,-t代表类型,有RSA和DSA两种Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): #密钥文件默认存放位置,按Enter即可Created directory ‘/root/.ssh’.Enter passphrase (e原创 2021-10-27 14:30:24 · 474 阅读 · 0 评论 -
go函数的匿名调用,inject/Invoke,protobuf方法的调用
一、由于以前的代码是通过pb来传输数据的,大体流程是:前端—>后端的接口–>后端再请求pb服务接口。示例代码如下:1.接收前端参数// @Summary LTV趋势// @Description LTV趋势// @Tags 投放数据/LTV数据// @Accept application/json// @Product application/json// @Param data body dass.GetLtvDataListRequest true "body"// @Su原创 2021-09-09 11:25:27 · 620 阅读 · 1 评论 -
go websoket 第三方gorilla/websocket包
一、websocket是由长链接和轮询进化而来,当建立连接之后,不断开连接,开闭一个数据传输通道数据格式为[]byte。后端会一直保留这个进程。1.WebSocket 和 HTTP 实际上都是一个TCP链接。http请求可以通过设置header的方式升级成websoket 长链接二、具体代码package websoketimport ( "fmt" "github.com/gorilla/websocket" "log" "net/http" "strconv" "time")原创 2021-09-03 15:35:29 · 1089 阅读 · 0 评论 -
最大和:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和
一、题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [0]输出:0示例 4:输入:nums = [-1]输出:-1示例 5:输入:nums = [-100000]输出:-100000题目来源:来源:原创 2021-08-30 16:08:30 · 1848 阅读 · 0 评论 -
go 栈 验证符号是否正确
一、使用栈来验证符号是否正确1.输入字符串"()","()[]{}","(]","([)]" 输出true,true,false,false验证括号是否正确二、代码package mainimport ( "fmt" "strings")//主函数func main() { fmt.Println(isValid("()")) fmt.Println(isValid("()[]{}")) fmt.Println(isValid("(]")) fmt.P原创 2021-08-21 11:33:03 · 103 阅读 · 0 评论 -
mysql order by和group,where的执行顺序
Mysql - ORDER BY详解0 索引1 概述2 索引扫描排序和文件排序简介3 索引扫描排序执行过程分析4 文件排序5 补充说明6 参考资料1 概述MySQL有两种方式可以实现ORDER BY:1.通过索引扫描生成有序的结果2.使用文件排序(filesort)围绕着这两种排序方式,我们试着理解一下ORDER BY的执行过程以及回答一些常见的问题。(下文仅讨论InnoDB存储引擎)2 索引扫描排序和文件排序(filesort)简介我们知道InnoDB存储引擎以B+树作为索引的转载 2021-08-18 09:45:54 · 2463 阅读 · 0 评论 -
git 命令大全 gitlab,githab
一、git常见的命令1.在当前目录新建一个Git代码库:$ git init2.新建一个目录,将其初始化为Git代码库:$ git init [project-name]3.下载一个项目和它的整个代码历史:$ git clone [url]4.显示当前的Git配置:$ git config --list5.编辑Git配置文件:$ git config -e [–global]6.设置提交代码时的用户信息:$ git config [–global] user.name “[name]”7.设置原创 2021-08-09 16:02:42 · 245 阅读 · 0 评论 -
go golang 协程池操作
一、大体流程和思路基本思路:协程池有三个参数,协程的最大数,任务队列,等待处理结束。先把协程池启动起来,然后把要处理的事情放进队列里面,所有协程从队列里面拿事情去处理,等待协程处理完毕所有事情,关闭协程池。二、具体做法定义一个结构体//具体的任务type Job struct { Fn func() error Wait chan error}// 协程池// 1. 生产者可以等待消费完成后, 退出type Pool struct { max int /原创 2021-07-08 17:20:46 · 1664 阅读 · 0 评论 -
go golang modules环境参数详解 GO111MODULE,GOPROXY,GOSUMDB,GOPATH,GOROOT
一、参数的粗略解释set GO111MODULE=on //是否以Go modules的模式运行项目 auto,on,offset GOARCH=amd64 //目标可执行程序操作系统构架 包括 386,amd64,armset GOBIN= //项目的第三方可执行文件目录set GOCACHE= //项目的缓存目录set GOENV= //项目的env文件目录set GOEXE=.e原创 2021-07-06 11:25:51 · 794 阅读 · 0 评论 -
go 聊天室开发详解 channel chan 协程 并发执行
一、思路定义好3个通道 entering,leaving,massages分别为登录,登出(单向输入通道)和信息(双向通道)。开启两个协程,一个协程负责监听通道是否有输入或输出,一个协程负责组织发送的内容和流程的控制二、具体代码加详细说明package Controllerimport ( "bufio" "fmt" "log" "net")//聊天室func MassagesStart(){ listener, err := net.Listen("tcp", "local原创 2021-06-30 16:16:43 · 475 阅读 · 2 评论 -
go golang 链式开启多协程处理数据 并发
一、大体思路 把所有要处理的方法放在同一个切片当中,然后循环去开启多个协程处理这些方法二、具体做法1.定义两个结构体 用来存储要处理的方法和存储它下一个要多协程处理的方法,主要目的是要链式的连接下去//定义一个接口 起到一个连接作用type job interface { doItJob() error}//多个协程一次做的事情 并且实现job这个接口type JustDoIt struct { fn []func() //多协程要处理的方法 nextFunc job原创 2021-06-28 16:45:12 · 2042 阅读 · 0 评论 -
go语言数组,切片(slice),map的区别
一、数组,slice,map的定义1.数组:数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。声明方式:var a [3]int2.slice(切片):Slice(切片)代表变长的序列,序列中每个元素都有相同的类型,slice的语法和数组很像,只是没有固定长度而已。3.map:在Go语言中,一个map就是一个哈希表的引用,是一个无序的key/value对的集合二、注意事项1.切片 扩容之后会生成新的地址2.map里面的数据循环出来是随机无序的3.make只能为sl原创 2021-06-01 14:16:58 · 1350 阅读 · 0 评论 -
go grpc protoc proto生成go文件
一、简介因为项目需要,正在学习go语言的路上。要把.proto文件生成.go文件二、步骤1.安装goland安装一个可以打开proto文件的插件2.安装protoc仓库下载地址 https://repo1.maven.org/maven2/com/google/protobuf/protoc/选择对应的版本3.根据自己的环境选择对应的文件下载之后是一个可执行文件,可以放在环境变量里面把后缀全删掉 如:%GOPATH%\bin\protoc.exe4.安装 protoc-gen-go原创 2021-05-20 16:44:49 · 1299 阅读 · 0 评论 -
mysql MyISAM与InnoDB索引的区别
问题1:下面的选项使用了哪些索引(联合索引(c1,c2,c3,c4))A :where c1=x and c2=x and c4>x and c3=xB :where c1=x and c2=x and c4=x order by c3C :where c1=x and c4= x group by c3,c2D :where c1=x and c5=x order by c2,c3E :where c1=x and c2=x and c5=? order by c2,c3问题2:为什么B原创 2021-04-25 22:00:17 · 164 阅读 · 0 评论 -
mongodb 聚合查询 aggregate操作 group 分组统计
一、mongodb 的group 里面可以实现很多的操作1.如下代码$maxLogID=sysconf('maxLogID'); $where['LogID'] = array('$gt' => (int)$maxLogID); $where['WinGold'] = array('$gt' => 0); $pipe = array( array( '$match' => $wher原创 2021-04-14 18:38:37 · 1314 阅读 · 0 评论 -
php bcdiv和bcmul 函数的怪异现象
一、简介我要实现这样一个表达式z=总奖金n=总名数i=自己的排民((n-i+1)/(1+2+3+…n))*z这是一个分配奖金的式子。我试着用php的bc函数进行操作发现以下两种写法得出不一样的结果表达式1:arr[arr[arr[i]=bcmul(bcdiv((51-i),i),i),num,2),reward[′Leaderboard′],0);表达式2:reward['Leaderboard'],0);表达式2:reward[′Leaderboard′],0);表达式2:arr[i]=b原创 2021-04-13 18:47:01 · 889 阅读 · 1 评论 -
mongodb 聚合查询 $sum
##mongodb 聚合查询 $sum 1.字段的类型必须相同 比如 ![数据字段类型](https://img-blog.csdnimg.cn/2020091815523675.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTE1Njk1Mw==,size_16,color_FFFFFF,t_70#pic_cent原创 2020-09-18 17:09:27 · 3285 阅读 · 0 评论 -
JWT 原理 加代码
一、说明现在大部分的api请求会使用到 JWT(json web token),是基于Json的一个公开规范,这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息,他的两大使用场景是:认证和数据交换使用起来就是,由服务端根据规范生成一个令牌(token),并且发放给客户端。此时客户端请求服务端的时候就可以携带者令牌,以令牌来证明自己的身份信息。jwt 会有3部分被:第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(s原创 2021-04-12 14:23:03 · 279 阅读 · 0 评论 -
ios支付 内购支付 app store connect and
一、开发情景公司业务需要,让我把客户在ios内购的订单从ios那边拉取到我们平台进行对比。然后我了解到ios只能通过app store connect下载报表,支付的时候会有一个退款url 用户退款的时候会通知你。ios接口地址https://developer.apple.com/documentation/technologies二、配置退款通知url 在app store connect里面配置1.找到我的app->选择你的app点进去->app信息->综合信息-&原创 2021-04-12 13:56:24 · 422 阅读 · 0 评论 -
c++ 推箱子小游戏
一、简介这个小游戏是我开始学c++的时候写的,它里面实现了推箱子的逻辑和界面展示二、思路1.它界面素材有:背景图,人物,墙,箱子,目标,空地,成功图这样7个2.把图按照一行一行的进行分组 并用数字把图片的位置和信息表示出来下面是我进行的切片素材把图片分成7*8组 表示如下3.加载图片并渲染页面(注意:图片等资源要先引用到项目)4.玩耍(具体的逻辑我就不多说了直接上代码)5.截图三、源代码#include <iostream>#include "resour原创 2021-03-29 17:21:20 · 1155 阅读 · 0 评论 -
c++ 自动给好友发送消息
一、思路1.创建c++ 控制器文件项目2.获取聊天窗口的句柄3.向聊天窗口出入聊天消息4.模拟发送二、代码#include #include <Windows.h>int main(){using namespace::std;for (int i = 0; i < 1000; i++){Sleep(550);//50毫秒输出一次HWND WIN = FindWindowA(NULL, “xx”);TCHAR text[256] = TEXT(“我给你发一万次原创 2021-03-25 16:20:31 · 3463 阅读 · 9 评论