go标准库实现---ASCII 字符包含判断

@TOCASCII 字符包含判断最近换工作,暂时离开了世界上最好的语言,成为了一名 golanger (这好象是一个 web 框架的名字),这一次打算养成良好的习惯,那就从写博客开始吧。文章背景正在琢磨自己用 go 实现一个脚本语言,写词法分析的时候,需要匹配字符串的功能,既然编译器都自己写了,这也自己写一个吧,去研究了下 go 的实现,发现设计的很巧妙,所以分享一下,美中不足的是只适用于 ascii 码源码展示type asciiSet [8]uint32 const RuneSelf = 0...阅读全文

Segmentfault 2020-08-18 13:32:32 爱简单

一个基于 Beego 的,能快速创建个人博客,cms 的系统

学习beego时候开发的一个博客系统,在持续完善,有不足之处,望大佬们多多体谅,并且指出。感谢!Go Blog 一个基于Beego的,能快速创建个人博客,cms 的系统包含功能查看Go Blog 官网 http://go-blog.cn演示站点 http://leechan.online更新日志时间功能2020年1月23日新增文章顶置功能2020年2月2日新增自定义导航功能2020年2月4日新增站点公告功能2020年2月6日新增友情链接模块2020年2月6日新增点赞功能2020年2月20日新增站...阅读全文

Segmentfault 2020-08-17 09:32:33 LeeChan

mysql 优化 面试 问答 流程

mysql优化1、MYSQL优化主要分为以下四大方面:设计:存储引擎,字段类型,范式与逆范式功能:索引,缓存,分区分表。架构:主从复制,读写分离,负载均衡。合理SQL:测试,经验。优先考虑的是表结构、选择合适的字段、索引优化、结合 Redis缓存、主从分离、(无可奈何才用 分区、分表、分库)mysql保存的数据格式是什么?安装 mysql 时选择的存储引擎是 MYISAM 的,则数据存储在 .MYD 文件中; 选择的是 innodb 存储引擎,则数据是统一存储在一个叫 ibdata1 的文件中的...阅读全文

Segmentfault 2020-08-14 16:32:38 特伦姝

Qmgo 开源了! 更好用的 Go 语言 MongoDB driver

近日,七牛研发团队开源了Qmgo[1] - Go 语言的 MongoDB driver。一经发布,便受到了「CSDN」、「Go 语言中文网」等多家媒体的报道和技术开发者们的广泛关注。Qmgo 在设计上参考了老牌的 driver Mgo[3] (比如 Mgo 的链式调用),基于Mongo 官方 driver[2]实现,但是有着更好的易用性。让我们一起深度了解这一开源项目。背景做 Qmgo 的初衷,来自于使用 MongoDB 的 gopher 们共同的困扰,在 MongoDB 的 Go 官方 dri...阅读全文

51CTO博客 2020-08-12 18:49:55 七仙女很忙

Casbin 专注、高效的访问控制框架

# Casbin 专注、高效的访问控制框架 ## 什么是casbin 几乎所有的系统在设计的时候都要有权限管理的模块,如果每次开发都要重新实现一次权限管理,光是想想就觉得无聊,程序员嘛能用轮子就用轮子,因此`casbin`出现了。 `casbin`是一个强大、高效的访问控制库。支持常用的多种访问控制模型,如`ACL/RBAC/ABAC`等。可以实现灵活的访问权限控制。同时,`casbin`支持多种编程语言,`Go/Java/Node/PHP/Python/.NET/Rust`。...阅读全文

Go语言中文网 2020-08-13 03:34:41 00LT00

Gin 框架绑定 JSON 参数使用 jsoniter

Gin 框架中,处理 JSON 格式的参数绑定时,默认采用的标准包 encoding/json,然而标准包不能满足我们的一些要求,比如兼容字符串整型、PHP空数组、时间格式等。最简单的方式开发 API 时,需要用到 ShouldBindJSON 绑定传入的参数到结构体:// github.com/gin-gonic/gin@v1.6.3/context.go:643 // ShouldBindJSON is a shortcut for c.ShouldBindWith(obj, binding...阅读全文

Segmentfault 2020-08-17 08:32:32 Jioby

golang的逃逸分析

翻译自:http://www.agardner.me/golang/garbage/collection/gc/escape/analysis/2015/10/18/go-escape-analysis.htmlGolang逃逸分析2015-10-18垃圾回收是Go的一个很方便的特性--其自动的内存管理使代码更整洁,同时减少内存泄漏的可能性。但是,由于垃圾回收需要周期性的停止程序从而去收集不用的对象,不可避免的会增加额外开销。Go编译器是智能的,它会自动决定一个变量是应该分配在堆上从而在将来便于...阅读全文

Segmentfault 2020-08-16 13:32:32 laughbug

Go语言之结构体,接口和文件操作

一 结构体 1 简介 1 结构体介绍 Go 语言通过自定义方式形成新的类型,结构体是类型中带有成员的符合类型,Go语言使用结构体和结构体成员来描述真实世界的实体和实体对应的各种属性。 2 字段 结构体成员是由一系列成员变量构成,这些成员变量称为"字段" 字段特征如下:1 字段必须有自己的名称和类型2 字段名必须唯一3 字段的类型一般是基本数据类型,数组,也可以是引用类型,甚至可以是字段所在的结构体的类型。 Go 语言中不但结构体可以拥有自己的方法,且每种自定义类型都可以拥有自己的方法 2 定义结...阅读全文

51CTO博客 2020-08-11 23:12:47 长跑者1号

用户UID的几种生成方案

本文目的是介绍市面上流行的UID生成方式、优劣情况,帮助读者根据自己的产品类型和用户规模选择合适的生成方案。什么是UID?UID是一个系统内用户的唯一标识,UID的特性: 唯一性、可公开广播、存在可能价值等。唯一性通过UID可以快速映射到一个具体的唯一用户上,类似于hash、短网址映射。可公开广播UID可以和用户的账号形成对应关系。对于某些以手机号、邮箱这些隐私内容为登录账号的系统,如果想增加转账这种业务,输入对方的UID,可以做到隐私保护。存在可能价值类似QQ靓号、B站短ID、微博ID这种可以...阅读全文

Segmentfault 2020-08-15 23:32:32 boywus

写Go项目有两件很烦的事情?本文讨论其中之一

写 Golang 项目有两件很烦的事情:一件是错误处理时连绵不绝的「if err != nil」,另一件是作为编译型语言,代码修改后不能实时看到效果, 借助一些工具可以实现文件修改后自动编译重启,比如: Linux 环境:inotify-tools[1](Golang Automatic Reloads[2]) Mac 环境:fswatch[3] 不过常见的工具要么不跨平台,要么操作复杂,好在我发现了一个 facebook 出品的神器:watchman[4],不仅跨平台,而且操作简单,你只要写个...阅读全文

51CTO博客 2020-08-10 20:00:23 小几斤

(毕设项目)Vue+Go前端后端一体化 企业级微服务网关项目

### (毕设项目)Vue+Go前端后端一体化 企业级微服务网关项目 下载地址:[百度云盘](http://www.51xuebc.com/thread-129-1-1.html) 不管是基于Java、Python、PHP,还是基于Go的网站,网站流量越高,对网关性能要求越高,尤其是亿级流量网站中,网关更是核心,它作为接入层承载了流量转发、负载均衡、服务限流、熔断降级等功能。作为后端开发者,掌握网关技术,是后端架构能力的分水岭,懂得设计网关才能知道架构精妙所在,本课程带你手把手设计并...阅读全文

Go语言中文网 2020-08-11 23:05:44 xihongshi

Go make 和 new 的区别

# 前言 在 go 中对某种类型进行初始化时会用到 `make` 和 `new`, 因为它们的功能相似,所以初学者可能对它们的感到困惑;本文将由浅入深的介绍其功能和区别 # 结论 长话短说,先放上结论: | 方法 | 作用 | 作用对象 | 返回值 | | ---- | -------- | --------------------------------...阅读全文

Go语言中文网 2020-08-11 22:13:30 quzhen

转发 go服务灰度发布实战

原文https://juejin.im/post/6844903693423230989引言随着微服务的快速发展,越来越多的公司选择使用“金丝雀发布”的模式进行软件的发布。在本文中我将通过华为的开源微服务框架:go-chassis,向各位介绍如何通过对router的管理从而达到金丝雀发布的目的。               ​                                                            图一Go-chassis实现金丝雀发布金丝雀发布:又...阅读全文

Go语言中文网 2020-08-11 20:12:26 tianxiaoliang

Go之断言类型(assert type)

1.背景介绍: 笔者最近在使用一个数据结构实现多个接口,但是却发现想要在一段时间内转换成接口1,另外一段时间转换成接口2,所以也就使用到了断言类型。在看过断言类型之后,觉得还是很有必要讲一讲这个断言类型,于是便有了这篇文章。2. 断言类型介绍:接口类型提供一种,将接口类型转换成具体类型的转换方法,也就是断言类型(assert type)。使用方法如下所示:1)语法一t := i.(T)解释说明:T:表示的是具体的数据类型,i:表示的是接口变量i,t:表示的是转换之后的变量。功能介绍:这个语句实现...阅读全文

Go语言中文网 2020-08-11 19:51:18 ZhDavis

Go语言==真的那么简单吗

1.背景介绍:笔者最近发现对于Go的struct在使用==的时候,有时候可以使用,有时候却不能使用,甚至编译出错。基于这个既定事实,笔者做了一次实现,便整理了这篇文章出来。struct使用==的例子如下所示:场景1:==可以使用package main import ( "fmt") type node struct { Name string Age int} func main() { n1 := node{Name: "hello", Age: 10} n2 := nod...阅读全文

Go语言中文网 2020-08-11 19:48:31 ZhDavis

Go之sort

一、sort介绍:    Go的pkg提供了一个排序的包sort,用于对slices和用户自定义的类型进行排序操作。原文参考:Package sort provides primitives for sorting slices and user-defined collections.https://golang.org/pkg/sort    该包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序,但是这四种排序方法是不公开的,它们只被用于 sort 包内部使用。    我们在对数...阅读全文

Go语言中文网 2020-08-11 19:45:38 ZhDavis

go之sync.Map

背景介绍:在golang中map不是并发安全的,所有才有了sync.Map的实现,尽管sync.Map的引入确实从性能上面解决了map的并发安全问题,不过sync.Map却没有实现len()函数,这导致了在使用sync.Map的时候,一旦需要计算长度,就比较麻烦,一定要在Range函数中去计算长度(备注:这个后面会有例子给出)。基于上面的现状,笔者从下面几点开始整理了这些知识:普通map的介绍,包括线程不安全部分和常规使用方法。sync.Map的使用方式。sync.Map的底层实现介绍。一、ma...阅读全文

Go语言中文网 2020-08-11 19:38:48 ZhDavis

Go语言入门系列(六)之再探函数

Go语言入门系列前面的文章:Go语言入门系列(三)之数组和切片Go语言入门系列(四)之map的使用Go语言入门系列(五)之指针和结构体的使用在Go语言入门系列(二)之基础语法总结这篇文章中已经介绍过了Go语言的函数的基本使用,包括声明、参数、返回值。本文再详细介绍一下函数的其他使用。1. 变参Go语言的函数除了支持0个或多个参数,还支持不定数量的参数,即变参。声明方式为:func foo(变参名 ...参数类型) 函数类型 { //函数体 }下面是一个具体的函数,它接收不定数量的int参数,并返...阅读全文

Segmentfault 2020-08-15 18:32:32 行人观学

教你如何搭建自己的go-gin框架(六) 模板处理

## 引言 > 简单说下本章的重点 * 1、静态服务器支持(映射静态文件路由) * 2、模板渲染 * 3、[代码地址 https://github.com/18211167516/go-Ebb/tree/master/day6-template](https://github.com/18211167516/go-Ebb/tree/master/day6-template) ## 1、支持静态服务器 ```golang func (group *RouterGroup) ...阅读全文

Go语言中文网 2020-08-11 17:29:29 18211167516