利用 sftp 在本地和服务器之间传输文件
目录
NO.0 xShell5 利用 sftp 在本地和服务器之间传输文件:
NO.1 通过SecureCRTPortable利用sftp本地与服务器互相传输文件
NO.2 Java通过SFTP连接、上传、下载、删除文件
NO.0 xShell5 利用 sftp 在本地和服务器之间传输文件:
sftp是Secure File TransferProtocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。sftp与 ftp有着几乎一样的语法和功能。SFTP为 SSH的一部分,是一种传输档案至Blogger伺服器的安全方式。其实在SSH软件包中,已经包含了一个叫作SFTP(Secure File Transfer Protocol)的安全文件传输子系统,SFTP本身没有单独的守护进程,它必须使用sshd守护进程(端口号默认是22)来完成相应的连接操作,所以从某种意义上来说,SFTP并不像一个服务器程序,而更像是一个客户端程序。SFTP同样是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。
一、连接方式
常用的方式有两种,一种直接采用sftp连接远端服务器IP
另一种则先登录远程服务器,在开启sftp功能
1、sftp [remotehost IP ]
通过sftp连接[host],端口为默认的22,用户为Linux当前登录用户。
Xshell 5 (Build 0806)Copyright (c) 2002-2015 NetSarang Computer, Inc. All rights reserved.Type `help' to learn how to use Xshell prompt.[c:\~]$ sftp192.168.56.101Connecting to 192.168.56.101:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.Your current local directory isC:\Users\FieldYang\Documents\NetSarang\Xshell\SessionsType `help' to browse available commnands.sftp:/root>
2、sftp -oPort=[port][remotehost IP]
通过sftp连接远程服务器,指定端口[port],用户为Linux当前登录用户。
3、sftp[user]@[remotehost IP]
通过sftp连接远程服务器,端口为默认的22,指定用户[user]。
Xshell 5 (Build 0806)Copyright (c) 2002-2015 NetSarang Computer,Inc. All rights reserved.Type `help' to learn how to use Xshell prompt.[c:\~]$ sftp fieldyang@192.168.56.101Connecting to 192.168.56.101:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.Your current local directory isC:\Users\FieldYang\Documents\NetSarang\Xshell\SessionsType `help' to browse available commnands.sftp:/home/python>
4、sftp -oPort=[port][user]@[ remotehost IP]
通过sftp连接[remotehost IP],端口为[port],用户为[user]。
5、通过Xshell5与linux建立连接后,在图形用户面板上 窗口->传输新建文件,打开xftp的字符界面,如图,直接关闭即可打开一个sftp窗口
二、用法
1、基本用法
sftp:/root> help
bye finish your SFTP session
退出sftp
cd change your remote workingdirectory
更改远程服务器工作目录
clear clear screen
清屏
exit finish your SFTP session
explore explore your local directory
导入本地目录
get download a file from theserver to your local machine
从远程服务器上下载文件到本机
help give help
查找帮助
lcd change and/or print localworking directory
切换本地当前工作目录
lls list contents of a localdirectory
列出本地当前目录的内容
lpwd print your local workingdirectory
打印当前工作目录
ls list contents of a remotedirectory
列出远程服务器目录内容
mkdir create a directory on theremote server
在远程服务器上创建一个目录
mv move or rename a file onthe remote server
搬移或重命名一个的远程服务器文件
put upload a file from yourlocal machine to the server
将本机的文件上传到远程服务器
pwd print your remote workingdirectory
打印远程服务器工作路径
quit finish your SFTP session
退出
rename move or rename a file onthe remote server
搬移或重命名一个的远程服务器文件
rm delete a file
删除一个文件
rmdir remove a directory on theremote server
在远程服务器上删除一个目录删除一个目录
2、常用的为上传下载
1)、get
从远程服务器上下载一个文件存放到本地,如下:
先通过lcd切换到本地那个目录下,然后通过get file
>> lcd d:\ #表示切换到本地的d盘下
>> get ./test.sql #这样就将当前文件下载本地的d盘下
2)、put
是将本地的文件上传到远程服务器上,如下:
>> put #在windows下弹出选择文件的窗口
3)、lcd
先通过lcd切换到本地那个目录下
>> lcd c:\ #表示切换到本地的c盘下
4)、lls
#显示当前目录下的所有文件
5)、pwd
#显示当前目录
三、各个用法实例详解
实例1、从服务器下载文件到本机
Xshell 5 (Build 0806)Copyright (c) 2002-2015NetSarang Computer, Inc. All rights reserved.Type `help' to learn howto use Xshell prompt.[c:\~]$Connecting to192.168.56.101:22...Connection established.To escape to local shell,press 'Ctrl+Alt+]'.Your current localdirectory isC:\Users\python\Documents\NetSarang\Xshell\SessionsType `help' to browseavailable commnands.sftp:/root> cd /mnt/share #远程路径切换为/mnt/share sftp:/mnt/share> ls –lt drwxrwxrwx 1 1000 users 4096 Jun 16 13:39 .drwxr-xr-x 7 root root 4096 Jun 15 14:06 ..-rwxrwxrwx 1 1000 users 220151 Jun 15 14:26.goutputstream-ZHJ8IY-rwxrwxrwx 1 1000 users 19362 Jun 16 12:270.jpg-rwxrwxrwx 1 1000 users 16157 Jun 16 13:39Auth Server and SOAP proxy.docx-rwxrwxrwx 1 1000 users 63952 Jun 16 12:29bamquickinstall.pdf-rwxrwxrwx 1 1000 users 7277 Jun 16 13:33DNSmmmS.txt-rwxrwxrwx 1 1000 users 7277 May 12 10:43DNSS.txt-rwxrwxrwx 1 1000 users 111395 Jun 15 15:46libpcap-0.9.4-15.el5.x86_64.rpm-rwxrwxrwx 1 1000 users 363677 Jun 15 14:59ppp-2.4.4-14.1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 48430 Jun 15 14:57ppp-devel-2.4.4-14.1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 86211 Jun 15 15:38pptpd-1.4.0-1.rhel4.x86_64.rpm-rwxrwxrwx 1 1000 users 86509 Jun 15 14:46pptpd-1.4.0-1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 220151 Jun 15 13:22Screenshot.png-rwxrwxrwx 1 1000 users 21789 Jun 16 13:39Traffic Usage System alarm handling - Gateway, RadiusGWProxy, RadiusProxyServer.docx sftp:/mnt/share> lcd d:\Field\test_sftp #切换到本地的d盘下Field文件夹的test_sftp文件夹Local directory is nowd:\Field\test_sftpsftp:/mnt/share> lpwdLocal directory isd:\Field\test_sftp#打印本地文件夹路径sftp:/mnt/share> lls06/16/2016 05:44¤W <DIR> .06/16/2016 05:44¤W <DIR> ..#查看本地文件夹d:\Field\test_sftp内容sftp:/mnt/share>get ./0.jpg ./DNSmmmS.txt./pptpd-1.4.0-1.rhel5.x86_64.rpm#下载远程服务器/mnt/share上的0.jpg、DNSmmmS.txt、#pptpd-1.4.0-1.rhel5.x86_64.rpm到本地文件夹d:\Field\test_sftp中Fetching/mnt/share/./pptpd-1.4.0-1.rhel5.x86_64.rpm to pptpd-1.4.0-1.rhel5.x86_64.rpmsftp: received 84.4 KB in0.64 secondsFetching/mnt/share/./DNSmmmS.txt to DNSmmmS.txtsftp: received 7.10 KB in0.02 secondsFetching/mnt/share/./0.jpg to 0.jpgsftp: received 18.9 KB in0.03 seconds sftp:/mnt/share> lls –lt#命令行查看是否下载成功06/16/2016 05:47¤W <DIR> .06/16/2016 05:47¤W <DIR> ..06/16/2016 05:47¤W 19362 0.jpg06/16/2016 05:47¤W 7277 DNSmmmS.txt06/16/2016 05:47¤W 86509 pptpd-1.4.0-1.rhel5.x86_64.rpm
实例2、上传本地文件到远程服务器
sftp:/mnt/share> lcd d:\Field\SNINF\#切换本地路径到d:\Field\SNINF\Local directory is nowd:\Field\SNINF\sftp:/mnt/share> lpwd#打印本地当前路径Local directory isd:\Field\SNINF\sftp:/mnt/share> lls -lt02/19/2016 07:50¤W <DIR> .02/19/2016 07:50¤W <DIR> ..12/11/2015 08:27¤W 16157 Auth Server and SOAP proxy.docx12/11/2015 08:27¤W 464191 Check Plan--Jacky.docx12/11/2015 08:27¤W 562801 CIMDB ¡V David.docx12/11/2015 08:27¤W 12031 Disk Full ¡V For All Systems.docx12/11/2015 08:27¤W 126440 EMMSC--Fox.docx12/11/2015 08:27¤W 115928 ENUM ¡VJacky.docx12/11/2015 08:27¤W 327650 F-Secure.docx12/11/2015 08:27¤W 107606 GDS--Fox.docx12/11/2015 08:27¤W 117762 GIMEI¡XFox.docx12/11/2015 08:27¤W 310862 GUP CGUP ¡ΠRay.docx12/11/2015 08:27¤W 650939 IP call --Sharon.docx12/11/2015 08:27¤W 779957 Mex health check--Niker.docx12/11/2015 08:27¤W 124195 NetScout (DPI)¡XFox.docx12/11/2015 08:27¤W 198426 POC--Jacky.docx12/11/2015 08:27¤W 326368 Radius Proxy -Niker.docx12/11/2015 08:27¤W 190044 SMTP health check--Niker.docx12/11/2015 08:27¤W 45643 Stretti DFS¡XSharon.docx12/11/2015 08:27¤W 233654 Stretti DISC ¡VJacky.docx12/11/2015 08:27¤W 449498 Traffic Router Health Check¡XDavid.docx12/11/2015 08:27¤W 21789 Traffic Usage System alarm handling -Gateway, RadiusGWProxy, RadiusProxy Server.docx12/11/2015 08:27¤W 734859 Video Transcoder¡XDavid.docx12/11/2015 08:27¤W 14815 Virtual Browser.docx12/11/2015 08:27¤W 22554 ZMMSC.docx12/11/2015 08:27¤W 219776 ZProxy ¡ΠFox.docx12/11/2015 08:27¤W 221199 ZWAPGW NZWAPGW ¡ΠFox.docx sftp:/mnt/share> putUploading Traffic UsageSystem alarm handling - Gateway, RadiusGWProxy, RadiusProxy Server.docx toremote:/mnt/share/Traffic Usage System alarm handling - Gateway, RadiusGWProxy,RadiusProxy Server.docxsftp: sent 21.2 KB in 0.01seconds#在弹出的Windows框中选择文件上传 注意上传路径与当前路径要相同 sftp:/mnt/share> putUploading VirtualBrowser.docx to remote:/mnt/share/Virtual Browser.docxsftp: sent 14.4 KB in 0.02secondssftp:/mnt/share> putUploading CheckPlan--Jacky.docx to remote:/mnt/share/Check Plan--Jacky.docxsftp: sent 453 KB in 0.05secondssftp:/mnt/share> putUploading ZMMSC.docx toremote:/mnt/share/ZMMSC.docxsftp: sent 22.0 KB in 0.00secondssftp:/mnt/share> ls -ltdrwxrwxrwx 1 1000 users 4096 Jun 16 13:54 .drwxr-xr-x 7 root root 4096 Jun 15 14:06 ..-rwxrwxrwx 1 1000 users 220151 Jun 15 14:26.goutputstream-ZHJ8IY-rwxrwxrwx 1 1000 users 19362 Jun 16 12:270.jpg-rwxrwxrwx 1 1000 users 16157 Jun 16 13:39Auth Server and SOAP proxy.docx-rwxrwxrwx 1 1000 users 63952 Jun 16 12:29bamquickinstall.pdf-rwxrwxrwx 1 1000 users 464191 Jun 16 13:53Check Plan--Jacky.docx-rwxrwxrwx 1 1000 users 7277 Jun 16 13:33DNSmmmS.txt-rwxrwxrwx 1 1000 users 7277 May 12 10:43DNSS.txt-rwxrwxrwx 1 1000 users 111395 Jun 15 15:46libpcap-0.9.4-15.el5.x86_64.rpm-rwxrwxrwx 1 1000 users 363677 Jun 15 14:59ppp-2.4.4-14.1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 48430 Jun 15 14:57 ppp-devel-2.4.4-14.1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 86211 Jun 15 15:38pptpd-1.4.0-1.rhel4.x86_64.rpm-rwxrwxrwx 1 1000 users 86509 Jun 15 14:46pptpd-1.4.0-1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 220151 Jun 15 13:22Screenshot.png-rwxrwxrwx 1 1000 users 21789 Jun 16 13:52Traffic Usage System alarm handling - Gateway, RadiusGWProxy, RadiusProxyServer.docx-rwxrwxrwx 1 1000 users 14815 Jun 16 13:53Virtual Browser.docx-rwxrwxrwx 11000 users 22554 Jun 16 13:54 ZMMSC.docxsftp:/mnt/share>
实例3、在远程服务器创建删除目录
sftp:/mnt/share> mkdir /mnt/share/test#在远程服务器上创建目录/mnt/share/testsftp:/mnt/share> cd /mnt/share/testsftp:/mnt/share/test> pwd#查看是否创建成功Remotedirectory is /mnt/share/testsftp:/mnt/share/test> cd /mnt/share/sftp:/mnt/share> rmdir /testcannotremove /test: no such a directorysftp:/mnt/share>rmdir /mnt/share/test#删除刚创建的目录/mnt/share/testsftp:/mnt/share> cd /mnt/share/testcannotchange to /mnt/share/test: no such a directory#确认是否删除成功
实例4、在远程服务器删除文件
sftp:/mnt/share> rm ./ZMMSC#删除远程服务器/mnt/share上的文件ZMMSC.docx,./表示当前目录cannotdelete /mnt/share/./ZMMSC: no such a filesftp:/mnt/share> rm ./ZMMSC.docxdeleted/mnt/share/./ZMMSC.docxsftp:/mnt/share> rm ./Traffic UsageSystem alarm handling - Gateway, RadiusGWProxy, RadiusProxy Server.docxusage:rm filesftp:/mnt/share> rm ./DNSS.txtdeleted/mnt/share/./DNSS.txtsftp:/mnt/share> ls#查看是否成功删除drwxrwxrwx 1 1000 users 4096 Jun 16 14:25 .drwxr-xr-x 7 root root 4096 Jun 15 14:06 ..-rwxrwxrwx 1 1000 users 220151 Jun 15 14:26.goutputstream-ZHJ8IY-rwxrwxrwx 1 1000 users 19362 Jun 16 12:270.jpg-rwxrwxrwx 1 1000 users 16157 Jun 16 13:39 AuthServer and SOAP proxy.docx-rwxrwxrwx 1 1000 users 63952 Jun 16 12:29bamquickinstall.pdf-rwxrwxrwx 1 1000 users 464191 Jun 16 13:53Check Plan--Jacky.docx-rwxrwxrwx 1 1000 users 7277 Jun 16 13:33DNSmmmS.txt-rwxrwxrwx 1 1000 users 111395 Jun 15 15:46libpcap-0.9.4-15.el5.x86_64.rpm-rwxrwxrwx 1 1000 users 363677 Jun 15 14:59ppp-2.4.4-14.1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 48430 Jun 15 14:57ppp-devel-2.4.4-14.1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 86211 Jun 15 15:38pptpd-1.4.0-1.rhel4.x86_64.rpm-rwxrwxrwx 1 1000 users 86509 Jun 15 14:46pptpd-1.4.0-1.rhel5.x86_64.rpm-rwxrwxrwx 1 1000 users 220151 Jun 15 13:22Screenshot.png-rwxrwxrwx 1 1000 users 21789 Jun 16 13:52Traffic Usage System alarm handling - Gateway, RadiusGWProxy, RadiusProxyServer.docx-rwxrwxrwx 1 1000 users 14815 Jun 16 13:53Virtual Browser.docxsftp:/mnt/share>
NO.1 通过SecureCRTPortable利用sftp本地与服务器互相传输文件
常用命令同NO.0
NO.2 Java通过SFTP连接、上传、下载、删除文件
1.需要导入的jar包:jsch-0.1.54.jar
2.工具类:
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;public class SFTPUtil {private String host;//sftp服务器ipprivate String username;//用户名private String password;//密码private String privateKey;//密钥文件路径private String passphrase;//密钥口令private int port = 9022;//默认的sftp端口号9022public SFTPUtil(String host,String username,String password,String privateKey, String passphrase, int port) {this.host = host;this.username = username;this.password = password;this.privateKey = privateKey;this.passphrase = passphrase;this.port = port;}/*** 获取连接* @return channel*/public ChannelSftp connectSFTP() {JSch jsch = new JSch();Channel channel = null;System.out.println("--------privateKey:"+privateKey);try {if (privateKey != null && !"".equals(privateKey)) {//使用密钥验证方式,密钥可以使有口令的密钥,也可以是没有口令的密钥if (passphrase != null && "".equals(passphrase)) {jsch.addIdentity(privateKey, passphrase);} else {jsch.addIdentity(privateKey);}}Session session = jsch.getSession(username, host, port);if (password != null && !"".equals(password)) {session.setPassword(password);}//Console 里面打印连接的更多相关信息com.jcraft.jsch.Logger logger = new SettleLogger();JSch.setLogger(logger);Properties sshConfig = new Properties();sshConfig.put("StrictHostKeyChecking", "no");// do not verify host keysession.setConfig(sshConfig);// session.setTimeout(timeout);session.setServerAliveInterval(92000);session.connect();//参数sftp指明要打开的连接是sftp连接channel = session.openChannel("sftp");channel.connect();} catch (JSchException e) {System.out.println("connectSFTP:"+e);}return (ChannelSftp) channel;}/*** 上传文件* * @param directory* 上传的目录* @param uploadFile* 要上传的文件* @param sftp*/public void upload(String directory, String uploadFile, ChannelSftp sftp) {try {System.out.println(directory);sftp.cd(directory);System.out.println(uploadFile);File file = new File(uploadFile);System.out.println(directory+","+uploadFile);sftp.put(new FileInputStream(file), file.getName());} catch (Exception e) {System.out.println("upload:"+e);}}/*** 下载文件* * @param directory* 下载目录* @param downloadFile* 下载的文件* @param saveFile* 存在本地的路径* @param sftp*/public void download(String directory, String downloadFile, String saveFile, ChannelSftp sftp) {try {sftp.cd(directory);sftp.get(downloadFile,saveFile);} catch (Exception e) {System.out.println("download:"+e);}}/*** 删除文件* * @param directory* 要删除文件所在目录* @param deleteFile* 要删除的文件* @param sftp*/public void delete(String directory, String deleteFile, ChannelSftp sftp) {try {sftp.cd(directory);sftp.rm(deleteFile);} catch (Exception e) {System.out.println("delete:"+e);}}public void disconnected(ChannelSftp sftp){if (sftp != null) {try {sftp.getSession().disconnect();} catch (JSchException e) {System.out.println("disconnected:"+e);}sftp.disconnect();}}
}//Console 里面打印连接的更多相关信息
class SettleLogger implements com.jcraft.jsch.Logger {public boolean isEnabled(int level) {return true;}public void log(int level, String msg) {System.out.println(msg);}
}
3.调用:
String host="sftp连接的ip";
String username = "sftp连接的用户名";
String password = "sftp连接的密码";
String privateKey = "ssh 私钥本地路径";
String passphrase = "";//ssh 私钥口令
int port = 22;//默认端口号是22
String directory = "./";//默认地址
String uploadfilepath = "需要上传的文件的本地路径";SFTPUtil sftpUtil = new SFTPUtil(host,username,password,privateKey,passphrase,port);
ChannelSftp channelsftp = sftpUtil.connectSFTP();
if(channelsftp!=null) {sftpUtil.upload(directory,uploadfilepath,channelsftp);//下载和删除就不写了 反正都是写一下服务器的文件路径 需要操作的文件 最后再写个channelsftp就好了 sftpUtil.disconnected(channelsftp);
}
利用 sftp 在本地和服务器之间传输文件相关推荐
- 利用SecureCRT在linux与Windows之间传输文件
From: http://blog.csdn.net/sungblog/article/details/7274716 利用SecureCRT在linux与Windows之间传输文件 ...
- ftp服务器文件传输,FTP服务器之间传输文件
FTP服务器之间传输文件 内容精选 换一换 在本地主机和Windows云服务器上分别安装QQ.exe等工具进行数据传输.使用远程桌面连接mstsc方式进行数据传输.该方式不支持断点续传,可能存在传输中 ...
- 两个ftp服务器之间的文件传输,FTP服务器之间传输文件
FTP服务器之间传输文件 内容精选 换一换 云服务器创建后区域固定,不能将云服务器转移到另一个区域,也不能将云服务器转移到另一个帐号.您可以通过镜像迁移方式实现云服务器的跨帐号跨区域迁移.服务器迁移的 ...
- Linux 两台服务器之间传输文件和文件夹
今天处理一个项目要迁移的问题,突然发现这么多图片怎么移过去,可能第一时间想到的是先从这台服务器下载下来,然后再上传到另外一台服务器上面去,这个方法确实是可行,但是实在是太费时间了,今天我就教大家怎么快 ...
- c# 客户端 服务器传输文件,通过TCP在C++客户端/ C#服务器之间传输文件
我目前正尝试通过TCP在C++客户端和C#服务器之间发送jpeg图片流. 我在C++端使用transmitFile函数,但我不知道我是否在C#端正确处理它. 我没有得到运行时错误,但图片没有显示,所以 ...
- 使用sftp在客户端与服务器之间进行文件传输
知识点:sftp 步骤: 一. 登录服务器 使用命令格式:sftp 服务器主机名 二. 在客户端与服务器之间进行文件传输 命令put: 上传到服务器 put haha.txt 命令get: 下载到客户 ...
- 利用tftpd32在Linux与Windows7之间传输文件
参考游鹏老(http://blog.csdn.net/tzp1025029729/article/details/50921138)和snmplink的博文(blog.csdn.net/qingwuf ...
- window环境读linux文件,Windows本地环境和Linux腾讯云服务器之间传输文件的方法
通过WinSCPWinSCP简介: WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它的主要功能就是在本地与远程计算机间安全的复制文件. 与使用FTP上 ...
- 电脑和云服务器之间怎么传文件,Windows本地环境和Linux腾讯云服务器之间传输文件的方法...
通过WinSCPWinSCP简介: WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它的主要功能就是在本地与远程计算机间安全的复制文件. 与使用FTP上 ...
最新文章
- JavaScript语言基础3
- 鸿蒙 电视 安卓,华为鸿蒙2.0、EMUI 11齐发 打通手机、电视、PC全平台
- html5的消息通知
- 通过OmniFaces缓存组件以编程方式缓存PrimeFaces图表
- 腾讯面试编程题python_腾讯面试官出的 2 道经典数据分析面试题
- 数据结构前缀,后缀,中缀表达式
- 在shell中全局变量与局部变量的区别及其举例
- 论文|Airbnb Embedding的实践和思考
- 漫画:996 的本质是什么?
- L1-054 福到了-PAT团体程序设计天梯赛GPLT
- Web 渗透之信息收集
- 希尔伯特变换Hilbert Transform
- 内网代理——常用工具
- javascript页面刷新的几种方法
- Nginx学习笔记(Docker版)-2
- win10系统鼠标右键一直转圈的两种解决方法
- java zhs16gbk_oracle 修改字符集 为ZHS16GBK
- Tivoli TSM产品功能详述
- (3.6A)不用库函数实现字符串拼接
- oracle季初,Oracle获取月初/月末/季初/季末/半年初/半年末/年初/年末