胡芦娃app软件下载网站服装电子商务网站有哪些

bicheng/2026/1/22 17:31:40/文章来源:
胡芦娃app软件下载网站,服装电子商务网站有哪些,企业开发网站建设,智能网站建设维护1、Go 1.3之前的标记-清除#xff08;mark and sweep#xff09;算法 Go 1.3之前的时候主要用的是普通的标记-清除算法#xff0c;此算法主要由两个主要的步骤#xff1a; 标记#xff08;Mark phase#xff09;清除#xff08;Sweep phase#xff09; 1#xff09…1、Go 1.3之前的标记-清除mark and sweep算法 Go 1.3之前的时候主要用的是普通的标记-清除算法此算法主要由两个主要的步骤 标记Mark phase清除Sweep phase 1、标记-清除算法的具体步骤 第一步暂停程序业务逻辑分类出可达和不可达的对象然后做上标记 图中表示是程序与对象的可达关系目前程序的可达对象有对象1-2-3对象4-7等五个对象 第二步开始标记程序找出它所有可达的对象并做上标记 对象1-2-3、对象4-7等五个对象被做上标记 第三步标记完了之后然后开始清除未标记的对象 操作非常简单但是有一点需要额外注意mark and sweep算法在执行的时候需要程序暂停即STWstop the world。STW的过程中CPU不执行用户代码全部用于垃圾回收这个过程影响很大所以STW也是一些回收机制最大的难题和希望优化的点。所以在执行第三步的这段时间程序会暂停任何工作卡在那等待回收执行完毕 第四步停止暂停让程序继续运行然后重复这个过程直到进程生命周期结束 2、标记-清除的缺点 标记-清除算法明了过程鲜明干脆但是也有非常严重的问题 STW让程序暂停程序出现卡顿重要问题标记需要扫描整个heap清除数据会产生heap碎片 Go 1.3版本之前就是以上来实施的在执行GC的基本流程就是首先启动STW暂停然后执行标记再执行数据回收最后停止STW 从上图来看全部的GC时间都是包裹在STW范围之内的这样貌似程序暂停的时间过长影响程序的运行性能。所以Go 1.3做了简单的优化将STW的步骤提前减少STW暂停的时间范围 上图主要是将STW的步骤提前了一步因为在sweep清除的时候可以不需要STW停止因为这些对象已经是不可达对象了不会出现回收写冲突等问题 但是无论怎么优化Go 1.3都面临这个一个重要问题就是标记-清除算法会暂停整个程序 2、Go 1.5的三色并发标记法 Go中的垃圾回收主要应用三色标记法GC过程和其他用户goroutine可并发运行但需要一定时间的STW所谓三色标记法实际上就是通过三个阶段的标记来确定清除的对象都有哪些 1、三色标记法的过程 第一步每次新创建的对象默认的颜色都是标记为白色 如上图所示左边为程序可抵达的内存对象关系右边的标记表用来记录目前每个对象的标记颜色分类。这里需要注意的是所谓程序则是一些对象的根结点集合。所以我们如果将程序展开会得到类似如下图的表现形式 第二步每次GC回收开始会从根节点开始遍历所有对象把遍历到的对象从白色集合放入灰色集合 这里要注意的是本次遍历是一次遍历非递归形式是从程序抽出可抵达的对象遍历一层如上图所示当前可抵达的对象是对象1和对象4那么自然本轮遍历结束对象1和对象4就会被标记为灰色灰色标记表就会多出这两个对象 第三步遍历灰色集合将灰色对象引用的对象从白色集合放入灰色集合之后将此灰色对象放入黑色集合 这一次遍历是只扫描灰色对象将灰色对象的第一层遍历可抵达的对象由白色变为灰色如对象2、对象7。而之前的灰色对象1和对象4则会被标记为黑色同时由灰色标记表移动到黑色标记表中 第四步重复第三步直到灰色中无任何对象 当全部的可达对象都遍历完后灰色标记表将不再存在灰色对象目前全部内存的数据只有两种颜色黑色和白色。那么黑色对象就是我们程序逻辑可达需要的对象这些数据是目前支撑程序正常业务运行的是合法的有用数据不可删除白色的对象是全部不可达对象目前程序逻辑并不依赖它们那么白色对象就是内存中目前的垃圾数据需要被清除 第五步回收所有的白色标记表的对象也就是垃圾回收 将全部的白色对象进行删除回收剩下的就是全部依赖的黑色对象 以上便是三色并发标记法不难看出上面已经清楚的体现三色的特性。但是这里面可能会有很多并发流程均会被扫描执行并发流程的内存可能相互依赖为了在GC过程中保证数据的安全我们在开始三色标记之前就会加上STW在扫描确定黑白对象之后再放开STW。但是很明显这样的GC扫描的性能实在是太低了 2、没有STW的三色标记法 假设没有STW那么也就不会再存在性能上的问题。那么接下来假设如果三色标记法不加入STW会发生什么事情 当前已经经历了第一轮扫描目前黑色的有对象1和对象4灰色的有对象2和对象7其他的为白色对象且对象2是通过指针p指向对象3的如下图所示 现在如果三色标记过程不启动STW那么在GC扫描过程中任意的对象均可能发生读写操作如下图所示在还没有扫描到对象2的时候已经标记为黑色的对象4此时创建指针q并且指向白色的对象3 与此同时灰色的对象2将指针p移除那么白色的对象3实则就是被挂在了已经扫描完成的黑色的对象4下如下图所示 然后正常执行三色标记的算法逻辑将所有灰色的对象标记为黑色那么对象2和对象7就被标记为了黑色如下图所示 那么就执行了三色标记的最后一步将所有白色对象当做垃圾进行回收如下图所示 但是本来是对象4合法引用的对象3却被GC给误杀回收掉了 3、触发三色标记法不安全的必要条件 可以看出有两种情况在三色标记法中是不希望被发生的 条件1一个白色对象被黑色对象引用白色被挂在黑色下条件2灰色对象与它之间的可达关系的白色对象遭到破坏灰色同时丢了该白色 如果当以上两个条件同时满足时就会出现对象丢失现象 并且如图所示的场景中如果示例的白色对象3还有很多下游对象的恶化也会一并都清理掉 为了防止这种现象的发生最简单的方式就是STW直接禁止掉其他用户程序对对象引用关系的干扰但是STW的过程有明显的资源浪费对所有的用户程序都有很大影响。那么是否可以在保证对象不丢失的情况下合理的尽可能的提高GC效率减少STW时间呢答案是可以的只要使用一种机制尝试去破坏上面的两个必要条件就可以了 3、屏障机制 让GC回收器满足下面两种情况之一时即可保证对象不丢失。这两种方式就是强三色不变式和弱三色不变式 1、强弱三色不变式 强三色不变式 不存在黑色对象引用到白色对象的指针 强三色不变式实际上是强制性的不允许黑色对象引用白色对象这样就不会出现有白色对象被误删的情况 弱三色不变式 所有被黑色对象引用的白色对象都处于灰色保护状态 弱三色不变式强调黑色对象可以引用白色对象但是这个白色对象必须存在其他灰色对象对它的引用或者可达它的链路上游存在灰色对象。这样实则是黑色对象引用白色对象白色对象处于一个危险被删除的状态但是上游灰色对象的引用可以保护该白色对象使其安全 为了遵循上述的两个方式GC算法演进到两种屏障方式插入屏障、删除屏障 2、插入屏障 具体操作在A对象引用B对象的时候B对象被标记为灰色将B挂在A下游B必须被标记为灰色 满足强三色不变式不存在黑色对象引用到白色对象的情况了因为白色会强制变为灰色 伪代码 添加下游对象(当前下游对象slot, 新下游对象ptr) { // 1标记灰色(新下游对象ptr) // 2当前下游对象slot 新下游对象ptr }场景 A.添加下游对象(nil, B) // A之前没有下游,新添加一个下游对象B,B被标记为灰色 A.添加下游对象(C, B) // A将下游对象C更换为B,B被标记为灰色这段伪代码逻辑就是写屏障。黑色对象的内存槽有两种位置栈和堆。栈空间的特点是容量小但是要求响应速度快因为函数调用弹出频繁使用所以插入屏障机制在栈空间的对象操作中不使用而仅仅使用在堆空间对象的操作中 但是如果栈不添加当全部三色标记扫描之后栈上有可能依然存在白色对象被引用的情况如上图的对象9。所以要对栈重新进行三色标记扫描但这次为了对象不丢失要对本次扫描启动STW暂停直到栈空间的三色标记结束 最后将栈和堆空间扫描剩余的全部白色节点清除。这次STW大约的时间在10-100ms间 3、删除屏障 具体操作被删除的对象如果自身为灰色或者白色那么被标记为灰色 满足弱三色不变式保护灰色对象到白色对象的路径不会断 伪代码 添加下游对象(当前下游对象slot 新下游对象ptr) {// 1if (当前下游对象slot是灰色 || 当前下游对象slot是白色) {标记灰色(当前下游对象slot) // slot为被删除对象,标记为灰色}// 2当前下游对象slot 新下游对象ptr }场景 A.添加下游对象(B, nil) // A对象删除B对象的引用.B被A删除,被标记为灰(如果B之前为白) A.添加下游对象(B, C) // A对象更换下游B变成C.B被A删除,被标记为灰(如果B之前为白)这种方式的回收精度低一个对象即使被删除了最后一个指向它的指针也依旧可以活过这一轮在下一轮GC中被清理掉 4、Go 1.8的混合写屏障hybrid write barrier机制 插入屏障和删除屏障的短板 插入屏障结束时需要STW来重新扫描栈标记栈上引用的白色对象的存活删除屏障回收精度低GC开始时STW扫描堆栈来记录初始快照这个过程会保护开始时刻的所有存活对象 Go 1.8版本引入了混合写屏障机制hybrid write barrier避免了对栈re-scan的过程极大的减少了STW的时间结合了两者的优点 1、混合写屏障规则 具体操作 GC开始将栈上的对象全部扫描并标记为黑色之后不再进行第二次重复扫描无需STWGC期间任何在栈上创建的新对象均为黑色堆上被删除的对象标记为灰色堆上被添加的对象标记为灰色 混合写屏障实际上满足的是一种变形的弱三色不变式。它的伪代码如下 添加下游对象(当前下游对象slot, 新下游对象ptr) {// 1 标记灰色(当前下游对象slot) // 只要当前下游对象被移走就标记灰色// 2 标记灰色(新下游对象ptr)// 3当前下游对象slot 新下游对象ptr }注意屏障技术不在栈上应用因为要保证栈的运行效率。混合写屏障是GC的一种屏障机制所以只是当程序执行GC的时候才会触发这种机制 2、混合写屏障的具体场景分析 1GC开始扫描栈区将可达对象全部标记为黑 2场景一 对象被一个堆对象删除引用成为栈对象的下游 场景1主要描述的是对象被堆对象删除引用成为栈对象的下游情况伪代码如下 // 前提:堆对象4-对象7 对象7; // 对象7被对象4引用 栈对象1-对象7 堆对象7; // 将堆对象7挂在栈对象1下游 堆对象4-对象7 null; // 对象4删除引用对象73场景二 对象被一个栈对象删除引用成为另一个栈对象的下游 场景2主要描述的是对象被一个栈对象删除引用成为另一个栈对象的下游情况伪代码如下 new 栈对象9; 对象8-对象3 对象3; // 将栈对象3挂在栈对象9下游 对象2-对象3 null; // 对象2删除引用对象34场景三对象被一个堆对象删除引用成为另一个堆对象的下游 场景3主要描述的是对象被一个堆对象删除引用成为另一个堆对象下游的情况伪代码如下 堆对象10-对象7 堆对象7; // 将堆对象7挂在堆对象10下游 堆对象4-对象7 null; // 对象4删除引用对象75场景四对象从一个栈对象删除引用成为另一个堆对象的下游 场景4主要描述的是对象从一个栈对象被删除引用成为另一个堆对象的下游情况伪代码如下 堆对象10-对象7 堆对象7; // 将堆对象7挂在堆对象10下游 堆对象4-对象7 null; // 对象4删除引用对象7Go中的混合写屏障满足弱三色不变式结合了删除屏障和插入屏障的优点只需要在开始时并发扫描各个goroutine的栈使其变黑并一直保持这个过程不需要STW而标记结束后因为栈在扫描后始终是黑色的也无需再进行re-scan操作了减少了STW的时间 6、小结 Go 1.3使用普通标记清除法整体过程需要启动STW效率极低 Go 1.5使用三色标记法 堆空间启动写屏障栈空间不启动全部扫描之后需要重新扫描一次栈需要STW效率普通 Go 1.8使用三色标记法混合写屏障机制 栈空间不启动堆空间启动。整个过程几乎不需要STW效率较高 参考 Golang三色标记混合写屏障GC模式全分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站系统建设预算网站优化应该怎么做

服务认证基础考试大纲(第1版) 1.总则 本大纲依据 CCAA《服务认证审查员注册准则》制定,适用于拟向CCAA申请注册服务认证审查员级别的人员。 2.考试要求 2.1考试科目 申请注册服务认证审查员级别的人员,需通过“服务认证基础”…

做一个个人主页的网站怎么做古城网站建设

写在前:在前篇的两篇博客介绍中我们主要学习软件测试的相关概念,对软件测试进行了初步的了解,本篇博客将进一步进行学习。重点内容包括:软件测试的生命周期、如何描述一个bug、如何定义bug的级别、bug的生命周期以及在实际工作中如…

做商城网站需要备案什么域名对外宣传推广方案

1. 线性回归算法 线性回归是一种用于预测连续数值的监督学习算法。以下是使用Python和scikit-learn库实现线性回归的示例代码: import numpy as np from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split from…

wordpress两个站点煤棚网架加工厂

题目链接 最小高度树 思路:本质上是找到树中的最长路径。当最长路径上中间点(若路经长为偶数,则中间点仅有一个,否者中间点有两个)作为根时,此时树高最小。 Code: class Solution { public://拓扑排序int…

徐州市做网站wordpress+编辑器回车

440. 字典序的第K小数字 给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。 注意:1 ≤ k ≤ n ≤ 109。 示例 : 输入: n: 13 k: 2 输出: 10 解释: 字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是…

如何制作自己的网站?专业网站建站公司

数组指针:数据类型 (*数组指针变量名)[列宽];特点:1、本质上是一个指针类型的变量;2、指向的是一个二维数组,即数组指针的列宽等价于二维数组的列宽;例如: int array[2][5] {1,2,3,4,5,6,7,8,9…

化妆品销售网站的源代码东莞做网页

功能优化 【主机】裸金属详情页增加部分属性信息【监控】优化告警策略,支持同时设置多监控指标【主机】支持透传设备自动探测【主机】LVM 块存储支持快照【监控】简化 Telegraf 容器的挂载点【主机】新建 VMware 支持同时填写备注信息【存储】KVM 支持对接 LVM 存储…

深圳网站开发平台星速浏览器

❀❀❀ 文章由不准备秃的大伟原创 ❀❀❀ ♪♪♪ 若有转载,请联系博主哦~ ♪♪♪ ❤❤❤ 致力学好编程的宝藏博主,代码兴国!❤❤❤ 哈咯各位铁汁们,大家新年过得快乐吗?反正大伟是过得很快乐,天天就是玩玩玩…

做平面免费接单网站收费的网站如何免费

在使用ElementUI的Backtop回到顶部组件时&#xff0c;单独复制这一行代码 <el-backtop :right"100" :bottom"100" /> 发现页面在向下滚动时&#xff0c;并未出现Backtop组件。 可从以下3个方向进行分析&#xff1a; 指定target属性&#xff0c;且…

win7 iis建立网站正邦网站建设 优帮云

Context 上下文context.Context 是用来设置截止时间、同步信号&#xff0c;传递请求相关值的结构体。 context.Context 定义了四个需要实现的方法&#xff1a; Deadline: 返回 context.Context 被取消的时间。Done: 返回一个 Channel&#xff0c;这个 Channel 会在当前工作完…

微信小程序怎么制作网页网站优化个人工作室

今年前前后后也遇到了不少软件项目&#xff0c;想来想去还是拒绝了其中的大部分项目&#xff0c;当然也有一部分是客户拒绝我的&#xff0c;把这些经验教训分享给大家&#xff0c;一起探讨探讨&#xff0c;接了项目很容易深陷泥潭&#xff0c;累得死去活来不值得。拒绝软件项目…

如何推广网站话术工业设计网站外网

一、简介 在文件中统计出现最多个数的单词&#xff0c;将其输出到hdfs文件上。 二、例子 &#xff08;1&#xff09;实例描述 给出三个文件&#xff0c;每个文件中都若干个单词以空白符分隔&#xff0c;需要统计出现最多的单词 …

做动画相册在哪个网站好织梦网站管理安装

image 标签添加 mode"widthFix" <image mode"widthFix" :src"detailData.coverImageURL" />image 标签添加样式 image {width: 100%;height: auto; }

如何建开发手机网站婚纱网站怎么做

工业显示器是智能制造领域应用比较广泛的电子产品&#xff0c;它广泛应用于工厂产线以及各种配套设备&#xff0c;在很大程度上提升了工厂的生产效率。 工业显示器按触摸方式分&#xff0c;可以分为工业触摸显示器和非触摸工业显示器两种;按使用环境分&#xff0c;又可以分为室…

网站模板上传工具建设网站的服务费是指什么

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 在一个n*n的棋盘中&#xff0c;每个格子中至多放置一个车&#xff0c;且要保证任何两个车都不能相互攻击&#xff0c;有多少中…

网站如何做导航条下拉菜单公司名字大全不重名

近日&#xff0c;阿里云人工智能平台PAI与华东师范大学数据科学与工程学院合作在自然语言处理顶级会议EMNLP2023上发表基于双曲空间和对比学习的垂直领域预训练语言模型。通过比较垂直领域和开放领域知识图谱数据结构的不同特性&#xff0c;发现在垂直领域的图谱结构具有全局稀…

网站建设珠江摩尔免费商标设计网

金刚石工具就是以金刚石为增强体&#xff0c;以金属或聚合物为基体的一类功能复合材料。金刚石工具已经成为当今公认的、唯一有效的硬脆非金属材料加工工具&#xff0c;比如&#xff0c;只有用金刚石刀具能加工超硬的陶瓷&#xff0c;尚无其他代用品。金刚石工具根据其用途的不…

东方建设集团有限公司网站工程施工合同免费版

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反…

昆明网站建设去出发科技公司wordpress图片搬到聚合图床

unicloud 获取集合collection并请求数据库 在unicloud 云数据库概念及创建一个云数据库表并添加记录(数据)这一篇文章中,我介绍了unicloud数据库以及如何新建表数据 如果没看过的话可以去看看,然后在看这篇文章,因为这篇文章讲解的是如何获取云数据库的数据集合,要想获取,你得…

网站开发模板下载以营销型网站为主要营销方式的案例

技术介绍 本系统运用了JSP技术、SSM框架、B/S架构和myspl数据库 MySQL 介绍 MySQL是一种关系型的数据库管理系统&#xff0c;属于Oracle旗下的产品。MySQL的语言是非结构化的&#xff0c;使用的用户可以在数据上进行工作。这个数据库管理系统一经问世就受到了社会的广泛关注…