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;
相關文章
相關標籤/搜索