- 博客(67)
- 资源 (1)
- 收藏
- 关注
原创 2021-05-17
GOLANG命令行单独跑一个benchmark 方法:go test -bench BenchmarkGjsonUnmarshal -run =^$ -cpu=1,2,4 //BenchmarkGjsonUnmarshal为当前目录下要跑的函数
2021-05-17 11:40:59
189
原创 MySql黑科技
记录一些MySql比较少见但是有奇效的用法。IFNULL(@rownum:=@rownum+1, @rownum:=1): IFNULL函数,如果第一个表达式为NULL,则返回第二个表达式的值,否则返回第一个表达式的值。给session中定义一个变量有两种方式,set @rownum=0,或者如上IFNULL,但是IFNULL有一个问题下一次使用该session继续查询时,rownum不是从1开始,可以改成如下方式:select a.* , @rownum:=@rownum+1from stude...
2020-10-08 12:39:05
332
原创 gin使用swagger
swagger可以通过代码实时维护后台API接口,这样可以减小前端开放人员和后端开发人员因为API变更带来的矛盾。初级入门:https://razeencheng.com/post/go-swagger.html高级提升:https://github.com/swaggo
2020-06-02 17:09:30
595
原创 micro负载均衡和http入参自动检查
1. 负载均衡import ( "context" "fmt" "github.com/micro/go-micro/client" "github.com/micro/go-micro/client/selector" "github.com/micro/go-micro/registry" "github.com/micro/go-micr...
2020-03-21 16:38:49
640
原创 go-micro实战一个http服务调用一个grpc服务
1. consul启动 :consul.exe agent -server -bootstrap -ui -client 0.0.0.0 -bind 192.168.1.101 -data-dir=F:/consul_data其中,-server 代表以服务端的方式启动;-boostrap 指定自己为leader,而不需要选举;-ui 启动一个内置web界面; -client指定客户端...
2020-03-19 00:19:03
3403
原创 Bootstrap使用套路
Boostrap相应式布局(跟随设备自动调整页面),有许多现成的组件,简化前端开发。1. 到Bootstrap官方网站下载包:https://github.com/twbs/bootstrap/releases2.解压得到到包,然后复制css、front、js文件夹到项目中,这些文件夹下面的一些文件名有的带min,有的不带。带min的是精简版本,可以加快传输,一般使用在正式部署中;不带m...
2020-03-17 15:37:28
171
原创 安装k8s doashboard
1. 到github下载想要安装的版本.yaml文件。比如我想安装v1.10.1版本的,到github上kubernetes/dashboard的release v1.10.1处有kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kube...
2020-03-16 21:31:02
442
原创 golang uber log插件支持写到文件
uber zap log组建,利用lumberjack插件写到文件package logimport ( "go.uber.org/zap" "go.uber.org/zap/zapcore" "gopkg.in/natefinch/lumberjack.v2" "os" "sync" "time")var Logger *zap.Loggerfunc Releas...
2020-01-08 15:55:53
570
原创 golang实现Redis分布式自旋锁+本地自旋锁
golang使用redis的setnx实现了一个自选锁,有key超时,同时也有我们调用redis链接时的超时。package lockerimport ( "context" "github.com/go-redis/redis" "runtime" "time")type Lock struct { resource string value interface...
2020-01-06 11:15:00
1872
原创 Ubuntu下面k8s v1.13.1搭建
传送门https://gitee.com/pa/kubernetes-ha-kubeadm-private/tree/kubernetes-1.14
2020-01-04 00:59:56
351
原创 java数据结构之普里姆求最小生成树
普里姆算法求最小生成树 1. 求最小生成树就是在包含n个顶点的连通图中,找出只有(n-1)条边包含所有n个顶点的连通子图, 也就是所谓的极小连通子图 算法如下: 1. 设G=(V,E)是联通网,T=(U,D)是最小生成树,V,U是顶点集合,ED是边的集合 2. 若从顶点u开始构筑最小生成树,则从集合V中取出顶点u放入集合...
2019-10-30 14:37:17
189
原创 java数据结构之图
图: 一种多对多的数据结构,可以使用邻接矩阵来存储数据(邻接矩阵:假如有M个点,则创建 M * M 的邻接矩阵,【0,1】点表示0到1的点,如果其值不为0,则表示0到1的权值),如果边比较少,矩阵稀疏此方式比较浪费内存;这时候可以使用邻接表来存储数据(邻接表: 创建一个长度为M的数组a[M], 其中a[0]表示第0个节点,其值为一个链表,链表立里保存的是与第0个节点相链接的点),...
2019-10-30 14:35:00
208
原创 java数据结构之平衡二叉树
平衡二叉树: 解决了二叉排序树退化成链表的问题,每次插入新的节点时,都判断一下树的平衡是否已经被打破(每一颗树的左右子树高度差<=1),如果发现已经打破,则根据实际情况进行左旋转、右旋转、左右双旋转、右左双旋转。代码:package cn.agan.avltree;/** * 平衡二叉树:它是一颗空树,或它的左右两个子树的高度差的绝对只不超过1,并且左右两个...
2019-10-23 14:29:50
185
原创 java数据结构之二叉排序树
二叉排序树: 二叉排序树的左子子树的值小于父节点的值,右子树的值大于父节点的值,与父节点相等的值可约定放在左或右子树。代码:package cn.agan.binarysorttree;public class BinarySortTree { public static void main(String[] args) { int a[] = {7,...
2019-10-23 10:27:26
163
原创 java数据结构之顺序二叉树和堆
1. 顺序存储二叉树底层存储数据的时候使用数组存储,顺序二叉树性质:1. 顺序二叉树通常只考虑完全二叉树;2. 第n个元素的左子节点为 2*n +1 ;3. 第n个元素的右子节点为:2*n +2;4. 第n个元素的父节点为 (n-1)/2;5. n 表示二叉树中的第几个元素(按0开始编号).代码:public class ArrBinaryTree { p...
2019-10-23 10:23:03
209
原创 java数据结构之插值查找和斐波那契查找
插值查找:二分查找在确定中间值的位置的时候,使用的公式为: mid = (right + left) / 2 此公式可以转换为:mid = left + (right - left) / 2 上面的公式中 1/2 我们可以进行优化: 设要查找的值为 targetVal (targetVal - a[left]) / (a[right] - a[left]...
2019-10-23 10:16:28
265
原创 java数据结构与算法之二分查找
二分查找思想: 待查找数组按照一定顺序已经排好序,取数组中间位置的值,如果其值与待查找的值相等,则直接找到;如果其值大于待查找的值,待查找的值一定在初始位置与中间位置内,只需要在初始位置与中间位置内继续进行二分查找即可;如果其值小于待查找的值,则待查找的值一定在中间位置与结束位置内,只需要在中间位置与结束位置内进行二分查找即可;如果直到起始位置大于结束位置都还没有找到,则可以认为待...
2019-10-21 10:00:53
156
原创 java数据结构与算法之基数排序
基数排序思想: 将所有待比较数值统一为同样待数位长度,数位长度较短短数值前面加0, 然后从个位开始,依次将数放入个位数上对应的桶,放完数据后,又从桶中拿出数据。接着是十位数,分别求出每一个待排序数的十位,将此数放入十位对应的桶内,放完所有数后,又依次从桶中拿出数据。。。直至完成最大位数。桶排序需要预先分配10倍的原数组大小,并且其对小数、负数支持不好。代码:publ...
2019-10-18 23:18:47
154
原创 java数据结构之插入排序、希尔排序、快速排序、归并排序
1. 插入排序: 先用tmp=a[j+1]保存待插入的数,在还没有找到插入点时,直接用a[j+1] = a[j],免去每一次都交换;再插入数据后就可以跳出内部循环了。代码:public class InsertSort { public static void main(String[] args) { int len = 8000; ...
2019-10-18 17:58:14
207
原创 java数据结构之冒泡排序及其优化
冒泡排序:外层的循环用于控制进行多少次比较,内层循环用于比较,这里注意内层循环在打到上一次交换的点后,就可以不进行了。同时,如果发现内层循环没有发生交换,则说明排序已经完成,不用再进行下去了没有优化时:数组长度为:8000, 一共进行了31996000次加了优化之后:数组长度为:8000, 一共进行了31990005次代码:package cn.agan.myso...
2019-10-18 09:51:19
130
原创 java数据结构之n皇后问题
n皇后问题:每一行只能有一个皇后,每一列也只能有一个皇后,这个可以用col[edg] 数组来表示某一列是否已经有皇后;对角线 / 有如下性质:对于这种方向上经过同一条线的方格,其横(i) 纵(j)坐标的和都相等 i+j, 一共有2*n-1条这种对角线;对角线\有如下性质:对于这种方向上经过同一条对角线的方格, 其横(i) 纵(j)坐标有如下关系:i - j + n - 1都相等, 一...
2019-10-17 16:22:58
216
原创 java数据结构与算法之走迷宫
深度优先实现了一个走迷宫程序运行:原始迷宫:1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 ...
2019-10-17 10:34:16
1009
原创 Java栈实现逆波兰计算器
栈实现了一个逆波兰计算器,包含中序表达式到后缀表达式转换。运行结果:原始表达式:(3+4) * 5 - 16后缀表达式:[3, 4, +, 5, *, 16, -]算出来的结果为:19代码:package cn.agan.mystack;import java.awt.*;import java.util.ArrayList;import java.util....
2019-10-17 10:28:53
196
原创 java数据结构之栈实现表达式求值
用栈实现了一个求简单表达式值的算法。算法最后是一个同优先级的表达式,需要先入先出,这违背了栈先入后出的性质。最终使用递归解决这个问题,先把一个操作数和一个操作法pop出来,然后递归的pop,直到操作法栈为空,递归结束。package cn.agan.mystack;import java.util.Scanner;/** * 表达式计算: * 用栈来计算一个表达式的...
2019-10-16 16:51:41
642
原创 java数据结构与算法之循环单链表
循环单链表解决约瑟夫问题package cn.agan.link;/** * 约瑟夫问题: * 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中, * 39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀, * 然后...
2019-10-16 11:38:11
154
原创 java数据结构之稀疏数组
Java实现的稀疏数组package cn.agan.SparseArray;import javax.lang.model.element.NestingKind;import java.io.*;import java.util.logging.FileHandler;/** * 稀疏数组 * 原理:如果一个二维数组中,有效值占少数,0值占大多数,可以使用稀疏数组来减少内...
2019-10-15 18:05:08
127
原创 java数据结构之环形队列
底层数组实现了一个环形队列package cn.agan.queue;import java.util.Scanner;/** * 使用数组模拟队列 */public class CircularQueueDemo { public static void main(String[] args) { //创建一个队列 Circula...
2019-10-15 18:04:03
167
原创 mysql 事物锁
https://www.cnblogs.com/jukan/p/5670950.html mysql中到事物是指 一个事物(一条语句,或者多条语句)从开始到执行结束到过程,这个事物要么所有语句能够成功执行,如果期间有一条语句执行不成功,就可以使用rollback命令对前面已经执行了的语句进行回滚,让它们恢复到原来到状态。这可以保证数据到一致性。从这里我们可以看出,事物中包含锁,但是锁...
2019-08-16 21:37:42
190
原创 k8s资源对象以及yaml配置清单
k8s有五种工作负载资源控制器:1. Pod:自主式Pod,不受控制器控制,失败了,不会被自动修复。2. ReplicaSet:支持扩缩容、自动恢复达到期望的副本数、标签选择器。帮用户管理无状态的服务。3. Deployment:工作在ReplicaSet之上,还支持滚动更新、声明式定义(动态修改配置),pod数量可以大于node数量,无状态,关注群体稳定。4. StatefulS...
2019-07-10 23:37:34
1003
原创 centos上用kubeadm安装k8s、
1.设置静态IP:2.用hostnamectl set-hostname node1修改各个主机名称,并设置时区timedatectl set-timezone Asia/Shanghai #都要执行hostnamectl set-hostname master1 #master1执行hostnamectl set-hostname node1 #node1执行3...
2019-07-09 23:55:56
1035
原创 ubuntu16.04下面安装搜狗中文输入法
Ubuntu下面安装中文输入法,坑挺多的,这里做个笔记。1.首先按照这个地方下载解决依赖的软件https://jingyan.baidu.com/article/642c9d341b3ccb644a46f7ac.html即:sudo apt-get install gdebi 安装gdebi软件2.到搜狗官网下载Linux版本的搜狗输入法,将其传送到我们的Ubuntu上。3...
2019-06-01 21:59:47
570
原创 Docker数据卷和dockerfile
目录docker数据卷docker数据卷docker run -it -v /宿主机绝对路径目录:/容器内容目录 镜像名//此命令会自动创建相应的目录。命令成功之后,就建立了宿主机与容器内目录的共享,双边的改动双边都能看见。容器退出 -> 宿主机修改共享目录下面的文件 -> docker start $(docker ps -l) 此种方式可以重新启动dock...
2019-04-13 23:09:05
519
原创 Docker常用命令
一)帮助命令docker version;docker info; //详细的列车docker的版本,container版本,cpu资源,仓库等等信息;docker --help; // 类似man命令,各种命令帮助二)镜像命令docker images;列出本机上所有的镜像,REPOSITORY(镜像源) TAG(标签) ...
2019-04-12 22:18:58
227
转载 GOLANG channel常用场景介绍
发现一个介绍GO channel使用场景的文章,值得复习:https://mp.weixin.qq.com/s?__biz=Mzg3MTA0NDQ1OQ%3D%3D&mid=2247483803&idx=1&sn=7be293f3d03e892058bebbdebed68cb5&scene=45#wechat_redirect...
2019-01-26 22:42:26
2685
原创 MongoDB sort, limit. skip
在MongoDB中,当我们在find语句上同事使用sort、skip、limit时,不管他们的顺序怎么样,总是先执行sort,再执行skip,然后执行limit。如下语句:db.foo.find({}).skip(2).limit(10).sort({age: -1})数据库会先对所有记录按照age倒序排序,然后在跳过2个记录,然后返回10个记录。MongoDB记录进行排序的时候,是把所...
2019-01-14 20:08:37
1202
原创 GO组合模式
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。简单的理解就是一颗树中有根节点也有叶子节点,对于它们的增删改查,我们都使用名字同样的函数,但是具体的行为却因为注册时不一样而不一样。看下代码:package compositeimport "fmt"type Component interface { Par...
2018-12-03 12:46:09
606
1
翻译 GO建造者模式和单例模式
建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。就是一些类型它们有相同的构造流程,但是流程中具体的每一步可能有所差距。看下代码就知道了package buildertype Builder interface { Part1() Part2() Part3()}type Director struct { builder Build...
2018-11-27 14:27:30
222
翻译 GOLANG工厂模式、简单工厂模式、抽象工厂模式、创建者模式
设计模式可以大大提高代码复用性,使得程序的修改更加灵活。另外将各个功能模块抽象解耦出来,在某个模块需要更改时不至于会对整体代码进行修改,解耦的好的话只简单修改几个地方即可以切换某个模块在实现上的切换,这就提高了程序修改的灵活度,以便应对客户各种各样的需求。 大话设计模式第一章就通过写一个计算器(计算逻辑和前端显示解耦)和曹操饮酒改诗(每修改或者增加一个字就需要全部重新刻...
2018-11-27 13:14:05
1279
3
原创 GOLANG实现模板模式
模板模式可以把一个流程抽象起来,一个流程中首先调用哪一个函数,后面再调用哪一个函数,基本的流程基本是固定的。只是每一步要怎么做跟具体类型有关系,这时候就很适合用模板模式了。定义:一个抽象类公开定义了执行它的方法的方式/模板。 它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。 这种类型的设计模式属于行为型模式。但是在GOLANG的实现中,需要用到这些知识:当一个子类通过直接...
2018-11-23 21:04:24
1703
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人