- GoBGP 中文入门指南
运维之美
网络javalinuxpython分布式
公众号关注「奇妙的Linux世界」设为「星标」,每天带你玩转Linux!GoBGP是使用Go语言开发的,运行在Linux系统上的开源工具,可以提供BGP协议的控制平面功能。与Quagga/FRRouting相比,GoBGP的性能更好,收敛时间更短,可以适用于更大规模的网络,比如充当IXP路由器。可以使用Python、C++等多种语言,通过gRPCAPI对GoBGP进行配置,当然也支持CLI。GoB
- Linux实现发送post请求
星夜兼程工作笔记
1.前言Linux下的http请求有许多种方式,其中curl库是C语言封装的一个强大的库,使用curl比封装socket更加方便。cJSON是一个小型的json封装库,可以把数据封装成json格式。本文介绍了这两种技术,并通过此技术完成了Linux下的http请求,同时把代码封装到quagga下,quagga运行时可以正常创建数据到ONOS。2.Linux下http请求实现2.1.curl简介cu
- Openwrt 下动态路由协议(quagga-OSPF)配置与验证
月光技术杂谈
OpenWRT网络openwrtOSPF动态路由协议
文章目录前言网络拓扑静态路由方式动态路由方式Openwrt下Quagga安装Quagga配置R1路由器zebra配置R1路由器ospf配置R2路由器zebra配置R2路由器ospf配置OSPF协议分析REF本文将在两台openwrt系统上安装配置quagga,搭建一套完整环境,来验证OSPF动态路由的基本功能和实际效果,验证过程中详细展示了OSPF控制台基本命令使用和配置前后路由信息、OSPF控制
- uni.scanCode不支持h5扫码(用拍照或者获取相册识别二维码和条码)
li@h
前端
用微信扫码uni.scanCode经过官网查询不支持h5经过网上查询可以引入QuaggaJS库来实现识别条码实现h5识别二维码我是参考无名咸鱼的博客QuaggaJS官网QuaggaJS官网地址quaggaJSGitHub地址用npm安装先安装npminstallquagga如有需要看详情去官网查看引入importQuaggafrom'quagga';//引用QuaggaJS库constQuagga
- FRR -- Process Architecture
confirmwz
#FRR
FRRinheriteditsoveralldesignarchitecturefromQuagga.ThechosenmodelforQuaggaisthatofasuiteofindependentdaemonsthatdoIPCviaUnixdomainsockets.Withineachdaemon,thearchitecturefollowstheevent-drivenmodel.FR
- quagga-zebra路由协议------ospf发送hello报文
the future c
router网络协议
root@ubuntu:~/router-code/quagga-1.2.4#find./-name'*.c'|xargsgrep"\bospf_ls_upd_send\b"-n--color=always./ospfd/ospf_packet.c:
- Ceph入门到精通-基于ECMP的多活负载均衡策略
瓦哥架构实战
ceph负载均衡运维
本文简单介绍一下,如何基于ECMP,使用Quagga+LVS+Keepalived构建多活负载均衡方案1.背景介绍负载均衡,主要用于大规模分布式集群下,提供高性能服务。为了给负载均衡器提供高可用,一般利用主备或者主主模式实现。主备模式即只有主负载均衡器提供负载均衡功能,当主负载均衡器出现异常时,自动切换到备负载均衡器,继续提供负载均衡功能。主主模式(也称之为双活负载均衡),两个负载均衡器同时提供负
- Ceph入门到精通-如何编译安装Quagga?
瓦哥架构实战
Ceph入门到精通ceph
Quagga1.理论部分1.1软件简介Quagga中文翻译斑驴,是一种先进的路由软件包,提供一套基于TCP/IP的路由协议。1.2斑驴的应用场景–使得操作系统变成专业的路由–使得操作系统具有与传统路由通过路由协议直接对接1.3斑驴支持的路由协议–BGP–OSPF–RIP–IS-IS–MPLS–LDP–BFD–PIM-SSM1.4斑驴与传统路由的区别–传统路由以提供所有路由协议的过程程序的方式运行–
- js和html5实现扫描条形码
perfiffer
前端js条形码html5手机js
最近项目有个功能,需要实现扫描条形码,最开始想到的是利用html5,发现html5有个getUserMedia属性,可以调用手机的摄像头,但是有个问题,网页中的摄像无法拉大光圈,焦距不好控制,近距离无法聚焦,拍出来的条形码模糊不清无法解析。继续搜索,发现了一个js的扫描条形码插件,quagga.js网址为:https://serratus.github.io/quaggaJS/此插件提供了三种方式
- uniapp实现条码扫描 可开闪光灯,原生H5调用,不需要任何sdk。
迪迦
uniappuni-app
主要思路使用QuaggaJs这个库。调用摄像头使用的navigator.mediaDevices.getUserMedia这个H5的api。通过video和canvas把摄像头获取到的数据展现到页面上,同时调用监听Quagga解析。获取设备摄像头权限,用于后续开启摄像头。创建video元素显示摄像头画面,和canvas元素用于QuaggaJS进行图像处理和解码。初始化QuaggaJS,设置解码参数
- 使用 Quagga 将CentOS 变成 路由器
研发小峰
OSPFhttps://linux.cn/article-4232-1.htmlhttps://linux.cn/article-4232-2.htmlBGPhttps://linux.cn/article-4609-1.htmlhttps://linux.cn/article-4609-2.htmlhttps://linux.cn/article-6468-1.html
- vtysh 参数_CentOS7下利用FRR路由套件实现OSPF动态路由组网
小透明熊熊
vtysh参数
FRRouting(FRR)简介FRR是一个路由软件套件,它衍生自Quagga,并在GNUGPL2许可下分发。与Quagga一样,它为类Unix平台提供了所有主要路由协议的实现,例如OSPF、路由信息协议(RoutingInformationProtocol)(RIP)、边界网关协议(BorderGatewayProtocol)(BGP)和中间系统到中间系统(Intermediatesystem-
- 服务器开发系列(四)——网络基础
晓dawn
机器视觉服务器
系列文章目录服务器开发系列(一)——计算机硬件服务器开发系列(二)——JetsonXavierNX服务器开发系列(三)——Linux与Windows操作系统基础功能对比文章目录系列文章目录前言一、网络基础二、TCP/IP协议族三、局域网四、无线网络五、路由器静态路由之路由器动态路由器架设:quagga(zebra+ripd)六、Linux常用网络命令网络启动方面类命令:网络状态监控类命令:网络故障
- 【vue】 上传快递单条形码 识别单号
吃肉肉不吃肉肉
第三方插件:quagga.js二维码插件:qrcodejs2.js(本篇未用到)安装条形码插件库npmiquagga-s-d在需要的页面引入:importQuaggafrom'quagga'//条形码importQRCodefrom'qrcodejs2'点击上传快递单条形码(识别单号)//识别物流信息thumbupdateUpload(params){constfile=params.fileco
- linux怎么查看bgp状态,在CentOS中制作BGP路由的教程
你在干嘛a
linux怎么查看bgp状态
Quagga是一个开源路由软件套件。在这个教程中,我将会重点讲讲如何把一个Linux系统变成一个BGP路由器,还是使用Quagga,演示如何建立BGP与其它BGP路由器对等。在我们进入细节之前,一些BGP的背景知识还是必要的。边界网关协议(即BGP)是互联网的域间路由协议的实际标准。在BGP术语中,全球互联网是由成千上万相关联的自治系统(AS)组成,其中每一个AS代表每一个特定运营商提供的一个网络
- Fiori-like Prototype Demo (Barcode with quaggaJS)
Meellor
智能手机设备模拟:专业条码枪扫描条形码功能。QuaggaJSSolutions区分是否启用:SSL配置。WorkwithSSL:barcode-https-min.gifWorkwithinvalidSSL:barcode-none-https-min.gif体验地址:BarcodewithquaggaJS参考资料:1.BarcodescanningwithdevicecamerainSAPUI5
- ubuntu 16.04编译qca sdk出现aclocal-1.15: command not found问题解决方案
wellnw
qsdkubuntu
Ubuntu编译qcasdk出现如下错误]:Enteringdirectory`/home/wellnw/quagga/quagga'CDPATH="${ZSH_VERSION+.}:"&&cd.&&/bin/bash/home/wellnw/quagga/quagga/missingaclocal-1.15-Im4/home/wellnw/quagga/quagga/missing:line81
- quagga代码分析一
wqx_163
quagga-cli
命令节点类型定义:只需要将新增的命令节点加入该枚举中即可。enumnode_type{AUTH_NODE,/*Authenticationmodeofvtyinterface.*/RESTRICTED_NODE,/*Restrictedviewmode*/VIEW_NODE,/*Viewnode.Defaultmodeofvtyinterface.*/AUTH_ENABLE_NODE,/*Auth
- quagga中cli命令分析
wqx_163
quagga-cli
在quagga的基础上新增加命令视图定义命令视图类型,enumnode_type;定义命令视图结构,structcmd_node;Staticstructcmd_node视图名称={命令视图类型,该视图下的提示符字符串,};安装命令视图,install_node(),install_default();Install_node(视图名称,回调函数)Install_default(视图类型)在已有的
- quagga 安装详解以及相关问题解决
BabyBirdToFly
quagga安装虚拟路由器的安装
安装步骤:1.下载quagga安装包:quagga.zip2.解压:unzip..zip3.cdquagga4.配置:./configure--sysconfdir=/root/cfg--enable-vtysh--enable-zebra--enable-isisd--enable-user='root'--enable-group='root'--enable-vty-group='root'
- 使用quaggaJS识别图片中的条形码
晨光--geeker
前端javascripthtml5
使用quaggaJS识别图片中的条形码quaggaJS是一个纯JS的插件,用于识别图片中的条形码,很方便。一般用于移动端拍照识别,也可以在网页端上传图片识别。github下载地址首先要指定正确格式的条形码,常见的条形码编码类型有EAN和CODE128。另外,并不是所有图片中的条形码都可以被识别出来,而且正确率也不是100%。下面是识别网页上传图片中条码的方法。Document识别$(functio
- Quagga简介、安装、配置说明
hello&Code
Quagga软件原名是Zebra是由一个日本开发团队编写的一个以GNU版权方式发布的软件。可以使用Quagga将linux机器打造成一台功能完备的路由器。模块化设计:Quagga基于模块化方案的设计,即对每一个路由协议使用单独的守护进程。运行速度快:因为使用了模块化的设计,使得Quagga的运行速度比一般的路由选择程序要快。可靠性高:在所有软件模块都失败的情况下,路由器可以继续保持连接并且daem
- shell脚本个人总结
wqx_163
shell
- linux配置静态路由实现路由转发和quagga实现动态路由实验
jalen_king
网络及编程
本文介绍2种linux配置路由实现。一、linux配置静态路由实现路由转发1.启用Linux路由功能1.配置文件在/etc/sysctl.conf里的net.ipv4.ip_forwartd=1启用路由功能[root@localhost~]#cat/proc/sys/net/ipv4/ip_forward0ipv4/ip_forward=0表示没有启用路由功能[root@localhost~]#e
- 想玩路由器吗?使用 Quagga 将你的 CentOS 变成 OSPF 路由器
weixin_34413065
操作系统网络运维
想玩路由器吗?使用Quagga将你的CentOS变成OSPF路由器Quagga是一个开源路由软件套件,可以将Linux变成支持如RIP、OSPF、BGP和IS-IS等主要路由协议的路由器。它具有对IPv4和IPv6的完整支持,并支持路由/前缀过滤。Quagga可以是你生命中的救星,以防你的生产路由器一旦宕机,而你没有备用的设备而只能等待更换。通过适当的配置,Quagga甚至可以作为生产路由器。本教
- 手动添加本地路由表并用Quagga+ospf通知其它路由
flfihpv259
linux
文章目录参考文章:一路由设置1.参数说明2查询设置二动态路由的设置实验参考文章:Linux下使用Quagga搭建软路由-OSPFv2学习鳥哥的Linux私房菜一路由设置1.参数说明root@anzye:#route-n内核IP路由表目标网关子网掩码标志跃点引用使用接口0.0.0.0192.168.2.2540.0.0.0UG60000wlan010.42.0.00.0.0.0255.255.255
- (OK) Fedora 24 开机自动启动脚本 - rc.local - rc-local.service
ztguang
Linux普通应用Linux—03—系统管理OK
vim/etc/rc.d/rc.local#!/bin/bashsystemctlstartdocker.service/root/hsl-win7-ns3-root.sh6destroy/root/hsl-win7-ns3-root.sh6destroy/root/hsl_install_6_docker-centos-quagga.shdestroy/root/hsl_install_6_do
- QUAGGA 线程机制解析
码中飞翔
quagga
文章目录QUAGGA线程机制解析1引言1.1说在前面的话1.2QUAGGA线程机制简介2重要的结构体解析2.1线程结构体thread线程对CPU使用的情况structcpu_thread_history线程管理结构thread_master3事件主循环顺序3.1源码解析3.2线程之间状态转换图3.3线程调度时序图4API的使用4.1主要的外部接口4.2内部接口5总结QUAGGA线程机制解析1引言1
- quagga配置ospf协议md5认证
李耳-lier
linux
找到quagga的ospfd组件的配置文件ospfd.conf,在这个配置文件中加入以下几行:interfaceINTERFACEIDipospfauthenticationmessage-digestipospfmessage-digest-keyKEYIDmd5YOURKEY其中:INTERFACEID为要开启quaggaospf协议的本机网卡接口名,如eth0,eth1等KEYID为md5认
- Quagga 路由软件学习(by quqi99)
quqi99
OpenStackNetworking
Quagga路由软件学习(byquqi99)作者:张华发表于:2013-07-07版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明http://blog.csdn.net/quqi99)Quagga是一个开源的基于Zebra实现了RIP,OSPF,BGP的动态路由软件。它提供的CLI命令和CiscoIOS类似。1安装再下载源码,解压后执行下列命令:sudoyu
- 对于规范和实现,你会混淆吗?
yangshangchuan
HotSpot
昨晚和朋友聊天,喝了点咖啡,由于我经常喝茶,很长时间没喝咖啡了,所以失眠了,于是起床读JVM规范,读完后在朋友圈发了一条信息:
JVM Run-Time Data Areas:The Java Virtual Machine defines various run-time data areas that are used during execution of a program. So
- android 网络
百合不是茶
网络
android的网络编程和java的一样没什么好分析的都是一些死的照着写就可以了,所以记录下来 方便查找 , 服务器使用的是TomCat
服务器代码; servlet的使用需要在xml中注册
package servlet;
import java.io.IOException;
import java.util.Arr
- [读书笔记]读法拉第传
comsci
读书笔记
1831年的时候,一年可以赚到1000英镑的人..应该很少的...
要成为一个科学家,没有足够的资金支持,很多实验都无法完成
但是当钱赚够了以后....就不能够一直在商业和市场中徘徊......
- 随机数的产生
沐刃青蛟
随机数
c++中阐述随机数的方法有两种:
一是产生假随机数(不管操作多少次,所产生的数都不会改变)
这类随机数是使用了默认的种子值产生的,所以每次都是一样的。
//默认种子
for (int i = 0; i < 5; i++)
{
cout<<
- PHP检测函数所在的文件名
IT独行者
PHP函数
很简单的功能,用到PHP中的反射机制,具体使用的是ReflectionFunction类,可以获取指定函数所在PHP脚本中的具体位置。 创建引用脚本。
代码:
[php]
view plain
copy
// Filename: functions.php
<?php&nbs
- 银行各系统功能简介
文强chu
金融
银行各系统功能简介 业务系统 核心业务系统 业务功能包括:总账管理、卡系统管理、客户信息管理、额度控管、存款、贷款、资金业务、国际结算、支付结算、对外接口等 清分清算系统 以清算日期为准,将账务类交易、非账务类交易的手续费、代理费、网络服务费等相关费用,按费用类型计算应收、应付金额,经过清算人员确认后上送核心系统完成结算的过程 国际结算系
- Python学习1(pip django 安装以及第一个project)
小桔子
pythondjangopip
最近开始学习python,要安装个pip的工具。听说这个工具很强大,安装了它,在安装第三方工具的话so easy!然后也下载了,按照别人给的教程开始安装,奶奶的怎么也安装不上!
第一步:官方下载pip-1.5.6.tar.gz, https://pypi.python.org/pypi/pip easy!
第二部:解压这个压缩文件,会看到一个setup.p
- php 数组
aichenglong
PHP排序数组循环多维数组
1 php中的创建数组
$product = array('tires','oil','spark');//array()实际上是语言结构而不 是函数
2 如果需要创建一个升序的排列的数字保存在一个数组中,可以使用range()函数来自动创建数组
$numbers=range(1,10)//1 2 3 4 5 6 7 8 9 10
$numbers=range(1,10,
- 安装python2.7
AILIKES
python
安装python2.7
1、下载可从 http://www.python.org/进行下载#wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
2、复制解压
#mkdir -p /opt/usr/python
#cp /opt/soft/Python-2
- java异常的处理探讨
百合不是茶
JAVA异常
//java异常
/*
1,了解java 中的异常处理机制,有三种操作
a,声明异常
b,抛出异常
c,捕获异常
2,学会使用try-catch-finally来处理异常
3,学会如何声明异常和抛出异常
4,学会创建自己的异常
*/
//2,学会使用try-catch-finally来处理异常
- getElementsByName实例
bijian1013
element
实例1:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/x
- 探索JUnit4扩展:Runner
bijian1013
java单元测试JUnit
参加敏捷培训时,教练提到Junit4的Runner和Rule,于是特上网查一下,发现很多都讲的太理论,或者是举的例子实在是太牵强。多搜索了几下,搜索到两篇我觉得写的非常好的文章。
文章地址:http://www.blogjava.net/jiangshachina/archive/20
- [MongoDB学习笔记二]MongoDB副本集
bit1129
mongodb
1. 副本集的特性
1)一台主服务器(Primary),多台从服务器(Secondary)
2)Primary挂了之后,从服务器自动完成从它们之中选举一台服务器作为主服务器,继续工作,这就解决了单点故障,因此,在这种情况下,MongoDB集群能够继续工作
3)挂了的主服务器恢复到集群中只能以Secondary服务器的角色加入进来
2
- 【Spark八十一】Hive in the spark assembly
bit1129
assembly
Spark SQL supports most commonly used features of HiveQL. However, different HiveQL statements are executed in different manners:
1. DDL statements (e.g. CREATE TABLE, DROP TABLE, etc.)
- Nginx问题定位之监控进程异常退出
ronin47
nginx在运行过程中是否稳定,是否有异常退出过?这里总结几项平时会用到的小技巧。
1. 在error.log中查看是否有signal项,如果有,看看signal是多少。
比如,这是一个异常退出的情况:
$grep signal error.log
2012/12/24 16:39:56 [alert] 13661#0: worker process 13666 exited on s
- No grammar constraints (DTD or XML schema).....两种解决方法
byalias
xml
方法一:常用方法 关闭XML验证
工具栏:windows => preferences => xml => xml files => validation => Indicate when no grammar is specified:选择Ignore即可。
方法二:(个人推荐)
添加 内容如下
<?xml version=
- Netty源码学习-DefaultChannelPipeline
bylijinnan
netty
package com.ljn.channel;
/**
* ChannelPipeline采用的是Intercepting Filter 模式
* 但由于用到两个双向链表和内部类,这个模式看起来不是那么明显,需要仔细查看调用过程才发现
*
* 下面对ChannelPipeline作一个模拟,只模拟关键代码:
*/
public class Pipeline {
- MYSQL数据库常用备份及恢复语句
chicony
mysql
备份MySQL数据库的命令,可以加选不同的参数选项来实现不同格式的要求。
mysqldump -h主机 -u用户名 -p密码 数据库名 > 文件
备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。
mysqldump -–add-drop-table -uusername -ppassword databasename > ba
- 小白谈谈云计算--基于Google三大论文
CrazyMizzz
Google云计算GFS
之前在没有接触到云计算之前,只是对云计算有一点点模糊的概念,觉得这是一个很高大上的东西,似乎离我们大一的还很远。后来有机会上了一节云计算的普及课程吧,并且在之前的一周里拜读了谷歌三大论文。不敢说理解,至少囫囵吞枣啃下了一大堆看不明白的理论。现在就简单聊聊我对于云计算的了解。
我先说说GFS
&n
- hadoop 平衡空间设置方法
daizj
hadoopbalancer
在hdfs-site.xml中增加设置balance的带宽,默认只有1M:
<property>
<name>dfs.balance.bandwidthPerSec</name>
<value>10485760</value>
<description&g
- Eclipse程序员要掌握的常用快捷键
dcj3sjt126com
编程
判断一个人的编程水平,就看他用键盘多,还是鼠标多。用键盘一是为了输入代码(当然了,也包括注释),再有就是熟练使用快捷键。 曾有人在豆瓣评
《卓有成效的程序员》:“人有多大懒,才有多大闲”。之前我整理了一个
程序员图书列表,目的也就是通过读书,让程序员变懒。 程序员作为特殊的群体,有的人可以这么懒,懒到事情都交给机器去做,而有的人又可以那么勤奋,每天都孜孜不倦得
- Android学习之路
dcj3sjt126com
Android学习
转自:http://blog.csdn.net/ryantang03/article/details/6901459
以前有J2EE基础,接触JAVA也有两三年的时间了,上手Android并不困难,思维上稍微转变一下就可以很快适应。以前做的都是WEB项目,现今体验移动终端项目,让我越来越觉得移动互联网应用是未来的主宰。
下面说说我学习Android的感受,我学Android首先是看MARS的视
- java 遍历Map的四种方法
eksliang
javaHashMapjava 遍历Map的四种方法
转载请出自出处:
http://eksliang.iteye.com/blog/2059996
package com.ickes;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
/**
* 遍历Map的四种方式
- 【精典】数据库相关相关
gengzg
数据库
package C3P0;
import java.sql.Connection;
import java.sql.SQLException;
import java.beans.PropertyVetoException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class DBPool{
- 自动补全
huyana_town
自动补全
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml&quo
- jquery在线预览PDF文件,打开PDF文件
天梯梦
jquery
最主要的是使用到了一个jquery的插件jquery.media.js,使用这个插件就很容易实现了。
核心代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.
- ViewPager刷新单个页面的方法
lovelease
androidviewpagertag刷新
使用ViewPager做滑动切换图片的效果时,如果图片是从网络下载的,那么再子线程中下载完图片时我们会使用handler通知UI线程,然后UI线程就可以调用mViewPager.getAdapter().notifyDataSetChanged()进行页面的刷新,但是viewpager不同于listview,你会发现单纯的调用notifyDataSetChanged()并不能刷新页面
- 利用按位取反(~)从复合枚举值里清除枚举值
草料场
enum
以 C# 中的 System.Drawing.FontStyle 为例。
如果需要同时有多种效果,
如:“粗体”和“下划线”的效果,可以用按位或(|)
FontStyle style = FontStyle.Bold | FontStyle.Underline;
如果需要去除 style 里的某一种效果,
- Linux系统新手学习的11点建议
刘星宇
编程工作linux脚本
随着Linux应用的扩展许多朋友开始接触Linux,根据学习Windwos的经验往往有一些茫然的感觉:不知从何处开始学起。这里介绍学习Linux的一些建议。
一、从基础开始:常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基础的。例如:为什么我使用一个命令的时候,系统告诉我找不到该目录,我要如何限制使用者的权限等问题,这些问题其实都不是很难的,只要了解了 Linu
- hibernate dao层应用之HibernateDaoSupport二次封装
wangzhezichuan
DAOHibernate
/**
* <p>方法描述:sql语句查询 返回List<Class> </p>
* <p>方法备注: Class 只能是自定义类 </p>
* @param calzz
* @param sql
* @return
* <p>创建人:王川</p>
* <p>创建时间:Jul