自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 收藏
  • 关注

原创 go语言中的接口实现

type Reader interface { Read(p []byte) (n int, err error)}type MyIoReader struct{ UploadFileSize int UploadeSize *int//这样用是因为Read不能用指针this,要不编译不过 Count int//test (this *MyIoReader...

2019-08-31 18:02:38 955

转载 Go语言并发机制初探

Go语言并发机制初探 Go 语言相比Java等一个很大的优势就是可以方便地编写并发程序。Go 语言内置了 goroutine 机制,使用goroutine可以快速地开发并发程序, 更好的利用多核处理器资源。这篇文章学习 goroutine 的应用及其调度实现。 一、Go语言对并发的支持使用goroutine编程使用 go 关键字用来创建 goroutine 。将go声明放到...

2019-01-18 09:55:43 254

转载 go runtime.Gosched()的作用分析

go runtime.Gosched()的作用分析untime.Gosched()用于让出CPU时间片。这就像跑接力赛,A跑了一会碰到代码runtime.Gosched()就把接力棒交给B了,A歇着了,B继续跑。看代码:package main import ("fmt""runtime") func say(s string) {for i := 0...

2019-01-17 11:27:59 437

转载 golang多核设置

golang多核设置单核执行如果for前面或者中间不延迟,主线程不会让出CPU,导致异步的线程无法执行,从而无法设置flag的值,从而出现死循环实例代码:package mainimport ( "fmt" "runtime" _ "time")var ( flag = false str  string)func foo() { flag = tru...

2019-01-17 11:17:01 944

转载 go语言之行--golang核武器goroutine调度原理、channel详解

go语言之行--golang核武器goroutine调度原理、channel详解2018.07.06 21:46 1804浏览一、goroutine简介goroutine是go语言中最为NB的设计,也是其魅力所在,goroutine的本质是协程,是实现并行计算的核心。goroutine使用方式非常的简单,只需使用go关键字即可启动一个协程,并且它是处于异步方式运行,你不需要等它运行完成...

2019-01-17 11:07:39 324

原创 服务注册与发现

       consul提供服务注册与健康检查功能,服务使用方可监视对应服务的情况(要启动专用线程),但是没找到对应的使用方式。 只找到一个建康检查的接口(示例:http://localhost:8500/v1/health/service/test_server?passing),通过定时调用该接口可获取健康的服务列表,与之前的相比较,然后做相应工作。       etcd注册服务时可...

2018-12-07 11:04:17 582

原创 python grpc示例

1.环境安装:pip install grpciopip install protobufpip install grpcio-tools2.新建proto文件grpchello.proto,定义接口,内容如下:syntax = "proto3";package grpcDemo;message HelloRequest { string name = 1;}...

2018-12-07 10:29:41 1229

原创 python3相关包安装工具pip

1.首先安装python32.下载pip包3.解压,并运行如下安装:(如果要更新python2的pip,只需将python3换成python即可)sudo python3 setup.py buildsudo python3 setup.py install4.用pip3是安装python3的包,用pip是安装python2的包 ...

2018-12-07 10:03:25 172

原创 数据库相关

数据库的设计:分库分表,内存数据库,主从读写分离,数据库中间件mycat(集成了主从读写分离,分库分表等功能) 数据库优化:sql语句优化,数据库配置优化,索引优化,数据库设计优化 数据库的锁:1.乐观锁,表中增加版本字段,每次更改加1,查的时候先把版本字段查出来,更新的时候加上条件版本字段没变,并将版本字段加1更新2.悲观锁:分共享锁和独占锁,insert, delete, ...

2018-08-09 10:47:44 149

转载 mysql联合索引

mysql联合索引命名规则:表名_字段名1、需要加索引的字段,要在where条件中2、数据量少的字段不需要加索引3、如果where条件中是OR关系,加索引不起作用4、符合最左原则https://segmentfault.com/q/1010000003984016/a-1020000003984281联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个...

2018-08-09 10:41:33 134

转载 Python格式化字符格式化

Python格式化字符 %s %d %f格式 描述%% 百分号标记 #就是输出一个%%c 字符及其ASCII码%s 字符串%d 有符号整数(十进制)%u 无符号整数(十进制)%o 无符号整数(八进制)%x 无符号整数(十六进制)%X 无符号整数(十六进制大写字符)%e 浮点数字(科学计数法)%E 浮点数字(科学计数法,用E代替e)%f 浮点数字(用小数点符号)%g 浮点数字(根据值的大小采用%e或...

2018-07-13 10:33:38 551

原创 go网络框架思路

主协程:负责接收客户端的连接,放至连接通道中去。读协程组:负责从连接通道中取连接,并读到客户端的数据,读完后放至工作数据通道中去。(包含客户端的连接socket和读到的数据)工作协程组:负责从工作数据通道中取数据,做相应工作,比如:网络相关,数据库相关等操作,工作协程组将返回数据准好后放至写数据通道中去。(包含客户端的连接socket和要返回的数据)写协程组:负责从写数据通道中拿写数据,负返回给客...

2018-07-08 13:41:22 503

转载 Linux UDP socket 设置为的非阻塞模式与阻塞模式区别

UDP socket 设置为的非阻塞模式 ?1Len = recvfrom(SocketFD, szRecvBuf, sizeof(szRecvBuf), MSG_DONTWAIT, (struct sockaddr *)&SockAddr,&ScokAddrLen);UDP socket 设置为的阻塞模式 ?1Len = recvfrom(SocketFD, szRecvBuf,...

2018-07-05 20:15:30 5208

转载 Linux编程之PING的实现

Linux编程之PING的实现 PING(Packet InterNet Groper)中文名为因特网包探索器,是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把回复报文传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。所以,我们想知道我这台主机能不能和另一台进行通信,我们首先需要确...

2018-06-27 12:02:41 1129

转载 并发无锁环形队列的实现

前面在《Linux内核数据结构kfifo详解》一文中详细解析了 Linux  内核并发无锁环形队列kfifo的原理和实现,kfifo鬼斧神工,博大精深,让人叹为观止,但遗憾的是kfifo为内核提供服务,并未开放出来。剑不试则利钝暗,弓不试则劲挠诬,鹰不试则巧拙惑,马不试则良驽疑,光说不练是不能学到精髓的,下面就动手实现自己的并发无锁队列UnlockQueue(单生产者单消费者)。一、UnlockQ...

2018-06-25 11:20:27 2065

转载 性能优化实战:百万级WebSockets和Go语言

SegmentFault首页问答专栏讲堂发现搜索立即登录免费注册曼托斯 发布于 技术译文 关注专栏2017年09月14日  ·  7.9k 人阅读性能优化实战:百万级WebSockets和Go语言 golang go语言 并发 内存 性能优化9翻译原文链接 转帖/转载请注明出处原文链接@medium.com 发表于2017/08/03大家好!我的名字叫Sergey Kamardin。我是来自Mai...

2018-06-22 09:48:15 3126

转载 golang go-sql-drive mysql连接池的实现

golang go-sql-drive mysql连接池的实现golang内部自带了连接池功能,刚开始接触golang的时候不了解这个,还自己搞了一个 sql.Open的对象管理池,真的非常囧啊。sql.Open函数实际上是返回一个连接池对象,不是单个连接。在open的时候并没有去连接数据库,只有在执行query、exce方法的时候才会去实际连接数据库。在一个应用中同样的库连接只需要保存一个sql...

2018-06-21 16:19:31 5648

转载 golang sql连接池的实现解析

golang sql连接池的实现解析golang的”database/sql”是操作数据库时常用的包,这个包定义了一些sql操作的接口,具体的实现还需要不同数据库的实现,mysql比较优秀的一个驱动是:github.com/go-sql-driver/mysql,在接口、驱动的设计上”database/sql”的实现非常优秀,对于类似设计有很多值得我们借鉴的地方,比如beego框架cache的实现...

2018-06-21 16:06:38 943

转载 beego框架之orm的使用

beego框架之orm的使用  最近想项目接触到了用go语言来操作数据库msyql,用到了beego的orm,beego ORM(Object Relational Mapping) 是一个强大的 Go 语言 ORM 框架。它的灵感主要来自 Django ORM 和 SQLAlchemy。功能还是比较强大的。 目前beego-orm支持的数据有: - MySQL:https://github.co...

2018-06-21 16:04:03 3045

转载 go 短连接和长连接 超时处理

go 短连接和长连接 超时处理作为一个可能会和很多Client进行通讯交互的Server,首先要保证的就是整个Server运行状态的稳定性,因此在和Client建立连接通讯的时候,确保连接的及时断开非常重要,否则一旦和多个客户端建立不关闭的长连接,对于服务器资源的占用是很可怕的。因此,我们需要针对可能出现的短连接和长连接,设定不同的限制策略。    针对短连接,我们可以使用golang中的net包...

2018-06-21 15:47:16 3098

转载 tcp长连接处理服务端和客户端处理方式

长连接的处理方式是:Server端收到Client端发来的信息之后,开始心跳计时,在设定时间内如果收到Client发来的消息,则重置计时器,否则计时结束断开连接。Client端,处理方式是:用time.NewTicker创建一个定时器,每间隔一秒发送下当前时间到服务器。服务端代码如下:package main    import (      "fmt"      "os"      "net" ...

2018-06-21 15:45:37 4690

转载 go实现高效tcp服务器(适合短连接)类似fasthttp,长连接的每个连接分配一个协程(标准库中的http)

package mainimport ( "fmt" "net" "os" "time")const ( MAX_CONN_NUM = 10)//服务处理函数,如果处理过程过于复杂,可以启动一定量的协程来做(协程池),//处理完后再发回去通过通道,实现异步处理的方式//echo server Goroutinefunc EchoFunc(conn net.Conn) { defer conn.Cl...

2018-06-21 11:15:05 3116

转载 go读取配置(二)

如何读取配置文件config.gopackage confimport ( "bufio" "io" "os" "strings")func InitConfig(path string) map[string]string { //初始化 myMap := make(map[string]string) //打开文件指定目录,返...

2018-06-14 16:52:06 421

转载 go读取配置(一)

一.配置文件config.txt中的内容如下:[default]path= ./goversion = 1.44 [test]num = 666something  = wrong  #注释1#fdfdfd = fdfdfd    注释整行refer= refer       //注释3二.main.go内容如下($GOPATH+my_test/config/)package mainimport...

2018-06-14 16:48:28 695

转载 go的log(一):Golang 标准库提供的log

go的log(一):Golang 标准库提供的log Golang的标准库提供了log的机制,但是该模块的功能较为简单(看似简单,其实他有他的设计思路)。不过比手写fmt. Printxxx还是强很多的。至少在输出的位置做了线程安全的保护。其官方手册见Golang log (天朝的墙大家懂的)。这里给出一个简单使用的例子:1234567package mainimport (    "log")f...

2018-06-14 15:31:27 320

原创 计算机杂谈

计算机杂谈1.复杂问题简单化。程序要易读、易修改,要体现易扩展性,易维护性,灵活性等特点。2.模块化,遵循高内聚低藕合原则,模块之间的通信简单化。3.在面向过程的语言中体现封装,模块化的是函数,在面向对象的语言中体现封装,模块化的是类。4.协议,这个世界都是在协议中运行,编程即是对协议的实现。5.顺序,分支,循环(递归)这三种结构可以描述世界上任何事物。...

2018-06-14 13:42:11 198

原创 go笔记2

语言除了基本功能和机制之外,强大的是库和框架。下面的笔记将从语言机制和库的方面来介绍。协程:轻量级线程。通道:各协程中数据共享。

2018-06-14 11:41:36 101

原创 go笔记1

类型:一.基本类型:int, float, double, char, byte等与其它语言基本一致。下面两种特殊:string:字符串类型,与java的string一样,是不可变的,赋值时是深拷贝的。优化时使用[]byte。[n]my_type:数组类型,这个在赋值操作或函数传参(初始化)时是深拷贝的,函数传参时与C/C++中的数组的不一样,C/C++是将数组型形参优化成指针。优化时使用[]my...

2018-06-14 10:38:36 106

minio_test.zip

minio获取上传进度, golang语言关于接口的实现说明,golang语言的结构体的成员函数关于(this type)和(this *type)的区别

2019-08-31

空空如也

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

TA关注的人

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