Go 1.12发布:改进了运行时性能以及模块支持
Go最新版本1.12于近日发布,该版本并没有改动语法规范,它主要对运行时性能、编译工具链以及模块系统等进行了优化。另外,它还为TLS 1.3提供了opt-in支持,同时改进了对MacOS和iOS等系统的支持。
Go 1.12最大的更新亮点是改进了Go运行时对内存分配和释放的处理方式。更具体地说,当堆内存中存在大量存活单元的时候,它能更好地提升垃圾回收中扫除(Sweep)阶段的性能,该阶段需要从头到尾扫描整个内存空间,以确定要释放的内存块。这也减少了内存回收后马上再分配的时间延迟;而且,垃圾回收器在释放内存时也表现得更具侵略性,从整体上减小了程序所占用的内存。特别是当申请内存不能在堆中直接分配的时候,会被强制执行这种释放行为。
其他对Go运行时的改进包括:优化了定时器和最后期限(Deadline)相关的代码,可以更快地处理网络连接时的最后期限问题;支持通过设置环境变量cpu.extension=off来禁用可选CPU指令集的扩展;提高了程序内存配置文件的准确性,尤其是在程序从堆中申请了很多大块内存的时候。
Go 1.12对模块的支持也做了一些改进。模块系统最初在Go 1.11版本中被引入,该系统与传统的GOPATH方法并存。 为了简化两者之间的切换,Go 1.11引入了环境变量GO111MODULE,以及一个默认的auto(自动)模式,当Go命令在gopath/src以外的目录树中运行并且其根目录中包含Go.mod文件时,该自动模式会尝试使用模块系统。 Go 1.12更进一步,即使根目录中不存在Go.mod文件,它也允许一些Go命令按照模块模式运行。 此外,Go 1.12也引入了很多针对模块系统实现的修补。
如上所述,Go编译工具链也得到了改进,包括更积极的使用内联函数;新增了标志变量-lang,以实现对不同语言版本的配置;更好的调试信息;以及针对Go和汇编函数不同的调用约定,在ABI层实现的一个潜在重大变更。
Go 1.12还引入了对TLS 1.3的支持,可以通过设置GODEBUG环境变量tls13=1来启用它。TLS 1.3向下兼容了1.2版本中除TLSUnique以外的所有特性,并为这些特性提供了更好的安全性和性能。 但是,一些TLS 1.3特性仍处在开发过程中,如密码套件的可配置性等。TLS 1.3将在Go 1.13中默认启用。
最后,Go新版本提高了对macOS、iOS、AIX和Windows/ARM等系统的兼容性支持。
关于Go 1.12的更多信息,请参阅官方发布日志。
查看英文原文:Go 1.12 Improves Runtime Performance and Module Support
相关文章:

OpenCV 【十六】RNG随机数发生器putText绘制文字
1 目的 使用 随机数发生器类 (RNG) 并得到均匀分布的随机数。 通过使用函数 putText 显示文字。 第一步是实例化一个 Random Number Generator(随机数发生器对象) (RNG): RNG rng( 0xFFFFFFFF ); 初始化一个 0 矩阵(代表一个全黑的图像), 并且指定它…

分享一段Java搞笑的代码注释
原文:http://www.cnblogs.com/xdp-gacl/p/4198935.html // _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // …

视频写操作,通道分离与合并
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> using namespace std; using namespace cv; int main() { // 视频读入与输出路径设置 string sourceVideoPath "..\\images\\test.avi"; st…

JAVA中的并发工具 -- CountDownLatch、CyclicBarrier、Semaphore
2019独角兽企业重金招聘Python工程师标准>>> CountDownLatchCountDownLatch允许一个或多个线程等待其他线程完成操作。 CountDownLatch的构造函数接受一个int类型的参数作为计数器,如果你想等待N个点完成,这里就传入N。 当我们调用CountDownL…

OpenCV 【十七】离散傅立叶变换
目录 1 key 2 原理 3 实例 3代码 4运行结果 5应用举例 1 key 什么是傅立叶变换及其应用? 如何使用OpenCV提供的傅立叶变换? 相关函数的使用,如: copyMakeBorder(), merge(), dft(), getOptimalDFTSize(), log() 和 normalize() . 简单点说就是…

ubuntu下nginx+php5的部署
ubuntu下nginxphp5环境的部署和centos系统下的部署稍有不同,废话不多说,以下为操作记录:1)nginx安装rootubuntutest01-KVM:~# sudo apt-get update && sudo apt-get upgraderootubuntutest01-KVM:~# sudo apt-get install…

图像质量评价,图片放大和缩小
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <iostream>using namespace cv;using namespace std;// PSNR 峰值信噪比计算 返回数值为30-50dB 值越大越好double PSNR(con…

软件开发--深入理解程序的结构
程序由不同的段构成(代码段,数据段)1.程序的静态特征就是指令和数据2.程序的动态特征就是执行指令处理数据 A.段传统上,一个程序一般会有这几个段:.text 、.data、.bss段a.如果处理器由内存管理单元,那么可执行程序被加载到内存以后ÿ…

OpenCV 【十八】图像平滑处理/腐蚀与膨胀(Eroding and Dilating)/开闭运算,形态梯度,顶帽,黑帽运算
图像滤波总结(面试经验总结)https://blog.csdn.net/Darlingqiang/article/details/79507468 目录 part one 图像平滑处理 1原理 2代码 3效果 part two 腐蚀与膨胀(Eroding and Dilating) 1原理 2代码 3运行结果 part three更多形态学变换 1 原…

第九章 大网高级 ASA 高级设置
url 过滤实验要求:1、 创建class-map 类映射,识别传输流量。2、 创建policy-map策略映射,关联class-map。3、 应用到policy-map到接口上。一、 配置接口地址二、 配置路由,网络互通三、 创建特权和vty 密码四、 验证网络互通五、 …

linux基础知识-链接列表
linux基础知识-链接列表 1. 安装centos 7 1.1 Linux的初识1.2 centOS 7安装教程1.3 centOS 7配置ip和网络问题排查1.4 PuTTY和Xshell远程连接与密钥认证登录1.5 单用户和救援模式2. 文件与目录管理 1.6 系统目录结构、文件类型及相关命令1.7 文件目录管理及相关的命令使用方法…

OpenCV 【十九】图像金字塔/基本的阈值操作/实现自己的线性滤波器
目录 1.part one 图像金字塔 1.1原理 1.1.1图像金字塔 1.1.2高斯金字塔 1.2代码 1.3运行结果 2.part two 基本的阈值操作 2.1原理 2.1.1阈值化的类型: 2.1.2阈值类型1:二进制阈值化 2.1.3阈值类型2:反二进制阈值化 2.1.4阈值类型…

Get started with ros -- 1
原创博文:转载请标明出处(周学伟):http://www.cnblogs.com/zxouxuewei/tag/ 一.Introduction: 机器人操作系统(ROS)是使机器人系统的不同部分能够发现,发送和接收数据的通信接口。MA…

利用 createTrackbar 进行二值化
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #include <iostream> //createTrackbar的回调响应函数 void onChangeTrackBar (int pos,void* data) {// 强制类型转换cv::Mat srcImage *(cv::Mat*)(data); cv:…

ASP.NET Core 2.2中的Endpoint路由
Endpoint路由 在ASP.NET Core 2.2中,新增了一种路由,叫做Endpoint(终结点)路由。本文将以往的路由系统称为传统路由。 本文通过源码的方式介绍传统路由和Endpoint路由部分核心功能和实现方法,具体功能上的差异见官方文…

OpenCV 【二十】给图像添加边界
目录 1原理 2 代码 3 运行结果 1原理 前一节我们学习了图像的卷积操作。一个很自然的问题是如何处理卷积边缘。当卷积点在图像边界时会发生什么,如何处理这个问题? 大多数用到卷积操作的OpenCV函数都是将给定图像拷贝到另一个轻微变大的图像中&#…

Linux账户安全管理--useradd、groupadd、passwd、chown、chmod工具
groupadd-g 设置组id号实例: groupadd tomcatgroupadd -g600 tomcat删除组用groupdelgroupdel tomcatuseradd-c comment 给新用户添加备注 -d home_dir 为主目录指定一个名字(如果不想用登录名作为主目录名的话) -e expire_date 用Y…

Rect 选择感兴趣区域
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> // 全局变量源图像 cv::Mat srcImage; // 方法1 利用Rect选择区域(100, 180, 150, 50) void regionExtraction(int xRoi, int yRoi, int widthRoi, int…

paramiko的使用
1 import paramiko2 import sys3 4 5 user "root"6 pwd "123456"7 8 9 10 # 上传文件 11 def sftp_upload_file(server_path, local_path): 12 try: 13 t paramiko.Transport((ip, 22)) 14 t.connect(usernameuser, passwordpwd) …

【C++】多线程与并发【一】
文章目录part 0:多线程简介part 1:多线程构造它用于构造线程对象。参量part 2:多线程析构它破坏线程对象。part 3:多线程operator参量 Parameters返回值Data racespart 4:joinable 它返回线程ive对象是否可连接,则返回true,否则返回false。 表示的是否可…

鼠标按键获取感兴趣区域
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> #include <stdio.h> using namespace cv; using namespace std; // 全局变量图像源 cv::Mat srcImage; // 所选矩形区域 cv::Rect roiRect; …

git在不同操作系统下自动替换换行符
2019独角兽企业重金招聘Python工程师标准>>> 一天使用docker创建一个镜像执行报一个错 standard_init_linux.go:175: exec user process caused "no such file or directory"参考资料 http://blog.jobbole.com/46200/ http://neue.v2ex.com/t/309469 git …

关于jsp和eclipse服务器端的相关配置和JS的区别
今天配置了一番eclipse的服务器端,由此重新认识了web技术的皮毛; 话不多说,让我们开始: 一: 首先让我们了解一下js和jsp的技术之间的差别: 1)js:https://zh.wikipedia.org/wiki/Java…

【C++】多线程与互斥锁【二】
文章目录1. 并发是什么1.1 并发与并行1.2 硬件并发与任务切换1.3 多线程并发与多进程并发2. 为什么使用并发2.1 为什么使用并发2.2 并发和多线程3. 并发需要注意的问题3.1 多线程中的数据竞争实例1:3.2 如何处理数据竞争?实例2:实例3…

用hosting.json配置ASP.NET Core站点的Hosting环境
通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() 。 public class Program {public static void Main(string[] args){var host new WebHostBuilder().UseUrls("http://*:5000").UseKestrel().U…

鼠标按键获取感兴趣区域 2
#include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> #include <stdio.h> using namespace cv; using namespace std; // 全局变量图像源 cv::Mat srcImage; // 所选矩形区域 cv::Rect roiRect; …

偷看日历?9款 APP 涉嫌过度获取权限
最近网友已经看累了APP搞事的瓜,3月29日,“9款 APP 涉嫌过度获取权限”又上了热搜。 不久前上海消保委针对网购平台、旅游出行、生活服务等39款手机APP进行了涉及个人信息权限的评测,主要包括四个方面:App所使用的目标API级别、A…

【C++】多线程与条件变量【三】
文章目录1 条件变量是什么?实例1:2 条件变量本质?3 引入条件变量的原因?实例2:实例3:实例4:4 如何使用条件变量?4.1 std::condition_variable实例5:4.2 std::condition_v…

图像遍历反色处理,遍历多通道图片
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; // 下标M.at<float>(i,j) 方法1-1 cv::Mat inverseColor1(cv::Mat srcImage) {cv::Mat tempImage srcImage.clone();int row t…

【Treap】bzoj1588-HNOI2002营业额统计
一、题目 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节…