Golang每日一个知识点-20191101

基础复习 关于指针 一个指针的值是另一个变量的地址。 一个指针对应变量在内存中的存储位置 对于每个变量必然有对应的内存地址 var x int 声明一个x变量,&x 表示取x变量的内存地址,将产生一个指向该整数变量的指针,指针对应的数据类型是*int,指针被称为“指向int类型的指针” 如果指针名字为p, 那么p指针指向变量x 或者说p指针保存了变量的内存地址,同时*p 表达式对应p指向的变量的值,通常 *p 表示读取指针指向的变量的值 面试题 package main import "fmt" func main() { slice ...

阅读全文 〉

Golang每日一个知识点-20191031

文中中所有代码地址:https://github.com/pythonsite/golang_aim 参考文章地址:https://blog.golang.org/defer-panic-and-recover 基础复习 defer defer 语句经常被用于处理成对的操作,如打开,关闭,连接,端口连接,加锁,释放锁等 延迟语句有是哪个简单的规则: A deferred function’s arguments are evaluated when the defer statement is evaluated. 用于理解的例子: func a() { i := ...

阅读全文 〉

TCP-IP详解卷一第三章笔记

IP 提供不可靠,无连接的数据报传送服务 不可靠: 不能保证IP数据报能成功的到达目的地,如果发生某种错误时,IP有一个简单的错误处理算法:丢弃该数据报,然后发送ICMP消息报给信源端 无连接:是指IP并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的 IP首部 目前的协议版本号是4,因此IP有时候也成为IPv4 首部长度指的是首部占32bit字的数目,包括任何选项 服务类型(TOS)字段包括一个3bit的优先权字段(现在已被忽略),4bit 的TOS字段和1bit未用但位置必须置为0, 4bit 的TOS分别代表:最小延迟,最大吞吐量,最高可靠性和最小费用 ...

阅读全文 〉

用Gin web框架写博客中问题总结(一)

博客中后台写博客是用的markdown,最终有个问题就是将写完的博客从数据库加载到页面上的时候,需要对markdown格式进行进行转换,这个时候关于TOC的展示怎么实现,自己碰到了一些问题,下面进行整理 效果图 最终我想要的效果是: 这里先说一下关于Golang后端支持markdown的包: github.com/microcosm-cc/bluemonday github.com/russross/blackfriday 我是通过上面两个包组合实现的, github.com/russross/blackfriday 是Go实现的对Markdown处理一个包,也是现在用的比较多...

阅读全文 〉

TCP-IP详解卷一第二章笔记

以太网和IEEE 802 封装 在TCP/IP 协议簇中,链路层主要有三个目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP发送RARP请求和接收RARP应答 以太网采用一种称为CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入。它的速率为10Mb/s 地址为48bit 802.3 针对整个CSMA/CD网络 802.4 针对令牌总线网络 802.5针对令牌环网络 802网络共有的逻辑链路控制(LLC) 两种帧格式的前两个字段都是目的地址和源地址 第三个字段: - 在802标准中,是长度字段,指的是它后续数据...

阅读全文 〉

golang库sqlx的快速使用

该文章的所有例子是通过mysql写的 连接数据库 package main import ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/jmoiron/sqlx" ) var DB *sqlx.DB func main() { db, err := sqlx.Open("mysql","root:123456@tcp(192.168.188.106:3306)/test_db") if err != n...

阅读全文 〉

RabbitMQ基础知识(转载)

工作中经常和RabbitMQ打交道,但是一直停留在使用阶段,没有更多的去了解RabbitMQ的原理以及集群方面的知识,这个笔记主要用于逐步深入学习RabbitMQ 原文地址:https://www.cnblogs.com/dwlsxj/p/RabbitMQ.html 这个文档的后面golang代码是自己添加的 背景 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理...

阅读全文 〉

TCP-IP详解卷一第一章笔记

分层 TCP/IP 通常被认为是一个四层协议系统 链路层:也称数据链路层或网络接口层 网络层:也称互联网层,TCP/IP协议簇中,网络层协议层协议包括IP协议(网际协议),ICMP协议(Ineternet互联网控制报文协议),以及IGMP协议(Internet组管理协议) 传输层:为两台主机上的应用程序提供端到端的通信。这里主要包含两种协议:TCP(传输控制协议)和UDP(用户数报协议),TCP为两台主机提供高可靠性的数据通信。 应用层:负责处理特定的应用程序细节 在TCP/IP协议簇中,网络IP层提供的是一种不可靠的服务,它只是尽可能快的把分组从源节点送到目的节点,但是并不提供任何可靠...

阅读全文 〉

Gin 接入zap 日志中间件

在https://www.syncd.cn/post/6 这边文章中整理关于日志包zap的使用,那么在Gin web框架中如何接入zap的日志中间件呢? Gin 的 zap中间件 gin的中间件中其实有zap的中间件:https://github.com/gin-contrib/zap 并且也给了简单的例子 不过官网给的例子确实太简单了,不过还在我在之前的博客中已经整理了关于zap包的使用,那么就可以把它的这个例子写的比较完善了,代码如下: package main import ( ginzap "github.com/gin-contrib/zap" ...

阅读全文 〉

Golang日志包zap的使用

一、缘由 最近在尝试用golang写简单的项目,但是之前一直忽略了一个重要的问题:==golang的日志包常用的是哪个?== 网上找了一些资料也问了一些目前做golang开发的朋友,目前使用最多的就是uber开源的一个日志模块:https://github.com/uber-go/zap start数量已经高达7k多,这篇文章主要就是整理如何使用这个包 二、安装 go get go.uber.org/zap 三、基础知识 关于Logger zap 包中有两种类型的logger: SugaredLogger:在性能要求不是很严格的情况下,可以使用SugaredLogger...

阅读全文 〉