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.

Hostodo(年付12美元),美西斯波坎机房Linux VPS主机66折

Hostodo 商家是比较小众的国外VPS主机商,这不看到商家有推送促销优惠在美国西岸的斯波坎机房还有少部分库存准备通过低价格促销,年付低至12美元Linux VPS主机,且如果是1GB内存方案的可以享受六六折优惠,均是采用KVM架构,且可以支付宝付款。第一、商家优惠码优惠码:spokanessd 1GB+内存方案才可以用到优惠码,其他都是固定的优惠低至年12美元。第二、商家促销这里,我们可以看到...

webhosting24:€28/年,日本NVMe3900X+Webvps

webhosting24决定从7月1日开始对日本机房的VPS进行NVMe和流量大升级,几乎是翻倍了硬盘和流量,当然前提是价格依旧不变。目前来看,国内过去走的是NTT直连,服务器托管机房应该是CDN77*(也就是datapacket.com),加上高性能平台(AMD Ryzen 9 3900X+NVMe),这样的日本VPS还是有相当大的性价比的。官方网站:https://www.webhosting...

TabbyCloud周年庆&七夕节活动 美國INAP 香港CN2

TabbyCloud迎来一周岁的生日啦!在这一年里,感谢您包容我们的不足和缺点,在您的理解与建议下我们也在不断改变与成长。为庆祝TabbyCloud运营一周年和七夕节,TabbyCloud推出以下活动。TabbyCloud周年庆&七夕节活动官方网站:https://tabbycloud.com/香港CN2: https://tabbycloud.com/cart.php?gid=16购买链...

java抽奖程序为你推荐
I:\Sam-research\QEF\Publications\Conference支持ipad支持iosphotoshop技术photoshop技术对哪些工作有用?photoshop技术什么是ps技术ipad连不上wifiiPad mini WiFi开关成灰色无法连接,怎么办ipad连不上wifiipad显示无互联网连接怎么回事?360chrome使用360急速浏览器,360chrome进程结束不了win7关闭135端口win7系统怎么关闭135端口?网上很多方法都不好用!css选择器CSS中的选择器分几种?
网络域名 免费二级域名注册 未注册域名查询 互联网域名管理办法 老鹰主机 BWH info域名 xfce 好看qq空间 天互数据 电子邮件服务器 jsp空间 国外代理服务器地址 cdn加速原理 网络空间租赁 免费申请个人网站 cdn加速是什么 双线机房 厦门电信 江苏徐州移动 更多