单车的重点和坑记录一下

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版本变化 导致返回类型不一样 


百度云推送

你可能感兴趣的:(学习笔记)