單車的重點和坑記錄一下

一也者發表於2018-09-15

springboot Autowired 注入失敗 報mapper檔案not found 得在mapper.xml 介面上配置@Mapper 

mybatis:
    mapper-locations: classpath:com/coder520/mamabike/**/**.xml
    type-aliases-package: classpath:com.coder520.mamabike.**.entity 路徑要保證寫對


Exception in thread "main" javax.crypto.BadPaddingException: Decryption error     

解密方法

 Cipher cipher = Cipher.getInstance("RSA");
改為
 Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");


springboot 內建tomcat 主函式啟動 打包 是jar 配置簡化

jackson null值也會顯示
fastjson null值不會顯示


使用者登入    
session一致問題 採用session外接方式 採用redis
不是瀏覽器 沒有cookie session

session介面 有狀態的
移動端 是無狀態的 不能建立session 使用token

登入獲取token的時候 需要加密
不適用md5 因為數字加密 不可逆 無法解密

所以使用對稱加密 和 非對稱加密的結合
對資料使用對稱加密 key在使用非對稱加密 
傳輸的時候先伺服器端的非對稱加密解密key
再使用解密出來的key對稱解密資料

因為非對稱加密效率低 而且資料量大 加密就慢
這樣能提升安全性 加快效率

對稱加密AES
非對稱加密RSA 大因數分解

base64編碼同意 防止解碼失敗


登陸的時候安卓傳到介面密文 驗證密文 如果不合格 丟擲異常 不影響後續業務邏輯
手機和驗證碼是否匹配 查資料庫看是否存在 不存在就幫註冊 
生成token 根據使用者id 使用者手機號 以及當前時間戳的拼接 md5生產token

jedispoolwrapper是jedis初始化時init方法要執行 使用@PostConstruct


userelement 把token放入這個類 platform 平臺(安卓或者ios) token當key 

redis中把userelement轉為map hset 以token為key放入redis 設定超時時間

mybatis中的useGeneratekeys 返回id

把token放在http請求頭裡面

傳送簡訊 啟動activemq win64 bat 啟動redis 不行就上8161 賬戶名密碼admin 登入就好用

對接秒滴簡訊 accountid typeid url
根據ip判斷 超過十次 不發驗證碼
同一個手機號 不能操作多次
使用setnx判斷驗證碼是否過期
使用incr使其自增一
expire設定驗證碼過期 60秒過期

發簡訊和業務沒有關係 成功沒成功和後續邏輯沒關係 用mq把簡訊非同步出去 解耦 因為沒有使用分散式 所以沒有建立很多類
先是把隨機生成的驗證碼放到生產者 queue裡面 然後消費者傳送簡訊
每發一次自增一


mongodb啟動

D:\mongoDB\mongodb-win32-x86_64-2008plus-3.2.10-rc1\bin>mongod --dbpath D:\mongoDB\mongodb
查詢 ctrl+回車

在location裡建立索引
{
    "location" : "2dsphere"
}
計算兩車的距離 geonear
計算範圍的車 geoNearSphere
查詢附近單車
db.getCollection('bike-position').find({location:{$nearSphere:{$geometry:{type:"Point",coordinates:[104.063339, 30.547347]},$maxDistance:50}},status:1})

getcollection版本變化 導致返回型別不一樣 


百度雲推送

相關文章