- 我们知道作为强静态类型语言的go没有虚拟机,而是靠运行时,它在go开发中使用频率比较高,单独整理以下内容。 1 垃圾回收 runtime GCGo将内存对象分为以下几类:微小对象 Tiny size <16B 使用mcache的微小分配器分配大小小于 16个字节的对象,在单个16字节块上可以完成多个微小分配小对象 16B ~32KB 大小在16个字节和32k字节之间的对象被分配在G运行所... 我们知道作为强静态类型语言的go没有虚拟机,而是靠运行时,它在go开发中使用频率比较高,单独整理以下内容。 1 垃圾回收 runtime GCGo将内存对象分为以下几类:微小对象 Tiny size <16B 使用mcache的微小分配器分配大小小于 16个字节的对象,在单个16字节块上可以完成多个微小分配小对象 16B ~32KB 大小在16个字节和32k字节之间的对象被分配在G运行所...
- go1.20 的unsafe包添加了功能SliceData、String和StringData 。它们完成了独立于实现的切片和字符串操作的函数集。Go 的类型转换规则已扩展为允许 从 slice 直接转换为 array。语言规范现在定义了比较数组元素和结构字段的确切顺序。这阐明了在比较过程中出现恐慌时会发生什么。func SliceData(slice []ArbitraryType) *A... go1.20 的unsafe包添加了功能SliceData、String和StringData 。它们完成了独立于实现的切片和字符串操作的函数集。Go 的类型转换规则已扩展为允许 从 slice 直接转换为 array。语言规范现在定义了比较数组元素和结构字段的确切顺序。这阐明了在比较过程中出现恐慌时会发生什么。func SliceData(slice []ArbitraryType) *A...
- 1 使用runtime和unsafe对比资源使用率。大多数场景,Go核心团队自用的机制,在runtime, reflect, sync, syscall都有广泛的使用。它支持程序员在go的安全类型中操作内存。想要使用unsafe包,就必须遵循 unsafe.Pointer的安全使用规则: 1 在常规操作下,go类型是安全的,但是使用unsafe包可以绕过这些类型安全的保护。 2 go兼容性... 1 使用runtime和unsafe对比资源使用率。大多数场景,Go核心团队自用的机制,在runtime, reflect, sync, syscall都有广泛的使用。它支持程序员在go的安全类型中操作内存。想要使用unsafe包,就必须遵循 unsafe.Pointer的安全使用规则: 1 在常规操作下,go类型是安全的,但是使用unsafe包可以绕过这些类型安全的保护。 2 go兼容性...
- 为了保持清晰,本节专门使用多例程的方式充分利用cpu,以对比使用内置标准库unsafe包和语言层面的方式转换字符。 1 实例高效类型转换 性能对比我们实现go语言的类型转换,和 基于 unsafe的类型转换,并进行benchmark基准性能测试。string类型变量是不可变类型,而[]byte为可变类型,当转换为[]byte时,go需要从系统申请一块新内存,并将string类型变量值赋予这个... 为了保持清晰,本节专门使用多例程的方式充分利用cpu,以对比使用内置标准库unsafe包和语言层面的方式转换字符。 1 实例高效类型转换 性能对比我们实现go语言的类型转换,和 基于 unsafe的类型转换,并进行benchmark基准性能测试。string类型变量是不可变类型,而[]byte为可变类型,当转换为[]byte时,go需要从系统申请一块新内存,并将string类型变量值赋予这个...
- 1 简介在使用c语言编程时,常常因为类型的问题大伤脑筋,而其他语言比如java,python默认类型又是难以改变的,golang提供了一些方式用于喜欢hack的用户。 2 标准库unsafe的简单介绍在1.20中,标准库的unsafe包很小, 二个结构体类型,八个函数,在一个文件中。 package unsage type ArbitraryType int type IntegerTyp... 1 简介在使用c语言编程时,常常因为类型的问题大伤脑筋,而其他语言比如java,python默认类型又是难以改变的,golang提供了一些方式用于喜欢hack的用户。 2 标准库unsafe的简单介绍在1.20中,标准库的unsafe包很小, 二个结构体类型,八个函数,在一个文件中。 package unsage type ArbitraryType int type IntegerTyp...
- 1 简介现代开发最流行的协作工具,代码管理工具就是git,这里汇总常用场景和对应指令。 2 git 命令速查一般的默认分支 master默认远程版本库 origin默认开发分支 HeadHead的前一个提交 Head^简要工作流如下: --------------------- ---------------- ----------------- | ... 1 简介现代开发最流行的协作工具,代码管理工具就是git,这里汇总常用场景和对应指令。 2 git 命令速查一般的默认分支 master默认远程版本库 origin默认开发分支 HeadHead的前一个提交 Head^简要工作流如下: --------------------- ---------------- ----------------- | ...
- 1 如何评估golang程序的性能对不同类型的性能数据进行收集和采样,go提供了内置的模块和方法。比如pprof 和 expvar,在微观层面,采样通过运行性能基准测试收集和采样数据的方法,这种方法适用于定位函数或方法实现中存在性能瓶颈点的情形。 1.1 expvar 输出度量数据。辅助定位性能瓶颈在宏观层面,采用独立程序进行性能数据采样,往往很难快速捕捉到真正的瓶颈,尤其对那些内部结构... 1 如何评估golang程序的性能对不同类型的性能数据进行收集和采样,go提供了内置的模块和方法。比如pprof 和 expvar,在微观层面,采样通过运行性能基准测试收集和采样数据的方法,这种方法适用于定位函数或方法实现中存在性能瓶颈点的情形。 1.1 expvar 输出度量数据。辅助定位性能瓶颈在宏观层面,采用独立程序进行性能数据采样,往往很难快速捕捉到真正的瓶颈,尤其对那些内部结构...
- 2 fastapi 绑定路由到路由组 2.1 路由URL中的查询参数声明不属于路径参数的其他函数参数时,它们将被自动解释为"查询字符串"参数 如下skip limit都是查询参数。参数解释: 返回json 格式,原始值 为字符串 http://127.0.0.1:1999/items/?skip=0&limit=1 # 限制查一个 http://127.0.0.1:19... 2 fastapi 绑定路由到路由组 2.1 路由URL中的查询参数声明不属于路径参数的其他函数参数时,它们将被自动解释为"查询字符串"参数 如下skip limit都是查询参数。参数解释: 返回json 格式,原始值 为字符串 http://127.0.0.1:1999/items/?skip=0&limit=1 # 限制查一个 http://127.0.0.1:19...
- 前言任务队列的输入是称为任务的工作单元。专用的工作进程不断监视任务队列以执行新工作。通过消息进行通信,通常使用代理在客户和工作人员之间进行调解。为了启动任务,客户端将一条消息添加到队列中,然后代理将该消息传递给工作人员。队列常常系统可以由多个 部分 组成,这样可以让位于高可用性和横向扩展。可以在单机上运行, 也可以在多台机器上运行,甚至可以跨数据中心运行。 5.1 任务队列的用途通常一个任... 前言任务队列的输入是称为任务的工作单元。专用的工作进程不断监视任务队列以执行新工作。通过消息进行通信,通常使用代理在客户和工作人员之间进行调解。为了启动任务,客户端将一条消息添加到队列中,然后代理将该消息传递给工作人员。队列常常系统可以由多个 部分 组成,这样可以让位于高可用性和横向扩展。可以在单机上运行, 也可以在多台机器上运行,甚至可以跨数据中心运行。 5.1 任务队列的用途通常一个任...
- 字数较多,请谨慎阅读 1 简介HTTP3 协议QUIC(Quick UDP Internet Connection)与HTTP/3有何关系?HTTP/3是第三个主要版本的HTTP协议。与其前任HTTP/1.1和HTTP/2不同,在HTTP/3中,将弃用TCP协议,改为使用基于UDP协议的QUIC协议实现。它最初被称为使用 QUIC 传输协议的 HTTP/2 语义,后来缩写为HTTP-over... 字数较多,请谨慎阅读 1 简介HTTP3 协议QUIC(Quick UDP Internet Connection)与HTTP/3有何关系?HTTP/3是第三个主要版本的HTTP协议。与其前任HTTP/1.1和HTTP/2不同,在HTTP/3中,将弃用TCP协议,改为使用基于UDP协议的QUIC协议实现。它最初被称为使用 QUIC 传输协议的 HTTP/2 语义,后来缩写为HTTP-over...
- 3 简介这个小系列介绍一些使用中的协议。Matrix是一种用于实时通信的开放协议。它允许使用一个通信服务提供商帐户的用户与使用不同服务提供商的用户进行网络聊天,IP语音和视频通话。Matrix项目在WebRTC 2014年大会暨博览会上赢得了创新奖,并随后在WebRTC 2015年大会暨博览会获得了最佳展示奖。也就是说,它旨在使不同服务提供商之间的实时通信无缝工作,就像使用电子邮件一样。采... 3 简介这个小系列介绍一些使用中的协议。Matrix是一种用于实时通信的开放协议。它允许使用一个通信服务提供商帐户的用户与使用不同服务提供商的用户进行网络聊天,IP语音和视频通话。Matrix项目在WebRTC 2014年大会暨博览会上赢得了创新奖,并随后在WebRTC 2015年大会暨博览会获得了最佳展示奖。也就是说,它旨在使不同服务提供商之间的实时通信无缝工作,就像使用电子邮件一样。采...
- 1 简介这一节,我们继续挑战中文编程语言的旅程。 2 词素与标记我们已经在上一节有了一个获得代码的方式,安装之前的约定,需要分别按以下词素去分解代码。我们规定如下: 中文 英文 运算符 刷 print PRINTI /PRINTF 与 LAND && 或 LOR || 加 ... 1 简介这一节,我们继续挑战中文编程语言的旅程。 2 词素与标记我们已经在上一节有了一个获得代码的方式,安装之前的约定,需要分别按以下词素去分解代码。我们规定如下: 中文 英文 运算符 刷 print PRINTI /PRINTF 与 LAND && 或 LOR || 加 ...
- 2.8 本节简介自己动手写一个代理.我们可以将客户的消息直接发往服务中,这是一个逆向的过程,一般http操作是由客户端发起的,因此http协议很适合作为客户端触发事件的协议,当有客户发起事件时,服务直接响应.这里假设我们有成千上万的客户在触发该事件(比如订票,付款等),我们不希望这些操作直接与服务的数据库交互,让他们模拟现实人类的情况,排队吧. 这时候消息代理的用场就出现了. 2.8.0 ... 2.8 本节简介自己动手写一个代理.我们可以将客户的消息直接发往服务中,这是一个逆向的过程,一般http操作是由客户端发起的,因此http协议很适合作为客户端触发事件的协议,当有客户发起事件时,服务直接响应.这里假设我们有成千上万的客户在触发该事件(比如订票,付款等),我们不希望这些操作直接与服务的数据库交互,让他们模拟现实人类的情况,排队吧. 这时候消息代理的用场就出现了. 2.8.0 ...
- 2 建立连接建立连接的方式,维持连接的方式很多,这里我们简单介绍在需要长时间连接时的几个。 上帝与世界有一个古老而漫长的连接, 2.1 全双工协议简介websocket使用tcp做为4层通信的协议,因此有tcp协议支持的系统都可以使用此协议,只要符合BSD socket准则BSD 套接字(BSD sockets)是一种应用程序接口(API),用于网络套接字( socket)与Unix域套接... 2 建立连接建立连接的方式,维持连接的方式很多,这里我们简单介绍在需要长时间连接时的几个。 上帝与世界有一个古老而漫长的连接, 2.1 全双工协议简介websocket使用tcp做为4层通信的协议,因此有tcp协议支持的系统都可以使用此协议,只要符合BSD socket准则BSD 套接字(BSD sockets)是一种应用程序接口(API),用于网络套接字( socket)与Unix域套接...
- 语言常见问题这里列举的Go语言常见坑 是符合Go语言语法的,可以正常的编译,但是可能是运行结果错误,或者是有资源泄漏的风险。另一些是与其他语言的不同思想对比,这里说“坑”指的是不同习惯的迁移感受可能是坑。 1 是否为空的简单对比思想判断 list列表是否为空golang: // 数组 arr := [0]int{} if len(arr) == 0 { pr... 语言常见问题这里列举的Go语言常见坑 是符合Go语言语法的,可以正常的编译,但是可能是运行结果错误,或者是有资源泄漏的风险。另一些是与其他语言的不同思想对比,这里说“坑”指的是不同习惯的迁移感受可能是坑。 1 是否为空的简单对比思想判断 list列表是否为空golang: // 数组 arr := [0]int{} if len(arr) == 0 { pr...
上滑加载中
推荐直播
-
OpenHarmony应用开发之网络数据请求与数据解析
2025/01/16 周四 19:00-20:30
华为开发者布道师、南京师范大学泰州学院副教授,硕士研究生导师,开放原子教育银牌认证讲师
科技浪潮中,鸿蒙生态强势崛起,OpenHarmony开启智能终端无限可能。当下,其原生应用开发适配潜力巨大,终端设备已广泛融入生活各场景,从家居到办公、穿戴至车载。 现在,机会敲门!我们的直播聚焦OpenHarmony关键的网络数据请求与解析,抛开晦涩理论,用真实案例带你掌握数据访问接口,轻松应对复杂网络请求、精准解析Json与Xml数据。参与直播,为开发鸿蒙App夯实基础,抢占科技新高地,别错过!
回顾中 -
Ascend C高层API设计原理与实现系列
2025/01/17 周五 15:30-17:00
Ascend C 技术专家
以LayerNorm算子开发为例,讲解开箱即用的Ascend C高层API
回顾中
热门标签