专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

如何阅读Spring源码,阅读前需要做哪些准备

  环境准备下载源码
  下载地址:https:github。comspringprojectsspringframeworktreev6。0。3
  选择版本:
  选择spring源码版本
  选择压缩包下载,直接通过gitclonehttp地址下载比较慢,直接下载压缩包。
  下载spring源码zip包
  解压源码压缩包
  spring源码目录结构
  查看gradle对应版本,查看目录gradlewrapper。properties文件(gradlewrappergradlewrapper。properties)
  修改wrapper。properties配置文件
  查看当前spring源码版本,所依赖的gradle版本
  spring源码依赖的gradle环境准备
  Java环境:jdk17
  Gradle环境:gradle7。6bin。zip
  下载gradle,下载地址:https:gradle。orgreleases,选择上面spring框架依赖的版本
  下载gradle
  解压gradle
  解压后的gradle
  配置环境变量,执行命令vim。bashprofile
  环境变量中添加gradle配置
  使配置生效,执行:source。bashprofile
  查看gradle版本
  查看gradle版本
  修改镜像源
  修改gradle镜像源
  在build。gradle中添加阿里云镜像。
  修改成阿里云镜像源
  修改settings。gradle中的阿里云镜像
  修改setting。gradle
  修改settings。gradle阿里云仓库镜像配置
  修改成阿里镜像源maven{urlhttps:maven。aliyun。comrepositorypublic}阿里云镜像仓库编译源码
  在项目根目录,进行预编译,。gradlew:springoxm:compileTestJava
  编辑源码
  编译中,编译需要一段时间。
  源码编译中
  编译完成
  源码编译完成需要注意的配置preferencesgradle配置
  修改idea中gradle配置Projectstructureproject
  修改idea中Projectstructure配置ProjectstructureModules
  修改idea中Projectstructure配置特别需要注意的配置文件根目录settings。gradlepluginManagement{repositories{maven{urlhttps:maven。aliyun。comrepositorygradleplugin}maven{urlhttps:maven。aliyun。comrepositoryspringplugin}maven{urlhttps:maven。aliyun。comrepositorypublic}阿里云镜像仓库mavenCentral()gradlePluginPortal()maven{urlhttps:repo。spring。iorelease}}}plugins{idcom。gradle。enterpriseversion3。11。1idio。spring。ge。conventionsversion0。0。7}includespringaopincludespringaspectsincludespringbeansincludespringcontextincludespringcontextindexerincludespringcontextsupportincludespringcoreincludespringcoretestincludespringexpressionincludespringinstrumentincludespringjclincludespringjdbcincludespringjmsincludespringmessagingincludespringormincludespringoxmincludespringr2dbcincludespringtestincludespringtxincludespringwebincludespringwebfluxincludespringwebmvcincludespringwebsocketincludeframeworkbomincludeframeworkdocsincludeframeworkplatformincludeintegrationtestsrootProject。namespringrootProject。children。each{projectproject。buildFileName{project。name}。gradle}settings。gradle。projectsLoaded{gradleEnterprise{buildScan{FilebuildDirsettings。gradle。rootProject。getBuildDir()buildDir。mkdirs()newFile(buildDir,buildscanuri。txt)。text(buildscannotgenerated)buildScanPublished{scanif(buildDir。exists()){newFile(buildDir,buildscanuri。txt)。text{scan。buildScanUri}}}}}}includespringrenjie001includespringrenjie002根目录下build。gradleplugins{idio。spring。nohttpversion0。0。10idio。freefair。aspectjversion6。5。0。3applyfalsekotlinVersionismanagedingradle。propertiesidorg。jetbrains。kotlin。plugin。serializationversion{kotlinVersion}applyfalseidorg。jetbrains。dokkaversion1。7。20idorg。asciidoctor。jvm。convertversion3。3。2applyfalseidorg。asciidoctor。jvm。pdfversion3。3。2applyfalseidorg。unbrokendome。xjcversion2。0。0applyfalseidcom。github。benmanes。versionsversion0。42。0idcom。github。johnrengelman。shadowversion7。1。2applyfalseidde。undercouch。downloadversion5。1。0idme。champeau。jmhversion0。6。8applyfalse}ext{moduleProjectssubprojects。findAll{it。name。startsWith(spring)}javaProjectssubprojectsproject(:frameworkbom)project(:frameworkplatform)}configure(allprojects){projectrepositories{maven{urlhttps:maven。aliyun。comnexuscontentgroupspublic}maven{urlhttps:maven。aliyun。comrepositorypublic}maven{urlhttps:maven。aliyun。comrepositorygoogle}maven{urlhttps:maven。aliyun。comrepositoryspring}maven{urlhttps:maven。aliyun。comnexuscontentrepositoriesjcenter}}configurations。all{resolutionStrategy{cacheChangingModulesFor0,secondscacheDynamicVersionsFor0,seconds}}}configure(〔rootProject〕javaProjects){projectgrouporg。springframeworkapplyplugin:javaapplyplugin:javatestfixturesapplyplugin:checkstyleapplyplugin:org。springframework。build。conventionsapplyfrom:{rootDir}gradletoolchains。gradleapplyfrom:{rootDir}gradleide。gradleconfigurations{dependencyManagement{canBeConsumedfalsecanBeResolvedfalsevisiblefalse}matching{it。name。endsWith(Classpath)}。all{it。extendsFrom(dependencyManagement)}}test{useJUnitPlatform()include(〔Tests。class,Test。class〕)systemProperty(java。awt。headless,true)systemProperty(testGroups,project。properties。get(testGroups))systemProperty(io。netty。leakDetection。level,paranoid)systemProperty(io。netty5。leakDetectionLevel,paranoid)systemProperty(io。netty5。leakDetection。targetRecords,32)systemProperty(io。netty5。buffer。lifecycleTracingEnabled,true)systemProperty(io。netty5。buffer。leakDetectionEnabled,true)jvmArgs(〔addopensjava。basejava。langALLUNNAMED,addopensjava。basejava。utilALLUNNAMED〕)}checkstyle{toolVersion10。5。0configDirectory。set(rootProject。file(srccheckstyle))}tasks。named(checkstyleMain)。configure{maxHeapSize1g}tasks。named(checkstyleTest)。configure{maxHeapSize1g}dependencies{dependencyManagement(enforcedPlatform(dependencies。project(path::frameworkplatform)))testImplementation(org。junit。jupiter:junitjupiterapi)testImplementation(org。junit。jupiter:junitjupiterparams)testImplementation(org。junit。platform:junitplatformsuiteapi)testImplementation(org。mockito:mockitocore)testImplementation(org。mockito:mockitojunitjupiter)testImplementation(io。mockk:mockk)testImplementation(org。assertj:assertjcore)PullinthelatestJUnit5LauncherAPItoensurepropersupportinIDEs。testRuntimeOnly(org。junit。jupiter:junitjupiterengine)testRuntimeOnly(org。junit。platform:junitplatformlauncher)testRuntimeOnly(org。junit。platform:junitplatformsuiteengine)testRuntimeOnly(org。apache。logging。log4j:log4jcore)testRuntimeOnly(org。apache。logging。log4j:log4jjul)testRuntimeOnly(org。apache。logging。log4j:log4jslf4jimpl)JSR305onlyusedfornonrequiredmetaannotationscompileOnly(com。google。code。findbugs:jsr305)testCompileOnly(com。google。code。findbugs:jsr305)checkstyle(io。spring。javaformat:springjavaformatcheckstyle:0。0。31)}ext。javadocLinks〔https:docs。oracle。comenjavajavase17docsapi,https:jakarta。eespecificationsplatform9apidocs,https:docs。oracle。comcdE1322201wlsdocs90javadocs,CommonJhttps:www。ibm。comdocsapiv1contentSSEQTP8。5。5com。ibm。websphere。javadoc。docwebapidocs,https:docs。jboss。orgjbossasjavadoc4。0。5connector,https:docs。jboss。orgjbossasjavadoc7。1。2。Final,https:www。eclipse。orgaspectjdocreleasedaspectj5rtapi,https:www。quartzscheduler。orgapi2。3。0,https:fasterxml。github。iojacksoncorejavadoc2。10,https:fasterxml。github。iojacksondatabindjavadoc2。10,https:fasterxml。github。iojacksondataformatxmljavadoc2。10,https:hc。apache。orghttpcomponentsclient5。2。xcurrenthttpclient5apidocs,https:projectreactor。iodocstestreleaseapi,https:junit。orgjunit4javadoc4。13。2,TODOUncommentlinktoJUnit5docsoncewehavesortedoutthefollowingwarninginthebuild。warning:Thecodebeingdocumentedusespackagesintheunnamedmodule,butthepackagesdefinedinhttps:junit。orgjunit5docs5。9。1apiareinnamedmodules。https:junit。orgjunit5docs5。9。1api,https:www。reactivestreams。orgreactivestreams1。0。3javadoc,https:javadoc。iostaticio。rsocketrsocketcore1。1。1,https:r2dbc。iospec1。0。0。RELEASEapi,TheexternalJavadoclinkforJSR305mustcomelasttoensurethattypesfromJSR250(suchasPostConstruct)arestillsupported。ThisisduetothefactthatJSR250andJSR305bothdefinetypesinjavax。annotation,whichresultsinasplitpackage,andthejavadoctooldoesnotsupportsplitpackagesacrossmultipleexternalJavadocsites。https:www。javadoc。iodoccom。google。code。findbugsjsr3053。0。2〕asString〔〕}configure(moduleProjects){projectapplyfrom:{rootDir}gradlespringmodule。gradle}configure(rootProject){descriptionSpringFrameworkapplyplugin:io。spring。nohttpapplyplugin:org。springframework。build。apidiffnohttp{source。excludetestoutputallowlistFileproject。file(srcnohttpallowlist。lines)defrootPathfile(rootDir)。toPath()defprojectDirsallprojects。collect{it。projectDir}{rootDir}buildSrcprojectDirs。forEach{dir〔bin,build,out,。settings〕。collect{rootPath。relativize(newFile(dir,it)。toPath())}。forEach{source。excludeit}〔。classpath,。project〕。collect{rootPath。relativize(newFile(dir,it)。toPath())}。forEach{source。excludeit}}}tasks。named(checkstyleNohttp)。configure{maxHeapSize1g}}gradlewrappergradlewrapper。propertiesdistributionBaseGRADLEUSERHOMEdistributionPathwrapperdistsdistributionUrlfile:UsersxxxDownloadsgradle7。6bin。zipnetworkTimeout10000zipStoreBaseGRADLEUSERHOMEzipStorePathwrapperdists阅读源码新建模块
  新建测试模块添加配置
  添加本地spring源码依赖plugins{idjava}grouporg。springframeworkversion6。0。3repositories{mavenCentral()}dependencies{testImplementationorg。junit。jupiter:junitjupiterapi:5。8。1testRuntimeOnlyorg。junit。jupiter:junitjupiterengine:5。8。1api(project(:springcontext))api(project(:springinstrument))}test{useJUnitPlatform()}文件目录
  项目结构添加类文件packagecom。renjie;importorg。springframework。context。ApplicationContext;importorg。springframework。context。support。ClassPathXmlApplicationContext;Author:renjiecreateTime:2022年12月29日10:58:40publicclassMyApplication{publicstaticvoidmain(String〔〕args){ApplicationContextcontextnewClassPathXmlApplicationContext(springbean。xml);Useruser(User)context。getBean(user);System。out。println(user。toString());}}packagecom。renjie;Author:renjiecreateTime:2022年12月29日11:02:04publicclassUser{privateStringname;privateStringage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this。namename;}publicStringgetAge(){returnage;}publicvoidsetAge(Stringage){this。ageage;}OverridepublicStringtoString(){returnUser{namename,ageage};}}添加配置文件lt;?xmlversion1。0encodingUTF8?beansxmlnshttp:www。springframework。orgschemabeansxmlns:xsihttp:www。w3。org2001XMLSchemainstancexsi:schemaLocationhttp:www。springframework。orgschemabeanshttp:www。springframework。orgschemabeansspringbeans。xsdbeaniduserclasscom。renjie。Userpropertynameagevalue22propertynamenamevalue小明beanbeans运行结果
  新模块运行结果编辑遇到的错误问题一:版本不存在StartingaGradleDaemon(subsequentbuildswillbefaster)FAILURE:Buildfailedwithanexception。Where:SettingsfileUsersxxxxDownloadsspringframework6。0。3settings。gradleline:12Whatwentwrong:Plugin〔id:io。spring。ge。conventions,version:0。0。11〕wasnotfoundinanyofthefollowingsources:GradleCorePlugins(pluginisnotinorg。gradlenamespace)PluginRepositories(couldnotresolvepluginartifactio。spring。ge。conventions:io。spring。ge。conventions。gradle。plugin:0。0。11)Searchedinthefollowingrepositories:maven(https:maven。aliyun。comrepositorypublic)MavenRepoGradleCentralPluginRepositoryTry:Runwithstacktraceoptiontogetthestacktrace。Runwithinfoordebugoptiontogetmorelogoutput。Runwithscantogetfullinsights。Getmorehelpathttps:help。gradle。orgBUILDFAILEDin38s
  io。spring。ge。conventions的0。0。11版本并不存在,修改成0。0。7
  修改版本
  修改版本问题二:代码未上传代码仓库fatal:notagitrepository(oranyoftheparentdirectories):。gitTask:buildSrc:compileJavaFAILEDUsersxxxDownloadsspringframework6。0。3buildSrcsrcmainjavaorgspringframeworkbuildKotlinConventions。java:44:错误:找不到符号freeCompilerArgs。addAll(List。of(Xsuppressversionwarnings,Xjsr305strict,optinkotlin。RequiresOptIn));符号:方法of(java。lang。String,java。lang。String,java。lang。String)位置:接口java。util。List1个错误FAILURE:Buildfailedwithanexception。Whatwentwrong:Executionfailedfortask:buildSrc:compileJava。Compilationfailed;seethecompilererroroutputfordetails。Try:Runwithstacktraceoptiontogetthestacktrace。Runwithinfoordebugoptiontogetmorelogoutput。Getmorehelpathttps:help。gradle。orgBUILDFAILEDin2s1actionabletask:1executedBuildscanbackgroundactionfailed。org。gradle。process。internal。ExecException:Processcommandgitfinishedwithnonzeroexitvalue128atorg。gradle。process。internal。DefaultExecHandleExecResultImpl。assertNormalExitValue(DefaultExecHandle。java:415)atorg。gradle。process。internal。DefaultExecAction。execute(DefaultExecAction。java:38)atorg。gradle。process。internal。DefaultExecActionFactory。exec(DefaultExecActionFactory。java:202)atio。spring。ge。conventions。gradle。WorkingDirectoryProcessOperations。exec(WorkingDirectoryProcessOperations。java:45)atio。spring。ge。conventions。gradle。ProcessOperationsProcessRunner。run(ProcessOperationsProcessRunner。java:41)atio。spring。ge。conventions。core。BuildScanConventions。run(BuildScanConventions。java:166)atio。spring。ge。conventions。core。BuildScanConventions。addGitMetadata(BuildScanConventions。java:113)atio。spring。ge。conventions。gradle。GradleConfigurableBuildScan。lambdabackground0(GradleConfigurableBuildScan。java:104)atcom。gradle。enterprise。gradleplugin。internal。extension。a4。run(SourceFile:174)atjava。util。concurrent。ExecutorsRunnableAdapter。call(Executors。java:511)atjava。util。concurrent。FutureTask。run(FutureTask。java:266)atjava。util。concurrent。ThreadPoolExecutor。runWorker(ThreadPoolExecutor。java:1149)atjava。util。concurrent。ThreadPoolExecutorWorker。run(ThreadPoolExecutor。java:624)atjava。lang。Thread。run(Thread。java:748)Abuildscanwasnotpublishedasyouhavenotauthenticatedwithserverge。spring。io。Formoreinformation,pleaseseehttps:gradle。comhelpgradleauthenticatingwithgradleenterprise。
  异常一:
  org。gradle。process。internal。ExecException:Processcommandgitfinishedwithnonzeroexitvalue128,错误是由于下载下来的源代码没有放到git仓库中,将代码放到在即的git仓库就行。
  异常二:
  Abuildscanwasnotpublishedasyouhavenotauthenticatedwithserverge。spring。io。不做身份验证,注释对应包
  注释问题三:jdk版本不一致,spring6。0以上需要jdk版本为17
  添加本地jdk17版本的jdk
  buildKotlinConventions。java:44:错误:找不到符号
  参考:https:www。cnblogs。comhaoxianruip16975079。html
  问题三:StartingaGradleDaemon,1incompatibleDaemoncouldnotbereused,usestatusfordetailsFAILURE:Buildfailedwithanexception。Whatwentwrong:Couldnotdeterminethedependenciesoftask:springcore:javapoetRepackJar。Couldnotresolvealldependenciesforconfiguration:springcore:javapoet。Usinginsecureprotocolswithrepositories,withoutexplicitoptin,isunsupported。SwitchMavenrepositorymaven3(http:repo。springsource。orgpluginsrelease)toredirecttoasecureprotocol(likeHTTPS)orallowinsecureprotocols。Seehttps:docs。gradle。org7。6dslorg。gradle。api。artifacts。repositories。UrlArtifactRepository。htmlorg。gradle。api。artifacts。repositories。UrlArtifactRepository:allowInsecureProtocolformoredetails。Try:Runwithstacktraceoptiontogetthestacktrace。Runwithinfoordebugoptiontogetmorelogoutput。Getmorehelpathttps:help。gradle。orgBUILDFAILEDin24s6actionabletasks:1executed,5uptodate
  配置gradle的zip
  问题四:Gradle下载的依赖包位置
  Mac系统默认下载到:
  Users(用户名)。gradlecachesmodules2files2。1或。gradlecachesmodules2files2。1

苹果树腐烂病该如何防治?苹果树腐烂病怎么防治?苹果树腐烂病是由黑腐皮壳真菌和壳囊孢属真菌引起的一种真菌病害,它主要危害结果树,多以树干主侧枝发病受害最重,其症状有两种类型,一种是溃疡型腐烂病,另一种属枝枯红枣能和苹果一起吃吗?苹果和红枣是可以一起吃的这两种食物的营养并不冲突,而且由于苹果和红枣的营养价值都很高,适当食用可以为身体带来很多的好处。不过吃红枣和苹果也有需要注意的地方,下面就来详细了解苹果和红BOSEJBL惠威这三款比较,该选哪一款,或者有哪些其他选择?看品牌比较选择是毫无道理的。每个品牌都有很好的产品也有很扑街的产品。BOSE是的技术主要是精准的频率控制能力,通过对人听觉的研究,从而精准处理音频信号,用很一般的喇叭也能得到很好的为什么现在穿皮鞋,穿西装,打领带的人越来越少啦?现在的人更注重休闲舒服,不再用外在的装饰来彰显自己的身份。1现在的人都注重健身保养,怎么休闲怎么来。2穿皮鞋西装打领带,确实不舒服。皮鞋扳脚,西服浑身皱,领带勒脖子。3以前穿西装革19款迈腾330和380动力差距大吗,这两款车的具体区别是什么?19款迈腾330和380用的都是EA888系的发动机,但是330和380的研发初衷还是有明显差别的。330是EA888GEN3B主要针对燃油经济性优化,380是EA888GEN3主比亚迪汉你会购买吗?最近正好去4S店体验了静态车,分享一下我的体验外观上车整体看着很大,完全看个人喜好选颜色,红色的媒体车已经太多了,我去4S店逛主要是想看看黑色的黑灰色的这俩的具体现场感觉,很可惜,民间小吃,黑芝麻盐,传说中的脑白金,你吃过吗?吃过!那可是小时候的美味,以前炒一下然后放点盐的,现在不放盐,老婆说盐吃多了怕我血压高。中医说咸入肾,我个人觉得还是要放点盐的。说黑芝麻有种种功效,以前都认为是中医瞎说,吃个黑芝麻海南游客离岛,到处是垃圾,你怎么看?这不是很正常的事吗别说海南了,任何一个景点,我们国内走过以后,都是垃圾啊还记得某些国家的某些景点写着狗与中国人不得入内吗,其实国人被这样对待不是没有理由的,撇开有关国家的一些什么因广东省内有哪些适合两天游的小众地方?谢谢邀请这3个就在广东的隐世桃源!美到惊艳!却十分低调,去这里摘星星也许你在广州,看腻了小蛮腰也许你在深圳,看腻了世界之窗今天小编要推荐的地方不曾声名远扬,却美得惊艳就在广东境内,以现在地球的交通工具,在盾牌座UY上走一圈要多久?太阳是太阳系中最大的星球,跟其它星球比起来,太阳就是庞然大物,就连是太阳系中最大的行星木星,其直径也不过太阳的110,但是放眼整个宇宙的话,太阳也是很渺小的,特别是跟一些体积巨大的现在的地球上是否存在着多数人类从未接触过的神秘生物?地球从宏观角度来看,它是一个美丽孕育万物生机的蓝色星球,从微观角度来看,它本身就是笼罩着迷雾的神秘代码,譬如天外来客未解之谜,神秘物种等等,纵观历史,多少未知等着我们探索,话不多说
新时代文明实践芝罘翡翠社区举办文明旅游宣传大小新闻客户端3月23日讯(YMG全媒体记者钟嘉琳通讯员崔雪)近日,烟台芝罘区毓璜顶街道翡翠社区党委联合辖区旅行社的党员志愿者举办科普启明旅游维权宣讲会,为居民开展文明旅游宣传活动中世纪骑士的行为方式发生了什么改变?对欧洲社会产生何种影响?文晓山青编辑晓山青前言中世纪是一个极为重要的历史时期,骑士在其中扮演了重要的角色。从早期的骑士到后期的骑士,他们的骑士道理念和行为方式也不断发生着变化,这些变化不仅仅影响了骑士阶层扬科维奇能创造得分机会证明国足在进步,不满意平局下场一定赢北京时间3月23日,国足在国际热身赛中下半场猛攻的情况下未能取得进球,以00战平新西兰国家队。赛后的新闻发布会上,国足主帅扬科维奇表示,自己对平局不满意,对手全场只有一次机会,而且欧足联官方就裁判门事件对巴萨开启正式调查直播吧3月23日讯欧足联官方宣布,就裁判门事件对巴萨开启正式调查。欧足联在公告中表示根据欧足联纪律条例第31(4)条的规定,已经任命欧足联道德和纪律检查员,调查有关巴塞罗那在所谓的女友参观皇马奖杯陈列室,卡里乌斯这也能忍?2018年欧冠决赛,时任利物浦首发门将的卡里乌斯送上两次超级超级巨大的失误,让皇马夺得了队史的第13座欧冠奖杯。卡里乌斯随后的职业生涯也受到非常大的影响,从利物浦离开后,辗转德甲土发现春之美江苏南京江北新区樱花大道一路繁花一路春央广网南京3月23日消息(记者庄滨滨)3月的南京,满城春色。除了鸡鸣寺这一赏樱绝佳胜地,在江北新区也有一条名副其实的樱花大道凤滁路。这条长2公里宽20米的道路上,数千株樱花云蒸霞蔚厦门木棉花开红似火来源人民网红嘴蓝鹊立于木棉花枝头。人民网陈博摄厦门莲坂的木棉树高大挺拔,朵朵红花开满枝头。人民网陈博摄在厦门前埔,橙红色的木棉花迎着暖阳开放。人民网陈博摄人民网厦门3月23日电(陈2023中国护照最新免签落地签国家汇总,出国商务旅游必看!移民或移居是当今社会的热门话题之一,第二身份配置的好处,对很多人来说甚至已成刚需。如果你认为移民离自己很遥远,那一定是因为掌握的信息还不够。同鹿川先生一起,感受岁月静好,在走向移民缅北到底有多危险?最近,去东南亚旅游的热度挺高涨的,从明星到各大网红都去东南亚旅游了。尤其是去泰国,那个男模餐厅吸引了大量人的关注。东南亚有一个地方叫做缅甸,声称每日高薪,处处是黄金?遇到这种事,那旅游宣传口号乱用女王梗,加拿大里贾纳市道歉来源环球时报环球时报综合报道制定旅游宣传口号时一定要谨慎,近日,加拿大里贾纳市(Regina)的旅游推广机构就因不当宣传口号招致批评。里贾纳市得名于维多利亚女王,其英文Regina浙江千岛湖,为何不止于湖?千岛湖。淳安县委宣传部供图中新网杭州3月23日电(钱晨菲)在疫情对旅游行业产生重要影响的背景下,杭州淳安旅游奋力自救,旅游复苏回暖走在了浙江省前列。自疫情以来,淳安没有一家旅游企业
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网