- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 Golang 方法与函数的区别
2.方法与函数的区别 在Go语言中,函数和方法不太一样,有明确的概念区分;函数是指不属于任何结构体、类型的方法,也就是说函数是没有接收者的;而方法是有接收者的。
2023-04-25 23:39:32
197
原创 Golang Gin框架路由分组分文件
使用Gin框架写Go项目的时候,如果把路由都写在一个.go文件中,随着路由的数量的增加,会导致路由文件显得异常臃肿。分组后的go代码,虽然路由都实现路由分组,路由的逻辑显得清晰,但是路由文件还是集中在一个文件中,文件还是大。此时需要对路由进行分组并且分文件管理,更有利于代码的组织和维护,更好把项目做大,做强,再创辉煌。
2023-04-08 13:57:30
777
原创 Golang Gin框架HTTP上传文件
这个函数会返回一个新的 Reader 对象,该对象会在读取请求的正文时自动检查字节数,如果超过指定的最大字节数,则会自动停止读取,返回错误。HTTP协议的文件上传是通过HTTP POST请求实现的,使用multipart/form-data格式将待上传的文件放入请求体中。要实现 Gin 框架中的文件上传进度,在文件上传中,计算已上传的字节数,并将其与文件的总大小进行比较,以确定上传的进度。该代码不能限制文件上传大小,只是设置内存大小,即使文件大小比这个大,也会写入临时文件。
2023-04-05 22:50:45
2482
原创 Golang Gin框架 中间件
在开发中,中间件是一种常见的模式。中间件通常被称为在请求到达处理程序之前执行的一些代码,或者在响应离开处理程序之前执行的代码身份验证:检查请求是否携带了正确的身份验证信息记录日志:记录请求和响应的内容和元数据,方便系统的调试和分析。编解码和加解密:对请求和响应的数据进行编解码和加解密。
2023-03-26 17:36:10
385
原创 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
2079
原创 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
843
原创 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
563
原创 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
1809
原创 nginx反向代理和负载均衡算法介绍
nginx反向代理正向代理是代理客户端,反向代理是代理服务器nginx 已经模块化,代理功能是代理模块提供的配置文件详解... #全局块events { #events块 ...}http #http块{ ... #http全局块 upstream{ } upstream块 s...
2019-12-09 21:01:31
266
原创 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
5162
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
443
原创 golang优雅的面向对象
大家都知道,面向对象的3大基本特征:封装,集成,多态。封装:封装是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象go语言的面向对象go语言仅支持封装,不支持继承和多态。go 语言没有class 只有struct结构体 是创建是堆上还栈上,如果是栈上,则函数结束则结束 内存则销毁,如果想程序不被销毁,则需要将str...
2019-02-18 23:04:06
536
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
6649
原创 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
611
原创 shell 高级技巧
shell 找到 tomcat 进程 并且kill掉ps -ef|grep tomcat|grep -v grep|awk ‘{print $2}’|xargs kill -9
2018-10-21 11:29:49
227
1
原创 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
19508
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
2910
原创 golang mongoDB GridFS查询 存储 删除文件
先讲一下 GridFS的作用GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等),如果没有超过16m大小可以将数据保存在BSON数据中。 GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中。GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(do...
2018-04-14 12:59:13
6697
原创 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
12181
原创 mongodb 学习随笔 及golang 连接mongoDB
Mogondb 不支持事务。所有有事务要求的需求慎用,比如银行的转账操作慎用,转1个亿美金,因为网络,电力的故障导致交易没有完成,不能回滚,交易无法撤回。所有慎用!!Mogondb 的应用场景: 比如一篇优快云博客,博客内容,博客作者,发布时间,评论,阅读量等信息可以将这些信息存储到一个类似JSON数据中。如果用mysql需要将不同的信息分别存储于不同的表中,使用的时候,查询多表或者使用J...
2018-04-11 17:55:16
2517
原创 区块链私链节点的加入
首先查看创世块节点连接信息: 命令行运行:admin.nodeInfo.enode得到下面的信息,复制一下。"enode://29af54c8bbc87acf38f2b259966a1c54ef25d5293c8b447080cbd8bd18fb3fc06e692c43a7ea8011708f217776420cc48fb8ef5d5aa3bcf39528a52963b0a8...
2018-04-10 21:16:31
1778
原创 以太坊win平台和Linux 私链搭建,交易,添加多节点
先上一篇的以太坊的私有搭建,交易,节点连接,结合搭建的步骤对以太坊进行深入介绍。本文介绍的方式在win10 和ubuntu16.04 的方式测试过。 第一步:geth的安装,请直接移步:https://github.com/ethereum/go-ethereum/wiki/Building-Ethereum 或者百度其他博客。为了方便操作,windows 平台在安装完成geth后 ,最好将g...
2018-04-01 13:32:11
877
原创 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
10026
1
原创 golang 的container/list (一)
问题1:有了slice,还要list做什么? 问题2:list的底层实现是什么? 带着这两个问题来什么有浅入深的学习golang 语言 。 首先来看官方的解释: 包list 实现 linked list (链表) 而且是双向(doubly)链表。思路顺着双向链表走。 双向链表: 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从...
2018-03-29 13:00:41
6824
原创 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
6467
原创 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
1377
原创 go panic与recover分析及错误处理
先介绍一下什么叫error 类型 error 是一种类型,表示错误状态的类型,如果没有错误则是nil。直白点将:error 类型就是描述错误的一种类型。panic 在golang goroutine 的作用 panic 官方文档介绍: panic 是用来停止当前程序的执行。当一个方法调用panic。 当函数F调用panic时,F的正常执行立即停止。 但是任何有F推迟的函数...
2018-03-25 23:26:23
6020
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
3687
原创 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
1228
原创 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
47024
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
1198
原创 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
722
原创 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
1765
原创 go chan 两种应用模型
第一种模型:主线程等待所有协程完成,主线程阻塞等待所有协程完成。 package mainimport ( "fmt" "math/rand" "time")// go 协程应用之一// 创建10个线程//主线程阻塞,等待所有子线程计算完成// 子线程完成把结果放在子线程中func main() { var testchan =make(chan int ,10) ...
2018-02-28 11:24:48
680
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人