etcd常用操作介绍

2019-10-24
阅读 5 分钟
7.2k
最简单的安装方法是直接去etcd GitHub的Release页下载预编译好的二进制文件。etcd官方为各个系统提供了不同的二进制文件,供开发者根据自己的系统去下载。

看图轻松了解etcd

2019-10-20
阅读 4 分钟
9.5k
用一些图示结合场景和文字轻松了解etcd,文章是针对etcd初学者的,目的是让大家了解etcd是什么、主要在什么场景下使用、etcd集群是怎么工作的以及创建集群时应该如何选择集群的节点数。

Go如何对数组切片进行去重

2019-10-15
阅读 3 分钟
13.6k
removeDuplicateElement函数总共初始化两个变量,一个长度为0的slice,一个空map。由于slice传参是按引用传递,没有创建占用额外的内存空间。

为什么Go中有的自定义error会导致内存溢出

2019-10-13
阅读 2 分钟
2.3k
分享一个在go tour上看到的练习题,练习里要求用户自己定义一个错误类型,实现error接口,函数在参数不满足条件的时候返回自定义的错误类型的值。练习中特别提示用户不要在实现的Error方法里直接使用fmt.Sprint(e)以避免造成程序内存溢出。

Go中数字转换字符串的正确姿势

2019-10-11
阅读 1 分钟
4.9k
在许多语言中,你可以轻松地将任何数据类型转换为字符串,只需将其与字符串连接,或者使用类型转换表达式即可。但是,如果你在Go中尝试执行似乎很明显的操作(例如将int转换为字符串),你不太可能获得预期的效果。

用Golang构建gRPC服务

2019-10-06
阅读 12 分钟
3.8k
本教程提供了Go使用gRPC的基础教程 在教程中你将会学到如何: 在.proto文件中定义一个服务。 使用protocol buffer编译器生成客户端和服务端代码。 使用gRPC的Go API为你的服务写一个客户端和服务器。 继续之前,请确保你已经对gRPC概念有所了解,并且熟悉protocol buffer。需要注意的是教程中的示例使用的是proto3版本的...

分布式服务框架gRPC

2019-10-04
阅读 4 分钟
17.4k
gRPC是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于Protobuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。在gRPC中一个客户端可以像使用本地对象那样直接调用位于不同机器上的服务端应用的方法(methods)。这让你能够更容易的构建分布式的应用和...

Protobuf编码指南

2019-09-29
阅读 4 分钟
4k
这个文档会介绍protocol buffer的二进制有线格式(binary wire format)。你并不是需要理解这些后才能在应用里使用protocol buffer,但是当你想知道不同的protocol buffer格式是如何影响编码后的消息体的体积时,这些知识会非常有用。

详解varint编码原理

2019-09-26
阅读 3 分钟
19.6k
Varint是一种使用一个或多个字节序列化整数的方法,会把整数编码为变长字节。对于32位整型数据经过Varint编码后需要1~5个字节,小的数字使用1个byte,大的数字使用5个bytes。64位整型数据编码后占用1~10个字节。在实际场景中小数字的使用率远远多于大数字,因此通过Varint编码对于大部分场景都可以起到很好的压缩效果。

在Golang中使用Protobuf

2019-09-20
阅读 5 分钟
11.3k
本教程使用proto3版本的protocol buffer语言,提供了一个基本的在Go程序中使用protocol buffer的介绍。通过创建一个简单的示例应用程序,向你展示如何

Protobuf生成Go代码指南

2019-09-18
阅读 5 分钟
26.3k
这个教程中将会描述protocol buffer编译器通过给定的.proto会编译生成什么Go代码。教程针对的是proto3版本的protobuf。在阅读之前确保你已经阅读过Protobuf语言指南。

Protobuf语言指南

2019-09-15
阅读 12 分钟
8.5k
Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,用于描述一种轻便高效的结构化数据存储格式,并于2008年对外开源。Protobuf可以用于结构化数据串行化,或者说序列化。它的设计非常适用于在网络通讯中的数据载体,很适合做数据存储或 RPC 数据交换格式,它序列化出来的数据量少再加上以 K-V ...

Redis的应用场景汇总

2019-08-28
阅读 3 分钟
3.4k
Redis作为一个非关系型数据库,除了在访问速度上拥有显著优势外,其本身支持的多种数据类型也非常有用,能覆盖系统开发中的很多应用场景。下面列举的场景有的是从网上其他人的博客里看到的,有的自己开发时尝试过的一些解决方案后记录下来的,希望能给以后的开发带来启发。

细说Golang的JSON解析

2019-07-17
阅读 4 分钟
13.7k
之前一直写一些动态语言,觉得解析JOSN还是很简单的,往往只需要几行代码就能拿到解析好的JSON对象。Go语言自带的json包可以让你在程序中方便的读取和写入 JSON 数据。生成JSON场景相对简单一些,json.Marshal()会根据传入的结构体生成JSON数据。解析JSON会把数据解析到结构体中,由于JSON格式的自由组合的特点,尤其是...

带你弄懂JWT原理

2019-06-07
阅读 3 分钟
8.9k
上面的URL主要通过URL来描述这个当然这样做有一个弊端,那就是要求用户B用户是一定要先登录的。可不可以简化这个流程,让B用户不用登录就可以完成这个操作。JWT就允许我们做到这点。

二分查找算法速记

2019-04-26
阅读 1 分钟
2.9k
二分查找(英语:binary search),也称折半搜索(英语:half-interval search)对数搜索(英语:logarithmic search,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元...

快速排序填坑口诀

2019-04-23
阅读 3 分钟
4.1k
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此在很多笔试面试中出现的几率很高。

MYSQL统计行数时到底应该怎么COUNT

2019-04-14
阅读 2 分钟
4k
相信每个人在写代码时都有遇到过要获取MYSQL表里数据行数的情况,多数人获取数据表行数时都用COUNT(*),但同时也流传了不少其他方式,比如说COUNT(1)、COUNT(主键)、COUNT(字段)。到底哪种方式MYSQL执行起来更快也是众说纷纭,其实之前我也不知道到底哪个执行起来快,到底谁说的对(笑哭)。好在最近在认真学习极客时间的M...

用分布式锁解决并发问题

2019-03-13
阅读 3 分钟
9.1k
在系统中,当存在多个进程和线程可以改变某个共享数据时,就容易出现并发问题导致共享数据的不一致性。即多个进程同时获取到了对数据的操作权限并对数据进行了更新,很典型的场景就是在线销售系统在售卖热销商品时遇到多个并发请求在同一时间提交订单的情况则极有可能造成商品超卖的现象。只要访问流量不错的系统都有可...

用Docker搭建Laravel和Vue项目的开发环境

2019-03-03
阅读 6 分钟
9.7k
在这篇文章中我们将通过Docker在个人本地电脑上构建一个快速、轻量级、不依赖本地电脑所安装的任何开发套件的可复制的Laravel和Vue项目的开发环境(开发环境的所有依赖都安装在Docker构建容器里),加入Vue只是因为有的项目里会在Laravel项目中使用Vue做前后端分离开发,开发环境中需要安装前端开发需要的工具集,当然前...

JS module的导出和导入

2019-02-24
阅读 3 分钟
4.4k
最近看了些Vue框架写的程序,发现自己的前端知识还停留在几年以前,发现现在Javascript程序里有各种各样的对module的导入和到处,导入乍一看跟python的语法挺像的无非就是把from和import这两个关键词的使用颠倒了一下顺序。仔细看下来还是和python挺不一样的import模块的前提是模块有导出,并且还分默认导出和命名导出,...

Laravel核心解读--完结篇

2019-02-22
阅读 2 分钟
5k
过去一年时间写了20多篇文章来探讨了我认为的Larave框架最核心部分的设计思路、代码实现。通过更新文章自己在软件设计、文字表达方面都有所提高,在刚开始决定写Laravel源码分析地文章的时候我地期望是自己和读者通过学习Laravel核心的代码能在软件设计上带来提高,这些提高主要是指两方面:

Laravel核心解读--异常处理

2019-02-07
阅读 8 分钟
5k
异常处理是编程中十分重要但也最容易被人忽视的语言特性,它为开发者提供了处理程序运行时错误的机制,对于程序设计来说正确的异常处理能够防止泄露程序自身细节给用户,给开发者提供完整的错误回溯堆栈,同时也能提高程序的健壮性。

Laravel核心解读--Console内核

2018-12-01
阅读 6 分钟
6.4k
上一篇文章我们介绍了Laravel的HTTP内核,详细概述了网络请求从进入应用到应用处理完请求返回HTTP响应整个生命周期中HTTP内核是如何调动Laravel各个核心组件来完成任务的。除了处理HTTP请求一个健壮的应用经常还会需要执行计划任务、异步队列这些。Laravel为了能让应用满足这些场景设计了artisan工具,通过artisan工具定...

Laravel核心解读--HTTP内核

2018-11-10
阅读 9 分钟
6.5k
Http Kernel是Laravel中用来串联框架的各个核心组件来网络请求的,简单的说只要是通过public/index.php来启动框架的都会用到Http Kernel,而另外的类似通过artisan命令、计划任务、队列启动框架进行处理的都会用到Console Kernel, 今天我们先梳理一下Http Kernel做的事情。

Laravel核心解读--ENV的加载和读取

2018-10-22
阅读 8 分钟
8.6k
Laravel在启动时会加载项目中的.env文件。对于应用程序运行的环境来说,不同的环境有不同的配置通常是很有用的。 例如,你可能希望在本地使用测试的Mysql数据库而在上线后希望项目能够自动切换到生产Mysql数据库。本文将会详细介绍 env 文件的使用与源码的分析。

用PHP和Python生成短链接服务的字符串ID

2018-10-13
阅读 2 分钟
4.2k
假设你想做一个像微博短链接那样的短链接服务,短链接服务生成的URL都非常短例如: [链接] 我们应该都能想到链接中的E70Piib对应的就是存储长链接地址的数据记录的ID,可是这个有大小写字母和数字构成的唯一ID是怎么生成的呢,刚学编程的时候我们用的方法都试拼接一个足够唯一的字符串(比如时间戳加用户ID等等)然后再用...

Laravel核心解读--Contracts契约

2018-09-30
阅读 4 分钟
4.2k
通过上面几个契约的源码文件我们可以看到,Laravel提供的契约是为核心模块定义的一组interface。Laravel为每个契约都提供了相应的实现类,下表列出了Laravel为上面提到的三个契约提供的实现类。

用Gitlab持续集成解放你的双手

2018-09-18
阅读 4 分钟
5.9k
Gitlab持续集成是Gitlab提供的一整套持续集成、持续交付解决方案。Gitlab自9.0版本开始增加了CI和CD功能,所以如果你的公司里的Gitlab上在Settings里找不到关于CI/CD的配置项那么你们确实该对公司的GitLab进行升级了。

Laravel核心解读--Cookie源码分析

2018-09-01
阅读 10 分钟
6.1k
为了安全起见,Laravel 框架创建的所有 Cookie 都经过加密并使用一个认证码进行签名,这意味着如果客户端修改了它们则需要对其进行有效性验证。我们使用 Illuminate\Http\Request 实例的 cookie 方法从请求中获取 Cookie 的值: