![資深java工程師面試要點(diǎn)一年_第1頁](http://file4.renrendoc.com/view/3b02514d58cb9648985100aa54d6da5c/3b02514d58cb9648985100aa54d6da5c1.gif)
![資深java工程師面試要點(diǎn)一年_第2頁](http://file4.renrendoc.com/view/3b02514d58cb9648985100aa54d6da5c/3b02514d58cb9648985100aa54d6da5c2.gif)
![資深java工程師面試要點(diǎn)一年_第3頁](http://file4.renrendoc.com/view/3b02514d58cb9648985100aa54d6da5c/3b02514d58cb9648985100aa54d6da5c3.gif)
![資深java工程師面試要點(diǎn)一年_第4頁](http://file4.renrendoc.com/view/3b02514d58cb9648985100aa54d6da5c/3b02514d58cb9648985100aa54d6da5c4.gif)
![資深java工程師面試要點(diǎn)一年_第5頁](http://file4.renrendoc.com/view/3b02514d58cb9648985100aa54d6da5c/3b02514d58cb9648985100aa54d6da5c5.gif)
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
重點(diǎn)知hpwwwmponewcom27326 men-java中所有類的父類hpwwwb51neacle86376hmclone方法詳解淺克?。簩ο蟮刂犯淖兊浅蓡T變量地址不改變深克隆部改變類加載機(jī)制雙親委派機(jī)hpblogcsdnnenscodeacledealsjava類的成員初始化順hpblogcsdnnelgfeng218acledealsArrayList的自動擴(kuò)容機(jī)hpblogcsdnneyang1464657625acledeals文章會說ArrayList長度容量為0。java位運(yùn)算hpblogcsdnnevebasanacledealsArrayList與hppengcqueyecomblogJVM調(diào)優(yōu)技hpdevelope51cocoma201009227315h編譯預(yù)編譯sql注hpblogcsdnneangwe0910410003acledeals 優(yōu)化,對應(yīng)的執(zhí)行計劃也會緩存下來并允許數(shù)據(jù)庫已參數(shù)化的形式進(jìn)行查詢,當(dāng)運(yùn)行時動態(tài)地把參數(shù)傳給reprareSaemen時,即使參數(shù)里有敏感字符如or'11'也數(shù)據(jù)庫會作為一個參字符串反hpwwwb51neacle87669hmysql行專列casehpswwwcnblogscomhomas12112406p5813394h 1212為什么使類多繼繼承了某個(接口的)實(shí)現(xiàn),對 類都沒有影在我們程序設(shè)計中有時候會存在些使用接口很難解決的問題,這個時候我們可以利用 類提供的可以繼承多個具體的或者抽象的類的能力來解決這些程序設(shè)計問題可以這樣說,接口只是解決了部分問題,而 其實(shí)使 類最大的優(yōu)點(diǎn)就在于它能夠非常好的解決多重繼承的問題,但是如果我們不需要解決多重繼承問題,那么我們自然可以使用其他的編碼方式,但是使 類還能夠?yàn)槲覀儙砣缦绿匦裕ㄕ浴禩hnknava》為什么要使 類?在《Thnknava》中有這樣句話:使 類最吸引人的原因是:每 類都能獨(dú)立地繼承個(接口的)實(shí)現(xiàn),所以無 類是否已單點(diǎn)登陸SSOSingleSignhpswwwcnblogscomEzealLup5559255h自動裝箱自動拆hpswwwcnblogscomdolphn0520p3780005hhashmap集合區(qū)hpblogcsdn acledeals索引的優(yōu)化什么時候使用索hpblogcsdnnelnmnqnacledeals很多比較有經(jīng)驗(yàn)的Query調(diào)優(yōu) 經(jīng)常說,當(dāng)條Query返回的數(shù)據(jù)超過了全表的15%時,就不應(yīng)該再使用索引掃描來完成這個Query了對于"15%"這個數(shù)字我們并不能判定是否很準(zhǔn)確,但是至少側(cè)面證明了唯性太差的字段并不適合創(chuàng)建索引由于根據(jù)索引掃描產(chǎn)生的都是隨機(jī)IO,其效率比進(jìn)行全表掃描的順序IO效率低很多,即使不會出現(xiàn)重復(fù)IO ,同樣會造成整體IO性能的下tcphpswwwcnblogscombzhuachve201205122497493h分hpswwwcnblogscomovelangp5176456h進(jìn)程與線hpblogcsdnneyaosmng2011acledealsString源hpblogcsdnneylyg050518acledealsnewString("abc")與Stringa"abc"hpblogcsdnneu012693072acledealsString為什么設(shè)計為Final不可變的?(字符串常量池hpblogcsdnneylyg050518acledealshpwwwb51neacle59935hm常量 字符串對象被創(chuàng)建,然后將這個放入字符串常量池,并返回該當(dāng)我們使用了new來構(gòu)造字符串對象的時候,不管字符串常量池中有沒有相同內(nèi)容的對象 ,新的字符串對象都會創(chuàng)對于面使用new創(chuàng)建的字符串對象,如果想將這個對象 加入到字符串常量池,可以使用intern方調(diào)用intern后,首先檢查字符串常量池中是否有該對象 ,如果存在,則將這 返回給變量,否則 加入并返回給變字符串常量池實(shí)現(xiàn)的前提條件就是Java中String對象是不可變的,這樣可以安全保證多個變量共享同個對象如果Java中的String對象可變的話,個操作改字符串常量池中存放的時 還是對象,這個問題是最常見的。字符串常量池存放的是對象 ,不是對象。在Java中,對象都創(chuàng)建在堆內(nèi)存中。優(yōu)缺字符串常量池的好處就是減少相同內(nèi)容字符串的創(chuàng)建,節(jié)省內(nèi)存如果硬要說弊端的話,就是犧牲了CPU計算時間來換空間CPU計算時間主要用于在字符串常量池中查找是否有內(nèi)容相同對象的 不過其 你知道下面的代碼,會創(chuàng)建幾個字符串對象,在字符串常量池中保存幾個么Stringtestabc"個實(shí)際在編譯期間,已經(jīng)將這三個字面量合成了個這樣做實(shí)際是種優(yōu)化,避免了創(chuàng)建多余的字符串對象,也沒有發(fā)生字符hpwwwb51neacle59934h這就是Java編譯器做的優(yōu)化,當(dāng)Java編譯器遇到字符串拼接的時候,會創(chuàng)建個StringBuilder對象,后面的拼接,實(shí)際是調(diào)用StringBuilder對象的append方法這樣就不會有我們面擔(dān)心的問題了finalhplavasofblog51cocom62575final修飾對象本身是線程安全 但是集合類不是線程安全hpswwwcnblogscommanlaoshuacles3648403hspring注入maplisthpblogcsdnnexlgen157387acledealshttp返回碼含24與hpswwwcnblogscomshyangxachve200810071305506hSOA(Service-Oriented-Architecture)與hpswwwzhhucomqueson2727相同和內(nèi)容相同包裝類但是equals默認(rèn)就是使用==除非重寫了equls方法自定義類equals依然是publcbooleanequals(Obecob{eun(hsob}Inege的equals方static關(guān)鍵字為什么不能使用hpswwwcnblogscomhdk1993p4399833hSac方法是類方法,先于任何的實(shí)例(對象)存在即Sac方法在類加載時就已經(jīng)存在了,但是對象是在創(chuàng)建時才在內(nèi)存中生成而hs指代的是當(dāng)前的對在方法中定義使用的hs關(guān)鍵字,它的值是當(dāng)前對象的也就是說你只能用它來調(diào)用屬于當(dāng)前對象的方法或者使用hs處理方法中成員變量和局部變量重名的情而且,更為重要的是hs和supe都無法出現(xiàn)在sac修飾的方法中,sac修飾的方法是屬于類的,該方法的調(diào)用者可能是個類,而不是對象如果使用的是類來調(diào)用而不是對象,則hs就無法指向合適的對象所以sac修飾的方法中不能使用hs所以甚至有人給sac方法的定義就是:沒有hs的方法!雖然夸張,但是卻充分說明hs不能在sacObject.finalize方法對象被回收前重寫改方法做回收前準(zhǔn)備工權(quán)限控制publicprotecteddefault(包權(quán)限)類類必須繼承或者實(shí)現(xiàn)接口簡化創(chuàng)建子類來重寫方法如果使用次數(shù)很少的話只能 外部類的final變量(延長生命周期類對象的生命周期很有可能會超過局部變量的生命周期)?java8沒有強(qiáng)制 8更加智能:如果局部變量被類,那么該局部變量相當(dāng)于自動使用了final修飾hpswwwcnblogscomnexousachve201301252876489hhpswwwcnblogscomenac12p5240100h事實(shí),除了類,方法和作用域內(nèi)的類的外部變量也必須是fnal類通常都含有回調(diào),那個 類的函數(shù)執(zhí)行完了就沒了,所以類中外面的局部變量需要是fnal的,這樣在回調(diào)的時候才能找到那個變量,而如果是類的成員變量就不需要是fnal的,因?yàn)轭惐旧矶紩袀€了的(類hs),所以回調(diào)的時候定可以到例如下面prvteAntrcreteAntrVew(nVewve,n ntpstn)MyAntrn tr=newMyAntr(); trddLseer(eAntrLstener()@OverrdepbcvdnAntnEnd(Antrrg0)L.(TA,"pstn=" pst);retrn t類回調(diào)里poson的時候ceaeAnmaoVew()早就執(zhí)行完了,poson如果不是fnal的,回調(diào)的時候肯定就無法拿到它的值了,因?yàn)榫植孔兞吭诤瘮?shù)執(zhí)行完了以后為什么要使 類 多繼承(接口或 類的途徑j(luò)ava異常圖error也可以catch但是不應(yīng)hpblogcsdnnemccand1234acledeals短小的字符串拼接編譯器會自動優(yōu)化創(chuàng)建StringBuilder.append方法拼 如果是for循環(huán)則每次都會創(chuàng)建StringBuilder對象,應(yīng)直接使用StringBuffer與StringBuilder(快線程不安全hpswwwcnblogscomAmngachve201004131711395hhpswwwcnblogscomfngeboyp5335328hComparator實(shí)現(xiàn)排 類重寫compare方hpswwwcnblogscomzhaoyanunp4538379hComparable與comparator的區(qū)hpswwwcnblogscomsunflowe627p3158042hCompaao位于包java.u下,而Compaabe(Arrays.sort(T數(shù)組))位于包java.ang下,Compaabe接口將比較代碼嵌入自身類中,而后者在一個獨(dú)立的類中實(shí)現(xiàn)比較如果類的設(shè)計師沒有考慮到Compae的問題而沒有實(shí)現(xiàn)Compaabe接口,可以通過CompaaoCollections.sort(其他實(shí)現(xiàn)接口的類))來實(shí)現(xiàn)比較算法進(jìn)行排序,并且為了使用不同的排序標(biāo)準(zhǔn)做準(zhǔn)備,比如:升序降序hpswwwcnblogscomgnuhpcachve201212172822251h遍歷Collection沒有g(shù)et方法是因?yàn)镾et不能使用get隨Object.hasCode方法是個本地方有給出具體的實(shí)hpswwwcnblogscomdolphn0520p3681042hhashCode有什么作用?主要是為了滿足hash開頭的結(jié)合類判斷key值的唯性加快查詢速度hashcodeequals為速度而散列否則是線性查找(順序查找,Spring注解實(shí)現(xiàn)讀寫分線程與進(jìn)程線程是CPU調(diào)度的基本單元,進(jìn)程是系統(tǒng)資源分配的基本單元,個進(jìn)程中可能包含多個線hpblogcsdnnelucenduanacledealsjava多線程專hpblogcsdnnesupesnow0622aclelsJVM內(nèi)存區(qū)域(非常精辟)創(chuàng)建對象的過hpblogcsdnnesupesnow0622acledeals程序計數(shù)器:用來存放下跳指令所在單元地址的地字符串產(chǎn)量池在運(yùn)行時常量池在方法區(qū)地47收集器與內(nèi)存分hpblogcsdnnesupesnow0622acledeals54982575二可達(dá)性分析算法GCRoosJVM最樸實(shí)的調(diào)優(yōu)策打?qū)ο笾苯舆M(jìn)入老年代XX:PretenureSizeThreshold長期存活的對象直接進(jìn)入老年代類加載機(jī)制雙親模hpblogcsdnnesupesnow0622acledeals對于任意一個類,都需要由加載它的類加載器和這個類本身一同確立其在java虛擬機(jī)中的唯一性雙親委派模型的工作過程是:如果一個類加載器收到了類加載的請求,它首先不會自己去加載這個類,而把這個請求委派給父類加載器去完成,每一個層次的類加載器都是如此,因此所有的加載器請求最終都應(yīng)傳送到頂層的啟動類加載器中,只有當(dāng)父加載器無法完成這個加載請求時,子加載器才會嘗試自己去加載多線程專hpblogcsdnnesupesnow0622acledeals56494682hpblogcsdnnesupesnow0622acledeals鎖重入。是在用類其,以鎖。靜態(tài)同步synchronized方法與synchronized(class)代碼塊如果是單例的則沒有區(qū)關(guān)鍵字synchronized還可以應(yīng)用在static靜態(tài)方法上,如果這樣寫就是對當(dāng)前的*java文件對應(yīng)的Class類進(jìn)行持鎖。而synchronized(class)代碼塊的作用其實(shí)和synchronizedstatic方法的作用一樣。即對對象加鎖而不是加鎖volatile都不要用因?yàn)橐稽c(diǎn)效率問題而保證不了原子性準(zhǔn)確hpwwwcnblogscomhapnp5492880h線程間通信在執(zhí)行a方法后,當(dāng)前線程會立即釋放鎖,但在執(zhí)行nty要等到執(zhí)行oiy方法的線程將程序執(zhí)行完,也就是退出sycroied代碼塊后,當(dāng)前線程才會釋放鎖方法join(long)的功能在是使用wait(long)方法來實(shí)現(xiàn)的,所以join(long)方法具有釋放鎖的特點(diǎn)。而Threadsleep(long)方法卻不釋放hpblogcsdnnelufeng20acledeals概括起來說,對于多線程資源共享的問題,同步機(jī)制采用了概括起來說,對于多線程資源共享的問題,同步機(jī)制采用了“以時間換空間”的方式,而ThreadLocal采用了“以空間換時間”的方式前者僅提供一份變量,讓不同的線程排隊(duì) Spring使用ThreadLocal解決線我們知道在一般情況下,只有無狀態(tài)的Bean才可以在多線程環(huán)境下共享,在Spring中,絕大部分Bean都可為singleton作用域就是因?yàn)镾pring對一些Bean(ontextHolderTransactionSynchronizationManagerLocaleContextHolder等)中非線程安全狀態(tài)采用ThreadLocal的Bean就可以在多線程中共享 一般的Web應(yīng)用劃分為展現(xiàn)層服務(wù)層和持久層三個層次,在不同的層中編寫對應(yīng)的邏輯,下層通過接口向?qū)娱_放功能調(diào)用在一般情況下,從接收請求到返回響應(yīng)所經(jīng)過的ReentrantLock忘記在finally中釋放hps developewokscnava-p10264ndexhDCL雙檢查鎖利模hpcud0906eyecomblog為什么要加volale,為了每次都從主存中取,避免對象未被指定內(nèi)存地址就被下個線程使hpblogcsdnnesupesnow0622acledeals并發(fā)解決策h(yuǎn)pblogcsdnnesupesnow0622acledealscopyOnWrite寫 可以解決并發(fā)讀的問Ce容器即寫時的容器。當(dāng)我們往一個容器添加元素時,不直接往當(dāng)前容器添加,而是先將當(dāng)前容器進(jìn)行c,出一個新的容器,然后往新的容器里添加元素,添加完元后,再將原容器的指向新的容器。這樣做的好處是我們可以對ye容器進(jìn)行并發(fā)的讀,而不需要加鎖,因?yàn)樽x的容器是舊的容器,而我們操作的容器是新的容器。所以CopyOnWrite容器也是一種讀寫分離的思想,讀和寫的是不同的容hpswwwcnblogscomITangangp3948406h參數(shù)bucketndex就是ndexFo函數(shù)計算出來的索引值,第2行代碼是取得數(shù)組中索引為bucketndex的Ent對象,第3行就是用hash、ke、lue構(gòu)建一個新的Ent對象放到索引為bucketndex的位置,并且將該位置原先的對象設(shè)置為新對象的next構(gòu)成鏈表。第4行和第5行就是判斷put后sze是否達(dá)到了臨界值theld如果達(dá)到了臨界值就要進(jìn)行擴(kuò)容,HashMap擴(kuò)容是擴(kuò)為原來的兩倍當(dāng)HashMap中的元素越來越多的時候,hash的幾率也就越來越高,因?yàn)閿?shù)組的長度是固定的。所以為了提高查詢的效率,就要對HashMap的數(shù)組進(jìn)行擴(kuò)容,數(shù)組擴(kuò)容這個操作也會出現(xiàn)在AaLst中,這是一個常用的操作,而在HashMap數(shù)組擴(kuò)容之后,最消耗性能的點(diǎn)就出現(xiàn)了:原數(shù)組中的數(shù)據(jù)必須重新計算其在新數(shù)組中的位置,并放進(jìn)去,這就是esze。那么HashMap什么時候進(jìn)行擴(kuò)容呢?當(dāng)HashMap中的元素個數(shù)超過數(shù)組大小*loadFacto時,就會進(jìn)行數(shù)組擴(kuò)容,loadFacto的默認(rèn)值為0.75,這是一個折中的取值。也就是說,默認(rèn)情況下,數(shù)組大小為6,那么當(dāng)HashMap中元素個數(shù)超過6*0.75=2的時候,就把數(shù)組的大小擴(kuò)展為2*6=32,即擴(kuò)大一倍,然后重新計算每個元素在數(shù)組中的位置,擴(kuò)容是需要進(jìn)行數(shù)組的,數(shù)組是非常消耗性能的操作,所以如果我們已經(jīng)預(yù)知HashMap中元素的個數(shù),那么預(yù)設(shè)元素的個數(shù)能夠有效的提高HashMap的性能。假設(shè)keyakeyb的hash值都相等們應(yīng)該落到同個鏈表hashMap是由16個Eny<KV組成的(單項(xiàng)列表的頭結(jié)點(diǎn)),eny是個單向列表它有自己的keyvalue也有指向下個節(jié)點(diǎn)的en計算keya的hash值3則Eny<K,V>En再遍歷單項(xiàng)列如果是新值則更改新值為當(dāng)前列表的頭結(jié)點(diǎn)nex指向原來的值舊值則覆哈希表(散列表)原理詳hpblogcsdnneduan19920101acledeals實(shí)現(xiàn)個簡單的hpblogcsdnnemaoyequacledealsdk18中hashMap的實(shí)現(xiàn)不在是鏈一節(jié)數(shù)8將再單的式會整一。就hpsmyoschnanehoseeblog專題:java線程池ExecutorService使用線程池取拉取或者解析用戶地圖地真厲害啊java線程池hpwwwanshucomp異步任務(wù)使用newThead類的弊hpswwwcnblogscomzhaoyan001p7049627h二者的關(guān)系ExecutorService與Executors(工廠原理解hpwwwanshucomp參數(shù)解析及各種線程池功hp825635381eyecomblog造 個固定線程數(shù) 的線程池,配置的coePoSe與 umPoSie大小相同,同時使用了 個 LnkedBlckngQueue存放阻塞任務(wù),因此多余任務(wù)將存在再阻塞隊(duì),不由ReetedxeutonHander理有界阻塞隊(duì)列ArrayBlockingQueue和阻塞隊(duì)列LinkedBlockinghpblogcsdnnexn_malacledeals四種線程池都是阻塞隊(duì)列,意思是線程如果執(zhí)行隊(duì)列中的元素失 則該線程會阻自定義個非阻塞線程池hp825635381eyecomblog自定義線程池no非阻塞:超出40以后的線程也會處理但是會交給異常handel處理而不是等待如何改造重寫ThreadPoolExecutro.execute方法將offer方法換成put方選擇 個線程池,自定義或者使用newCachedThreadPoo會因?yàn)槿蝿?wù)過多而導(dǎo)致失敗,或者失敗后重新放入到隊(duì)列去可能會線程安全的i++總結(jié)用ThreadPoolExecutor自定義線程池,看線程是的用途,如果任務(wù)量不大,可以 隊(duì)列,如果任務(wù)量非常大,要用有界隊(duì)列,防止如果任務(wù)量很大,還要求每個任務(wù)都處理成功,要對提交的任務(wù)進(jìn)行阻塞提交,重 機(jī)制,改為阻塞提 保證不拋 個任最大線程 般設(shè)為2N+1最好,N是CPU核線程數(shù),看應(yīng)用,如果是任務(wù), 次,設(shè)置為0,合適,因?yàn)榕芡昃屯5袅?,如果是常用線程池,看任務(wù)量,是保留 還是幾個 如果要獲取任務(wù)執(zhí)行結(jié)果,用ComptonSrv,但是注意,獲取任務(wù)的結(jié)果的要重新開個線程獲取,如果在主線程獲取,就要等任務(wù)都提交后才獲取,就會阻塞大量任務(wù)結(jié)果,隊(duì)列過大OO,所以最好異步開個線程獲取結(jié)果60阻塞隊(duì)列BlockingQuene用的最多的地方線程池生產(chǎn)者消費(fèi)者模hpblogcsdnnechenchao1acledeals61使用鏈表實(shí) 個簡單的阻塞隊(duì)列packagempoavaulLnkedLsmpoavaulLs*使用鏈表實(shí)現(xiàn)個簡單的阻塞隊(duì)***@auhoLuYong@ceaeDaepublcclassMyBlockngQueuepvaeLs<Obec>queuenewLnkedLs<Obec>()pvaenlm10publcMyBlockngQueue(nlm{hslml}阻塞入publcsynchonzedvodenqueue(Obecem)howsExceponwhlehsqueues hslm){隊(duì)列滿的時候等待不允許入wa}fhsqueues 0){隊(duì)列為空的時候不允許no}hsqueueadd(}publcsynchonzedObecdequeue()howsExcep{f(hsqueuesze() 0){wa()}f(hsqueuesze()lm{no}eunhsqueue}}62實(shí)現(xiàn)個簡單的packagepublcclassMyHashMappvaesacfnalnSIZEpvaeEny[]ablenewEnge方法根據(jù)key返回publcSngge(Sngk)Enyeable[hash]hash相同比較equals方法值遍歷鏈whle(enull)f(kequals(ege{eunege}elseee}}eun}publcvodpu(Sngk,Sng{nhashkhashCode()%SIZEEnyeable[hash]whle(enull){f(egeKey()equals(k)))eu}}沒有重復(fù)的將當(dāng)前鏈表的頭結(jié)點(diǎn)替換為新加的節(jié)點(diǎn)并且指向原來的頭結(jié)Enye2newEny(k,v)e2nexeTODO為空的話建立個新}classEn{SngSngvalueEnynexpublcEny(Sngk,Sng{keyvalue}publcSngge{eun}publcvodseKey(Sng{hskey}publcSngge{eun}publcvodseValue(Sng{hsvalue}publcEnygeNex{eun}publcvodseNex(Enynex{hsnex}}}63線程安全的listCopyOnWriteArrayList(寫 hpblogcsdnneww1203acledeals8109000寫加鎖拷貝個數(shù)組改完畢后64ConcurrentHashMap(分段鎖 程安全的礎(chǔ)提供了更好的寫并發(fā)能hpwwwmponewcom22007h65字符串常量池在方法66docker? 67hpwwwanshucomp68java位運(yùn)算hpblogcsdnnexaochunyongacledealsJava提供的位運(yùn)算符有:左移(<<)右移(>>)無符號右移(>>>)位與&)位或()位非~)位異或^,除了位非~)是元操作符外,其它的都是二元操使用場景hpblogcsdnnefoadacledeals判斷int型變量a是奇數(shù)還是a&0偶a&=奇對于一個大于0的整數(shù),判斷它是不是2的幾次((x&(x0)&&(x!=0);什么樣的數(shù)才是2的幾次方位為他位都為0也就是的數(shù)字剛剛好進(jìn)位所以與運(yùn)算==0a%2等價于a&69dubbo簡介分布式服務(wù)框架博客很hpshyanuncnachves1075hmlDubbo解讀noe70dubbo解答是個分布式服務(wù)框架也是個SOA的治理框架 中心和治理中Dubbo通過長連接減少握手,通過NIO及線程池在單連接并發(fā)拼包處理消息,通過二進(jìn)制流壓縮數(shù)據(jù),比常規(guī)HTTP等短連接協(xié)議更快在阿里巴 ,每天支2000多個服務(wù),30多 量,最大單機(jī)支撐每天近1 hpwwweyecommagaznes71dubbo啟hpblogcsdnnenoaman_wgsacledeals70214612采用I復(fù)用單一長連接,并使用線程池并發(fā)處理請求,減少握手和加大并發(fā)效率,性能較好(推薦使用)適合于小數(shù)據(jù)量大并發(fā)的服務(wù)調(diào)用,以及服務(wù)消費(fèi)者機(jī)器數(shù)遠(yuǎn)大于服務(wù)提供者機(jī)器數(shù)的情況ubb缺省協(xié)議不適合傳送大數(shù)據(jù)量的服務(wù),比如傳文件,傳等,除非請求量很低b連接個數(shù):單連接傳輸方式:NIO異步傳序列化:Hessian二進(jìn)制序列適用范圍:傳入傳出參數(shù)數(shù)據(jù)包較小(建議小于00K),消費(fèi)者比提供者個數(shù)多,單一消費(fèi)者無法壓滿提供者,盡量不要72RPC深入淺hpblogcsdnnezhguozhuacledeals7373傳 架構(gòu)的演dubbo與hpblogcsdnnecsuangyuacledealshpblogcsdnneanxppacledealsip轉(zhuǎn)換為long型hpblogcsdnneshb_deek1acledealsmysqlip地址(mysql優(yōu)化hpswwwcnblogscomcnsanshaop3326648hmysql死鎖是如何產(chǎn)生的,如何避免死鎖,手工加鎖?forhpswwwcnblogscomzen2008p5262751h 死鎖1hphedengchengcom?p844hphedengchengcom?pmysql聚簇索hpblogcsdnnealexdamaoacledeals80奇特80奇特"a"是final不各種路hpzusofeyecomblog算法排hpswwwcsdnneacle2014-04-102819237-Top-10-Algohms-fo-Codng-Inevhpswwwcnblogscomxaoboluo768p5400990hhpwwwnfoqcomcnnews201702RockeMQ-fuue-http協(xié)議本身是是無狀態(tài)的,但是現(xiàn)代站點(diǎn)很多都需要維持登錄態(tài),也就是維持hpwwwcss88comachves什么是javanionetty與BIO區(qū)別 NIO是基于事件驅(qū)動的思想來實(shí)現(xiàn)的,采用eaco多路復(fù)用模型來實(shí)現(xiàn),主要用來解決bo中(1請求1線程讀寫阻塞),個服務(wù)器無法同時并發(fā)處理三部分緩沖區(qū)buffe選擇器Selec理解AOP應(yīng)用在哪里?敏感字段加hpblogcsdnnelubnblogacledealsSpringAOP中pointcutexpression表達(dá)式解析execution(匹配方法)andwithin(匹配類)區(qū)別hpblogcsdn acledeals在*包下并且標(biāo)有EncypMehod autohome*)and@annotation( id="encryptPointcut"/>aspec0配置注解hpswwwcnblogscombelalachve201207202539123h環(huán)繞通知?環(huán)繞著方法執(zhí)行可以控制方法什么時候執(zhí)行也可以讓方法不執(zhí)CDN緩存詳hpblogcsdnnewangxn1982314acledeals優(yōu)化:大促和秒殺期間的時間范圍都是固定的,那么些靜態(tài)資源s 可以使用瀏覽器緩存,都不需要使用CDN緩存來更新了,設(shè)cache-conol為個合適的時間范圍expes多久之前過期)max-age用多久過期Max-age使用秒來計量,如:Cache-Conolmax-age指定頁面645672秒(747天)理解304請求(遇到的問題eds數(shù)據(jù)類型的使用場hpswwwcnblogscomyy1234p7809551h樂觀鎖解決搶購秒殺hpwwwavaweb1024comavaJavaWebzhong20150906847hpdtetgsetstts=,vrn=vers ndversn=#versnhpswwwcnblogscomshhucp7284986hmlhpsmyoschnaneydsakyclguozblogeds加樂觀鎖決db壓力問題非常好eds本身也有事務(wù)wach被修改則更新失hpblogcsdnneevankakaacledeals分布式事務(wù)(不同數(shù)據(jù)庫保持致性)相對的本地事 二階段提交XA協(xié)議事務(wù)管理器和資源管理hpswwwcnblogscomdnglangp5679542h解決方案二階段提交:不適合高并發(fā)場景節(jié)點(diǎn)之間需要相互等四使用消息隊(duì)列來避免分布式事如果仔細(xì)觀察生活的話,生活的很多場景已經(jīng)給了我們比如在很有名的姚記炒肝點(diǎn)了炒肝并付了錢后,他們并不會直接點(diǎn)的炒肝給你,往往是給你張小票,然后讓你拿著小票到出貨區(qū)排隊(duì)去取為什么他們要將付錢和取貨兩個動作分開呢?原因很多,其中個很重要的原因是為了使他們接待能力增強(qiáng)(并發(fā)量更高)還是回到我們的問題,只要這張小票在,你最終是能拿到炒肝 同理轉(zhuǎn)賬服務(wù)也是如此,當(dāng)用戶A賬戶扣除1萬后我們只要生成個憑證(消息)即可,這個憑證(消息)寫著“讓用戶B賬戶增加1萬”,只要這個憑證(消息)能可靠保存,我們最終是可以拿著這個憑證(消息)讓用戶B賬戶增加1萬的,即我們能依靠這個憑證(消息)完成最終致性非常好的解決方案:加錢與記錄消息發(fā)送安排在同個事務(wù)里,保證加錢的同時消息定被發(fā)送了,但是此時無法保證消息被成功訴說:確實(shí)遇到過這中場景,消息消費(fèi)失敗,但是消息消費(fèi)失敗的場景比較sortedMap默認(rèn)按照key的ascil碼升序排前后端分 如何解決跨域問hpfonenddevoglnkfull-sack-developmen-wh-nodes-1hmlhpblogcsdnnewang839305939acledeals73649428前端aax請求打到前端服務(wù)器另外前端服務(wù)器即是nginx服務(wù)器然后在ngnx做請求轉(zhuǎn)發(fā)到其他服務(wù)其實(shí)可以用gx做web服務(wù)器,將請求轉(zhuǎn)發(fā),就沒有跨域的問題了。ocao/xxpoxy_passpoxy_cooke_pa/xx}什么是jsonp如何實(shí)現(xiàn)通過callback函hpuscodngeyecomblogJWTTOEKN涉及到Web開發(fā)中的一個說法,就是客戶端的任何輸入都是不可hpwwwcnblogscomxekelp5607107h為什么代替sesson?hpblogcsdnnepkueecseacledeals因?yàn)閟esson的值是固定的,是需要在內(nèi)存的,但是請求可能打到每臺服務(wù)器,必須要有類似分布式緩存的功能才可woken是種計算規(guī)則,無需每次進(jìn)行驗(yàn)證即可,而且sesson還存在跨域的問第次認(rèn)證:第次登錄,用戶從瀏覽器輸入用戶名 ,提交后到服務(wù)器的登錄處理的Acton層(LognActLognActon調(diào)用認(rèn)證服務(wù)進(jìn)行用戶 認(rèn)證,如果認(rèn)證通過,LognActon層調(diào)用用戶信息服務(wù)獲取用戶信息(包括完整的用戶信息及對應(yīng)權(quán)限信息返回用戶信息后,LognActon從配置文件中獲取Token簽名生成的秘鑰信息,進(jìn)行Token的生成生成Token的過程中可以調(diào)用 的JWTLb生成簽名后的JWT數(shù)據(jù)完成JWT數(shù)據(jù)簽名后,將其設(shè)置 對象中,并重定向到首頁,完成登錄過程客戶端(APP客戶端或?yàn)g覽器)通過GET或POST請 資源(頁面或調(diào)用認(rèn)證服務(wù)作為MddeaeHOK對請求進(jìn)行 ,首先在ooke中查找oken信息,如果沒有找到,則在HPAuhoratonHead中查找;如果找到oken信息,則根據(jù)配置文件中的簽名加密秘鑰,調(diào)用JWTLb對oken信息進(jìn)行 和 ;( 后和簽名對比)完 并驗(yàn)證簽名通過后,對Token中的expnbfaud等信息進(jìn)行驗(yàn)證全部通過后,根據(jù)獲取的用戶的角色權(quán)限信息,進(jìn)行對請求的資源的權(quán)限邏輯判斷;如果權(quán)限邏輯判斷通過則通過Rspos對象返回;否則則返回TTP401;使用JWTTOKEN對客戶進(jìn)行權(quán)限的驗(yàn)證用戶的accounId再對比used與accound的匹配三重校驗(yàn)保證安全無篡ava實(shí)現(xiàn)JWThpblogcsdnnecsdn_blog_lclacledealslilnkedhashMap源hpblogcsdnnens_codeacledeals為什么是有序的hpswwwcnblogscomxq730p5052323h個entry節(jié)點(diǎn)除了next節(jié)點(diǎn)外還有指向前后節(jié)點(diǎn)的雙向鏈表指LInkedLIs統(tǒng)計nginx出現(xiàn)次數(shù)最多行awkpn$1LOGFILEsounqcso-nk1-headn100hpmanlnuxdeneawkAWK詳解構(gòu)造方法不能被繼pnponhpswwwcnblogscomyyhhp6106472hspng的啟動流hpblogcsdnnemoshenglvacledealssevle詳hpswwwcnblogscomwhgkp6399262hge與pos參數(shù)長度hpswwwanshucomp數(shù)據(jù)庫連接池spnghpswwwcnblogscomxq730p4922136h再談分布式事使用消息避免分布式事務(wù)事務(wù)a發(fā)送消息成功后交事務(wù)必須:xa協(xié)議實(shí)現(xiàn)xa接口的aomkos框架hpsyqalyuncomaclesAtomikos使用XA數(shù)據(jù)庫驅(qū)動實(shí)現(xiàn)分布式事務(wù)反 IOCaop的實(shí)類裝載springbeanFactoryANDapplicationContext二者都可以實(shí)例化TomcatServletContext和web應(yīng)用hpshacpacomaclehpblogcsdnneben071acledeals將WebApplicationContext放入ServletContext(就是JavaWeb的全局變量new與反射對象的區(qū)hpswwwcnblogscomlunamnegachve201303252980991hspng的三種注入方式屬性造廠方法注springioc四種注入方有狀態(tài)bean無狀態(tài)bean及hpblogcsdnnecs408acledealsDao層具有Connection這個非線程安全的變量,為什么也是單例的javaproxy只能對接口提供自動,如果對類提 需要使用靜 動態(tài)javaproxy及hpblogcsdnnehncnueacledeals ,cgb是針對類來實(shí)現(xiàn) 的,他的原理是對指定的標(biāo)類生成個子類,并覆蓋其中方法實(shí)現(xiàn)增強(qiáng),但因?yàn)椴捎玫氖抢^承,所以不能對fna修飾的類進(jìn)行基于@AspectJ注解定義切面的方式實(shí)現(xiàn)AOP比springaop方elasticJob的底層原理還是hpblogcsdnnexlxxccacledealsockemq保證同個類型的訂單隊(duì)列被消費(fèi)端順序消費(fèi)但是無法解決宕機(jī)后取模變化的問題hpswwwzhhucomqueson另外的將所有消息放到個隊(duì)列中去解決方案?。。?!兩個不同 類發(fā)送消息重寫seleco方法消費(fèi)端重寫消費(fèi)方法單線程消費(fèi)同隊(duì)hpblogcsdnneu010634288acledeals 費(fèi),如下圖所示(假設(shè)有兩個broker組完美解決分布式事務(wù)的問題:保證本地事務(wù)的提交和消息的發(fā)送是致的先發(fā)消息(并沒有執(zhí)行消息pepaed消息是預(yù)發(fā)消息)執(zhí)行本地事確認(rèn)消息發(fā)送是否成功(個實(shí)現(xiàn)方法作為參數(shù))成功comm失敗hpblogcsdnneu010634288acledealsJava內(nèi)存溢出(OOM)異常hpswwwanshucomp中的內(nèi)存泄漏是由于C無法識別一些已經(jīng)不再使用的對象,而這些未使用的對象一直留在堆空間中,這種堆積最終會導(dǎo)致.:ap錯誤。chrome瀏覽器https自動跳hpswwwcnblogscomdudup5848164hmlhpswwwcnblogscomnayup6896469hfefoxhpwwwcnblogscomlfengp8134636h事務(wù)ACID屬性原子 性持久 致事事級未提交事未提交事不不可重復(fù)度:沒有性同事務(wù)中兩金額不致當(dāng)前事已提交事幻讀(避免需要增 的表級鎖代價太大)幾乎和不可重復(fù)度定義致,但是幻讀強(qiáng)調(diào)是新增滿足條件而不是update同mysql的默認(rèn)事務(wù)是允許增 產(chǎn)生的幻讀的下126126spring的事 屬注注解式事務(wù)的回滾非受檢查異常拋hpblogcsdnneu013142781acledealsMySql分庫分hpswwwcnblogscomy-bee-omoowp4987620h對已有的表做拆分可以使用me做主從同hpswwwcnblogscomkevngacep6256603h解讀分庫分表中間件Sharding-hpblogcsdnne acledeals分表的同時還要分單純的分表雖然可以解決數(shù)據(jù)量過大導(dǎo)致檢索變慢的問題,但無法解決過多并發(fā)請求同一個庫,導(dǎo)致數(shù)據(jù)庫響應(yīng)變慢的問題。所以通常水平拆分都至少要采用分庫的方式,用于一并解決大數(shù)據(jù)量和高并發(fā)的問題。這也是部分開源的分片數(shù)據(jù)庫中間件只支持分庫的原因。阿里歸hpswwwanshucomp字符串倒敘方hpblogcsdnneguomuan911acledeals阿里多線程面試hpswwwalyuncomzxunconen2_6_523387h阿 線程面試hpsyqalyuncomzlaoelasticJob10特hpwwwwexnnucomagacle使用map實(shí)現(xiàn)緩 importimport*使用map實(shí)現(xiàn)個簡單的緩存工***@createDatepublicclassCacheManager<T>publicTgetValue(Object{return}publicvoidaddOrUpdateCache(Stringkey,T}根據(jù)key來刪除緩存中的條記{if{}}//清空緩publicvoid{}}查看CPU是幾核的opvmhpsblogcsdnnechen77716acledealsspring任務(wù)調(diào)度框Quaz調(diào)度器任務(wù)觸發(fā)springmvc過JAVAlru算法的實(shí)現(xiàn)即緩存:在有限制的緩存空間中保留 的舍棄最舊的使用有順序的LnkedHashMap就能實(shí)現(xiàn)hpswwwcnblogscomlzabbp3734850hdubbozookeepehpblogcsdnneZuoAnYnXangaclels利用eds實(shí)現(xiàn)消息隊(duì)hpblogcsdnnezuoanynxangacledeals阻塞隊(duì)列實(shí)現(xiàn)生產(chǎn)者消費(fèi)者模加packagecncomauohomeloanplafomconollepuhumpoavaulconcuenAayBlockngQueuepublcclassTespvaenqueueSzepvaeAayBlockngQueue<Inege>queuenewAayBlockngQueue<Inege>(queueSpublcsacvodman(Sng[]a{TesesnewTesPoducepoduceesnewPoduce()ConsumeconsumeesnewConsume()poducesa()consumesa}classConsumeexendsTh{@Ovedepublcvodun(){}pvaevod{whle(ue){y{queueSysemoupnln("從隊(duì)列取走個元素,隊(duì)列剩余"queuesze()"個元素}cach(IneupedExcepon{epnSackT}}}}classPoduceexendsTh{@Ovedepublcvodun(){p}pvaevodp{whle(ue){y{queuepuSysemoupnln("向隊(duì)列取中個元素,隊(duì)列剩余空間:"(queueSze-queues}cach(IneupedExcepon{epnSackT}}}}}eds集群的實(shí)現(xiàn)并沒有使用性哈希的方案而是使用了哈希槽的16384hpblogcsdnnezuoanynxangacledeals50500158140qps5W就很大hpswwwcsdnneacle2014-11-28150再次TCP三次握151跨站(cross-sitescripting,XSS)跨該網(wǎng)頁把用戶通過GET發(fā)送過來的表單數(shù)據(jù),處理直接寫入返回的html流,這就是XSS所用戶輸入什么客戶端就返回什hpblogcsdnnesmsongacledeals43561607hpwwwfeebufcomaclesweb15188hmlhpblogcsdnnezhongyanganacledeals153再來分布式事務(wù)真正明白二階段提交的含義事務(wù)協(xié)調(diào)器以及事務(wù)執(zhí)行hpblogobbolecomhpswwwanshucomp53324ea2df92牛 SYNC_MASTER(同中brokerRole需要指明ASYNC_MASTER(異 Master)最好的rokectmq雙master雙slaveSYNC_MASTER(同中brokerRole需要指明ASYNC_MASTER(異 Master)ROCKETMQ不用 1使用nameSe154154查找重復(fù)記goup啊刪除重復(fù)記錄的這hpwwwb51neacle93366hdeleeFROMesWHEREschool_namen(SELECTschool_nameFROMesHAVINGCOUNT(*)>1)andschool_dnon(selecmn(school_d)fomesgoupbyschool_namehavngcoun(*刪除重復(fù)數(shù)據(jù)的同時排除最小的唯d數(shù)hpblogcsdnnebluesafacledeals不能再同語句中對張表進(jìn)行查詢updae操作要增加張中間deleefomph_use_wheeaccoun_dn(selecaccoun_dfom(selecaccoun_dfomph_use_nfogoupbyaccoun_dhavngcoun(accoun_d)>1)asmyIsam和nnodb引兩種類型最主要的差別就是Innodb支持事務(wù)處理與外鍵和行級鎖。而MyISAM不支持所以MyISAM往往就容易認(rèn)為只適合在小項(xiàng)目中用分布式鎖的實(shí)hpswwwanshucomp式鎖用完明白了paxos算法關(guān)鍵是2階段提交先入為hpswwwcnblogscomendsockp3480093h2階段提交前未簽約數(shù)要聽從簽約數(shù)的將自己的議題改為多數(shù)派headlocal內(nèi)存java操作hpblogcsdnnelu_wenbnacledeals59531184hpblogcsdnnexnf1991acledealsype:這是重要的列,顯示連接使用了何種類型從最ype:這是重要的列,顯示連接使用了何種類型從最好 的連接類型為conseq_egefangendex和hpsblogcsdnnekk185800961acledeals49179619162mnoGCfullgc觸發(fā)條件MinorGC觸發(fā)條件:當(dāng)Eden區(qū)滿時,觸發(fā)MinorGC。個eden區(qū)兩個survivor區(qū)8fullGC老年代間不threadlocal內(nèi)存問hpwwwmponewcom22039h每次使用完ThredLc,都調(diào)用它的reve()方法,清除數(shù)據(jù)在使用線程池的情況下,沒有及時清理ThredLc,不僅是內(nèi)存泄漏的問題,更嚴(yán)重的是可能導(dǎo)致業(yè)務(wù)邏輯出現(xiàn)問題所以,使用ThredLc就跟加鎖完要jvm性能服務(wù)器hpblogcsdnneaufshacledeals51326340安裝:可以使用桌hpswwwbmcomdevelopewokscnava-lo-vsualvm使內(nèi)存dump文件hpswwwcnblogscomdongguacap5900507h講的很明白通常是通過非對稱加密算法加密密鑰,然后再通過網(wǎng)絡(luò)傳輸給對方,或者直接面對面商量密鑰。密鑰是絕對不可以泄漏的,否則會被者還原密文,竊取數(shù)據(jù)。csdnnet/ AES加密原理一般是通過RSA加密AES的密鑰,傳輸?shù)浇邮辗剑邮辗降玫紸ES密鑰,然后發(fā)送方和接收方用AES密鑰來通信NIO與 socke中使用的npuSeam和oupuSeam都是阻塞的方法無法單線程共文文件最簡單的方分布式跨批量刪除重復(fù)deleepu請171nnodbhpblogcsdnneu012978884acledealsB樹索引可以分為索引和輔助索引,他們不同點(diǎn)是,索引的行數(shù)據(jù)和主鍵B樹在起,輔助索引只輔助鍵和主172B樹的定義來了數(shù)據(jù)庫索引采用B樹的主要原因是B樹在提高了磁盤IO性能的同時并沒有解決元素遍歷的效率低下的問題 正是為了解決這個問題,B樹應(yīng)運(yùn)而生 B樹只要遍歷葉子 而且在數(shù)據(jù)庫中基于范圍的查詢是非常頻繁的,而B樹不支持這樣的操作(或者說效率太低)BB和B+樹的區(qū)別在于,B+樹的非葉子結(jié)點(diǎn)只包含導(dǎo)航信息,不包含實(shí)際的值,所有的葉子結(jié)點(diǎn)和相連的節(jié)點(diǎn)使用鏈表相連,便于區(qū)間查找和鏈表由此可以看出葉子節(jié)點(diǎn)是雙向鏈表串起來的。如下1中間節(jié)點(diǎn)不數(shù)據(jù)只是索引記錄葉子節(jié)點(diǎn)的區(qū)間2葉子結(jié)點(diǎn)保留所有的數(shù)據(jù)且使用鏈表相連查找速度三、查 樹索引的流 首先通過B+樹索引找到葉節(jié)點(diǎn),再找到對應(yīng)的數(shù)據(jù)頁,然后將數(shù)據(jù)頁加載到內(nèi)存中,通過二分查找ageDiecoy中的槽,查找出一個粗略的 ,然后根據(jù)槽的指針指向鏈表中的行記錄,之后在鏈表中依次查找。需要注意的地方是,B+樹索引不能找到具體的一條記錄,而是只能找到對應(yīng)的頁。把頁從磁盤裝入到內(nèi)存中,再通過Dieco進(jìn)行二分查找,同時此二分查找也可能找不到具體的行記錄(有可能會找到),只是能找到一個接近的鏈表中的點(diǎn),再從此點(diǎn)開始遍歷鏈表進(jìn)行查找。173秒殺活動庫存賣完 將庫存更新至redis中,不再讀hpblogcsdnneevan_shcacledeals1首先同步數(shù)據(jù)庫庫存數(shù)eds2eds如果有庫存mysql樂觀3當(dāng)庫存未空時更新庫存數(shù)至eds4eds庫存為空請174elasticjob作hpccolabugcomhead-1885588-1-1helasticjob是通過zookeeper進(jìn)行任務(wù)協(xié)調(diào)和故障轉(zhuǎn)移三種任務(wù)調(diào)度框架的比hpswwwcnblogscomhaoxnyuep6886196hml?um_souceucool&um_medumefequaz175mysql份表后查1基于憑證按照借貸號憑證號進(jìn)行分表分成100個對品證號進(jìn)行hash分別100個表中憑證日對憑證進(jìn)行匯總刪除然后將歷史數(shù)據(jù)匯總hpswwwcnblogscomxlz307p5481770hascill碼與字符串互rocketmq順序消費(fèi)幾個隊(duì)列幾個消費(fèi)者生產(chǎn)者個就行寫到兩個隊(duì)列就要有兩個消費(fèi)hpswwwcnblogscom520playboyp6750023hsgesenOdy單線 保證消費(fèi)端只有個線程去消費(fèi)消當(dāng)前的rpc事務(wù)提相對于RMQ的事務(wù)消息有哪些弊端呢下單庫扣記錄憑通知如果次請求接口之后根據(jù)返回結(jié)果決定是否提交事務(wù)將導(dǎo)致整個調(diào)用連是同步執(zhí)行的大大影響效率hpswwwcnblogscomboohsunp7825853hjava線程五種狀hpswwwcnblogscomboohsunp7825853hlinux查找文fnd-name'*兩種文件結(jié)TCP再次詳hpswwwanshucomp這是因?yàn)榉?wù)端在ST狀態(tài)下,收到建立連接請求的S報文后,把C和S放在個報文里發(fā)送給客戶端而關(guān)閉連接時,當(dāng)收到對方的F報文時,僅僅表示對方不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù),己方也未必全部數(shù)據(jù)都發(fā)送給對方了,所以己方可以立即cs,也可以發(fā)送些數(shù)據(jù)給對方后,再發(fā)送FI報文給對方來表示同意現(xiàn)在關(guān)閉連接,因此,己方和FN般都會分開發(fā)送ACKfn包不起發(fā)項(xiàng)遇 與壓力項(xiàng)的deadlne固定,項(xiàng)多部門協(xié)作的跨度比較大,項(xiàng)開發(fā)過程中的不確定性改動性,不規(guī)范性,自己強(qiáng)制規(guī)范,小人的角色,制定規(guī)范hashMap解決 的辦法是鏈表avauHashMap采用的鏈表法的方式,鏈表是單向鏈表hpbogcsdnnesubuserarcedeas47188837redis的分布式hpblogcsdnneyuxxzacledealsedss命令回ke'y的剩余過期volitalelock指令原h(huán)pswwwcnblogscomxq730p7048693h使用jvm命令定位JVM問題牛啊hpblogcsdnnexaofengnhacledeals采用拷貝算法老年代采用CMS算法hpblogcsdnnemakzengacledealsJVM的常見問線程死opHp進(jìn)程號查看某進(jìn)程下耗費(fèi)cpu的線程prnt"% sackpdgepd(16)進(jìn)制輸出最耗費(fèi)的線程信sack11354gep-A60sa查看gc信191代溢foupdae讀寫鎖synchonzed原理eds192mysql讀寫hpblogcsdnneu013063153acledeals行鎖:分為共享鎖和排他開銷大加鎖慢會出現(xiàn)死鎖發(fā)生鎖的概率最低,并發(fā)度也最I(lǐng)oDB行鎖是通過給索引上的索引項(xiàng)加鎖來實(shí)現(xiàn)在yQL中,行級鎖并不是直接鎖記錄,而是鎖索引。索引分為主鍵索引和非主鍵索引兩種,如果條sq語句操作了主鍵索引,yQL就會鎖定這條主鍵索引;如果條語句操作了非主鍵索引,yQ會先鎖定該非主鍵索引,再鎖定相關(guān)的主鍵索引。UDAE、DE操作時,ySQ不僅鎖定HERE條件掃描過的所有索引記錄,而且會鎖定相鄰的鍵值,即所謂的ex-keyock。 個鎖住了主鍵索引,在等待其他相關(guān)索引。另 發(fā)生死鎖后,IoDB般都可以檢測到,并使個事務(wù)釋放鎖回退,另個獲取鎖完成事務(wù)。表鎖開銷小,加鎖快;不會出現(xiàn)死鎖;鎖定粒度大,發(fā)出鎖的概率最高,并發(fā)度最低hpblogcsdnneshandan000acledeals54927876hpswwwcnblogscompaddxp5367116hmlngnx限193hpblogcsdnneyan_wenlangacledeals為什么pu方法是不加鎖的呢?因?yàn)関alue值是volale的不用等到pu結(jié)加速貸業(yè)務(wù)介hpwwwcomacooke防篡那么如何來防范呢,這里我們需要實(shí)現(xiàn)cooke防篡改的功能Cooke防篡改功能的原理很簡單假設(shè)我有一個值要寫入Cookekeyusenamevaueaexande如果需要防止這個值被篡改成其他的值是不可能的,因?yàn)閏ooke已經(jīng)寫到了客戶端,別人可以隨意的改,服務(wù)器是沒辦法 cooke的值被篡改過所以在向客戶端發(fā)送cooke的時候就不能原樣發(fā)回去了,我們在Cooke的值后面跟一段防篡改的驗(yàn)證串,整個作為一個整體發(fā)送到客戶端所以客戶端得到的cooke可能就是這個樣子:usename=aexande用|分割的后面部分就是驗(yàn)證串,也可以叫防篡改驗(yàn)證 它是這樣生成的,DES(的內(nèi)容+鹽值 了這個值在服務(wù)器接收到Cooke以后就可以用Cooke的內(nèi)容+密鑰重新計算一次驗(yàn)證串,和提交來的做比對,如果是一致的,我們就認(rèn)為cooke沒有被篡改,反之,cooke肯定被篡改過,我們就不要相信這一次提交如果所有的Cooke都經(jīng)過防篡改驗(yàn)證,那么也就不用擔(dān)心SessonID被冒名頂替的事情發(fā)生了JWT構(gòu)hpblogcsdnnebuyaoshuohua1acledeals73739419hpswwwcnblogscomoxspp6289914hml簽 hs256(base64頭部base64載荷JWTbase64頭部base64載荷簽woken的過期時間載荷生成時間服務(wù)端計算差值并重新導(dǎo)入生成時間即個新的196提供了令牌桶算法的實(shí)現(xiàn) imiter拿到令牌才能去消hpmanzhzheneyecombloghpswwwcnblogscomyeynfup7316972hml最終方使用aelme限流來緩解db的壓力,再使用樂觀鎖來防止doubleacque()阻塞直到獲取 ,返回被限制的睡眠等待時間,單位三搶購場景降 緩存,限流和降面的例子雖然限制了單位時間內(nèi)對DB的操作,但是對用戶是不友好的,因?yàn)樗枰却?,不能迅速的得到響?yīng)當(dāng)你有1萬個并發(fā)請求,秒只能處理10個,那剩余的用戶都會陷入漫長的等待所以我們需要對應(yīng)用降級,旦判斷出某些請求是得不到令牌的,就迅速返回失敗,避免無謂的等待 mter是屬于單位時間內(nèi)生成多少個令牌的方式,譬如0.1秒生成1個,那搶購就要看運(yùn)氣了,你剛好是在剛生成1個時進(jìn)來了,那么你就能搶到,在這0.1秒內(nèi)其他的請求就算白瞎了,只能寄希望于下個0.1秒,而從用戶體驗(yàn)來說,不能 那直阻塞等待,所以就需要迅速判斷,該用戶在某段時間內(nèi),還有沒有機(jī)會得到令牌,這里就需要使用tryAcquire(longtimeout,TimeUnitunit)方法,指定個超時時間,旦判斷出在tmeout時間內(nèi)還無法取得令牌,就返回fase注意,這里并不是真正的等待了tmeout時間,而是被判斷為即便過了tmeout時間,也無法取得令牌這個是不需要等待的/entry/142946Redis與Memcached的區(qū)hpswwwcnblogs p7392653hdubbo原理調(diào)用關(guān)系和依 dubbo中心掛如題:Dubbo中zookeepe做中心,如果中心集群都掛掉,發(fā)布者和訂閱者之間還能通信么可以的,啟動dubbo時,消費(fèi)者會從zk拉 的生產(chǎn)者的地址接口等數(shù)據(jù),緩存在本 每次調(diào)用時,按照本 的地址進(jìn)行調(diào)hessian介紹輕量級的RPC框架基于binary-rpc協(xié)hpblogcsdnnesunwe_pywacledeals74002351如何解決mysql的主從延遲問題呢采用shark進(jìn)行水平分庫分jdk1.61.7hpswwwcnblogscompaddxp5309550hCMS與hpblogcsdnnelnhu007acledealsObject.clone方hpblogcsdnneJQ_AK47acledeals本地方法返回的是個新對象而不是淺克隆深克隆https為什么是安全的什么是流量劫hpnesecuy51cocoma201701529239h,是Per的意思,是在基礎(chǔ)上,增加一層加密通道。協(xié)議是用于解決傳輸層安全問題的網(wǎng)絡(luò)協(xié)議,其是基于公鑰學(xué)理論實(shí)現(xiàn)了對服務(wù)器認(rèn)證、對數(shù)據(jù)的加密保護(hù)以及對數(shù)據(jù)完整性的校驗(yàn)等功能,確保傳輸數(shù)據(jù)的性和完整性,以及服務(wù)器的真實(shí)性。hpswwwanshucomp207詳hpswwwanshucomp7c665d5f734eLinux性能工hpblog51cocomzhangfengzheop命令看1分鐘5分鐘15分鐘時機(jī)器的負(fù)載情況平局分?jǐn)偟矫總€cpu如果超過1則說明負(fù)載就很大ngnx系統(tǒng)架hpswwwanshucomp嗎spring注解切換數(shù)據(jù)hpswwwcnblogscomsugep3582248h阿里巴巴編碼hpsedualyuncomcefcaoncld包裝類全部使用Equals比較值只要重寫equals方法就必須重寫hashCode方法??!可能導(dǎo)致equals相等但是hashcode不想等的問題集合中將無法重復(fù)?。?!比如事故因?yàn)閷ο鬀]有重寫hashCode方法導(dǎo)致向hashMap中添加對象元素作為key時導(dǎo)致了內(nèi)存?。。。〉奶韋innally先于try返A(chǔ)tomicInteger原理基于樂觀鎖的CAS原h(huán)pblogcsdnnezhuanyuacledeals分庫分表規(guī)各種排序算法的穩(wěn)定性 時間復(fù)雜hpblogcsdnnezhyh1435589631acledealsdubbo組g 個sevce有多個實(shí)現(xiàn):hpblogcsdnneu010317829acledealsgoupveson兼容升hpblogcsdnneSlenceCaoacledeals接口升級時,要注意方法在低壓力時間段,先升級一半的提供者為新版本再將所有的消費(fèi)者升級為新版本然后將剩下的一半提供者升級為新版本CMShpblogcsdnnea724888acledeals60871077CMS收集器是基于“標(biāo)記”算法實(shí)現(xiàn)的初始標(biāo)記(CMSinitialmark)重新標(biāo)記(CMSremark)缺點(diǎn):產(chǎn)生大量空間碎片、并發(fā)階段會降低吞什么樣的對象直接進(jìn)入老年dubbo異步方法:返回nullhpswwwanshucompdubbofle擴(kuò)展方法hpblogcsdnnel1028386804acledeals線程池馬釋放事務(wù)的繼承機(jī)制dubbo的負(fù)載均衡策略:hpblogcsdn acledealsvolale允許個線程對 個變量的操作對其他線程可見,但是不允許其他線程在當(dāng)前線程執(zhí)行時對線程進(jìn)行更改這就是原子性,volatile保證不了場景:讀操作大于寫操作對變量的寫操作不依賴于當(dāng)前值比如計數(shù)器count+=1如果其他線程對count做了增加則count依賴了當(dāng)前值造成計hpswwwcnblogscomouyxyp7242563h裝飾器模 層層的裝飾個子hpblogcsdnnecahuangshacledealsnew(new(new()))npuSeamavao的最多相比于模式裝飾模式的些裝飾器可以自由組合重復(fù)使dubbo專題使用spi去擴(kuò)展dubbo制訂了默認(rèn)協(xié)議dubbo默認(rèn)的序列化機(jī)制hpblogcsdnnecolumndealsleanngdubbohml?&pageava服務(wù)擴(kuò)展SPI什么作用:接口的實(shí)現(xiàn)類用程序中寫死做硬是在配置文件hpblogcsdnnesgangunacledeals默認(rèn)是紅dubbo協(xié)Http重向服務(wù)端發(fā)送相同的請求加時間加流水加隨機(jī)序列化遇到的問hpswwwbmcomdevelopewokscnava-lo-se序列化方hpmy-coneeyecomblog還有一點(diǎn),序列化保存對象的狀態(tài),而靜態(tài)(static)變量不是對象的狀態(tài),所以它們不會被序列化dubbo常hpblogcsdn acledeals被ansn關(guān)鍵字修瞬態(tài)飾的變量無法被序列化保存反序列化也無 比如些敏感字段只允許再本地調(diào)用不允許在網(wǎng)絡(luò)中傳hpszhdaobaducomqueson422083927hvolatile:Lock前綴指令會引起處理器緩存回寫到內(nèi)行代碼初始化lsmap效率不高會產(chǎn)生hpblogcsdnnexukun5137acledeals兌吧問GCoo對象有那本地變2類的靜態(tài)屬3常4本地方posPdubboasync異步回調(diào)?。。。〔蛔枞欠祷貢r會繼續(xù)線程concurrent包下的future泛型實(shí)現(xiàn)fle和器的區(qū)hpswwwcnblogscomxzwblogp6832509h 器是基于動 的,而過濾器是基于函數(shù)回 器不依賴于servet實(shí)現(xiàn),過濾器依賴于servet容 器可以在方法前后,異常前后等調(diào)用,而過濾器只能在請求前和請求后各調(diào) 器可以利用依賴注入,因此在Sprng框架程序中,優(yōu)內(nèi)存緩存hpblogcsdnneshenbushenacledealss:屬于立的運(yùn)行程,需要單獨(dú)裝后,使J中s來 。因?yàn)樗仟?dú),所以如果寫個單元測程序,放一數(shù)據(jù)在s然后又寫一個程去拿數(shù)據(jù),么是可以拿這個數(shù)據(jù)的,lnux命令定hpblogcsdnneall0968acledealsspng的一、Bean的Scope描述的是Spring容器如何新建Bean實(shí)例 Spring的Scope有以下幾種,通過@Scope注解來實(shí)(1)Singleton:個Spring容器中只有個Bean的實(shí)例,此為Spring的默認(rèn)配置,全容器共享個實(shí)(2)Prototype:每次調(diào)用新建個Bean實(shí)(3)Request:Web項(xiàng)中,給每個httprequest新建個Bean實(shí)(4)Session:Webhttpsession新建個Bean實(shí)(5)GlobalSession:這個只在portal應(yīng)用中有用,給每globalhttpsession新建個Bean實(shí)p與longhpblogcsdnnewyc_csacledealsmysql的死鎖定hpswwwcnblogscomzen20
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 施工場地硬化拆除施工方案
- 承德一模數(shù)學(xué)試卷
- 青島市容缺施工方案
- 2025年度水電工程質(zhì)量保證合同
- 2025年度綠色能源項(xiàng)目技術(shù)咨詢合同 - 副本
- 2025年度新能源項(xiàng)目股權(quán)轉(zhuǎn)讓合同書模板
- 2025年度定制化整車物流解決方案合同
- 2025年度網(wǎng)絡(luò)安全防護(hù)服務(wù)合同附加條款模板
- 2025年度汽車租賃公司車輛租賃合同
- 2025年度醫(yī)院病房裝修合同協(xié)議書
- 房地產(chǎn)調(diào)控政策解讀
- 山東省濟(jì)寧市2025屆高三歷史一輪復(fù)習(xí)高考仿真試卷 含答案
- 五年級數(shù)學(xué)(小數(shù)乘法)計算題專項(xiàng)練習(xí)及答案
- 產(chǎn)前診斷室護(hù)理工作總結(jié)
- 6S管理知識培訓(xùn)課件
- 2024-2025學(xué)年八年級數(shù)學(xué)人教版上冊寒假作業(yè)(綜合復(fù)習(xí)能力提升篇)(含答案)
- 醫(yī)院培訓(xùn)課件:《猴痘流行病學(xué)特點(diǎn)及中國大陸首例猴痘病例調(diào)查處置》
- 氫氣-安全技術(shù)說明書MSDS
- 產(chǎn)科護(hù)士臨床思維能力培養(yǎng)
- 《AP內(nèi)容介紹》課件
- 2024年社會工作者(中級)-社會綜合能力考試歷年真題可打印
評論
0/150
提交評論