- [SystemVerilog] Clocking
S&Z3463
SystemVerilogfpga开发
SystemVerilogClocking用法详解SystemVerilog的clocking块(ClockingBlock)是一种专门用于定义信号时序行为的构造,主要用于验证环境(如UVM)中,以精确控制信号的采样和驱动时序。clocking块通过将信号与特定时钟关联,简化了测试环境中对时序敏感信号的处理,减少了手动时序管理的复杂性。本文将详细介绍SystemVerilog中clocking块的
- Debian安装配置Nvidia驱动
两斤半
LinuxDebiandebian
检查内核模块nvidia-smi检查已加载的内核模块lsmod|grepnvidia#输出参考nvidia_uvm49152000nvidia_drm11878418drm_ttm_helper163841nvidia_drmdrm_kms_helper2539522drm_ttm_helper,nvidia_drmnvidia_modeset160563225nvidia_drmnvidia60
- core-v-verif系列之lib<53>
CDerL
fpga开发
UVM环境介绍HEADcommitID:1f968ef//Copyright2020OpenHWGroup//Copyright2020DatumTechnologyCorporation//Copyright2020SiliconLabs,Inc.////LicensedundertheSolderpadHardwareLicence,Version2.0(the"License");//you
- core-v-verif系列之lib<50>
CDerL
core-v-verif
UVM环境介绍HEADcommitID:1f968ef1.core-v-verif/lib/uvm_agents/uvma_cvxif/src/uvma_cvxif_assert.sv//Copyright2021ThalesDISdesignservicesSAS////LicensedundertheSolderpadHardwareLicence,Version2.0(the"License
- core-v-verif系列之lib<49>
CDerL
core-v-verif
UVM环境介绍HEADcommitID:1f968ef1.core-v-verif/lib/uvm_agents/uvma_cvxif/src/comps/uvma_cvxif_mon.sv//Copyright2021ThalesDISdesignservicesSAS////LicensedundertheSolderpadHardwareLicence,Version2.0(the"Lice
- core-v-verif系列之lib<45>
CDerL
core-v-verif
core-v-verif系列之lib<45>UVM环境介绍HEADcommitID:1f968ef1.core-v-verif/lib/uvm_agents/uvma_clknrst/seq/uvma_clknrst_base_seq.sv////Copyright2020OpenHWGroup//Copyright2020DatumTechnologyCorporation////License
- Emacs Verilog-mode 核心功能与使用指南
yang_20250429
emacs编辑器
一、基本概念与背景1、功能定位Verilog-mode是Emacs专门为Verilog/SystemVerilog开发设计的插件12,支持包括UVM验证框架在内的硬件设计语言特性。其核心功能包括:语法高亮:区分关键字、注释、端口等元素自动缩进与格式化:根据代码层级智能调整缩进AUTO宏系统:自动生成模块端口、信号连接等重复代码2、开发者背景由MichaelMcNamara和WilsonSnyder
- core-v-verif系列之lib<30>
CDerL
core-v-verif
UVM环境介绍HEADcommitID:1f968ef1.core-v-verif/lib/uvm_agents/uvma_axi5/src/uvma_axi_amo_assert.sv//Copyright2022ThalesDISSAS////LicensedundertheSolderpadHardwareLicence,Version2.0(the"License");//youmayno
- core-v-verif系列之cv32e40p UVM环境介绍<16>
CDerL
core-v-verif
UVM环境介绍HEADcommitID:1f968ef1.tb/core/dp_ram.sv//DVTLINTERwaiversarefinebecausethisisnotaUVMcomponent.//@DVT_LINTER_WAIVER_START"MT20210811_0"disableSVTB.29.1.3.1,SVTB.29.1.7moduledp_ram#(parameterADDR
- core-v-verif系列之cv32e40p UVM环境介绍<14>
CDerL
core-v-verif
UVM环境介绍HEADcommitID:1f968ef1.tb/core/tb_riscv/riscv_random_interrupt_generator.sv////////Author:
[email protected]////////Additionalcontributionsby:DavideSchiavone-pschiavo@ii
- core-v-verif系列之cv32e40p UVM环境介绍<11>
CDerL
core-v-verif
UVM环境介绍HEADcommitID:1f968ef1.regress/cv32e40p_full_covg_no_pulp.yaml#YAMLfiletospecifyaregressiontestlist#NotethattheCOREV=YESissetforalltestsinthisregression.#ThismeansyouneedtohaveatoolchainatCOREV_
- #C8# UVM中的factory机制 #S8.1.1# 多态的实现方式(三)
那么菜
UVM
记得曾经看到过这样一句话:实现多态,有二种方式,覆盖,重载。今天,再琢磨这句话,不禁想起来什么,随便写写吧。在面向对象编程(OOP)中,多态(Polymorphism)的实现方式,有哪些呢?1.多态的分类多态通常分为两类:编译时多态(静态多态):在编译阶段确定具体调用的方法,例如方法重载(Overload)。运行时多态(动态多态):在程序运行期间动态绑定具体调用的方法,例如方法覆盖(Overrid
- uvm configuration
weifexie
UVMuvmsystemverilogconfiguration
UVMConfiguration机制详解UVM的配置机制(ConfigurationMechanism)是验证环境中实现参数传递和动态配置的核心方法,通过uvm_config_db类实现跨组件的数据共享和灵活配置。以下是其核心概念、使用方法和最佳实践的详细解析:1.核心概念目的:在不直接修改组件代码的前提下,动态传递参数、接口句柄或对象,提升验证环境的灵活性和复用性。核心类:uvm_config_
- uvm factory
weifexie
UVMuvmsystemverilogfactory
UVMFactory是验证环境中实现动态对象和组件创建的核心机制,它通过类型注册和覆盖(Override)机制,允许在不修改原有代码的情况下替换组件或事务类型,从而提升验证环境的灵活性和可重用性。以下是Factory机制的详细解析:Factory的核心概念核心作用:动态对象创建:通过类型名称(字符串)或代理类(ProxyClass)创建对象。类型覆盖:在运行时替换默认组件或事务类型(例如将普通Dr
- #C8# UVM中的factory机制 #S8.2.3# 重载sequence哪些情形
那么菜
UVM
在UVM中,重载(Override)Sequence是一种动态替换激励生成逻辑的关键技术,常用于灵活配置测试场景。以下是常见的用法和实现方式:1.在uvm_testbuild_phase中通过set_type_override重载用途:直接替换某个Sequencer的默认Sequence类型。实现步骤:在测试用例的build_phase中,调用set_type_override。指定原始Seque
- #C8# UVM中的factory机制 #S8.5# 对factory机制的重载进一步思考
那么菜
UVM
前面的重载,我们已经谈了很多,为什么还需要进一步聊聊呢。作为码农,我们喜欢拿来多种相近语言,进行对比理解,相信这是一种加深对问题理解的方式。一C++重载在C++中,重载和多态的英文术语分别是:重载→Overloading;多态→Polymorphism重载的定义:在同一作用域内定义多个同名函数或操作符,但参数列表(类型、数量或顺序)不同。多态定义:通过继承和虚函数实现,允许不同子类对象对同一方法表
- #C8# UVM中的factory机制 #S8.2.1# factory 机制重载法则
那么菜
UVM
factory机制最伟大的地方在于其具有重载功能。重载并不是factory机制的发明,前面已经介绍过的所有面向对象的语言都支持函数/任务重载,另外,SystemVerilog还额外支持对约束的重载。只是factory机制的重载与这些重载都不一样。一问题引出以8.1.1节的代码清单8-1和代码清单8-2为例,定义好bird与parrot,并在测试用例中调用print_hungry函数。只是与8.1.
- nvidia_uvm 被占用,nvidia-smi 卡死
guganly
数据中心运维实战chrome前端服务器运维linux
系统可以识别到多块NVIDIAGPU,且驱动模块已加载,但nvidia_uvm被占用,nvidia-smi卡死,通常是由于以下原因导致:可能原因GPU资源被占用某些进程正在使用NVIDIA驱动,导致模块无法卸载。驱动损坏或加载异常NVIDIA内核模块部分加载,但驱动未能正确工作。GPU挖矿或AI任务未释放某些后台程序未正常退出,导致GPU资源无法被释放。PCIe通道异常多卡环境可能由于PCIe配置
- 【UVM基础】m_sequencer 和 p_sequencer 概念与区别(面试常问)
MoorePlus
数字IC验证百宝箱经验分享面试数字IC芯片验证SV
文章目录1、基本概念m_sequencerp_sequencer2、解释m_seqeuncer和p_sequencer的区别?3、uvm_declare_p_sequencer宏做了哪几件事?参考1、基本概念m_sequencer类型是uvm_sequencer_base类型,定义在uvm_sequence_item类中,注意:类型很重要。可以理解为每个sequence中默认都有m_sequenc
- 【数字IC验证】博客内容全览
MoorePlus
数字IC验证百宝箱经验分享面试数字IC芯片验证SV
【导读】:数字IC验证百宝箱涵盖博主在实际工作中常用的技能与工具,包括但不限于SV、UVM、Formal、脚本(perl/python/shell)及EDA工具快速上手使用等。无论你是刚踏入职场的验证小白,还是希望回顾基础寻找跳槽机会的从业者,本专栏都能为你提供实用的技术支持,在达成目标的路上,助你一臂之力。“凡是能用钱买来的时间就是便宜的;凡是能用时间换来的注意力持续就是有价值的。”(附上超链接
- uvm_info打印信息(整数/浮点数/字符串/数组/多个信号),快速更改冗余度及重载严重度
星海河空
经验分享linux
前言:熟悉打印信息方法和更改冗余度及严重度有利于大型项目的debug。一.打印信息1.打印整数:%d`uvm_info("MY_COMPONENT",$sformatf("my_signalvalue:%0d",my_signal),UVM_LOW)2.打印浮点数:%f或%.nf(n为保留的几位小数)`uvm_info("MY_COMPONENT",$sformatf("my_signalvalu
- 验证环境中为什么要用virtual interface
m0_71354184
systemverilog
在UVM(UniversalVerificationMethodology)中使用virtualinterface的主要目的是解决SystemVerilog接口(interface)的静态特性与UVM验证环境的动态特性之间的不匹配问题。1.解决静态与动态的绑定问题SystemVerilog接口(interface)是静态的:在编译时确定,无法直接用于动态创建的UVM对象(如driver、monit
- UVM的基本教程
如筏喻者
UVM学习其他
文章目录一、基本介绍二、在实践中学习1.接口interface2.待测设计DUT3.传输数据包transaction4.序列sequence5.序列器sequencer6.驱动器driver7.监视器monitor8.代理agent9.记分板scoreboard10.仿真环境env11.测试用例test12.顶层top13.参考模型referencemode和直接编程接口(DPI)14.简单的ma
- 3.10 学习UVM中的uvm_test类分为几步?
啄缘之间
UVM学习总结学习veriloguvm测试用例sv
文章目录前言1.定义2.核心功能3.适用场景4.使用方法步骤1:定义测试类步骤2:构建验证环境步骤3:启动测试序列5.完整代码示例5.1事务类(Transaction)5.2序列类(Sequence)5.3驱动类(Driver)5.4环境类(Env)5.5测试类(Test)5.6顶层模块(TopModule)6.代码说明7.总结前言以下是关于UVM中uvm_test的详细解释、核心功能、适用场景、
- 3.2.2 具体的案例展示uvm_object在实际验证中的应用?
啄缘之间
UVM学习总结学习svuvmverilog测试用例
文章目录前言一、案例一:使用uvm_object_utils()简化对象类设计1.1示例代码二、案例二:基于《UVM实战》的验证平台2.1示例代码三、案例三:以太网验证平台3.1示例代码四、案例四:验证一个简单的总线接口4.1、具体实现1.定义派生自`uvm_object`的事务类2.定义序列类3.定义驱动类4.定义环境类5.定义测试类6.顶层测试平台4.2、总结五、总结前言以下是几个具体的案例或
- 1.4 学习序列(Sequence)分为几步?
啄缘之间
UVM学习总结学习svuvm
文章目录前言一、什么是UVM中的Sequence?二、如何理解Sequence?三、如何使用Sequence?四、示例代码4.1示例14.1.1代码分析4.2示例24.2.1代码分析:五、总结前言需要回顾一下UVM的基本概念,特别是Sequence的部分。我记得Sequence是UVM中用于生成测试激励的重要组件,它允许我们以一种灵活和可重用的方式定义测试场景。Sequence可以随机化生成测试数
- 1.5 学习环境(Environment)分为几步?
啄缘之间
UVM学习总结学习verilog开发语言
文章目录前言一、什么是UVM中的环境(Environment)?二、如何理解UVM中的环境(Environment)?三、如何使用UVM中的环境(Environment)?四、代码示例五、实操前言先解释清楚UVM环境是什么,它在验证平台中的位置和作用。得强调UVM环境的层次化结构和可重用性,这是UVM环境的重要特点。一、什么是UVM中的环境(Environment)?UVM中的环境(Environ
- UVM TLM之analysis_port的write函数
斐非韭
uvm
analysis端口analysis_port/analysis_export(analysis_imp)没有阻塞和非阻塞概念在analysis_imp所在的模块必须定义一个write函数;write函数收到的数据放到run_phase中处理需要存放到队列中并借助一个event;(example)具体过程:analysis_port的write函数会依次获取与其相连的analysis_imp,并调
- 白皮书《UVM实战》2.5.2代码详细注释(包括知识点对应页码)
元气少女大斩FPGA
fpga开发
1.my_driver.sv`ifndefMY_DRIVER__SV`defineMY_DRIVER__SVclassmy_driverextendsuvm_driver#(my_transaction);virtualmy_ifvif;//声明虚接口vif//使用uvm_component_utils宏注册到factory`uvm_component_utils(my_driver)//构造函数
- DVT学习与使用
Dale_e
SV学习学习笔记经验分享材料工程
补充1.打开某些隐藏窗口或图标:1.DVT基本概念和示例引入1.1双击uvm_1.2_ubus,选择一个路径,点finish,dvt会自动将ubus这个例子的文件拷贝在你创建的路径下,并且自动帮助你构建项目1.2下面是创建完成后的界面1.3打开项目里的代码文件比如ubus.env.sv,可查看验证代码1.4windows——showview:打开我们需要的功能窗口,other里有其他许多未显示的功
- SQL的各种连接查询
xieke90
UNION ALLUNION外连接内连接JOIN
一、内连接
概念:内连接就是使用比较运算符根据每个表共有的列的值匹配两个表中的行。
内连接(join 或者inner join )
SQL语法:
select * fron
- java编程思想--复用类
百合不是茶
java继承代理组合final类
复用类看着标题都不知道是什么,再加上java编程思想翻译的比价难懂,所以知道现在才看这本软件界的奇书
一:组合语法:就是将对象的引用放到新类中即可
代码:
package com.wj.reuse;
/**
*
* @author Administrator 组
- [开源与生态系统]国产CPU的生态系统
comsci
cpu
计算机要从娃娃抓起...而孩子最喜欢玩游戏....
要让国产CPU在国内市场形成自己的生态系统和产业链,国家和企业就不能够忘记游戏这个非常关键的环节....
投入一些资金和资源,人力和政策,让游
- JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
商人shang
jvm内存
jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。
HotSpot虚拟机GC算法采用分代收
- 页面上调用 QQ
oloz
qq
<A href="tencent://message/?uin=707321921&Site=有事Q我&Menu=yes">
<img style="border:0px;" src=http://wpa.qq.com/pa?p=1:707321921:1></a>
- 一些问题
文强chu
问题
1.eclipse 导出 doc 出现“The Javadoc command does not exist.” javadoc command 选择 jdk/bin/javadoc.exe 2.tomcate 配置 web 项目 .....
SQL:3.mysql * 必须得放前面 否则 select&nbs
- 生活没有安全感
小桔子
生活孤独安全感
圈子好小,身边朋友没几个,交心的更是少之又少。在深圳,除了男朋友,没几个亲密的人。不知不觉男朋友成了唯一的依靠,毫不夸张的说,业余生活的全部。现在感情好,也很幸福的。但是说不准难免人心会变嘛,不发生什么大家都乐融融,发生什么很难处理。我想说如果不幸被分手(无论原因如何),生活难免变化很大,在深圳,我没交心的朋友。明
- php 基础语法
aichenglong
php 基本语法
1 .1 php变量必须以$开头
<?php
$a=” b”;
echo
?>
1 .2 php基本数据库类型 Integer float/double Boolean string
1 .3 复合数据类型 数组array和对象 object
1 .4 特殊数据类型 null 资源类型(resource) $co
- mybatis tools 配置详解
AILIKES
mybatis
MyBatis Generator中文文档
MyBatis Generator中文文档地址:
http://generator.sturgeon.mopaas.com/
该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。
本文使用Markdown进行编辑,但是博客显示效
- 继承与多态的探讨
百合不是茶
JAVA面向对象 继承 对象
继承 extends 多态
继承是面向对象最经常使用的特征之一:继承语法是通过继承发、基类的域和方法 //继承就是从现有的类中生成一个新的类,这个新类拥有现有类的所有extends是使用继承的关键字:
在A类中定义属性和方法;
class A{
//定义属性
int age;
//定义方法
public void go
- JS的undefined与null的实例
bijian1013
JavaScriptJavaScript
<form name="theform" id="theform">
</form>
<script language="javascript">
var a
alert(typeof(b)); //这里提示undefined
if(theform.datas
- TDD实践(一)
bijian1013
java敏捷TDD
一.TDD概述
TDD:测试驱动开发,它的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。
- [Maven学习笔记十]Maven Profile与资源文件过滤器
bit1129
maven
什么是Maven Profile
Maven Profile的含义是针对编译打包环境和编译打包目的配置定制,可以在不同的环境上选择相应的配置,例如DB信息,可以根据是为开发环境编译打包,还是为生产环境编译打包,动态的选择正确的DB配置信息
Profile的激活机制
1.Profile可以手工激活,比如在Intellij Idea的Maven Project视图中可以选择一个P
- 【Hive八】Hive用户自定义生成表函数(UDTF)
bit1129
hive
1. 什么是UDTF
UDTF,是User Defined Table-Generating Functions,一眼看上去,貌似是用户自定义生成表函数,这个生成表不应该理解为生成了一个HQL Table, 貌似更应该理解为生成了类似关系表的二维行数据集
2. 如何实现UDTF
继承org.apache.hadoop.hive.ql.udf.generic
- tfs restful api 加auth 2.0认计
ronin47
目前思考如何给tfs的ngx-tfs api增加安全性。有如下两点:
一是基于客户端的ip设置。这个比较容易实现。
二是基于OAuth2.0认证,这个需要lua,实现起来相对于一来说,有些难度。
现在重点介绍第二种方法实现思路。
前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGe
- jdk环境变量配置
byalias
javajdk
进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置:
1、下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是:jdk-7u79-windows-x64.exe
2、安装jdk-7u79-windows-x64.exe
3、配置环境变量:右击"计算机"-->&quo
- 《代码大全》表驱动法-Table Driven Approach-2
bylijinnan
java
package com.ljn.base;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.uti
- SQL 数值四舍五入 小数点后保留2位
chicony
四舍五入
1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。
2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后位数。
例如:
select cast(round(12.5,2) as numeric(5,2))  
- c++运算符重载
CrazyMizzz
C++
一、加+,减-,乘*,除/ 的运算符重载
Rational operator*(const Rational &x) const{
return Rational(x.a * this->a);
}
在这里只写乘法的,加减除的写法类似
二、<<输出,>>输入的运算符重载
&nb
- hive DDL语法汇总
daizj
hive修改列DDL修改表
hive DDL语法汇总
1、对表重命名
hive> ALTER TABLE table_name RENAME TO new_table_name;
2、修改表备注
hive> ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comm
- jbox使用说明
dcj3sjt126com
Web
参考网址:http://www.kudystudio.com/jbox/jbox-demo.html jBox v2.3 beta [
点击下载]
技术交流QQGroup:172543951 100521167
[2011-11-11] jBox v2.3 正式版
- [调整&修复] IE6下有iframe或页面有active、applet控件
- UISegmentedControl 开发笔记
dcj3sjt126com
// typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {
// UISegmentedControlStylePlain, // large plain
&
- Slick生成表映射文件
ekian
scala
Scala添加SLICK进行数据库操作,需在sbt文件上添加slick-codegen包
"com.typesafe.slick" %% "slick-codegen" % slickVersion
因为我是连接SQL Server数据库,还需添加slick-extensions,jtds包
"com.typesa
- ES-TEST
gengzg
test
package com.MarkNum;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation
- 为何外键不再推荐使用
hugh.wang
mysqlDB
表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。
在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不
- 领域驱动设计
julyflame
VODAO设计模式DTOpo
概念:
VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对
- 单例设计模式
hm4123660
javaSingleton单例设计模式懒汉式饿汉式
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
&nb
- logback
zhb8015
loglogback
一、logback的介绍
Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-class
- 整合Kafka到Spark Streaming——代码示例和挑战
Stark_Summer
sparkstormzookeeperPARALLELISMprocessing
作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管。本文,Michael详细的演示了如何将Kafka整合到Spark Streaming中。 期间, Michael还提到了将Kafka整合到 Spark Streaming中的一些现状,非常值得阅读,虽然有一些信息在Spark 1.2版
- spring-master-slave-commondao
王新春
DAOspringdataSourceslavemaster
互联网的web项目,都有个特点:请求的并发量高,其中请求最耗时的db操作,又是系统优化的重中之重。
为此,往往搭建 db的 一主多从库的 数据库架构。作为web的DAO层,要保证针对主库进行写操作,对多个从库进行读操作。当然在一些请求中,为了避免主从复制的延迟导致的数据不一致性,部分的读操作也要到主库上。(这种需求一般通过业务垂直分开,比如下单业务的代码所部署的机器,读去应该也要从主库读取数