自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Golang实现协程池

golang协程池的实现

2023-05-20 09:15:20 744 1

原创 Golang 方法与函数的区别

2.方法与函数的区别 在Go语言中,函数和方法不太一样,有明确的概念区分;函数是指不属于任何结构体、类型的方法,也就是说函数是没有接收者的;而方法是有接收者的。

2023-04-25 23:39:32 140

原创 Golang调度原理-浅析

Golang调度原理浅析

2023-04-15 23:12:09 123

原创 gin多文件上传

多文件上传。

2023-04-09 12:45:37 162

原创 Golang Gin框架路由分组分文件

使用Gin框架写Go项目的时候,如果把路由都写在一个.go文件中,随着路由的数量的增加,会导致路由文件显得异常臃肿。分组后的go代码,虽然路由都实现路由分组,路由的逻辑显得清晰,但是路由文件还是集中在一个文件中,文件还是大。此时需要对路由进行分组并且分文件管理,更有利于代码的组织和维护,更好把项目做大,做强,再创辉煌。

2023-04-08 13:57:30 605

原创 Golang Gin框架HTTP上传文件

这个函数会返回一个新的 Reader 对象,该对象会在读取请求的正文时自动检查字节数,如果超过指定的最大字节数,则会自动停止读取,返回错误。HTTP协议的文件上传是通过HTTP POST请求实现的,使用multipart/form-data格式将待上传的文件放入请求体中。要实现 Gin 框架中的文件上传进度,在文件上传中,计算已上传的字节数,并将其与文件的总大小进行比较,以确定上传的进度。该代码不能限制文件上传大小,只是设置内存大小,即使文件大小比这个大,也会写入临时文件。

2023-04-05 22:50:45 2069

原创 Golang Gin框架 中间件

在开发中,中间件是一种常见的模式。中间件通常被称为在请求到达处理程序之前执行的一些代码,或者在响应离开处理程序之前执行的代码身份验证:检查请求是否携带了正确的身份验证信息记录日志:记录请求和响应的内容和元数据,方便系统的调试和分析。编解码和加解密:对请求和响应的数据进行编解码和加解密。

2023-03-26 17:36:10 251

原创 windows下git bash 添加zip命令功能

windows下git bash 添加zip命令功能https://udomain.dl.sourceforge.net/project/gnuwin32/zip/3.0/zip-3.0-bin.ziphttps://nchc.dl.sourceforge.net/project/gnuwin32/bzip2/1.0.5/bzip2-1.0.5-bin.zip下载zip-3.0-bin.zip和bzip2-1.0.5-bin.zip压缩包,分别提取压缩包中bzip2.dll和zip.exe 复制到gi

2021-10-09 21:10:13 1451

原创 Golang实现 TCP代理

golang实现TCP代理

2021-06-07 23:07:07 374

原创 docker 常见基本操作,Dockerfile编写介绍和部分错误

docker 常见基本操作,Dockerfile编写介绍和部分错误启动,停止,重启docer 服务启动:systemctl start docker停止:systemctl stop docker重启:systemctl restart docker查看docker 启动日志 systemctl status dockerdocker 镜像相关操作查看镜像:docker ima...

2020-01-03 11:39:36 726

原创 nginx 代理websocket

nginx实现对websocket 反向代理。 keepalive_timeout 1800; map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name ...

2019-12-30 10:52:58 488

原创 linux 下 nginx 安装echo扩展模块

nginx 在linux(ubuntu 16.0.4) 安装扩展echo模块echo 模块可以将nginx 变量的信息输出到网页中。echo 模块对学习nginx 配置文件有很大帮助,对应调试nginx配置文件中变量特步方便。想要深入学习nginx 配置文件,可以试一下。下载扩展模块cd /newhome/nginx/nginx-1.13.0wget https://github.co...

2019-12-11 18:16:17 1650

原创 nginx反向代理和负载均衡算法介绍

nginx反向代理正向代理是代理客户端,反向代理是代理服务器nginx 已经模块化,代理功能是代理模块提供的配置文件详解... #全局块events { #events块 ...}http #http块{ ... #http全局块 upstream{ } upstream块 s...

2019-12-09 21:01:31 227

原创 go linux 根据进程名查找进程

func runInWindows(cmd string) (string, error) { result, err := exec.Command("cmd", "/c", cmd).Output() if err != nil { return "", err } return strings.TrimSpace(string(result)), err}func RunC...

2019-12-04 14:46:42 4841 1

原创 记录几个go的工具,协程安全Map和Map,slice,struct及其指针类型Copy

deepCopy可以完成map,slice,strcut以及相对应的指针类型的Copyfunc deepCopy(dst, src reflect.Value) { switch src.Kind() { case reflect.Interface: value := src.Elem() if !value.IsValid() { return } newVa...

2019-11-25 11:15:51 384

原创 golang实现Redis分布式锁

golang实现Redis分布式锁

2019-03-11 22:31:02 80

原创 golang优雅的面向对象

大家都知道,面向对象的3大基本特征:封装,集成,多态。封装:封装是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象go语言的面向对象go语言仅支持封装,不支持继承和多态。go 语言没有class 只有struct结构体 是创建是堆上还栈上,如果是栈上,则函数结束则结束 内存则销毁,如果想程序不被销毁,则需要将str...

2019-02-18 23:04:06 488 2

原创 压力测试工具ab/abs的用法

ab 是apache 推出的压力测试工具,可以用来测试http服务器的性能,得出QPSabs 则是apache 推出的压力测试工具,可以用来测试https服务器的性能,得出QPS工具下载地址:https://www.apachehaus.com/cgi-bin/download.plx工具官方文档地址:http://httpd.apache.org/docs/2.4/programs/ab....

2019-01-08 22:41:28 6478

原创 golang 堆排序

package mainimport "fmt"func main() { data:=[]int{10,1,23,24,7,8,9,6,4,288,99,3,34} for i:=0;i<len(data)-2;i++{ //从最后一个父节点开始调整 for j:=len(data[i:])/2-1;j>=0;j--{ //把这个二叉树变成可处理的二叉树 ...

2018-12-26 21:09:13 561

原创 shell 高级技巧

shell 找到 tomcat 进程 并且kill掉ps -ef|grep tomcat|grep -v grep|awk ‘{print $2}’|xargs kill -9

2018-10-21 11:29:49 191 1

原创 go 的一些官方文档地址

go test 官方文档 https://golang.org/pkg/testing/

2018-06-24 22:41:43 1625

原创 MongoDB 中文的全文索引

MongoDB 从3.2 版本以后添加了对中文索引的支持: 官网链接:https://docs.mongodb.com/manual/reference/text-search-languages/ 下面就举例来看一下MongoDB 的中文索引是怎么样的? 创建一个集合textIndexTest: 插入下面四条数据:db.textIndexTest.insert({author:"...

2018-04-26 12:04:03 19266 5

原创 ubuntu 16.04 mongodb enterprise 3.4 安装中遇到的错误

错误一:./mongod: error while loading shared libraries: libcurl.so.4: cannot open shared object file: No such file or directory 在启动./mongod 的时候缺少 libcurl.so 库执行下面语句apt-get install libcurl4-openss...

2018-04-17 19:50:30 2829

原创 golang mongoDB GridFS查询 存储 删除文件

先讲一下 GridFS的作用GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等),如果没有超过16m大小可以将数据保存在BSON数据中。 GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(do...

2018-04-14 12:59:13 6548

原创 golang mongoDB 的集合创建以及增删改查操作

mongo官方没有golang 的官方驱动,但是有一个社区驱动: http://labix.org/mgo api文档:https://godoc.org/gopkg.in/mgo.v2#Collection.Update 数据的连接操作请看的我的上一篇博客,本文重点介绍mgo的CURD操作及遇到的坑。 mog的文档可以不用特别的创建,在数据插入的时候,如果驱动发现文档不存在,会自动创建。...

2018-04-12 17:43:57 11986 1

原创 mongodb 学习随笔 及golang 连接mongoDB

Mogondb 不支持事务。所有有事务要求的需求慎用,比如银行的转账操作慎用,转1个亿美金,因为网络,电力的故障导致交易没有完成,不能回滚,交易无法撤回。所有慎用!!Mogondb 的应用场景: 比如一篇CSDN博客,博客内容,博客作者,发布时间,评论,阅读量等信息可以将这些信息存储到一个类似JSON数据中。如果用mysql需要将不同的信息分别存储于不同的表中,使用的时候,查询多表或者使用J...

2018-04-11 17:55:16 2441

原创 区块链私链节点的加入

首先查看创世块节点连接信息: 命令行运行:admin.nodeInfo.enode得到下面的信息,复制一下。"enode://29af54c8bbc87acf38f2b259966a1c54ef25d5293c8b447080cbd8bd18fb3fc06e692c43a7ea8011708f217776420cc48fb8ef5d5aa3bcf39528a52963b0a8...

2018-04-10 21:16:31 1685

原创 以太坊win平台和Linux 私链搭建,交易,添加多节点

先上一篇的以太坊的私有搭建,交易,节点连接,结合搭建的步骤对以太坊进行深入介绍。本文介绍的方式在win10 和ubuntu16.04 的方式测试过。 第一步:geth的安装,请直接移步:https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum 或者百度其他博客。为了方便操作,windows 平台在安装完成geth后 ,最好将g...

2018-04-01 13:32:11 824

原创 golang slice 与list 的性能分析。

一 · 比较slice 与 list 遍历创建和添加元素速度。package mainimport ( "time" "fmt" "container/list")func main() { t := time.Now() sli:=make([]int ,10) for i := 0; i<1*100000*1000;i++...

2018-03-30 13:19:34 9847 2

原创 golang 的container/list (一)

问题1:有了slice,还要list做什么? 问题2:list的底层实现是什么? 带着这两个问题来什么有浅入深的学习golang 语言 。 首先来看官方的解释: 包list 实现 linked list (链表) 而且是双向(doubly)链表。思路顺着双向链表走。 双向链表: 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从...

2018-03-29 13:00:41 6715

原创 go 数据库框架xorm 的使用

golang 连接mysql 的博客可以看我前面的文章。这片文章主要讲xorm,我试过golang 的orm 框架 有beego自带的数据库orm框架https://beego.me/docs/mvc/model/orm.md 有gorm 的数据框架 http://gorm.io/ 最后我选择了xorm数据orm框架官网地址:http://www.xorm.io/。 最喜欢xorm 的原因...

2018-03-28 15:19:47 6413

原创 java 代码转kotlin

今天看见IDEA 有一个快捷键 Ctrl+Alt+shift+K。 选中一段代码直接就能将java 代码转化为kotlin 代码。package com.dylan.test;public class UserInfo { private int age; public void setAge(int age) { this.age = age; ...

2018-03-26 18:57:49 1304

原创 go panic与recover分析及错误处理

先介绍一下什么叫error 类型 error 是一种类型,表示错误状态的类型,如果没有错误则是nil。直白点将:error 类型就是描述错误的一种类型。panic 在golang goroutine 的作用 panic 官方文档介绍: panic 是用来停止当前程序的执行。当一个方法调用panic。 当函数F调用panic时,F的正常执行立即停止。 但是任何有F推迟的函数...

2018-03-25 23:26:23 5873 1

原创 golang与redis的基本使用

package mainimport ( "fmt" "github.com/garyburd/redigo/redis")func main() { c, err := redis.Dial("tcp", "127.0.0.1:6379") if err != nil { fmt.Println(err) ...

2018-03-25 20:57:39 3616

原创 golang 某一段IP端口扫描并且尝试ftp弱口令登录

先上githubhttps://github.com/china-muwenbo/goScanPort 使用golang开发的端口扫描程序,ftp弱口令登录程序。程序先对某一段ip地址的所有21端口进行扫描,如果发现21端口开放则使用ftp 弱口令(用户名ftp,密码123456)进行登录。runtime.GOMAXPROCS(runtime.NumCPU()) maxchan:...

2018-03-25 20:46:49 1164

原创 linux 部署golang 项目(直接部署和基于nginx部署)

直接部署:linux 上安装golang 项目的方式按照官网的 https://golang.org/doc/install#install(要梯子)的方式,安装go运行环境到/usr/local/go/bin 下。设置GOPATH发现如果按照官方给的安装方法只指定GOROOT的路径,于是自己新建一个目录gopath 作为GOPATH 的目录,并且设置环境变量(export GOPATH=/new...

2018-03-17 10:41:02 46768 5

原创 go语言连接mysql 实现增删改查

package mainimport( "fmt" "database/sql" _ "github.com/go-sql-driver/mysql" "log")var ( Id string Name string)func main(){ db, err := sql.Open("mysql", "root:123456@tcp(127.0.0.1:3306.

2018-03-13 22:05:44 1143

原创 go defer 关键字的需要注意的问题

一:go defer 声明的代码在goroutine 没有执行:package mainimport ( "fmt" "time")var ch chan intfunc main() { ch =make(chan int) for i:=0;i<10 ;i++ { go test(i) } for i:=0;i<10 ;i++ { <...

2018-03-12 12:00:49 658

原创 golang mutex锁的竞争关系浅析

刚才对golang的锁关系进行 一番思索,想着协程获取golang 对象锁的,是按先按时间先后顺序获取的,其实不然。下面请看代码,顺带写了2种读写锁的应用。package mainimport ( "sync" "fmt" "time")//开启10个线程 同时去竞争一个互斥锁 谁有能力谁上var mutex *sync.Mutex;var ch chan intfu...

2018-03-09 15:28:43 1666

原创 go chan 两种应用模型

第一种模型:主线程等待所有协程完成,主线程阻塞等待所有协程完成。  package mainimport ( "fmt" "math/rand" "time")// go 协程应用之一// 创建10个线程//主线程阻塞,等待所有子线程计算完成// 子线程完成把结果放在子线程中func main() { var testchan =make(chan int ,10) ...

2018-02-28 11:24:48 630

mpush-release-0.7.1.tar.gz

mpush 开源项目的

2017-07-24

空空如也

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

TA关注的人

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