這次我們關(guān)注一些常見的重要而零碎的問題.
浮點運算精度
浮點預(yù)算在計算機里是不精確的. 比如0. 1+0. 2不是0. 3, 而是一個接近0. 3的很長的小數(shù). 這個問題和計算機中數(shù)字的存儲方式有關(guān). 如果需要準確的小數(shù)運算, 最好先轉(zhuǎn)為整數(shù)計算, 計算機計算和表示整數(shù)是精確的. 另一種方式是使用一些庫. 比如java中的BigDecimal. 總之, 因為在很多實際項目中會涉及到貨幣計算, 這個問題經(jīng)常出現(xiàn), 需要認真對待. 一般通過搜索都能找到解決方法.
日期時間表示
日期時間在計算機中的表示. 計算機中一般使用數(shù)字來代表時間, 表示自從某一時間點以來所經(jīng)過的毫秒數(shù). 但是要顯示成我們平時所看到的格式, 就需要用格式字符串進行format. 格式字符串類似yyyy-MM-dd HH:mm:ss. 而反過來, 要把我們所看到的格式轉(zhuǎn)成數(shù)字表示的時間, 就需要parse. 在各種環(huán)境和語言里思路基本一樣, 但是具體方式需要搜索和實測確定. 比如在js里, 可以直接toString, 也可以new Date().
正則表達式
正則表達式與日期格式字符串有一點類似. 是一種有特定含義的字符串, 指定了某種文本規(guī)則. 正則表達式是一種強大的工具, 各種語言和工具都提供了支持.
字符編碼
另一個常見的問題是字符編碼格式. 在計算機發(fā)展的歷史中, 英文字母和數(shù)字的編碼是比較通用的, 一般不會出現(xiàn)亂碼. 但是像漢字的編碼有不同的標準, 如果不指定可能出現(xiàn)亂碼. 這也是為什么在編程時推薦使用英文和數(shù)字命名的原因. 其實我們現(xiàn)在常見的漢字編碼也就是GBK和UTF-8兩種. 如果包含漢字的文件出現(xiàn)了亂碼, 就考慮在這兩種編碼間切換. 在開發(fā)過程中要指定統(tǒng)一的編碼, 如果有不同來源的內(nèi)容使用了其他編碼格式, 就要先進行轉(zhuǎn)換. 轉(zhuǎn)換的具體方法可以搜索網(wǎng)絡(luò).
國際化和本地化
不同的地域可能會有不同的時區(qū), 不同的語言, 以及貨幣時間格式等. 如果需要做國際化的開發(fā), 就需要不同的資源文件.
配置文件格式
軟件項目中常用的配置文件格式, js里主要是json文件, java里有時會有property文件, 多數(shù)也是xml. 現(xiàn)在也有了yml, 是基于縮進的語法格式. 或者是自己定義格式的文本, 比如nginx的配置文件, mysql等.
多媒體開發(fā)
另一個密切相關(guān)的領(lǐng)域就是圖形和多媒體. 畢竟今天的計算機不像早期那樣真的只是用來計算, 更多是成為了多媒體中心. 我們在客戶端所做的界面也都是圖形化的, 多數(shù)公司會有設(shè)計人員設(shè)計出圖形界面, 技術(shù)人員按照設(shè)計稿開發(fā)軟件. 設(shè)計美觀的界面是一種藝術(shù)和技術(shù)的結(jié)合. 建議大家有時間的話可以多接觸和學(xué)習(xí)設(shè)計. 畢竟這是用戶直接接觸到的部分, 也是真正體現(xiàn)軟件的創(chuàng)造性和價值的部分. 如果將來, 機械的編程工作都由機器人完成, 那么我們能為客戶提供的價值, 一方面是數(shù)據(jù), 另一方面就是界面了.
而像計算機動畫, 音頻視頻等, 也都是專門的領(lǐng)域. HTML5提供了一些新標準, 簡化了在網(wǎng)頁上進行多媒體的開發(fā). 不過如果真的涉及到大量處理音視頻的場景, 學(xué)習(xí)相應(yīng)的專業(yè)知識也是不可少的. 并且音視頻, 動畫和游戲等領(lǐng)域, 也是持續(xù)熱門且高薪的.