1.蛋白质构象评价指标
2.智能楼宇中的指指标传感器系统LoCal中传感器的特点是什么?
3.动手实现一个localcache - 设计篇
4.spdep | 除了莫兰指数,还有哪些指数可以衡量空间自相关性?
5.loc是标源什么意思
6.使用 OpenEBS 实现 Local PV 动态持久化存储
蛋白质构象评价指标
蛋白质构象评价指标主要包括几种方法,如Root Mean Square Deviation (RMSD) 和其变形Levitt-Gerstein score、源码MaxSub以及Template Modeling Score (TM Score)。指指标RMSD通过计算对齐后天然结构与预测结构残基间的标源空间距离偏差,不依赖于结构重叠对齐。源码裂变广告源码Levitt-Gerstein score评估的指指标是对齐到模板的残基数目与距离的匹配程度。
Local-Distance Difference Test (LDDT) 是标源一种无重叠比较的分数,它在论文"LDDT: a local superposition-free score for comparing protein structures and models using distance difference tests"中被引入。源码LDDT利用dRMSD和GDT的指指标改进版本,通过比较距离差来评估结构一致性。标源AlphaFold2中的源码pLDDT是基于内禀距离的残基级可信度评估,是指指标其评估精度自评的重要组成部分,尽管信息熵在作者的标源首选评估方法中占据主导地位。
对于配体-受体相互作用,源码DockQ是一个质量评估工具,其得分范围从0到1,数值越大表示效果越好。DockQ综合了Fnat、LRMS和iRMS三个指标,具体公式未在提供的信息中给出。
DockQ的代码可以在github.com/bjornwallner...找到。这个指标旨在综合评估蛋白质-蛋白质对接模型的准确性和有效性。
智能楼宇中的传感器系统LoCal中传感器的特点是什么?
在楼宇智能化过程中,为了更好地实现智能化控制效果,会用到一些电气设备,而传感器设备是其中很重要的组成了。一般来讲,传感器有动态特征和静态特征两个主要特征,三水智能化在这里就传感器静态特征中的灵敏度、选择性、线性度以及迟滞性为大家详细介绍一下。
1.灵敏度
楼宇智能化所用传感器的灵敏度指的是传感器输出变化量以及被测输入变化量之比,其中主要是依靠传感器结构中的相关技术。目前很多气体传感器的设计都是利用生物化学、电化学、物理以及相关光学进行设计。在传感器设计中需要考虑其中的敏感技术,要保证其具有足够的灵敏性。
2.选择性
选择性,也就是所谓的交叉灵敏度,可以经过测量来由某一种浓度的干扰气体产生的传感器响应进行确定,这种响应也就是等价于一定浓度目标气体所产生的传感器响应。传感器需要具备较高的灵敏性以及选择性。
3.线性度
楼宇智能化所用传感器实际静态特性输出的是曲线,在进行工作的过程中,为了保证智能仪表具备较为均匀的读数,会利用一条与直线相似的特性曲线,而线性度则是达标这个近似程度的指标。
4.迟滞性
楼宇智能化所用传感器在进行输入的星力源码论坛过程中是由小到大以及输入量由大到小,变化期间输入输出的特性曲线不会出重合为迟滞。
如上所述,楼宇智能化所用传感器的静态特征主要表现为灵敏度、选择性、线性度以及迟滞性,本文对此进行了详细介绍,大家可以简单了解一下。
动手实现一个localcache - 设计篇
本地缓存的设计与实现是提升系统性能的关键,尤其在处理高并发和数据更新频率较低的场景。本文将着重介绍考虑的要点,以期实现一个高效且灵活的本地缓存方案。
首先,我们需要理解为何需要本地缓存。在互联网应用中,海量用户访问造成数据库压力增大。分布式缓存虽速度快,但跨网络传输消耗资源。本地缓存,作为性能优化手段,无需网络传输,直接在应用进程内操作,适用于首页这类场景,能显著提升性能。
本地缓存的使用常常带来应用程序与缓存的紧密耦合,导致内存浪费和资源管理复杂。因此,选择合适的数据结构至关重要。哈希表,如Java的泛型或Go的interface,能保证快速查找,但需要开发者根据业务场景灵活应用。
并发安全是另一个核心考虑。在保证数据一致性的同时,应选用线程安全的同步map,如Go的sync.map,以减少锁竞争。针对高并发读取,分桶技术可以细化锁的范围,降低竞争。
设计时还要考虑内存限制,设置对象上限和淘汰策略。常见的淘汰算法有LFU、LRU、FIFO和ARU,各有优缺点。本文倾向于ARU算法,因为它能动态调整LRU和LFU链表,适应不同场景。
此外,商城开源网站源码过期清除策略和缓存监控同样重要。数据过期后应及时删除,而监控指标如命中率可以帮助优化。对于GC问题,需要密切关注以确保服务稳定性。
最后,虽然本地缓存设计复杂,但通过实践和持续优化,我们可以逐步构建一个高效的本地缓存系统。下文将分享实现过程,敬请期待。
感谢关注公众号:Golang梦工厂,让我们共同探讨技术进步。
spdep | 除了莫兰指数,还有哪些指数可以衡量空间自相关性?
本文继续探讨空间自相关性衡量的指数,除了莫兰指数之外,还有Geary's C指数与Getis's G指数。
Geary's C指数作为空间自相关性的一种指标,其全局形式如下:
计算全局Geary's C指数的函数为geary.test()。局部形式如下:
局部Geary's C指数的计算函数为localC()。通过示例数据进行全局与局部C指数的计算。
Getis's G指数(Getis-Ord G)则是一种全局与局部都适用的空间自相关性衡量方法。全局形式如下:
计算全局G指数的函数为globalG.test(),相关细节可参考链接:desktop.arcgis.com/zh-c...
局部Getis's G指数的计算函数为localG()。全局G指数的计算步骤如下:
局部G指数与局部G*指数的计算流程也一并展示。
在进行绘图演示时,涉及到ggplot2绘图系统之外,还涵盖了上文提及的两个关键点。通过综合这些步骤,实现了对空间自相关性指数的有效探索与应用。
loc是什么意思
LOC的意思有多种,需要根据具体语境来判断。1. 在计算机科学中,LOC是“Lines of Code”的缩写,直译为“代码行数”。这是一个衡量软件项目规模或复杂度的指标,通常用来计算源代码中的代码行数。通过统计代码行数,可以帮助开发者评估项目的规模和工作量。
2. 在编程和软件开发中,LOC有时也指代“Location”的缩写,意为位置或定位。例如,在某些编程语境中,可能会讨论某个功能或变量在代码中的LOC,指的是它在文件或项目中的具体位置。
3. 在其他领域,LOC可能表示“Local”的缩写,或是大联盟4.5源码其他词汇的缩写,具体含义需要根据上下文来判断。
详细解释:
在计算机科学和软件开发领域,代码行数是一个非常重要的概念。它是衡量软件项目规模、复杂度和开发工作量的一种常用指标。一个项目的代码行数可以反映该项目的规模大小,通常代码行数越多,项目的复杂度和开发难度也可能越大。同时,通过统计和分析代码行数,开发者可以更好地理解项目结构,评估开发进度和效率。
除了作为衡量标准外,LOC在日常的编程工作中也有实际应用。比如在版本控制系统中,开发者需要知道特定功能的代码位于哪里,这时就会提到某个功能或变量的LOC,指的是它在项目文件结构中的具体位置。这对于团队协作和代码维护来说是非常重要的。
在其他领域,LOC可能表示不同的含义。比如在地理或者物流领域,LOC可能表示地点或位置。因此,要准确理解LOC的含义,需要根据具体的语境来判断。
总的来说,LOC是一个缩写,其具体含义需要根据上下文来确定。在不同的领域和语境中,LOC有不同的含义和用法。
使用 OpenEBS 实现 Local PV 动态持久化存储
OpenEBS( openebs.io) 是一种模拟了 AWS 的 EBS、阿里云的云盘等块存储实现的基于容器的存储开源软件。OpenEBS 是一种基于 CAS(Container Attached Storage) 理念的容器解决方案,其核心理念是存储和应用一样采用微服务架构,并通过 Kubernetes 来做资源编排。其架构实现上,每个卷的 Controller 都是一个单独的 Pod,且与应用 Pod 在同一个节点,卷的数据使用多个 Pod 进行管理。
OpenEBS 提供了一个动态供应器,它是标准的 Kubernetes 外部存储插件。OpenEBS PV 供应器的主要任务是向应用 Pod 发起卷供应,并实现Kubernetes 的 PV 规范。OpenEBS 集群的控制平面通常被称为 Maya,控制平面负责供应卷、相关的卷操作,如快照、制作克隆、opengl模板缓冲源码创建存储策略、执行存储策略、导出卷指标供 Prometheus/grafana 消费等。控制平面 Maya 实现了创建超融合的 OpenEBS,并将其挂载到如 Kubernetes 调度引擎上,用来扩展特定的容器编排系统提供的存储功能;控制平面也是基于微服务的,通过不同的组件实现存储管理功能、监控、容器编排插件等功能。
m-apiserver 暴露了存储 REST API,并承担了大部分的卷策略处理和管理。OpenEBS PV 供应器只支持一种类型的绑定,即iSCSI。m-apiserver 的另一个重要任务是卷策略管理。OpenEBS 提供了非常细化的规范来表达策略,m-apiserver 解释这些 YAML 规范,将其转换为可执行的组件,并通过卷管理 sidecar 来执行。
Maya Volume Exporter 是每个存储控制器 Pod(cStor/Jiva)的 sidecar。这些 sidecars 将控制平面与数据平面连接起来,以获取统计数据,比如:Volume 管理 Sidecars 还用于将控制器配置参数和卷策略传递给作为数据平面的卷控制器 Pod,以及将副本配置参数和副本数据保护参数传递给卷副本 Pod。
OpenEBS 持久化存储卷通过 Kubernetes 的 PV 来创建,使用 iSCSI 来实现,数据保存在节点上或者云存储中。OpenEBS 的卷完全独立于用户的应用的生命周期来管理,和 Kuberentes 中 PV 的思路一致。OpenEBS 卷为容器提供持久化存储,具有针对系统故障的弹性,更快地访问存储,快照和备份功能。同时还提供了监控使用情况和执行 QoS 策略的机制。
对于那些不需要存储级复制的应用,Local PV 可能是不错的选择,因为它能提供更高的性能。OpenEBS LocalPV 与 Kubernetes LocalPV 类似,只不过它是由 OpenEBS 控制平面动态调配的,就像其他常规 PV 一样。OpenEBS LocalPV 有两种类型--主机路径 LocalPV 或设备 LocalPV,主机路径 LocalPV 指的是主机上的一个子目录,设备 LocalPV 指的是节点上的一个被发现的磁盘(直接连接或网络连接)。OpenEBS 引入了一个LocalPV 供应器,用于根据 PVC 和存储类规范中的一些标准选择匹配的磁盘或主机路径。
Node Disk Manager (NDM) 是填补了使用 Kubernetes 管理有状态应用的持久性存储所需的工具链中的空白。它将不同的磁盘统一起来,并通过将它们识别为 Kubernetes 对象来提供部分池化的能力。同时, NDM 还可以发现、供应、监控和管理底层磁盘,这样Kubernetes PV 供应器(如 OpenEBS 和其他存储系统和Prometheus)可以管理磁盘子系统。
安装 OpenEBS 需要在所有 Kubernetes 节点上都安装 iSCSI 客户端(启动器)。安装命令如下:
安装完成后,使用下面的命令安装 OpenEBS 即可:
安装成功后,可以看到如下所示的 Pod:
默认情况下 OpenEBS 还会安装一些内置的 StorageClass 对象:
接下来我们创建一个 PVC 资源对象,Pods 使用这个 PVC 就可以从 OpenEBS 动态 Local PV Provisioner 中请求 Hostpath Local PV 了。直接使用下面的命令创建 PVC:
可以看到 PVC 的状态是Pending,这是因为对应的 StorageClass 是延迟绑定模式,所以需要等到 Pod 消费这个 PVC 后才会去绑定。接下来我们去创建一个 Pod 来使用这个 PVC。
声明一个如下所示的 Pod 资源清单:
创建这个 Pod:
可以看到 Pod 运行成功后,PVC 也绑定上了一个自动生成的 PV,我们可以查看这个 PV 的详细信息:
可以看到这个自动生成的 PV 和我们前面自己手动创建的 Local PV 基本上是一致的,和 node2 节点是亲和关系,本地数据目录位于 /var/openebs/local/pvc-3f4a1a-6cbc-bf-a1f8-adc0b 下面。
接着我们来验证下 volume 数据,前往 node2 节点查看下上面的数据目录中的数据:
可以看到 Pod 容器中的数据已经持久化到 Local PV 对应的目录中去了。但是需要注意的是 StorageClass 默认的数据回收策略是 Delete,所以如果将 PVC 删掉后数据会自动删除,我们可以 Velero 这样的工具来进行备份还原。
一文读懂如何查看网络的性能指标
Linux网络协议栈是根据TCP/IP模型来实现的,TCP/IP模型由应用层、传输层、网络层和网络接口层,共四层组成,每一层都有各自的职责。
应用程序要发送数据包时,通常是通过socket接口,于是就会发生系统调用,把应用层的数据拷贝到内核里的socket层,接着由网络协议栈从上到下逐层处理后,最后才会送到网卡发送出去。
而对于接收网络包时,同样也要经过网络协议逐层处理,不过处理的方向与发送数据时是相反的,也就是从下到上的逐层处理,最后才送到应用程序。
网络的速度往往跟用户体验是挂钩的,那我们又该用什么指标来衡量Linux的网络性能呢?以及如何分析网络问题呢?
性能指标有哪些?
通常是以4个指标来衡量网络的性能,分别是带宽、延时、吞吐率、PPS(PacketPerSecond),它们表示的意义如下:
带宽,表示链路的最大传输速率,单位是b/s(比特/秒),带宽越大,其传输能力就越强。延时,表示请求数据包发送后,收到对端响应,所需要的时间延迟。不同的场景有着不同的含义,比如可以表示建立TCP连接所需的时间延迟,或一个数据包往返所需的时间延迟。吞吐率,表示单位时间内成功传输的数据量,单位是b/s(比特/秒)或者B/s(字节/秒),吞吐受带宽限制,带宽越大,吞吐率的上限才可能越高。PPS,全称是PacketPerSecond(包/秒),表示以网络包为单位的传输速率,一般用来评估系统对于网络的转发能力。
当然,除了以上这四种基本的指标,还有一些其他常用的性能指标,比如:
网络的可用性,表示网络能否正常通信;并发连接数,表示TCP连接数量;丢包率,表示所丢失数据包数量占所发送数据组的比率;重传率,表示重传网络包的比例;
你可能会问了,如何观测这些性能指标呢?不急,继续往下看。
网络配置如何看?
要想知道网络的配置和状态,我们可以使用ifconfig或者ip命令来查看。
这两个命令功能都差不多,不过它们属于不同的软件包,ifconfig属于net-tools软件包,ip属于iproute2软件包,我的印象中net-tools软件包没有人继续维护了,而iproute2软件包是有开发者依然在维护,所以更推荐你使用ip工具。
学以致用,那就来使用这两个命令,来查看网口eth0的配置等信息:
虽然这两个命令输出的格式不尽相同,但是输出的内容基本相同,比如都包含了IP地址、子网掩码、MAC地址、地址、MTU大小、网口的状态以及网络包收发的统计信息,下面就来说说这些信息,它们都与网络性能有一定的关系。
第一,网口的连接状态标志。其实也就是表示对应的网口是否连接到交换机或路由器等设备,如果ifconfig输出中看到有RUNNING,或者ip输出中有LOWER_UP,则说明物理网络是连通的,如果看不到,则表示网口没有接网线。
第二,MTU大小。默认值是字节,其作用主要是限制网络包的大小,如果IP层有一个数据报要传,而且网络包的长度比链路层的MTU还大,那么IP层就需要进行分片,即把数据报分成若干片,这样每一片就都小于MTU。事实上,每个网络的链路层MTU可能会不一样,所以你可能需要调大或者调小MTU的数值。
第三,网口的IP地址、子网掩码、MAC地址、地址。这些信息必须要配置正确,网络功能才能正常工作。
第四,网络包收发的统计信息。通常有网络收发的字节数、包数、错误数以及丢包情况的信息,如果TX(发送)和RX(接收)部分中errors、dropped、overruns、carrier以及collisions等指标不为0时,则说明网络发送或者接收出问题了,这些出错统计信息的指标意义如下:
errors表示发生错误的数据包数,比如校验错误、帧同步错误等;dropped表示丢弃的数据包数,即数据包已经收到了RingBuffer(这个缓冲区是在内核内存中,更具体一点是在网卡驱动程序里),但因为系统内存不足等原因而发生的丢包;overruns表示超限数据包数,即网络接收/发送速度过快,导致RingBuffer中的数据包来不及处理,而导致的丢包,因为过多的数据包挤压在RingBuffer,这样RingBuffer很容易就溢出了;carrier表示发生carrirer错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;collisions表示冲突、碰撞数据包数;
ifconfig和ip命令只显示的是网口的配置以及收发数据包的统计信息,而看不到协议栈里的信息,那接下来就来看看如何查看协议栈里的信息。
socket信息如何查看?
我们可以使用netstat或者ss,这两个命令查看socket、网络协议栈、网口以及路由表的信息。
虽然netstat与ss命令查看的信息都差不多,但是如果在生产环境中要查看这类信息的时候,尽量不要使用netstat命令,因为它的性能不好,在系统比较繁忙的情况下,如果频繁使用netstat命令则会对性能的开销雪上加霜,所以更推荐你使用性能更好的ss命令。
从下面这张图,你可以看到这两个命令的输出内容:
可以发现,输出的内容都差不多,比如都包含了socket的状态(State)、接收队列(Recv-Q)、发送队列(Send-Q)、本地地址(LocalAddress)、远端地址(ForeignAddress)、进程PID和进程名称(PID/Programname)等。
接收队列(Recv-Q)和发送队列(Send-Q)比较特殊,在不同的socket状态。它们表示的含义是不同的。
当socket状态处于Established时:
Recv-Q表示socket缓冲区中还没有被应用程序读取的字节数;Send-Q表示socket缓冲区中还没有被远端主机确认的字节数;
而当socket状态处于Listen时:
Recv-Q表示全连接队列的长度;Send-Q表示全连接队列的最大长度;
在TCP三次握手过程中,当服务器收到客户端的SYN包后,内核会把该连接存储到半连接队列,然后再向客户端发送SYNACK包,接着客户端会返回ACK,服务端收到第三次握手的ACK后,内核会把连接从半连接队列移除,然后创建新的完全的连接,并将其增加到全连接队列,等待进程调用accept()函数时把连接取出来。
也就说,全连接队列指的是服务器与客户端完了TCP三次握手后,还没有被accept()系统调用取走连接的队列。
那对于协议栈的统计信息,依然还是使用netstat或ss,它们查看统计信息的命令如下:
ss命令输出的统计信息相比netsat比较少,ss只显示已经连接(estab)、关闭(closed)、孤儿(orphaned)socket等简要统计。
而netstat则有更详细的网络协议栈信息,比如上面显示了TCP协议的主动连接(activeconnectionsopenings)、被动连接(passiveconnectionopenings)、失败重试(failedconnectionattempts)、发送(segmentssendout)和接收(segmentsreceived)的分段数量等各种信息。
网络吞吐率和PPS如何查看?
可以使用sar命令当前网络的吞吐率和PPS,用法是给sar增加-n参数就可以查看网络的统计信息,比如
sar-nDEV,显示网口的统计数据;sar-nEDEV,显示关于网络错误的统计数据;sar-nTCP,显示TCP的统计数据
比如,我通过sar命令获取了网口的统计信息:
它们的含义:
rxpck/s和txpck/s分别是接收和发送的PPS,单位为包/秒。rxkB/s和txkB/s分别是接收和发送的吞吐率,单位是KB/秒。rxcmp/s和txcmp/s分别是接收和发送的压缩数据包数,单位是包/秒。
对于带宽,我们可以使用ethtool命令来查询,它的单位通常是Gb/s或者Mb/s,不过注意这里小写字母b,表示比特而不是字节。我们通常提到的千兆网卡、万兆网卡等,单位也都是比特(bit)。如下你可以看到,eth0网卡就是一个千兆网卡:
$ethtooleth0|grepSpeedSpeed:Mb/s连通性和延时如何查看?要测试本机与远程主机的连通性和延时,通常是使用ping命令,它是基于ICMP协议的,工作在网络层。
比如,如果要测试本机到...IP地址的连通性和延时:
显示的内容主要包含icmp_seq(ICMP序列号)、TTL(生存时间,或者跳数)以及time(往返延时),而且最后会汇总本次测试的情况,如果网络没有丢包,packetloss的百分比就是0。
不过,需要注意的是,ping不通服务器并不代表HTTP请求也不通,因为有的服务器的防火墙是会禁用ICMP协议的。
工具总结
性能指标
工具
说明
吞吐量(BPS)
sarnethogsiftop
分别可以查看网络接口、进程以及IP地址的网络吞吐量
PPS
sar/proc/net/dev
查看网络接口的PPS
连接数
netstatss
查看网络连接数
延迟
pinghping3
通过ICMP、TCP等测试网络延迟
连接跟踪数
conntrack
查看和管理连接跟踪状况
路由
mtrroutetraceroute
查看路由并测试链路信息
DNS
dignslookup
排查DNS解析问题
防火墙和NAT
iptables
配置和管理防火墙及NAT规则
网卡功能
ethtool
查看和配置网络接口的功能
抓包
tcpdumpwireshark
ngrep
抓包分析网络流量
内核协议栈跟踪
bccsystemtap
动态跟踪内核协议栈的行为