这次我们关注一些常见的重要而零碎的问题.
浮点运算精度
浮点预算在计算机里是不精确的. 比如0. 1+0. 2不是0. 3, 而是一个接近0. 3的很长的小数. 这个问题和计算机中数字的存储方式有关. 如果需要准确的小数运算, 最好先转为整数计算, 计算机计算和表示整数是精确的. 另一种方式是使用一些库. 比如java中的BigDecimal. 总之, 因为在很多实际项目中会涉及到货币计算, 这个问题经常出现, 需要认真对待. 一般通过搜索都能找到解决方法.
日期时间表示
日期时间在计算机中的表示. 计算机中一般使用数字来代表时间, 表示自从某一时间点以来所经过的毫秒数. 但是要显示成我们平时所看到的格式, 就需要用格式字符串进行format. 格式字符串类似yyyy-MM-dd HH:mm:ss. 而反过来, 要把我们所看到的格式转成数字表示的时间, 就需要parse. 在各种环境和语言里思路基本一样, 但是具体方式需要搜索和实测确定. 比如在js里, 可以直接toString, 也可以new Date().
正则表达式
正则表达式与日期格式字符串有一点类似. 是一种有特定含义的字符串, 指定了某种文本规则. 正则表达式是一种强大的工具, 各种语言和工具都提供了支持.
字符编码
另一个常见的问题是字符编码格式. 在计算机发展的历史中, 英文字母和数字的编码是比较通用的, 一般不会出现乱码. 但是像汉字的编码有不同的标准, 如果不指定可能出现乱码. 这也是为什么在编程时推荐使用英文和数字命名的原因. 其实我们现在常见的汉字编码也就是GBK和UTF-8两种. 如果包含汉字的文件出现了乱码, 就考虑在这两种编码间切换. 在开发过程中要指定统一的编码, 如果有不同来源的内容使用了其他编码格式, 就要先进行转换. 转换的具体方法可以搜索网络.
国际化和本地化
不同的地域可能会有不同的时区, 不同的语言, 以及货币时间格式等. 如果需要做国际化的开发, 就需要不同的资源文件.
配置文件格式
软件项目中常用的配置文件格式, js里主要是json文件, java里有时会有property文件, 多数也是xml. 现在也有了yml, 是基于缩进的语法格式. 或者是自己定义格式的文本, 比如nginx的配置文件, mysql等.
多媒体开发
另一个密切相关的领域就是图形和多媒体. 毕竟今天的计算机不像早期那样真的只是用来计算, 更多是成为了多媒体中心. 我们在客户端所做的界面也都是图形化的, 多数公司会有设计人员设计出图形界面, 技术人员按照设计稿开发软件. 设计美观的界面是一种艺术和技术的结合. 建议大家有时间的话可以多接触和学习设计. 毕竟这是用户直接接触到的部分, 也是真正体现软件的创造性和价值的部分. 如果将来, 机械的编程工作都由机器人完成, 那么我们能为客户提供的价值, 一方面是数据, 另一方面就是界面了.
而像计算机动画, 音频视频等, 也都是专门的领域. HTML5提供了一些新标准, 简化了在网页上进行多媒体的开发. 不过如果真的涉及到大量处理音视频的场景, 学习相应的专业知识也是不可少的. 并且音视频, 动画和游戏等领域, 也是持续热门且高薪的.