涓婃湡鎴戜滑璇︾粏璁ㄨ浜嗗井鏈嶅姟涔嬮棿鐨勯?氫俊锛岀壒鍒槸濡備綍闆嗘垚Ribbon銆傜畝鍗曟潵璇达紝灏辨槸鍦ㄤ娇鐢╮esttemplate绫昏繘琛孯PC璋冪敤鏃讹紝鎴戜滑鍐呴儴娣诲姞涓?涓嫤鎴櫒鏉ュ疄鐜拌礋杞藉潎琛°?備絾鏄紝鎴戜滑涓嶆繁鍏ヨ璁哄叿浣撶殑璐熻浇鍧囪 绠楁硶銆傚洜姝わ紝鏈珷鐨勯噸鐐规槸浠嬬粛濡備綍浠庡涓壇鏈腑閫夋嫨鍚堥?傜殑鑺傜偣杩涜鏈嶅姟璋冪敤銆傝繖灏嗗府鍔╁ぇ瀹舵洿濂藉湴鐞嗚В濡備綍鍦ㄥ井鏈嶅姟鏋舵瀯涓湁鏁堝湴瀹炵幇璐熻浇鍧囪 銆傚ソ鍚э紝浠婂ぉ鎴戜滑浠嶇劧浼氳鐩栨簮鐮侊紝浣嗗笇鏈涘ぇ瀹惰兘澶熶笓娉ㄤ簬姒傚康灞傞潰锛岃?屼笉鏄繁绌舵瘡涓叿浣撶殑娴佺▼璋冪敤銆傛棤闇?绾犵粨浜庣壒瀹氱殑浠g爜琛岋紝鍥犱负浜嗚В鏁翠綋鏋舵瀯鍜屾祦绋嬪緢閲嶈锛岃繖鏍锋偍鎵嶈兘鏇村ソ鍦版帉鎻′富棰樼殑鏈川銆傝礋杞藉潎琛$畻娉曟垜浠鍏堣璁轰竴涓婻ibbon榛樿浣跨敤鐨勮礋杞藉潎琛$畻娉曘?傛湁浜哄彲鑳戒細璇村畠浣跨敤浜嗚疆璇㈢畻娉曪紝鍥犱负鍦ㄦ湰鍦版祴璇曟椂鎴戜滑缁忓父浼氱湅鍒拌疆璇㈢殑鏁堟灉銆傜劧鑰岋紝浠呬粎渚濋潬杩欑鑲ゆ祬鐨勮瀵熸潵鍥炵瓟閲囪闂鏄瓨鍦ㄩ闄╃殑銆備簨瀹炰笂锛屽拷瑙嗘繁鍏ョ悊瑙f簮浠g爜鍙兘浼氬鑷翠弗閲嶇殑璇В銆傝櫧鐒跺疄璺垫槸澧為暱鐭ヨ瘑鐨勪竴閮ㄥ垎锛屼絾鍦ㄧ湡瀹炵殑鐢熶骇鐜涓紝灏ゅ叾鏄法澶氫釜鏁版嵁涓績閮ㄧ讲鏃讹紝鎴戜滑涓嶈兘绠?鍗曞湴灏嗛棶棰樺綊缁撲负鏈湴闆嗙兢鐨勬祴璇曠幆澧冦?傝幏鍙栨湇鍔″櫒IP锛屾垜浠户缁笂涓?绡囨枃绔狅紝璁ㄨ濡備綍閫夋嫨鏈嶅姟鍣ㄣ?傞噸澶嶆楠ゅ涓嬶細 浠g爜璇█锛?java copy public Texecute(String serviceId, LoadBalancerRequest request, Objecthint) throws IOException { ILoadBalancer loadBalancer = getLoadBalancer (serviceId); }鏈嶅姟鍣?server = getServer(loadBalancer, 鎻愮ず); if (server == null) { throw new IllegalStateException("娌℃湁鍙敤浜?" + serviceId 鐨勫疄渚?; RibbonServerribbonServer = new RibbonServer(serviceId, server, isSecure(server , serviceId), serverIntrospector(serviceId).getMetadata(server));杩斿洖鎵ц锛坰erviceId锛宺ibbonServer锛岃姹傦級锛?} 鑾峰彇璐熻浇鍧囪 鍣?- ZoneAwareLoadBalancer 璁╂垜浠湅涓?涓?getServer 鏂规硶銆傜獊鐒跺嚭鐜拌繖涔堝璐熻浇鍧囪 鍣紝搴旇濡備綍澶勭悊鍛紵杩欐椂鍊欐渶濂界殑鍔炴硶灏辨槸鏌ョ湅鑷姩閰嶇疆锛岀湅鐪嬫敞鍏ヤ簡浠?涔堛?備腑闂寸殑姝ラ浣犱笉鐢ㄥ啀鍘绘壘浜嗭紝鎴戝凡缁忔彁鍓嶆壘鍒颁簡锛屽氨鍦ㄨ繖閲岋細 image杩欏紶鍥惧寘鍚袱涓叧閿俊鎭細绗竴锛屾敞鍏ヤ簡涓?涓狪Rule瑙勫垯锛岀浜岋紝灏咺Rule瑙勫垯搴旂敤鍒颁簡ZoneAwareLoadBalancer涓婅埞鑸跺唴鐨勮礋杞藉钩琛°?傚ソ鐨勶紝鐜板湪鎴戜滑鐭ラ亾鎺ヤ笅鏉ョ殑姝ラ浜嗐?傛帴涓嬫潵鎴戜滑缁х画鏌ョ湅浠g爜璇█锛歫ava澶嶅埗 public Server ChooseServer(Object key) { if (!ENABLED.get() || getLoadBalancerStats().getAvailableZones().size() <= 1) { logger.debug("Zone鎰熺煡閫昏緫宸茬鐢ㄦ垨鍙湁涓?涓尯鍩熲?濓級锛? 杩斿洖 super.chooseServer(key); 鏈嶅姟鍣ㄦ湇鍔″櫒=绌猴紱 try { //绠?鍖栫簿绠?浠g爜 Set availableZones = ZoneAvoidanceRule.getAvailableZones(zoneSnapshot, triggingLoad.get(), triggingBlackoutPercentage.get()); logger.debug("鍙敤鍖哄煙锛歿}", availableZones); if (availableZones != null && availableZones.size() < zoneSnapshot.keySet().size()) { String zone = ZoneAvoidanceRule.randomChooseZone(zoneSnapshot, availableZones); } logger.debug("閫夋嫨鐨勫尯鍩燂細{}", zone); if (zone != null) { BaseLoadBalancer zoneLoadBalancer = getLoadBalancer锛堝尯鍩燂級锛涙湇鍔″櫒 = zoneLoadBalancer.chooseServer(key); } } } catch (Exception e) { logger.error("浣跨敤璐熻浇鍧囪 鍣ㄧ殑鍖哄煙鎰熺煡閫昏緫閫夋嫨鏈嶅姟鍣ㄦ椂鍑洪敊={}", name, e); } //鐪佺暐鍐椾綑浠g爜} 濡傛灉鏄湪鎴戜滑鏈湴鐜锛屼竴鑸細鎵ц绗竴涓猧f鍒嗘敮锛涗絾濡傛灉鏄敓浜х幆澧冿紝閰嶇疆浜嗗涓猺egion锛屽垯浼氭墽琛屼互涓嬪垎鏀?傛垜浠潵鐪嬩竴涓嬨?傛棤Zone閰嶇疆鍦烘櫙鎴戜滑鐪嬬涓?绉嶅満鏅紝鍗虫病鏈塟one鎴栬?呭彧鏈変竴涓猌one鐨勬儏鍐典笅锛岃礋杞藉潎琛¤鍒欐槸濡備綍搴旂敤鐨勩?傛垜浠皢鏌ョ湅鐖惰礋杞藉潎琛″櫒 BaseLoadBalancer 鐨勪唬鐮併?備唬鐮佽瑷?锛歫ava public class BaseLoadBalancer extends AbstractLoadBalancer Implements PrimeConnections.PrimeConnectionListener, IClientConfigAware { private final static IRule DEFAULT_RULE = new RoundRobinRule();鍙椾繚鎶ょ殑 IRule 瑙勫?? = DEFAULT_RULE锛涘叕鍏辨湇鍔″櫒 ChooseServer(Object key) { if (counter == null) { counter = createCounter(); } counter.increment(); if (rule == null) { return null; } } else { 灏濊瘯{ 杩斿洖rule.choose(key); } catch (Exception e) { logger.warn("LoadBalancer [{}]: 涓洪敭 {} 閫夋嫨鏈嶅姟鍣ㄦ椂鍑洪敊", name, key, e);杩斿洖绌哄?硷紱 } } } void initWithConfig(IClientConfig clientConfig, IRulerule, IPing ping, LoadBalancerStats stats) { // 鐪佺暐涓?浜涗唬鐮?setRule(rule); // 鐪佺暐閮ㄥ垎浠g爜}} 杩欓噷鍙互鐪嬪埌鏈変竴涓粯璁ょ殑IRule瑙勫垯鈥斺?擱oundRobinRule锛屼絾鏄笉瑕佸啿鍔紝鍥犱负鎴戜滑鏄疭pring鑷姩鎵樼鐨処Rule 瑙勫垯灏氭湭浣跨敤銆傝繖涔堢畝鍗曠殑杞崲璁粌鏄笉鍙兘鍋氬埌鐨勩?傛垜浠彲浠ョ湅鍒拌繖閲屾湁涓?涓缃?傛垜涔熸姄浣忎簡銆傛渶鍚庢垜浠湅涓?涓嬫垜浠殑ZoneAwareLoadBalancer鐢熸垚鏋勯?犲嚱鏁帮紝鍥犱负鎴戜滑鍦ㄦ敞鍏ョ殑鏃跺?欎細甯﹀叆瑙勫垯銆傜浉鍏充唬鐮佺ず渚嬪涓嬶細 浠g爜璇█锛?java copy public ZoneAwareLoadBalancer(IClientConfig clientConfig, IRule Rule, IPing ping, ServerList serverList, ServerListFilter filter, ServerListUpdater serverListUpdater) { super(clientConfig, Rule, ping, serverList,杩囨护鍣ㄣ?佹湇鍔″櫒鍒楄〃鏇存柊鍣級锛?}杩欓噷锛屽綋鎵ц瓒呯骇鐖剁被鏋勯?犲嚱鏁版椂锛屾渶缁堜細璋冪敤BaseLoadBalancer绫荤殑initWithConfig鏂规硶銆傛垜娌℃湁涓?涓?閬靛惊锛屼絾鏈?缁圸oneAvoidanceRule鐨勮礋杞藉潎琛′唬鐮佷篃鐩稿綋澶嶆潅銆備絾鏄紝鎮ㄥ彲浠ュ皢鍏惰涓虹被浼间簬娌℃湁鍖哄煙鐨勮疆璇€?傞厤缃鍖哄煙鎯呭喌 鍦ㄦ闃舵锛岀▼搴忓皢鎵ц绗簩涓垎鏀?傚叾瀹炰富瑕佷唬鐮佸涓嬶細 浠g爜璇█锛歫ava Copy String zone = ZoneAvoidanceRule.randomChooseZone(zoneSnapshot, availableZones);if (zone != null ) { BaseLoadBalancer zoneLoadBalancer = getLoadBalancer(zone); } server = zoneLoadBalancer.chooseServer(key);} 鐩殑浠嶇劧鏄?夋嫨鏈嶅姟鍣紝浣嗕粎闄愪簬褰撳墠鍖哄煙銆傝繖閮ㄥ垎鐨勮缁嗚璁轰笉鍐嶈禈杩帮紝鍥犱负涓嬮潰鐨勬柟娉曢兘鏄痁oneAvoidanceRule鐨勮礋杞藉潎琛$畻娉曚唬鐮併?傚浣曢厤缃叾浠栫畻娉?杩欑鎯呭喌涓嬶紝濡傛灉鎴戞兂浣跨敤鍏朵粬璐熻浇鍧囪 绠楁硶鏉ヤ?f浛褰撳墠鐨勮礋杞藉潎琛$畻娉曪紝搴旇濡備綍閰嶇疆鍛紵瀹為檯涓婂彲浠ユ煡鐪嬫敞鍏ョ殑婧愪唬鐮侊紝鏈変袱绉嶆柟娉曞彲浠ュ仛鍒拌繖涓?鐐广?傞鍏堬紝鎮ㄥ彲浠ラ?氳繃鍦ㄩ厤缃被涓坊鍔犻厤缃」鏉ユ寚瀹氭墍闇?鐨勮礋杞藉潎琛$畻娉曘?備唬鐮佽瑷?锛歫ava copy if (this.propertiesFactory.isSet(IRule.class, name)) { return this.propertiesFactory.get(IRule.class, config, name);} 鏈湴閰嶇疆 杩欓噷鍙互鐪嬪埌鎴戜滑涔熶娇鐢ㄤ簡閰嶇疆file 鏉ラ厤缃紝浣嗘槸閰嶇疆鏂囦欢鐨勬柟寮忓彲浠ヨ鎴戜滑閫夋嫨鏈湴寰湇鍔¤礋杞藉潎琛°?傛垜浠厛鐪嬩竴涓嬫簮鐮侊細 浠g爜璇█锛歫ava copy public PropertiesFactory() { classToProperty.put(ILoadBalancer.class, "NFLoadBalancerClassName"); classToProperty.put(IPing.class, "NFLoadBalancerPingClassName"); classToProperty.put(IRule .class, "NFLoadBalancerRuleClassName"); classToProperty.put(ServerList.class, "NIWSServerListClassName"); classToProperty.put(ServerListFilter.class, "NIWSServerListFilterClassName"); } public boolean isSet(Class clazz, String name) { return StringUtils.hasText (getClassName(clazz, name)); }璋冪敤鐗瑰畾寰湇鍔℃椂锛屽彲浠ユ牴鎹渶瑕佷娇鐢ㄧ浉搴旂殑璐熻浇鍧囪 绛栫暐閰嶇疆application.yml鏂囦欢銆備唬鐮佽瑷?: yaml copy #璋冪敤鐨勫井鏈嶅姟鍚嶇О mall-order:ribbon: #鎸囧畾浣跨敤Nacos鎻愪緵鐨勮礋杞藉潎琛$瓥鐣?浼樺厛璋冪敤鍚屼竴闆嗙兢鐨勫疄渚嬶紝鍩轰簬闅忔満鍜屾潈閲? NFLoadBalancerRuleClassName:com.alibaba.cloud銆傜撼绉戞柉銆傚湪鍏ㄥ眬鎯呭喌涓嬶紝ribbon.NacosRule 鐨勫叏灞?閰嶇疆鏇村姞绠?鍗曘?傚彲浠ヨ瀵熷埌鑷姩娉ㄥ叆鏃朵娇鐢ㄤ簡@ConditionalOnMissingBean娉ㄨВ銆傚鏋滄垜浠湪Spring涓墜鍔ㄥ姞杞藉搴旂殑bean锛岃繖涓敞瑙e皢涓嶄細鐢熸晥銆備唬鐮佽瑷?锛?java copy @Bean public IRuleribbonRule() { // 鎸囧畾浣跨敤Nacos鎻愪緵鐨勮礋杞藉潎琛$瓥鐣ワ紙浼樺厛璋冪敤鍚屼竴闆嗙兢鐨勫疄渚嬶紝鍩轰簬闅忔満鏉冮噸锛?return new NacosRule();寰堢畝鍗曪紝閭d箞灏辨槸杩欐牱浜嗭紝鍏跺疄鎴戜滑涔熷彲浠ヨ嚜瀹氫箟涓?涓瓥鐣ャ?傛瘯绔燂紝鎸夌収涓婁竴绡囧鍒朵簡鍥哄畾鐨勫疄鐜版柟娉曞悗锛屼粎浠呭湪瀹炵幇鏂规硶涓紪鍐欒嚜宸辩殑涓氬姟閫昏緫鏄笉澶熺殑銆傝嚜瀹氫箟绛栫暐 鐪嬫潵瀹炵幇鍏?浠栬礋杞藉潎琛$畻娉曠瓥鐣ユ湁鍑犱釜鍏抽敭鐐广?傞鍏堥渶瑕佺户鎵緼bstractLoadBalancerRule鐖剁被骞跺疄鐜板叾鎶借薄鏂规硶銆傛帴涓嬫潵锛屾垜浠氨鍙互寮?濮嬬紪鍐欐垜浠殑瀹炵幇浠g爜浜嗭細 浠g爜璇█锛?java copy @Slf4jpublic class XiaoYuRandomWithWeightRule extends AbstractLoadBalancerRule { @Override public Server choice(Object key) { //杩欓噷鍙互瀹炵幇鑷繁鐨勯?昏緫 return server; } } @Override public void initWithNiwsConfig(IClientConfig clientConfig) { }}OK锛屽墿涓嬬殑灏辨槸鎸夌収鏈湴閰嶇疆鎴栬?呭叏灞?閰嶇疆鏉ヨ鎴戜滑鐨勮鍒欑敓鏁堜簡銆傝繖閲屼粎鎻忚堪绠楁硶瑙勫垯鐨勯厤缃拰瀹氬埗鏂规硶銆備簨瀹炰笂锛岃礋杞藉潎琛″櫒鐨勬搷浣滄槸绫讳技鐨勩?傛澶勪笉鍐嶉噸澶嶆紨绀恒?備粖澶╂?荤粨涓?涓嬶紝鎴戜滑涓昏琛ュ厖浜嗕笂涓?绔犲井鏈嶅姟閫氫俊鐨勫唴瀹癸紝骞舵繁鍏ヨ璁轰簡璐熻浇鍧囪 绠楁硶鐨勯噸瑕佹?с?傛垜浠鍏堣缁嗚璁轰簡Ribbon榛樿浣跨敤鐨勮礋杞藉潎琛$畻娉曘?傝櫧鐒跺湪鏈湴娴嬭瘯鏃跺彲浠ヨ瀵熷埌鎶曠エ鐨勬晥鏋滐紝浣嗕粎浠呬緷闈犺繖绉嶈〃闈㈢殑瑙傚療鏄笉澶熺殑銆傚湪鐪熷疄鐨勭敓浜х幆澧冧腑锛屽挨鍏舵槸璺ㄥ涓暟鎹腑蹇冮儴缃叉椂锛岃礋杞藉潎琛$瓥鐣ョ殑閫夋嫨闇?瑕佹洿娣卞叆鐨勭悊瑙e拰鍒嗘瀽銆傛垜浠繘涓?姝ュ垎鏋愪簡濡備綍閫氳繃閰嶇疆鍜屽畾鍒惰礋杞藉潎琛¤鍒欐潵鐏垫椿搴斿鍚勭鍦烘櫙銆傛棤璁烘槸鏈湴閰嶇疆杩樻槸鍏ㄥ眬閰嶇疆锛屾垜浠兘鍙互鏍规嵁鍏蜂綋闇?姹傝皟鏁磋礋杞藉潎琛¤涓恒?傚悓鏃讹紝鎴戜滑灞曠ず浜嗗浣曢?氳繃鑷畾涔夌畻娉曟墿灞昍ibbon鐨勮礋杞藉潎琛¤兘鍔涳紝浠ユ洿濂藉湴閫傚簲鐗瑰畾涓氬姟鍦烘櫙鐨勯渶姹傘?傚湪鎺ヤ笅鏉ョ殑绔犺妭涓紝鎴戜滑灏嗘繁鍏ョ爺绌?OpenFeign 缁勪欢銆傛垜浠殑閲嶇偣灏嗘槸濡備綍璁╁紑鍙戜汉鍛樻洿鍔犲叧娉ㄤ笟鍔¢?昏緫浠g爜锛岃?屼笉鏄杩鐞嗕笌 RPC 璋冪敤鐩稿叧鐨勭箒鐞愮粏鑺傘?傛垜鏄皬瀹囷紝涓?鍚嶅嫟濂嬬殑Java鏈嶅姟鍣ㄧ▼搴忓憳锛岃嚧鍔涗簬鐮旂┒AI鎶?鏈殑濂ョ銆傛垜鐑埍鎶?鏈氦娴佸拰鍒嗕韩锛屽寮?婧愮ぞ鍖哄厖婊$儹鎯呫?備粬杩樻槸鏉板嚭鐨勬帢閲戜綔鑰呫?佽吘璁簯鍐呭鑱斿悎鍒涗綔鑰呫?侀樋閲屼簯涓撳鍗氫富銆佸崕涓轰簯浜戝垎浜笓瀹躲??馃挕鎴戜細姣笉鐘硅鲍鍦板垎浜垜涓汉鍦ㄦ妧鏈亾璺笂鐨勬帰绱㈠拰缁忛獙锛屽笇鏈涜兘缁欎綘鐨勫涔犲拰鎴愰暱甯︽潵涓?浜涘惎鍙戝拰甯姪銆?馃専娆㈣繋鍏虫敞鍔姏鐨勫皬瀹囷紒 馃専
站长声明
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件
举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
相关文章
-
雷锋网消息,2020年12月2日,根据工信部此前发布的相关规定,自12月起1、2020年,电信企业必须在物理渠道全面落实肖像比对技术措施。 只有画像一致才能完成入网手续。 而且,自即日起,电信公司自有营业厅必须向用户提供查询其名下手机号码的服务,对用户有异议的手机号码应立
06-18
-
北京市石景山区设立总规模30亿元的现代创新产业基金。 据投资界7月6日消息,石景山区宣布设立总规模30亿元的现代创新产业基金。 通过科学引导,推动区域内以科技服务、数字创意、新一代信息技术为特色的现代金融主导产业发展,支持“1”高精尖产业发展,生态环保、城市更新等
06-18
-
投资圈(ID:pedaily)7月15日消息,据36氪报道,企业级RPA软件公司UiPath宣布,已完成2.25亿美元E轮融资。 由 Alkeon Capital Management 领投,投资者包括 Accel、Coatue、Dragoneer、IVP、Madrona Venture Group、红杉资本、腾讯投资、Tiger Global 和 Wellington。 本轮融
06-18
-
在人类发展史上,生产力更替是人类社会不断进步的支柱。 随着人工智能等先进技术的广泛应用,第四次工业革命的号角已经吹响。 同时,当前消费者对个性化产品的需求强烈,导致生产需要从大批量同质化转向小批量、多品种柔性生产。 新一轮工业革命,制造业生产线升级势在必行,
06-18
-
据投资界(ID:pedaily)11月5日消息,据36氪报道,Tripalink北美青年长租公寓品牌完成3000万美元B+轮融资,由Conductive Ventures和Altos Ventures共同领投,Assurant Ventures、Calin SJG Fund、K2VC、Tekton跟投风险投资。 Preferred Bank也参与了本轮投资。 截至目前,T
06-18
-
8月12日,《投资界》公布了中国权威人物评选的“投资行业最佳投资人”名单。 华琼基金的创始人、董事长张扬榜上有名。 人物名单。 “投资行业杰出投资人”投资者榜评选已连续五年举办。 自正式启动以来,今年的评选吸引了数千名早期投资人、VC、PE和战略投资者的积极参与。 投
06-17
-
3月21日,Kyligence(上海久智信息科技有限公司)宣布完成7000万美元D轮融资。 本轮融资由浦发国际领投,中金资本旗下基金、歌斐资管、国方资本、ASG、鸿兆基金、浦信资本及原股东红点中国、耀明资本、顺为资本等跟投。
06-18
-
如何庆祝七夕肯定是大家最近最困扰的问题。 怎样才能有意义、划算、深刻呢?作为中国第一智能手机品牌,vivo推出了七夕最强策略。 只需四招,瞬间让你成为最强七夕达人!点击领取最佳礼物——终极品遇终极促销 3GB存储版vivo X5Max+、全球首款2K屏顶级旗舰vivo Xplay3S、只剩
06-17
-
自从2017年Shazam被苹果收购后,它就成为了苹果旗下的免费服务。 它以 Apple Music 为后盾,内置数万首歌曲。 在iPhone和iPad的控制中心,Mac用户如果想用它来识别歌曲,需要先安装软件,但无论如何,Shazam是寄生在苹果身上的,至少他们不用再担心盈利模式了。 近日,Shazam
06-21
-
今天,转转集团发布《年度二手交易服务白皮书》。 数据显示,转转集团服务GMV同比增长111%,集团营收同比增长229%。 生长%; 3C数码B2C业务支付订单量同比增长0.2%;全年机检服务订单量同比增长0.04%。
06-18
-
投资界(ID:pedaily)据2月9日消息,中国齿科中游整合+创新的新生力量国药齿科宣布完成A轮融资。 本轮融资由华兴资本旗下华兴新经济基金领投,德通资本跟投。 华兴资本担任本轮融资独家投资方。 完成新一轮融资后,国药齿科将加大中游渠道整合投入,打造中国DSO模式下的业务
06-17
-
Tech星球*了解到,字节旗下多个部门加大了AI产品研发投入,成果已陆续落地,其中包括抖音电商、海量引擎等业务部门,其中最为活跃的Flow部门不仅会推出豆袋、按钮等AI产品,还将推出AI角色互动APP“Talking Room”和一款可能是图片的AI产品“PicPic”。 另据消息,人士透露,
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用