go-micro + consul 在线上项目中的实践
go-micro 是 go 语言生态中较为成熟,全面的框架,有点类似 spring boot 框架,它支持即插即用的插件,友好的中间件支持,负载均衡,服务注册发现,订阅发布,消息事件,配置中心,而且每个插件都支持多种技术,比如服务注册可以使用 consul,mdns,etcd,kubernetes等,你可以自行选择,切换也非常容易。go-micro 默认是 gRPC 服务,你也可以切换到别的 RPC。   我这里将介绍的 go-micro 一种使用方式与官方标准文档上使用的常用方式不一样,因为我不想写 proto,它是件挺麻烦的事儿,你得对消息(message)进行转换,从 proto 消息到你自己的结构体对象,还要从结构体对象转换成 proto 消息。go-micro 提供了对 noproto 的完美支持,而且使用起来比起使用 proto 文件生成 ***.pb.go 更加友好。接下来看看具体如何实现:   此线上的全部源码都已经提供在 github 上( https://github.com/iissy/goweb )目前已经有242个星,下面都还有对应的地址
golang 结构体实现 sort.Interface 接口
slice 类型要能实现排序,只需实现 sort.Interface 接口即可,但是 slice 类型并非唯一能实现 sort.Interface 接口的类型,这篇文章就介绍结构体如何实现 sort.Interface 接口来对结构体 slice 类型字段排序。
golang 使用 sort.Interface 实现正反排序
排序是编程中经常要遇到的一个算法,通常这个算法底层的实现都无需使用者考虑,go 语言也是如此,它提供了一个简单的实现模式让排序即插即用,能对任一序列排序。
手把手教你写一个 go gRPC 的入门教程
这篇文章将手把手教你写一个 go 语言的 gRPC 服务以及客户端教材,不管你是一个新手,还是一个有一点经验的求学者,我想这篇文章都让你耳目一新,它在官方教材基础上加上了一些具有实战意义的用法。
Protocol Buffer 中文入门使用文档
Protocol buffers 是 google 创造的一种系列化的数据格式,它语言无关,平台无关和可扩充的特点,类似 xml,json,但是更小,更快,更简单。
golang 二叉树来实现递归排序
二叉树的定义介绍就不多说了,网上很多,这里想利用二叉树数据结构来实现排序,每个节点就是一个结构体,它同时又包含两个同类型指针,一个左枝,一个右枝,小的值存入左枝,相同或者大值存入右枝。
UTF-8 编码在 Golang 中的解读
Go 语言的源文件总是按 UTF-8 编码,并且习惯上 Go 的字符串会按 UTF-8 解读,所以在源码中我们可以将 Unicode 码点写入字符串字面量。
Go iris 上传文件 + CKEditor 图片上传实践
最近将网站的富文本编辑器从 Vue-html5-editor 切换到 CKEditor,于是图片上传接口也跟着改,本着一不做二不休的原则,那就索性把上传接口也一并优化一下。
golang 位运算与位向量求交集/并集/对称差/差集
集合的交集,并集,对称差,差集是经常会遇到的算法,尤其是交集,并集。go 语言的集合通常使用 map[T]bool 来实现,其中 T 是元素类型。但是它不是最优的设计,今天我们要使用位向量数据结构来求解它们。
go 语言——方法变量与方法表达式
面向对象的(OOP)的编程思想已经在工业领域和教学领域占据了主导位置,而且几乎所有广泛应用的编程语言都支持了这种思想。Go 语言也不例外。
golang 错误处理原则与策略
错误处理是包的 API 设计或者应用程序用户接口的重要部分,发生错误只是许多预料行为中的一种而已。这就是 Go 语言处理错误的方法。
go-gorp 一款轻量级的 orm 框架搭配 mysql 的实践
go-gorp 是一款 go orm 框架,它可以节省您的时间,最大程度地减少将数据移入和移出数据库的麻烦,并帮助您的代码专注于算法,而不是基础架构。
golog 与 juju/errors 在 go iris 项目中的实践
本文介绍,或者说是推荐两个简单易用的有关日志与异常的记录包,日志与异常是对难舍难分的难兄难弟,本人在 go iris 实践中也换了好几次日志包了,最后选择这两个包。
Go Iris 实现将请求日志与异常日志按天写入本地文件
Go Iris 是一个非常优秀的web框架,它提供了很强大的扩充功能,而且框架的作者正在打造自己的 Go Iris 的生态,这篇文章用来介绍文件日志的记录。
Go 项目如何加载 config.json 格式的配置文件
不管是 web,api 项目,还是 jobs,微服务,控制台程序,我们都会用到配置文件,go 项目和很多 go 开源框架也并没有默认的标准配置文件。所以,我们自己需要实现,比如 xml,json,yaml等等格式配置文件的读取。
使用 go iris 实现记录每个接口请求和请求时间
这篇文章将介绍两种方式记录接口请求和请求时间,一种是大家熟悉的串联处理器,另一种是用延迟函数的中间件来记录,对于小网站,我想应该足够了。
使用 .Net Core 3.0 和 gRPC 微服务更新网站
.Net Core 3.0正式版已经发布,对我而言,这次最大更新便是gRPC的支持了,而且是全托管的方式实现,这个非常棒,之前引用google官方的gRPC组件会包含非托管的dll。
IntelliJ IDEA与Maven搭建一个Spring Boot项目
IntelliJ IDEA是当下Java Spring Boot开发的不二选择,很多前期的Eclipse开发者都开始转移过来。Maven是一个集开发,管理,发布的综合工具,我们甚至可以轻松的使用它发布docker镜像。
gRPC 微服务之 .Net Core 2.2 如何实现
gRPC 微服务在Go语言社区,可谓是应用非常广泛,它同时也支持其他市面上几乎所有的流行语言,比如Java,PHP,NodeJS,C#,Ruby,Python等等。微软的Visual Studio 2019将提供项目模版直接支持gRPC,用户可以直接创建gRPC项目。
Quartz 任务调度在 .Net Core 2.2 中的标准使用
Quartz.Net 是一款非常流行的任务调度组建,在很多系统中都必然要使用到,今天我就微软最新发布的.Net Core 2.2来介绍一下它的标准使用,也大致说下网上的那些不太正确的使用方式,当然那些也没错。
.net core2.2中使用swagger生成webapi接口文档
前端技术不断的发展,如:webpack,vue,前端路由等出现,使得前后端分离在项目中越来越普遍,后端工程师只需要完成接口以及接口文档,而今天要介绍的swagger就很好的解决了接口文档的生成问题。
ASP.NET Core 中的视图组件ViewComponent
视图组件是自ASP.NET Core以来的一个新的功能,它与部分视图类似,但是要强大许多,部分视图没有对应的背后代码,而视图组建有独立的后端代码支持,可重用性高。
Elasticsearch 如何实现一个搜索引擎网站
研究Elasticsearch有一段时间了,之前仅仅限于日志的存储、查询,最近想用Elasticsearch来做一个搜索引擎网站。参考了网上的实现,能直接用的极少,于是只能动手自己来实现一个简单易上手的搜索引擎网站,便于大家一起学习。最近,官方本已经发布了7.0的版本,docker版本也更新了最新的版本,那安装部署就太容易了。
使用docker-compose部署ASP.NET Core网站
ASP.NET Core已经发布到2.2版本,离大版本发布3.0也很近了。.NET Core是跨平台,它既可以部署在windows的IIS上,也可以部署在Linux、Mac上,对于生产环境,现在越来越多的投向了Linux,由于其强大的生态。
Go iris完美的支持缓存与Markdown标签
我们来看看Go iris对缓存与Markdown的支持,web框架支持缓存,这不是什么新鲜事,支持Markdown的却不是很多,而Go iris提供了对Markdown的完美支持。
Go iris与webpack + vue-router + axios开发CMS
本文主要介绍的是Go iris框架与vue相关的前端构架技术,而不会涉及太多关于CMS(内容管理系统)业务。Go语言是一门非常优雅的语言,Go iris继承与扩充了Go web核心库,vue是一个非常不错的前端框架,把最好的后端与最好的前端框架融合到一起做一个CMS是一种怎样的体验呢?
Go iris中如何正确使用securecookie加密验证
使用cookie认证登录,是很多网站常用的方式,因为它可持久化,方便用户下次再次无感知登陆使用系统,但是cookie的安全常常令人担忧,Go iris框架提供了cookie加密解密的函数类型,方便用户自行引入自己啊函数。
Go 语言通道在缓存设计中如何避免重复抑制
缓存在现在的互联网项目中,可谓无处不在,当用户请求一个数据的时候,不是直接从数据库拿取,而是首先从缓存中拿取,如果缓存不存在的情况下,才会从数据库拿取,并设置缓存,便于下个请求可以直接从缓存中拿取数据。
Go 语言中的mysql实现细节与样例
虽然Go语言有自己的database/sql的包,但是它本身并没有实现database/sql/driver驱动包,仅仅提供了接口,如果要使用数据库,需要使用第三方的包,比如使用mysql,我们常常选择go-sql-driver包,它实现了mysql的驱动。
Go iris框架单文件上传与多文件上传
Go iris框架是一款优秀的web框架,功能强大,可以谓包罗万象,不论你是使用接近原生态的模版创建网站,还是使用mvc都非常得心应手;同时还支持依赖注入,orm映射,websocket,webassembly等。
Go iris框架中如何使用视图模版
前面写了一篇文件介绍了iris的基础用法,但是未涉及到任何的视图页面,如果使用iris做网站,那一定会用到视图,于是便参考了源码,样例等,写个简单的demo,涵盖了模版,局部视图,呈现数据,页面函数等。
Go web使用串联处理器函数登陆与写日志
假如我们需要在每次请求时,记录下每个处理器函数的日志;或者在请求需要登陆后才可见的页面时做一个统一认证,那么串联多个处理器函数就可以轻松实现这些功能。
Go web标准库中的处理器与处理器函数
Go语言的标准库就足够实现非常强大的web开发,通过net/http标准库,我们可以启动一个HTTP服务器,然后让这个服务器接收请求并向请求返回响应,而接收服务器请求靠的就是处理器。
iris框架是一款优秀的Go web服务器实现
Iris是Go语言的一个快速,简单但功能齐全且非常高效的Go Web框架。Iris为您的下一个网站或API提供了一个精美的表达和易于使用的基础,这些促使我将它的各种使用样例总结如下。
Docker 常用的命令
学然后知不足,教然后之困。使用docker也有近2年了,从.net core发布开始就开始用docker来部署。也大致看过2本docker相关的数据,对一些基本的原理有了些了解,但是在使用中还是经常要查询相关的命令。于是将常用命令整理如下,后续不断更新。
gRPC 1.17.2 发布,谷歌开源的高性能 RPC 框架
gRPC 1.17.2 发布了,gRPC 是 Google 开源的高性能、通用 RPC 框架,面向移动和 HTTP/2 设计,是由谷歌发布的首款基于 Protocol Buffers 的 RPC 框架。gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性。
Redis 5.0 正式发布,新增流数据类型
Redis 5.0于2018年10月发布,新增了一个数据类型(Stream data type);redis集群的部署不再依赖ruby,而是集成到自身的命令行工具中;第一个大版本,生产环境,谨慎使用新功能。
go-micro中如何修改consul默认地址
Go Micro是一个可插拔的RPC框架,用于分布式系统开发。它提供的默认值,使得用户能快速开始开发,比如默认的服务发现是consul,默认是同一台机器,当然在生产环境,服务与服务发现部署到同一机器,这不是很好的实践,所以把consu机器独立出来就很有必要了。
使用koa如何写一个gRPC的客服端
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。gRPC是一个款高性能,开源的通用RPC框架,由google主导并维护。
Visual Studio中使用vue.js开发单页面程序
Vue.js是一个多功能的JavaScript框架,对构建ASP.NET Core Web应用程序的开发人员有很多好处。然而,开始使用这个框架并不容易,这篇文件就来介绍如何用Visual Studio开发一个基于Vue的Web应用程序。
webpack+vue实现图片与标题的轮播
在网站首页实现图片连带标题一起轮流播放,可以使得网站更具动感,活泼,从而提升用户的使用体验,本文用在webpack构建的场景下,用vue来实现这个常用的功能。
kubernetes单机版安装一个nginx实例
本文将介绍如何在CentOS 7.5上安装一个单机版的kubernetes,并在上面部署一个nginx服务。由于Google的相关网站被屏蔽,导致某些组建无法下载,所以需要修改下载国内镜像地址。
.Net中如何使用StackExchange.Redis组建
StackExchange.Redis是由Stack Overflow开发的c#语言Redis客户端,是当下最流行的Redis客户端组件,完全免费和开源,使用方便,性能优越,版本更新也及时,能适配Redis最新的功能。
Topshelf + Quartz + StructureMap搭配
Topshelf,Quartz,StructureMap这三个.net组件一直都有用。但是将他们用在一个项目中,这还是第一次。虽然现在.net core已经升级到2.1了,但是还是有很多的项目都还在用.net 4.5的框架,不能升级,各有各的原因。
当 webpack 恰巧遇上 Asp.net mvc core
本文不作为webpack与asp.net mvc core的入门文章,入门文章请参考它们的官方文档。本文主要介绍,webpack是如何与asp.net mvc core无缝衔接的,而visual studio 2017又是如何完美支持webpack的。
Nginx 通过 proxy_cache 缓存动态页面
要提升动态网站的响应速度,通常有两种方式,一种就是负载均衡,添加更多的背后服务器,这个成本比较高;第二种是缓存,有些动态的数据对即时性要求并不高,或者说一当生成,也不会再发生变化,这种情况就可以缓存。
Vue-html5-editor富文本编辑器推荐
Vue-html5-editor是一个Vue的富文本编辑器插件,简洁灵活可扩展,适用于vue2.0以上版本,支持IE11,支持图片上传,压缩;支持全屏模式下编辑,扩大编辑框的内容,提高编辑的效率。
我们团队正在使用哪些前端框架
说到前端框架我们首先就会想到React、Vue和Angular,形成了三足鼎立的场面,当然还远不止这些。就我个人用的就还有很多,比如:Knockoutjs,EasyUI,Bootstrap、jQuery UI等等。
Go 语言最简单的入门教程
这篇文章,将直接介绍如何编写可以执行的代码,不介绍Go语言起源,这类文章在之前已经介绍过,如: Golang 开篇 , Golang 起源 。 前置提示 - Windows 10 - Golang 1
MongoDB 在 CentOS 7 上部署3个集群
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数
用dotnet开发一个gRPC的为服务以及客服端
gRPC是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,跨平台,跨语言。支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP
docker容器的启动停止对.net core生命周期的支持
这篇文章主要来介绍docker容器的启动停止对.net core生命周期的支持。用docker部署.net core时,如何在启动,停止时执行注入的代码呢?无意中看asp.net core文档,看见生
quartz.net 时间表达式——Cron表达式详解
序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无
Attribute Routing 在 Asp.net Webapi 中的使用
环境要求 Visual Studio 2013 以及更高版本 为什么要使用  Attribute Routing 在实际的应用中,我们常常需要符合用户理解的url,这通过基于约定的路由方式实
Expression 表达式替代反射,包括带out参数的用法
带out参数的使用方法,研究了好一会才弄出来,网上基本上找不到样例 public static bool TryParse(string s,out uint result) 下面的代码将对上面的Tr
CentOS 7 使用 FirewallD 打开关闭防火墙与端口
什么是FirewallD FirewallD即Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器。FirewallD是一个服务,用于配
jquery.lazyload插件实现图片延迟加载
jquery.lazyload是一个实现图片延迟加载的jQuery 插件,它可以延迟加载长页面中的图片。在浏览器可视区域外的图片在初始状态下不会被载入,直到用户将页面滚动到它们所在的位置。 1.引入j
常用 Git 命令清单
Git是目前世界上最先进的分布式版本控制系统,相比其他的svn,tfs等工具,它在分支管理,仓库完整性,网络条件的依赖等方面有显著的优势。其代表作Github,Gitlab,是我们日常使用最多的工具。
右键 - 添加Git Bash Here菜单
1、通过在“运行”中输入‘regedit’,打开注册表。 2、找到[HKEY_CLASSES_ROOT\Directory\Background]。 3、在[Background]下如果没有[shel
在生产环境使用docker-compose启动轻量级的.net core项目
.Net Core 2.0发布有段时间了,之前不管是控制台应用程序开发,还是网站开发,都习惯安装.Net Core SDK,如果docker部署就安装SDK镜像,理论上没啥问题,但是microsoft
Centos 7.4上安装配置docker-compose快速入门
docker是容器技术,不是虚拟化,它使得每个安装到系统上的服务彼此隔离,又可以彼此通讯;互不干扰,又可以互相协作。它相比以前直接在系统上安装软件,更少的依赖,冲突,也更加干净。我也已经在docker
使用logstash将mysql/sql server数据自动导入elasticsearch
当一个网站的信息不断增长的情况下,各种数据直接检索从数据库遇到瓶颈时,我们常常会使用elasticsearch来做全文索引,从而提高用户的检索体验。我下面使用当下流行的docker容器来实现这一切,当
Exceptionless日志框架对比ELK日志套件
Exceptionless作为一个小众的精简的日志记录框架,它在log4net基础上增加了可视化管理,ELK是一个集成化,专业化的日志,搜索,数据存储的引擎或者工具,支持多种插件扩张。  
Linux(CentOS 7.3)下用Docker搭建Gitlab实战
GitLab是一个开源应用程序,通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个
CentOS 7.3 上用 docker 部署 redis 介绍
Redis最新的版本已经是4.0.1了,我查了下镜像也更新了。于是在本地部署体验下,当然,这篇文章不是来介绍Redis 4.0的新功能,而是来介绍如何用docker来部署的入门级课程。 1. Dock
Asp.net Core 2.0 Cookie 认证
微软提前发布了大家期待已久的.Net Core 2.0,本站长也是迫不及待地将项目更新到2.0,但是发现编译无法通过。登陆功能也有红线提醒问题,于是查看官方文档,找到问题所在,记录下来。我是用最常见的
Go 1.9 正式发布
Go 1.9发布,离上个版本1.8发布,大约6个月时间,是第十个Go 1.x系列发布。包含两个语言的更新,类型别名与混合浮点运算实现。其他的更新主要集中在工具连、运行时和类库。一如既往,保持对1.x版
Golang 在web开发中如何处理表单
Web开发,免不了要做表单的提交,包括登陆,文章发布,图片上传等等。非常友好的是,Golang基础类库已经实现了表单数据的收集,开发人员可以轻易的获取表单数据,包括表头信息。无论是直接用key访问,还
Golang 写一个Web,如何使用Docker部署
使用Docker来部署服务已经流行一段时间了,可以说Docker在服务中是无处不在,几乎每个开源应用都有自己的docker镜像。Golang与其他语言相比,有更多的优势,Golang编译后得到的二进制
Golang 写一个 Web 服务器有多简单
使用Go的库非常容易实现一个Web服务器。仅仅需要寥寥几行代码,因为库函数做了大部分的工作。同时底层代码负责并发的请求,对于每个传入的请求,服务器在不同的goroutine中运行,对开发者是透明的,几
Linux(CentOS) 上搭建Git服务器
有时,我们常常需要一个私有的仓库来存放源代码,github私有仓库是收费的,自己搭建一个gitlab又显得没有必要,那么我们可以在服务器上搭建一个git的服务端,它提供了git的所有功能,关键是足够轻
Golang,Hello world
我们依然从永恒的“hello world”例子开始,它出现在1978年出版的《The C Programming Language》这本书的开头。C对Go的影响非常直接,我们用“hello,world
Golang 起源
和生物学物种一样,成功的语言会繁衍后代,这些后代语言会从它们的祖先那里汲取各种优点;有时候,语言间的“混血”会产生异常强大的力量;在一些罕见情况下,某个重大的语言特性也可能凭空出现而并无先例。通过考察
Golang 开篇
Go是一种开源的程序设计语言,它意在使得人们能够方便地构建简单、可靠、高效的软件。大家称呼它Golang,有时称Go语言。   Go在2007年9月形成构想,并于2009年11月发布,其发明人是Rob
Apache 的 ab 压测工具快速入门
Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。
No executable found matching command "bower"
在使用vs code做开发,发布时候遇到的问题,因为发布要使用到node.js的功能,由于没有安装node的一些插件,导致无法成功发布。
logstash一款功能强大的数据收集组件
Logstash是一款开源的实时的数据收集引擎。它内置大量input, filter, and output的插件,用户轻松实现复杂的数据收集,过滤,与输出。Logstash支持同时多个input,output配置,比如你可以将数据写入elasticsearch同时,还在终端打印。
Filebeat 一个日志收集工具的快速入门
Filebeat是一个本地系统日志的搬运工。通过安装到服务器上作为代码的角色,监控日志数据,并将它搬运到指定的接口,比如Elasticsearch,Logstash,Redis等。
Asp.net core mvc 如何使用 cookie 登陆认证
Asp.net core mvc 较之前的mvc版本在登陆认证上做了比较大的改动,以前的方式基本无法使用,这篇文件简单介绍cookie的认证方式,参考官网文档设计。
docker部署asp.net core,实现负载均衡,方便网站发布升级
随着对docker容器的了解,又对网站动刀子了。选择这么做主要是为了无缝发布,同时这次将静态资源分离出来,生成容器的时候无需将静态资源放入,通过映射关系就好,而且可以同时支持多个容器,一举两得。
在Linux中使用全Docker方式来部署Asp.net Core mvc网站
为什么要使用Docker呢,网上有大量的文章已经很有说服力了,对于我而言,就是觉得部署简单,依赖清晰,使用干净,不像以前那样,如果一个应用安装失败,然后服务器上就有大量的垃圾产生,更糟糕的是,可能带来一些冲突,或者依赖失败等。
Docker 在 CentOS 7.3 的安装使用及对外访问权限
由于原生的CentOS 7.3没有iptables,所以在使用Docker启动服务时,会报错No chain/target/match by that name的错误,直接用yum安装就可以,如果已经安装了Docker,使用文章中的命令删除Docker,然后再装就行了。
CentOS 7.3 上使用 Nginx 搭建 .Net Core 平台
.Net Core 已经发布1.1,而2.0将在2017年第三季度,开发工具Visual Studio 2017也如期发布,Visual Studio Code也发布1.10版本,部署到Linux平台也已经很成熟。
CentOS 7 使用 FirewallD 打开关闭防火墙与端口
FirewallD即Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器。在CentOS7开始,默认是没有iptables的,而是使用了firewall防火墙。
Nginx在CentOS 7.3上安装与高阶配置
Nginx是目前Linux平台最受欢迎的Web服务器,主要功能包括静态文件服务器,负载均衡,缓存服务器等。
安装MySQL:Access denied for user 'root'@'localhost' (using password: NO)
打算将这个个人博客的宿主服务器降配到1核1G(阿里云服务器,为了省点钱也是蛮拼的。),于是就得将系统也切换到CentOS,就得将数据库切换到MySQL。
Centos 7上安装Java 8.x,Elasticsearch 5.x
我们的产品中有用到Lucene,我大致了解了这个项目,Lucene.net官方已经很久没有更新了,已经无法满足现在分布式,高并发,高可用的需求了,于是开始研究Elasticsearch ,大致有了概念了,分享出来,以便下次可以重用。