文章目录
- 一、前言
- 什么是编码?
- 什么是字符集
- 1.字库表
- 2.编码字符集(通常简称 `字符集`)
- 3.字符编码
- 一个范例
- utf-8编码如何规定的?
- utf-8和unicode的关系
- 有了unicode为什么还需要utf-8呢?
- 二、影响Python执行的编码方案
- 1.Python解释器的默认编码
- 2.Python源文件文件编码
- 3.操作系统的语言设置
- 4.Terminal使用的编码
- 三、 Python中的编码表示范例
- 1. `utf-8 ` 表示 中文 `你好`
- 2. Python中的 len 表示什么
- 三、最后
一、前言
本文将通过列举Python编码中的编码问题来进行阐述!!!
使用过Python的同学们一定被她的各种编码问题缠绕过,博主是一名Python程序猿,因为平常维护的新老项目跨越 2、3两个版本,编码问题有时更是让博主苦不堪言,遂下定决心,一定要干掉他,吃透他,遂记录此篇博文以分享记录!不正之处望各位高台修正
什么是编码?
通常我们所说的编码一般为简称, 其实在平常的应用过程,编码一般包括 编码和解码,如在编码前指定 字符集UTF-8
, 那么解码时也必须为UTF-8
,否则会出现所谓的 乱码
什么是字符集
字符集类似于中文,英文
,是一个规则集合的抽象概念,其规定了某个文字对应的二进制数字存放方式,即为编码
过程,或者二进制数字对应的文字,即为解码
过程!
字符集包括如下:
#mermaid-svg-qQVvCxhlR56hmhYk {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qQVvCxhlR56hmhYk .error-icon{fill:#552222;}#mermaid-svg-qQVvCxhlR56hmhYk .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-qQVvCxhlR56hmhYk .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-qQVvCxhlR56hmhYk .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-qQVvCxhlR56hmhYk .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-qQVvCxhlR56hmhYk .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-qQVvCxhlR56hmhYk .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-qQVvCxhlR56hmhYk .marker{fill:#333333;stroke:#333333;}#mermaid-svg-qQVvCxhlR56hmhYk .marker.cross{stroke:#333333;}#mermaid-svg-qQVvCxhlR56hmhYk svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-qQVvCxhlR56hmhYk .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-qQVvCxhlR56hmhYk .cluster-label text{fill:#333;}#mermaid-svg-qQVvCxhlR56hmhYk .cluster-label span{color:#333;}#mermaid-svg-qQVvCxhlR56hmhYk .label text,#mermaid-svg-qQVvCxhlR56hmhYk span{fill:#333;color:#333;}#mermaid-svg-qQVvCxhlR56hmhYk .node rect,#mermaid-svg-qQVvCxhlR56hmhYk .node circle,#mermaid-svg-qQVvCxhlR56hmhYk .node ellipse,#mermaid-svg-qQVvCxhlR56hmhYk .node polygon,#mermaid-svg-qQVvCxhlR56hmhYk .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-qQVvCxhlR56hmhYk .node .label{text-align:center;}#mermaid-svg-qQVvCxhlR56hmhYk .node.clickable{cursor:pointer;}#mermaid-svg-qQVvCxhlR56hmhYk .arrowheadPath{fill:#333333;}#mermaid-svg-qQVvCxhlR56hmhYk .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-qQVvCxhlR56hmhYk .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-qQVvCxhlR56hmhYk .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-qQVvCxhlR56hmhYk .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-qQVvCxhlR56hmhYk .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-qQVvCxhlR56hmhYk .cluster text{fill:#333;}#mermaid-svg-qQVvCxhlR56hmhYk .cluster span{color:#333;}#mermaid-svg-qQVvCxhlR56hmhYk div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-qQVvCxhlR56hmhYk :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
字符集
字库表
编码字符集
字符编码
1.字库表
字库表是一个相当于所有可读或者可显示字符的数据库,字库表决定了整个字符集能够展现表示的所有字符1的范围
2.编码字符集(通常简称 字符集
)
编码字符集2,用一个编码值code point(二进制代码)来表示一个字符(即该字符在字库表中的位置)
3.字符编码
字符编码,是编码字符集和实际存储数值之间的转换关系;
字符,是根据字符编码方案转换为一个二进制数值存储在计算机中的
一个范例
下面以一个实例解释下编解码的过程
字符编码: UTF-8
字符串:中国
Python版本:2.7
说明:
1.编码转换方式
#mermaid-svg-Hnl2gj9Wybr4cH9U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Hnl2gj9Wybr4cH9U .error-icon{fill:#552222;}#mermaid-svg-Hnl2gj9Wybr4cH9U .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Hnl2gj9Wybr4cH9U .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-Hnl2gj9Wybr4cH9U .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Hnl2gj9Wybr4cH9U .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Hnl2gj9Wybr4cH9U .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Hnl2gj9Wybr4cH9U .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Hnl2gj9Wybr4cH9U .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Hnl2gj9Wybr4cH9U .marker.cross{stroke:#333333;}#mermaid-svg-Hnl2gj9Wybr4cH9U svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Hnl2gj9Wybr4cH9U .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Hnl2gj9Wybr4cH9U .cluster-label text{fill:#333;}#mermaid-svg-Hnl2gj9Wybr4cH9U .cluster-label span{color:#333;}#mermaid-svg-Hnl2gj9Wybr4cH9U .label text,#mermaid-svg-Hnl2gj9Wybr4cH9U span{fill:#333;color:#333;}#mermaid-svg-Hnl2gj9Wybr4cH9U .node rect,#mermaid-svg-Hnl2gj9Wybr4cH9U .node circle,#mermaid-svg-Hnl2gj9Wybr4cH9U .node ellipse,#mermaid-svg-Hnl2gj9Wybr4cH9U .node polygon,#mermaid-svg-Hnl2gj9Wybr4cH9U .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Hnl2gj9Wybr4cH9U .node .label{text-align:center;}#mermaid-svg-Hnl2gj9Wybr4cH9U .node.clickable{cursor:pointer;}#mermaid-svg-Hnl2gj9Wybr4cH9U .arrowheadPath{fill:#333333;}#mermaid-svg-Hnl2gj9Wybr4cH9U .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Hnl2gj9Wybr4cH9U .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Hnl2gj9Wybr4cH9U .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-Hnl2gj9Wybr4cH9U .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-Hnl2gj9Wybr4cH9U .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Hnl2gj9Wybr4cH9U .cluster text{fill:#333;}#mermaid-svg-Hnl2gj9Wybr4cH9U .cluster span{color:#333;}#mermaid-svg-Hnl2gj9Wybr4cH9U div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Hnl2gj9Wybr4cH9U :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
encode
decode
str_unicode
str_utf8
str_unicode为中间码。即对应编码字符集
在字库表中有唯一id代表一个字符, 理论上 unicode即可以映射表示所有字符,但是为了压缩存储的位数,发展出了 utf-8、utf-16等字符编码,即在实际存储和字符展现之间又建立了一层映射,这层映射表示了 utf-8 到 unicode的方式,然后unicode又根据字库表展现改字符。即 unicode有 utf-8及utf-16等多种方式的字符编码方案
,GBK字符集 则只有一种字符编码 EUC-CN, 而对于Ascii码来说,本身即是编码字符集又是字符编码,
2.以一次Python代码执行为例, 解释 字库表
、编码字符集(字符集)
与 字符编码
的关系:
#mermaid-svg-hpYTpwuTXyI3ums4 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hpYTpwuTXyI3ums4 .error-icon{fill:#552222;}#mermaid-svg-hpYTpwuTXyI3ums4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hpYTpwuTXyI3ums4 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-hpYTpwuTXyI3ums4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hpYTpwuTXyI3ums4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hpYTpwuTXyI3ums4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hpYTpwuTXyI3ums4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hpYTpwuTXyI3ums4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hpYTpwuTXyI3ums4 .marker.cross{stroke:#333333;}#mermaid-svg-hpYTpwuTXyI3ums4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hpYTpwuTXyI3ums4 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hpYTpwuTXyI3ums4 .cluster-label text{fill:#333;}#mermaid-svg-hpYTpwuTXyI3ums4 .cluster-label span{color:#333;}#mermaid-svg-hpYTpwuTXyI3ums4 .label text,#mermaid-svg-hpYTpwuTXyI3ums4 span{fill:#333;color:#333;}#mermaid-svg-hpYTpwuTXyI3ums4 .node rect,#mermaid-svg-hpYTpwuTXyI3ums4 .node circle,#mermaid-svg-hpYTpwuTXyI3ums4 .node ellipse,#mermaid-svg-hpYTpwuTXyI3ums4 .node polygon,#mermaid-svg-hpYTpwuTXyI3ums4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hpYTpwuTXyI3ums4 .node .label{text-align:center;}#mermaid-svg-hpYTpwuTXyI3ums4 .node.clickable{cursor:pointer;}#mermaid-svg-hpYTpwuTXyI3ums4 .arrowheadPath{fill:#333333;}#mermaid-svg-hpYTpwuTXyI3ums4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hpYTpwuTXyI3ums4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hpYTpwuTXyI3ums4 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-hpYTpwuTXyI3ums4 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-hpYTpwuTXyI3ums4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hpYTpwuTXyI3ums4 .cluster text{fill:#333;}#mermaid-svg-hpYTpwuTXyI3ums4 .cluster span{color:#333;}#mermaid-svg-hpYTpwuTXyI3ums4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hpYTpwuTXyI3ums4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
计算机底层二进制
Bytes类型的数据 utf-8编码
Unicode类型数据 可以理解为字库表的唯一id
字库表 真实字符
utf-8编码如何规定的?
utf-8和unicode的关系
- utf 解释为诶
Unicode TransferFormat
即 转换Unicode。
- unicode是一种字符编码,规定了每个字符到数字的映射关系, 这个数字怎么存储它没有规定. 而
如何存储? 几个字节表示?
这个是utf8等编码方式来规定的。
有了unicode为什么还需要utf-8呢?
- 首先
unicode
规定了所有字符的二进制编码,并没有规定如何存储
- 如果我们以统一4个字节来存储所有unicode的编码字符,那就会在表示一个字节编码的ascii部分严重浪费存储性能
- 另外因为统一4字节处理,那如果一个文件分片或者是一份缺失文件,那么此时该如何来判断我们从头读取的 4字节是一个完整的字符呢?这就会造成很大的分析复杂度,可以说 无法分析, 这也是 utf-8等编码的优点即
utf-8错误编码不会向后扩散
- 综合考虑 utf-8 是一种unicode 标准的存储方案,改方案规定了如何存储unicode字符,即看上面的utf-8的规定,大白话讲就是 utf-8 可变长编码规定了 字符的起始位置,且极大可能节省存储空间,总而言之很简单就是在无序中找到秩序
二、影响Python执行的编码方案
下列四种影响Python执行的编码方案,具体实例以最后
所列案例为准
1.Python解释器的默认编码
获取解释器默认编码,Python3对应的默认编码为 utf-8,Python2对应的默认编码为ascii
import sys
print(sys.getdefaultencoding())
Python2设置默认编码方式,Python3解释器默认utf-8所以去除该种设置方式
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
解释器编码有什么用?
当调用 decode() 和 encode() 进行编码转换时候,如果未指定编码格式,会调用解释器默认编码进行编码转换
若未指定编码方式 而有中文出现,此时会有报错产生
2.Python源文件文件编码
- python源文件的编码与解码,我们写的python程序从产生到执行的过程如下(以Pycharm为例)
#mermaid-svg-v3HSJGCVwY0nuZmz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-v3HSJGCVwY0nuZmz .error-icon{fill:#552222;}#mermaid-svg-v3HSJGCVwY0nuZmz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-v3HSJGCVwY0nuZmz .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-v3HSJGCVwY0nuZmz .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-v3HSJGCVwY0nuZmz .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-v3HSJGCVwY0nuZmz .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-v3HSJGCVwY0nuZmz .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-v3HSJGCVwY0nuZmz .marker{fill:#333333;stroke:#333333;}#mermaid-svg-v3HSJGCVwY0nuZmz .marker.cross{stroke:#333333;}#mermaid-svg-v3HSJGCVwY0nuZmz svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-v3HSJGCVwY0nuZmz .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-v3HSJGCVwY0nuZmz .cluster-label text{fill:#333;}#mermaid-svg-v3HSJGCVwY0nuZmz .cluster-label span{color:#333;}#mermaid-svg-v3HSJGCVwY0nuZmz .label text,#mermaid-svg-v3HSJGCVwY0nuZmz span{fill:#333;color:#333;}#mermaid-svg-v3HSJGCVwY0nuZmz .node rect,#mermaid-svg-v3HSJGCVwY0nuZmz .node circle,#mermaid-svg-v3HSJGCVwY0nuZmz .node ellipse,#mermaid-svg-v3HSJGCVwY0nuZmz .node polygon,#mermaid-svg-v3HSJGCVwY0nuZmz .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-v3HSJGCVwY0nuZmz .node .label{text-align:center;}#mermaid-svg-v3HSJGCVwY0nuZmz .node.clickable{cursor:pointer;}#mermaid-svg-v3HSJGCVwY0nuZmz .arrowheadPath{fill:#333333;}#mermaid-svg-v3HSJGCVwY0nuZmz .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-v3HSJGCVwY0nuZmz .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-v3HSJGCVwY0nuZmz .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-v3HSJGCVwY0nuZmz .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-v3HSJGCVwY0nuZmz .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-v3HSJGCVwY0nuZmz .cluster text{fill:#333;}#mermaid-svg-v3HSJGCVwY0nuZmz .cluster span{color:#333;}#mermaid-svg-v3HSJGCVwY0nuZmz div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-v3HSJGCVwY0nuZmz :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}
Pycharm编辑器编辑
源代码保存
解释器执行
结果输出
3.操作系统的语言设置
- locale 模块获取 操作系统编码
import locale
print locale.getdefaultencoding()
- 以open()函数为例
open() 函数会调用 Python操作系统默认编码进行 编解码
# coding: utf-8
import sys; reload(sys); sys.setdefaultencoding('utf-8')str = '中国' # utf-8 bytes类型
str_unicode = str.decode() # unicodewith open('demo.txt', 'w') as f:f.write(str) # 写入bytes类型,则此时文件编码为 utf-8 f.write(str_unicode) # 写入 unicode,则此时会根据 sys.getdefaultencoding() 来进行文件编码
linux 下 vim打开以 gbk方式写入的文件会出现乱码,因为此时会调用操作系统的编码方式进行解码
4.Terminal使用的编码
终端编码 继承自操作系统的编码
三、 Python中的编码表示范例
1. utf-8
表示 中文 你好
print("你好".encode('utf-8'))
>>> b'\xe4\xbd\xa0\xe5\xa5\xbd'
很容易看出 其中的 16进制数 e4bda0e5a5bd
2. Python中的 len 表示什么
- 对于字节流(bytes: 如utf-8字节流)来说表示字节数
- 对于unicode则表示字符数
三、最后
使用范例
Pycharm编码设置
字符串变量级别编码
脚本级别的编码
py文件级别的编码
显示窗口的编码
~~ 持续更新
即 一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号等 ↩︎
如:Unicode、ASCII ↩︎
Python string编码相关推荐
- python UnicodeEncodeError 编码错误总结
从外部写入字符串 查看python默认编码 >>>import sys >>>sys.getdefaultencoding()#'utf-8' python3 是默 ...
- python unicode编码转换中文_python unicode转中文及转换默认编码
一. 在爬虫抓取网页信息时常需要将类似"\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8"转换为中文,实际上这是unicode的中文编码.可 ...
- 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode...
原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...
- Python PEP8 编码规范中文版
Python PEP8 编码规范中文版 2018年01月02日 19:21:09 阅读数:22140 标签: python 更多 个人分类: Python 原文链接:http://legacy.pyt ...
- 转- --python 3 编码
对Python3编码的整理!!! py编码终极版 说起python编码,真是句句心酸.算起来,反复折腾两个来月了.万幸的是,终于梳理清楚了.作为一个共产主义者,一定要分享给大家.如果你还在因为编码而头 ...
- [转载] Python pep8编码规范
参考链接: PEP 8:Python中的编码样式指南 原文链接:http://legacy.python.org/dev/peps/pep-0008/ itemdetailPEP8TitleStyle ...
- 转1:Python字符编码详解
Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...
- python中byte类型_详解python string类型 bytes类型 bytearray类型
搜索热词 一.python3对文本和二进制数据做了区分.文本是Unicode编码,str类型,用于显示.二进制类型是bytes类型,用于存储和传输.bytes是byte的序列,而str是unicode ...
- Python学习笔记 Python概述 编码规范 输出与输入 变量 标识符
Python学习第一天 Python的概述 1.Python的优缺点 1.1 优点: 1.2 缺点: 2.Python的编码规范 3.注释 3.Python的输出与输入 4.Python中的变量 5. ...
最新文章
- LaZagne检测windows本地存储的密码
- 靠Python数据分析已赚10w的本科生,附赠学习资料
- c语言用一维数组求字符串,c语言一维数组练习题.doc
- 协程,又称微线程和纤程
- html.锁屏主题,锁屏HTML主题插件GroovyLock发布
- leetcode-19-删除链表的倒数第N个节点
- java setrequestheader_Java SampleResult.setRequestHeaders方法代码示例
- 算法我也不知道有没有下一个---一个题目的开端(索引堆与图)
- Android基于ksoap2调用WCF服务(二):Android篇
- 公司内网环境下部署流量监控服务器的初步方案
- 一句话搞懂JavaSE、JavaEE和JavaME之间的区别
- 使用abd工具查看安卓设备cpu处理器是32位或64位
- 微信公众号如何排版好看?教你三招技巧
- (八) 爬虫教程 |Scrapy框架的使用
- 关于魔兽守卫军的改进建议
- Java项目:SSH学生请假管理系统
- C++运算符重载典型习题---复数类 String类 分数类
- vue实现 导出为word模板
- 用uni-app开发的微信小程序轮播图----和用微信小程序原生开发的轮播图
- 去金坛长荡湖吃船菜,原来1947年就有前辈在努力发展中国的计算机产业
热门文章
- 基于J2EE的B2C电子商务系统开发- 新闻发布与系统管理子系统设计与实现
- 互联网+农业的五大流派及未来方向
- 自助式卡拉 OK 娱乐超市审批条件
- 浅谈持续集成的理解以及实现持续集成,需要做什么?
- 浅谈Dynamics CRM开发转Dynamics AX开发的感受与差异
- 对 WKWebView js交互的简单封装
- 性能监视器- Performance Monitor
- 【Minecraft java edition 模组开发】(一):实现一个简单的模组
- Ubuntu美化教程
- IT人士提高薪资、步入人生巅峰、迎娶白富美的终极秘诀