python3 rid1.7.4.2 控制台中文乱码_TL;DR - 有关 Python 2 和 Sublime Text 中文 Unicode 编码问题的分析与理解...

TL;DR

问题背景:

相信很多用 Sublime Text 来写 Python 2 的同学都遇到过以下这个问题(例如这位同学 /t/100435 和这位同学/t/163012 ):

在 Sublime Text 里用 Cmd (Ctrl) + B 运行代码 print u'中文',想要打印出 unicode 类型的字符串时,会出现以下报错:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

传说中的 Python 2 编码坑(笑)

而同样的 print u'中文' 代码在 Mac 的终端里却能正常打印出 “中文” 结果,没有任何报错。

虽然在网上能查到多种解决方法,但一直以来知其然而不知其所以然,不了解为什么那些方法能解决问题的真正原因,也不知道为什么同样的代码在终端里就可以运行而在 Sublime Text 里就不行了?

因此我研究学习了下这个问题相关的一些 Python 2 编码问题,在这里分享下我的理解。

以下属于新手向,参考了网上多篇文章,如有错误,望指正。

先说下我的环境:

Mac OS X

Python 2.7

Sublime Text 3

分析:

Python 在向控制台 (console) print 的时候,因为控制台只能看得懂由 bytes(字节序列)组成的字符串,而 Python 中 "unicode" 对象存储的是 code points(码点),因此 Python 需要将输出中的 "unicode" 对象用编码转换为储存 bytes(字节序列)的 "str" 对象后,才能进行输出。

而在报错里看到 UnicodeEncodeError, 那就说明 Python 在将 unicode 转换为 str 时使用了错误的编码。而为什么是 'ascii' 编码呢?那是因为 Python 2 的默认编码就是 ASCII,可以通过以下命令来查看 Python 的默认编码:

>>> import sys

>>> print sys.getdefaultencoding()

ascii

所以此时在 Sublime Text 里运行 print u'中文',实际上等于是运行了:

print u'中文'.encode('ascii')

ASCII 编码无法对 unicode 的中文进行编码,因此就报错了。

那为什么同样的代码 print u'中文' 在 Mac 的终端里却能正常输出中文,难道是因为终端下的 Python 2 的默认编码不是 ASCII?非也,在终端下运行 sys.getdefaultencoding() 结果一样是 ascii。那同样是 ascii 为什么会有不同的结果?难倒这里 Python 用了另外一个编码来转换?

是的,其实 Python 在 print unicode 时真正涉及到的是另一组编码:stdin/stdout/stderr 的编码,也就是标准输入、标准输出和标准错误输出的编码。可以通过以下命令来查看,这里是在我的终端下运行的结果:

>>> import sys

>>> print sys.stdin.encoding

UTF-8

>>> print sys.stdout.encoding

UTF-8

>>> print sys.stderr.encoding

UTF-8

在正常情况下,Python 2 在 print unicode 时用来转换的编码并不是 Python 的默认编码 sys.getdefaultencoding(),而是 sys.stdout.encoding 所设的编码。

因为在我的终端下 Python 的 sys.stdout.encoding 编码是 UTF-8,所以在终端里运行 print u'中文' 时,实际上是等于运行了:

print u'中文'.encode('UTF-8')

编码正确,运行正常,因此没有报错。

在类 UNIX 系统下,Python 应该是通过环境变量 LC_CTYPE 来判断 stdin/stdout/stderr 的编码的。因此一般只要将 shell 的 LANG 环境变量设置对为 **_**.UTF-8 后,应该就能在终端里直接 print 出 unicode 类型的字符串了,而不需要在 print 时手动加上 .encode('utf-8') 进行编码了。

但在 Sublime Text 里事情就没那么美好了。在 Sublime Text 里运行查看 stdout 编码的命令,发现:

import sys

print sys.stdout.encoding

-----------------------------"""

None

[Finished in 0.1s]

结果甚至不是 'ascii' 而是 None。可能是因为 Sublime Text 的 Build System 是用 subprocess.Popen 来运行 Python 的,导致 Python 无法判断出正确的 stdin/stdout/stderr 编码,于是都变成 None 了。

这种情况也发生在输出的目标是管道的情况下:

$python -c 'import sys; print sys.stdout.encoding' | tee /tmp/foo.txt

None

那么在这种 sys.stdout.encoding 为 None 情况下的 print unicode 怎么办呢?答案就是 Python 只能很无奈地使用 sys.getdefaultencoding() 的默认编码 ascii 来对 unicode 进行转换了。这样就出现了本文开头所说的那个 UnicodeEncodeError 问题。

总结一下 Python 2 向控制台 print 输出时的流程:

Python 启动时,当它发现当前的输出是连接到控制台的时候,它会根据一些环境变量,例如环境变量 LC_CTYPE,来设法判断出 sys.stdin/stdout/stderr.encoding 编码值。

当 Python 无法判断出所需的编码时,它会将 sys.stdin/stdout/stderr.encoding 的值设置为 None。

print 时判断字符串是否是 unicode 类型。

如果是的话,并且 sys.stdout.encoding 不为 None 时,就使用 sys.stdout.encoding 编码对 unicode 编码成 str 后输出。

如果 sys.stdout.encoding 为 None 的话,就使用 sys.getdefaultencoding() 默认编码来对 unicode 进行转换成 str 后输出。

if sys.stdout.encoding:

print unicode.encode(sys.stdout.encoding)

else:

print unicode.encode(sys.getdefaultencoding())

解决方法:

解决方法 1:

先说最不正确的解决方法:在文件头部加上

import sys

reload(sys)

sys.setdefaultencoding('utf-8')

这种方法通过 dirty hack 的方式在 Python 刚启动时更改了 Python 的默认编码为 utf-8。此后:

>>> print sys.getdefaultencoding()

utf-8

但就本文所讨论的问题来说,这个方法并不是真正地直接解决了问题。就如上述所说,Python 只是在 sys.stdout.encoding 为 None 时才会使用默认编码来转换需要 print 的 unicode 字符串。那万一在 sys.stdout.encoding 存在,但为 ascii 的情况下呢?这样即使更改了 Python 的默认编码,同样还是会出现 UnicodeEncodeError 报错。所以对本问题来说,这个方法治标不治本。

除此之外,很多人都用这个方法来解决 Python 2 下遇到的其它各种各样的编码问题,在 v2ex 的各种 Python 编码问题讨论帖中也常常能见到有人推荐用这个方法来解决问题的。

但实际上很多大牛都不推荐用这个方法来解决 Python 2 的编码问题,这里引用下 StackOverflow 相关回答 里的一句话:

the use of sys.setdefaultencoding() has always been discouraged

为什么这个方法不被推荐呢?我们来看下 Python 文档里对这个 function 是怎么说的:

This function is only intended to be used by the site module implementation and, where needed, by sitecustomize. Once used by the site module, it is removed from the sys module’s namespace.

可以看到这个方法原本就不是用户向的方法,并没有打算让用户用这个方法来更改 Python 2 的默认编码。

那为什么不建议我们更改 Python 的默认编码呢?

这里引用 Python 核心开发者、Python Unicode 支持的设计者和实现者: Marc-André Lemburg,他在一个邮件列表上的回复:

The only supported default encodings in Python are:

Python 2.x: ASCII

Python 3.x: UTF-8

If you change these, you are on your own and strange things will

start to happen. The default encoding does not only affect

the translation between Python and the outside world, but also

all internal conversions between 8-bit strings and Unicode.

Hacks like what's happening in the pango module (setting the

default encoding to 'utf-8' by reloading the site module in

order to get the sys.setdefaultencoding() API back) are just

downright wrong and will cause serious problems since Unicode

objects cache their default encoded representation.

Please don't enable the use of a locale based default encoding.

If all you want to achieve is getting the encodings of

stdout and stdin correctly setup for pipes, you should

instead change the .encoding attribute of those (only).

--

Marc-Andre Lemburg

eGenix.com

从此可见,Python 2 唯一支持的内部编码只有 ASCII,更改其默认编码为其它编码可能会导致各种各样奇怪的问题。在这里他也说了使用 sys.setdefaultencoding() 的方法是彻彻底底的错误,正确的方法应该是更改 stdout 和 stdin 的编码。

所以这个方法是最不正确的填坑方法,请大家慎用。

解决方法 2:

然后说说应当是姿势最正确的、也是大家都懂的方法:

在 print 的时候显式地用正确的编码来对 unicode 类型的字符串进行 encode('正确的编码') 为 str 后, 再进行输出。

而在 print 的时候,这个正确的编码一般就是 sys.stdout.encoding 的值。但也正如上述所说,这个值并不是一直是可靠的,因此需要根据所使用的平台和控制台环境来判断出这个正确的编码。

而在 Mac 下这个正确的编码一般都是 utf-8,因此若不考虑跨环境的话,可以无脑地一直用 encode('utf-8') 和 decode('utf-8') 来进行输入输出转换。

在我的经验中,这个策略也是解决 Python 2 其它 unicode 相关编码问题的最佳方法。在 PyCon 2012 的一个演讲中(关于 Python Unicode 问题很好的一个演讲,这里有演讲稿的中文翻译版),对这个方法有一个很形象的比喻:

sCV7VzU.png

因为在程序中进进出出的只有存储 bytes(字节序列)的 str。因此最好的策略是将输入的 bytes 马上解码成 unicode,而在程序内部中均使用 unicode,而当在进行输出的时候,尽早将之编码成 bytes。

也就是要形成一个 Unicode 三明治(如图), bytes 在外, Unicode 在内。在边界的地方尽早进行 decode 和 encode。不要在内部混用 str 和 unicode,尽可能地让程序处理的字符串都为 Unicode。

解决方法 3:

虽然解决方法 2 是最正确的方式,但是有时候在 Sublime Text 里调试些小脚本,实在是懒得再在每个 print 语句后面写一个尾巴 .encode('utf-8')。那么有没有办法能让 Sublime Text 像在终端里一样直接就能 print u'中文' 呢?也就是说能不能解决 sys.stdin/stdout/stderr.encoding 为 None 的情况呢?

答案肯定是有的,一种方法是用类似更改默认编码的方法一样,用 dirty hack 的方式在 Python 代码中去显式地更改 sys.stdin/stdout/stderr.encoding 的值。一样是不推荐,我也没尝试过,在这里就不详说了。

另一种方法则是通过设置 PYTHONIOENCODING 环境变量来强制要求 Python 设置 stdin/stdout/stderr 的编码值为我们想要的,这是一个相对比较干净的解决方法。见文档:

PYTHONIOENCODING

Overrides the encoding used for stdin/stdout/stderr, in the syntax encodingname:errorhandler. The :errorhandler part is optional and has the same meaning as in str.encode().

New in version 2.6.

在 Mac 下对全局 GUI 程序设置环境变量的方法是:使用 launchctl setenv <, ...> 命令对所有 launchd 启动的未来子进程设置环境变量。

在这里顺便科普下,为什么对所有 launchd 启动的未来子进程设置环境变量可以使得对 Mac 下所有 GUI 程序生效。这是因为 launchd 是 OS X 系统启动后运行的第一个非内核进程。我们可以在 activity monitor(活动监视器)里看到,它的 pid 是很帅气的 1。而之后所有的进程都将是它的子进程。

另外还可以通过 launchd 在 Mac 下实现类 crontab 的功能。

launchctl setenv 命令设置的全局环境变量会在电脑重启后失效,因此就需要通过上面说的 launchd 的开机启动任务的功能来在重启后再设置一遍环境变量,其配置方法可以参考这里。也因为这个原因,我并没有使用这个方法来设置 PYTHONIOENCODING 环境变量。

而 Sublime Text 提供了一个设置 Build System 环境变量的方法,这个方法各平台的 Sublime Text 都适用。

设置 Sublime Text 的 Python Build System 环境变量的步骤如下:

将 Sublime Text 默认的 Python Build System 的配置文件 Python.sublime-build(找到这个文件的最好方法是安装插件 PackageResourceViewer)复制一份到 Sublime Text 的 /Packages/User 文件夹下(在 Mac 和 Sublime Text 3 下这个路径是 ~/Library/Application Support/Sublime Text 3/Packages/User)。

打开编辑新复制来的 Python.sublime-build 文件,如下加上一行设置 PYTHONIOENCODING 环境变量为 UTF-8 编码的内容,并保存:

{

"shell_cmd": "python -u \"$file\"",

"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

+ "env": {"PYTHONIOENCODING": "utf8"},

"selector": "source.python"

}

这样一来终于在这么长的文章后能在 Sublime Text 里直接运行 print u'中文',而不用再出现万恶的 UnicodeEncodeError 了。

既然都研究到这了,不妨我们试试把 PYTHONIOENCODING 设置成其它编码看看会出现什么情况,例如设置成简体中文 Windows 的默认编码 cp936:"env": {"PYTHONIOENCODING": "cp936"}

import sys

print sys.stdout.encoding

print u'你好'

----------------------------------"""

cp936

[Decode error - output not utf-8]

[Finished in 0.1s]

[Decode error - output not utf-8],这就是 Sublime Text 在 Windows 下可能会出现的问题(例如这两位同学 /t/45391 /t/88428 )。这是因为 Sublime Text 的 Build System 默认是用 utf-8 编码去解读运行的输出的,而我们指定了让 Python 用 cp936 编码来生成 str 字符串进行输出,那么就会出现 Sublime Text 无法识别输出的情况了。

同样在对终端 export PYTHONIOENCODING=cp936 后,在终端下 print u'你好' 输出的就会是 ��� 这样的乱码。

解决办法之一就是同样在 Python.sublime-build 文件里设置 "env": {"PYTHONIOENCODING": "utf8"} 来使得输出统一为 utf-8。

或者是更改 Sublime Text 的 Build System 所接受的输出编码,将其改为一致的 cp936 编码,同样也是更改 Python.sublime-build 文件,加入一行:

{

"shell_cmd": "python -u \"$file\"",

"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

+ "encoding": "cp936",

"selector": "source.python"

}

那我们再试试把这两个设置同时都加到 Python.sublime-build 文件里,也就是让 Python 输出 utf8 编码的字符串,而让 Sublime Text 用 cp936 编码来解读,看看会发生什么情况?

{

"shell_cmd": "python -u \"$file\"",

"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

+ "env": {"PYTHONIOENCODING": "utf8"},

+ "encoding": "cp936",

"selector": "source.python"

}

print u'你好'

----------------------"""

浣犲ソ

[Finished in 0.1s]

笑,居然不是 [Decode error - output not cp936],而是这么喜感的 “浣犲ソ”!

这是因为 “你好” 的 utf-8 编码刚好和 “浣犲ソ” 的 cp936 编码重合了,都是 '\xe6\xb5\xa3\xe7\x8a\xb2\xe3\x82\xbd',所以使用 cp936 编码去解读的 Sublime Text 就认为这段字符串就是 “浣犲ソ” 而显示了出来。

>>> print repr('浣犲ソ') # cp936 编码

'\xe6\xb5\xa3\xe7\x8a\xb2\xe3\x82\xbd'

>>> print repr(u'你好'.encode('utf-8')) # utf-8 编码

'\xe6\xb5\xa3\xe7\x8a\xb2\xe3\x82\xbd'

附带解决的问题:IDLE 的交互模式里无法输入中文

我偶尔会用 Python 2 自带的 IDLE 快速测试一两行代码,但在我的 Mac 下的 IDLE 交互模式里输入中文会出现报错:

>>> '中文'

Unsupported characters in input

这个问题在 v2ex 上同样有同学问过: /t/44975 ,而他是在 Windows 下出现的,所以这个问题可能是普遍的。我原本以为这个问题同样是因为上述的 stdin/stdout/stderr 的编码问题而造成,就想顺便解决掉。然而即使设置全局环境变量 PYTHONIOENCODING 为 utf-8 后仍旧不管用,IDLE 里输入中文还是会报错,sys.stdin.encoding 编码还依旧是 us-ascii。

后来搜索后发现,貌似这个问题是由 IDLE 输入输出的内部实现机制导致的,可能跟 stdin/stdout/stderr 没有关系。根据这里所说,IDLE 的交互模式下会根据机子的本地语言环境设置来判断编码,再用其对输入进行转换后再执行,而在我的 Mac 下这个编码是 ascii,所以导致了 Unsupported characters in input。

而我搜到了一个可行的解决方法,其通过在 IDLE 的 IO 相关源码(lib/python2.7/idlelib/IOBinding.py)中插入一行代码强行覆盖变量 encoding 的值为 'utf-8' 来解决这个问题。

不过后来经过我测试后发现,在 Mac 下其实更为简单的一个解决方法是,设置 IDLE 的环境变量 LANG 为 "en_US.UTF-8"。同样我不想通过 launchctl 设置全局环境变量来解决,而我采用的解决方法是:

打开编辑 IDLE.app/Contents/MacOS/IDLE 文件。

在大概第 24 行的地方插入一行设置环境变量 LANG 的语句:

+ os.environ["LANG"] = "en_US.UTF-8" # 第 24 行

os.environ["PYTHONEXECUTABLE"] = executable

os.environ["DYLD_LIBRARY_PATH"] = libdir

保存文件,重新打开 IDLE 就可以在其交互模式里输入中文了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器行业深度解析:服务器未来需求知多少

来源&#xff1a;国盛证券一、 全球公有云加速渗透叠加企业上云大趋势来临1. 全球云领军收入增速维持高位&#xff0c;Q2 CAPEX 出现恢复信号全球云计算进入甜蜜点&#xff0c;IaaS 市场主导增长。1&#xff09;2017 年 6 月&#xff0c;Morgan Stanley 认为全球云计算行业进入…

海上瓶子下有东西吗_洗衣液瓶子我从来不扔,瓶身这样剪几刀,解决了很多家庭的大烦恼...

洗衣液瓶子相信家家户户都会有&#xff0c;每次用完的空洗衣液瓶你都扔掉了吗&#xff1f;那就太可惜了&#xff0c;卖废品也卖不了几毛钱&#xff0c;我们可以将废弃的洗衣液瓶简单剪几刀&#xff0c;就能够变废为宝了&#xff0c;能够解决很多家庭生活中的大烦恼。今天就教大…

光耦继电器

光耦继电器(光电继电器) AQW282SX 282SZ 280SX 280SZ 284SX 284SZ 212S 212SX 21 2SZ 文章目录 光耦继电器(光电继电器)前言一、光耦继电器是什么二、光耦继电器的类型三、光电耦合器的应用总结前言 光耦继电器在工业控制、通讯、医疗设备、家电及汽车电子等领域得到广泛应…

媒体查询响应式布局的几个尺寸_媒体查询实现响应式布局

本文主要介绍 media 查询的使用。通过媒体查询&#xff0c;在不同的屏幕尺寸下&#xff0c;可以设置不同的样式。以此&#xff0c;可以完美解决不同屏幕适配的问题。话不多说&#xff0c;先来看看效果&#xff1a;CSSmedia screen and (max-width: 400px) {.btn {background-co…

为什么说,我们可能是宇宙中唯一的智慧生命?

来源&#xff1a;原理我们在宇宙中是孤独的吗&#xff1f;这个问题可归结为&#xff1a;智慧究竟是自然选择的一种可能结果&#xff0c;还是一种不太可能的侥幸&#xff1f;显而易见的是&#xff0c;可能的事件可以经常发生&#xff1b;不太可能的事件很少发生&#xff0c;或者…

jeecg输入中文查询导表为空_学术利器—SCI期刊影响因子查询/中文核心期刊查询系统更新...

吐槽想起自己第一次投中文期刊的情形&#xff1a;当时学校最低要求是发表一篇核心级别的期刊论文&#xff0c;但是哪些期刊是核心期刊呢&#xff1f;完全不知道&#xff01;都怎么投稿呢&#xff1f;也完全不知道&#xff01;只能问问周围的同学或者师兄师姐。他们也就知道谁谁…

Python 学习随笔1

在一个列表中&#xff0c;找出重复数组的位置。 比如在列表name [1, 5, 8, 22, 56, 2, 8, 45, 7, 2, 35, 2, 486, 2, 152, 111, 265, 2, 2]中&#xff0c;找出2的位置。 方法1&#xff1a; 流程为&#xff1a; 找到第一个2的位置&#xff0c;然后在2之后的一个数后面切片&…

震撼!15项世界互联网领先科技成果发布,将对你的生活产生什么影响?

来源&#xff1a;浙江发布10月20日下午&#xff0c;世界互联网领先科技成果发布活动在乌镇互联网国际会展中心举行。今年6月&#xff0c;世界互联网大会组委会向全球互联网企业、科研机构、高等院校以及个人征集全球互联网领域的领先科技成果&#xff0c;收到了来自中国、美国、…

java执行查询postgresql得到中文乱码_Greenplum: 基于PostgreSQL的分布式数据库内核揭秘(上篇)...

关于作者姚延栋&#xff0c;山东大学本科&#xff0c;中科院软件所研究生。PostgreSQL中文社区委员&#xff0c;致力于Greenplum/PostgreSQL开源数据库产品、社区和生态的发展。一、数据库内核揭秘Greenplum 是最成熟的开源分布式分析型数据库(今年6月份预计发布的 Greenplum 6…

关于授予81项成果2019年度“吴文俊人工智能科学技术奖”的决定

来源&#xff1a;人工智能人物为加快实施国家创新驱动发展战略&#xff0c;深入贯彻《新一代人工智能发展规划》&#xff0c;更好地推进科教兴国、人才强国的政策落实&#xff0c;弘扬“尊重劳动、尊重知识、尊重人才、尊重创造”的良好风尚&#xff0c;通过推选优秀的智能科学…

mysql索引 和 es索引_MySQL索引 VS ElasticSearch索引

今天MySQL数据库栏目介绍MySQL索引与ElasticSearch索引的对比。前言这段时间在维护产品的搜索功能&#xff0c;每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的。这甚至比在我本地使用 MySQL 通过主键的查询速度还快。为此我搜索了相关资料&#x…

开启httponly之后登陆失败_二次元约会模拟《少女都市》正式版登陆Steam 橘势大好...

《少女都市(Shoujo City)》于2018年1月在Steam开启了抢先测试&#xff0c;昨天发布了1.0正式版。这是一款专注于二次元和御宅文化的百合向约会模拟游戏&#xff0c;目前Steam好评率94%&#xff0c;自带简体中文。《少女城市》结合了美少女视觉小说与沙盒式的城市探索冒险&#…

科技/IT:2019 年 Q3 表现最佳和最差的企业

来源&#xff1a;云头条在2019年上半年经历稳步上涨之后&#xff0c;由于全球经济的不确定性和美中贸易紧张局势&#xff0c;2019年第三季度的股市如同过山车。道琼斯指数第三季度&#xff08;截至9月30日&#xff09;以26916.83点收盘&#xff0c;比2019年6月28日收盘价上涨1.…

java图片压缩不失真_软件分享 | Lit图片压缩

软件分享01软件名称Lit图片压缩02软件版本V1.2.0.01603软件简介Lit图片压缩app是一款免费简单好用的图片压缩工具&#xff0c;让图片在不失真的情况下&#xff0c;进行压缩和裁剪&#xff0c;轻松就能压缩成你想要的尺寸&#xff0c;并且原来的像素不失真&#xff0c;保持原画质…

从大型主机到个人计算机:机器人产业可以从pc普及革命中学到什么?

来源&#xff1a;大数据文摘出品自主化机器人已逐渐变得无处不在。自动吸尘器、自动割草机、会简单交互的小玩具&#xff0c;以及呼之欲出的自动驾驶汽车&#xff0c;都可以看作是一个能实现某种自动功能的机器人。一辈接着一辈&#xff0c;我们一直在期待出现《星球大战》中的…

【Poj1017】Packets

http://poj.org/problem?id1017 艰难啊 弄了很久咧 拍了几十万组,以后拍要多组数据 Solution 从大wangxiaofang 从大往小放,有空余的从大往小填 注意细节 Notice b<0的情况,还有就是当前填充完了,还剩一点给下一个(小一点的)填 Code // This file is made by YJinpeng&…

构建超级智能未来系统的三原则

《崛起的超级智能》作者&#xff0c;计算机博士刘锋前言&#xff1a;科技领域看不见的手在过去50年促使互联网从网状结构进化成为大脑模型&#xff0c;而人类群体智慧与机器群体智能通过这个互联网大脑架构形成人类前所未有的超级智能形式。在构建互联网大脑模型成熟状态的过程…

游戏“冰川滑行”设计稿(第一版)

名称&#xff1a;&#xff08;暂定&#xff09;冰川滑行 游戏类型&#xff1a;关卡式迷宫 基本规则&#xff1a;在迷宫中可以向上下左右方向移动&#xff0c;每次移动只能在碰到障碍物或到达无冰区停止&#xff1b;从入口进入&#xff0c;从出口离开为胜利。 地形种类&#xff…

spring的aop_Spring AOP 小结

1. AOP专业概述在软件行业&#xff0c;AOP为Aspect Oriented Programming的缩写&#xff0c;意思为&#xff1a;面向切面编程&#xff0c;通过预编译方法和运行期动态代理实现程序功能的统一维护的一种技术。要理解切面变成&#xff0c;就需要先理解什么是切面。用刀把一个西瓜…

【解析】工业机器人中的各类传感器技术应用

来源&#xff1a;中国机器人网前言工业机器人涉及到的传感器有哪些&#xff1f;2012年&#xff0c;美国提出“工业互联网”&#xff0c;2013年&#xff0c;德国提出“工业4.0”&#xff0c;2015年&#xff0c;中国提出“中国制造2025”。在工业物联网、AR、云计算等技术热潮下&…