IBM PowerHA SystemMirror

IBM®PowerHA®SystemMirror®是一种高可用性和灾难恢复解决方案,可通过计划内和计划外的中断提供近乎连续的资源可用性。 资源可以是数据,应用程序,网络接口等。

PowerHA SystemMirror可以与不同的存储一起使用(例如,IBM SystemStorage®DS8000®,IBMXIV®StorageSystem®,EMC和Hitachi),从而实现灾难恢复和高可用性。 本文介绍了如何配置Hitachi Storage System与PowerHA SystemMirror一起使用。

日立存储系统

Hitachi Storage System通过使用Hitachi Universal Replicator(HUR)技术的TrueCopy同步和异步复制来支持短距离复制和长距离复制。 本文将与PowerHA SystemMirror一起处理Hitachi TrueCopy配置。

日立TrueCopy:

  • 是基于存储的复制解决方案
  • 允许同步操作模式,其中:
    • 主阵列仅在目标阵列确认已接收并检查数据后才对主机写入作出响应
    • 源设备和目标设备包含相同的副本

PowerHA SystemMirror与Hitachi的交互

PowerHA SystemMirror支持用于从Hitachi Storage System进行存储的高可用性灾难恢复(HADR)。

镜像需要两个或多个Hitachi Storage系统。 镜像的源和目标可以驻留在同一站点上并形成本地镜像,或者源和目标可以驻留在不同的站点上并启用灾难恢复计划。

Hitachi TrueCopy操作涉及主要(主要)子系统和次要(远程)子系统。 主子系统包含TrueCopy主卷(P-VOL),它们是原始数据卷。 辅助子系统包含TrueCopy辅助卷(S-VOL),它们是P-VOL的同步或异步副本。

日立可以将一组远程镜像分组到一个设备组中。 设备组是同一日立系统上的一组相关卷,被视为单个一致的单元。 使用镜像时,设备组作为一组处理许多远程镜像对,以使镜像卷保持一致。

图1:具有存储镜像的两站点群集配置

如图1所示,我们有两个站点。 这里的站点表示在相同地理位置上放置在一起的一组节点。 PowerHA SystemMirror当前支持两个站点,即,一个站点中存在一组节点,而另一个站点中存在另一组节点,但它们都是同一集群的一部分。 在这里,两个位置都可以在附近或在地理位置上分开。

如果由于火灾或地震等灾难而导致整个站点发生故障,PowerHA SystemMirror会将资源移至另一个站点。 由于数据是在两个站点中的Hitachi Storage系统上镜像的并且是一致的,因此资源将在另一个站点中启动并运行,从而保持高可用性。

先决条件

确保使用HItachi Storage配置PowerHA SystemMirror满足以下先决条件:

  • PowerHA SystemMirror 6.1(企业版)

    • PowerHA 6.1 SP3或更高版本
  • IBMAIX®和RSCT需求
    • AIX 6.1 TL4或更高版本

      • RSCT V2.5.4.0或更高版本
    • AIX 7.1或更高版本
      • RSCT V3.1.0.0或更高版本
  • 日立USPV / VM存储
    • 固件软件包V60-06-05 / 00或更高版本
  • Hitachi Command Control Interface(CCI)版本01-23-03 / 06或更高版本(必须安装在所有PowerHA节点上

假设条件

我们的测试设置包括以下软件版本:

  • PowerHA SystemMirror版本7.1.3 SP2
  • Hitachi命令控制界面(CCI)版本01-23-03 / 06

使用Hitachi Storage Navigator将逻辑单元号(LUN)分配给节点。

在两节点群集上安装和配置Hitachi / PowerHA XD的步骤

实现Hitachi镜像存储的高可用性和灾难恢复(HADR)的PowerHA SystemMirror Enterprise Edition涉及两个步骤。

步骤1:安装和配置Hitachi / PowerHA XD

步骤2:使用PowerHA SystemMirror Enterprise Edition界面发现已部署的存储设备并定义HA策略。

安装适用于AIX的Hitachi CCI软件

需要在集群的所有测试节点上执行以下步骤。

  1. 将RMHORC文件复制到根目录(/)。
  2. 运行以下命令: cpio -idmu < RMHORC
    将创建一个名称为HORCM的目录。
  3. 转到上面的目录并运行horcminstall.sh文件以安装Hitachi CLI。
  4. 使用以下命令验证Hitachi软件是否已正确安装,并注意显示的版本信息。
# raidqry -h
Model: RAID-Manager/AIX
Ver&Rev: 01-23-03/06
Usage: raidqry [options] for HORC

配置Hitachi镜像和AIX

Hitachi系统同时提供GUI和CLI命令来配置和监视系统。 本节说明使用GUI创建镜像或日立镜像对。

以下是测试环境的群集节点和相应IP的详细信息。

  • 节点1 <IP1>
  • 节点2 <IP2>
  • 节点3 <IP3>
  • 节点4 <IP4>

站点A是主站点(也称为生产站点),它包含以下节点:node1和node2。 它还包括主存储Hitachi1。

站点B是辅助站点(也称为恢复站点),它包括以下节点:node3和node4。 它还包括辅助存储Hitachi2。

  • Hitachi1:主存储(Hitachi_IP1)也称为主存储。
  • Hitachi2:辅助存储(Hitachi_IP2)也称为从属。

Hitachi磁盘必须在同一站点的所有节点之间共享。

执行以下步骤来配置Hitachi镜像和AIX:

  1. 确保系统上存在Hitachi磁盘。 在/ HORCM / usr / bin目录中的所有节点上运行以下命令。
    lsdev -Cc disk | grep hdisk | inqraid

    将显示hdisk列表。 搜索参数CM (命令设备)。 对于每个节点,将有一个带有此参数的磁盘。 该磁盘稍后将在horcm.conf文件中用作COMMAND_DEV

    例如,在以下输出中,将hdisk11配置为该节点的命令设备。
    hdisk11 -> [SQ] CL4-C Ser = 53105 LDEV =40961 [HITACHI ] [OPEN-V-CM]
    RAID5[Group 1- 2] SSID = 0x00A4

    在以下输出中,两个磁盘hdisk2和hdisk7也是Hitachi磁盘,将在Hitachi TrueCopy关系中使用。

    hdisk2 -> [SQ] CL4-C Ser =   53105 LDEV =   2 [HITACHI ] [OPEN-V]
    HORC = S-VOL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]
    RAID5[Group  1- 1] SSID = 0x0004hdisk7 -> [SQ] CL4-C Ser =   53105 LDEV =  64 [HITACHI ] [OPEN-V]
    HORC = P-VOL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]
    RAID5[Group  1- 1] SSID = 0x0004

    在此,S-VOL是次要音量,P-VOL是主要音量。

    从这一步,我们可以确定Hitachi Command Device和镜像磁盘。

  2. 创建一个HORCM实例。

    转到/ HORCM / usr / bin目录。 使用mkconf.sh创建实例。 此处,0是实例编号。

    注意:您可以使用任何数字。 如果使用0,则文件名将为horcm0.conf。
    ./mkconf.sh -i 0

    这将在同一目录中创建horcm0.conf文件。 将horcm0.conf文件移动到/ etc /。 在所有节点上重复此步骤。

    注意:该命令可能会挂起,但是无论如何它将创建文件。 挂起时使用

    Ctrl + C退出。 / etc中应该存在指向文件/ HORCM / etc / horcmgr的软链接horcmgr。 如果不存在,请创建软链接,然后使用/ HORCM / usr / bin中的horcmstart.sh 0命令启动horcm服务。

  3. 配置horcm0.conf文件。

    来自站点A的样本horcm.conf文件:

    # Created by mkconf.sh on Thu Jan 22 03:32:09 CST 2015HORCM_MON
    #ip_address        service         poll(10ms)     timeout(10ms)
    node1 IP         52323                 1000              3000HORCM_CMD
    #dev_name               dev_name                dev_name
    #UnitID 0 (Serial# 53105)
    /dev/rhdisk9HORCM_LDEV
    #dev_group        dev_name        Serial#   CU:LDEV(LDEV#)   MU#
    DVGP1             DVNM1           53105        548            0HORCM_INST
    #dev_group ip_address service
    DVGP1      node3 IP  52323

    来自站点B的样本horcm.conf文件:

    # Created by mkconf.sh on Thu Jan 22 03:34:37 CST 2015HORCM_MON
    #ip_address        service         poll(10ms)     timeout(10ms)
    node3 IP          52323                 1000              3000HORCM_CMD
    #dev_name               dev_name                dev_name
    #UnitID 0 (Serial# 53105)
    /dev/rhdisk5HORCM_LDEV
    #dev_group        dev_name        Serial#   CU:LDEV(LDEV#)   MU#
    DVGP1             DVNM1           53105        553            0HORCM_INST
    #dev_group ip_address service
    DVGP1      node1 IP  52323

    horcm0.conf文件的内容对于特定站点的所有节点应该相同。

    相应地在所有节点上编辑horcm0.conf文件,并使用/ HORCM / usr / bin目录中的horcmstart.sh 0启动horcm实例。

    下表说明了horcm.conf文件中使用的术语。

    表1:horcm.conf文件中使用的术语
    术语 描述
    HORCM_MON 在IP地址下,提供节点IP地址(其余所有字段均与示例文件中所示的相同)。
    HORCM_CMD 在此条目下,使用我们之前选择的具有参数CM的hdisk。
    HORCM_LDEV 在此条目下,输入用户定义的设备组名称(例如DVGP1)和用户定义的设备名称(例如DVNM1)。 在一个组中,我们可以有多个具有不同设备名称的设备,每个设备名称代表一个镜像。 为所有节点创建horcm.conf文件时,群集中的设备组名称和设备名称应相同。
    CU:LDEV(LDEV#) 运行lsdev -Cc disk | inqraid lsdev -Cc disk | inqraid命令获取将在用户定义的设备名称(例如DVNM1)中使用的磁盘的LDEV编号。
    HORCM_INST 在此条目下,输入设备组名称和另一个站点的远程节点的IP。 所有站点的所有节点的设备组名称均相同。
  4. 创建对。

    通过在所有节点上运行以下命令来停止horcm0实例。
    horcmshutdown.sh 0

    对于配对创建,我们将使用Hitachi Storage Navigator。 使用Hitachi Storage Navigator IP和登录凭据连接到Hitachi Storage Navigator。

    1. 在主页上,单击操作远程复制TrueCopy配对 操作

      图2:配对操作

    2. 使用Java Web Start启动器启动servlet。

      图3:Java Web Start启动器

    3. 请注意显示的TrueCopy Pair Operation页面。

      图4:存储子系统列表

    4. 选择子系统(端口)所在的磁盘。 在此示例中,它是CL4-C(我们可以使用以下命令获取此信息:
      lsdev -Cc disk | inqraid lsdev -Cc disk | inqraid (注意:在所有节点上运行命令)
      output - hdisk2 -> [SQ] CL4-C Ser = 53105 LDEV = 2 [HITACHI ] ...
      在输出中,我们可以看到CL4-C。

      图5:CL4-C的日立磁盘列表

    5. 如下图所示,将视图模式更改为编辑模式。

      图6:查看模式

      图7:编辑模式

    6. 选择主站点的磁盘,然后与辅助站点的磁盘配对。
    7. 执行以下步骤,选择主站点节点的磁盘及其在辅助站点上的相应磁盘。

      从站点A的节点1:

      # lsdev -Cc disk | grep hdisk | inqraid
      hdisk0 -> NOT supported INQ.                  [IBM] [IC35L073UCDY10-0]
      hdisk1 -> NOT supported INQ.                  [IBM] [IC35L073UCDY10-0]
      hdisk2 -> NOT supported INQ.                  [IBM] [IC35L073UCDY10-0]
      hdisk3 -> NOT supported INQ.                  [IBM] [IC35L073UCDY10-0]
      hdisk4 -> NOT supported INQ.                  [IBM] [IC35L073UCDY10-0]
      hdisk5 -> NOT supported INQ.                  [IBM] [IC35L073UCDY10-0]
      hdisk6 -> [SQ] CL4-C Ser =   53105 LDEV =  63 [HITACHI ] [OPEN-V]HORC = SMPL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk7 -> [SQ] CL4-C Ser =   53105 LDEV =  64 [HITACHI ] [OPEN-V]HORC = SMPL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk8 -> [SQ] CL4-C Ser =   53105 LDEV =  65 [HITACHI ] [OPEN-V]HORC = SMPL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk9 -> [SQ] CL4-C Ser =   53105 LDEV =  66 [HITACHI ] [OPEN-V]HORC = P-VOL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk10 -> [SQ] CL4-C Ser =   53105 LDEV =  67 [HITACHI ] [OPEN-V]HORC = P-VOL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk11 -> [SQ] CL4-C Ser =   53105 LDEV =  68 [HITACHI ] [OPEN-V]HORC = P-VOL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk12 -> [SQ] CL4-C Ser =   53105 LDEV =  69 [HITACHI ] [OPEN-V]HORC = SMPL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk13 -> [SQ] CL4-C Ser =   53105 LDEV =  70 [HITACHI ] [OPEN-V]HORC = P-VOL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk14 -> [SQ] CL4-C Ser =   53105 LDEV =  71 [HITACHI ] [OPEN-V]HORC = P-VOL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk15 -> [SQ] CL4-C Ser =   53105 LDEV =  72 [HITACHI ] [OPEN-V]HORC = SMPL  HOMRCF[MU#0 = SMPL MU#1 = SMPL MU#2 = SMPL]RAID5[Group  1- 1] SSID = 0x0004
      hdisk16 -> [SQ] CL4-C Ser =   53105 LDEV =40968 [HITACHI ] [OPEN-V-CM]RAID5[Group 1- 2] SSID = 0x00A4

      从输出中可以看出,hdisk6到hdisk16是Hitachi磁盘。

      图8:CL4-C的日立磁盘列表

      在图8所示的Storage Navigator页面上,我们可以看到从CL4-C-02-000开始的磁盘。 因此,映射如下所示:

      • hdisk6→CL4-C02-000
      • 硬盘7→CL4-C02-001
      • 硬盘8→CL4-C02-002
      • 硬盘9→CL4-C02-003

      …。

      相同的情况适用于站点B的其他节点3。我们给出相同的命令来获取Hitachi的hdisk列表。 在存储导航器GUI中,选择站点B的节点3,然后检查该站点下的磁盘。 我们执行相同的顺序映射。

      例如,在Storage Navigator页面的CL4-C下,单击node1(在本示例中为02:love2_russel)

      在右窗格上,右键单击CL4-C-02-001 ,然后单击Paircreate同步

      图9:同步选项

      图10:Paircreate选项

      P-VOL是我们从站点A的节点1中选择的一个。我们现在必须选择S-VOL。 S-VOL是要从站点B的node3中选择的辅助卷。

      S-VOL具有三个字段。

      • 第一个字段与P-VOL相同(根据图9,它是CL4-C)。
      • 第二个字段是站点B磁盘列表标签的索引。 例如,如图11所示,站点B磁盘列表标签为01:r1r4-eth_parseghia。 因此,这里的索引是01。

        图11:CL4-C下的LPAR列表

      • 第三字段与P-VOL的第三字段相同(如图10所示,为000 )。
        当磁盘处于SMPL(Simplex)状态时,我们可以创建一个对。 如果它已经处于PAIR状态,则可以在不使用它的情况下使用它。 如果它处于PSUS状态或任何其他状态,我们可以通过删除配对将其更改为SMPL状态。 右键单击磁盘时,将显示Pairsplit -S选项。

        图12:创建对后的磁盘状态页面

        点击应用以创建TrueCopy对。

  5. 验证配对创建成功。

    图13:创建对后的磁盘状态

    通过运行horcmstart.sh 0 (请注意在所有节点上启动)来启动horcm0实例。

    要验证对是否正确创建,以及是否可以从当前节点访问另一个节点的horcm0实例,请在所有节点上运行必要的命令。

    以下命令检查本地节点上的对状态。
    pairvolchk -ss -g DVGP1 -IH0

    命令输出:
    pairvolchk : Volstat is P-VOL.[status = PAIR fence = NEVER MINAP = 2 ]

    以下命令检查远程节点上的配对状态。
    pairvolchk -c -ss -g DVGP1 -IH0

    命令输出:
    pairvolchk : Volstat is P-VOL.[status = PAIR fence = NEVER MINAP = 2 ]

    以下命令显示设备组的配对状态。
    pairdisplay -g DVGP1 -IH0

    命令输出:

    Group   PairVol(L/R) (Port#,TID, LU),Seq#,LDEV#.P/S,Status,Fence,Seq#,P-LDEV# M
    DVGP1   DVNM1(L)    (CL2-C-3, 0,   1)53105   548.P-VOL PAIR NEVER ,53105   553 -
    DVGP1   DVNM1(R)    (CL4-C-4, 0,   1)53105   553.S-VOL PAIR NEVER ,-----   548 -

    这三个命令都应该起作用,并提供正确的输出,如上所示。

  6. 确保所有节点上的Hitachi磁盘都可以使用相同的PVID。
    成功完成配对后,我们必须确保集群的所有节点对于为其创建配对的磁盘都具有相同的PVID。 为此,请在所有站点B节点上运行以下命令。
    rmdev 0dl hdisk#
    cfgmgr

    这将确保站点B节点磁盘具有与站点A节点磁盘相同的PVID。
  7. 创建卷组,逻辑卷和文件系统。
    执行以下步骤在群集节点上创建卷组(VG),逻辑卷(LV)和文件系统:

    1. 确保所有节点上的VG的主号码相同。 要获得免费的主号码,请在所有节点上运行lvlstmajor命令,并选择一个在所有节点上可用的号码。
    2. 使用我们刚得到的主编号在站点A的node1的选定Hitachi磁盘上创建一个卷组,例如VG1。 为VG1创建逻辑卷和文件系统。
    3. 将VG导入具有相同主编号的所有其他节点。
  8. 将Hitachi磁盘添加到PowerHA SystemMirror资源组。
    至此,我们已经在Hitachi磁盘之间创建了镜像,并且该镜像处于活动状态。 此外,VG在所有站点上所有节点的所需磁盘上创建。 这样就完成了Hitachi镜像及其相应的AIX配置。

配置PowerHA SystemMirror以监视和管理Hitachi镜像池

执行以下步骤,将PowerHA SystemMirror配置为监视和管理Hitachi镜像池。

  1. 在shell提示符下运行smit sysmirror 。 然后,单击群集应用程序和资源资源配置HITACHI TRUECOPY(R)/ HUR复制的资源

    图14:Hitachi资源的PowerHA SystemMirror菜单

  2. 要定义Truecopy / HUR管理的复制资源,请完成以下步骤:
    移至“ 添加Hitachi Truecopy / HUR复制资源”选项,然后按Enter键(或直接使用smit tc_def )。

    图15:Hitachi资源的Change / Show菜单
    填写字段,如图15所示。
    资源名称字段中的值可以是您选择的任何名称。

  3. 要将TrueCopy复制的资源添加到PowerHA SystemMirror Enterprise Edition资源组,请完成以下步骤:
    1. 在命令行中,输入smitty hacmp。
    2. 在SMIT中,选择“ 集群应用程序和资源” →“ 资源组” →“ 添加资源组”
    3. 添加资源组后,我们需要向其中添加Hitachi资源。
    4. 在SMIT中,选择集群应用程序和资源→资源组→更改/显示资源组的所有资源和属性
    5. 确保在“资源组”配置页面上选择的卷组与TrueCopy / HUR复制资源中使用的卷组匹配。
    6. Truecopy复制资源条目显示在SMIT页面的底部。 此项是一个选择列表,显示了在上一步中创建的资源名称。

      图16:资源组属性

      图17:资源组属性(续)
      注意:卷组与您在上一步中创建的VG1相同。

      图18:资源组属性(续)

  4. 验证并同步集群,然后在所有节点上启动集群服务。

注意:
使用CCI进行配对操作时发生错误时,您可以通过参考以下日志文​​件来确定错误原因:
/ HORCM /日志* / curlog / horcmlog_HOST / horcm.log
*是实例号,而HOST是主机名。

翻译自: https://www.ibm.com/developerworks/aix/library/au-hitachi-truecopy-mirroring/index.html

powerha_使用IBM PowerHA SystemMirror的Hitachi TrueCopy镜像相关推荐

  1. powerha_在IBM PowerHA集群环境中实现存储数据的服务器端缓存

    本文介绍了如何将IBMPowerHA®集群配置为使用定制的应用程序脚本为应用程序提供高可用性(HA)时,如何在IBM®AIX®操作系统上启用服务器端存储数据缓存 . AIX提供AIX 7.1 TL4 ...

  2. powerha 7.1_通过SAN的IBM PowerHA 7.1心跳

    IBM PowerHA System Mirror for AIX是集群软件,当系统发生故障时,它可以将资源或资源组(应用程序)自动或手动移动到另一个IBMAIX®系统. 心跳和故障检测是在群集可用的 ...

  3. oracle rac和ha对比,IBM POWERHA和ORACLE RAC之间比较?

    RAC 1.实质上,oracle推出RAC(早期叫ops),强调的是其高可用性,而不是可伸缩性.要充分发挥RAC的性能,应用必须针对RAC的特点进行编程(数据分割及数据路由),否则性能反而下降.远的说 ...

  4. (转)PowerHA完全手册(一,二,三)

    PowerHA完全手册(一) 原文:http://www.talkwithtrend.com/Article/39889-----PowerHA完全手册(一) http://www.talkwitht ...

  5. PowerHA for AIX版本兼容性列表

    HACMP版本 支持的? 最低AIX等级 MISC 1.2 没有 3.2.5   2.1 没有 3.2.5   3.1.0 没有 3.2.5   3.1.1 没有 3.2.5 4.1.0 没有 4.1 ...

  6. ibm750服务器维护,IBM服务器IBM Power 750

    作为一款用于整合或高度虚拟化多重应用的服务器.Power 750 提供了极大的配置灵活性.以满足最苛刻的容量和增长要求.借助适用于 AIX®.IBM i 和 Linux® 的行业领先的 PowerVM ...

  7. 广西玉柴机器股份有限公司IBM建议方案

    广西玉柴机器股份有限公司 建议方案 目录 第一章 EPVision应用环境... 3 1.1. 项目背景... 3 1.2. EPVision运行环境要求... 3 1.3. 玉柴EPVISION硬件 ...

  8. aix服务器设备型号,IBM产品系列和AIX系统版本

    AIX系统版本 AIX 7.2 No supported AIX levels. AIX 7.1 Technology Level     Base Level     Recommended Lev ...

  9. 快照(Snapshot)

    一.定义: SNIA(存储网络行业协会)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像.快照可以是其所表示的数据的一个 ...

  10. Pacemaker详解

    一.前言 云计算与集群系统密不可分,作为分布式计算和集群计算的集大成者,云计算的基础设施必须通过集群进行管理控制,而作为拥有大量资源与节点的集群,必须具备一个强大的集群资源管理器(Cluster sy ...

最新文章

  1. [armv8-arch64]linux kernel 5.9的异常量表介绍(irq,fiq,sync,svc)
  2. 美国国防部选择VMware View用于全球作战系统
  3. fastdfs java上传文件_FastDFS java客户端文件上传demo
  4. php代码质量怎么提高,如何提高PHP代码的质量?第一部分 自动化工具
  5. Linux命令行性能监控工具大全
  6. java xml date_W3C XML 模式时间数据类型与java Date进行转换
  7. 零基础(转行,应届生、在校生)前端开发学习计划
  8. linux上的一些命令
  9. 集训8.21树状数组讲解
  10. windows process activation service 通信_Android四大组件——Service篇
  11. 《从零开始学Swift》学习笔记(Day 62)——Core Foundation框架之内存托管对象与非托管对象...
  12. 海康SDK数据类型转java
  13. 课程设计方案模板MySQL_MYSQL数据库课程设计.doc
  14. sql注入总结(一)
  15. 屏幕录制(Giphy Capture)并导出Gif动图
  16. 阿里妈妈返利比率的商品搜索API接口
  17. vue中用装饰器报错:Parsing error: Decorators cannot be used to decorate object literal properties
  18. 专门画像素图的软件_画像素的软件
  19. [YOLOv7/YOLOv5系列算法改进NO.21]CNN+Transformer——主干网络替换为又快又强的轻量化主干EfficientFormer
  20. python程序下载腾讯企业邮箱附件_python3使用腾讯企业邮箱发送邮件的实例

热门文章

  1. C/C++编程学习 - 第5周 ⑤ 人见人爱A+B
  2. 功夫熊猫里乌龟大师的一句名言
  3. 一文看懂GPIO口的八种工作原理
  4. 分享一些图片懒加载组件的设计思路
  5. 平台搭建---Hive使用介绍
  6. CAN负载率为什么不能太高?
  7. 基于阿里云LinkWAN实现设备上云(1) LinkWAN平台简析
  8. hexo的yilia主题之添加Valine评论系统
  9. ycf 梗_抖音三个汤勺放在筷子上是什么梗 抖音三个汤勺放在筷子上出处介绍[多图]...
  10. RoughSets属性约简算法