平常用的少,但是要彻底弄懂的知识
2016-07-06 09:54
288 查看
有些东西在写代码的时候,或许听说过,有过了解,但是当要深究的时候,感觉自己又不能说得很清楚,趁这段时间,比较空闲,就在这里用自我理解的方式,做一些小小的总结,也算是巩固学习吧。
字符编码
这个问题是一个老问题了,总是告诉自己要统一用utf-8编码,但是自己也不知道为什么,还有各种别的ansi gbk unicode 等等,这个东西也不是几句话就能说清楚的,反正我目前认为是有点懂了,为什么之前老同事告诫不要用记事本来做任何和代码打交道的编辑,因为记事本默认使用的编码格式是ansi,而如果用记事本的另存为功能保存为utf-8的文件其实也是有bom的。这就导致该方式保存的文件,默认会添加三个字符,会引起很多的问题。所以我们要用专业的编辑器来编写代码和配置文件,统一用utf-8格式,当然,大部分的编辑器的默认文件编码格式都是utf-8,这里说的是无bom的,也就是,你保存的是什么,就是什么。对于字符编码,总结一句话就是,用专业的编辑器,保存为utf-8格式。就没错了。我记得关于字符编码的讲解,之前在知乎上看到一位前辈阐述的非常好,但是我现在却找不到那篇文章了,以后找到干货,就一定要自己保存!!!!
二进制文件
之前总是纠结这个问题,比如看到一个文件,文件里面保存的是二进制,我就认为这个是一个二进制文件,不然就认为是一个文本文件。其实感觉也没错,一般情况下,我们都是保存的文本文件,用来阅读方便,但是有个时候,会有保存文件流的二进制的需求,比如游戏的一些资源,配置等。一直不知道怎么做到,后来发现就是在代码里面保存字符串流的二进制格式就行了嘛,那个时候也真的是笨得可以。当然如此保存的文件,打开读取的时候,就要以二进制形式打开咯。注意任何文件在计算机看来都是二进制的,其实文本文件只是给我们看得懂而已。
大小端
大小端问题讲的是,数据在内存中的存储顺序,数据的高字节存储在内存地址的高地址,就是小端存储,反之,就是大端方式,怎么理解呢,假如有这样的数据 short a = 0x1234; 显然a占据2个字节。假如该数据存储在内存地址为ox0001和ox0002两个地址单元,12是数据的高字节如果存在地址0001,就是大端存储。如果存在地址0002,就是小端存储,怎么说呢,反正我自认为大端存储,更符合自然规律。还记得当时学套接字的时候,就必须有一对函数叫做转换为网路字节序,和转换为主机字节序,那个就是为了处理这个问题的,不然各个计算机处理器都按照自己的规矩解析,就会乱码了。也不知道,那个时候发明计算机的人,为什么不统一好,免得这么多的麻烦。
字符编码
这个问题是一个老问题了,总是告诉自己要统一用utf-8编码,但是自己也不知道为什么,还有各种别的ansi gbk unicode 等等,这个东西也不是几句话就能说清楚的,反正我目前认为是有点懂了,为什么之前老同事告诫不要用记事本来做任何和代码打交道的编辑,因为记事本默认使用的编码格式是ansi,而如果用记事本的另存为功能保存为utf-8的文件其实也是有bom的。这就导致该方式保存的文件,默认会添加三个字符,会引起很多的问题。所以我们要用专业的编辑器来编写代码和配置文件,统一用utf-8格式,当然,大部分的编辑器的默认文件编码格式都是utf-8,这里说的是无bom的,也就是,你保存的是什么,就是什么。对于字符编码,总结一句话就是,用专业的编辑器,保存为utf-8格式。就没错了。我记得关于字符编码的讲解,之前在知乎上看到一位前辈阐述的非常好,但是我现在却找不到那篇文章了,以后找到干货,就一定要自己保存!!!!
二进制文件
之前总是纠结这个问题,比如看到一个文件,文件里面保存的是二进制,我就认为这个是一个二进制文件,不然就认为是一个文本文件。其实感觉也没错,一般情况下,我们都是保存的文本文件,用来阅读方便,但是有个时候,会有保存文件流的二进制的需求,比如游戏的一些资源,配置等。一直不知道怎么做到,后来发现就是在代码里面保存字符串流的二进制格式就行了嘛,那个时候也真的是笨得可以。当然如此保存的文件,打开读取的时候,就要以二进制形式打开咯。注意任何文件在计算机看来都是二进制的,其实文本文件只是给我们看得懂而已。
大小端
大小端问题讲的是,数据在内存中的存储顺序,数据的高字节存储在内存地址的高地址,就是小端存储,反之,就是大端方式,怎么理解呢,假如有这样的数据 short a = 0x1234; 显然a占据2个字节。假如该数据存储在内存地址为ox0001和ox0002两个地址单元,12是数据的高字节如果存在地址0001,就是大端存储。如果存在地址0002,就是小端存储,怎么说呢,反正我自认为大端存储,更符合自然规律。还记得当时学套接字的时候,就必须有一对函数叫做转换为网路字节序,和转换为主机字节序,那个就是为了处理这个问题的,不然各个计算机处理器都按照自己的规矩解析,就会乱码了。也不知道,那个时候发明计算机的人,为什么不统一好,免得这么多的麻烦。
相关文章推荐
- 完美解决jsp页面在IE8下文本模式自动为(杂项Quirks)导致页面显示错位
- 完美解决jsp页面在IE8下文本模式自动为(杂项Quirks)导致页面显示错位
- window 杂项
- 新博客开通了,大家来点赞吧
- Win8.1系统下 VS2010等版本中输入中文变问号的解决办法
- vs 重新编译后 调试 源代码与原始版本不一致
- html 上传控件
- 技术文档收集
- 小知识点日志(2014-10-22~2015-4-7)
- Linux/Windows下通过Console发送EOF
- 杂项笔记
- python面向对象知识杂项
- 杂
- Emacs快捷键自动插入当前时间
- chrome浏览器设置允许跨域
- 2017多校第一场(HDU6038)
- 站点记录
- 运算放大器的基础原理
- 一些可能有用的功能cocos2dx
- markdown语法