公有云說明書理解記錄(含學習記錄)
阿新 • • 發佈:2018-11-09
pdgw-說明書記錄:
記錄1:
- svn分支命名規範:cmshop_CMS_ECO:_CMS_ECO是固定的,前面是具體的專案
- if少用else,可以使用return,邏輯清晰一些
- 常量類分包管理,service有一個常量,controller也有一個常量
- getMapper()可以不加
- 列印日誌出來用e.printStackTrace(); logger.error(e.toString());
- 地址訪問如果有問題,可能是host檔案未對應上
- 智慧家居有沒有對中文,特殊符號的產品型號處理的???? 返回的請求頭是什麼,我就用相應的去編碼
- return是終止方法,continue是跳過迴圈,break是終止整個迴圈
- 通常情況下,服務端必須指定返回資料體的編碼方案且要在header中標註編碼方案,否則httpserver一般預設iso-8859-1對輸出進行編碼,可以通過檢視chrome瀏覽器,檢視header
- 執行緒是實現非同步的一個方式。非同步是讓呼叫方法的主執行緒不需要同步等待另一執行緒的完成,從而可以讓主執行緒幹其他事情
- 定時任務的呼叫,就是建立一個新的執行緒去執行處理,使用ExecutorService的submit去處理
- ctrl+shift+r 只執行選中的sql語句
- 亂碼問題:瀏覽器使用iso-8859-1把中文特殊符號編碼了,可以通過getBytes轉碼,然後轉成iso-8859-1的位元組,再轉成字串,之後就可以使用了,String code = new String(request.getParameter(“code”).getBytes(“iso-8859-1”)),getBytes可以通過某種指定的編碼解碼成位元組,new String 可以把位元組轉成字串
- mybatis中的mapper使用<![CDATA[ <> ]]>,可以處理不識別“<>”的問題
- domain:是用於跨域,訪問哪個,domain設定為哪一個
- 如果引數包含“&”,在傳送引數前,將&全部替換為%26
- tomcat解決get亂碼問題,在server.xml中埠號位置設定URIEncoding=“UTF-8”
- 查重複多少:select user_name,count(*) as count from user group by user_name having count>1;
- svn合併到主幹時解決衝突,mine是本地倉庫主幹,theirs是分支的
- 分發的時候,做限制更好,可能本身bath表儲存有智慧家居或者ic的說明書地址,這個時候主資料新添加了說明書,同步新增到bath表中,然後再排序返回,取第一個來分發,即是按照一定的順序分發了
- 查詢產品型號存不存在,同步到p_product表中查詢
- 公有云的version1.0是初始的需求,version2.0是處理易買的,主要的區別是返回的引數不同,其他差不多
- 注意統一修改,不要只修改了一部分,其他的就不管了
- 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來處理
- 缺少的資料,其他方案不行的話,通過造資料處理,需要跟多個環節溝通
- 500一般是內部服務錯誤,程式碼有問題
- 排查問題主要如果涉及到多個專案,同時檢視多個專案的日誌,一個程式碼執行按順序走下來,排除問題,逐漸縮小範圍
- 同步css的時候,根據產品編碼給沒有品類的主資料的產品同步品類,根據產品編碼對應起來
- 同步說明書的時候,儲存同步過來的地址到資料庫中,再上傳到oss中,分發的時候再拼oss的地址
- 安裝:到父工程中使用mvn clean package -Dmaven.test.skip=true -P beta
- 如果修改主鍵,把主鍵增大了,insert新增,會插入到中間空出來的id,如把最大主鍵10改成20,中間空出了,會插入到11的位置
- 生產環境拼的oss檔案地址是:http://filecmms.midea.com,測試環境拼的oss檔案地址是:http://fcmms.midea.com
- 發現訪問的地址一直有問題的,考慮清redis的快取
- 處理速度效率,可以使用快取和非同步處理
- ctrl + shift + g 查詢方法在哪裡用到了
記錄2:
- getProMessage中返回DATA_NOT_FOUND,資料不存在,返回ILLEGAL_ARGUMENT,引數有誤
- bath的說明書記錄本身只有接近800條,產品基本資訊有product_id的有9萬多條
- 注意pdgw的service中注入物件是用的setter方法
- 模糊搜尋限制查出20條記錄
- 沒有product_id的資料是來源於css的
- 分頁查詢用PageHelper,分頁資訊在PageInfo中,如果需要,則要在dao層新增方法,返回結果是pageInfo
公有云專案pdgw理解:
- mysql中的對應java的long型別主要是bigint型別。
- 在使用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);的處理就可以了。
- hessian相似與webService,是一個remoting onhttp工具。
- 同步商品主資料,在esJobServiceImpl中。
pdgw架構理解:
-
表現層:
1) 返回ResponseEntity,通過baseController中的result組裝返回的資料(result中組裝了dto)。
2) Controller繼承baseController。
3) 呼叫service層的方法。 -
業務層:
1) 普遍返回vo物件,vo物件是業務邏輯需要的自定義物件,返回需要的資料
2) 可能涉及到多個表查詢,使用BeanUtils的複製屬性方式,組裝vo -
持久層:
1) 使用entity物件封裝從資料庫查詢的物件
2) 使用dao物件和mapper物件 -
實體類的理解
1) dto用於返回檢視層的資料(與表現層想關)
2) vo用於業務過程處理需要返回的資料(與業務邏輯層相關)
3) entity對應資料庫表(與持久層相關)