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

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然后确定。

iis7更改默认连接80端口的方法

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,用RedirectView
		return 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;
原文地址:https://www.cnblogs.com/qitian1/p/6462877.html