自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 golang冒泡、选择、插入、快速、堆、奇偶、归并、希尔 排序思路和代码

冒泡排序算法func BubbleSort(arr []int) { // 最外层的循环表示循环几轮 for i := 0; i < len(arr); i++ { // 内侧是循环几次,注意比较的时候索引越界 // 所以我们在比较的时候只需要走到数组长度的前一个 // 因为内侧比较的时候已经加1 // 所以倒数第二个也会倒数第一个数据作比较 for j := 0; j < len(arr)-1; j++ { // 如果数组内的数据不满足条件就交换 if.

2021-12-25 15:50:41 233

原创 高效epoll详解

select 和 poll 监听文件描述符list,进行一个线性的查找 O(n)epoll: 使用了内核文件级别的回调机制O(1)cat /proc/sys/fs/epoll/max_user_watches表示用户能注册到epoll实例中的最大文件描述符的数量限制。epoll_create: 创建一个epoll实例,文件描述符epoll_ctl: 将监听的文件描述符添加到epoll实例中,实例代码为将标准输入文件描述符添加到epoll中epoll_wait: 等待epoll事件从epoll实

2021-12-21 14:28:56 156

原创 水平触发和边缘触发

水平触发(level-triggered)socket接收缓冲区不为空 有数据可读 读事件一直触发socket发送缓冲区不满 可以继续写入数据 写事件一直触发边沿触发(edge-triggered)socket的接收缓冲区状态变化时触发读事件,即空的接收缓冲区刚接收到数据时触发读事件socket的发送缓冲区状态变化时触发写事件,即满的缓冲区刚空出空间时触发读事件我理解的就是:水平触发:不断查询是否有可用的文件描述符,有的话,内核触发事件,如果数据没有处理完,内核接着触发事件(有.

2021-12-21 14:19:23 285

原创 从零单排之golang:GPM并发模型学习

单体服务如何提高它的并发量:从串行(一个人做完一件事再去做另一件事)到并发(时间片轮询:每个任务执行一段时间,好比渣男,每个女朋友都想照顾到),从并发到并行(好比电影里的多个脑袋的怪物,同一时间就可以完成吃饭、睡觉、打豆豆,三件事)IO多路复用模型(这部分有兴趣的同学可以看一下linux相关的编程):select:跨平台、实现简单,但是连接数上限低,维护一个大的数组内核拷贝问题不好解决poll:select模型的增强版,突破了1024连接数的限制epoll:事件驱动模型,创建连接后是挂.

2021-12-21 11:42:29 240

原创 从零单排之golang:mutex使用及源码详解

mutex(互斥锁)详解:互斥锁是一个值类型,实现了locker接口,所以使用的时候需要注意参数的传递,它的底层嵌套了linux的信号量(Semaphore),每次操作其实就是PV操作type Mutex struct { state int32 sema uint32}信号量解释通过操作信号量 S 来处理进程间的同步与互斥的问题。S>0:表示有 S 个资源可用;S=0 表示无资源可用;S<0 绝对值表示等待队列或链表中的进程个数。信号量 S 的初.

2021-12-21 02:30:43 183

原创 从零单排之golang:channel使用及源码详解

channel 的特性:不要通过共享内存来通信,而要通过通信来实现内存共享1. channel是一个先进先出的队列,go语言提倡使用管道来来通信2. channel在协程间通信是安全的,因为chan的底层数据结构维护一个互斥锁,在读取或者写入资源前会先获取锁3. channel分为有缓存和无缓存的管道:有缓存的管道数据写满后阻塞管道,直到有其他的协程读取管道内的数据,无缓存的管道必须有其他的协程先读取,因为无缓存的管道写入一个数据就把程序永远的阻塞住了,这时候就会产生一个死锁,无论有缓冲还是无缓冲.

2021-12-21 02:11:37 198

原创 linux 下http资源请求工具

使用命令调用接口,让平时接口的开发更加丝滑

2021-12-21 01:25:53 308

原创 gin + swagger 生成api接口文档及错误处理

gin swagger

2021-12-20 17:52:25 1127

原创 kind多节点端口映射

前面的笔记中介绍过说多节点的kind集群yaml:kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4nodes:- role: control-plane- role: worker- role: worker 这样的多节点生成后发现生成的pod竟然无法访问,查阅文档发现kind集群的端口需要和node的端口映射,官方建议是listenAddress写为0.0.0.0,并不是127.0.0.1主机端口应该是0-65535 而cont

2021-11-22 18:10:16 2922

原创 vscode 跳转golang函数定义无效

设置,查找go.docsTool,选项列表选择gogetdoc,然后保存,没有的就可以去网上安装这个工具,go get -u -v github.com/zmb3/gogetdoc

2021-11-17 19:34:57 361

原创 kind 安装及使用

Tips:以下的命令安装好自己多试几次就熟悉了 kind 安装curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.9.0/kind-linux-amd64chmod +x ./kindmv ./kind /${some-dir-in-your-PATH}/kindkubectl 安装curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.t

2021-11-17 17:30:20 3246

原创 go-micro安装及问题解决

Tips:micro安装需要go版本至少高于1.11目录Tips:micro安装需要go版本至少高于1.11consul 安装protoc 安装micro 安装protoc-gen-micro安装protoc-gen-go安装grpc安装consul 安装下载地址:Consul Versions | HashiCorp Releaseshttps://releases.hashicorp.com/consul/Tips:注意使用稳定版,因为有些新特性开发环境上..

2021-11-16 14:18:01 1263

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除