Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >nginx location配置

nginx location配置

作者头像
腾讯IVWEB团队
发布于 2020-09-22 03:14:30
发布于 2020-09-22 03:14:30
3.7K10
代码可运行
举报
运行总次数:0
代码可运行

编写本文时,使用的nginx版本为nginx/1.17.9和nginx/1.16.1

路由匹配规则

location路由匹配的大致规则:location [=|^~|~|~*|@] path { ... }

如果大家对这块内容比较熟悉了,可以直接到优先级疑惑点这里看一个比较奇怪的匹配逻辑。

精确匹配(=)

location配置的path和客户端请求的path完全一致时匹配成功。

匹配成功后,nginx就会停止搜索其他匹配项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;

  location = /test {
    return 200 '=';
  }
}
  • 请求localhost:2020/test,匹配成功,响应内容为"="
  • 请求localhost:2020/test?num=1,匹配成功,响应内容为"="
  • 请求localhost:2020/test/,匹配失败,响应状态码404
  • 请求localhost:2020/test/1,匹配失败,响应状态码404

前缀匹配(^~)

location配置的path为客户端请求的path前缀时匹配成功。

匹配成功后,nginx还会判断是否存在后面这种情况{(location修饰符为^~ || location没有修饰符) && location配置的path是客户端请求的前缀},如果存在,就使用匹配项最多的作为最后的匹配结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;

  location ^~ /test {
    return 200 '^~';
  }
}
  • 请求localhost:2020/test,匹配成功,响应内容"^~"
  • 请求localhost:2020/test/1,匹配成功,响应内容"^~"
  • 请求localhost:2020/test111,匹配成功,响应内容"^~"
  • 请求localhost:2020/tes,匹配失败,响应状态码404
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;

  location ^~ /test {
    return 200 '/test';
  }

  location ^~ /test/1 {
    return 200 '/test/1';
  }
}
  • 请求localhost:2020/test,匹配成功,响应内容"/test"
  • 请求localhost:2020/tes,匹配成功,响应内容"/test"
  • 请求localhost:2020/test/1,匹配成功,响应内容"/test/1"。这里两个location配置都匹配上了,第一个location匹配项为1,第二个location匹配项为2,由于nginx选用匹配项最多的location,所以响应内容"/test/1"。

正则匹配(~ 和 ~*)

修饰符~,正则匹配区分大小写。修饰符~*,正则匹配不区分大小写。

正则匹配以location在文件中的定义顺序从上到下进行匹配。匹配成功以后,nginx就停止搜索其他匹配项。

注意:mac os文件系统大小写不敏感,因此nginx服务配置的location path不区分大小写,nginx使用~和~效果是一样的。linux文件系统大小写敏感,因此nginx服务区分大小写,nginx使用~和~效果与前面介绍的效果一致。

~例子
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;

  location ~ /test_a {
    return 200 '~';
  }
}
  • 请求localhost:2020/test_a,匹配成功,响应内容"~"
  • 请求localhost:2020/test_A,匹配成功和失败都有可能,得看nginx服务所在的系统对于大小写是否敏感。mac os系统下,匹配成功,响应内容"~";linux系统下,匹配失败,响应状态码404。
~*例子
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;

  location ~* /test_a {
    return 200 '~*';
  }
}
  • 请求localhost:2020/test_a,匹配成功,响应内容"~*"
  • 请求localhost:2020/test_A,匹配成功,响应内容"~*"

优先级

注:优先级从上到下依次递减。

  1. 精确匹配(=)
  2. 前缀匹配(^~)
  3. 正则匹配(~和~*)
  4. 通配符路径(没有任何修饰符,只有一个通配符路径"/")

下面我们使用不同的location配置组合来匹配location:2020/test_a这个请求。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;

  location ^~ /test_a {
    return 200 '^~';
  }

  location = /test_a {
    return 200 '=';
  }
}
  • 请求localhost:2020/test_a,匹配成功,响应内容"=",精确匹配优先级比前缀匹配优先级大

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;

  location ~ /test_a {
    return 200 '~';
  }

  location ^~ /test_a {
    return 200 '^~';
  }
}
  • 请求localhost:2020/test_a,匹配成功,响应内容"^~",前缀匹配优先级比正则匹配优先级大

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location / {
    return 200 '/';
  }

  location ~ /test_a {
    return 200 '~';
  }
}
  • 请求localhost:2020/test_a,匹配成功,响应内容"~",正则匹配优先级比通配符优先级大

优先级疑惑点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;

  location ^~ /test {
    return 200 '~';
  }
  
  location /test/a {
    return 200 'null';
  }
}
  • 请求localhost:2020/test/a,匹配成功,响应内容"null",可以知道第二个location配置优先级比前缀优先级大,这个在前面前缀匹配有介绍。

我们将配置改成下面这个内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location /test {
    return 200 'null';
  }

  location ^~ /test {
    return 200 '~';
  }
}

然后运行nginx -t来检测配置文件是否正确,得到的结果是:nginx: [emerg] duplicate location "/test" in ...,这里的意思是路径为/test的location重复了。看到这里,原本以为"^~"是nginx定义location时默认的修饰符,但是,实际可能并不是,我们看下面的例子。


代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location ~ /test {
    return 200 '~';
  }
  
  location /test/a {
    return 200 'null';
  }

  location ^~ /test {
    return 200 '~';
  }
}
  • 请求localhost:2020/test/a,匹配成功,响应内容"~"(what?为什么返回的不是"null"),这里三个都匹配上了,但是nginx选用的是正则匹配结果,这个我不知道是什么原因,如果有大佬知道原因,还请大佬帮忙解惑。

location常用的参数

root & alias

两个参数都是用来指定文件路径。

注:之前很多文章都表示alias配置的路径最后必须加上"/",这个到现在已经不适用了。我测试的时候,alias配置的路径最后不添加"/",一样可以正常使用。

最终指向的文件路径区别
  • root指向的文件实际路径:root+location
  • alias指向的文件实际路径:alias
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location /test {
    root /data;
  }
}

最终指向的文件路径为/data/test

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location /test {
    alias /data;
  }
}

最终指向的文件路径为/data;

使用上面的配置,我们发起请求localhost:2020/test/1.png

  • root配置,该请求查找的文件路径为/data/test/1.png
  • alias配置,该请求查找的文件路径为/data/1.png
定义位置区别
  • root可以在http、server、location、if中定义内容
  • alias只能在location中定义

root在http、server定义以后,location会默认继承上层定义的内容,可以在location中使用root对上层root定义进行重写,或者使用alias让上层root在该lcation中失效。

正则匹配时定义区别
  • root:按照前面说的方式使用
  • alias:需要将正则匹配的内容添加到alias定义的路径后面,具体的例子如下
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location ~ /test {
    alias /data;
  }
}

请求localhost:2020/test/1.png,匹配成功,但是没有找到文件内容,响应404

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location ~ /test(.*)$ {
    alias /data$1;
  }
}

请求localhost:2020/test/1.png,匹配成功,能够正常返回文件

proxy_pass

该参数用作反向代理,可以用来做负载均衡、前端解决跨域等功能。使用结构proxy_pass url

关于proxy_pass实现负载均衡,可以在nginx负载均衡中看到相关内容。

proxy_pass转发请求,配置的url最后是否有"/",会呈现不同的效果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location /api/ {
    proxy_pass http://localhost:7001;
  }
}

请求localhost:2020/api/component/list,nginx会将该请求代理转发到http://locahost:7001/api/component/list

应用场景:前端请求存在跨域,后端接口格式是api/业务路由,前端请求的接口也是api/业务路由

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location /api/ {
    proxy_pass http://localhost:7001/;
  }
}

请求localhost:2020/api/component/list,nginx会将该请求代理转发到http://locahost:7001/component/list

应用场景:后端接口格式是业务路由,前端请求的接口是api/业务路由,前端请求的接口前面加一个"api"是为了标识某个后端服务,后端接口中并没用这个标识。


代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location /api/ {
    proxy_pass http://localhost:7001/online;
  }
}

请求localhost:2020/api/component/list,nginx会将该请求代理转发到http://locahost:7001/onlinecomponent/list

应用场景:没遇到这样的场景,一般都会用都会用"/"隔开路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location /api/ {
    proxy_pass http://localhost:7001/online/;
  }
}

请求localhost:2020/api/component/list,nginx会将该请求代理转发到http://locahost:7001/online/component/list

rewrite

rewrite参数用来将客户端请求重定向到一个新的地址。使用格式rewrite regex replacement [flag];

  • regex(必填):正则匹配,只有正则匹配成功后,才能进行地址修改等后续步骤
  • replacement(必填):新的url(以http:// https:// $schema等开头)或者uri,正则匹配成功后会用这个值替换原来的请求地址。当replacement值是url时,客户端请求发生重定向,因此会有两次请求,第一次请求是客户端原请求,响应的状态码为302,第二次请求的地址就是replacement值,本次rewrite逻辑运行完成以后,后续的rewrite不再匹配;当replacement值为uri时,客户端请求可能发生重定向,是否发生重定向与flag参数有关
  • flag(可选)
    • break:本条rewrite逻辑运行完成以后,后续的rewrite不再匹配
    • last:本条rewrite逻辑运行完成以后,后续的rewrite不再匹配,重新开始location路由匹配
    • permanent:永久重定向,301
    • redirect:临时重定向,302

下面展示几个例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location / {
    rewrite /(.*) https://www.$1.com;
  }
}

请求localhost:2020/baidu,请求被重定向到https://www.baidu.com

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location / {
    rewrite (.*) https://www.baidu.com;
    rewrite (.*) https://www.github.com;
  }
}

请求localhost:2020,请求被重定向到https://www.baidu.com,查看network,里面有一条http://localhost:2020/请求,响应的状态码为302,还以一条https://www.baidu.com/请求。


代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location / {
    rewrite (.*) /test redirect; # permanent也是可以的
  }
  
  location /test {
    return 200 'ok';
  }
}

请求localhost:2020,请求被重定向到http://localhost:2020/test,network中有两条请求分别是响应状态码302(flag值为permanent时,状态码为301)的http://localhost:2020/请求和响应状态码为200的http://localhost:2020/test请求。


flag值为break或last都会终止后续rewrite匹配(不会终止proxy_pass等逻辑),两者不同的点是,break不会发起一轮新的location路由匹配,而last会发起一轮新的location匹配。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location /last {
    rewrite /last(.*) /test1;
    rewrite /test1(.*) /test2 last;
    rewrite /test2(.*) /test3;
  }
  
  location /break {
    rewrite /break(.*) /test1;
    rewrite /test1(.*) /test2 break;
    rewrite /test2(.*) /test3;
  }

  location /test1 {
    return 200 'test1';
  }

  location /test2 {
    return 200 'test2';
  }

  location /test3 {
    return 200 'test3';
  }
}
  • 请求localhost:2020/last,响应内容"test2"。这个请求被location /last {...}匹配成功,因为rewrite /test1(.*) /test2 last这里flag为last,所以这条rewrite逻辑运行完以后,就会忽略后续的rewrite,然后重新location路由匹配,重新匹配时请求变成http://localhost:2020/test2,因此会被location /test2 {}这条location匹配,所以响应内容为"test2"。
  • 请求localhost:2020/break,响应状态码为404。这个请求被location /break {...}匹配成功,因为rewrite /test1(.*) /test2 break这里flag为break,所以这条rewrite逻辑运行完以后,就会忽略后续的rewrite,执行完当前location后还是没有找到资源文件,因此返回状态码"404"。

将上面例子中location /break {...}这部分内容修改一下,修改成如下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location /break {
    rewrite /break(.*) /test1;
    rewrite /test1(.*) /test2 break;
    rewrite /test2(.*) /test3;
    
    proxy_pass http://localhost:2020;
}
  • 请求localhost:2020/break,响应内容"test2",rewrite语句中flag值为break,不会影响proxy_pass语句,因此localhost:2020/break实际会代理转发到localhost:2020/test2这个地址。

如果rewrite部分内容没有看懂,可以到搞懂nginx的rewrite模块查看更详细的介绍。

index

index用于指定网站的起始页面,默认值index index.html;

index参数只是用来指定文件的路径,nginx根据index参数查找文件是否存在,如果存在就用文件路径拼接成新的url,nginx内部重定向到这个新的url,来获取到起始页面资源。下面用具体的例子来进行说明(/data/test目录下有一个index.html文件):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location / {
    root /data/test;
    index index.html;
  }
}

请求localhost:2020,响应内容为文件/data/test/index.html内容。

下面对配置文件添加一些内容,用来匹配html文件请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location / {
    root /data/test;
    index index.html;
  }
  
  location ~ \.html$ {
    return 200 'html文件请求拦截';
  }
}

请求localhost:2020,响应内容"html文件请求拦截"。这个例子很好的说明nginx内部会将初始页文件路径生成一个新的url,nginx内部重定向到这个新的url请求初始页文件。


index后面可以跟多个文件路径,当前一个文件不存在时,nginx会自动判断后面文件是否存在。下面使用一个例子来展示(/data/test目录下只有idnex.php文件):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
  listen 2020;
  
  location / {
    root /data/test;
    index index.html index.php;
  }
}

请求localhost:2020,nginx会首先判断文件/data/test/index.html是否存在,如果存在,就使用这个文件路径来生成新的文件url,然后nginx内部重定向到这个文件资源;如果不存在,就判断/data/test/index.php文件是否存在,如果不存在就返回403,如果存在,就使用这个文件路径来生成新的文件url,然后nginx内部重定向到这个文件资源。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
server { listen 2020; location ^~ /test { return 200 '/test'; } location ^~ /test/1 { return 200 '/test/1'; }}localhost/tes匹配不到这个的 这里错了
server { listen 2020; location ^~ /test { return 200 '/test'; } location ^~ /test/1 { return 200 '/test/1'; }}localhost/tes匹配不到这个的 这里错了
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
赠书 | 人工智能会是下一个新物种吗?
文中有数据派THU福利哦 人工智能的概念最早提出于20世纪五十年代中期,在随后几十年的时间里,人们对人工智能的态度发生了极大的转变,从极端的怀疑主义变为积极的乐观主义。 然而上个世纪的人工智能并没有发挥人们预期中的作用,人工智能发展陷入“寒冬”,现如今,随着技术突破大量涌现、深入学习等软件的引入,我们迎来了“人工智能之春”,可以说,我们正处于一个前所未有的人工智能全盛时代。 那么未来的人工智能将如何发展?《逃不开的经济周期》作者拉斯·特维德,在他的新作《逃不开的大势》中大胆地提出了他的判断: 人类能驾驭A
数据派THU
2022/05/12
2460
赠书 | 人工智能会是下一个新物种吗?
人工智能将赋能哪些行业(三)
参考来源 / IEC:《Artificial intelligence across industries》白皮书
AI 电堂
2020/10/27
5270
人工智能将赋能哪些行业(三)
利用人工智能系统跟踪候鸟
全球每年有数以千万计的鸟类在冬季迁徙。美国国家气象局利用159个陆基雷达对天空进行扫描,这些雷达每4到10分钟发射一次微波脉冲,并根据雷达反馈的数据计算它们的位置。然而,生物学家历来很难利用这些数据,因为它们的规模非常大,在几十年的时间里,它们的测量数据多达数亿张图像和数千万兆的字节。
AiTechYun
2019/09/03
7570
利用人工智能系统跟踪候鸟
人工智能从何开始,三分钟了解AI发展史
世界由一小部分勇于尝试新鲜事物的人决定,他们引领了社会看势跟风的主流人群。这些人不是守护者,而是探索者,从改变自己的生活开始。 1958年,中国有了电视,但只有一个频道。 氨制冷机发明了一个世纪后,中国才出现了第一台空调。 1987年中国第一台手机像砖头一样大,售价38000元。 …… 20世纪50年代人工智能诞生了,在长达半个世纪的发展中,人工智能都经历了什么呢? 改变源自心中叛逆和不随人后的想法 智能时代的到来,机器人越来越多的参与到我们的生活和工作中,而人工智能(Artificial Intell
企鹅号小编
2018/01/30
1.8K0
人工智能从何开始,三分钟了解AI发展史
人工智能时代来袭,人类该恐慌还是该冷静?
数据猿导读 虽然人工智能恐慌论一直存在,但随着技术的不断成熟与应用,不管我们是否乐意,人工智能时代已经到来!关于人类是否会被人工智能所取代的再度讨论,此时似乎也并不为过,而且还变得更加意味深长。 记者
数据猿
2018/04/23
6400
人工智能时代来袭,人类该恐慌还是该冷静?
一场会议,两场棋局,三门学派,5个阶段带你了解波澜壮阔的人工智能发展史(下)
说现在到哪个阶段,需要知道一共有几个阶段。关于人工智能的发展,大概有五个阶段:记忆和计算;感知与认知;分析与推理;发明与创造;具有意识的机器[1]。当然,不同的阶段之间并没有明显的界限。
用户9861443
2024/04/15
2390
一场会议,两场棋局,三门学派,5个阶段带你了解波澜壮阔的人工智能发展史(下)
这是一篇关于人工智能的最强科普!
内容来源:The AI Revolution:Road to Superintelligence & The AI Revolution:Our Immortality or Extinction
用户9861443
2024/04/15
1290
这是一篇关于人工智能的最强科普!
人工智能---开启未来
转自:人民邮电报社 近年来,人工智能浪潮席卷全球。不久前,谷歌AlphaGo大胜世界围棋冠军李世石,更是引发激烈讨论。阿姆斯特朗曾经说过:“我们对下一年作出太多预测,而对未来十年却预测得太少。”未来是
昱良
2018/04/04
1.1K0
人工智能---开启未来
人工智能和机器学习有何不同
在过去几年中,人工智能和机器学习这两个术语已经开始在技术新闻和网站中频繁出现。通常这两者被用作同义词,但许多专家认为它们具有微妙但真正的差异。
架构师研究会
2019/06/02
4620
震惊!恐惧!人工智能又一次颠覆世界的企图被挫败!
数据猿导读 将好莱坞电影奉为圭臬,幻想人工智能占领世界的幻想家们又编造出了怎样的噱头? 作者 | 大文 本文长度为2000字,建议阅读4分钟 “震惊!恐惧!害怕!人工智能发展出了自己的语言,绕开人类语
数据猿
2018/04/19
7760
震惊!恐惧!人工智能又一次颠覆世界的企图被挫败!
如何证明人工智能有没有觉醒
上一篇文章中,我们回顾了今年的一个大新闻:谷歌一个名为 LaMDA 的人工智能聊天机器人据称拥有了人的情感,这会是真的吗?
用户3147702
2022/09/23
5880
如何证明人工智能有没有觉醒
漫画:什么是人工智能?
人工智能(Artificial Intelligence),英文缩写为AI,它是研究、开发用于模拟和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。
小灰
2022/07/05
7990
漫画:什么是人工智能?
AI人工智能的发展史
艾伦·图灵(Alan Turing),被誉为人工智能之父,是英国的数学家、逻辑学家、密码学家和计算机科学家。他在第二次世界大战期间对盟军破译德军密码做出了巨大贡献,研制了破译专用的电子管计算机“巨工”。图灵在1950年提出了著名的图灵测试,通过“问”与“答”模式,观察者通过打字机与两个试验对象通话,其中一个是人,另一个是机器,以此来判断机器是否具备智能。
用户11026630
2024/09/19
8306
专访 | 微软的野望:由小冰开始的人工智能革命
编者注: 洪小文博士师从图灵奖获得者拉吉·瑞迪(Raj Reddy),而拉吉·瑞迪则是人工智能领域的奠基人和拓荒者约翰·麦卡锡(John McCarthy)的学生。洪小文博士从事人工智能相关研究近30年,是国际公认的语音识别专家。本文分享了洪博士探索创新的心路历程,深入探讨了人工智能与人类的关系,以及人工智能将在什么情况下与人类“分道扬镳”。 人物介绍: 洪小文博士现为微软全球资深副总裁,微软亚太研发集团主席兼微软亚洲研究院院长,全面负责推动微软在亚太地区的科研及产品开发战略,以及与中国及亚太地区学术界的合
AI科技评论
2018/03/07
8410
专访 | 微软的野望:由小冰开始的人工智能革命
人工智能发展的S曲线
王鹏鲲:过去的半个世纪,人类并没有发明能像人一样解决所有问题的机器,而是发明了许多只解决某个问题的机器,这就是自动化的精髓:代替。 尽管对AI的讨论无处不在,对其前景却并没有共识。有人说AI是未来,未
WZEARW
2018/04/13
1.4K0
人工智能发展的S曲线
人工智能领域研发热点回眸
人工智能还有许多亟待发展和研究的方向。它的以下特点推动它在第三次发展浪潮中前往更具突破性的阶段,分别为:
不去幼儿园
2024/12/03
760
人工智能领域研发热点回眸
人工智能时代正在开启
本文阐述了人工智能时代的到来,智能机器正逐步融入人类社会。通过回顾人工智能的发展历程,展望其未来前景,同时提醒人们关注人工智能所带来的挑战和问题。
企鹅号小编
2018/01/02
6750
来自人工智能的十大挑战,你们人类准备好了吗?
人工智能正在改变世界,而关键是人类应该如何塑造人工智能。我们在“热”推进的同时,必须进行“冷”思考。本文立足于哲学视域,来探讨智能化社会有可能带来的十大挑战。
IT派
2018/07/30
5240
来自人工智能的十大挑战,你们人类准备好了吗?
为您介绍人工智能的前世今生
人工智能的秘密
2018/01/04
1K0
七宗罪:我们是如何错误预估人工智能的
大数据文摘作品 编译:惊蛰、新知之路、王一丁、张南星、于乐源、蒋宝尚 荒谬的预估往往会导致对未来的恐惧。而为什么有人会对AI和机器人的技术前景如此恐慌?下文中,这七种错误往往导致AI和机器人前景的荒谬预测。 很多人对人工智能和机器人行业的快速发展感到十分焦虑,一部分人担心他们很快会变得过于强大,也有一部分人担心他们会对人类现在的工作体系产生冲击。 Market Watch上有人宣扬机器人将在十到二十年内占据现今大部分工作,甚至还发布了一张满是数据的图片当作论据。 机器人将在十到二十年内占据现今大部分工作 这
大数据文摘
2018/05/23
5550
相关推荐
赠书 | 人工智能会是下一个新物种吗?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验