新项目用 Rust 还是 Go ?

新项目用 Rust 还是 Go ? 如果你用 Rust 语言或 Go 语言编写过代码,就会发现它们之间有些相似之处和不同之处。这两种语言的设计目标有重叠的部分,但也有很多差异。正如我们知道的,该如何选择语言取决于要解决的问题。 很幸运,我们找到了一位对这两种语言都有着丰富经验的工程师 — Damien Stanton,并与他进行了一次交流。他从 2014 年开始接触到 Rust 和 Go 语言,当时他从事的某个项目需要能够编译静态二进制文件。由于 Go 和 Rust 语言均具备这样的能力,因此他...阅读全文

51CTO博客 2020-11-02 16:46:08 高可用架构

ES 自定义打分 Function score query

ES 自定义打分 Function score queryES 会为 query 的每个文档计算一个相关度得分 score ,并默认按照 score 从高到低的顺序返回搜索结果。在很多场景下,我们不仅需要搜索到匹配的结果,还需要能够按照某种方式对搜索结果重新打分排序。例如:搜索具有某个关键词的文档,同时考虑到文档的时效性进行综合排序。搜索某个旅游景点附近的酒店,同时根据距离远近和价格等因素综合排序。搜索标题包含 elasticsearch 的文章,同时根据浏览次数和点赞数进行综合排序。Funct...阅读全文

Segmentfault 2020-11-07 11:32:33 rife

dubbo-go 1.4.0 版本发布,支持 K8s 注册中心、rest 协议

dubbo-go 1.4.0 版本发布,支持 K8s 注册中心、rest 协议 得益于社区活跃的支持,2020 年 3 月 25 日 我们发布了一个让人兴奋的版本——dubbo-go v1.4.0。除了继续支持已有的 Dubbo 的一些特性外, dubbo-go 开始了一些自己的创新尝试。 这个版本,最大的意义在于,做了一些支持云原生的准备工作。比如说,社区在探讨了很久的 k8s 落地之后,终于拿出来了使用 k8s 作为注册中心的解决方案。 其次一个比较大的改进是--我们在可观测性上也迈出了重要...阅读全文

51CTO博客 2020-11-02 16:58:33 高可用架构

2020-11-02:go中,s:=make([]string,10);s=append(s,“test“);fmt.Println(s[0]),打印什么?

福哥答案2020-11-02: 打印空字符串。s:=make([]string,10),s中已经有10个元素,append元素,s就有11个元素了。前10个元素没初始化,就是10个空字符串,最后1个字符串是test。 golang代码如下: package main import "fmt" func main() { fmt.Println("----start----") s := make([]string, 10) s = append(s, "test") fmt.Println("字...阅读全文

简书 2020-11-02 23:32:56 福大大架构师每日一题

计算机组成原理之概述篇

一 、章节导学 计算机的发展简史 计算机的分类 计算机的体系结构 计算机的层次与编程语言 计算机的计算单位 计算机的字符与编码集 二、计算机的发展历史 计算机发展的四个阶段 微型计算机的发展历史 1. 计算机发展的四个阶段 阶段 时间 名称 第一阶段 1946-1957 电子管计算机 第一阶段 1957-1964 晶体管计算机 第一阶段 1964-1980 集成电路计算机 第一阶段 1980-现在 超大规模集成电路计算机 1.1 第一个阶段:电子管计算机 集成度小,空间占用大 功耗高,运行速度慢...阅读全文

简书 2020-11-02 23:32:56 六寸光阴丶

Dockerfile

Docker 可以通过 Dockerfile 的内容来自动构建镜像。Dockerfile 是一个包含创建镜像所有命令的文本文件,通过docker build命令可以根据 Dockerfile 的内容构建镜像,在介绍如何构建之前先介绍下 Dockerfile 的基本语法结构。 Dockerfile 有以下指令选项: FROM MAINTAINER RUN CMD EXPOSE ENV ADD COPY ENTRYPOINT VOLUME USER WORKDIR ONBUILD FROM 用法: ...阅读全文

简书 2020-11-02 23:32:37 bylaw

Socks5 udp代理

socks5在socks4上多了对udp代理的支持,可以说是“全能代理”了。udp代理较对比tcp代理,流程上要复杂一些,下面从最开始流程讲起 握手阶段 客户端建立和代理服的tcp连接A,并发送第一帧数据: +----+----------+----------+ |VER | NMETHODS | METHODS | +----+----------+----------+ | 1 | 1 | 1 to 255 | +----+----------+----------+ 代理服务器收到后,会...阅读全文

简书 2020-11-02 23:32:37 小风吹的我乱了

golang实现redis协议之10进制ascii码转义

例子: 当执行 get key时 假设 返回 100000000 抓包返回如下 24 39 0d 0a 31 30 30 30 30 30 30 30 30 0d 0a 其中第一个字节24为16进制的ASCII码$ 代表批量回复 第二个字节为16进制的ASCII码9 代表value值为9位ASCII码,9字节 0d 0a 代表\r\n 31 30 30 30 30 30 30 30 30 为1、0、0、0、0 0、0、0、0的ASCII码 拼接后即为100000000 以上是分析的抓包数据 在实...阅读全文

简书 2020-11-02 23:32:37 realPeanut

golang基础教程(一)-环境搭建

golang基础教程(一)-环境搭建 1. 不同平台下的安装和配置 Go官网下载地址:https://golang.org/dl/(可能无法访问) 国内下载地址:https://studygolang.com/dl 如何选择平台对应的版本: ![image.png](https://static.studygolang.com/201102/1c5556eae9f6df15cf21a4ae34004f99.png) 根据不同平台选择对应的包下载,Linux...阅读全文

Go语言中文网 2020-11-02 20:07:37 Apoll95

Golang中使用JSON时区分空字段和未设置字段的方法

几周前, 我在使用 Golang 微服务, 需要添加使用 JSON 数据的 CURP 操作的支持. 通常, 我会为实体创建一个结构体, 该结构体中定义了所有字段以及 'omitempty' 属性, 如下所示 type Article struct { Id string `json:"id"` Name string `json:"name,omitempty"` Desc string `json:"desc,omitempty"` } 问题但是这种表示形式带来了严重的问题, 尤其对于 Upd...阅读全文

简书 2020-11-02 17:32:38 也许会了

Go 新版泛型使用:80余行代码构建一个哈希表

Go 新版泛型使用:80余行代码构建一个哈希表 2018 年,我使用 Go 语言实现了一个玩具性质的哈希表 (1),以便学习 Go 的 map 等数据类型如何工作。这个版本只支持字符串作为 key 以及 value。 1.https://github.com/mdlayher/misc/blob/master/go/algorithms/hashtable/hashtable.go 两年后的 2020 年 6 月,Go 团队发布了一篇题为《泛型的下一步 (1) 》的文章,提供了一个新版的泛型草案...阅读全文

51CTO博客 2020-11-02 10:35:25 高可用架构

云原生时代,Java还是Go?

云原生时代,Java还是Go? Java曾经著名的座右铭:"一次编写,到处运行",已经很过时了,因为现在我们只想在容器里运行代码。在容器里,一个 "Just in time "的编译器意义不大。 出于这个原因,可能为了更好地适应云计算,Java生态系统正处于转型之中。Oracle 的GraalVm允许将字节码编译成Linux可执行文件(ELF),而Rad Heat的Quarkus以及其他框架,则立志让响应式服务这件事变得更简单。Quarkus以Netty和Vertx.x为核心,可以用来构建非常高...阅读全文

51CTO博客 2020-11-02 10:10:31 高可用架构

Dubbo-go 发布 1.5 版,朝云原生迈出关键一步

Dubbo-go 发布 1.5 版,朝云原生迈出关键一步 引语 计算机技术浪潮每 10 年都有一次技术颠覆,相关知识体系最迟每 5 年都会革新一次,大概每两年贬值一半,在应用服务通信框架领域亦然。凡是有长期生命的通信框架,大概有 5 年的成长期和 5 年的稳定成熟期。每个时代都有其匹配的应用通信框架,在 20 年前的 2G 时代,强跨语言跨平台而弱性能的 gRPC 是不会被采用的。 每个通信框架,不同的人从不同角度看出不同的结论:初学者看重易用易学,性能测评者注重性能,应用架构师考虑其维护成本,...阅读全文

51CTO博客 2020-11-02 09:54:30 高可用架构

Go基础编程:数值类型

Go语言数值类型的有三种,分别是整型、浮点型和复数,在说具体类型前,先说一下有符合和无符号区别:字节是计算机数据的基本单元,8个比特组成一个字节,有符合表示有正负之分,最高位代表符号,0表示正数,1表示负数,其余位代表数值;无符号表示全部位数都表示数值:有符号正数的最大取值为:0$*$$2^{7}$+1*$2^{6}$+1*$2^{5}$+1*$2^{4}$+1*$2^{3}$+1*$2^{2}$+1*$2^{1}$+1*$2^{0}$=$2^{7}$-1 = 127有符号负数的最小取值为:-(...阅读全文

Segmentfault 2020-11-06 17:32:33 一夕烟云

LeetCode(9) 整数反

题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。比如321转换为123注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。思路:用除余运算计算出每一位的值,之后乘10即可得到。需要注意判别条件溢出的条件中,除了最后一次计算前,ans要小于最大整数的1/10,还需要保证在ans等于最大整数1/10时,后面加的数小于7,对负数的检测同理。func reverse(x i...阅读全文

Segmentfault 2020-11-06 17:32:32 xbdyhh

数据结构与算法系列之链表操作全集(二)(GO)

以下完整的代码,及测试代码均可从这里获取github常见的链表操作单链表反转方法一:就地反转法思路就地反转法,找一个空的节点来充当新的头结点(类似哨兵),然后遍历链表中每一个结点,将每一次遍历到的结点都插入到新的头结点后边,过程如下:核心代码prev指针指向下一次需要反转的节点pcur指向待反转的节点将待反转节点插入到newHead后边prev.Next = pcur.Next pcur.Next = newHead.Next newHead.Next = pcur pcur = prev.Ne...阅读全文

Segmentfault 2020-11-06 16:32:34 书旅

基于 prometheus 的微服务指标监控

基于prometheus的微服务指标监控服务上线后我们往往需要对服务进行监控,以便能及早发现问题并做针对性的优化,监控又可分为多种形式,比如日志监控,调用链监控,指标监控等等。而通过指标监控能清晰的观察出服务指标的变化趋势,了解服务的运行状态,对于保证服务稳定起着非常重要的作用prometheus是一个开源的系统监控和告警工具,支持强大的查询语言PromQL允许用户实时选择和汇聚时间序列数据,时间序列数据是服务端通过HTTP协议主动拉取获得,也可以通过中间网关来推送时间序列数据,可以通过静态配置...阅读全文

Segmentfault 2020-11-05 17:32:33 kevinwan

LeetCode(8) 两个数组的交集

题目:给定两个数组,编写一个函数来计算它们的交集。思路:零个数组的交集主要问题集中在如何查找另一数组中的元素,我这里首先想到的是hash表查找的方法,因为这样可以在常熟时间内查询到。思路上并没有什么难点,代码如下:func intersection(nums1 []int, nums2 []int) []int { hSection := make(map[int]int,0) ans := make([]int,0) for _,val:= range nums1{ hSection[val]...阅读全文

Segmentfault 2020-11-05 15:32:33 xbdyhh

LeetCode(7) 字形变换

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:L C I R E T O E S I I G E D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。思路:这道题实际上就是实现字符串的蛇形排列,到达了最大行数之后,就需要折头。所以对每行设置一个byte类型的数组,设置变量a实现到达n行后的转换,判断条件为增加了n-1次。因为第一次...阅读全文

Segmentfault 2020-11-05 09:32:32 xbdyhh