文档章节

2015年创业中遇到的技术问题:61-70

FansUnion
 FansUnion
发布于 2015/05/03 01:31
字数 1226
阅读 11
收藏 0
61.Redis的key要判断null的情况。
   如果key为null,报错。
public Boolean exists(String key) {
if(StringUtils.isBlank(key)){
return false;
}
return loginRedisTemplate.hasKey(key);
}
   另外原因分析,看了错误信息,发现是
   org.springframework.util.Assert.notNull.
   猜测,用Spring Data和redis连接,Spring会断言key不为null。
   
62.Chrome坑爹货。
桌面快捷方式,需要双击2次,再双击2次,才能打开。
加到快速启动栏,得点1次,再点1次,才能打开。

63.数据库连接太多。
   云服务器上的mysql默认开的连接数比较少,大概在30~50。
   线上跑了好几个程序。
  wxdemo 10个,xp2p 20多个。
  本地,又跑了2个程序,经常出现数据库连接过多的情况。
  无奈之下,把本地的bonecp数据源的连接池数目调小了一点,暂时没有出现问题了。
  
  经常出现“数据库连接过多”,开发效率降低了不少。
  <property name="maxConnectionsPerPartition" value="${jdbc.maxConnectionsPerPartition}" />
<property name="minConnectionsPerPartition" value="${jdbc.minConnectionsPerPartition}" />
<property name="idleConnectionTestPeriodInSeconds" value="${jdbc.idleConnectionTestPeriodInSeconds}" />
<property name="idleMaxAge" value="${jdbc.idleMaxAge}" />
<property name="acquireIncrement" value="${jdbc.acquireIncrement}" />

 bonecp.ConnectionHandle - uid:1000000179 @fansunion 127.0.0.1 Database access problem. 
 Killing off all remaining connections in the connection pool. SQL State = 08S01
 
64.分布式登录。
Cookie,登录之后,设置Cookie。
maxAge为-1,表示浏览器关系Session就小时。
也可以设置为>0的数值,比如1*24*60*60,保持登录1天。

有一点是需要注意的,除了浏览器Cookie的时间,保存在Redis缓存中的Cookie也有时间限制。

每次有请求访问的时候,重新设置redis的时间。
错误的情况:登录之后,把Cookie保存在Redis中30分钟。如果,用户最近一直访问,30分钟之后,也会“离线”。
这是不科学的。

正解:每次访问,都要重新向Redis中更新Cookie缓存。

如果是保持登录的情况,比如保持登录一周,不需要。

要不然,用户每天都访问,可以一直保持登录,从而超过了一个周。
(这个地方挺关键的,总结的过程中,发现了这个bug。)

65.Redis反序列化。
第1次,存储com.jiutianniao.User到Redis。
第2次,重构User为com.jiutianniao.User2,连接Redis,提示“反序列化异常”,因为找不到User对象了。

解决办法:
清空Redis数据库:FLUSHDB 清除一个数据库,FLUSHALL清除整个redis数据。

66.OSChina的Git项目,有个比较让人郁闷的问题。
第1步:新建项目,比如oa。不初始化项目。
第2步:本地,Eclipse新建项目,项目名称为oa。
第3步:本地提交到远程。
坑爹的地方,就是这。
本地工程提交到OSChina之后,项目的路径是:/oa/oa。
  这个时候,另外一个开发者,从Git上导出项目,结果是个目录/oa/oa。
  
第4步:把/oa/oa向上移动一个目录,再提交。
之前在Java Web项目中,没有遇到太大问题。可能是因为都是Maven项目,重新转换成Maven项目就好了。
今天的项目是Android,向上移动一个目录之后,不再是一个工程。
又不能向Maven项目那样,重新转换一次就好了。

尝试了几个小时,终于找到了方法。
把正常Android的.project的内容,覆盖非正常Android项目的.project的内容。


67.保持登录和缓存导致的bug。
后端用户登录,把当前权限列表保存到Redis中了。
有的权限,更新了下。
重启系统,自动登录了,使用的仍然是旧的权限列表。
有些菜单一直访问不了。

68.下载的问题。
在个人中心等需要登录的地方,如果有下载,通过浏览器可以正常下载。
通过,迅雷等专用下载器就不行了,因为Cookie没有保存。

最开始,我想的是,让这些下载链接改成不需要登录的,刚刚又想了下,
这样太危险了,容易泄漏数据。

69.快速构造字符串的一种方法。
方法1:
  String url = " http://jiutianniao.com/demo.html?a="+a+"&b"=b;
 
方法2:
  token_url.replace("APPID", appid).replace("APPSECRET", appsecret);
  
  先使用占位符,然后字符串整体替换。

70.微信第2个Demo小坑2个。
  a.按钮类型Java定义:
//这个地方,不能改为subButton
private Button[] sub_button;
看了不爽,把sub_button改成了subButton,最终影响到了序列化,出现“按钮类型错误”。
  b.用户事件类型区分大小写
public enum EventType {
// 订阅
SUBSCRIBE("subscribe"),
// 取消订阅
UNSUBSCRIBE("unsubscribe"),
// 用户已关注时的扫描带参数二维码
SCAN("scan"),
// 上报地理位置
LOCATION("LOCATION"),
// 自定义菜单
CLICK("CLICK");
}
大部分的事件等都是“小写表示”,看到了几个“大写”的,很是不爽,
改成了小写,结果就出事了。
可能是“微信那边的历史遗留问题”吧。

© 著作权归作者所有

FansUnion
粉丝 60
博文 858
码字总数 825464
作品 0
丰台
高级程序员
私信 提问
【线上沙龙预告】工程师是否应该参与创业?会遇到哪些问题?

[有鱼线上沙龙] 由有鱼App官方主办,旨在通过最实用、最前沿的话题交流,让更多的技术牛人通过轻量线上互动碰撞出技术灵感,搭建“最有质量”的互联网技术族圈子。第一期话题:工程师是否应该...

PatrickWong
2015/07/22
149
0
【线上沙龙预告】工程师是否应该参与创业?会遇到哪些问题?

[有鱼线上沙龙] 由有鱼App官方主办,旨在通过最实用、最前沿的话题交流,让更多的技术牛人通过轻量线上互动碰撞出技术灵感,搭建“最有质量”的互联网技术族圈子。第一期话题:工程师是否应该...

PatrickWong
2015/07/22
0
0
从APP开发到移动创客全解析(西安站)

活动内容… 我们生在伟大的时代:创新开放,遍布机遇。人人都有机会将创意变成产品、将梦想变为现实。作为站在移动互联网风口的开发者,可以更加清晰地感受这种众创氛围。拥有70万注册开发者...

AppCan_cn
2015/04/13
14
0
2B创业的中国式难题-【中国IC微专栏】2016.4.5

前一段时间看到有人转发了下面一段号称中欧商学院廖教授的话:中国受过极良好教育的年轻人们,聚集在被称为“创业导师”的中年男人们周围,一起彻夜不休地燃烧生命,只为了在一轮又一轮如何送...

张振伦
2016/04/08
0
0
AppCan移动创业技术分享会(北京站)

大众创业,万众创新。 当今,数千万的移动开发者正在形成最具影响力的创新创业主体,而全新的移动众创平台将成为梦想的孵化器。 拥有70万注册开发者、6000家企业客户的移动应用开发平台AppCa...

青木瓜
2015/03/12
525
0

没有更多内容

加载失败,请刷新页面

加载更多

Oracle SQL语法实例合集

如需转载请注明出处https://my.oschina.net/feistel/blog/3052024 目的:迅速激活Oracle SQL 参考:《Oracle从入门到精通》 ------------------------------------------------------------......

LoSingSang
今天
2
0
增加 PostgreSQL 服务进程的最大打开文件数

https://serverfault.com/questions/628610/increasing-nproc-for-processes-launched-by-systemd-on-centos-7 要在systemd的配置里加才行...

helloclia
今天
2
0
组合模式在商品分类列表中的应用

在所有的树形结构中最适合的设计模式就是组合模式,我们看看常用商品分类中如何使用。 先定义一个树形结构的商品接口 public interface TreeProduct { List<TreeProduct> allProducts(...

算法之名
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部