分布式鎖1 Java常用技術方案
前言: 由于在平(ping)時的(de)工作中(zhong),線(xian)上服務(wu)器是(shi)分布式多(duo)臺部署的(de),經常會面臨解決(jue)分布式場(chang)景(jing)下數據(ju)一(yi)(yi)(yi)致性的(de)問題(ti),那(nei)么就(jiu)要利用分布式鎖來解決(jue)這(zhe)些(xie)問題(ti)。所以(yi)(yi)自(zi)己結(jie)合實(shi)際工作中(zhong)的(de)一(yi)(yi)(yi)些(xie)經驗和網(wang)上看到的(de)一(yi)(yi)(yi)些(xie)資料(liao),做一(yi)(yi)(yi)個講解和總結(jie)。希望(wang)這(zhe)篇文(wen)章可(ke)以(yi)(yi)方便自(zi)己以(yi)(yi)后查閱,同時要是(shi)能幫助到他人那(nei)也是(shi)很好(hao)的(de)。 長長的(de)分割線(xian) 正文(wen): ...
我眼中的技術地圖
一(yi)晃(huang)研究生畢業參加工(gong)作也已經8、9年,這些年搞過嵌入式、web開發、移(yi)動應用、IT咨詢(xun)、項目(mu)(mu)集(ji)成,零(ling)(ling)零(ling)(ling)種(zhong)種(zhong)到如今(jin)也不知是(shi)好事還(huan)是(shi)壞事。今(jin)天幾個項目(mu)(mu)進度不錯,上線的版本(ben)問題居然還(huan)沒有問題反(fan)饋,真(zhen)是(shi)XX都(dou)笑歪了。抽下午的時(shi)間把(ba)自己這些年的技術梳(shu)理出來(lai),能力(li)有限,只算是(shi)羅(luo)列一(yi)些點吧(當然只要(yao)我列出的,多少 ...
【CSS進階】偽元素的妙用--單標簽之美
最近在研讀(du) 《CSS SECRET》(CSS揭(jie)秘)這本大作,對 CSS 有(you)了(le)更深層(ceng)次的理解,折騰(teng)了(le)下(xia)面這個(ge)(ge)項(xiang)目: CSS3奇(qi)思妙想 -- Demo (請用 Chrome 瀏覽器打(da)開,非常值(zhi)得一看)。采用單標簽(qian)完(wan)成各種圖案,許(xu)多(duo)圖案與本文有(you)關。 也希望覺得不錯的同學順手在我(wo)的 Github 點個(ge)(ge) st ...
那些年搞不懂的高深術語——依賴倒置?控制反轉?依賴注入?面向接口編程
那(nei)些年,空氣中仿(fang)佛還(huan)能聞(wen)到漢唐盛世的(de)(de)余韻(yun),因(yin)此你(ni)(ni)決不允(yun)許自(zi)己(ji)的(de)(de)臉上有油光,時刻保持(chi)活力(li)。然(ran)而(er),你(ni)(ni)一定曾為這些“高深(shen)術語”感到過困擾——依(yi)(yi)賴倒置?控(kong)制反轉?依(yi)(yi)賴注入?面(mian)向接口編程。也許時至今(jin)日,你(ni)(ni)仍(reng)對它們一知(zhi)半解。不過就在今(jin)天,這一切都將徹底(di)改變(bian)!我(wo)將帶領你(ni)(ni)以一種全新的(de)(de)高清視(shi)角進入奇妙的(de)(de)編程世界,領略 ...
【前端性能】高性能滾動 scroll 及頁面渲染優化
最近在研究(jiu)頁(ye)面(mian)渲染及(ji)web動畫的性能問題,以及(ji)拜讀《CSS SECRET》(CSS揭(jie)秘(mi))這(zhe)本(ben)(ben)大作。 本(ben)(ben)文主要(yao)(yao)想談談頁(ye)面(mian)優(you)化(hua)之滾(gun)動優(you)化(hua)。 主要(yao)(yao)內(nei)容包(bao)括了為何需要(yao)(yao)優(you)化(hua)滾(gun)動事件,滾(gun)動與(yu)(yu)頁(ye)面(mian)渲染的關系,節流與(yu)(yu)防抖,pointer-events:none 優(you)化(hua)滾(gun)動。因為本(ben)(ben)文涉及(ji)了很多很多基礎,可以對照上面(mian)的知 ...
如何優雅的使用RabbitMQ
RabbitMQ無疑是目(mu)前最流行的消息隊列(lie)之一,對各種(zhong)(zhong)語言環境的支持也很豐富,作(zuo)為(wei)一個.NET developer有必要學習(xi)和了解(jie)這一工具。消息隊列(lie)的使(shi)用場景大概(gai)有3種(zhong)(zhong): 1、系(xi)統(tong)集成,分(fen)布式系(xi)統(tong)的設計。各種(zhong)(zhong)子系(xi)統(tong)通過消息來(lai)對接,這種(zhong)(zhong)解(jie)決(jue)方案也逐(zhu)步(bu)發展成一種(zhong)(zhong)架(jia)構(gou)風格,即(ji)“通過消息傳(chuan)遞的架(jia)構(gou)”。 2、 ...
游戲編程十年總結(下)
游戲編程十年總結(jie)的上篇總結(jie)了(le)(le)前(qian)五年初(chu)學編程的經(jing)歷(li)(li),下篇總結(jie)的是(shi)開始工作之(zhi)后的經(jing)歷(li)(li),前(qian)面五年算是(shi)一(yi)帆風順(shun),而接下來的經(jing)歷(li)(li),則充滿(man)了(le)(le)挫折與(yu)失敗(bai)。 第一(yi)份工作 由于學歷(li)(li)不高,還沒畢業,經(jing)驗不足讓我吃(chi)了(le)(le)不少閉門羹,在大三(san)剛開始時就開始在網上投放簡歷(li)(li)了(le)(le),但基本是(shi)石沉大海。雖然沒有面試(shi)邀(yao)請(qing),我還是(shi)獨自一(yi)人來到了(le)(le) ...
游戲編程十年總結(上)
自敲第一行代(dai)碼起(qi),已經(jing)十年(nian)多了(le)(le)(le),今天(tian)既不(bu)是(shi)十年(nian)整的(de)日子,也不(bu)是(shi)一個有特(te)定(ding)意義的(de)日子,本來(lai)像這種(zhong)大(da)總(zong)結的(de)文章,當擇良辰(chen)吉(ji)日,齋戒(jie)沐浴三日,方可動(dong)筆(bi)。一開始計劃是(shi)寫一篇五(wu)年(nian)總(zong)結的(de),但各(ge)種(zhong)原因(yin)一拖再拖,于是(shi)就(jiu)變成了(le)(le)(le)十年(nian)總(zong)結。光(guang)陰似箭,時不(bu)我(wo)待,轉眼已經(jing)在(zai)奔三的(de)路上(shang)了(le)(le)(le),離大(da)叔的(de)稱(cheng)呼很(hen)近了(le)(le)(le),但離大(da)神的(de)稱(cheng)呼還很(hen) ...
簡單粗暴地理解js原型鏈--js面向對象編程
1)人(ren)(ren)(ren)是(shi)(shi)人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)生(sheng)的,妖(yao)是(shi)(shi)妖(yao)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)生(sheng)的。人(ren)(ren)(ren)和妖(yao)都(dou)是(shi)(shi)對(dui)象實例,而(er)人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)和妖(yao)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)就是(shi)(shi)原(yuan)型(xing)。原(yuan)型(xing)也是(shi)(shi)對(dui)象,叫原(yuan)型(xing)對(dui)象。2)人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)和人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)爸啪(pa)啪(pa)啪(pa)能生(sheng)出(chu)一堆人(ren)(ren)(ren)寶(bao)(bao)寶(bao)(bao)、妖(yao)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)和妖(yao)他(ta)(ta)(ta)(ta)爸啪(pa)啪(pa)啪(pa)能生(sheng)出(chu)一堆妖(yao)寶(bao)(bao)寶(bao)(bao),啪(pa)啪(pa)啪(pa)就是(shi)(shi)構造(zao)函(han)數,俗稱(cheng)造(zao)人(ren)(ren)(ren)。3)人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)也是(shi)(shi)由人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)生(sheng)的,通過(guo)人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)找(zhao)到人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma),再(zai)通過(guo)人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)他(ta)(ta)(ta)(ta)媽(ma)(ma)(ma)(ma)找(zhao)到人(ren)(ren)(ren)他(ta)(ta)(ta)(ta)... ...
setTimeout 的黑魔法
setTimeout,前端工程(cheng)師必(bi)定(ding)會打交道(dao)的(de)(de)(de)一(yi)(yi)個(ge)函數.它看上去非(fei)常的(de)(de)(de)簡單,樸實.有著(zhu)一(yi)(yi)個(ge)很不平(ping)凡的(de)(de)(de)名字--定(ding)時(shi)器.讓年少(shao)的(de)(de)(de)我(wo)天(tian)真的(de)(de)(de)以(yi)為(wei)自己可(ke)以(yi)操縱(zong)未來.卻不知樸實之中隱含著(zhu)驚天(tian)大密.我(wo)還記(ji)得我(wo)第一(yi)(yi)次用這個(ge)函數的(de)(de)(de)時(shi)候,我(wo)天(tian)真的(de)(de)(de)以(yi)為(wei)它就(jiu)是js實現多線程(cheng)的(de)(de)(de)工具.當時(shi)用它實現了(le)一(yi)(yi)個(ge)坦克大戰的(de)(de)(de)小游戲,玩兒(er)不 ...
路漫漫其修遠兮,吾將上下而求索——小酌重構系列[0]開篇有益
相(xiang)信博客園的(de)讀(du)者大(da)多(duo)都是(shi)(shi)千萬“碼(ma)(ma)農”中的(de)一(yi)(yi)(yi)員,每(mei)個人都寫(xie)過(guo)很多(duo)代(dai)碼(ma)(ma),但并不是(shi)(shi)每(mei)一(yi)(yi)(yi)個人都能寫(xie)出高(gao)(gao)質(zhi)(zhi)量(liang)的(de)代(dai)碼(ma)(ma)。
rome is not built in one day !——完成高(gao)(gao)質(zhi)(zhi)量(liang)的(de)代(dai)碼(ma)(ma)也(ye)不是(shi)(shi)一(yi)(yi)(yi)蹴而就的(de)。為(wei)了寫(xie)出高(gao)(gao)質(zhi)(zhi)量(liang)的(de)代(dai)碼(ma)(ma),我們需(xu)要借助一(yi)(yi)(yi)些(xie)手段,“代(dai)碼(ma)(ma)重構”基(ji)本上(shang)是(shi)(shi)最常用的(de)手段,甚(shen)至是(shi)(shi)唯一(yi)(yi)(yi)的(de)手段... ...
JAVA回調機制(CallBack)詳解
序言 最(zui)近(jin)學習java,接觸到了(le)(le)回調(diao)機制(CallBack)。初識時感覺比(bi)較混亂(luan),而且在(zai)網(wang)上(shang)搜索到的(de)相(xiang)關的(de)講解,要么(me)一(yi)言帶過,要么(me)說(shuo)的(de)比(bi)較單純的(de)像(xiang)是給CallBack做了(le)(le)一(yi)個(ge)定義(yi)。當然(ran)了(le)(le),我在(zai)理解了(le)(le)回調(diao)之(zhi)后,再(zai)去看網(wang)上(shang)的(de)各種講解,確實沒什么(me)問題。但是,對于初學的(de)我來說(shuo),缺了(le)(le)一(yi)個(ge)循序漸進的(de)過程。此處, ...
我眼中的領域驅動設計
有幸(xing)參與了(le)一些(xie)領(ling)(ling)(ling)域(yu)驅(qu)(qu)動(dong)(dong)的項目(mu),讀了(le)一些(xie)文章,也見識了(le)一些(xie)不倫不類的架構,感覺對領(ling)(ling)(ling)域(yu)驅(qu)(qu)動(dong)(dong)有了(le)更進一步的認識。所以(yi)今天跟大伙(huo)探討(tao)一下領(ling)(ling)(ling)域(yu)驅(qu)(qu)動(dong)(dong)設計,同時也對一些(xie)想要實(shi)踐領(ling)(ling)(ling)域(yu)驅(qu)(qu)動(dong)(dong)設計卻又無處下手,或者一些(xie)正在實(shi)踐卻又說不上領(ling)(ling)(ling)域(yu)驅(qu)(qu)動(dong)(dong)設計到底好在哪的朋友一些(xie)指(zhi)引方向。當(dang)然(ran)對于(yu)”領(ling)(ling)(ling)域(yu)驅(qu)(qu)動(dong)(dong)設計”這個主題而言從(cong)來不乏(fa) ...
異步并行批處理框架設計的一些思考
隨著互聯網(wang)信(xin)息技(ji)術日新月異的(de)(de)(de)發展(zhan),一個海量(liang)數(shu)據爆(bao)炸的(de)(de)(de)時代已(yi)經到來(lai)。如(ru)何(he)有效地處(chu)(chu)理(li)(li)、分(fen)析(xi)這(zhe)些海量(liang)的(de)(de)(de)數(shu)據資源(yuan),成(cheng)為各大技(ji)術廠(chang)商(shang)爭在(zai)激(ji)烈的(de)(de)(de)競爭中(zhong)脫穎而出的(de)(de)(de)一個利器。可(ke)以(yi)(yi)說,如(ru)果不能很好的(de)(de)(de)快速處(chu)(chu)理(li)(li)分(fen)析(xi)這(zhe)些海量(liang)的(de)(de)(de)數(shu)據資源(yuan),將很快被(bei)市場無情地所淘(tao)汰。當(dang)然,處(chu)(chu)理(li)(li)分(fen)析(xi)這(zhe)些海量(liang)數(shu)據目前可(ke)以(yi)(yi)借鑒的(de)(de)(de)方案有很多(duo):首先,在(zai)分(fen) ...
TDD在Unity3D游戲項目開發中的實踐
關于TDD測試驅動(dong)開(kai)發(fa)的文(wen)(wen)章已經(jing)有很(hen)多了,但是在(zai)游(you)戲(xi)開(kai)發(fa)尤(you)其是使(shi)用Unity3D開(kai)發(fa)游(you)戲(xi)時,卻聽不到特別多關于TDD的聲音。那么(me)本文(wen)(wen)就(jiu)來簡(jian)單(dan)(dan)聊(liao)一(yi)聊(liao)TDD如何在(zai)U3D項目中(zhong)使(shi)用以及(ji)如何使(shi)用U3D 5.3.X之后(hou)版本已經(jing)集成的單(dan)(dan)元測試模塊Editor Test Runner。 ...
或許是領域建模的真相
我們一提及領(ling)域建模,就好(hao)像回到(dao)了(le)石器時(shi)代。然而這(zhe)個謎題至(zhi)今還未解決,就好(hao)像穴居人(ren)的生存方式,我們只能猜測、推測以(yi)及演繹,卻(que)不(bu)能真實復現。 Martin Fowler的《分(fen)(fen)析模式》總結了(le)諸多領(ling)域分(fen)(fen)析模式,Eric Evans開創(chuang)了(le)領(ling)域驅(qu)(qu)動(dong)設計的辦(ban)法(fa),至(zhi)于還要老的CRC方法(fa),用例(li)驅(qu)(qu)動(dong),ICONIX方法(fa)以(yi) ...
“四核”驅動的“三維”導航 -- 淘寶新UI(需求分析篇)
前(qian)言(yan) 孔(kong)子(zi)說:"軟件(jian)是(shi)(shi)對(dui)客觀世界(jie)的抽象"。 首(shou)先聲明,這里的"三維導(dao)航"和地圖沒一(yi)(yi)毛錢關系,"四核(he)驅(qu)動"和硬件(jian)也(ye)沒關系,而是(shi)(shi)為了復雜(za)的應(ying)用而發(fa)明創造的導(dao)航邏輯。說這是(shi)(shi)發(fa)明創造,也(ye)不(bu)是(shi)(shi)危(wei)言(yan)聳(song)聽(ting),因(yin)為它完全突破(po)了傳統意(yi)義的頁面導(dao)航概念,看(kan)完了本博客以后,相信會讓(rang)你(ni)腦洞大開。當然這也(ye)是(shi)(shi)一(yi)(yi)種嘗試,只有UWP ...
Microservice Anti-patterns
在最近的(de)一(yi)次Microservices Practitioner Summit中(zhong)(zhong),原(yuan)Netflix工程師介(jie)紹了一(yi)種(zhong)越來越常見的(de)對(dui)Microservice的(de)誤(wu)用(yong)。簡(jian)單地說,大家在搭(da)建一(yi)個基(ji)于Microservice的(de)服(fu)務時(shi)常常依賴同一(yi)套類庫,進而使得Microservice中(zhong)(zhong)的(de)各個子服(fu)務無法(fa)選擇最適合 ...
Cassandra簡介
在前面的(de)(de)(de)一篇文(wen)(wen)章(zhang)《圖形(xing)數(shu)(shu)據(ju)庫Neo4J簡(jian)介(jie)》中,我(wo)們介(jie)紹了一種非常流(liu)行的(de)(de)(de)圖形(xing)數(shu)(shu)據(ju)庫Neo4J的(de)(de)(de)使用方法。而在本文(wen)(wen)中,我(wo)們將對另外一種類(lei)型的(de)(de)(de)NoSQL數(shu)(shu)據(ju)庫——Cassandra進行簡(jian)單地介(jie)紹。 接(jie)觸(chu)Cassandra的(de)(de)(de)原因(yin)與(yu)接(jie)觸(chu)Neo4J的(de)(de)(de)原因(yin)相同:我(wo)們的(de)(de)(de)產品需要能夠記(ji)錄一系(xi)列(lie)關(guan)系(xi)型數(shu)(shu)據(ju)庫所無法快速 ...
【深入淺出jQuery】源碼淺析--整體架構
最近一直在(zai)研(yan)讀(du) jQuery 源碼(ma),初看源碼(ma)一頭(tou)霧水毫無頭(tou)緒(xu),真正(zheng)靜下心(xin)來細看寫的(de)真是精妙,讓(rang)你感嘆(tan)代碼(ma)之美。 其結(jie)構明(ming)晰,高內聚、低耦合,兼(jian)具優(you)秀的(de)性(xing)能(neng)(neng)與便(bian)利的(de)擴展性(xing),在(zai)瀏覽器的(de)兼(jian)容性(xing)(功(gong)能(neng)(neng)缺(que)陷、漸進增強(qiang))優(you)雅(ya)的(de)處理(li)能(neng)(neng)力以及(ji) Ajax 等(deng)方面(mian)周到(dao)而強(qiang)大的(de)定(ding)制功(gong)能(neng)(neng)無不(bu)令(ling)人驚嘆(tan)。 另外,閱讀(du)源碼(ma)讓(rang)我(wo)接 ...
