问题集锦
- JAVA基礎
- 1. Bigdecimal不能直接轉Double的問題
- 2
- 一、Eclipse/Tomcat
- 1.eclipse3.6默認指向 WebContent 目錄 修改為 webRoot
- 2. 啟動tomcat時報 org.apache.catalina.LifecycleException: Failed to start component
- 3.eclipse中如何用遠程git代碼覆蓋本地文件里的代碼
- MySQL
- 1.OR的用法注意(將或者條件字段用括號括起來)
- 前端
- 1. 前端頁面中的某個問題總是隨機出現時的原因分析
JAVA基礎
1. Bigdecimal不能直接轉Double的問題
Bigdecimal轉Double正確方法:decimalVal.doubleValue() BigDecimal decimalVal = BigDecimal.valueOf(1.23);System.out.println(decimalVal.toString());// 1.23Double doubelVal = decimalVal.doubleValue();System.out.println(doubelVal.toString());// 1.23平時涉及到金錢的問題都是用的Bigdecimal類型 ,但這里要提出一個很重要的注意事項:存在精度損失的轉換一定要先轉成字符串,再進行類型轉換。
將在上面代碼中BigDecimal.valueOf(1.23);改為new BigDecimal(1.23),
decimalVal.toString()打印結果為:1.229999999999999982236431605997495353221893310546875。
這是因為小數在只能認識0和1的電腦中是無法準確描述的,因此需要將其先轉成字符串,所以double轉Bigdecimal的正確方式是:
翻看源碼會發現,其實底層就是先轉字符串再轉的Bigdecimal:
public static BigDecimal valueOf(double val) {return new BigDecimal(Double.toString(val));}2
一、Eclipse/Tomcat
1.eclipse3.6默認指向 WebContent 目錄 修改為 webRoot
在 eclipse3.6中 , 它默認指向 的webRoot 為 WebContent目錄 ,如果 , 我們的項目 webRoot 目錄不是這個名 , 我們遷移項目時等情況就會出現404。如何更改?
第一種情況, 新建項目時的設置:
在新建對話框下一步, 進行到 Web Module 時將 Content Directory 的名字改為你想要的名字就可以了
第二情況, 項目已經存在時的設置 ,加載一個已有 web 項目到 eclipse 中時
1、增加 web Facets, 對著項目根節點,右鍵 , 選擇 Properties, 在彈出的對話框中,選擇 Project Facets ,在右邊的選擇框中,勾選 Java 和 Dynamic Web Module ,并在 Dynamic Web Module 后數字中,選擇 jsp 的版本,默認為 3.0.
2、還是在 這個界面,選中,這時,選擇列表下面會出現“ Further Configuration availabe ” 的鏈接 ,點擊這個鏈接,設置src 和 out path, 下一步,就是 Web Module 的設置了,第一項所說,更改 Content Directory 名字為你的 webRoot 目錄名字即可。
以下兩步是在eclipse 沒有自動為導入的項目進行過相關設置的前提下進行的 (也就是項目根目錄下沒有 .settings 文件夾 ) ,如果導入項目后, eclipse 自動將 java 和 Dynamic Web Module 選好了,但配置的相關路徑不正確,我們又應該怎么辦呢?
一種方式 : 將項目根目錄下的.settings 文件夾刪除,對項目進行 refresh 一下 ( 一定要刷新下 ) ,然后,再進行第二項的1 、 2 小點的步驟。這時,去增加 web Facets 時,原來的 √ 選才會被清除掉,可以進行重新設置。
另一種方式 :改配置文件,打開.setting 文件夾下的 org.eclipse.wst.common.component文件 ,用記事本打開,
同時
將.jsdtscope 文件
<classpathentry kind="src" path=" WebContent "/>同步改成與上面的 source-path一致
將org.eclipse.wst.common.project.facet.core.xml 文件 中
<installed facet="java" version=" 1.6 "/> 這一行指定 JDK 版本
<installed facet="jst.web" version=" 2.5 "/> 這一行指定 Web 版本 , 指 servlet 和 jsp ,另外,如果這里 改了web 的版本,注意同步把 web.xml 中的 中相關的 xmlns 指到相應的版本
2.3——
2.4——
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><installed facet="wst.jsdt.web" version=" 1.0 "/> 這一行指定 JavaScript 版本2. 啟動tomcat時報 org.apache.catalina.LifecycleException: Failed to start component
有幾種原因:
1.Web.xml里的配置寫錯了
2.路徑不對
我當時就是這個原因,因為我的eclipse默認項目的根目錄是WebContent,而我的項目里是WebRoot。解決辦法同第一個問題
3.項目中有jar沖突
3.eclipse中如何用遠程git代碼覆蓋本地文件里的代碼
MySQL
1.OR的用法注意(將或者條件字段用括號括起來)
例如需求是:查詢表中年齡大于10或身高小于100cm且性別是男的所有人
當然其他實現方式可能更高效,但這里只是為了說明OR的用法。
錯誤示例:Select * from user where sex=’男’ and age>=11 OR height<=100;
正確示例:Select * from user where sex=’男’ and ( age>=11 OR height<=100 );
在錯誤示例中,因為沒有加括號,OR后面的height<=100會將男和女的滿足該條件的都查出來
前端
1. 前端頁面中的某個問題總是隨機出現時的原因分析
“隨機”?計算機中在相同條件下每次運行的結果不完全一致的情況就是隨機。但,程序的執行順序可是一定的,怎么會隨機呢!
在前端代碼中,只有一種情況是最可能的隨機,那就是執行代碼的時間。代碼的運行”總時間”會是不確定的,而前端使用最多就是Ajax這種請求時間不一定的“異步”請求,當多個ajax請求在成功之后都對某個共享數據進行操作時,就會由于請求時間的長短不同而導致對共享變量的操作順序不同,最終導致結果不一致。
舉個栗子
上面代碼中有兩個幾乎同時執行的Ajax異步請求,所以myId的結果總是顯示請求時間長的那個ajax的結果。因為先執行完的ajax給myId賦值后,又會被后執行完的ajax的賦值操作給覆蓋掉。
總結
- 上一篇: zookeeper安装( windows
- 下一篇: 补充spring事务传播性没有考虑的几种