1. 程式人生 > >公有云說明書理解記錄(含學習記錄)

公有云說明書理解記錄(含學習記錄)

pdgw-說明書記錄:

記錄1:

  1. svn分支命名規範:cmshop_CMS_ECO:_CMS_ECO是固定的,前面是具體的專案
  2. if少用else,可以使用return,邏輯清晰一些
  3. 常量類分包管理,service有一個常量,controller也有一個常量
  4. getMapper()可以不加
  5. 列印日誌出來用e.printStackTrace(); logger.error(e.toString());
  6. 地址訪問如果有問題,可能是host檔案未對應上
  7. 智慧家居有沒有對中文,特殊符號的產品型號處理的???? 返回的請求頭是什麼,我就用相應的去編碼
  8. return是終止方法,continue是跳過迴圈,break是終止整個迴圈
  9. 通常情況下,服務端必須指定返回資料體的編碼方案且要在header中標註編碼方案,否則httpserver一般預設iso-8859-1對輸出進行編碼,可以通過檢視chrome瀏覽器,檢視header
  10. 執行緒是實現非同步的一個方式。非同步是讓呼叫方法的主執行緒不需要同步等待另一執行緒的完成,從而可以讓主執行緒幹其他事情
  11. 定時任務的呼叫,就是建立一個新的執行緒去執行處理,使用ExecutorService的submit去處理
  12. ctrl+shift+r 只執行選中的sql語句
  13. 亂碼問題:瀏覽器使用iso-8859-1把中文特殊符號編碼了,可以通過getBytes轉碼,然後轉成iso-8859-1的位元組,再轉成字串,之後就可以使用了,String code = new String(request.getParameter(“code”).getBytes(“iso-8859-1”)),getBytes可以通過某種指定的編碼解碼成位元組,new String 可以把位元組轉成字串
  14. mybatis中的mapper使用<![CDATA[ <> ]]>,可以處理不識別“<>”的問題
  15. domain:是用於跨域,訪問哪個,domain設定為哪一個
  16. 如果引數包含“&”,在傳送引數前,將&全部替換為%26
  17. tomcat解決get亂碼問題,在server.xml中埠號位置設定URIEncoding=“UTF-8”
  18. 查重複多少:select user_name,count(*) as count from user group by user_name having count>1;
  19. svn合併到主幹時解決衝突,mine是本地倉庫主幹,theirs是分支的
  20. 分發的時候,做限制更好,可能本身bath表儲存有智慧家居或者ic的說明書地址,這個時候主資料新添加了說明書,同步新增到bath表中,然後再排序返回,取第一個來分發,即是按照一定的順序分發了
  21. 查詢產品型號存不存在,同步到p_product表中查詢
  22. 公有云的version1.0是初始的需求,version2.0是處理易買的,主要的區別是返回的引數不同,其他差不多
  23. 注意統一修改,不要只修改了一部分,其他的就不管了
  24. update多表更新,使用UPDATE sup_client_prod_type_prod t1 INNER JOIN sup_client_prod_type t2 ON t1.PROD_CODE = t2.PROD_CODE SET t1.can_install = t2.can_install來處理
  25. 缺少的資料,其他方案不行的話,通過造資料處理,需要跟多個環節溝通
  26. 500一般是內部服務錯誤,程式碼有問題
  27. 排查問題主要如果涉及到多個專案,同時檢視多個專案的日誌,一個程式碼執行按順序走下來,排除問題,逐漸縮小範圍
  28. 同步css的時候,根據產品編碼給沒有品類的主資料的產品同步品類,根據產品編碼對應起來
  29. 同步說明書的時候,儲存同步過來的地址到資料庫中,再上傳到oss中,分發的時候再拼oss的地址
  30. 安裝:到父工程中使用mvn clean package -Dmaven.test.skip=true -P beta
  31. 如果修改主鍵,把主鍵增大了,insert新增,會插入到中間空出來的id,如把最大主鍵10改成20,中間空出了,會插入到11的位置
  32. 生產環境拼的oss檔案地址是:http://filecmms.midea.com,測試環境拼的oss檔案地址是:http://fcmms.midea.com
  33. 發現訪問的地址一直有問題的,考慮清redis的快取
  34. 處理速度效率,可以使用快取和非同步處理
  35. ctrl + shift + g 查詢方法在哪裡用到了

記錄2:

  1. getProMessage中返回DATA_NOT_FOUND,資料不存在,返回ILLEGAL_ARGUMENT,引數有誤
  2. bath的說明書記錄本身只有接近800條,產品基本資訊有product_id的有9萬多條
  3. 注意pdgw的service中注入物件是用的setter方法
  4. 模糊搜尋限制查出20條記錄
  5. 沒有product_id的資料是來源於css的
  6. 分頁查詢用PageHelper,分頁資訊在PageInfo中,如果需要,則要在dao層新增方法,返回結果是pageInfo

公有云專案pdgw理解:

  1. mysql中的對應java的long型別主要是bigint型別。
  2. 在使用BeanUtils.copyProperties()方法過程中報"no value specified for date"錯誤,是因為Converter這個居然只支援一些基本的型別,居然連java.util.Date這個也支援不了,而它的子類java.sql.Date是被支援的,在沒有使用型別註冊器的前提下使用util.date型別會報上述錯誤。BeanUtils.copyProperties(dest, orig);這種copy是淺拷貝,複製後的2個Bean的同一個屬性可能擁有同一個物件的控制代碼,BeanUtils在對Bean賦值是會進行型別轉化。舉例來說也就是在copyProperty時只要屬性名相同,就算型別不同,BeanUtils也可以進行copy。而解決的辦法也非常簡單,只需要在BeanUtils.copyProperties()之前先通過型別註冊器 ConvertUtils.register(new DateConverter(null), java.util.Date.class);的處理就可以了。
  3. hessian相似與webService,是一個remoting onhttp工具。
  4. 同步商品主資料,在esJobServiceImpl中。

pdgw架構理解:

  1. 表現層:
    1) 返回ResponseEntity,通過baseController中的result組裝返回的資料(result中組裝了dto)。
    2) Controller繼承baseController。
    3) 呼叫service層的方法。

  2. 業務層:
    1) 普遍返回vo物件,vo物件是業務邏輯需要的自定義物件,返回需要的資料
    2) 可能涉及到多個表查詢,使用BeanUtils的複製屬性方式,組裝vo

  3. 持久層:
    1) 使用entity物件封裝從資料庫查詢的物件
    2) 使用dao物件和mapper物件

  4. 實體類的理解
    1) dto用於返回檢視層的資料(與表現層想關)
    2) vo用於業務過程處理需要返回的資料(與業務邏輯層相關)
    3) entity對應資料庫表(與持久層相關)