自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Dev-L的博客

漫漫自学路

  • 博客(172)
  • 资源 (6)
  • 收藏
  • 关注

原创 golang git pre-commit钩子

#!/bin/bashSTAGED_GO_FILES=$(git diff --cached --name-only --diff-filter=ACM | grep ".go$")if [ "$STAGED_GO_FILES" = "" ]; then exit 0fiPASS=truefor FILE in $STAGED_GO_FILESdo # 跳过vendor目录下的文件 if [ "$FILE" = "vendor"* ];then c

2020-06-19 14:16:35 1659 1

原创 将版本信息写入Go编译的二进制文件

将版本信息写入Go编译的二进制文件MakefileSHELL := /bin/bashBASEDIR = $(shell pwd)DOCKER_TARGET=hub.docker.com/lee/hello# build with version infosversionDir = "main"gitTag = $(shell if [ "`git describe --tags --abbrev=0 2>/dev/null`" != "" ];then git describe --

2020-06-18 11:51:58 754

原创 [译]OpenTracing之旅

[译]OpenTracing之旅原文链接:https://medium.com/opentracing/take-opentracing-for-a-hotrod-ride-f6e3141f7941OpenTracing是一个新的开放标准,适用于应用和开源软件包的分布式链路追踪和监控。本文将借助一个demo带你探索OpenTracing的特性及功能,一步步向你展示如何在实践中应用OpenTracing概念来监控基于微服务的体系结构并进行性能问题的根因分析;本文还强调了OpenTracing的关键特性:厂

2020-06-15 16:43:24 529

原创 自己易忽略的golang规范

Interface 合理性验证var _ http.Handler = (*Handler)(nil)关于Mutextype smap struct { sync.Mutex // only for unexported types(仅适用于非导出类型) data map[string]string}type SMap struct { mu sync.Mutex // 对于导出类型,请使用私有锁 data map[string]string}Ch..

2020-06-01 18:09:51 387

原创 Gorm的关联关系

model.gopackage modelsimport "github.com/jinzhu/gorm"import _ "github.com/jinzhu/gorm/dialects/sqlite"type Email struct { gorm.Model Email string UserID uint}// User 拥有并属于多种 Language,使用 `u...

2020-04-27 16:29:36 1920

原创 tmpNote

type Slice []intfunc NewSlice() Slice { return make(Slice, 0)}func (s *Slice) Add(elem int) *Slice { *s = append(*s, elem) fmt.Print(elem) return s}func TestAdd(t *testing.T) { s :=...

2020-03-29 09:07:31 118

原创 vue复杂请求跨域处理

axios 发送请求时的数据默认是 JSON 格式的。这是导致用 axios POST 跨域出错的主要原因。根据 CORS 的标准,当浏览器发送跨域请求时,如果请求不是GET或者特定POST(Content-Type只能是 application/x-www-form-urlencoded, multipart/form-data 或 text/plain的一种)时,要求浏览器必须先以 OPTI...

2020-03-21 11:12:35 542

原创 logrotate 日志切割 原理

logrotate 原理logrotate 是怎么做到滚动日志时不影响程序正常的日志输出呢?logrotate 提供了两种解决方案。create copytruncateLinux 文件操作机制介绍一下相关的 Linux 下的文件操作机制。Linux 文件系统里文件和文件名的关系如下图。目录也是文件,文件里存着文件名和对应的 inode 编号。通过这个 inode...

2020-02-19 09:46:54 1383

原创 Docker学习笔记(二)——Docker底层技术

1. 基础知识:Linux namespace 的概念 Linux 内核从版本 2.4.19 开始陆续引入了 namespace 的概念。其目的是将某个特定的全局系统资源(global system resource)通过抽象方法使得namespace 中的进程看起来拥有它们自己的隔离的全局系统资源实例(The purpose of each namespace is to wrap a...

2019-11-22 22:38:19 571

原创 Docker学习笔记

1. Docker 的基本操作1.1 Docker 容器的状态机一个容器在某个时刻可能处于以下几种状态之一:created:已经被创建 (使用 docker ps -a 命令可以列出)但是还没有被启动 (使用 docker ps 命令还无法列出) running:运行中 paused:容器的进程被暂停了 restarting:容器的进程正在重启过程中 exited:上图中的...

2019-11-20 22:35:47 430

原创 dlv远程调试golang程序注意事项

自行安装dlv安装There are two ways to install on Linux. First is the standard go get method:go get -u github.com/go-delve/delve/cmd/dlvAlternatively make sure $GOPATH is set (e.g. as ~/.go) and:$ git c...

2019-11-17 18:29:09 1788

原创 Redis 慢查询,Pipline和发布订阅

慢查询Redis 提供了慢查询日志记录,把命令执行时间超过 slowlog-log-slower-than 的都记录在 Reids 内部的一个列表(list)中,该列表的长度最大为 slowlog-max-len 。需要注意的是,慢查询记录的只是命令的执行时间,不包括网络传输和排队时间。慢查询分析配置关于 Redis 慢查询的配置有两个,分别是 slowlog-log-slower-than...

2019-07-08 22:36:48 191

原创 Redis 配置项及通用命令

配置Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。可以通过 CONFIG 命令查看配置项。查看配置redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME如:redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel"2) "not...

2019-07-08 22:11:37 248

原创 Redis 常用数据结构及API

配置Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。可以通过 CONFIG 命令查看配置项。查看配置redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME如:redis 127.0.0.1:6379> CONFIG GET loglevel 1) "loglevel"2) "not...

2019-07-07 22:14:47 943

原创 pprof简介

pprof是什么pprof 是一个强大的性能分析工具,可以捕捉到多维度的运行状态的数据,下面简单介绍一下pprof的用法。golang在语言层面集成了profile采样工具,在程序运行过程中可以获取cpu、heap、block、traces等执行信息,这些会涉及到runtime/pprof、net/http/pprof、runtime/trace等package。pprf的使用一般情况下,...

2019-07-01 22:57:10 14054

原创 GORM中文文档

GORM是类似Django ORM,对开

2019-06-30 10:41:54 14611 2

原创 Go 语言中Select与for结合使用时可能会遇到的坑

问题现象当for 和 select结合使用时,break语言是无法跳出for之外的:package mainimport ( "fmt" "time" "context")func main(){ d := time.Now().Add(3000 * time.Millisecond) ctx, cancel := context.WithDeadline(context.B...

2019-06-08 11:48:35 1910

原创 golang for range的坑

case 1: 非引用类型range会复制对象,而不是不是直接在原对象上操作。package mainimport "fmt"func main(){ a := [3]int {1, 2, 3} for i, v := range a{ //i,v从a复制的对象里提取出 if i == 0{ a[1], a[2] = 200, 300...

2019-06-08 11:32:46 1477

原创 golang Windows下编译linux可执行文件

编译windows文件 SET CGO_ENABLED=1 SET GOARCH= SET GOOS=windows go build xxx编译Linux文件 SET CGO_ENABLED=0 SET GOARCH=amd64 SET GOOS=linux go build xxx查看linux cpu架构uname -...

2019-06-01 09:37:43 7394

原创 Vue开发资源汇总

https://github.com/opendigg/awesome-github-vuehttps://github.com/vuejs/awesome-vue内容UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例UI组件element★13489 - 饿了么出品的Vue2的web UI工具套件 Vux★8133 - 基于Vue和We...

2019-05-26 18:06:16 966

原创 Webpack4学习笔记

其实很早之前就听说过webpack,但一直没有认真去看过官方文档,闲暇时舍近求远的去看一些教学视频,反而看的迷迷糊糊不知所云;今天终于抽出“大块儿”时间,细读了一下官方文档,才发现对于新事物,了解它最快的方法就是仔细阅读官方文档!下面是对今天学习内容的一些清单,以便回顾。Webpack是什么这张图是webpack官网对webpack是什么的诠释,webpack是一个静态模块打包的工具,他可以...

2019-05-25 23:58:36 270

原创 npm命令总结

npm是什么npm(node package manager),通常称为node包管理器,相当于Python的pip。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等。npm的背后,是基于couchdb的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专...

2019-05-25 14:49:38 378

原创 golang testing简介

单元测试Golang中的单元测试对文件名、方法名和参数都有很严格的要求:文件名必须以xx_test.go命名 方法必须是Test[^a-z]开头 方法参数必须t *testing.Ttesting的通用方法T结构内部是继承自common结构,common结构提供集中方法,是我们经常会用到的:当我们遇到一个断言错误的时候,我们就会判断这个测试用例失败,就会使用到...

2019-04-06 11:26:10 2350

原创 Json Web Token 详解

什么是JWTJSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。让我们来假想一下一个场景。在A用户关注了B用户的时候,系统发邮件给B用户,并且附有一个链接“点此关注A用户”。链接的地址可以是这样的 https://your.awesome-app.com/make-friend/?from_user=B&a...

2019-04-06 10:32:45 5516 4

转载 Python 最佳实践指南 2018

第一章. 基础信息 1.1. 翻译说明 1.2. 我应该选择哪一个 Python 解释器(3 vs. 2)?已完成 1.3. 所有参与译者 第二章. 安装 Python 2.1. Python 的正确安装方式已完成 2.2. 安装 Python 3 - Mac OS X已完成 2.3. 安装 Python 3 - Windows已完成 2.4...

2019-04-06 09:08:13 491

转载 Go Modules 的使用方法

简介Go 1.11 和 1.12 引入了对 modules(模块)的初步支持,这是一个能让依赖项的版本信息更加明确和易于管理的依赖管理系统。本文旨在为你使用模块提供基本的操作指导。后续会有一篇文章来说明如何发布一个模块以供别人使用。一个模块是一系列Go 代码包的集合,它们保存在同一个文件树中。文件树的根目录中包含了一个go.mod文件。go.mod文件定义了一个模块的 modul...

2019-04-01 22:20:55 4302

转载 Go调度器系列之——宏观看调度器

上一篇文章《Go语言高阶:调度器系列(1)起源》,学goroutine调度器之前的一些背景知识,这篇文章则是为了对调度器有个宏观的认识,从宏观的3个角度,去看待和理解调度器是什么样子的,但仍然不涉及具体的调度原理。三个角度分别是:调度器的宏观组成 调度器的生命周期 GMP的可视化感受在开始前,先回忆下调度器相关的3个缩写:G: goroutine,每个G都代表1个goroutin...

2019-03-31 15:54:33 211

原创 Go语言从入门到精通九——使用golang操作mysql、redis和RabbitMQ

操作mysql增package mainimport ( "fmt" "github.com/jmoiron/sqlx" _ "github.com/go-sql-driver/mysql" //初始化一个mysql驱动,必须)type Person struct { UserId int `db:&

2019-03-03 18:55:07 657

原创 Go语言从入门到精通八——socket和http编程

golang中的socket编程关于socket的基础知识,这里就不介绍了,可以参考python socket编程。golang创建socket很简单,服务端处理流程通常为:监听端口接受客户端的连接请求创建goroutine,处理该请求示例代码如下:package mainimport ( "fmt" "net")func main() { //...

2019-03-03 16:51:24 676

原创 Go语言从入门到精通七——并发篇goroutine和channel

goroutine在go语言中,每一个并发的执行单元叫做一个goroutine这里说到并发,所以先解释一下并发和并行的概念:并发:逻辑上具备同时处理多个任务的能力并行:物理上在同一时刻执行多个并发任务当一个程序启动时,其主函数即在一个单独的goroutine中运行,一般这个goroutine是主goroutine;如果想要创建新的goroutine,只需要再执行普通函数或者方法的的前...

2019-02-24 21:57:49 537

原创 golang接口与反射剖析

interface的实质golang中的interface是什么接口相当于是一份契约,它规定了一个对象所能提供的一组操作。要理解golang中接口的概念我们最好还是先来看看别的现代语言是如何实现接口的。C++没有提供interface这样的关键字,它通过纯虚基类实现接口,而java则通过interface关键字声明接口。它们有个共同特征就是一个类要实现该接口必须进行显示的声明,如下是j...

2019-02-24 21:44:28 861

原创 Mybatis 多表查询

使用MyBatis这一强大的框架可以解决很多赋值的问题,其中对于子配置文件中的小细节有很多需要注意的地方,使用这个框架后主要就是对于配置文件的编写和配置。今天我写了一个多表查询,表的基本结构如下:用户表t_user:用户编号uid,账号account,昵称nickname,性别gender订单表t_order:订单编号oid,下单时间gen_time,总价total_price,用户编号us...

2019-02-23 22:19:31 246

原创 Go语言从入门到精通六——JSON操作及错误处理

JSONJSON数据协议json是一种轻量化的格式(相比于xml),是当下流行的一种前后端交互的数据格式。其工作模式如下:golang中的 json 操作导入包:import “encoding/json”序列化: json.Marshal(data interface{})反序列化: json.UnMarshal(data []byte, v interface{})json...

2019-02-17 14:11:29 432

原创 Go语言从入门到精通五——终端读写&文件读写

终端读写和C语言一样,终端分为三类:os.Stdin:标准输入os.Stdout: 标准输出os.Stderr:标准错误输出终端读写示例package mainimport ( "fmt")var ( firstName, lastName, s string i int f fl...

2019-02-16 23:08:01 548

原创 Go语言从入门到精通四——反射

反射反射:可以在运行时动态获取变量的相关信息,需要导入reflect包。import ("reflect")用法:reflect.TypeOf,获取变量的类型,返回reflect.Type类型reflect.ValueOf,获取变量的值,返回reflect.Value类型reflect.Value.Kind,获取变量的类别,返回一个常量reflect.Value.Interfac...

2019-02-16 15:06:32 257

原创 Go语言从入门到精通三——struct和interface

Go中的structstruct用来自定义复杂数据结构,相当于其他面向对象语言中的Class。struct里面可以包含多个字段(属性)struct类型可以自定义方法,注意和函数的区分:方法有一个接受对象,而函数没有struct类型是值类型struct类型可以嵌套Go语言没有class类型,只有struct类型struct声明语法:type 标识符 struct{field1...

2019-01-27 13:53:38 2755

原创 Go语言从入门到精通二——切片和map

数组与切片数组数组:是同一种数据类型的固定长度的序列。数组定义:var a [len]int,比如:var a[5]int,一旦定义,长度不能变长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic数组是值类...

2019-01-26 22:25:40 1057

原创 Go语言从入门到精通之golang初识(续)

字符串相关操作strings包:func Contains(s, substr string) bool func ContainsAny(s, chars string) bool // 是否包含chars内的任意字符func ContainsRune(s string, r rune) bool func Count(s, sep string) intfunc Equal...

2019-01-26 14:03:15 493

原创 Go语言从入门到精通之golang初识

golang语言特性垃圾回收内存自动回收,再也不需要开发人员管理内存开发人员专注业务实现,降低了心智负担只需要new分配内存,不需要释放天然并发从语言层面支持并发,无需第三方库goroute,轻量级线程,创建成千上万个goroute成为可能基于CSP(Communicating Sequential Process)模型实现channel管道,类似unix...

2019-01-25 22:57:24 599

原创 Flask学习笔记之——蓝图、基于DBUtils实现数据库连接池、上下文管理等

面向对象知识回顾子类继承父类的三种方式class Dog(Animal): #子类 派生类 def __init__(self,name,breed, life_value,aggr): # Animal.__init__(self,name,breed, life_value,aggr)#让子类执行父类的方法 就是父类名.方法名(参数),连self都得传 ...

2018-10-24 09:42:05 518

GNU+make中文手册

Vim用户手册Vim用户手册Vim用户手册Vim用户手册Vim用户手册

2017-11-07

计算机网络原理:自顶向下方法(第6版)习题答案

英文原版答案

2017-06-28

计算机网络原理:自顶向下方法(第6版).pdf

第6版英文矢量版带目录

2017-06-28

MySQL_5.5中文参考手册.pdf

中文版手册

2017-06-27

深度探索C++对象模型.pdf

很经典的书

2017-06-27

计算机二级基础

二级的公共基础资料, pdf格式的

2013-05-01

空空如也

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

TA关注的人

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