2015年工作中遇到的问题:61-70

来源:互联网 发布:阿里云文档管理 编辑:程序博客网 时间:2024/04/24 06:28
61.实名认证的故事。
据说,官方公安提供的实名认证接口只有1个,一次调用5元钱。
阿里由于量大,和公安谈判,貌似1元1次。
经过多年,阿里积累了大量的实名认证数据,后来还对外提供了这项服务,一次调用只需要1元钱。
后来,被官方给叫停了。

还有一个故事,微博实名之后,新浪需要对几亿用户进行实名认证,需要花大笔钱。
据说,为了节省一些钱,把这个事包装成一个项目,交给了第三方公司,然后搞定了认证。

权力垄断导致的坑爹事件,这些商业公司花了好多冤枉钱啊。

62.p2p实名认证。
某小公司,为了节省钱,从网上下载了3000万的实名认证数据,导入到自己的库中。

具体到项目中,投标不需要实名认证,降低门槛。实名认证之后,才能提现。

不过呢,我发现存在“洗钱”的可能,投标的时候,用A账户,实名认证用B账户,提现用B账户。
钱就从A到B了。

63.把一个没用的表给删除了,通知了下boss,随手发了个“删了”。
  应该发“已删”,“删了”有歧义

64.有线网络与无线网络的优先级问题。
同时接入有线网络和无线网络,网络信号显示的是,“无线网络的信号”。

65.移动大型文件时,电脑会非常卡,应该是磁盘IO比较差。
I5的CPU,8G内存,按说还是不错的。

66.Windows7安装IIS,测试安装是否成功。
进入Win7的控制面板,选择“程序”然后在点击“程序和功能”,在左侧选择的“打开或关闭Windows功能”在出现的列表中选择IIS7然后确定。
参考资料:百度经验-http://jingyan.baidu.com/article/6dad5075a4564ba123e36e29.html

iis7更改默认连接80端口的方法
参考资料:百度经验-http://jingyan.baidu.com/article/1612d5001990c5e20f1eee50.html

67.SpringMVC的RedirectView与post请求。
网上有传言,说new RedirectView("https://a.com/payindex", true,false, false)
第4个参数为false,是post请求。

但官方的文档不是这么说的,“exposeModelAttributes whether or not model attributes should be exposed as query parameters”,是否需要暴露参数。
RedirectView的底层实现还是response.sendRedirect,url是get实现的。

重定向2种方式实现:
@RequestMapping(value = "/recharge/applyPayment")public RedirectView applyPayment(@RequestParam Long id,ModelMap modelMap, HttpServletRequest request,HttpServletResponse response) {P2PRecharge p2pRecharge = p2pRechargeService.findP2PRechargeById(id);Double inputOrderAmount = p2pRecharge.getMoney();Money orderMoney = new Money(inputOrderAmount);modelMap.putAll(baofuConfig.getApplyParams());modelMap.put(BaofuConfig.BaofuApplyKey.OrderMoney.name(), orderMoney.getCent());modelMap.put(BaofuConfig.BaofuApplyKey.TradeDate.name(), dateformat.format(p2pRecharge.getAddTime()));modelMap.put(BaofuConfig.BaofuApplyKey.TransID.name(), p2pRecharge.getId());modelMap.put("signature", getApplySign(modelMap,baofuConfig.getKey()));//方法1,用RedirectViewreturn new RedirectView("https://vgw.baofoo.com/payindex", true,false, true);//方法2,直接用原生的 try { String p="";for(Entry<String, Object> entry:modelMap.entrySet()){p+=entry.getKey()+"="+entry.getValue()+"&";}//p+=BaofuConfig.BaofuApplyKey.OrderMoney.name()+"="+response.sendRedirect("https://a.com/payindex?"+p);} catch (IOException e) {e.printStackTrace();}}


重定向是否存在get和post这个概念?

68.金钱Money的小数位被吃了。
我们在“2015年工作中遇到的问题:51-60”第56个问题“SpringMVC接收参数疑问。”说道,为了能够“不创建字段,但是通过set方法接收参数”,
结果,尼玛,出大问题了。
自从增加了这个方法,
/*public void setIntegerPart(Long integerPart) {
this.cent = integerPart*100;
}*/
所有涉及资金转账的地方,浮点数部分都没有了,只留下了整数部分。
这是为何呢?

我们只能根据结果分析,WebService调用的时候,Money序列化出了问题。
调用的时候,Money是101,结果到WebService实现的时候,Money是100。

从严谨出发,我个人不喜欢在Bean中创建没有实际字段的getter和setter方法。
69.WebService通信,把Money序列化,为什么会调用setIntegerPart方法。
  经过多次对比分析,只要有setIntegerPart方法,资金相关的就不正确。
  本来以为,只要把“long cent;”改成“private long cent;”就好了。
  据Boss所说,用WebService的时候,它遇到过类似的情况,如果变量没有设置为private的,可能会和public的get方法冲突,出现异常情况。

70.Redis的几个小问题。
a.连接redis客户端
  redis-cli,全都是默认的配置
b.显示所有的keys
   keys (
c.删除key
   del key_name
d.查看1个key的过期时间
  ttl key_name,-1表示永不过期,-2表示不存在
  今天遇到一个很棘手的问题
  
  //如果这个key不在redis中,就设置,并缓存一段时间。
//TODO 问题,如果setIfAbsent执行之后,没有设置过期时间,且此时,服务器挂了,那么后面的设置缓存时间就失败了,然后这个key一直缓存在redis中。
public boolean setIfAbsent(String key, Object value, long timeout){
ValueOperations<String, Object> valueops = businessRedisTemplate
.opsForValue();
boolean result = valueops.setIfAbsent(key, value);
if(result){
this.add(key, value, timeout, TimeUnit.SECONDS);
}
return result;
0 0