月銷過萬的國民小車換裝6AT 能否再一次引發爆款?

競品車型從定價上看,長安逸動的競品車型有非常多,畢竟這個價位區間的自主品牌緊湊型轎車特別多。帝豪GL指導價格:7。88-11。38萬艾瑞澤5指導價格:5。89-9。79萬海馬福美來指導價格:6。18-11。89萬長安逸動的優勢在於擁有兩廂版本與三廂版本兩種選擇餘地,可以滿足不同消費訴求的潛在買家,而兩廂版本的逸動XT說真的還是蠻多年輕人喜歡的類型。



有那麼一款車,在已經過去的十一個月平均銷量達到1.3萬台,它有着緊湊簡潔的外觀設計,也有着三廂版本與兩廂車型的區分,以此滿足不同胃口消費者的需求,它的動力總成表現平平,但平實好用,它叫長安逸動。

如今,長安逸動的下線產量已經突破300萬輛大關,而這個傲人的数字就由換裝愛信6AT變速箱的新款長安逸動來完成。搭載了全新傳動系統的逸動,將有怎樣的表現?

長安逸動

指導價格:8.99-10.39萬(1.6L 6AT版本)

由於僅僅是傳動系統的升級,長安逸動的外觀和內飾設計上並沒有什麼變化,包括車身三圍尺寸都於現款車型一模一樣,依舊維持了一種簡潔時尚的外觀造型。

長安逸動高銷量的原因也來自於較為用心質感出色的內飾裝配工藝,大量的軟質搪塑材料包裹,而且觸感較為細膩,整車內飾也會顯得高檔感比較出色。

作為最大的改動部分,愛信6AT的注入無疑是長安逸動新車上市的重頭戲,相較於之前較老式的4AT變速箱,6AT的變速箱理論上會更加省油而且也將汽車性能提升一個層級。發動機的參數沒有變化,依舊是最大馬力128匹,峰值扭矩168牛米的1.6L直噴發動機。

競品車型

從定價上看,長安逸動的競品車型有非常多,畢竟這個價位區間的自主品牌緊湊型轎車特別多。

帝豪GL

指導價格:7.88-11.38萬

艾瑞澤5

指導價格:5.89-9.79萬

海馬福美來

指導價格:6.18-11.89萬

長安逸動的優勢在於擁有兩廂版本與三廂版本兩種選擇餘地,可以滿足不同消費訴求的潛在買家,而兩廂版本的逸動XT說真的還是蠻多年輕人喜歡的類型。

以往的逸動只有手動和4AT的版本選擇,在市場反應中並不會顯得優勢明顯,而這次長安十分聰明的避開了雙離合的選擇而採用6AT,或許會讓一部分對於雙離合變速箱的潛在車主感到放心。

對於該車的購買建議是,可以考慮直接上到最頂配,10.39萬的售價並不會顯得太貴,長安的品控和做工對得起這個價格,而且在配置上,頂配逸動在無鑰匙進入、一鍵啟動、天窗、真皮多功能方向盤,自動泊車、EpS电子助力轉向、ESC車身穩定系統等科技配置裝配程度比較齊全。以上配置當然其他細分車型也有一部分搭載,但是頂配是絕對配置完善的版本。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

※別再煩惱如何寫文案,掌握八大原則!

國產車你們真是夠了…逼得洋品牌無路可走

這是一個悲傷的故事合資品牌:國產車。你真夠了為什麼你們的設計越來越漂亮。家族式設計語言已經遍及各個車企在顏值方面雖說比較主觀但國產車的顏值普遍很高為什麼你們價低配置還比我們高。高性價比是國產車所主打的更能吸引消費者的關注為什麼你們動力越來越強了。

“國產車,你夠了”

相信這是眾多合資車型的心聲

很多年以前

我們買車的選擇很少!

合資車型來來去去

消費者都偏向於選擇那幾輛神車

像緊湊型轎車:捷達、卡羅拉

中型車:帕薩特、雅閣、凱美瑞

SUV:CRV、途觀等一系列的車型

直到今天

雖然合資車型的選擇很多

但是…

消費者選擇的車型

從每月銷量榜單就能看出來

賣得好的來來去去都是那幾輛

賣不好的車型基本都在底層掙扎

時代在進步,社會在發展

這一個囧況已經發生了改變

如同雨後竹筍那般

近幾年國產品牌集體發力

毛主席說過

星星之火可以燎原

於是…

這是一個悲傷的故事

合資品牌:國產車!你真夠了

為什麼你們的設計越來越漂亮!

家族式設計語言已經遍及各個車企

在顏值方面雖說比較主觀

但國產車的顏值普遍很高

為什麼你們價低配置還比我們高!

高性價比是國產車所主打的

更能吸引消費者的關注

為什麼你們動力越來越強了!

越來越多的自主發動機現身市場

在同排量的發動機下

自主發動機已經向合資發動機靠齊

但依舊存在一定的差距

發動機與變速箱的匹配依舊要加把勁

為什麼你們的質量越來越好了!

在整體水平上

近幾年國產車有了較大的飛躍

這包括質量上的進步

當然相比合資車型來說

國產車型的故障率會高一點

另外國產與合資的差距

主要表現在售後方面

這是國產品牌4S店急需改進的地方

國產車做得越來越好

對於我們也是好處多多!

國產車能打破合資車的垄斷

首先我們再也不需要總買合資品牌了

車型可選性越來越多

日後車型的配置越來越豐富

汽車的價格越做越便宜

這是眾多消費者最希望看到的東西本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

開發內容分解的9個角度

在開發工作中,我們常常要將整體的開發內容分解成一些較小的部分,分而治之。 原因不限於以下幾種:

  • 分解和抽象使得開發內容更容易被理解。
  • 可以將分解后的開發內容分配給多人開發。
  • 分解后的開發時間更容易估算,進度更易於衡量,有利於做計劃。

古人說“橫看成嶺側成峰”,意指從不同的角度觀察事物時會得到不同的抽象。開發工作與之類似,當開發者從不同的角度進行分解工作時,會對開發內容產生不同的理解,因此分解后得出的產物可能也並不相同。從哪些角度對開發內容的分解才是最優的?這往往沒有固定的答案,要由分解的目的決定。下面會介紹9種常見分解角度。

 

本文鏈接:https://www.cnblogs.com/hhelibeb/p/13070646.html

轉載請註明

形式與結構

形式與結構,指的是開發內容中全部的開發對象,以及它們之間的關係。比如,一個客戶信用檢查程序可能包含表、視圖、鎖對象、接口、類等一些開發對象,它們之間會存在一定的連接關係。

從這個角度分解的優點在於它十分具體,有一些屬性可以通過求和直接得到,例如,表和字段的數量意味着要增加多少種存儲信息。

對形式的分析也可以提示開發者將連接關係較多的東西歸為一組,如果把它們分解到不同的地方,可能會導致複雜度增加,需要很多額外的工作來傳遞信息,對開發內容的分析和理解將變得困難。

功能

形式代表了靜態存在的對象,而功能是指它們能做什麼。功能是開發工作的價值體現。

一般來說,程序的命名即可提現它的功能。比如“供應商信用檢查程序”顯然指出了程序的功能是檢查供應商的信用。如果將這個程序從功能角度分解,可以分解為設定信用額度的功能、計算佔用額度的功能、集成到付款/採購流程的功能、從外部系統查詢供應商信用的功能等。

按功能分解開發對象是最直觀的分解方式之一,它有助於開發者從系統整體層面思考問題。比如,如果要考慮程序的性能問題,從功能角度的分解可以讓人分析各個子功能的性能如何、它們集成到一起時有可能發生什麼問題。又比如,如果要增加一個“黑名單/白名單”子功能的話,我們可以從功能角度審視這一新功能對其它各個子功能產生何種影響。

設計的自由度

如果能把緊密耦合的對象歸為一個模塊,並使之與外界盡可能的隔離,就能在模塊內部得到更大的自由度。

這裏以abap-data-validator為例,該項目的每個檢查規則都位於單獨的類中,這些類實現了同一個接口ZIF_ADV_CHECK,如下圖。這使得每個類的開發者不需要與其它類的開發者共享任何信息,可以在自己負責的類中任意發揮,實現功能。而ZIF_ADV_CHECK約束了這些類,使它們遵循相同的檢查接口約定。

 

另一種思路是把這些檢查功能都放置在同一個類中,用不同的類方法實現它們,如下圖。顯而易見,這樣做的好處是降低了總體複雜度(方法數不變,類減少為1個),缺點是不同的方法會共享類的信息,有可能出現一些跨方法的東西,這會降低設計的自由度。對檢查接口的約束也成為了一種隱式的規則,這會增大開發者的心智負擔,容易產生誤解。

 

 

這兩種做法沒有絕對的優劣,abap-data-validator選擇了前者,是因為開發者在經過權衡后認為,為了讓社區的同行方便地增加自己的新的檢查規則,付出增加一定的複雜度的代價是可以接受的。雖然到目前為止尚還沒有人給這個項目貢獻新規則。

程序的進化

程序的功能通常有不斷增加的趨勢 ,我們把功能增加的過程稱為進化。從進化的角度進行分解時,開發者需要考慮如何讓新舊功能方便地結合。以創建採購訂單的程序為例,如果考慮到程序未來會有對訂單進行其它檢查的需求,那麼就要分解出單獨的檢查模塊,並提供接口。這樣的話,如果要增加供應商信用檢查功能,那麼只要通過這個接口來實現就好。從進化角度的分解可以讓程序在在進化中保持架構的穩定。

系統間的集成

系統間集成的工作常常會出現很多誤解,因為系統間通常只靠接口交流,其它信息完全是隱藏的。未知帶來了思維盲區和錯誤假設。我之前也寫過博客感慨這類工作的不易(《 關於
接口開發和聯調的一些感想 》)。 從集成角度分解開發內容時,一個重要目標是盡可能
避免誤解。這要求,

  • 接口要易於測試。這樣可以增加接口的可信度,測試也有利於人們理解接口的功能。
  • 接口的表面複雜度要低。這意味着要對接口內部進行分解,將複雜度轉移到下層,或者將某些副作用轉移到接口之外的其它地方。

技術更新

我們時常需要使用新技術替換舊技術,這會為我們帶來功能、性能或者KPI上的收益。從技術更新的角度考慮開發內容的分解時,就要把特定技術相關的部分分離,從而使得在不影響其它部分的情況下將技術變化,或者讓新舊技術可以同時運行,逐步替換舊技術。

銷售

有時,出於營銷與銷售的目的,程序的某些特性需要可以組合、開關、調節、修飾。這時,開發者需要從銷售的角度思考開發內容的分解,做出可定製的程序,滿足銷售的目的。

投資

對於老闆們來說,開發是一項針對未來的投資。他們預先支付薪水,接着期望開發者們交付的東西能幫助公司節約開支、獲取收入。他們的心中可能存在一個簡單公式,用來衡量程序開發工作的意義:

利潤 = 收入 – 費用

付給開發人員的錢可以被看做費用,那麼,收入在哪裡?分解開發內容時,要注意分解后的模塊可以在一定的投資下產生價值,並且需要論證如果有後續投資的話可以產生更多價值。否則老闆們可能會認為把開發人員裁掉才是更經濟的選擇。

組織架構

康威定律指出:

設計系統的架構受制於產生這些設計的組織的溝通結構。

就像程序模塊間存在信息傳遞的問題一樣,不同的團隊之間的溝通也會存在問題。程序的分解應該和組織形成匹配的關係,這樣可以避免一些額外的工作和糟糕的結果。

以上文提到過的為例,開源社區的開發成員之間只有鬆散的連接關係,因此,如果該項目的目標是讓社區成員參与開發,那麼就要盡可能地減少檢查類之間的共享信息,選取第一種分解方式。如下圖,

反之,如果這完全是個內部項目,由單人開發,且完成後接口幾乎不會發生變化,那麼第二種分解方式可能更為合適。如下圖,

總結

本文介紹了開發內容分解的9個角度,這些角度在具體的實踐中可能有重合或者衝突。從不同的角度考慮分解工作可以讓我們產生不同的理解,更全面地審視自己的工作。但要注意的是分解並非越多越好,比如在設計自由度中我們提到分解導致的複雜度增加也會成為代價。要從整體考慮和觀察開發內容,選取合適的角度。本文也沒有涵蓋所有的分解角度。

  本文的主要思想來自於《 系統架構》,結合了個人的一些開發實踐,有興趣了解更多的話可以看這本書。                       本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

15萬級跑得最快的自主SUV新款還降價了?買哪款合適?

0T版本則採用的是6速雙離合。有趣的是,1。5T採用7速雙離合,2。0T採用的是6速雙離合,這種做法倒與同是上汽出品的榮威RX5一樣。細分車型分析2017款銳騰的全系指導定價為9。88-16。88萬,而上一款的銳騰定價為10。97-17。97萬,整體售價門檻降低,而新增的全系標配的LED日間行車燈,車內後排出風口等配置,可以說MG銳騰此次經歷的是一個“降價增配”的中期改款。

MG 銳騰

一台家用車的百公里加速時間在10秒左右,那是比較正常的數值,而如果一台車的百公里加速時間在8秒內,可以說它的性能不容小覷,而如果一台車的加速時間在8秒內,還是一台自主品牌車型,更是一台SUV;它是誰?它是今天的主角—MG銳騰。

2017款的MG銳騰已經在近期上市,作為MG品牌下的首款SUV,中期改款后的它有什麼特點?不妨接着往下看看。

MG銳騰

指導價格:9.88-16.88萬(2017款)

2017款MG銳騰儘管是中期改款,但是改動幅度還是相對較大的,首先採用了面積更大的前進氣格柵,視覺效果上更加囂張,用全系標配的縱置LED日間行車燈替代了前霧燈;並且予以類似導風口的運動包圍裝飾。車尾的下包圍設計與前臉處相呼應,線條更加飽滿,將運動風格貫徹全車。

可以看出MG銳騰的設計風格將車輛的視覺效果營造得更加動感,但是小編個人覺得,MG未來會投產的一款小型SUV採用的大面積進氣格柵或許會更加好看,你們覺得呢?

內飾也讓設計師“動過刀”,融入了一定金屬風格的內飾看上去更加精緻,後排座椅出風口變為全系標配,這一點,必須要表揚一下,我一直在強調,後排出風口的搭載,不僅僅是提升了整車的檔次感,更是一定程度上照顧了後排乘客的需求。

動力層面新款銳騰沒有太多變化,採用的是1.5T和2.0T兩款渦輪增壓發動機,前者最大馬力169匹,峰值扭矩250牛米,後者最大馬力220匹,峰值扭矩350牛米;1.5T的發動機採用的是6速手動或者7速雙離合變速箱,而2.0T版本則採用的是6速雙離合。

有趣的是,1.5T採用7速雙離合,2.0T採用的是6速雙離合,這種做法倒與同是上汽出品的榮威RX5一樣。

細分車型分析

2017款銳騰的全系指導定價為9.88-16.88萬,而上一款的銳騰定價為10.97-17.97萬,整體售價門檻降低,而新增的全系標配的LED日間行車燈,車內後排出風口等配置,可以說MG銳騰此次經歷的是一個“降價增配”的中期改款。

由於售價9.88萬的最低配手動都市版沒有國人關注的ESp,所以不做推薦。小編個人推薦購買的是20T(1.5T)12.88萬的自動豪華版和13.88萬的自動尊享版。

一萬元的差距在於:無鑰匙進入和點火系統、定速巡航、主駕駛電動座椅調節、座椅加熱、自動頭燈、電動后視鏡摺疊這類便利性配置。是否選擇,就看你是否真心需要了。

MG銳騰的定位瞄準的消費人群是年輕一代的消費群體,MG的品牌源自於英國,但現在全部歸於上汽集團所有,作為品牌旗下的首款SUV,本次中期改款的感動幅度還算是比較大,而且增加了很實用的配置,性價比進一步提高。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

不只Apple碳中和全球頂尖企業都靠這個建立市場區隔

環境資訊中心綜合外電;姜唯編譯;林大利審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

小師妹學JavaIO之:NIO中Channel的妙用

目錄

  • 簡介
  • Channel的分類
    • FileChannel
    • Selector和Channel
    • DatagramChannel
    • SocketChannel
    • ServerSocketChannel
    • AsynchronousSocketChannel
  • 使用Channel
  • 總結

簡介

小師妹,你還記得我們使用IO和NIO的初心嗎?

小師妹:F師兄,使用IO和NIO不就是為了讓生活更美好,世界充滿愛嗎?讓我等程序員可以優雅的將數據從一個地方搬運到另外一個地方。利其器,善其事,才有更多的時間去享受生活呀。

善,如果將數據比做人,IO,NIO的目的就是把人運到美國。

小師妹:F師兄,為什麼要運到美國呀,美國現在新冠太嚴重了,還是待在中國吧。中國是世界上最安全的國家!

好吧,為了保險起見,我們要把人運到上海。人就是數據,怎麼運過去呢?可以坐飛機,坐汽車,坐火車,這些什麼飛機,汽車,火車就可以看做是一個一個的Buffer。

最後飛機的航線,汽車的公路和火車的軌道就可以看做是一個個的channel。

更多精彩內容且看:

  • 區塊鏈從入門到放棄系列教程-涵蓋密碼學,超級賬本,以太坊,Libra,比特幣等持續更新
  • Spring Boot 2.X系列教程:七天從無到有掌握Spring Boot-持續更新
  • Spring 5.X系列教程:滿足你對Spring5的一切想象-持續更新
  • java程序員從小工到專家成神之路(2020版)-持續更新中,附詳細文章教程

簡單點講,channel就是負責運送Buffer的通道。

IO按源頭來分,可以分為兩種,從文件來的File IO,從Stream來的Stream IO。不管哪種IO,都可以通過channel來運送數據。

Channel的分類

雖然數據的來源只有兩種,但是JDK中Channel的分類可不少,如下圖所示:

先來看看最基本的,也是最頂層的接口Channel:

public interface Channel extends Closeable {
    public boolean isOpen();
    public void close() throws IOException;

}

最頂層的Channel很簡單,繼承了Closeable接口,需要實現兩個方法isOpen和close。

一個用來判斷channel是否打開,一個用來關閉channel。

小師妹:F師兄,頂層的Channel怎麼這麼簡單,完全不符合Channel很複雜的人設啊。

別急,JDK這麼做其實也是有道理的,因為是頂層的接口,必須要更加抽象更加通用,結果,一通用就發現還真的就只有這麼兩個方法是通用的。

所以為了應對這個問題,Channel中定義了很多種不同的類型。

最最底層的Channel有5大類型,分別是:

FileChannel

這5大channel中,和文件File有關的就是這個FileChannel了。

FileChannel可以從RandomAccessFile, FileInputStream或者FileOutputStream中通過調用getChannel()來得到。

也可以直接調用FileChannel中的open方法傳入Path創建。

public abstract class FileChannel
    extends AbstractInterruptibleChannel
    implements SeekableByteChannel, GatheringByteChannel, ScatteringByteChannel

我們看下FileChannel繼承或者實現的接口和類。

AbstractInterruptibleChannel實現了InterruptibleChannel接口,interrupt大家都知道吧,用來中斷線程執行的利器。來看一下下面一段非常玄妙的代碼:

protected final void begin() {
        if (interruptor == null) {
            interruptor = new Interruptible() {
                    public void interrupt(Thread target) {
                        synchronized (closeLock) {
                            if (closed)
                                return;
                            closed = true;
                            interrupted = target;
                            try {
                                AbstractInterruptibleChannel.this.implCloseChannel();
                            } catch (IOException x) { }
                        }
                    }};
        }
        blockedOn(interruptor);
        Thread me = Thread.currentThread();
        if (me.isInterrupted())
            interruptor.interrupt(me);
    }

上面這段代碼就是AbstractInterruptibleChannel的核心所在。

首先定義了一個Interruptible的實例,這個實例中有一個interrupt方法,用來關閉Channel。

然後獲得當前線程的實例,判斷當前線程是否Interrupted,如果是的話,就調用Interruptible的interrupt方法將當前channel關閉。

SeekableByteChannel用來連接Entry或者File。它有一個獨特的屬性叫做position,表示當前讀取的位置。可以被修改。

GatheringByteChannel和ScatteringByteChannel表示可以一次讀寫一個Buffer序列結合(Buffer Array):

public long write(ByteBuffer[] srcs, int offset, int length)
        throws IOException;
public long read(ByteBuffer[] dsts, int offset, int length)
        throws IOException;

Selector和Channel

在講其他幾個Channel之前,我們看一個和下面幾個channel相關的Selector:

這裏要介紹一個新的Channel類型叫做SelectableChannel,之前的FileChannel的連接是一對一的,也就是說一個channel要對應一個處理的線程。而SelectableChannel則是一對多的,也就是說一個處理線程可以通過Selector來對應處理多個channel。

SelectableChannel通過註冊不同的SelectionKey,實現對多個Channel的監聽。後面我們會具體的講解Selector的使用,敬請期待。

DatagramChannel

DatagramChannel是用來處理UDP的Channel。它自帶了Open方法來創建實例。

來看看DatagramChannel的定義:

public abstract class DatagramChannel
    extends AbstractSelectableChannel
    implements ByteChannel, ScatteringByteChannel, GatheringByteChannel, MulticastChannel

ByteChannel表示它同時是ReadableByteChannel也是WritableByteChannel,可以同時寫入和讀取。

MulticastChannel代表的是一種多播協議。正好和UDP對應。

SocketChannel

SocketChannel是用來處理TCP的channel。它也是通過Open方法來創建的。

public abstract class SocketChannel
    extends AbstractSelectableChannel
    implements ByteChannel, ScatteringByteChannel, GatheringByteChannel, NetworkChannel

SocketChannel跟DatagramChannel的唯一不同之處就是實現的是NetworkChannel借口。

NetworkChannel提供了一些network socket的操作,比如綁定地址等。

ServerSocketChannel

ServerSocketChannel也是一個NetworkChannel,它主要用在服務器端的監聽。

public abstract class ServerSocketChannel
    extends AbstractSelectableChannel
    implements NetworkChannel

AsynchronousSocketChannel

最後AsynchronousSocketChannel是一種異步的Channel:

public abstract class AsynchronousSocketChannel
    implements AsynchronousByteChannel, NetworkChannel

為什麼是異步呢?我們看一個方法:

public abstract Future<Integer> read(ByteBuffer dst);

可以看到返回值是一個Future,所以read方法可以立刻返回,只在我們需要的時候從Future中取值即可。

使用Channel

小師妹:F師兄,講了這麼多種類的Channel,看得我眼花繚亂,能不能講一個Channel的具體例子呢?

好的小師妹,我們現在講一個使用Channel進行文件拷貝的例子,雖然Channel提供了transferTo的方法可以非常簡單的進行拷貝,但是為了能夠看清楚Channel的通用使用,我們選擇一個更加常規的例子:

public void useChannelCopy() throws IOException {
        FileInputStream input = new FileInputStream ("src/main/resources/www.flydean.com");
        FileOutputStream output = new FileOutputStream ("src/main/resources/www.flydean.com.txt");
        try(ReadableByteChannel source = input.getChannel(); WritableByteChannel dest = output.getChannel()){
            ByteBuffer buffer = ByteBuffer.allocateDirect(1024);
            while (source.read(buffer) != -1)
            {
                // flip buffer,準備寫入
                buffer.flip();
                // 查看是否有更多的內容
                while (buffer.hasRemaining())
                {
                    dest.write(buffer);
                }
                // clear buffer,供下一次使用
                buffer.clear();
            }
        }
    }

上面的例子中我們從InputStream中讀取Buffer,然後寫入到FileOutputStream。

總結

今天講解了Channel的具體分類,和一個簡單的例子,後面我們會再體驗一下Channel的其他例子,敬請期待。

本文的例子https://github.com/ddean2009/learn-java-io-nio

本文作者:flydean程序那些事

本文鏈接:http://www.flydean.com/java-io-nio-channel/

本文來源:flydean的博客

歡迎關注我的公眾號:程序那些事,更多精彩等着您!

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

8億兒童鉛中毒 聯合國:全球1/3孩子血裡有高濃度鉛

摘錄自2020年7月30日自由時報報導

聯合國與環保組織「Pure Earth」在一份大規模健康危機報告中警告,目前全世界有多達8億兒童正在遭受經由水和空氣感染的「鉛中毒」。聯合國兒童基金會(UNICEF)說明,據估計,每3個孩子就有1個血液中含有高濃度鉛,需採取立即的行動以防止對其神經或生長造成長期傷害。

鉛中毒問題目前在南亞地區極為普遍,可能原因為露天熔礦爐、油漆、汽油等,許多國家的地下鉛管線甚至可能影響飲用水的品質。鉛中毒目前已被證實會影響兒童的行為、認知、說話,進而在長大後可能會有腎臟損害、心血管疾病等問題。

聯合國報告指出,這種毒素主要源於未經回收或處理不善的汽車電池,在一些鉛中毒最為嚴重的國家,汽車數量自2000年開始暴增。

污染治理
國際新聞
鉛中毒
兒童

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

玩轉華為物聯網IoTDA服務系列三-自動售貨機銷售分析場景示例

場景簡介

       通過收集自動售貨機系統的銷售數據,EI數據分析售貨銷量狀況。

        該場景主要描述的是設備可以通過MQTT協議與物聯網平台進行交互,應用側可以到物聯網平台訂閱設備側變化的通知,用戶可以在控制台或通過應用側接口創建數據轉發規則,把設備上報的屬性轉發給其他華為雲服務。

        核心知識點:產品模型、編輯碼插件、訂閱推送、屬性上報、MQTT協議、數據轉發規則。

場景流程

流程解釋:

        

  • 1、創建自動售貨機產品:物聯網平台以產品為粒度管理批量設備。用戶可以通過平台提供的API接口或控制台創建產品。

  • 2、上傳產品模型:產品模型是定義一種設備的基本屬性和命令。產品模型可以通過控制台,也可以導入公共產品庫的模型。該場景沒有編解碼插件,是因為設備是基於安卓操作系統開發的,能夠通過MQTT協議與平台進行交互。

  • 3、批量註冊自動售貨機設備:平台提供了應用側API接口可以註冊設備,也可以通過控制台批量註冊。註冊設備時獲取的設備ID,是設備側與平台交互的唯一標識。

  • 4、創建自動售貨機設備狀態變化的訂閱:售貨管理系統可以在平台創建設備變化的通知訂閱,需要把callback url即應用回調地址傳給平台,平台後續會推送通知到該url。

  • 5、設備建鏈:MQTT設備是指通過MQTT協議,不論是集成了華為IoT Device SDK,還是原生MQTT協議接入,只要是json數據格式傳輸給平台,平台就無需使用編解碼插件。如果是二進制上傳,則需要先做編解碼插件的開發。MQTT是長連接,需要先建鏈才能進行數據傳輸,可以通過安全加密方式8883端口接入(推薦),也可以通過非安全加密方式1883端口接入。

  • 6、推送自動售貨機設備激活通知:平台會根據之前應用訂閱的回調地址,把自動售貨機設備上線的通知類型通過HTTP/HTTPS推送回去。

  • 7、創建數據轉發規則:售貨管理系統可以通過API接口創建規則,也可以通過控制台創建,指定過濾指定的屬性,給指定的通道轉發數據。

  • 8、開通DIS通道/MRS服務:華為公有雲上有豐富的SaaS服務和PaaS服務,供您結合自己的業務需要進行組合使用。DIS服務提供高效採集、傳輸、分發能力,支持多種IoT協議,可以開通該服務,通過IoTDA規則引擎,把自動售貨機設備的數據轉發給DIS,然後再利用諸如MRS服務,實現自動售貨銷量狀況數據分析。

  • 9、自動售貨機屬性上報:設備側可以通過SDK或MQTT原生協議接入平台,屬性上報銷售信息。這裏值得注意的是,設備側上報的數據,是通過屬性上報,與消息上報最大的區別在於是否經過產品模型。屬性上報的內容與格式都要跟產品模型定義保持一致。具體概念介紹可以參閱“物模型”。

  • 10、按規則數據轉發:平台收到設備上報的屬性后,規則引擎會進行過濾(不論屬性還是消息,平台都會做規則過濾),把設定好的屬性值轉發到指定的DIS通道,然後再通過DIS的接口,由MRS去消費DIS的數據,實現對銷量的分析。

最佳實踐

場景說明

物聯網解決方案中,作為數據主體的“物”可能數量會非常大,產生的數據已經無法通過傳統的數據處理服務進行處理。如何分析與利用這龐大的物聯網設備數據對物聯網企業來說又是一個新的挑戰。

華為雲物聯網平台提供規則引擎能力,支持將數據上報的數據轉發至華為雲其他雲服務,可實現將海量數據通過數據接入服務(DIS)轉發至MapReduce服務(MRS),對數據進行處理后再由數據可視化服務(DLV)讀取數據呈現為可視化報表,實現數據的一站式採集、處理和分析。

在本示例中,我們實現下述場景:

自動售貨機每次銷售商品後上報銷售商品種類、數量、時間和所屬區域到物聯網平台,物聯網平台將數據通過數據接入服務轉發至MapReduce服務,MapReduce服務處理數據並寫為統計文件,數據可視化服務從統計文件讀取數據展現為四個維度的銷售報表。

創建MapReduce集群

創建集群,用於存儲和處理DIS轉儲的數據。

  1. 登錄華為雲官方網站,訪問MapReduce服務。

  2. 單擊“立即購買”,創建集群,以下配置僅為樣例。

    注:下圖以新版自定義購買界面為例,需要在“購買集群”界面點擊右上角的“點擊體驗新版”,然後選擇“自定義購買”。

參數名稱

說明

軟件配置

當前區域

保持默認。

集群名稱

自定義或保持默認。

集群版本

保持默認。

集群類型

分析集群。組件勾選Spark,系統會自動勾選Hive和Tez。“Hive使用外部數據源存儲元數據”保持關閉。

Kerberos認證

關閉。

用戶名

固定為“admin”不可修改。

密碼

自定義。

確認密碼

硬件配置

計費模式

按實際使用需求選擇,本示例中選擇“按需計費”。

網絡配置

全部保持默認。

實例

為節省實驗費用,可修改分析Core的實例數量為1,其餘保持默認值。密碼自定義。

高級配置均保持默認。

3.集群創建成功后,等待15到30分鐘,集群狀態變更為“運行中”則表示創建成功。

創建OBS桶

  1. 登錄華為雲官方網站,訪問對象存儲服務。

  2. 單擊“管理控制台”進入對象存儲服務管理控制台。

  3. 單擊頁面右上角的“創建桶”,根據需求選擇桶規格后,單擊“立即創建”。

創建數據接入通道和轉儲任務

創建通道並配置轉儲任務,實現將設備管理服務傳入DIS的數據轉發至MRS。

  1. 登錄華為雲官方網站,訪問數據接入服務。

  2. 單擊“立即購買”,購買接入通道,以下配置僅為樣例。

參數名稱

說明

區域

保持默認。

通道名稱

自定義或保持默認。

通道類型

保持默認值“普通”。

分區數量

按需填寫。

生命周期

源數據類型

選擇“JSON”。

自動擴縮容

保持關閉。

Schema開關

高級配置

保持默認。

3.通道購買成功后,進入DIS控制台接入管理 > 通道管理”頁面。

4.單擊需要查看的通道名稱,進入所選通道的管理頁面,選擇“轉儲管理”頁簽。

5.單擊“添加轉儲任務”按鈕。

6.在彈出的“添加轉儲任務”頁面配置轉儲相關配置項。

參數名稱

說明

源數據類型

默認為通道源數據類型

轉儲服務類型

選擇“MRS”。

任務名稱

自定義,如“iot_to_mrs”。

轉儲文件格式

選擇“Text”。

MRS集群

選擇已創建成功的MRS集群。

HDFS路徑

選擇轉儲文件要存儲的路徑,建議選擇“/user”。

轉儲文件目錄

自定義轉儲文件存放的文件夾名稱,本示例中為“temp”。

偏移量

選擇“最新”。

數據轉儲周期

本示例中修改為“60”。

數據臨時桶

選擇已創建的OBS桶。

數據臨時目錄

自定義,本示例中為“temp”。

7.單擊“立即創建”。

配置設備接入服務

在設備接入服務中創建產品模型、註冊設備並設置數據轉發規則,實現當設備上報數據時將數據轉發至DIS。

  1. 登錄華為雲官方網站,訪問設備接入服務。

  2. 單擊“立即使用”進入設備接入控制台。

  3. 單擊規則 > 創建規則 > 數據轉發”,首次創建對接到DIS服務的規則時,平台會根據對接的雲服務和區域彈出對應的雲服務訪問授權窗口。

4.單擊左側導航欄的“產品”,單擊右上角下拉框,選擇新建產品所屬的資源空間。

注:本文中使用的產品模型和設備僅為示例,您可以使用自己的產品模型和設備進行操作。

5.單擊右上角的“創建產品”,創建一個基於MQTT協議的產品,填寫參數后,單擊“確認”。

基本信息

產品名稱

自定義,如MQTT_Device

協議類型

選擇“MQTT”

數據格式

選擇“JSON”

廠商名稱

自定義

功能定義

選擇模型

請參考步驟6導入模型即可。

所屬行業

根據實際情況進行填寫。

設備類型

6.在功能定義頁面,單擊“上傳模型文件”,單擊Profile.zip,獲取產品模型文件樣例。

7.進入設備 > 設備註冊”頁面,單擊“註冊設備”,參考下錶填寫參數。

參數名稱

說明

所屬產品

選擇在步驟5中創建的產品。

設備標識碼

設備唯一物理標識,如IMEI、MAC地址等,用於設備在接入物聯網平台時攜帶該標識信息完成接入鑒權。

  • 原生MQTT設備:自定義,英文字母和数字的組合字符串。通過註冊成功後生成的“設備ID”(與設備標識碼一一對應)和“設備密鑰”接入平台。

  • NB-IoT設備、集成SDK的設備:NB-IoT設備上的IMEI或MAC地址。設備通過註冊時填寫的“設備標識碼”和“密鑰”接入平台。

設備名稱

自定義。

設備認證類型

選擇“密鑰”。

密鑰

設備密鑰,可自定義,不填寫物聯網平台會自動生成。

填寫完成后單擊“確定”,請注意保存註冊成功返回的“設備ID”和“設備密鑰”。

8.單擊左側導航欄的“規則”,單擊右上角的“創建規則”,選擇“數據轉發”。

9.填寫規則內容,規則名稱自定義,“數據類型”選擇“JSON”,轉發至“數據接入服務(DIS)”,“區域”選擇您開通OBS的區域,“通道”選擇您創建的桶,填寫完成后單擊“創建規則”。

配置數據可視化服務

配置數據可視化服務,新建數據報表視圖。

  1. 登錄華為雲官方網站,訪問數據可視化服務。

  2. 單擊“進入控制台”。

    注:若您未開通DLV服務,可單擊“體驗試用”獲取30天的基礎版免費試用。

  3. 訪問DLV控制台“我的大屏”頁面,新建一個大屏。

4.選擇空白模板,輸入大屏名稱后,單擊“創建大屏”。

5.單擊文本 > 標題”新增一個標題。

 

6.在右側“數據”面板修改靜態數據中“value”的值為“每日銷量”。

7.在大屏內拖動標題到左上角,並拉伸成合適的形狀。

8.單擊常用圖表 > 線狀圖”新增一個線狀圖報表。

9.拖動圖表到標題下面並拉伸成合適的形狀。

10.重複以上步驟再添加一個標題為“時間段銷量”柱狀圖,一個標題為“種類銷量”的餅狀圖,一個標題為“地區銷量”的區域排行圖,並根據自己的需要設置圖表的樣式。最終效果類似下圖。

11.單擊頁面右上角的返回按鈕退出編輯頁面。

 

驗證操作

1.首先控制設備上報10條數據。

  • 您可以使用配置設備接入服務時註冊的真實設備接入平台,上報數據。

  • 您也可以使用模擬器模擬設備上報數據,操作方法請參考通過MQTT.fx體驗設備接入。

    上報數據的樣例如下,請自行修改參數的取值模擬真實設備數據:

樣例1

{
	"msgType": "deviceReq",
	"data": [{
		"serviceId": "sales",
		"serviceData": {
			"category": "soda",
            "number": "1",
            "area": "SZLH",
            "timeStamp": "20190425T091157Z"
		}
	}]
}

上述樣例表示UTC時間2019年4月25日9點11分57秒深圳羅湖的自動販賣機銷售了一支蘇打飲料。

樣例2

{
	"msgType": "deviceReq",
	"data": [{
		"serviceId": "sales",
		"serviceData": {
			"category": "juice",
            "number": "2",
            "area": "SZFT"
            "timeStamp": "20190426T170005Z"
		}
	}]
}

上述樣例表示UTC時間2019年4月26日17點05秒深圳福田的自動販賣機銷售了兩支果汁飲料。

本文以上報下錶的數據為例。

category

number

area

timeStamp

soda

1

SZLH

20190425T091157Z

juice

1

SZFT

20190425T121511Z

sport

1

SZLH

20190425T172433Z

juice

2

SZFT

20190426T170005Z

soda

1

SZNS

20190426T190905Z

juice

1

SZNS

20190427T085959Z

juice

2

SZLH

20190427T111111Z

soda

3

SZFT

20190428T182215Z

sport

1

SZLH

20190429T205901Z

soda

1

SZLG

20190430T225045Z

2.登錄MRS管理控制台,選擇“集群列表 > 現有集群”,單擊集群名進入集群管理頁面。

3.單擊頁面上方的“文件管理”,再單擊“HDFS文件列表”,進入轉儲文件目錄(例如“temp”)查看是否存在轉儲的數據文件。

注:DIS會將數據合併轉發,所以此處的文件數量和上報的數據條數可能會不一致。

4.單擊頁面上方的“作業管理”,在“作業”頁簽中單擊“添加”,配置作業信息。本示例中創建一個spark類型的作業,實現分析設備上報數據,分別按日期、時間段、種類、區域統計銷量,將分析結果輸出為CSV文件並保存至OBS。

參數名稱

說明

作業類型

選擇“SparkSubmit”。

作業名稱

自定義,如“test”。

執行程序路徑

  1. 點擊下載jar包並上傳至OBS桶。

  2. 回到添加作業頁面,單擊“OBS”后單擊“瀏覽”選擇剛剛上傳的jar文件。

運行程序參數

左側選擇“–class”,右側輸入“com.huawei.bigdata.spark.examples.SalesStatistics”。

執行程序參數

輸入“AK SK inputpath outputpath”。

  • 其中AK SK填寫華為雲賬號的AK、SK,獲取方法可參考AK和SK的獲取方法。

  • inputpath填寫文件輸入路徑,在本樣例中為DIS的轉儲路徑,如“/user/temp”。

  • outputpath填寫文件輸出路徑,在本樣例中為已申請的OBS桶內的output文件夾(無需提前在OBS創建文件夾,MRS會自動創建),如“s3a://{OBS桶名稱}/output”。

服務配置參數

無需填寫。

配置完成后單擊“確定”啟動作業。

5.作業完成后,可在OBS桶內看到output文件夾,裏面有四個文件夾,每個文件夾內有一個“_SUCCESS”文件和一個“part”開頭的csv文件。

注:本實驗的樣例程序分析數據時會將UTC時間轉換為本地時間,因此數據分析結果中的日期與時間段數值會和上報時的數值不一致。

6.登錄華為雲官方網站,訪問數據可視化服務。

7.單擊“進入控制台”。

8.單擊“我的數據 > 新建數據連接” ,在“新建數據連接”頁面左側的數據庫類型中,選擇“CSV文件”,按照下錶的數據規劃填寫配置后單擊“確定”。重複本步驟建立4個數據連接。

參數名

說明

名稱

建立4個數據連接,分別命名為:

  • salesByDate

  • salesByTime

  • salesByCategory

  • salesByArea

Access Key

填寫華為雲賬號的AK、SK,獲取方法可參考AK和SK的獲取方法。

Secret Access Key

文件來源

選擇“OBS文件”。

文件路徑

4個連接分別選擇步驟5的output文件夾內和連接同名的文件夾內的csv文件。

9.返回“我的大屏”頁簽,單擊配置數據可視化服務時創建的大屏右下的編輯按鈕進入編輯頁面。

10.選中“每日銷量”表,在右側數據面板選擇數據類型為“CSV文件”,數據連接選擇步驟8添加的數據連接“salesByDate”。

11.根據響應數據的屬性名稱配置字段映射。

配置 “x”為 “saleDate”, “y”為 “saleNumber”。

12.選中“時間段銷量”表,在右側數據面板選擇數據類型為“CSV文件”,數據連接選擇步驟8添加的數據連接“salesByTime”。

13.根據響應數據的屬性名稱配置字段映射。

配置 “x”為 “saleTime”, “y”為 “saleNumber”。

14.選中“種類銷量”表,在右側數據面板選擇數據類型為“CSV文件”,數據連接選擇步驟8添加的數據連接“salesByCategory”。

15.根據響應數據的屬性名稱配置字段映射。

配置 “s”為 “category”, “y”為 “saleNumber”,並設置各個分類的名稱(本示例中為“soda”,“juice”,“sport”)和圖例的顏色。

16.選中“地區銷量”表,在右側數據面板選擇數據類型為“CSV文件”,數據連接選擇步驟8添加的數據連接“salesByArea”。

17.根據響應數據的屬性名稱配置字段映射。

配置 “num”為 “saleNumber”。

18.全部圖表配置完成后,單擊頁面右上角的可預覽報表,示例如下圖。

至此,通過該文檔的學習,您應該對自動售貨機銷售分析場景有了一定的了解。接下來,可以在系列後續文章中,可以學習到更多的物聯網業務場景。

添加華為IoT小助手(微信號:huawei-iot,回復“博客園”)獲取此物聯網免費學習課程。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

新加坡銷毀重達9公噸走私象牙 打擊非法交易

摘錄自2020年8月11日中央社報導

新加坡今天(11日)銷毀重達9公噸的非法走私象牙,並透過網路直播,預計數天才能完成銷毀。當局表示,這是全球近年最大的銷毀非法象牙行動,展現星國打擊非法野生動物交易的決心。

根據動保人士估計,每天約有100隻非洲象被意圖盜取象牙等大象身體部位的盜獵者所殺,目前僅存約40萬隻非洲象。

新加坡是非洲與亞洲之間運送非法動物商品的海上航路點。除了對非法運輸的商品採取強硬立場,新加坡去年也宣示,自2021年9月起,將全面禁止國內象牙及其製品銷售。

生物多樣性
國際新聞
新加坡
象牙
野生動物
非洲象
非法盜獵
象牙走私

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

研究實證!在牛屁股畫假眼睛 能嚇退打獵的獅子

摘錄自2020年8月13日聯合新聞網報導

一項最新研究發現,在牛屁股畫上假眼睛,能有效降低遭獅子或獵豹等掠食動物襲擊的風險。每日郵報與Phys.org報導,這項研究為期四年,由澳洲和波札那的學術與保育單位共同執行,地點選在家畜與掠食動物並存的歐卡萬哥三角洲(Okavango Delta)地區。

研究人員與當地農民合作,對14個最近遭受獅子攻擊的牛群進行塗漆。牛群被分成3組。一組在牛屁股畫上假眼,另外一組畫上簡單的叉號,最後一組保持原狀。結果發現,畫上假眼的牛完全沒事,有4頭畫叉與15頭保持原狀的牛被殺。

研究論文認為,許多生物靠著視覺訊號避免被補食,如蛾、蝴蝶、軟體動物和鳥類等,「研究期間進行塗漆的牲口,可靠著假的視覺器官嚇阻獅子和獵豹等伏擊掠食動物發動攻擊。」

研究人員已經印製英文與札那文的文宣手冊,也承認塗假眼仍有侷限,但波札那保育團體人員告訴南非媒體,「在保護區的邊界,農民與野生動物的衝突可能非常激烈,與野生動物共存讓部分社區承擔巨大的代價」,「我們希望這個簡單、低成本方法能減少部分農夫的負擔。」

※ 本文與 行政院農業委員會 林務局   合作刊登

土地利用
國際新聞
波札那
經濟動物
野生動物和農業共存
與野共生案例故事

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?