getIntjava

java抽奖程序  时间:2021-02-16  阅读:()
JavaforHighPerformanceComputingjava.
nio:HighPerformanceI/OforJavahttp://www.
hpjava.
org/courses/arlInstructor:BryanCarpenterPervasiveTechnologyLabsIndianaUniversityNIO:NewI/OPriortotheJ2SE1.
4releaseofJava,I/Ohadbecomeabottleneck.
JITperformancewasreachingthepointwhereonecouldstarttothinkofJavaasaplatformforHighPerformancecomputation,buttheoldjava.
iostreamclasseshadtoomanysoftwarelayerstobefast—thespecificationimpliedmuchcopyingofsmallchunksofdata;therewasnowaytomultiplexdatafrommultiplesourceswithoutincurringthreadcontextswitches;alsotherewasnowaytoexploitmodernOStricksforhighperformanceI/O,likememorymappedfiles.
NewI/Ochangesthatbyproviding:AhierarchyofdedicatedbufferclassesthatallowdatatobemovedfromtheJVMtotheOSwithminimalmemory-to-memorycopying,andwithoutexpensiveoverheadslikeswitchingbyteorder;effectivelybufferclassesgiveJavaa"window"onsystemmemory.
Aunifiedfamilyofchannelclassesthatallowdatatobefeddirectlyfrombufferstofilesandsockets,withoutgoingthroughtheintermediariesoftheoldstreamclasses.
Afamilyofclassestodirectlyimplementselection(AKAreadinesstesting,AKAmultiplexing)overasetofchannels.
NIOalsoprovidesfilelockingforthefirsttimeinJava.
ReferencesTheJavaNIOsoftwareispartofJ2SE1.
4andlater,fromhttp://java.
sun.
com/j2se/1.
4Onlinedocumentationisat:http://java.
sun.
com/j2se/1.
4/nioThereisanauthoritativebookfromO'Reilly:"JavaNIO",RonHitchens,2002BuffersBuffersABufferobjectisacontainerforafixedamountofdata.
Itbehavessomethinglikeabyte[]array,butisencapsulatedinsuchawaythattheinternalstoragecanbeablockofsystemmemory.
Thusaddingdatato,orextractingitfrom,abuffercanbeaverydirectwayofgettinginformationbetweenaJavaprogramandtheunderlyingoperatingsystem.
AllmodernOS'sprovidevirtualmemorysystemsthatallowmemoryspacetobemappedtofiles,sothisalsoenablesaverydirectandhigh-performanceroutetothefilesystem.
Thedatainabuffercanalsobeefficientlyreadfrom,orwrittento,asocketorpipe,enablinghighperformancecommunication.
ThebufferAPIsallowyoutoreadorwritefromaspecificlocationinthebufferdirectly;theyalsoallowrelativereadsandwrites,similartosequentialfileaccess.
Thejava.
nio.
BufferHierarchyTheByteBufferClassThemostimportantbufferclassinpracticeisprobablytheByteBufferclass.
Thisrepresentsafixed-sizevectorofprimitivebytes.
Importantmethodsonthisclassinclude:byteget()byteget(intindex)ByteBufferget(byte[]dst)ByteBufferget(byte[]dst,intoffset,intlength)ByteBufferput(byteb)ByteBufferput(intindex,byteb)ByteBufferput(byte[]src)ByteBufferput(byte[]src,intoffset,intlength)ByteBufferput(ByteBuffersrc)FilePositionandLimitApartfromformswithanindexparameter,theseareallrelativeoperations:theygetdatafrom,orinsertdatainto,thebufferstartingatthecurrentpositioninthebuffer;theyalsoupdatethepositiontopointtothepositionafterthereadorwrittendata.
Thepositionpropertyislikethefilepointerinsequentialfileaccess.
ThesuperclassBufferhasmethodsforexplicitlymanipulatingthepositionandrelatedpropertiesofbuffers,e.
g:intposition()Bufferposition(intnewPosition)intlimit()Bufferlimit(intnewLimit)TheByteBufferorBufferreferencesreturnedbythesevariousmethodsaresimplyreferencestothisbufferobject,notnewbuffers.
Theyareprovidedtosupportcrypticinvocationchaining.
Feelfreetoignorethem.
Thelimitpropertydefineseitherthelastspaceavailableforwriting,orhowmuchdatahasbeenwrittentothefile.
Afterfinishingwritingaflip()methodcanbecalledtosetlimittothecurrentvalueofposition,andresetpositiontozero,readyforreading.
Variousoperationsimplicitlyworkonthedatabetweenpositionandlimit.
CreatingBuffersFourinterestingfactorymethodscanbeusedtocreateanewByteBuffer:ByteBufferallocate(intcapacity)ByteBufferallocateDirect(intcapacity)ByteBufferwrap(byte[]array)ByteBufferwrap(byte[]array,intoffset,length)TheseareallstaticmethodsoftheByteBufferclass.
allocate()createsaByteBufferwithanordinaryJavabackingarrayofsizecapacity.
allocateDirect()—perhapsthemostinterestingcase—createsadirectByteBuffer,backedbycapacitybytesofsystemmemory.
Thewrap()methodscreateByteBuffer'sbackedbyallorpartofanarrayallocatedbytheuser.
Theothertypedbufferclasses(CharBuffer,etc)havesimilarfactorymethods,excepttheydon'tsupporttheimportantallocateDirect()method.
OtherPrimitiveTypesinByteBuffer'sItispossibletowriteotherprimitivetypes(char,int,double,etc)toaByteBufferbymethodslike:ByteBufferputChar(charvalue)ByteBufferputChar(intindex,charvalue)ByteBufferputInt(intvalue)ByteBufferputInt(intindex,intvalue)…TheputChar()methodsdoabsoluteorrelativewritesofthetwobytesinaJavachar,theputInt()methodswrite4bytes,andsoon.
OfcoursetherearecorrespondinggetChar(),getInt(),…methods.
Thesegiveyoufun,unsafewaysofcoercingbytesofoneprimitivetypetoanothertype,bywritingdataasonetypeandreadingthemasanother.
Butactuallythisisn'ttheinterestingbit—thiswasalwayspossiblewiththeoldjava.
ioDataStream's.
TheinterestingbitisthatthenewByteBufferclasshasamethodthatallowsyoutosetthebyteorder…Endian-nessWhenidentifyinganumerictypelikeintordoublewithasequenceofbytesinmemory,onecaneitherputthemostsignificantbytefirst(big-endian),ortheleastsignificantbytefirst(little-endian).
BigEndian:SunSparc,PowerPCCPU,numericfieldsinIPheaders,…LittleEndian:IntelprocessorsInjava.
io,numerictypeswerealwaysrenderedtostreaminbig-endianorder.
Createsaseriousbottleneckwhenwritingorreadingnumerictypes.
Implementationstypicallymustapplybytemanipulationcodetoeachitem,toensurebytesarewritteninthecorrectorder.
Injava.
nio,theprogrammerspecifiesthebyteorderasapropertyofaByteBuffer,bycallingoneof:myBuffer.
order(ByteOrder.
BIG_ENDIAN)myBuffer.
order(ByteOrder.
LITTLE_ENDIAN)myBuffer.
order(ByteOrder.
nativeOrder())Providedtheprogrammerensuresthebyteordersetforthebufferagreeswiththenativerepresentationforthelocalprocessor,numericdatacanbecopiedbetweenJVM(whichwillusethenativeorder)andbufferbyastraightblockmemorycopy,whichcanbeextremelyfast—abigwinforNIO.
ViewBuffersByteBufferhasnomethodsforbulktransferofarraysotherthantypebyte[].
Instead,createaviewof(aportionof)aByteBufferasanyotherkindoftypedbuffer,thenusethebulktransfermethodsonthatview.
FollowingmethodsofByteBuffercreateviews:CharBufferasCharBuffer()IntBufferasIntBuffer()…TocreateaviewofjustaportionofaByteBuffer,setpositionandlimitappropriatelybeforehand—thecreatedviewonlycoverstheregionbetweenthese.
YoucannotcreateviewsoftypedbuffersotherthanByteBuffer.
Youcancreateanotherbufferthatrepresentsasubsectionofanybuffer(withoutchangingelementtype)byusingtheslice()method.
Forexample,writinganarrayoffloatstoabytebuffer,startingatthecurrentposition:float[]array;…FloatBufferfloatBuf=byteBuf.
asFloatBuffer();floatBuf.
put(array);ChannelsChannelsAchannelisanewabstractioninjava.
nio.
Inthepackagejava.
nio.
channels.
Channelsareahigh-levelversionofthefile-descriptorsfamiliarfromPOSIX-compliantoperatingsystems.
SoachannelisahandleforperformingI/Ooperationsandvariouscontroloperationsonanopenfileorsocket.
ForthosefamiliarwithconventionalJavaI/O,java.
nioassociatesachannelwithanyRandomAccessFile,FileInputStream,FileOutputStream,Socket,ServerSocketorDatagramSocketobject.
ThechannelbecomesapeertotheconventionalJavahandleobjects;theconventionalobjectsstillexist,andingeneralretaintheirrole—thechanneljustprovidesextraNIO-specificfunctionality.
NIObufferobjectscanwrittentoorreadfromchannelsdirectly.
Channelsalsoplayanessentialroleinreadinessselection,discussedinthenextsection.
SimplifiedChannelHierarchySomeofthe"inheritance"arcshereareindirect:wemissedoutsomeinterestinginterveningclassesandinterfaces.
OpeningChannelsSocketchannelclasseshavestaticfactorymethodscalledopen(),e.
g.
:SocketChannelsc=SocketChannel.
open();Sc.
connect(newInetSocketAddress(hostname,portnumber));Filechannelscannotbecreateddirectly;firstuseconventionalJavaI/OmechanismstocreateaFileInputStream,FileOutputStream,orRandomAccessFile,thenapplythenewgetChannel()methodtogetanassociatedNIOchannel,e.
g.
:RandomAccessFileraf=newRandomAccessFile(filename,"r");FileChannelfc=raf.
getChannel();UsingChannelsAnychannelthatimplementstheByteChannelinterface—i.
e.
allchannelsexceptServerSocketChannel—providearead()andawrite()instancemethod:intread(ByteBufferdst)intwrite(ByteBuffersrc)Thesemaylookreminiscentoftheread()andwrite()systemcallsinUNIX:intread(intfd,void*buf,intcount)intwrite(intfd,void*buf,intcount)TheJavaread()attemptstoreadfromthechannelasmanybytesasthereareremainingtobewritteninthedstbuffer.
Returnsnumberofbytesactuallyread,or-1ifend-of-stream.
Alsoupdatesdstbufferposition.
Similarlywrite()attemptstowritetothechannelasmanybytesasthereareremaininginthesrcbuffer.
Returnsnumberofbytesactuallyread,andupdatessrcbufferposition.
Example:CopyingoneChanneltoAnotherThisexampleassumesasourcechannelsrcandadestinationchanneldest:ByteBufferbuffer=ByteBuffer.
allocateDirect(BUF_SIZE);while(src.
read(buffer)!
=-1)buffer.
flip(Preparereadbufferfor"draining"while(buffer.
hasRemaining(dest.
write(buffer)buffer.
clear(Emptybuffer,readytoreadnextchunk.
}Noteawrite()call(oraread()call)mayormaynotsucceedintransferringwholebufferinasinglecall.
Henceneedforinnerwhileloop.
ExampleintroducestwonewmethodsonBuffer:hasRemaining()returnstrueifpositionJava.
FileChannelhasamethod:MappedByteBuffermap(MapModemode,longposition,longsize)modeshouldbeoneofMapMode.
READ_ONLY,MapMode.
READ_WRITE,MapMode.
PRIVATE.
ThereturnedMappedByteBuffercanbeusedwhereveranordinaryByteBuffercan.
Scatter/GatherOftencalledvectoredI/O,thisjustmeansyoucanpassanarrayofbufferstoareadorwriteoperation;theoverloadedchannelinstancemethodshavesignatures:longread(ByteBuffer[]dsts)longread(ByteBuffer[]dsts,intoffset,intlength)longwrite(ByteBuffer[]srcs)longwrite(ByteBuffer[]srcs,intoffset,intlength)Thefirstformofread()attemptstoreadenoughdatatofillallbuffersinthearray,anddividesitbetweenthem,inorder.
Thefirstformofwrite()attemptstoconcatenatetheremainingdatainallbuffersandwriteit.
Theargumentsoffsetandlengthselectasubsetofbuffersfromthearrays(not,say,anintervalwithinbuffers).
SocketChannelsAsmentionedatthebeginningofthissection,socketchannelsarecreateddirectlywiththeirownfactorymethodsIfyouwanttomanageasockedconnectionasaNIOchannelthisistheonlyoption.
CreatingNIOsocketchannelimplicitlycreatesapeerjava.
netsocketobject,but(contrarytothesituationwithfilehandles)theconverseisnottrue.
Aswithfilechannels,socketchannelscanbemorecomplicatedtoworkwiththanthetraditionaljava.
netsocketclasses,butprovidemuchofthehard-boiledflexibilityyougetprogrammingsocketsinC.
Themostnotablenewfacilitiesarethatnowsocketcommunicationscanbenon-blocking,theycanbeinterrupted,andthereisaselectionmechanismthatallowsasinglethreadtodomultiplexservicingofanynumberofchannels.
BasicSocketChannelOperationsTypicaluseofaserversocketchannelfollowsapatternlike:ServerSocketChannelssc=ServerSocketChannel.
open();ssc.
socket().
bind(newInetSocketAddress(port));while(true)SocketChannelsc=ssc.
accept(processatransactionwithclientthroughsc…}Theclientdoessomethinglike:SocketChannelsc=SocketChannel.
open();sc.
connect(newInetSocketAddr(serverName,port));…initiateatransactionwithserverthroughsc…Theelidedcodeabovewilltypicallybeusingread()andwrite()callsontheSocketChanneltoexchangedatabetweenclientandserver.
Sotherearefourimportantoperations:accept(),connect(),write(),read().
NonblockingOperationsBycallingthemethodsocket.
configureBlocking(false);youputasocketintononblockingmode(callingagainwithargumenttruerestorestoblockingmode,andsoon).
Innon-blockingmode:Aread()operationonlytransfersdatathatisimmediatelyavailable.
Ifnodataisimmediatelyavailableitreturns0.
Similarly,ifdatacannotbeimmediatelywrittentoasocket,awrite()operationwillimmediatelyreturn0.
Foraserversocket,ifnoclientiscurrentlytryingtoconnect,theaccept()methodimmediatelyreturnsnull.
Theconnect()methodismorecomplicated—generallyconnectionswouldalwaysblockforsomeintervalwaitingfortheservertorespond.
Innon-blockingmodeconnect()generallyreturnsfalse.
Butthenegotiationwiththeserverisneverthelessstarted.
ThefinishConnect()methodonthesamesocketshouldbecalledlater.
Italsoreturnsimmediately.
Repeatuntilitreturntrue.
InterruptibleOperationsThestandardchannelsinNIOareallinterruptible.
Ifathreadisblockedwaitingonachannel,andthethread'sinterrupt()methodiscalled,thechannelwillbeclosed,andthethreadwillbewokenandsentaClosedByInterruptException.
Toavoidraceconditions,thesamewillhappenifanoperationonachannelisattemptedbyathreadwhoseinterruptstatusisalreadytrue.
Seethelectureonthreadsforadiscussionofinterrupts.
ThisrepresentsprogressovertraditionalJavaI/O,whereinterruptionofblockingoperationswasnotguaranteed.
OtherFeaturesofChannelsFilechannelsprovideaquitegeneralfilelockingfacility.
Thisispresumablyimportanttomanyapplications(databaseapplications),butlessobviouslysotoHPCoperations,sowedon'tdiscussithere.
ThereisaDatagramChannelforsendingUDP–stylemessages.
Thismaywellbeimportantforhighperformancecommunications,butwedon'thavetimetodiscussit.
Thereisaspecialchannelimplementationrepresentingakindofpipe,whichcanbeusedforinter-threadcommunication.
SelectorsReadinessSelectionPriortoNewI/O,Javaprovidednostandardwayofselecting—fromasetofpossiblesocketoperations—justtheonesthatarecurrentlyreadytoproceed,sothereadyoperationscanbeimmediatelyserviced.
OneapplicationwouldbeinimplementinganMPI-likemessagepassingsystem:ingeneralincomingmessagesfrommultiplepeersmustbeconsumedastheyarriveandfedintoamessagequeue,untiltheuserprogramisreadytohandlethem.
PreviouslyonecouldachieveequivalenteffectsinJavabydoingblockingI/Ooperationsinseparatethreads,thenmergingtheresultsthroughJavathreadsynchronization.
Butthiscanbeinefficientbecausethreadcontextswitchingandsynchronizationisquiteslow.
OnewayofachievingthedesiredeffectinNewI/Owouldbesetallthechannelsinvolvedtonon-blockingmode,anduseapollinglooptowaituntilsomearereadytoproceed.
Amorestructured—andpotentiallymoreefficient—approachistouseSelectors.
InmanyflavorsofUNIXthisisachievedbyusingtheselect()systemcall.
ClassesInvolvedinSelectionSelectioncanbedoneonanychannelextendingSelectableChannel—amongstthestandardchannelsthismeansthethreekindsofsocketchannel.
Theclassthatsupportstheselect()operationitselfisSelector.
Thisisasortofcontainerclassforthesetofchannelsinwhichweareinterested.
ThelastclassinvolvedisSelectionKey,whichissaidtorepresentthebindingbetweenachannelandaselector.
InsomesenseitispartoftheinternalrepresentationoftheSelector,buttheNIOdesignersdecidedtomakeitanexplicitpartoftheAPI.
SettingUpSelectorsAselectoriscreatedbytheopen()factorymethod.
ThisisnaturallyastaticmethodoftheSelectorclass.
Achannelisaddedtoaselectorbycallingthemethod:SelectionKeyregister(Selectorsel,intops)This,slightlyoddly,isaninstancemethodoftheSelectableChannelclass—youmighthaveexpectedtheregister()methodtobeamemberofSelector.
Hereopsisabit-setrepresentingtheinterestsetforthischannel:composedbyoringtogetheroneormoreof:SelectionKey.
OP_READSelectionKey.
OP_WRITESelectionKey.
OP_CONNECTSelectionKey.
OP_ACCEPTAchanneladdedtoaselectormustbeinnonblockingmode!
Theregister()methodreturnstheSelectionKeycreatedSincethisautomaticallygetsstoredintheSelector,soinmostcasesyouprobablydon'tneedtosavetheresultyourself.
ExampleHerewecreateaselector,andregisterthreepre-existingchannelstotheselector:Selectorselector=Selector.
open();channel1.
register(selector,SelectionKey.
OP_READ);channel2.
register(selector,SelectionKey.
OP_WRITE);channel3.
register(selector,SelectionKey.
OP_READSelectionKey.
OP_WRITE);Forchannel1theinterestsetisreadsonly,forchannel2itiswritesonly,forchannel3itisreadsandwrites.
Notechannel1,channel2,channel3mustallbeinnon-blockingmodeatthistime,andmustremaininthatmodeaslongastheyareregisteredinanyselector.
Youremoveachannelfromaselectorbycallingthecancel()methodoftheassociatedSelectionKey.
select()andtheSelectedKeySetToinspectthesetofchannels,toseewhatoperationsarenewlyreadytoproceed,youcalltheselect()methodontheselector.
Thereturnvalueisaninteger,whichwillbezeroifnostatuschangesoccurred.
Moreinterestingthanthereturnvalueisthesideeffectthismethodhasonthesetofselectedkeysembeddedintheselector.
Touseselectors,youmustunderstandthataselectormaintainsaSetobjectrepresentingthisselectedkeysset.
Becauseeachkeyisassociatedwithachannel,thisisequivalenttoasetofselectedchannels.
Thesetofselectedkeysisdifferentfrom(presumablyasubsetof)theregisteredkeyset.
Eachtimetheselect()methodiscalleditmayaddnewkeystotheselectedkeyset,asoperationsbecomereadytoproceed.
You,astheprogrammer,areresponsibleforexplicitlyremovingkeysfromtheselectedkeysetbelongingtotheselector,asyoudealwithoperationsthathavebecomeready.
ReadySetsThisisquitecomplicatedalready,butthereisonemorecomplication.
Wesawthateachkeyintheregisteredkeysethasanassociatedinterestset,whichisasubsetofthe4possibleoperationsonsockets.
Similarlyeachkeyintheselectedkeysethasanassociatedreadyset,whichisasubsetoftheinterestset—representingtheactualoperationsthathavebeenfoundreadytoproceed.
Besidesaddingnewkeystotheselectedkeyset,aselect()operationmayaddnewoperationstothereadysetofakeyalreadyintheselectedkeyset.
Assumingtheselectedkeysetwasnotclearedafteraprecedingselect().
YoucanextractthereadysetfromaSelectionKeyasabit-set,byusingthemethodreadyOps().
Oryoucanusetheconveniencemethods:isReadable()isWriteable()isConnectable()isAcceptable()whicheffectivelyreturnthebitsofthereadysetindividually.
APatternforUsingselect()…registersomechannelswithselector…while(true)selector.
select(Iteratorit=selector.
selectedKeys().
iterator(while(it.
hasNext(SelectionKeykey=it.
next(if(key.
isReadable(performread()operationonkey.
channel(if(key.
isWriteable(performwrite()operationonkey.
channel(if(key.
isConnectable(performconnect()operationonkey.
channel(if(key.
isAcceptable(performaccept()operationonkey.
channel(it.
remove(RemarksThisgeneralpatternwillprobablyserveformostusesofselect():Performselect()andextractthenewselectedkeysetForeachselectedkey,handletheactionsinitsreadysetRemovetheprocessedkeyfromtheselectedkeysetNotetheremove()operationonanIteratorremovesthecurrentitemfromtheunderlyingcontainer.
Moregenerally,thecodethathandlesareadyoperationmayalsoalterthesetofchannelsregisteredwiththeselectore.
gafterdoinganaccept()youmaywanttoregisterthereturnedSocketChannelwiththeselector,towaitforread()orwrite()operations.
Inmanycasesonlyasubsetofthepossibleoperationsread,write,accept,connectareeverininterestsetsofkeysregisteredwiththeselector,soyouwon'tneedall4tests.
KeyAttachmentsOneproblemwiththepatternaboveisthatwhenit.
next()returnsakey,thereisnoconvenientwayofgettinginformationaboutthecontextinwhichtheassociatedchannelwasregisteredwiththeselector.
Forexamplechannel1andchannel3arebothregisteredforOP_READ.
Buttheactionthatshouldbetakenwhenthereadbecomesreadymaybequitedifferentforthetwochannels.
Youneedaconvenientwaytodeterminewhichchannelthereturnedkeyisboundto.
Youcanspecifyanarbitraryobjectasanattachmenttothekeywhenyoucreateit;laterwhenyougetthekeyfromtheselectedset,youcanextracttheattachment,anduseitscontentintodecidewhattodo.
Atitsmostbasictheattachmentmightjustbeanindexidentifyingthechannel.
SimplisticUseofKeyAttachmentschannel1.
register(selector,SelectionKey.
OP_READ,newInteger(1)attachment…channel3.
register(selector,SelectionKey.
OP_READSelectionKey.
OP_WRITE,newInteger(3)attachment…while(true)Iteratorit=selector.
selectedKeys().
iterator(SelectionKeykey=it.
next(if(key.
isReadable(switch(((Integer)key.
channel().
attachment()).
value(case1actionappropriatetochannel1case3actionappropriatetochannel3ConclusionWebrieflyvisitedseveraltopicsinNewI/OthatarelikelytobeinterestingforHPCwithJava.
Sometopicsthatarelessobviouslyrelevantweskipped,likefilelocking,andregularexpressions.
Alsowedidn'tcoverdatagramchannels,whichmaywellberelevant.
NewI/OhasbeenwidelyhailedasanimportantstepforwardingettingseriousperformanceoutoftheJavaplatform.
Seethepaper:"MPJava:High-PerformanceMessagePassinginJavausingjava.
nio"WilliamPughandJaimeSpaccoForagoodexampleofhowNewI/Omayaffectthe"JavaforHPC"landscape.

小欢互联19元/月起, 即日起至10月底 美国CERA 促销活动 美国/香港八折

小欢互联成立于2019年10月,主打海外高性价比云服务器、CDN和虚拟主机服务。近期上线了自营美国CERA机房高速VPS,进行促销活动,为客户奉上美国/香港八折优惠码:Xxc1mtLB优惠码适用于美国CERA一区/二区以及香港一区/二区优惠时间:即日起至10月底优惠码可无限次使用,且续费同价!官网:https://idc.xh-ws.com购买地址:美国CERA一区:https://idc.xh-...

HostYun 新增可选洛杉矶/日本机房 全场9折月付19.8元起

关于HostYun主机商在之前也有几次分享,这个前身是我们可能熟悉的小众的HostShare商家,主要就是提供廉价主机,那时候官方还声称选择这个品牌的机器不要用于正式生产项目,如今这个品牌重新转变成Hostyun。目前提供的VPS主机包括KVM和XEN架构,数据中心可选日本、韩国、香港和美国的多个地区机房,电信双程CN2 GIA线路,香港和日本机房,均为国内直连线路,访问质量不错。今天和大家分享下...

Gcore(75折)迈阿密E5-2623v4 CPU独立服务器

部落分享过多次G-core(gcorelabs)的产品及评测信息,以VPS主机为主,距离上一次分享商家的独立服务器还在2年多前,本月初商家针对迈阿密机房限定E5-2623v4 CPU的独立服务器推出75折优惠码,活动将在9月30日到期,这里再分享下。G-core(gcorelabs)是一家总部位于卢森堡的国外主机商,主要提供基于KVM架构的VPS主机和独立服务器租用等,数据中心包括俄罗斯、美国、日...

java抽奖程序为你推荐
中国微信5签约xp绑定ipad敬请参阅最后一页特别声明支持ipad支持ipad重庆网通重庆网通上网资费目前是多少? 小区宽带接入类型的iphone连不上wifi我的苹果手机连不上无线,其它手机能,怎么回事?只是家里的连不上css下拉菜单如何用css3做导航栏下拉菜单itunes备份itunes备份是什么
mysql虚拟主机 解析域名 动态域名解析软件 服务器配置技术网 cve-2014-6271 搜狗抢票助手 好看的桌面背景图片 申请空间 空间服务商 北京主机 hostloc 佛山高防服务器 空间技术网 如何注册阿里云邮箱 网站加速软件 网站加速 服务器托管价格 数据湾 hdroad mteam 更多