首页
学习
活动
专区
工具
TVP
发布

米奇爱编程

专栏成员
29
文章
32832
阅读量
13
订阅数
JSON Schema
JSON 作为通用的前后端交互,或者后台服务间通信的通用格式被大家广泛使用。我们肯定遇到过一些场景需要校验调用方传递过来的数据格式,比如一定要包含某些字段,某个字段一定要符合某种格式,比如定义了价格的字段,范围一定要在100~200之间,协议字段一定要是TCP或者UDP等枚举类型。你是否在你的用户代码里面自行实现这些判断逻辑呢?如果这样的规则越来越多是不是会显得代码很臃肿呢?这就是为什么要介绍我们今天的主角JSON Schema。JSON Schema定义了JSON格式的规范,各种语言都有开源的第三方JSON Schema校验库,例如Go语言的gojsonschema,这样我们就可以定义一份JSON Schema,然后系统的各个模块都可以复用这套JSON规范,不满足规则的数据JSON Schema会直接报错。
用户2937493
2019-11-12
2.7K0
基于zookeeper或redis实现分布式锁
在分布式系统中,分布式锁是为了解决多实例之间的同步问题。例如master选举,能够获取分布式锁的就是master,获取失败的就是slave。又或者能够获取锁的实例能够完成特定的操作。
用户2937493
2019-09-11
5550
go module
go 1.5 引进了vendor管理工程依赖包,但是vendor的存放路径是在GOPATH底下,另外每个依赖还可以有自己的vendor,通常会弄得很乱,尽管dep管理工具可以将vendor平级化管理,但是相对GOPATH的路径是逃不掉的。另外,各个包的版本管理也显得原始,甚至有的开发将依赖包从github直接download下来自己放到GOPATH底下的vendor。go的依赖包管理一致是开发者诟病的一个痛点。所以在千呼万唤中,go 1.11 终于引进了go module管理工程的包依赖,去除了项目包管理对GOPATH的依赖,明确了依赖包的版本管理。
用户2937493
2019-09-10
1.3K0
快速排序
快速排序思想:如果要排数组p到r之间的一组数据,选择p到r之间任意一个一个数据作为pivot(分区点,这里选择的是s[r]作为pivot)。遍历p到r之间的数据,将小于pivot的数据放在左边,其他的放右边。经过这一步骤后数据p到r被分成了三份,前面p~q-1的数据小于pivot,q+1~r的数据大于pivot。接着递归分治实现剩下子分区的排序。
用户2937493
2019-09-10
3870
设计模式泛谈
设计模式一直是程序员津津乐道的事情,经常codereview的时候就会有人提出,这个代码不符合XX设计原则或者XX设计模式。关于设计模式的书籍市场上也是林林种种,多如牛毛。笔者有幸拜读了GOF(gang of four)的神作《设计模式--可复用的面向对象软件的基础》在感慨四位大师智慧的同时不得不承认有些模式确实是已经跟不上时代了,毕竟这本书是1995年出版的,限于当时机器的一些硬件(内存,cpu等)原因,还有当时一些高级的语言和数据结构和标准没有形成,所以书中会描述一些在今天看来已经跟不上潮流的模式。本文不打算对GOF的23种设计模式一一详细描述,有些比较有共鸣的模式会有具体的代码示例和详细描述,一些没有共鸣的模式可能就一笔带过了,本文中所有的示例都是C++的伪代码,或者是一部分代码。C++实现设计模式就要强依赖虚函数,虚函数可以在运行时动态绑定具体的函数,从而给了程序更多的可拓展性。
用户2937493
2019-09-10
3820
Golang高效实践之array、slice、map实践
Golang的slice类型为连续同类型数据提供了一个方便并且高效的实现方式。slice的实现是基于array,slice和map一样是类似于指针语义,传递slice和map并不涉及底层数据结构的拷贝,相当于传递底层数据结构的指针。
用户2937493
2019-08-29
7070
Golang高效实践之泛谈篇
我博客之前的Golang高效实践系列博客中已经系统的介绍了Golang的一些高效实践建议,例如:《Golang高效实践之interface、reflection、json实践》、《Golang 高效实践之defer、panic、recover实践》、《Golang 高效实践之并发实践context篇》、《Golang 高效实践之并发实践channel篇》,本文将介绍一些零散的Golang高效实践建议,虽然琐碎但是比较重要。
用户2937493
2019-08-29
4520
Golang高效实践之interface、reflection、json实践
反射是程序校验自己数据结构和类型的一种机制。文章尝试解释Golang的反射机制工作原理,每种编程语言的反射模型都是不同的,有很多语言甚至都不支持反射。
用户2937493
2019-08-29
9490
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档