Golang系列之os 相关操作

记录相关os的操作函数 1. golang之os 判断文件夹是否存在 // 判断所给路径文件/文件夹是否存在 func Exists(path string) bool { _, err := os.Stat(path) //os.Stat获取文件信息 if err != nil { if os.IsExist(err) { return true } return false } return true } 2. golang之os 判断路径是否为文件夹 // 判断所给路径是否为文件夹 fun...阅读全文

go mod有了它,再也不用担心运行缺少类库了

参考链接:https://blog.csdn.net/weixin_39003229/article/details/97638573 什么是go.mod? Go.mod是Golang1.11版本新引入的官方包管理工具用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。 Go.mod其实就是一个Modules,关于Modules的官方定义为: Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modu...阅读全文

Golang grpc server响应请求

朋友偶然问了一句,golang的grpc在接到请求后是如何调到对应的实现函数的? 当时对着代码讲了一通。后来想想觉得这是个好问题,写下来记录一下。 注册: func main() { listen, err := net.Listen("tcp", ":2008") if err != nil { fmt.Println("net.Listen tcp :2008 err", err) return } s := grpc.NewServer() hServer := xxx.Server{} ...阅读全文

腾讯云函数SCF初探

前不久的微信开发者大会上在推他们的Serverless架构,即他们的产品腾讯云函数SCF。 当然这个也不是新鲜的事物,在亚马逊提供的同类服务叫做lambda,阿里云提供的则叫做函数计算,Cloudflare的则名为workers。 在编程语言的支持上,除了Cloudflare的workers只支持javascript。 其余几家都支持python、php、golang、node,java等主流开发语言。 关于workers的描述,Cloudflare官网是这样描述的: ……Cloudflare ...阅读全文

Kubernetes 中部署 NFS Provisioner 为 NFS 提供动态分配卷(上篇)

一、NFS Provisioner 简介 NFS Provisioner 是一个自动配置卷程序,它使用现有的和已配置的 NFS 服务器来支持通过持久卷声明动态配置 Kubernetes 持久卷。 持久卷被配置为:namespace−{pvcName}-${pvName}。 二、External NFS 驱动的工作原理 K8S 的外部 NFS 驱动,可以按照其工作方式(是作为 NFS server 还是 NFS client)分为两类: 1、nfs-client 也就是我们接下来演示的这一类,它通...阅读全文

Go Modules : v2 及更高版本

本文是一篇翻译文章: blog.golang.org/v2-go-modul… 原文作者:Jean de Klerk 和 Tyler Bui-Palsu 译者:befovy 校对:polaris1119 译文由 GCTT 原创编译,Go语言中文网 荣誉推出 简介 本文是 Go modules 系统的第四部分 Part 1: 使用 Go Modules 译文 Part 2: 迁移到 Go Modules 译文 Part 3: 发布 Go Modules 译文 Part 4: Go Modules ...阅读全文

掘金 2019年12月04日 半岛打铁匠

Rust 入门 (四)

所有权是 rust 语言独有的特性,它保证了在没有垃圾回收机制下的内存安全,所以理解 rust 的所有权是很有必要的。接下来,我们来讨论所有权和它的几个特性:借用、切片和内存结构。 什么是所有权 Rust 的核心特性是所有权。各种语言都有它们自己管理内存的方式,有些是使用垃圾回收机制,有些是手动管理内存,而 rust 使用的是所有权机制来管理内存。 所有权规则 所有权规则如下: rust 中的每个值都有一个自己的变量。 rust 值在同一时间只能绑定一个变量。 变量超出作用域,值会自动被销毁。 ...阅读全文

掘金 2019年12月04日 单鹏飞

Golang并发

在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否有一种机制:使用者分配足够多的任务,系统能自动帮助使用者把任务分配到 CPU 上,让这些任务尽量并发...阅读全文

Golang的异常处理介绍

package main import "github.com/astaxie/beego/logs" func main() { //关于Golang的异常处理方式说明 //1.关键词 panic 2.recover 3.defer函数 //panic 的作用是抛出一个错误信息 可以看作是Java中的throws new Exception //panic 调用完程序会立即停止 后续程序不会再执行 //demo1. var number=10 if number==10{ panic("错误信...阅读全文

Golang中make和new初始化对象的区别

1.关于在golang当中我们经常使用new或者make去创建对象那么 讲解一下new和make的区别 Golang中 new 和 make 是两个内置函数,主要用来创建并分配类型的内存。在我们定义变量的时候,可能会觉得有点迷惑,不知道应该使用哪个函数来声明变量,其实他们的规则很简单,new 只分配内存,而 make 只能用于 slice、map 和 channel 的初始化 package main import "github.com/astaxie/beego/logs" type Stu...阅读全文

撮合引擎开发:完结篇

欢迎关注「Keegan小钢」公众号获取更多文章 撮合引擎开发:开篇 撮合引擎开发:MVP版本 撮合引擎开发:数据结构设计 撮合引擎开发:对接黑箱 撮合引擎开发:解密黑箱流程 撮合引擎开发:流程的代码实现 撮合引擎开发:缓存和MQ 撮合引擎开发:日志输出 撮合引擎开发:完结篇 本小节是该系列文章的最后一篇了,将讲解剩下的一些东西,包括交易委托账本中订单队列的实现逻辑、更多订单类型的实现逻辑。另外,不少朋友在问,完结后所有代码是否会开源放上 Github?我只能说,长期大概率会开源,但短期内还没打算...阅读全文

掘金 2019年12月05日 Keegan小钢

【他山之石】大话密码学·默克尔树·章三 扬前帆

前帆(Jib):主桅杆前面使用的帆 基本定义 Merkle Tree 是由计算机科学家 Ralph Merkle 在很多年前提出的,并以他本人的名字来命名,中文翻译过来叫默克尔树,也叫哈希树。 哈希树 主要用途 Merkle Tree 常用来做完整性校验的,所谓的完整性校验,就是检查一下数据有没有损坏或者被恶意篡改。 Merkle Tree 的最大的应用场合就是在点对点网络上,早期的 BT ,电驴,快播等各种下载器,以及目前普遍使用的 Git 版本控制系统,NMP包管理,GoLang 包管理,I...阅读全文

Java并发核心知识体系精讲

​Java并发编程精讲 完整无密 【点击下载】本门并发课程与市面上课程最大差异是:体系化,是并发编程“道”与“术”的解析。涵盖并发必须跨越的“三座大山”:多线程并发的8大核心基础+Java内存模型+并发场景下的“死锁”问题。“第一座大山”八大核心基础分为8个章节讲解,分而治之,逐个攻克,为翻越第二座大山“Java内存模型”做铺垫,最后一座大山“死锁”落点到常见的并发问题和企业级解决方案上,传授并发编程技巧,工作面试无忧。适合人群求职Java开发的小伙伴系统学习Java的在校大学生提升个人实力的的...阅读全文

Go语言中文网 2019-12-05 01:48:49 xiaobaobao

ElasticSearch+Spark 构建高相关性搜索服务&千人千面推荐系统

​ElasticSearch+Spark 构建高匹配度搜索服务+千人千面推荐系统【点击下载】基于大众点评搜索以及推荐业务,从企业实际项目落地实践的角度出发,在使用SpringBoot加mybatis完成用户登录、注册、商家入驻以及结合前端模板搭建运营后台门店服务管理功能后,借助ElasticSearch的最新版本ES7逐步迭代,完成高相关性进阶搜索服务,并基于spark mllib2.4.4构建个性化千人千面推荐系统。适合人群想了解EasticSearch,对搜索推荐系统感兴趣,符合技术储备的同...阅读全文

Go语言中文网 2019-12-05 01:43:31 xiaomengwa

为什么程序员都不喜欢使用switch,而是大量的 if…else ?

image 出处:熊爸爸的科技工坊 3g.163.com/tech/article/E02RDE6C0511SDDL.html 请用5秒钟的时间查看下面的代码是否存在bug。 image OK,熟练的程序猿应该已经发现Bug所在了,在第8行和第10行下面我没有添加关键字break; 这就导致这段代码的行为逻辑与我的设计初衷不符了。 缺点一. 语法正确,逻辑错误 这就是第一个理由为什么程序猿很少使用switch来做条件判断,对于新手来说忘记写break实在是再普通不过了,就算是老猿忘记写也是时有发...阅读全文