「IM开源推荐」前微信技术专家打造,golang实现,一键部署,客户端SDK全平台支持,轻松替代IM云服务

## **背景** OpenIM成立之初就将“开源”作为核心战略来推进,开源充分体现了自由、平等、分享的互联网精神。 全球范围频繁发生的数据泄露、勒索病毒、隐私滥用等安全事件一次次给企业敲响警钟,企业管理者对数据资产的价值、数据安全的重要性有了更清晰的认识,数据安全成就企业核心价值。 IM作为核心业务数据,安全的重要性毋庸置疑,OpenIM开源以及私有化部署让企业能更放心使用。 如今IM云服务商收费高企,如何让企业低成本、安全、可靠接入IM服务,是OpenIM的历...阅读全文

Go语言中文网 2021-11-23 15:02:39 OpenIM

【OpenIM原创】uni-app使用之 初始化会话 消息 好友 监听器

在初始化SDK前需要先初始化部分全局监听器,初始化成功后可在合适的时机通过globalEvent对相关回调进行监听。 ```js // 会话监听 this.$openSdk.setConversationListener(); // 消息状态监听 this.$openSdk.addAdvancedMsgListener(); // 群组监听 this.$openSdk.setGroupListener() // 好友监听 this.$openSdk.setFri...阅读全文

Go语言中文网 2021-11-23 14:21:29 OpenIM

【分享】Go int、int64、string类型转换

string 到 intint, err: = strconv.Atoi(string)string 到 int64int64, err := strconv.ParseInt(string, 10, 64)# 第三个参数位大小表示期望转换的结果类型,其值可以为0, 8, 16, 32和64,分别对应 int, int8, int16, int32和int64int 到 stringstring := strconv.Itoa(int)等价于 string := strconv.FormatIn...阅读全文

Go语言中文网 2021-11-23 09:13:58 xiangbei

Go常见错误集锦 | 字符串底层原理及常见错误

大家好,我是Go学堂的渔夫子。 string是Go语言的基础类型,在实际项目中针对字符串的各种操作使用频率也较高。本文就介绍一下在使用string时容易犯的一些错误以及如何避免。 ### 01 字符串的一些基本概念 首先我们看下字符串的基本的数据结构: ```golang type stringStruct struct { str unsafe.Pointer len int } ``` 由字符串的数据结构可知,字符串只包含两个成员: - string...阅读全文

Go语言中文网 2021-11-19 23:20:33 yudotyang

Can't Connect to MySQL Server on IP Address (10061) 错误的解决方案

![Can't Connect to MySQL Server on IP Address (10061) 错误的解决方案](https://kalacloud.com/static/ec10753d046e32ab397d2bda4155b339/ef245/head.jpg) 本文首发于卡拉云技术博客:[《MySQL ERROR 10061 错误的解决方案》](https://kalacloud.com/blog/can-t-connect-to-mysql-server-on-ipa...阅读全文

Go语言中文网 2021-11-19 19:28:13 HiJiangChuan

C++软件工程师有福利了!!!!!!

C++软件开发有福利了! C++软件工程师(应届毕业生都可以)base上海 base40-70K+年终 为表诚意 只要面试了通关 一面(在线测试)通过,3百 二面(技术面)通过,5百 三面(技术面)通过,1千 四面(终面)通过,2千 终面后HR谈薪 面试一过马上给奖励 如果是资深人员,全部翻倍 奖励政策截止日期,1月28日(春节前) 需求: 1、C++/go,学历要好,应届、初级、资深都要 2、数据相关岗位,资深 3、交易系统开发 4、C# 任职要求: ...阅读全文

Go语言中文网 2021-11-19 13:16:17 slam

【原创】开源OpenIM:轻量、高效、实时、可靠、低成本的消息模型

## 1、内容概述 一套完整IM系统中,除开基本的业务设计,消息模型的设计是其中最为关键的一环,它关系到整个IM系统的可靠性、高效性、稳定性,因此需要设计一套合理的消息传递收发机制以承载IM的各种需求,OpenIM结合具体的业务场景,提炼出IM后端的重要接口,并经过反复推敲,验证,设计出了自己的一套通信协议OMTP,协议中每个字段尽量的减少冗余,使其精简高效、最大限度的满足现有的业务需求并能够支持业务的水平拓展,同时为了达到消息的实时可靠与高效,消息模型也经过了精心设计。 (1)...阅读全文

Go语言中文网 2021-11-18 18:05:45 OpenIM

【OpenIM原创】简单轻松入门 一文讲解WebRTC实现1对1音视频通信原理

【OpenIM原创】简单轻松入门 一文讲解WebRTC实现1对1音视频通信原理 # 什么是 WebRTC ? WebRTC(Web Real-Time Communication)是 Google于2010以6829万美元从 Global IP Solutions 公司购买,并于2011年将其开源,旨在建立一个互联网浏览器间的实时通信的平台,让 WebRTC技术成为 H5标准之一。我们看官网([https://webrtc.org](https://link.zhihu.co...阅读全文

Go语言中文网 2021-11-18 16:59:40 OpenIM

如何使用 MySQL 慢查询日志进行性能优化 - Profiling、mysqldumpslow 实例详解

![使用 MySQL 慢查询日志进行性能优化](https://kalacloud.com/static/890db2f8674d38638465902fd2273979/ef245/head.jpg) 当我们开始关注数据库整体性能优化时,我们需要一套 MySQL 查询分析工具。特别是在开发中大型项目时,往往有数百个查询分布在代码库中的各个角落,并实时对数据库进行大量访问和查询。如果没有一套趁手的分析方法和工具,就很难发现在执行过程中代码的效率瓶颈,我们需要通过这套工具去定位 SQL 语句...阅读全文

Go语言中文网 2021-11-18 00:28:30 HiJiangChuan

Go推荐命名规范

## Go命名规范 好的命名可以提高代码的可读性,特点: - 统一 : 容易猜想,约定俗成 - 简短 :容易书写(Go尤为强调) - 准确 :准确表达意思 ## 核心准则 声明的地方和使用的地方离得越远,名字就建议越详细,相对也会越长,同样上下文没提供有效的描述也是如此。 ## 常见命名 ### Camel命名 - Go推荐驼峰命名方式,不建议使用下划线(包括常量,包名) **Good** ```go userManger...阅读全文

Go语言中文网 2021-11-17 22:27:26 uuid

Go iota 原理和源码剖析

iota 是 Go 语言的一个保留字,用作常量计数器。由于 iota 具有自增特性,所以可以简化数字增长的常量定义。iota 是一个具有魔法的关键字,往往令初学者难以理解其原理和使用方法。本文会从书写方法、使用场景、实现原理以及优缺点等各方面剖析 iota 关键字。 1. 书写方法正确写法:​​​​​​​const ( FirstItem = iota SecondItem ThirdItem ) // 或者 const SingleItem = iota​​​​​​​错...阅读全文

Go语言中文网 2021-11-17 12:19:56 wangshizebin

编写一个接口压测工具

![](https://tva1.sinaimg.cn/large/008i3skNly1gwer3yhu0dj30vn0u00v3.jpg) # 前言 前段时间有个项目即将上线,需要对其中的核心接口进行压测;由于我们的接口是 `gRPC` 协议,找了一圈发现压测工具并不像 `HTTP` 那么多。 最终发现了 [ghz](https://ghz.sh/) 这个工具,功能也非常齐全。 事后我在想为啥做 `gRPC` 压测的工具这么少,是有什么难点嘛?为了验证这个问题于是我准...阅读全文

Go语言中文网 2021-11-16 21:13:37 crossoverJie

Go接口 - interface 最佳实践

interface是GO语言中非常重要的类型,它是用来定义一类方法集,只表示对象的行为(Behavior),GO语言的接口和实现不需要显示关联(也就是常说的duck类型),只要实现了接口所有方法,就可以当做该接口的一个实现,赋值给所有引用该接口的变量,从而满足面向对象编程(OOP)中的两个非常重要原则:依赖倒置、里氏替换。 也正由于这个特点,所以GO接口最佳的实践是:接口尽量的小,根据实际的需求定义的接口大小。 例如:io包体的Reader/Writer ```go type...阅读全文

Go语言中文网 2021-11-15 23:07:29 uuid

Go defer 特性和使用场景

golang 的 defer 语句用于延迟调用。defer 会在当前函数返回之前执行 defer 注册的函数。比如 defer func_defer() 这样语句会让你注册一个函数变量到 defer 的全局链表中,在 defer 语句所在的函数退出之前调用。 defer 可以代替其它语言中 try…catch… 语句,也可以用来处理释放资源等收尾操作,比如关闭文件句柄、关闭数据库连接等。defer 还能用于 panic 的 recovery。 ## 1. defer 的特性 我们先...阅读全文

Go语言中文网 2021-11-15 16:40:57 wangshizebin