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.

香港九龙湾(27元) 2核2G 20元 香港沙田

弘速云是创建于2021年的品牌,运营该品牌的公司HOSU LIMITED(中文名称弘速科技有限公司)公司成立于2021年国内公司注册于2019年。HOSU LIMITED主要从事出售香港VPS、美国VPS、香港独立服务器、香港站群服务器等,目前在售VPS线路有CN2+BGP、CN2 GIA,该公司旗下产品均采用KVM虚拟化架构。可联系商家代安装iso系统。国庆活动 优惠码:hosu10-1产品介绍...

提速啦香港独立物理服务器E3 16G 20M 5IP 299元

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

DMIT$10.9/月,日本VPS/三网直连/1核1.5G内存/20GB存储/1Gbps端口

优惠码年付一次性5折优惠码:TYO-Lite-Open-Beta-1y-50OFF永久8折优惠码:TYO-Lite-Open-Beta-Recur-20OFF日本vpsCPU内存SSD流量带宽价格购买1核1.5G20 GB4 TB1Gbps$10.9/月购买2核2 G40 GB6 TB1Gbps$16.9/月购买2核4 G60 GB8 TB1Gbps$21.9/月购买4核4 G80 GB12 TB...

java抽奖程序为你推荐
万联集成吊顶软件(三维版)《信息技术基础》复习大纲contentcss支持ipadoutput_buffering飞飞的官方网站是啥ipadwifiipad的wifi打不开怎么办?win10关闭445端口在win10 如何关闭445端口的最新相关信息用itunes备份如何用iTunes备份iPhone数据用itunes备份如何使用itunes完整备份iPhone资料联通版iphone4s怎么知道到苹果4s是联通版,还是移动版
海外虚拟主机空间 虚拟主机价格 日本私人vps 国外免费vps 动态域名解析软件 免费动态域名解析 万网域名解析 堪萨斯服务器 优key 2017年万圣节 好看的桌面背景图 java虚拟主机 anylink 卡巴斯基官方免费版 百兆独享 200g硬盘 cdn联盟 新家坡 流量计费 免费dns解析 更多