本篇文章包含了curl的常用案例使用。

如果想了解curl选项的详细说明,请参考前一篇文章「Linux curl 命令详解」。

常见网页访问示例

基本用法

访问一个网页

curl https://www.baidu.com

执行后,相关的网页信息会打印出来

进度条展示

有时候我们不需要进度表展示,而需要进度条展示。比如:下载文件时。

可以通过 -#, --progress-bar 选项实现。

[root@iZ28xbsfvc4Z 20190713]# curl https://www.baidu.com | head -n1  # 进度表显示% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  11662      0 --:--:-- --:--:-- --:--:-- 11688
<!DOCTYPE html>
[root@iZ28xbsfvc4Z 20190713]# curl -# https://www.baidu.com | head -n1  # 进度条显示
######################################################################## 100.0%
<!DOCTYPE html>

静默模式与错误信息打印

当我们做一些操作时,可能会出现进度表。这时我们可以使用 -s, --silent 静默模式去掉这些不必要的信息。

如果使用 -s, --silent 时,还需要打印错误信息,那么还需要使用 -S, --show-error 选项。

静默模式示例

[root@iZ28xbsfvc4Z ~]# curl https://www.baidu.com | head -n1% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  11874      0 --:--:-- --:--:-- --:--:-- 11859
<!DOCTYPE html>
[root@iZ28xbsfvc4Z ~]# curl -s https://www.baidu.com | head -n1
<!DOCTYPE html>

静默模式结合错误信息打印

[root@iZ28xbsfvc4Z 20190713]# curl -s https://140.205.16.113/
[root@iZ28xbsfvc4Z 20190713]#
[root@iZ28xbsfvc4Z 20190713]# curl -sS https://140.205.16.113/
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.

显示详细操作信息

使用 -v, --verbose 选项实现。

以 > 开头的行表示curl发送的"header data";< 表示curl接收到的通常情况下隐藏的"header data";而以 * 开头的行表示curl提供的附加信息。

[root@iZ28xbsfvc4Z 20190712]# curl -v https://www.baidu.com
* About to connect() to www.baidu.com port 443 (#0)
*   Trying 180.101.49.12...
* Connected to www.baidu.com (180.101.49.12) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crtCApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
*   subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
*   start date: May 09 01:22:02 2019 GMT
*   expire date: Jun 25 05:31:02 2020 GMT
*   common name: baidu.com
*   issuer: CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: Keep-Alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Fri, 12 Jul 2019 08:26:23 GMT
< Etag: "588603eb-98b"
< Last-Modified: Mon, 23 Jan 2017 13:23:55 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
<!DOCTYPE html>
………………  # curl 网页的具体信息

指定访问的请求方法

当然curl默认使用GET方式访问。使用了 -d, --data <data> 选项,那么会默认为 POST方法访问。如果此时还想实现 GET 访问,那么可以使用 -G, --get 选项强制curl 使用GET方法访问。

同时 -X, --request <command> 选项也可以指定访问方法。

POST请求和数据传输

为了抓包查看信息所以使用了 --local-port <num>[-num] 选项,在实际应用中不需要该选项。

[root@iZ28xbsfvc4Z ~]# curl -sv --local-port 9000 -X POST -d 'user=zhang&pwd=123456' http://www.zhangblog.com/2019/06/24/domainexpire/ | head -n1
## 或者
[root@iZ28xbsfvc4Z ~]# curl -sv --local-port 9000 -d 'user=zhang&pwd=123456' http://www.zhangblog.com/2019/06/24/domainexpire/ | head -n1
* About to connect() to www.zhangblog.com port 80 (#0)
*   Trying 120.27.48.179...
* Connected to www.zhangblog.com (120.27.48.179) port 80 (#0)
> POST /2019/06/24/domainexpire/ HTTP/1.1  # POST 请求方法
> User-Agent: curl/7.29.0
> Host: www.zhangblog.com
> Accept: */*
> Content-Length: 21
> Content-Type: application/x-www-form-urlencoded
>
} [data not shown]
* upload completely sent off: 21 out of 21 bytes
< HTTP/1.1 405 Not Allowed
< Server: nginx/1.14.2
< Date: Thu, 18 Jul 2019 07:56:23 GMT
< Content-Type: text/html
< Content-Length: 173
< Connection: keep-alive
<
{ [data not shown]
* Connection #0 to host www.zhangblog.com left intact
<html>

抓包信息

[root@iZ28xbsfvc4Z tcpdump]# tcpdump -i any port 9000 -A -s 0

指定请求方法

curl -vs -X POST https://www.baidu.com | head -n1

curl -vs -X PUT https://www.baidu.com | head -n1

保存访问网页

使用linux的重定向功能保存

curl www.baidu.com >> baidu.html

使用curl的大O选项

通过 -O, --remote-name 选项实现。

[root@iZ28xbsfvc4Z 20190712]# curl -O https://www.baidu.com   # 使用了 -O 选项,必须指定到具体的文件  错误使用
curl: Remote file name has no length!
curl: try 'curl --help' or 'curl --manual' for more information
[root@iZ28xbsfvc4Z 20190712]# curl -O https://www.baidu.com/index.html   # 使用了 -O 选项,必须指定到具体的文件  正确使用% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  13289      0 --:--:-- --:--:-- --:--:-- 13349

使用curl的小o选项

通过 -o, --output <file> 选项实现。

[root@iZ28xbsfvc4Z 20190713]# curl -o sina.txt https://www.sina.com.cn/   # 单个操作
[root@iZ28xbsfvc4Z 20190713]# ll
-rw-r--r-- 1 root root   154 Jul 13 21:06 sina.txt
[root@iZ28xbsfvc4Z 20190703]# curl "http://www.{baidu,douban}.com" -o "site_#1.txt"  # 批量操作,注意curl 的地址需要用引号括起来
[1/2]: http://www.baidu.com --> site_baidu.txt% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2381  100  2381    0     0  46045      0 --:--:-- --:--:-- --:--:-- 46686[2/2]: http://www.douban.com --> site_douban.txt
100   162  100   162    0     0   3173      0 --:--:-- --:--:-- --:--:--  3173
[root@iZ28xbsfvc4Z 20190703]#
[root@iZ28xbsfvc4Z 20190703]# ll
total 220
-rw-r--r-- 1 root root  2381 Jul  4 16:53 site_baidu.txt
-rw-r--r-- 1 root root   162 Jul  4 16:53 site_douban.txt

允许不安全访问

当我们使用curl进行https访问访问时,如果SSL证书是我们自签发的证书,那么这个时候需要使用 -k, --insecure 选项,允许不安全的访问。

[root@iZ28xbsfvc4Z ~]# curl https://140.205.16.113/  # 被拒绝
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
[root@iZ28xbsfvc4Z ~]#
[root@iZ28xbsfvc4Z ~]# curl -k https://140.205.16.113/  # 允许执行不安全的证书连接
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<h1>403 Forbidden</h1>
<p>You don't have permission to access the URL on this server.<hr/>Powered by Tengine</body>
</html>

获取HTTP响应状态码

在脚本中,这是很常见的测试网站是否正常的用法。

通过 -w, --write-out <format> 选项实现。

[root@iZ28xbsfvc4Z 20190713]# curl -o /dev/null -s -w %{http_code} https://baidu.com
302[root@iZ28xbsfvc4Z 20190713]#
[root@iZ28xbsfvc4Z 20190713]#
[root@iZ28xbsfvc4Z 20190713]# curl -o /dev/null -s -w %{http_code} https://www.baidu.com
200[root@iZ28xbsfvc4Z 20190713]#

指定proxy服务器以及其端口

很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候),幸运的是curl通过使用 -x, --proxy <[protocol://][user:password@]proxyhost[:port]> 选项来支持设置代理。

curl -x 192.168.100.100:1080 https://www.baidu.com

模仿浏览器访问

有些网站需要使用特定的浏览器去访问他们,有些还需要使用某些特定的浏览器版本。我们可以通过 -A, --user-agent <agent string> 或者 -H, --header <header> 选项实现模拟浏览器访问。

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/75.0.3770.999" http://www.zhangblog.com/2019/06/24/domainexpire/
或者
curl -H 'User-Agent: Mozilla/5.0' http://www.zhangblog.com/2019/06/24/domainexpire/

伪造referer(盗链)

有些网站的网页对http访问的链接来源做了访问限制,这些限制几乎都是通过referer来实现的。

比如:要求是先访问首页,然后再访问首页中的邮箱页面,这时访问邮箱的referer地址就是访问首页成功后的页面地址。如果服务器发现对邮箱页面访问的referer地址不是首页的地址,就断定那是个盗连了。

可以通过 -e, --referer 或则 -H, --header <header> 实现伪造 referer 。

curl -e 'https://www.baidu.com' http://www.zhangblog.com/2019/06/24/domainexpire/
或者
curl -H 'Referer: https://www.baidu.com' http://www.zhangblog.com/2019/06/24/domainexpire/

构造HTTP请求头

可以通过 -H, --header <header> 实现构造http请求头。

curl -H 'Connection: keep-alive' -H 'Referer: https://sina.com.cn' -H 'User-Agent: Mozilla/1.0' http://www.zhangblog.com/2019/06/24/domainexpire/

保存响应头信息

可以通过 -D, --dump-header <file> 选项实现。

[root@iZ28xbsfvc4Z 20190703]# curl -D baidu_header.info www.baidu.com
………………
[root@iZ28xbsfvc4Z 20190703]# ll
total 4
-rw-r--r-- 1 root root 400 Jul  3 10:11 baidu_header.info  # 生成的头文件

限时访问

--connect-timeout <seconds> 连接服务端的超时时间。这只限制了连接阶段,一旦curl连接了此选项就不再使用了。

# 当前 https://www.zhangXX.com 是国外服务器,访问受限
[root@iZ28xbsfvc4Z ~]# curl --connect-timeout 10 https://www.zhangXX.com | head% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed0     0    0     0    0     0      0      0 --:--:--  0:00:10 --:--:--     0
curl: (28) Connection timed out after 10001 milliseconds

-m, --max-time <seconds> 允许整个操作花费的最大时间(以秒为单位)。这对于防止由于网络或链接变慢而导致批处理作业挂起数小时非常有用。

[root@iZ28xbsfvc4Z ~]# curl -m 10 --limit-rate 5 http://www.baidu.com/ | head  # 超过10秒后,断开连接% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed2  2381    2    50    0     0      4      0  0:09:55  0:00:10  0:09:45     4
curl: (28) Operation timed out after 10103 milliseconds with 50 out of 2381 bytes received
<!DOCTYPE html>
<!--STATUS OK--><html> <head><met
### 或
[root@iZ28xbsfvc4Z ~]# curl -m 10 https://www.zhangXX.com | head   # 超过10秒后,断开连接% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed0     0    0     0    0     0      0      0 --:--:--  0:00:10 --:--:--     0
curl: (28) Connection timed out after 10001 milliseconds

显示抓取错误

当我们请求访问失败时或者没有该网页时,网站一般都会给出一个错误的提示页面。

如果我们不需要这个错误页面,只想得到简洁的错误信息。那么可以通过 -f, --fail 选项实现。

[root@iZ28xbsfvc4Z 20190713]# curl http://www.zhangblog.com/201912312
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.14.2</center>
</body>
</html>
[root@iZ28xbsfvc4Z 20190713]# curl -f http://www.zhangblog.com/201912312  # 得到更简洁的错误信息
curl: (22) The requested URL returned error: 404 Not Found

表单登录与cookie使用

参见:「Linux curl 表单登录或提交与cookie使用」

文件上传与下载

涉及 FTP 服务,简单快速搭建可参考:《CentOS7下安装FTP服务》「https://www.cnblogs.com/zhi-leaf/p/5983550.html」

文件下载

网页文件下载

# 以进度条展示,而不是进度表展示
[root@iZ28xbsfvc4Z 20190715]# curl -# -o tmp.data2 http://www.zhangblog.com/uploads/tmp/tmp.data
######################################################################## 100.0%

FTP文件下载

说明1:其中 ftp1 用户是ftp服务端的账号,具体家目录是:/mnt/ftp1

说明2:当我们使用 curl 通过 FTP 进行下载时,后面跟的路径都是:当前使用的 ftp 账号家目录为基础的相对路径,然后找到的目标文件。

示例1

# 其中 tmp.data 的绝对路径是:/mnt/ftp1/tmpdata/tmp.data ;ftp1 账号的家目录是:/mnt/ftp1
# 说明:/tmpdata/tmp.data 这个路径是针对 ftp1 账号的家目录而言的
[yun@nginx_proxy01 20190715]$ curl -O ftp://ftp1:123456@172.16.1.195:21/tmpdata/tmp.data
# 或者
[yun@nginx_proxy01 20190715]$ curl -O -u ftp1:123456 ftp://172.16.1.195:21/tmpdata/tmp.data% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100 2048M  100 2048M    0     0  39.5M      0  0:00:51  0:00:51 --:--:--  143M

示例2

# 其中 nginx-1.14.2.tar.gz 的绝对路径是:/tmp/nginx-1.14.2.tar.gz ;ftp1 账号的家目录是:/mnt/ftp1
# 说明:/../../tmp/nginx-1.14.2.tar.gz 这个路径是针对 ftp1 账号的家目录而言的
[yun@nginx_proxy01 20190715]$ curl -O ftp://ftp1:123456@172.16.1.195:21/../../tmp/nginx-1.14.2.tar.gz
# 或者
[yun@nginx_proxy01 20190715]$ curl -O -u ftp1:123456 ftp://172.16.1.195:21/../../tmp/nginx-1.14.2.tar.gz% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  991k  100  991k    0     0  5910k      0 --:--:-- --:--:-- --:--:-- 5937k

文件上传

FTP文件上传

可以通过 -T, --upload-file <file> 选项实现。

说明1:其中 ftp1 用户是ftp服务端的账号,具体家目录是:/mnt/ftp1

# 其中 tmp_client.data 是客户端本地文件;
# /tmpdata/ 这个路径是针对 ftp1 账号的家目录而言的,且上传时该目录必须是存在的,否则上传失败。
# 因此上传后文件在ftp服务端的绝对路径是:/mnt/ftp1/tmpdata/tmp_client.data
[yun@nginx_proxy01 20190715]$ curl -T tmp_client.data ftp://ftp1:123456@172.16.1.195:21/tmpdata/
# 或者
[yun@nginx_proxy01 20190715]$ curl -T tmp_client.data -u ftp1:123456 ftp://172.16.1.195:21/tmpdata/% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100 2048M    0     0  100 2048M      0  95.4M  0:00:21  0:00:21 --:--:-- 49.3M

断点续传

使用 -C, --continue-at <offset> 选项实现。其中使用 “-C -”「注意有空格和无空格的情况」,告诉curl自动找出在哪里/如何恢复传输。

网页端断点续传下载

curl -C - -o tmp.data http://www.zhangblog.com/uploads/tmp/tmp.data   # 下载一个 2G 的文件

FTP断点续传下载

细节就不多说了,可参见上面的「FTP文件下载」

curl -C - -o tmp.data1 ftp://ftp1:123456@172.16.1.195:21/tmpdata/tmp.data  # 下载一个 2G 的文件
# 或则
curl -C - -o tmp.data1 -u ftp1:123456 ftp://172.16.1.195:21/tmpdata/tmp.data  # 下载一个 2G 的文件

分段下载

有时文件比较大,或者难以迅速传输,而利用分段传输,可以实现稳定、高效并且有保障的传输,更具有实用性,同时容易对差错文件进行更正。

可使用 -r, --range <range> 选项实现。

如下示例使用了同一张图片,大小为 18196 字节。

网页端分段下载

分段下载

[root@iZ28xbsfvc4Z 20190715]# curl -I http://www.zhangblog.com/uploads/hexo/00.jpg   # 查看文件大小
HTTP/1.1 200 OK
Server: nginx/1.14.2
Date: Mon, 15 Jul 2019 03:23:44 GMT
Content-Type: image/jpeg
Content-Length: 18196   # 文件大小
Last-Modified: Fri, 05 Jul 2019 08:04:58 GMT
Connection: keep-alive
ETag: "5d1f04aa-4714"
Accept-Ranges: bytes
### 分段下载一个文件
[root@iZ28xbsfvc4Z 20190715]# curl -r 0-499   -o 00-jpg.part1 http://www.zhangblog.com/uploads/hexo/00.jpg
[root@iZ28xbsfvc4Z 20190715]# curl -r 500-999 -o 00-jpg.part2 http://www.zhangblog.com/uploads/hexo/00.jpg
[root@iZ28xbsfvc4Z 20190715]# curl -r 1000-   -o 00-jpg.part3 http://www.zhangblog.com/uploads/hexo/00.jpg

查看下载文件

[root@iZ28xbsfvc4Z 20190715]# ll
total 36
-rw-r--r-- 1 root root   500 Jul 15 11:25 00-jpg.part1
-rw-r--r-- 1 root root   500 Jul 15 11:25 00-jpg.part2
-rw-r--r-- 1 root root 17196 Jul 15 11:26 00-jpg.part3

文件合并

[root@iZ28xbsfvc4Z 20190715]# cat 00-jpg.part1 00-jpg.part2 00-jpg.part3 > 00.jpg
[root@iZ28xbsfvc4Z 20190715]# ll 00.jpg
total 56
-rw-r--r-- 1 root root 18196 Jul 15 11:29 00.jpg

FTP分段下载

分段下载

[yun@nginx_proxy01 20190715]$ curl -r 0-499   -o 00-jpg.part1 ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg
[yun@nginx_proxy01 20190715]$ curl -r 500-999 -o 00-jpg.part2 ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg
[yun@nginx_proxy01 20190715]$ curl -r 1000-   -o 00-jpg.part3 ftp://ftp1:123456@172.16.1.195:21/tmpdata/00.jpg

查看下载文件

[yun@nginx_proxy01 20190715]$ ll 00-jpg.part*
-rw-rw-r-- 1 yun yun   500 Jul 15 17:59 00-jpg.part1
-rw-rw-r-- 1 yun yun   500 Jul 15 18:00 00-jpg.part2
-rw-rw-r-- 1 yun yun 17196 Jul 15 18:00 00-jpg.part3

文件合并

[yun@nginx_proxy01 20190715]$ cat 00-jpg.part1 00-jpg.part2 00-jpg.part3 > 00.jpg
[yun@nginx_proxy01 20190715]$ ll 00.jpg
-rw-rw-r-- 1 yun yun 18196 Jul 15 18:02 00.jpg

推荐阅读

Linux curl 命令详解

Linux curl 常用示例

Linux curl 表单登录或提交与cookie使用


Linux curl 常用示例相关推荐

  1. Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选

    作者 | LightZhang666 责编 | 屠敏 出品 | CSDN 博客 本篇文章包含了curl的常用案例使用. 常见网页访问示例 基本用法 访问一个网页: curl https://www.b ...

  2. curl get请求_Linux curl 常用示例你都 Get 了吗?| CSDN 博文精选

    作者 | LightZhang666责编 | 屠敏出品 | CSDN 博客本篇文章包含了curl的常用案例使用.常见网页访问示例基本用法访问一个网页: curl https://www.baidu.c ...

  3. linux ar指令,Linux ar命令介绍 和常用示例

    制作静态库要用到ar命令,命令格式: ar [-]{dmpqrtx}[abcfilNoPsSuvV] [membername] [count] archive files... {dmpqrtx}中的 ...

  4. linux curl命令详解(附使用示例)

    Linux curl命令详解 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称u ...

  5. linux系统 常用命令(全面总结)

    文章目录 Linux 之 文件目录 工作机制 Linux命令 之 文件目录管理 2.1 目录管理 2.1.1 cd 2.1.2 ls 2.1.3 pwd 2.1.4 mkdir 2.1.5 rmdir ...

  6. linux curl 命令模拟 http get post 请求

    get post 提交的数据 地址 和步骤 需要用使用 burpsuite 先获取 再使用curl模拟请求 通过get方法请求: curl protocol://address:port/url?ar ...

  7. Linux网络常用工具分类介绍

    Linux网络命令较多,单纯的介绍网络命令的用法也没什么意思.本文将常见的网络命令进行分类,并做出思维导图,对每个分类的命令选择性的介绍其作用.常见选项和用法举例.BTW,不建议记住所有命令,了解一下 ...

  8. linux指令笔试,Linux笔试常用命令

    Linux笔试常用命令 时间:2019-01-01 [www.unjs.com - 资料大全] 文件操作命令 ls 作用:列目录,Linux笔试常用命令>(https://www.unjs.co ...

  9. 前端在linux中常用的命令,前端应该会的23个linux常用命令

    前言 一个前端好好切图不好吗?为什么要学 linux 呢? 嗯,真香 ! 1. ls 命令 : 显示目录内容列表 Linux ls 命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录 ...

最新文章

  1. 【译】Why Decentralized AI Matters Part III: Technologies
  2. 完整的Ubuntu18.04深度学习GPU环境配置,英伟达显卡驱动安装、cuda9.0安装、cudnn的安装、anaconda安装
  3. C++中的inline用法
  4. VB6.0中创建和使用文本资源文件
  5. 【转载】完全手册 Flex 3.0 RIA开发详解(光盘内容)(书下载以及书的源代码下载)...
  6. chinapub matlab,MATLAB 2020从入门到精通
  7. MUI打开App提示音,安卓手机。mui框架。提示音
  8. oracle中同义词的用法,Oracle中定义以及使用同义词的方法
  9. 银行家算法(C++实现)
  10. 入夏短裤热 教你怎么穿
  11. 使用office这么多年,但知道什么是office365吗?
  12. 单片机系统的电磁兼容性设计
  13. python mse_python 计算平均平方误差(MSE)的实例
  14. 如何学好编程(一):什么叫编程
  15. 线性代数的一些知识点
  16. chrome inspect无法识别到手机解决方案之一
  17. 理工科学生看点什么书比较好
  18. kaldi timit 语音库在线解码应用
  19. 龙尚科技借力中国移动布局物联网“大连接”
  20. 使用python求解混合整数规划问题

热门文章

  1. 使用MySQL可视化客户端,例如SQLyog,Navicat等,只编写SQL语句,使用2的N次方原理,快速初始化百万千万条数据
  2. 从工作量证明(POW)到高阶工作量证明(HPOW)
  3. 8.3 有效工作量证明
  4. 如何才能成为一个程序员
  5. 971. 翻转二叉树以匹配先序遍历
  6. 为什么要学Markdown?有什么用?
  7. vmware 上网问题解决
  8. 【华人学者风采】毛景文 中国地质科学院
  9. 解决oracle11卸载,Oracle11完全卸载方法
  10. 系统的零点、极点物理含义