go语言修养之路 go语言从入门到进阶实战

Can I use you pen怎么回答?

原句:you 改为 your

公司主营业务:成都做网站、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出永定免费做网站回馈大家。

Can I use your pen ?

形容词性物主代词修饰名词

情态动词引导的一般疑问句回答:

Yes, you can. No, you can’t.

日语敬语go和o有什么区别?

日语的词汇基本可以分成四类。

1 和语(わご):固有的日语词汇

名词:やま(山)、みず(水)

形容词:たかい(高い)、つめたい(冷たい)

动词:たべる(食べる)、はしる(走る)

2 汉语(かんご):在古代从中国引进的汉语词汇(基本上指明治维新以前),必须用汉字来表记。包括日本人用汉字所造的新词,(すなわち和制汉语(わせいかんご)即日制汉语,如:大根(だいこん)、返事(へんじ))

名词:山水(さんすい)

形容词:高低(こうてい)

动词: 疾走(しっそう)

3 外来语(がいらいご):近现代从西方引进的欧美词汇,必须用片假名来表记。包括现代从中国引进的词汇。

ギョーザ(饺子)

ラーメン(拉面)

4 混种语(こんしゅご):包括由以上三种之中两种以上的因素所组成的词汇。

お子様ランチ(儿童套餐)

搞清这些词汇种类之后,解释日语敬语中「お」和「ご」的主要用法就容易多啦。

1  「お」和「ご」只能用在名词前面,这是最关键的。

2  「お」基本上只能用在和语名词前面。「お読(よ)みになる」

3  「ご」基本上只能用在汉语名词前面。「ご覧(らん)になる」

4  「お」和「ご」不能加在外来语之前。

    以上四条是「お」和「ご」用法的基本规则,虽然有些例外,但掌握了这些就掌握了用法的精髓了。下面我们再看看什么时候用「お」和「ご」

1  用在表示对方动作、状态,以及对方的所有物之前。作为尊敬语使用。

お考(かんが)え、お见送(みおく)り、お荷物(にもつ)

ご意见(いけん)、ご出席(しゅっせき)、ご著书(ちょしょ)

2  虽然是说话人自己的动作、所有物,但涉及到对方时所使用。作为谦让语使用。

お愿(ねが)い、お知(し)らせ、お手纸(てがみ)

ご连络(れんらく)、ご报告(ほうこく)

3  起美化语言的作用,表示有修养时使用。

お花(はな)、おいくら

ご心配(しんぱい)、ご旅行(りょこう) 

python能开发出exe电脑软件吗?golang编程可开发出APK安卓应用?不用安装的程序叫什么

python可以开发出Windows平台的EXE程序,需要打包即可,但是打包后exe软件本身有点大。

Go 语言三色标记扫描对象是 DFS 还是 BFS?

最近在看左神新书 《Go 语言设计与实现》的垃圾收集器时产生一个疑惑,花了点时间搞清楚了记录一下。

Go 语言垃圾回收的实现使用了标记清除算法,将对象的状态抽象成黑色(活跃对象)、灰色(活跃对象中间状态)、白色(潜在垃圾对象也是所有对象的默认状态)三种,注意没有具体的字段标记颜色。

整个标记过程就是把白色对象标黑的过程:

1.首先将 ROOT 根对象(包括全局变量、goroutine 栈上的对象等)放入到灰色集合

2.选一个灰色对象,标成黑色,将所有可达的子对象放入到灰色集合

3.重复2的步骤,直到灰色集合中为空

下图是书上的插图,看上去是一个典型的深度优先搜索的算法。

下图是刘丹冰写的《Golang 修养之路》的插图,看上去是一个典型的广度优先搜索的算法。

我疑惑的点在于这个标记过程是深度优先算法还是广度优先算法,因为很多文章博客对此都没有很清楚的说明,作为学习者这种细节其实也不影响对整个 GC 流程的理解,但是这种细节我非常喜欢扣:)

对着书和源码摸索着大致找到了一个结果是深度优先。下面看下大致的过程,源码基于1.15.2版本:

gcStart 是 Go 语言三种条件触发 GC 的共同入口

启动后台标记任务

为每个处理器创建用于执行后台标记任务的 Goroutine

上面休眠的 G 会在调度循环中检查并唤醒执行

执行标记

gcw 是每个 P 独有的所以不用担心并发的问题 和 GMP、mcache 一样设计,减少锁竞争

尝试在全局列表中获取一个不为空的 buf

这是官方实现的无锁队列:)涨见识了,for 循环加原子操作实现栈的 pop

到这里从灰色集合中获取待扫描的对象逻辑说完了。找到对象了接着就是 scanobject(b, gcw) 了,里面有两段逻辑要注意

根据索引位置找到对象进行标色

尝试存入 gcwork 的缓存中,或全局队列中

无锁队列,for 循环加原子操作实现栈的 push

到这里把灰色对象标黑就完成了,又放回灰色集合接着扫下一个指针。

Go 语言设计与实现 垃圾收集器

Golang三色标记+混合写屏障GC模式全分析


分享题目:go语言修养之路 go语言从入门到进阶实战
浏览路径:http://scyanting.com/article/ddgphoh.html