如何用channel5导出晶粒尺寸统计数据

如何用channel5导出晶粒尺寸统计数据,第1张

用channel5导出晶粒尺寸统计数据的步骤方法如下。

1、打开Channel5软件,并打开含有晶粒尺寸统计数据的图像。

2、在菜单栏中选择“Analyze”选项,然后选择“Grainsizedistribution”选项。

3、在d出的对话框中,选择需要统计晶粒尺寸的通道,并设置合适的晶粒尺寸范围和统计参数。

4、点击“Calculate”按钮,等待统计结果的生成即可。

译文 原文地址

channel是Go语言的一个标志性特性,为go协程之间的数据交互提供一种非常强大的方式,而不需要使用锁机制。

本文将讨论channel的两个重要属性,一个是控制协程间数据发送和接收,以及对channel本身控制。

首先讨论下关闭的channel特性。一旦channel被关闭之后,就不能再继续发送数据给该channel,但是还是可以继续接收channel中的数据。如下所示:

output:

上述例子显示即使ch在for循环之前已经关闭,但还是可以正常的读取缓存中的true值,读完之后ok就会被赋值为false表示channel已经关闭,而且value值为对应channel类型bool的默认零值false。只要不停地从关闭的channel接收,就会无限的返回默认值和false。可以将for循环次数改大点试试即可验证。

通过以上例子可以发现,关闭的channel可以继续接收读取 *** 作,这种特征是有用的。在使用range读取带缓存的channel时就会用到,一旦channel关闭,读取完缓存中数据就会停止接收数据退出。

将前面的例子改为如下:

output:

上面的例子就没有false打出来了。正好是写入channel里面的两个值。

channel与select结合更能发挥出其作用,让我们看一个例子:

上面的例子,因为finish在主协程中发送之后,马上就会在select中接收,并执行doneDone()。主协程wait马上会退出整个程序就结束。但是这里面存在一个问题,如果在select中没有添加finish case的话,主协程就永远发送不了数据到finish这个channel,因为其不带缓存。这里就可以通过将finish改成带缓存的channel,或者可以让select中的finish不会阻塞。

但是出现多个协程都在接收finish通道中的数据的话,就需要发送对应协程数量的值到channel中才能解决上面的问题。但是具体有多少个协程这往往是不好确定的,因为有些协程可能是程序其他部分创建的。一个比较好的选择就是通过使用关闭通道的方法来实现各协程能正常接收并结束。

如下所示:

output:

上面的例子就是使用了关闭的channel可以无限地接收到反馈数据。这样每个协程都能从finish通道中读到关闭信息并执行doneDone()使得主协程wait能退出。并且不需要关注多少个协程数,就能正确的让所有协程读到finish通道信息。

channel的这个特性,可以让程序员无需关注后台具体执行协程个数,确保每个协程都能接收到通道关闭信息,而无需担心死锁问题。

通过上面的例子我们也发现每个协程并不需要从通道中读取对应类型的数据,只需让接收 *** 作能执行就行,让select不被阻塞。所以可以使用空结构体类型,我们可以改成如下:

这里我们只关注通道是否关闭这个信号,而不需要关注通道里面的数据,所以可使用空结构体类型通道。

第二个要讨论的是nil通道:如果定义了一个channel变量没有被初始化,或者被赋值为nil,那么该chennel总是处于阻塞状态。如下所示:

执行结果为:

因为channel为nil无法发送数据,当然也不能接收数据:

这个似乎看起来不是很重要,但是如果你想使用关闭channel来等待多个channel关闭的话,这个特性就有用处了。先看下面的例子:

WaitMany()函数看起来好像是一个等待通道a和b关闭的好方法,但是存在一个问题。假设a通道先关闭,case <-a就会变成非阻塞。因为bclosed还是false,程序就会进入到一个死循环当中,导致b通道永远无法确认关闭。

一个安全的方法就是使用nil通道总是阻塞的特点,如下所示:

上面的例子我们在WaitMany函数当中,当a或者b关闭时,case可执行了将对应的通道赋值为nil,让其阻塞这样就可以等待另一个通道关闭。当nil通道是select语句的一部分时,它会被有效地忽略,因此nil通道a会从select中删除它,只留下b,直到它被关闭,退出循环。

总之,closed和nil通道的简单属性对写出优质的go程序是很有用的,可以用来创建高并发程序。

没有权限。php用的是apache的用户权限。

一般权限很低,只能 *** 作打开修改apache网页文件夹里的文件。调用不了其他地方的程序。

你在linux里用的是登陆用户的权限,这也是为了安全。

Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器,并将被执行的多个命令请求的结果在一个命令回复中全部返回 给客户端,使用这个功能可以有效地减少客 户端在执行多个命令时需要与服务器进行通信的次数,多个命令执行的数据会以列表的形式返回

redigo客户端使用Send和Do方法来实现流水线事务

1与M *** 作的对比

pipeline:多条命令发送到服务端多条命令在队列中排队不是原子 *** 作,返回的结果是顺序的

M *** 作:是原子 *** 作

2注释:

SUBSCRIBE channel [channel …] // 订阅频道

示例 :

SUBSCRIBE news::it

PSUBSCRIBE pattern [pattern] // 订阅一个或多个模式

订阅一个或多个模式, pattern 参数可以包含 glob 风格的匹配符,比如:

示例 :

PSUBSCRIBE news::[ie]t

UNSUBSCRIBE [channel [channel …]] // 退订指定频道

PUNSUBSCRIBE [pattern [pattern…]] // 退订指定模式

PUBLISH channel message

将消息发送至指定的频道,命令返回接收到消息的 订阅者数量。

PUBSUB CHANNELS [pattern]

PUBSUB NUMSUB [channel-1 channel-N]

PUBSUB NUMPAT

Redis 的事务功能允许用户将多个命令包裹起来,然后一次性地、按 顺序地执行被包裹的所有命令。在事务执行的过程中,服务器不会中断事务而改去执行其他命令请求,只有在事务包裹的所有命令都被执行完毕之后,服务器才会去处理其他命令请求

通过事务, 我们可以让 Redis 一次性地执行多个命令, 并且确保事务中的命令要么就全部都 执行,要么就一个都不执行

MULTI // 开始一个新的事务

DISCARD // 放弃事务

EXEC // 执行事务中的所有命令

按照命令被入队到事务队列中的顺序,执行事务队列中的所有命令。命令的复杂度为队列中所有命令的复杂度之和。命令的返回值是一个列表,列表里包含了事 务队列中所有被执行命令的返回值

与流水线对比:

使用 WATCH 来防止竞争条件:

位图可以直接 *** 作数据保存的二进制数据位的值

getbit key offset

注:对key所存储的字符串值,获取指定偏移量上的位

setbit key offset value

注:对key所存储的字符串值,设置或清除指定偏移量上的位(bit)返回值为该位在setbit之前的值,value只能取0或1,offset从0开始

bitcount key [start end]

注:获取位图指定范围中位值为1的个数,如果不指定start与end,则取所有

bitpos key tartget [start end]

注:计算位图指定范围第一个等于target值的偏移量(位置)

基于算法,使用极小空间完成独立数量统计的功能,本质还是一个字符串

pfadd key element1 [element2]

注:向HyperLogLog中添加元素

pfcount key1 [key2]

注:计算HyperLogLog的独立总数

pfmerge hyperloglogKey key1 [key2]

注:合并多个hyperLogLog到hyperloglogKey中

功能:存储经纬度、计算两地距离、范围计算等,基于ZSet实现

geoadd key longitude latitude elementName [lon lat elementName]

注:增加经纬度元素

geopos key element1 [element2]

注:获取经纬度元素

geodist key member1 member2 [unit]

注:获取两个经纬度元素的距离

unit取值范围

注:以给定的经纬度为中心,返回包含的位置元素当中,与中心距离不超过给定最大距离的所有位置元素。

georadiusbymember key member radius unit [withcoord][withdist][withhash][COUNT count][sort][store key][storedist key]

注:以给定的元素为中心,返回包含的位置元素当中,与中心距离不超过给定最大距离的所有位置元素。

慢查询相关配置:

​ 它决定了慢查询日志最多能保存多少条日志,slow log本身是一个内存中的FIFO队列,当队列大小超过slowlog-max-len时,最旧的一条日志将被删除,而最新的一条日志加入到slow log中。

2slowlog-log-slower-than

​ 它决定要对执行时间大于多少微妙(microsecond , 1秒=1,000,000 微妙)的查询进行记录

动态配置:

config set slowlog-max-len 1000

config set slowlog-log-slower-than 1000

相关命令:

slowlog get [n]

注:获取慢查询列表中的慢查询信息

slowlog len

注:获取慢查询队列长度

slowlog reset

注:清空慢查询队列

以上就是关于如何用channel5导出晶粒尺寸统计数据全部的内容,包括:如何用channel5导出晶粒尺寸统计数据、channel使用、为什么php用exec()执行linux命令/sbin/ethtool eth0 时输出结果No data available。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9745619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存