2018-11-23 11:41:41 liuyifeng1920 阅读数 1661
  • linux C++通讯架构实战 卷1

    这是一门linux下c++通讯架构实战课程,针对c/c++语言已经掌握的很熟并希望进一步深造以将来用c++在linux下从事网络通讯领域/网络服务器的开发和架构工作。 这门课程学习难度颇高但也有着极其优渥的薪水(最少30K月薪,最高可达60-80K月薪),这门课程,会先从nginx源码的分析和讲解开始,逐步开始书写属于自己的高性能服务器框架代码,完善个人代码库,这些,将会是您日后能取得高薪的重要筹码。 本课程原计划带着大家逐行写代码,但因为代码实在过于复杂和精细,带着写代码可能会造成每节课至少要4~5小时的超长时间,所以老师会在课前先写好代码,主要的时间花费在逐行讲解这些代码上,这一点望同学们周知。如果你觉得非要老师领着写代码才行的话,老师会觉得你当前可能学习本门课程会比较吃力,请不要购买本课程,以免听不懂课程并给老师差评,差评也会非常影响老师课程的销售并造成其他同学的误解。 这门课程要求您具备下面的技能: (1)对c/c++语言掌握的非常熟练,语言本身已经不是继续学习的障碍,并不要求您一定熟悉网络或者linux; (2)对网络通讯架构领域有兴趣、勇于挑战这个高难度的开发领域并期望用大量的付出换取高薪; 在这门课程中,实现了一个完整的项目,其中包括通讯框架和业务逻辑框架,浓缩总结起来包括如下几点: (1)项目本身是一个极完整的多线程高并发的服务器程序; (2)按照包头包体格式正确的接收客户端发送过来的数据包, 完美解决收包时的数据粘包问题; (3)根据收到的包的不同来执行不同的业务处理逻辑; (4)把业务处理产生的结果数据包正确返回给客户端; 本项目用到的主要开发技术和特色包括: (1)epoll高并发通讯技术,用到的触发模式是epoll中的水平触发模式【LT】; (2)自己写了一套线程池来处理业务逻辑,调用适当的业务逻辑处理函数处理业务并返回给客户端处理结果; (3)线程之间的同步技术包括互斥量,信号量等等; (4)连接池中连接的延迟回收技术,这是整个项目中的精华技术,极大程度上消除诸多导致服务器程序工作不稳定的因素; (5)专门处理数据发送的一整套数据发送逻辑以及对应的发送线程; (6)其他次要技术,包括信号、日志打印、fork()子进程、守护进程等等;

    2921 人正在学习 去看看 王健伟

设置linux服务器时间自动同步

公司项目中调用接口,其中有一些接口需要以当前时间加密,接口要求误差时间不能超过一分钟,但是LINUX服务器长时间运行,时间会不准确导致接口调用失败。

ntp常用服务器:
中国国家授时中心:210.72.145.44
NTP服务器(上海) :ntp.api.bz
美国:time.nist.gov
复旦:ntp.fudan.edu.cn
微软公司授时主机(美国) :time.windows.com
台警大授时中心(台湾):asia.pool.ntp.org

我这次用的是上海的 ntp.api.bz 发现美国的这个本机和linux都ping不通。

[root@localhost /]# ntpdate ntp.api.bz
23 Nov 11:25:55 ntpdate[17145]: adjust time server 47.98.146.45 offset -0.002469 sec
[root@localhost /]# cron
crond crontab
[root@localhost /]# crontab -e
先手动同步一下
然后放入定时任务中每隔10分钟执行一次

*/10 * * * * ntpdate ntp.api.bz
然后重启定时任务
[root@localhost /]# service crond restart
Stopping crond: [ OK ]
Starting crond: [ OK ]

查询是否安装ntp,若没有安装的话使用yum进行安装
rpm -q ntp
yum –y install ntp

2013-12-25 13:43:58 majinfei 阅读数 581
  • linux C++通讯架构实战 卷1

    这是一门linux下c++通讯架构实战课程,针对c/c++语言已经掌握的很熟并希望进一步深造以将来用c++在linux下从事网络通讯领域/网络服务器的开发和架构工作。 这门课程学习难度颇高但也有着极其优渥的薪水(最少30K月薪,最高可达60-80K月薪),这门课程,会先从nginx源码的分析和讲解开始,逐步开始书写属于自己的高性能服务器框架代码,完善个人代码库,这些,将会是您日后能取得高薪的重要筹码。 本课程原计划带着大家逐行写代码,但因为代码实在过于复杂和精细,带着写代码可能会造成每节课至少要4~5小时的超长时间,所以老师会在课前先写好代码,主要的时间花费在逐行讲解这些代码上,这一点望同学们周知。如果你觉得非要老师领着写代码才行的话,老师会觉得你当前可能学习本门课程会比较吃力,请不要购买本课程,以免听不懂课程并给老师差评,差评也会非常影响老师课程的销售并造成其他同学的误解。 这门课程要求您具备下面的技能: (1)对c/c++语言掌握的非常熟练,语言本身已经不是继续学习的障碍,并不要求您一定熟悉网络或者linux; (2)对网络通讯架构领域有兴趣、勇于挑战这个高难度的开发领域并期望用大量的付出换取高薪; 在这门课程中,实现了一个完整的项目,其中包括通讯框架和业务逻辑框架,浓缩总结起来包括如下几点: (1)项目本身是一个极完整的多线程高并发的服务器程序; (2)按照包头包体格式正确的接收客户端发送过来的数据包, 完美解决收包时的数据粘包问题; (3)根据收到的包的不同来执行不同的业务处理逻辑; (4)把业务处理产生的结果数据包正确返回给客户端; 本项目用到的主要开发技术和特色包括: (1)epoll高并发通讯技术,用到的触发模式是epoll中的水平触发模式【LT】; (2)自己写了一套线程池来处理业务逻辑,调用适当的业务逻辑处理函数处理业务并返回给客户端处理结果; (3)线程之间的同步技术包括互斥量,信号量等等; (4)连接池中连接的延迟回收技术,这是整个项目中的精华技术,极大程度上消除诸多导致服务器程序工作不稳定的因素; (5)专门处理数据发送的一整套数据发送逻辑以及对应的发送线程; (6)其他次要技术,包括信号、日志打印、fork()子进程、守护进程等等;

    2921 人正在学习 去看看 王健伟

一、搭建时间同步服务器
1、编译安装ntp server

rpm -qa | grep ntp
若没有找到,则说明没有安装ntp包,从光盘上找到ntp包,使用
rpm -Uvh ntp***.rpm
进行安装
2、修改ntp.conf配置文件
vi /etc/ntp.conf
①、第一种配置:允许任何IP的客户机都可以进行时间同步
将“restrict default nomodify notrap noquery”这行修改成:
restrict default nomodify notrap
配置文件示例:/etc/ntp.conf
②、第二种配置:只允许192.168.211.***网段的客户机进行时间同步
在restrict default nomodify notrap noquery(表示默认拒绝所有IP的时间同步)之后增加一行:
restrict 192.168.211.0 mask 255.255.255.0 nomodify notrap
3、启动ntp服务
service ntpd start
开机启动服务
chkconfig ntpd on
4、ntpd启动后,客户机要等几分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。


二、配置时间同步客户机

手工执行 ntpdate <ntp server> 来同步

ntpdate 192.168.xxxx


如果我们不想搭建时间服务器的话,我们可以同步ubuntu的时间服务器  ntp.ubuntu.com

2010-11-27 14:46:59 weixin_34121282 阅读数 11
  • linux C++通讯架构实战 卷1

    这是一门linux下c++通讯架构实战课程,针对c/c++语言已经掌握的很熟并希望进一步深造以将来用c++在linux下从事网络通讯领域/网络服务器的开发和架构工作。 这门课程学习难度颇高但也有着极其优渥的薪水(最少30K月薪,最高可达60-80K月薪),这门课程,会先从nginx源码的分析和讲解开始,逐步开始书写属于自己的高性能服务器框架代码,完善个人代码库,这些,将会是您日后能取得高薪的重要筹码。 本课程原计划带着大家逐行写代码,但因为代码实在过于复杂和精细,带着写代码可能会造成每节课至少要4~5小时的超长时间,所以老师会在课前先写好代码,主要的时间花费在逐行讲解这些代码上,这一点望同学们周知。如果你觉得非要老师领着写代码才行的话,老师会觉得你当前可能学习本门课程会比较吃力,请不要购买本课程,以免听不懂课程并给老师差评,差评也会非常影响老师课程的销售并造成其他同学的误解。 这门课程要求您具备下面的技能: (1)对c/c++语言掌握的非常熟练,语言本身已经不是继续学习的障碍,并不要求您一定熟悉网络或者linux; (2)对网络通讯架构领域有兴趣、勇于挑战这个高难度的开发领域并期望用大量的付出换取高薪; 在这门课程中,实现了一个完整的项目,其中包括通讯框架和业务逻辑框架,浓缩总结起来包括如下几点: (1)项目本身是一个极完整的多线程高并发的服务器程序; (2)按照包头包体格式正确的接收客户端发送过来的数据包, 完美解决收包时的数据粘包问题; (3)根据收到的包的不同来执行不同的业务处理逻辑; (4)把业务处理产生的结果数据包正确返回给客户端; 本项目用到的主要开发技术和特色包括: (1)epoll高并发通讯技术,用到的触发模式是epoll中的水平触发模式【LT】; (2)自己写了一套线程池来处理业务逻辑,调用适当的业务逻辑处理函数处理业务并返回给客户端处理结果; (3)线程之间的同步技术包括互斥量,信号量等等; (4)连接池中连接的延迟回收技术,这是整个项目中的精华技术,极大程度上消除诸多导致服务器程序工作不稳定的因素; (5)专门处理数据发送的一整套数据发送逻辑以及对应的发送线程; (6)其他次要技术,包括信号、日志打印、fork()子进程、守护进程等等;

    2921 人正在学习 去看看 王健伟

安装环境:CentOS 5.3企业环境

一、    搭建时间同步服务器
a、前言:NTP服务器【Network Time Protocol(NTP)】是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒)。
b、安装背景* 随着公司的业务不断扩大,服务器数量增加,为了方便统一各服务器时间,适合拥有自己的时间服务器。下面我们就开始ntp之旅。
 
下载的源码包放在/usr/src下面,安装好的应用程序放在/usr/local/下。
1、编译安装ntp server (服务器端配置)
首先下载ntp稳定版本到/usr/src
cd /usr/src
tar zxvf ntp -4.2.6.tar.gz
cd ntp-4.2.6/
./configure --prefix=/usr/local/ntp-4.2.6 --enable-all-clocks --enable-parse-clocks
make clean && make check && make && make install
请从ntp官方下载网页(http://www.ntp.org/downloads.html)寻找稳定版本下载。
2、修改ntp.conf配置文件
cp  /etp/ntp.conf /etc/ntp.conf.bak
vi /etc/ntp.conf
a、第一种配置:允许任何IP的客户机都可以进行时间同步
将“restrict default nomodify notrap noquery”这行修改成:
restrict default nomodify
b、第二种配置:只允许192.168.1.***网段的客户机进行时间同步
在restrict default nomodify notrap noquery(表示默认拒绝所有IP的时间同步)之后增加一行:
restrict 192.168.1.0 mask 255.255.255.0 nomodify
c、修改:上级时间服务器
server   202.162.32.12 prefer (优先选择,根据你附近的网络选择。)
restrict  202.162.32.12
server   210.72.145.44 prefer (中国国家授时中心的时间服务器IP地址)
restrict   210.72.145.44
server   pool.ntp.org
restrict   pool.ntp.org
3、以守护进程启动ntpd
/usr/local/ntp-4.2.6/bin/ntpd -c /etc/ntp.conf -p /tmp/ntpd.pid –l /var/log/ntp.log
(注意*: ntpd启动后,客户机要等几分钟再与其进行时间同步,否则会提示“no server suitable for synchronization found”错误。)
4、配置时间同步客户机
crontab -e
增加一行,在每天的6点10分与时间同步服务器进行同步
10 06 * * * /usr/sbin/ntpdate ntp-server的ip >>/usr/local/logs/crontab/ntpdate.log
备注:如果客户机没有ntpdate,可以yum –y install ntp 即可!
5、以下是ntp服务器配置文件内容:(仅供参考)
一、cat /etc/ntp.conf文件如下配置:
# permit the source to query or modify the service on this system.
# restrict default nomodify notrap noquery
 
#######allow all host access
restrict default nomodify   //(默认允许所有,可以只允许某个网段,或者在iptables里面做限制。)
 
# --- OUR TIMESERVERS -----
server   202.162.32.12 prefer 
restrict  202.162.32.12
 
server    210.72.145.44 prefer 
restrict   210.72.145.44
 
server    pool.ntp.org
restrict   pool.ntp.org
 
server  127.127.1.0     # local clock
fudge   127.127.1.0    stratum 5
 
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
 
# PLEASE DO NOT USE THE DEFAULT VALUES HERE. Pick your own, or remote
# systems might be able to reset your clock at will. Note also that
# ntpd is started with a -A flag, disabling authentication, that
# will have to be removed as well.
#
keys         /etc/ntp/keys
 
#ntp logs path
logfile  /var/log/ntp.log     

完!欢迎指正!

2019-05-16 16:39:52 taoleialskdjfhg 阅读数 107
  • linux C++通讯架构实战 卷1

    这是一门linux下c++通讯架构实战课程,针对c/c++语言已经掌握的很熟并希望进一步深造以将来用c++在linux下从事网络通讯领域/网络服务器的开发和架构工作。 这门课程学习难度颇高但也有着极其优渥的薪水(最少30K月薪,最高可达60-80K月薪),这门课程,会先从nginx源码的分析和讲解开始,逐步开始书写属于自己的高性能服务器框架代码,完善个人代码库,这些,将会是您日后能取得高薪的重要筹码。 本课程原计划带着大家逐行写代码,但因为代码实在过于复杂和精细,带着写代码可能会造成每节课至少要4~5小时的超长时间,所以老师会在课前先写好代码,主要的时间花费在逐行讲解这些代码上,这一点望同学们周知。如果你觉得非要老师领着写代码才行的话,老师会觉得你当前可能学习本门课程会比较吃力,请不要购买本课程,以免听不懂课程并给老师差评,差评也会非常影响老师课程的销售并造成其他同学的误解。 这门课程要求您具备下面的技能: (1)对c/c++语言掌握的非常熟练,语言本身已经不是继续学习的障碍,并不要求您一定熟悉网络或者linux; (2)对网络通讯架构领域有兴趣、勇于挑战这个高难度的开发领域并期望用大量的付出换取高薪; 在这门课程中,实现了一个完整的项目,其中包括通讯框架和业务逻辑框架,浓缩总结起来包括如下几点: (1)项目本身是一个极完整的多线程高并发的服务器程序; (2)按照包头包体格式正确的接收客户端发送过来的数据包, 完美解决收包时的数据粘包问题; (3)根据收到的包的不同来执行不同的业务处理逻辑; (4)把业务处理产生的结果数据包正确返回给客户端; 本项目用到的主要开发技术和特色包括: (1)epoll高并发通讯技术,用到的触发模式是epoll中的水平触发模式【LT】; (2)自己写了一套线程池来处理业务逻辑,调用适当的业务逻辑处理函数处理业务并返回给客户端处理结果; (3)线程之间的同步技术包括互斥量,信号量等等; (4)连接池中连接的延迟回收技术,这是整个项目中的精华技术,极大程度上消除诸多导致服务器程序工作不稳定的因素; (5)专门处理数据发送的一整套数据发送逻辑以及对应的发送线程; (6)其他次要技术,包括信号、日志打印、fork()子进程、守护进程等等;

    2921 人正在学习 去看看 王健伟

服务端:

yum install -y ntpdate
yum install -y ntp

/etc/ntp.conf 为时间服务器配置文件(先备份一下,虽然没啥用)

修改配置vi /etc/ntp.conf 

最终配置文件如下:

# For more information about this file, see the man pages
# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).

driftfile /var/lib/ntp/drift

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1 
restrict -6 ::1

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 172.16.1.0 mask 255.255.255.0  nomodify notrap # 允许同步时间的 网段

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10

#broadcast 192.168.1.255 autokey        # broadcast server
#broadcastclient                        # broadcast client
#broadcast 224.0.1.1 autokey            # multicast server
#multicastclient 224.0.1.1              # multicast client
#manycastserver 239.255.254.254         # manycast server
#manycastclient 239.255.254.254 autokey # manycast client

# Enable public key cryptography.
#crypto

includefile /etc/ntp/crypto/pw

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography. 
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8

# Enable writing of statistics records.
#statistics clockstats cryptostats loopstats peerstats

启动服务 service ntpd start

netstat -tlunp | grep ntp  查看服务是否启动

watch ntpq -p 查看啥啥啥

客户端:

    安装ntpdate,然后修改linux自带定时配置文件,填写命令

yum install -y ntpdate
vi /etc/crontab
0 2 * * * root ntpdate -u ip

 

2016-11-21 17:58:57 qinxuefly 阅读数 486
  • linux C++通讯架构实战 卷1

    这是一门linux下c++通讯架构实战课程,针对c/c++语言已经掌握的很熟并希望进一步深造以将来用c++在linux下从事网络通讯领域/网络服务器的开发和架构工作。 这门课程学习难度颇高但也有着极其优渥的薪水(最少30K月薪,最高可达60-80K月薪),这门课程,会先从nginx源码的分析和讲解开始,逐步开始书写属于自己的高性能服务器框架代码,完善个人代码库,这些,将会是您日后能取得高薪的重要筹码。 本课程原计划带着大家逐行写代码,但因为代码实在过于复杂和精细,带着写代码可能会造成每节课至少要4~5小时的超长时间,所以老师会在课前先写好代码,主要的时间花费在逐行讲解这些代码上,这一点望同学们周知。如果你觉得非要老师领着写代码才行的话,老师会觉得你当前可能学习本门课程会比较吃力,请不要购买本课程,以免听不懂课程并给老师差评,差评也会非常影响老师课程的销售并造成其他同学的误解。 这门课程要求您具备下面的技能: (1)对c/c++语言掌握的非常熟练,语言本身已经不是继续学习的障碍,并不要求您一定熟悉网络或者linux; (2)对网络通讯架构领域有兴趣、勇于挑战这个高难度的开发领域并期望用大量的付出换取高薪; 在这门课程中,实现了一个完整的项目,其中包括通讯框架和业务逻辑框架,浓缩总结起来包括如下几点: (1)项目本身是一个极完整的多线程高并发的服务器程序; (2)按照包头包体格式正确的接收客户端发送过来的数据包, 完美解决收包时的数据粘包问题; (3)根据收到的包的不同来执行不同的业务处理逻辑; (4)把业务处理产生的结果数据包正确返回给客户端; 本项目用到的主要开发技术和特色包括: (1)epoll高并发通讯技术,用到的触发模式是epoll中的水平触发模式【LT】; (2)自己写了一套线程池来处理业务逻辑,调用适当的业务逻辑处理函数处理业务并返回给客户端处理结果; (3)线程之间的同步技术包括互斥量,信号量等等; (4)连接池中连接的延迟回收技术,这是整个项目中的精华技术,极大程度上消除诸多导致服务器程序工作不稳定的因素; (5)专门处理数据发送的一整套数据发送逻辑以及对应的发送线程; (6)其他次要技术,包括信号、日志打印、fork()子进程、守护进程等等;

    2921 人正在学习 去看看 王健伟

linux服务器时间校对

 

 

一、查看服务器时间漂移

[root@localhost ~]# ntpdate -d pool.ntp.org

3 Jun 12:23:02 ntpdate[23209]: ntpdate 4.2.2p1@1.1570-o Thu Jan 22 02:50:41 UTC 2009 (1)

Looking for host pool.ntp.org and service ntp

host found : 114.80.81.13

transmit(114.80.81.13)

receive(114.80.81.13)

transmit(114.80.81.13)

receive(114.80.81.13)

transmit(114.80.81.13)

receive(114.80.81.13)

transmit(114.80.81.13)

receive(114.80.81.13)

transmit(114.80.81.13)

transmit(114.80.81.12)

receive(114.80.81.12)

transmit(114.80.81.12)

receive(114.80.81.12)

transmit(114.80.81.12)

receive(114.80.81.12)

transmit(114.80.81.12)

receive(114.80.81.12)

transmit(114.80.81.12)

server 114.80.81.13, port 123

stratum 2, precision -19, leap 00, trust 000

refid [114.80.81.13], delay 0.07500, dispersion 0.00000

transmitted 4, in filter 4

reference time:    cfb1abe6.c1705427 Thu, Jun 3 2010 12:19:50.755

originate timestamp: cfb1aca6.e02c965f Thu, Jun 3 2010 12:23:02.875

transmit timestamp: cfb1aca6.72dc3bd5 Thu, Jun 3 2010 12:23:02.448

filter delay: 0.07510 0.07500 0.07520 0.07578 

         0.00000 0.00000 0.00000 0.00000 

filter offset: 0.401860 0.401864 0.401836 0.401890

         0.000000 0.000000 0.000000 0.000000

delay 0.07500, dispersion 0.00000

offset 0.401864

server 114.80.81.12, port 123

stratum 2, precision -19, leap 00, trust 000

refid [114.80.81.12], delay 0.07466, dispersion 0.00002

transmitted 4, in filter 4

reference time:    cfb1a5be.cab58f10 Thu, Jun 3 2010 11:53:34.791

originate timestamp: cfb1aca7.0fc8e87f Thu, Jun 3 2010 12:23:03.061

transmit timestamp: cfb1aca6.a5c93ea2 Thu, Jun 3 2010 12:23:02.647

filter delay: 0.07474 0.07477 0.07466 0.07497 

         0.00000 0.00000 0.00000 0.00000 

filter offset: 0.389573 0.389545 0.389564 0.389362

         0.000000 0.000000 0.000000 0.000000

delay 0.07466, dispersion 0.00002

offset 0.389564

3 Jun 12:23:02 ntpdate[23209]: adjust time server 114.80.81.12 offset 0.389564 sec

二、服务器时间同步

[root@localhost ~]# ntpdate pool.ntp.org

3 Jun 12:24:52 ntpdate[23216]: adjust time server 114.80.81.12 offset 0.389726 sec

三、将时间同步写入到计划任务

[root@localhost ~]# crontab -l

#Time Synchronization

0 */2 * * * "ntpdate pool.ntp.org">/dev/null 2>&1

 

Linux提示no crontab for root的解决办法  

 

解决办法:

可以自己创建一个配置文件来添加上去

    1. #vi hello-conf

    1-59 * * * * ntpdate pool.ntp.org

    2. #crontab -u root hello-conf

    3. #crontab -l    应该就可以列出任务列表了。

    4. #crontab -e    现在就可以用这个命令来编辑配置文件了

 

 

四、查看计划任务是否执行

[root@localhost ~]# grep ntpdate /var/log/cron

如果出现下面信息,且每2小时执行一次,说明配置正确

Jun 1 18:00:01 localhost crond[4729]: (root) CMD ("ntpdate pool.ntp.org">/dev/null 2>&1)

Jun 1 20:00:01 localhost crond[5959]: (root) CMD ("ntpdate pool.ntp.org">/dev/null 2>&1)

 

Hadoop集群配置ntp时间服务器

博文 来自: wuzhongfei88
没有更多推荐了,返回首页