優質 NAS 快取選擇,全新 Seagate IronWolf 125 4TB SSD 開箱實測_包裝設計

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

Seagate的IronWolf系列,主要面向NAS專用的儲存設備,因為成本考量傳統都是使用 HDD 介面,不過今天我們要開箱的產品是Seagate IronWolf 125系列的4TB SSD,相比去年推出的IronWolf 110,這次全新的IronWolf 125其實可以分為 IronWolf 125 與 IronWolf Pro 125,其實主要就是將IronWolf 110系列的特色一分為二,IronWolf 125有著較低一點點的TBW(壽命)與MTBF(可靠性),而 IronWolf Pro 125 則是繼承了 IronWolf 110 的優點,並且在小檔讀取寫入(較快)以及供電上(只要5V即可驅動)有了改善,讓消費者有更多樣的選擇。

Seagate IronWolf 125 4TB SSD  開箱

IronWolf 125 4TB SSD 從外包裝上就有著霸氣的IronWolf圖案。

包裝上也採用了靜電袋包裝,相當用心。

撕開包裝後,可以看到正面有著大大的IronWolf LOGO。

而背面則是相關資訊,IronWolf 125與IronWolf 110最大的不同就在於供電的差異,IronWolf 125改回SSD的一般5V供電,使得在外接使用上會變得更為方便。

 

Seagate IronWolf 125 4TB SSD 效能測試

IronWolf 125 4TB SSD 屬於全新的IronWolf 125系列,從容量配置上來說,其實是更貼近硬碟的使用者,相比IronWolf 110與IronWolf Pro 125的最大容量3.84TB,IronWolf 125最大容量就是今天我們要測試的4TB版本,不過由於價格定位上的關係,一般大眾比較能接受的IronWolf 125 4TB SSD是有著5,600 TBW與1,800,000hr的MTBF,相比更高價格的IronWolf 125 Pro 3.84TB SSD則是有著7,000 TBW與2,000,000hr的MTBF。

首先可以看到,實際可使用的容量為3.63 TB。(換算格式不同)

IronWolf 125全系列的最大改動,為供電改為原本的5V即可驅動,因此可以直接透過外接硬碟盒驅動,在使用上就變得非常方便,尤其SATA SSD外接硬碟盒目前非常便宜的情況下,搭配一個超大容量的外接SSD就變得非常實用。

接著我們來實際測試傳輸速度,首先使用CrystalDiskMark進行讀寫測試,實際測試的讀寫速度分別為558.72 MB/s 與539.2 MB/s。

接著使用ATTO Disk Benchmark進行讀寫測試,最大的讀寫速度分別為559.7 MB/s 與540.4 MB/s。

因為是SSD,我們另外用了AS SSD Benchmark進行最後測試,其讀取寫入速度分別為523.98 MB/s 與508.28 MB/s,分數為1231。

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

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

而平常的傳輸檔案上,我們將檔案從桌面移動到SSD內,其實際的寫入速度初期會因為快取的關係跑到非常快,但穩定後速度為494 MB/s。

而反過來將檔案從SSD移到桌面上,則實際的讀取速度為501 MB/s。

 

原廠支援

除了擁有高水準的硬體表現外,Seagate IronWolf全系列還可以在相容的NAS上,啟動專屬的IronWolf Health Management (IHM) 保護機制,直接透過圖表監測NAS 每天的資料流量,掌握各種狀況,項目包含了:資料傳輸、效能、可讀性、可寫性、整體可靠性及其他相關的硬碟健康狀態參數(例如溫度、撞擊、振動、連線穩定度以及訊號完整性)並且針對資料保護提供了預防措施,在使用上更有保障。

除此之外 IronWolf 125 SSD 皆附有3年的Seagate Rescue資料救援服務,使用前須先至官網註冊,在救援計畫保固期限內,當硬碟發生損壞故障情形,資料無法讀取時,Seagate原廠提供免費的救援服務,盡其所能的為使用者救出硬碟內的資料,客戶滿意度高達 95%。

總結

IronWolf 125 SSD系列,除了同樣有著五年的保固外,SSD使用者更在意的TBW,更是有著超乎想像的水準,相比同樣用途的競品有著2~3倍的TBW,長期使用上不擔心,有著如此高TBW的優勢情況下,即使是拿來當作NAS的快取加速使用上,也不再擔心頻繁的寫入下造成的使用壽命縮短,放心的使用吧。

更大的容量 更安全的使用 全新Seagate IronWolf Pro NAS 18TB HDD 開箱

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

【JVM】垃圾回收的四大算法_貨運

※智慧手機時代的來臨,RWD網頁設計為架站首選

網動結合了許多網際網路業界的菁英共同研發簡單易操作的架站工具,及時性的更新,為客戶創造出更多的網路商機。

GC垃圾回收

JVM大部分時候回收的都是新生代(伊甸區+倖存0區+倖存1區)。按照回收的區域可以分成兩種類型:Minor GC和Full GC(MajorGC)。

  • Minor GC:只針對新生代區域的GC,大多數Java對象的存活率都不高,Minor GC非常頻繁,回收速度快。
  • Full GC:發生在老年代的GC,經常會伴隨至少一次的Minor GC(但不一定會),Full GC掃描的範圍更廣泛,Full GC的速度比Minor GC慢10倍以上。

 

 

GC四大算法

引用計數法

對於單個對象來說,當有引用發生,引用計數器就+1;當丟失引用,引用計數器就-1。當引用數減到0的時候,說明對象不再有用,被垃圾回收。引用計數法缺點是每次對對象賦值都要維護引用計數器,且計數器本身也有一定的消耗,難以處理引用循環(例如:對象雙方互相引用,但實際上二者為空,此時雙方引用都不為空)。JVM的實現一般不採用這種方式。

複製算法

年輕代中使用的是Minor GC,這種Minor GC採用的是複製算法。複製的思想是將內存分為2快,每次只用其中一塊,當這一塊內存用完,就將或者的對象複製到另一塊上面,複製算法不會產生內存碎片

HotSpot JVM中年輕代可以分成三個部分:Eden區、Survivor0區,Survivor1區,默認比例為8:1:1。Survivor的兩個區在邏輯上可以視為from區和to區,每次GC後會交換from區和to區,在Eden區和from區滿之前,to區始終是為空的區。如果to區也被填滿了,所有對象移動到老年代。

新創建的對象一般會被分配到伊甸區,經過一次Minor GC后,如果對象還存活,就會被移到Survivor區。from區的對象如果繼續存活,且能夠被另一塊倖存區to區容納,則使用複製算法將這些仍然存活的的對象複製到另一塊倖存區to區中,然後清理使用過的Eden和from區(下一次分配就從to區開始,to區成為下一次GC的from區),且這些對象的年齡設置為1,以後對象在倖存區每經歷一次Minor GC,對象的年齡就會+1,當對象的年齡到達某個閾值的時候,這些對象就會進入老年代。(閾值默認是15,可以通過-XX:MaxTenuringThreshhold來設定對象在新生代在存活的次數)。

這種算法的優點了不會產生內存碎片,缺點是浪費內存空間,在HotSpot虛擬機中8:1:1的比例下,可用內存為80%+10%,有10%的內存會被浪費掉。如果對象存活率很高,就需要將所有對象都複製一邊,並重置引用地址。

標記清除(Mark-Sweep)

老年代一般是由標記清除 或者 標記清除和標記整理的混合實現的。

標記清除算法分為兩個步驟,先標記出要回收的對象,然後統一回收這些對象。

※評比南投搬家公司費用收費行情懶人包大公開

搬家價格與搬家費用透明合理,不亂收費。本公司提供下列三種搬家計費方案,由資深專業組長到府估價,替客戶量身規劃選擇最經濟節省的計費方式

優點是節約內存空間,不需要額外空間。缺點是兩次掃描,標記和清除的效率都不高,耗時嚴重。標記清除後會產生大量不連續的內存碎片。內存碎片會導致以後程序需要分配大對象的時候,找不到足夠的連續內存,導致提前觸發GC。

 標記整理(Mark-Compact)

和標記清除一樣,先標記出要回收的對象,然後讓存活對象都向一端移動,直接清理掉端邊界 以外的內存。

優點是沒有內存碎片,缺點是效率不高,需要標記存活對象還要整理存活對象的引用地址,從效率上來說是不如複製算法的。

還有一種折衷的方案,將標記清除和標記整理算法相結合,一般直接標記清除,當GC達到一定次數的時候,進行一次標記整理,從而減少了移動對象的成本,又有處理內存碎片的步驟。

總結

效率排名:複製算法>標記清除>標記整理

內存整齊度:複製算法=標記整理>標記清理

內存利用率:標記整理=標記清理>複製算法

四種算法各有優劣,一般的JVM實現會採用分代收集算法,根據不同代所具有的不同特點使用不同的算法。

年輕代的特點是區域較小,對象存活率低,適合使用複製算法。複製算法的效率只和當前存活對象的大小有關,適用於年輕代的回收,內存利用率不高的問題HotSopt通過兩個survivor的設計進行和緩解,新生代可用容量為80%+10%,只有10%的內存被浪費掉。

老年代的特點是區域較大,對象存活率高,適合使用標記清除/標記整理算法。

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

※回頭車貨運收費標準

宇安交通關係企業,自成立迄今,即秉持著「以誠待人」、「以實處事」的企業信念

基於RBAC的權限控制淺析(結合Spring Security)_網頁設計公司

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

節能減碳愛地球是景泰電動車的理念,是創立景泰電動車行的初衷,滿意態度更是服務客戶的最高品質,我們的成長來自於你的推薦。

 

嗯,昨天面試讓講我的項目,讓我講講項目里權限控制那一塊的,講的很爛。所以整理一下。

按照面試官的提問流程來講:

一、RBAC是個啥東西了?

RBACRole-Based Access Control ),即基於角色的訪問控制模型,我的項目是基於RBAC0模型.由於之相對應的數據實體構成.由用戶表,角色映射表,角色表,權限表,權限映射表構成.

 

 

1 RBAC0模型圖

二、你可以講講權限控制大概執行流程嗎?

 用戶登錄之後首先進行身份驗證,成功之後獲取當前用戶的所有角色,之後根據角色加載對應的權限菜單,這裏默認不加載沒有權限的菜單,當存在直接輸入URL路徑的情況時,對於登錄用戶的每一個請求,都會通過鑒權處理,分析角色.最後通過權限的判斷分析是否可以訪問菜單資源.

在 spring Security,對用登錄的請先通過FilterInvocationSecurityMetadataSource的實現類獲取當前請求,分析需要的角色,該類的主要功能就是通過當前的請求地址,獲取該地址需要的用戶角色。

1、獲取當前訪問路徑的URL路徑

2、獲取所有資源URL,即所有的菜單URL路徑

3、當前的訪問URL和返回的每個URL基於Ant風格比較,如果相等,獲取當前訪問URL的所有角色。如果沒有相等的,定義資源為公告資源,並且給予一個公告資源的角色。

4、當為公共資源時,判斷用戶是否登錄。登錄放行。返回資源

5、當為角色資源時,登錄用戶的角色列表和該資源的角色列表進行比較,如果有相同角色,放行,返回資源

6、當即不是公共資源也沒有相匹配的角色的時候。拋異常,沒有權限

圖2 系統訪問控制流程圖

 代碼:

鑒權:

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

透過選單樣式的調整、圖片的縮放比例、文字的放大及段落的排版對應來給使用者最佳的瀏覽體驗,所以不用擔心有手機版網站兩個後台的問題,而視覺效果也是透過我們前端設計師優秀的空間比例設計,不會因為畫面變大變小而影響到整體視覺的美感。

@Component
public class CustomFilterInvocationSecurityMetadataSource implements FilterInvocationSecurityMetadataSource {
    @Autowired
    MenuService menuService;
    //路徑比較工具
    AntPathMatcher antPathMatcher = new AntPathMatcher();
    Logger logger = Logger.getLogger("com.liruilong.hros.config.ustomFilterInvocationSecurityMetadataSource");
    /**
     * @return java.util.Collection<org.springframework.security.access.ConfigAttribute> * 返回值是 Collection<ConfigAttribute>,表示當前請求 URL 所需的角色。
     * @Author Liruilong
     * @Description 當前請求需要的角色,該方法的參數是一個 FilterInvocation, 開發者可以從 Filterlnvocation 中提取出當前請求的 URL,
     * @Date 18:13 2019/12/24
     * @Param [object]
     **/
    @Override
    public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
        //獲取當前請求路徑
        String requestUrl = ((FilterInvocation) object).getRequestUrl();
        logger.warning(requestUrl);
        //獲取所有的菜單url路徑
        List<Menu> menus = menuService.getAllMenusWithRole();
        // AntPathMatcher,主要用來實現 ant 風格的 URL 匹配。
         for (Menu menu : menus) {
            if (antPathMatcher.match(menu.getUrl(), requestUrl)) {
                //擁有當前菜單權限的角色
                List<Role> roles = menu.getRoles();
                String[] strings = new String[roles.size()];
                for (int i = 0; i < roles.size(); i++) {
                    strings[i] = roles.get(i).getName();
                }
                return SecurityConfig.createList(strings);
            }
        }
        // 沒匹配上的資源都是登錄,或者為公共資源
        return SecurityConfig.createList("ROLE_LOGIN");
    }

 

 @Override
    public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes)
            throws AccessDeniedException, InsufficientAuthenticationException {
        for (ConfigAttribute configAttribute : configAttributes) {
            String needRole = configAttribute.getAttribute();
            if ("ROLE_LOGIN".equals(needRole)) {
                if (authentication instanceof AnonymousAuthenticationToken) {
                    throw new AccessDeniedException("尚未登錄,請登錄!");
                } else {
                    return;
                }
            }
            Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();
            for (GrantedAuthority authority : authorities) {
                if (authority.getAuthority().equals(needRole)) {
                    return;
                }
            }
        }
        throw new AccessDeniedException("權限不足,請聯繫管理員!");
    }

 

 

 

三、你可以把對應的SQL和表結構寫一下嗎?

 

加載所有的菜單資源;返回所有的菜單資源和對應的角色集合,Service端和訪問的URL的比較,存在判斷角色。(鑒權)


select m.*,r.`id` as rid,r.`name` as rname,r.`namezh` as rnamezh
from menu m,menu_role mr,role r
where m.`id`=mr.`mid` and mr.`rid`=r.`id` order by m.`id`
根據用戶ID返回當前用戶的全部菜單資源(授權)
   select m1.`id`,m1.url,m1.`path`,m1.`component`,m1.`iconCls`,m1.`name`,m1.`requireAuth`,m1.keepAlive,m1.enabled,
       m2.id as id2,m2.url as url2,m2.name as name2,m2.`component` as component2,m2.`iconCls` as iconCls2,m2.`keepAlive` as keepAlive2,m2.`path` as path2,m2.`requireAuth` as requireAuth2,m2.enabled as enabled2,m2.parentId as parentId2
       from menu m1,menu m2
       where m1.`id`=m2.`parentId` and m1.`id`!=1 and m2.`id`
       in(select mr.`mid` from hr_role h_r,menu_role mr where h_r.`rid`=mr.`rid` and h_r.`hrid`=#{hrId})
       and m2.`enabled`=true order by m1.`id`,m2.`id`

 

2 ERBAC數據實體關係圖

用戶登錄之後首先進行身份驗證,成功之後獲取當前用戶的所有角色,之後根據角色加載對應的權限菜單,這裏默認不加載沒有權限的菜單,當存在直接輸入URL路徑的情況時,對於登錄用戶的每一個請求,都會通過鑒權處理,分析角色.最後通過權限的判斷分析是否可以訪問菜單資源.

用戶表:

 

 角色表:

 

用戶角色映射表:

 

權資源表:

 

 

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

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

搬家費用:依消費者運送距離、搬運樓層、有無電梯、步行距離、特殊地形、超重物品等計價因素後,評估每車次單

就兩點!有面子 大空間!7萬起至30萬我看好這幾款!_網頁設計公司

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

網站的第一印象網頁設計,決定了客戶是否繼續瀏覽的意願。台北網動廣告製作的RWD網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上它。

明銳的1。4T車型擁有着非常不錯的性能,發動機能夠提供150匹馬力和250N·m的最大輸出,百公里加速僅為8。39s,相較於同門兄弟的大眾車型要快上不少,不知道這屬不屬於彩蛋。雪佛蘭-樂風RV優點:空間實用缺點:噪音偏大推薦人群:正準備要組建家庭的年輕人推薦車型:2016款 1。

作為有車一族的你們,肯定有過這樣的經歷:周末一家人去超市大掃貨,看見很多想買的東西都有折扣優惠,結果發現自己的車尾廂裝不下,買了也帶不回家;過年時候在家鄉收穫到了一大堆的土特產,正準備要裝車帶走時,發現自己的車尾廂裝不下那麼多東西。

尾廂空間的大小,成為了不少人衡量一輛車值不值得購買的條件之一,對於上班一族而言,也許尾廂空間不太重要,但是“養兵千日 用兵一時”,總會有能夠用得上的一天,所以有一個大尾廂,還是很有必要的。

很多人聽到大尾廂,就很自然會想到旅行車或者SUV,沒錯,旅行車的確是擁有這大尾廂,但是在國內推出旅行版車型的廠商很少,消費者的選擇很少,除了旅行車之外,其實也有大尾廂車型可供選擇。

上汽大眾-朗行

優點:尾廂空間大

缺點:懸架支撐偏弱

推薦人群:同時追求動力與空間的人群

推薦車型:2015款 230TSI DSG豪華版(16.29萬)

朗行長得實在是太像旅行車了,但其實它是一款大兩廂車,車頭部分跟朗逸沒有什麼區別,尾部造型過度非常協調,整輛車看起來比朗逸好看很多,推薦購買的230TSI DSG豪華版車型,雖然指導價高達16.29萬,但是算上終端優惠之後,裸車價在14萬以內。

內飾已經不用再評價了,就是那套千年不變的內飾設計,朗行的亮點在於它的後備廂,尾廂空間規整,後排座椅放倒后更加是帶來誇張的空間表現,尾廂的開口也很大,放置行李時比較方便。

1.4T加上7速雙離合變速箱的動力總成,油耗表現比1.6L車型還要出色,百公里油耗平均在7L左右,如果是1.4T的手動擋車型還能更加省油,與1.6L車型相比,除了油耗表現更加好,還能夠提供更加充沛的動力,這明顯是更加好的選擇。

斯柯達-明銳

優點:外形帥氣,動力強勁

缺點:品牌影響力低

推薦人群:需要大空間轎車的人群

推薦車型:2017款 280TSI DSG尊行版(17.99萬)

幾年前的斯柯達車型,說實話,真的不太符合國人的審美,經過時間的沉澱,現在斯柯達的外形設計,就像是去了一趟韓國一樣,時尚靚麗了許多,最喜歡的就是明銳的頭燈設計,真的像人的眼睛,還帶有眼睫毛。

三廂轎車使用掀背式尾廂門,這就是明銳的一大特色,也是因為掀背式尾廂門,得到了超大的尾廂開口,超大的尾廂空間,千萬不要因為它是三廂車就看小它。

明銳的1.4T車型擁有着非常不錯的性能,發動機能夠提供150匹馬力和250N·m的最大輸出,

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

以設計的實用美學觀點,規劃出舒適、美觀的視覺畫面,有效提昇使用者的心理期待,營造出輕鬆、愉悅的網站瀏覽體驗。

百公里加速僅為8.39s,相較於同門兄弟的大眾車型要快上不少,不知道這屬不屬於彩蛋。

雪佛蘭-樂風RV

優點:空間實用

缺點:噪音偏大

推薦人群:正準備要組建家庭的年輕人

推薦車型:2016款 1.5L 自動智行版(8.99萬)

二三十歲的年輕人,剛剛成立了自己的家庭,結婚生子,他們的生活支出不少,需要一輛經濟實惠,同時又要可靠耐用、空間夠大,雪佛蘭的樂風RV就是這麼一輛車。

作為一款15年年底上市的車型,設計時尚,非常符合時下年輕人的審美,尤其是稱為“晴空藍”的車身顏色,非常亮眼,高配車型的遠近光一體式氙氣大燈造型很好看,尾部造型協調,就像是一輛縮小的旅行車一樣。

內飾的設計雖然簡單,但是很有層次感,整體而言給人一種簡約居家的感覺,最大的亮點之處就是高配車型的儀錶盤造型,螺旋式的指針非常具有新意,轉動的時候就像雷達在掃描一樣。

如果與文中提到其它幾款車型相比較,樂風RV的空間表現一般,但是不要忘記,樂風RV只是一輛小型車,作為一輛大一號的小型車,在同價位同級別的車型中,它的空間表現出色,後排腿部空間寬裕,尾廂空間規整。

動力方面,樂風RV使用1.5L自然吸氣發動機,有5MT和4AT兩台變速箱選擇,5MT車型只有一款,可以看出廠家對4AT很有信心,變速箱實際的表現也是不錯,只要不是非常激烈的駕駛風格,完全夠用。

奔馳C級 旅行轎車

優點:典雅、實用

缺點:售價高昂

推薦人群:經濟實力雄厚的人群

推薦車型:2015款 C 200 旅行轎車(41.90萬)

奔馳C級旅行轎車,在國內一直是信仰般存在,即使算上市場終端優惠,C 200 旅行轎車裸車價都要37萬左右,相較於國產的長軸距C級三廂版的售價,毫無性價比可言,但是它真的不值得一提嗎?

奔馳C級旅行轎車所有的亮點都集中於尾部,與三廂版完全不同的造型,尾燈的樣式也不一樣,點亮之後有點像上一代E級轎車的尾燈,整個尾部顯得很扁,並且很修長,如果不是旅行車的愛好者,估計不太會喜歡。

內飾還是那套奔馳最新的家族式設計,簡約優雅,更加體現出旅行車的理念,檔次感十足。奔馳C級旅行轎車是標準軸距版本,所以後排座椅的空間還不能用寬裕來形容,不過寬大的後備廂為它爭色不少,將後排座椅放倒后還能夠形成比較平整的地台,非常實用。

總結

國內消費者好像永遠都不會滿足於車廂的空間,所以才造就了今天火熱的SUV市場,雖然SUV有着較大的空間表現,但是油耗偏高是普遍的問題,轎車反而在油耗這方面做得相對出色,像是朗行和樂風RV這種大兩廂車型,掀背式的明銳,冷門的C級旅行轎車,都夠用大部分人的需求。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

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

台中景泰電動車行只是一個單純的理由,將來台灣的環境,出門可以自由放心的深呼吸,讓空氣回歸自然的乾淨,減少污染,留給我們下一代有好品質無空污的優質環境

你沒看錯!不到10萬居然能買到這些大7座SUV!_網頁設計公司

※想知道最厲害的網頁設計公司嚨底家"!

RWD(響應式網頁設計)是透過瀏覽器的解析度來判斷要給使用者看到的樣貌

5T才是風光580的主力銷售車型。綜合來看,風光580擁有更豐富的安全配置以及動力搭配,當然價格也要比CX70高出一截。比亞迪S6指導價:8。79 – 12。39萬比亞迪,這個充滿非議的品牌,如今在新能源領域也算是混的順風順水。S6作為比亞迪的首款SUV,至今已經5年多的光景了,上市以來的銷量還是挺不錯的。

等等,細想一下好像還真有幾款符合二狗要求的車,記得上個月去大涼山參加試駕活動,路上有一款SUV的上鏡率挺高的,趕緊上網一查,居然是款7座SUV。

長安CX70

指導價:6.89 – 8.49萬

單看這價格,相信許多人絕對不會把它和7座中型SUV聯想到一塊。直到最近在路上頻繁見到它的身影,才知道還真有這麼一款車存在。

首先說明一點,CX70屬於長安商用推出的首款SUV,它與我們熟悉的CS75屬於兩個不同的部門。這款車於2016北京車展上市,上來就是中型7座SUV,的確挺受關注的。

老實說,第一眼看到CX70並沒有發現太多的模仿痕迹,設計談不上多麼精緻漂亮,不過硬朗的造型倒也挺招人喜歡。在所有中國品牌里,長安的設計還是挺值得說道的。

既然定位中型7座SUV,CX70的尺寸當然值得關注。長寬高分別為4680/1800/1775mm,軸距為2780mm,這樣的數據放到我們常見的中型SUV里沒有太多優勢。

反倒是內飾部分讓人眼前一亮,進入CX70車內,車內的設計氛圍與長安“麵包車”沒有任何關聯。整個內飾清晰大方,沒有過多繁雜的設計,用四個字概括就是恰到好處。

值得一說的是中控那塊8英寸大屏,雖然檔次感不高,如同一個廉價的安卓平板鑲嵌其中,但其可以與安卓手機互聯,更誇張的是還支持車載WiFi功能,結合其不到9萬的售價,夫復何求?

動力方面,目前只有1.6L + 5MT的動力配置,發動機最大馬力117ps,峰值扭矩150Nm。據了解年底將推出6AT的自動擋版本。

不用擔心“小馬拉大車”的問題,CX70自然不能與漢蘭達銳界這樣的車型相提並論,但足夠滿足日常使用。

東風風光580

指導價:7.29 – 9.99萬

第一眼看上去,風光580的造型要比CX70入流,車頭的線條非常流暢。如果蒙住logo,你一定想不到這是一家做“麵包車”的廠家設計出來的,整體來看風光580的有着同級非常高的顏值。

風光580於今年6月上市,估計就是瞄準CX70來的,風光580的尺寸與CX70非常接近,長寬高分別為4680/1845/1715mm,軸距與CX70一樣均為2780mm。

內飾方面,風光580的內飾設計相比之下比較平庸,看上去沒有CX70上檔次。不過好在中控10.1寸的大屏挽回了些分數,同樣集成了市面上主流功能,不錯。

配置方面風光580有後來者的優勢,除了最低配配備的是雙氣囊外,

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

當全世界的人們隨著網路時代而改變向上時您還停留在『網站美醜不重要』的舊有思維嗎?機會是留給努力改變現況的人們,別再浪費一分一秒可以接觸商機的寶貴時間!

其餘車型均配備了四氣囊,這一點在這級別車型里很厚道;除此之外,兩款CVT版本的還標配了ESp以及上坡輔助系統,除最低配外的手動版本也支持選裝。風光580在安全配置方面考慮的很周全,點個贊。

風光580的動力配置則比CX70豐富多了,分為1.8L和1.5T兩種動力版本,其中1.8L只匹配5MT變速箱,1.5T則有6MT和CVT兩種變速箱可選。由此可見,1.5T才是風光580的主力銷售車型。

綜合來看,風光580擁有更豐富的安全配置以及動力搭配,當然價格也要比CX70高出一截。

比亞迪S6

指導價:8.79 – 12.39萬

比亞迪,這個充滿非議的品牌,如今在新能源領域也算是混的順風順水。S6作為比亞迪的首款SUV,至今已經5年多的光景了,上市以來的銷量還是挺不錯的。

外形相信大家都很熟悉了,這裏叫獸要強調的是S6的尺寸。S6的長寬高分別達到了4810/1855/1725mm,軸距為2720mm,基本是達到了一台合格的中型SUV的尺寸標準。

內飾方面,以現今的眼光去看S6的內飾有些落伍,內飾設計線條有些複雜,給人一種凌亂的感覺。好在配置一向是比亞迪的強項,以指導價10.29萬的1.5T 7座版本為例,6氣囊、無鑰匙進入/啟動、天窗、真皮方向盤、導航、自動空調等等實用配置應有盡有,這也是S6暢銷多年的一大原因。

S6有5座和7座兩個版本,其中7座分為1.5T手動、2.0L手動以及2.4L自動三個版本。叫獸在這推薦的是1.5T版本,相比而言,這款發動機的技術更新,動力與油耗也兼顧的更好;至於沒有推出7座版1.5T自動擋的原因,我想應該是考慮到S7的存在。

比亞迪S7

指導價:10.69 – 14.69萬

比亞迪S7是繼S6后又一款中型SUV,從命名方式就知道,S7的定位比S6要高,當然售價也更高。

這裏說的價格更高只是相比S6而言,作為一款中型7座SUV,頂配不到15萬的售價放在同級里依然非常有優勢,並且依然延續了比亞迪高配置的傳統。

S7的尺寸比S6略大,長寬高分別為4835/1855/1720mm,軸距比S6多出10mm達到了2730mm,依然是標準的中型SUV的尺寸。S7全系都是7座的配備,這也是其最大的賣點之一。

配置方面可謂豪華,ESp、胎壓監測、自動空調等等全部標配,中配以上車型甚至還配備了前後頭部氣簾、導航等等你能在這價位車型里看得到的配置。

動力方面,S7拋棄了自然吸氣發動機,全系均搭載自主研發的1.5T或2.0T渦輪增壓發動機,匹配6MT變速箱或DCT雙離合變速箱。

豐富的配置、充足的動力以及足夠便宜的價格一直是S7的幾大賣點,月均5000的銷量算不上高,但結合S6一起算的話,相信這兩台車的銷量還是會讓比亞迪滿意的。

總結:

在以往的認知中,7座SUV都是動輒二三十萬的價格。這回中國品牌再次抓住市場“痛點”,以及極具優勢的價格切入市場,長安CX70上市以來月均1萬以上的銷量充分說明有需求就會有市場的道理。

不要看不上這樣的車型,銷量說明一切。在汽車保有量日益飽和的大都市,未來將是這些三四線小城市的市場,而咱們中國品牌,不在此時超車更待何時?本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

透過資料庫的網站架設建置,建立公司的形象或購物系統,並提供最人性化的使用介面,讓使用者能即時接收到相關的資訊

帥氣 寬敞 大氣!聽說大部分成熟男人都選了這幾輛座駕!_包裝設計

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

網動廣告出品的網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上她。

能給駕駛者提供更多的操控樂趣,但是也說不上運動型的底盤。如果忽略高轉速時比較轟耳的噪音,雅閣的舒適性是很不錯的。一汽馬自達-阿特茲指導價:17。58-23。98萬元阿特茲的顏值是一直都為車友們所稱道的,也承認,馬自達的魂動外觀的確是很有設計感,既有肌肉感的同時線條又十分流暢。



上世紀六七十年代,豐田乘着美國人的石油危機,憑藉其高可靠性,低油耗的汽車佔領了美國的汽車市場,奠定了豐田國際化的基礎。然而時至今日,日系車當中的佼佼者已經不止豐田一家。今天就和大家看看,在最能體現車企實力的B級車市場,“兩田一馬”,外加一個日產,其主力車型到底有什麼能耐。

指導價:18.48-32.98萬元

舊的凱美瑞會給人中庸,低調的感覺,難免會有“大叔車”的嫌疑。而新款的凱美瑞,採用了全新的家族式“Keen Look”前臉,六邊形的大嘴下格柵也讓車頭更加動感霸氣。側面的線條則比較簡潔流暢,變化不大,車尾造型依舊比較緊湊,橫穿左右的鍍鉻飾條是近來比較流行的元素,也讓車尾的整體感更強。

凱美瑞的內飾延續了以往車型的穩重大氣風格,採用人造皮革+縫線的工藝,內飾高級感更強。略遺憾的是中控大屏並沒有像其他主動和被動安全配置那樣都有全系標配。座椅厚實舒適的同時也保證一定的橫向支撐,舒適性不錯。

動力方面,搭載2.0L自然吸氣代號為6AR-FSE的發動機採用了D4-S雙模式噴射系統和VVT-iW新世代可變氣門正時技術,最大馬力167pS,6AT手自一體的變速箱集成了空擋控制系統、減擋補油控制系統和預緊差速器,動力平順性很好。實際駕駛感受起步動力是很靈敏的,雖然沒有很強的推背感,但也不會有“力不從心”的感覺,中後段的發力也有足夠的底氣。

凱美瑞的底盤是偏向舒適的設定,車內不會感受到十分直接的震動,同時轉向的助力比較沉穩,但轉向的靈敏度一般。總體來說如果你想要體驗操控樂趣的話,凱美瑞並不適合你,凱美瑞還是適合追求舒適、安靜的家用車用戶。

指導價:16.98-23.78萬元

本田也是很靈敏的廠商,它已經意識到現在購車群體的年輕化,所以就一改了以往雅閣那些濃濃的商務風,於是我們就看到呈現在我們眼前這個前臉造型立體,車身線條凌厲,有一雙科技感十足的LED大燈的新雅閣。當然,還有一些看不見的科技,如前置攝像頭和毫米波雷達,是Honda SENSING的基礎,該系統比較複雜,總的來說就是提供行駛安全輔助和保障。

和外觀不同,雅閣的內飾並沒有大改,對稱式的布局,線條十分流暢且有一點的高級感。不得不提是中控的雙屏設計了,兩個屏幕各司其職,用起來順手,看起來NB。但當你看了儀錶盤,你發現中央的行車電腦還是單色屏,也許是本田控製成本的手段,反正這個屏幕能显示必要信息足矣。

動力方面,2.0L/2.4L地球夢發動機,最大馬力155pS/186pS,搭配的CVT變速箱,都是本田的看見本領。和外觀的動感不同,雅閣的雖然油門響應靈敏,但動力的輸出卻不慌不忙,不會給你很激烈的加速感,

※產品缺大量曝光嗎?你需要的是一流包裝設計!

窩窩觸角包含自媒體、自有平台及其他國家營銷業務等,多角化經營並具有國際觀的永續理念。

整個加速過程很平順。如果你打算購買雅閣,就不要想激烈駕駛了,好好享受那平順的CVT吧。

雅閣的採用多連桿獨立后懸挂,算是B級車標配了,底盤的質感很不錯,反應靈敏,處理震動的動作夠快,比凱美瑞的質感要硬。能給駕駛者提供更多的操控樂趣,但是也說不上運動型的底盤。如果忽略高轉速時比較轟耳的噪音,雅閣的舒適性是很不錯的。

指導價:17.58-23.98萬元

阿特茲的顏值是一直都為車友們所稱道的,也承認,馬自達的魂動外觀的確是很有設計感,既有肌肉感的同時線條又十分流暢。於是,2017款的阿特茲也延續了這種設計理念,大嘴格柵通過鍍鉻飾條與兩隻鷹眼大燈相連,感覺像一種很猛的動物,但是又說不出像什麼動物,大家發揮想象力吧。

內飾設計的改變也不少,全新樣式的方向盤和中控按鍵、懸浮式的中控屏,還有一些銀色飾條的加入,運動感更強,唯一不變的應該是變速箱擋把了。內飾採用軟質的皮革材料,也有縫線工藝,質感不錯。座椅的填充比較結實,不是很厚,支撐性和包裹性都比較好,也符合阿特茲偏向運動的風格。

2.0L/2.5L的Skyactiv發動機,最大馬力158/192pS,搭配換擋邏輯聰明,能夠幾乎讓你忘記它存在的6AT手自一體變速箱,組成這個好開有活力的動力系統。實際駕駛的感受是與歐系車類似的,油門初段比較沉重,後段較線性,動力輸出並不弱且提速很快,但又不會有渦輪增壓車那種激烈的推背感。

國產的阿特茲是針對了國內的情況進行了特殊的調校,前段偏軟,小坑小窪的過濾很到位,但仍保留一定的路感,後段的懸挂表現更加紮實,能為高速轉彎的阿特茲提供更好的支撐性。

指導價:17.58-29.98萬元

全新天籟的外觀加入了日產家族式的V-motion設計理念,V字型的中網鍍鉻飾條以及回力標的大燈造型,這些設計都是為了讓日產的外形更加年輕動感,減少了舊款日產圓潤成熟的氣息。至於新日產的外觀好不好看,那就是見仁見智的了。

至於中控的布局變化變化不大,仍然是簡潔商務風,方方正正的中控台造型給人穩重大氣的感覺,只是少了一點時尚感。觸控大屏的加入是新天籟的一個進化,多媒體功能得到了一些升級。至於座椅則一直是天籟的優點,寬大且柔軟,舒適性很好。

動力方面,新款天籟依舊搭載2.0L/2.5L+CVT變速箱的動力系統,最大馬力為150pS/186pS。實際的動力表現依舊是十分平順線性,沒有什麼爆發點。舊天籟的懸挂調校是很軟的,但新天籟在保證舒適性的基礎上給懸挂增加了一點韌性,配合彎道自動循跡系統,新天籟在轉彎時的側傾控制會比舊款天籟要好,但相對同級車型依然不算突出。

總結:

和德系車不同,日系車的動力少了一份直接;和美系車也不同,日系車少了一份力量感。乍一看彷彿沒有什麼優點,但是當你開在路上的時候你又不會發現動力不夠用,你也不會收到乘客投訴你後排的舒適性。這就是日系B級車,看似平庸,實際上這種中庸的均衡的表現,已經蘊含着不少技術的力量在裡頭。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

上新台中搬家公司提供您一套專業有效率且人性化的辦公室搬遷、公司行號搬家及工廠遷廠的搬家服務

vivo南紡體驗店登場!推五大開幕限定優惠,再抽萬元五星級飯店雙人假期_網頁設計

台北網頁設計公司這麼多該如何選擇?

網動是一群專業、熱情、向前行的工作團隊,我們擁有靈活的組織與溝通的能力,能傾聽客戶聲音,激發創意的火花,呈現完美的作品

vivo 繼在高雄、台北和台中開設體驗店後,今(12/25)宣布進駐台南佔地最大購物商場–南紡購物中心A2館,為歡慶全台第四間體驗店正式開幕,加上適逢聖誕佳節,vivo特地祭出歷來最殺開幕限定好禮,首三日購買全系列機種可享五大購機優惠,再抽五星級飯店吃住玩雙人假期行程。

vivo南台灣最大體驗店今登場 五大開幕限定優惠

台南南紡購物中心A2館包含地上九層、地下兩層,整體面積約2.1萬坪,商業面積約8千多坪,看準購物中心發展潛力,vivo選擇在此打造南台灣最大體驗店,店內空間寬敞明亮,展現簡潔舒適時尚科技氛圍,近30坪室內空間包含展示體驗區、產品交機區、週邊配件區,帶給消費者全系列完整服務。

今天早上的開幕我們也做了直播介紹,眾多好康購機資訊也在裡面:

 

寬廣的體驗區:

完整配件區:

為歡慶vivo正式落腳台南,vivo於開幕首三日推出超殺開幕好康回饋消費者,凡於12/25-12/27購機可享五大獨家優惠,優惠一,購買vivo X50 Pro旗艦機,送價值6,389元vivo Y12和vivo運動藍牙耳機:

網頁設計最專業,超強功能平台可客製化

窩窩以「數位行銷」「品牌經營」「網站與應用程式」「印刷品設計」等四大主軸,為每一位客戶客製建立行銷脈絡及洞燭市場先機。

優惠二,買vivo X50送市價3990元DJI OM4磁吸式手持雲台,優惠三,購買X全系列可享延長保固至24個月、螢幕意外保障12個月、2021限定桌曆和vivo原廠33W閃充組,上網登錄再送全聯禮券900元:

優惠四,買vivo V與Y系列手機送延長保固至18個月、代言人張鈞甯悠遊卡、vivo輕量雙肩電腦包、V Friends藍牙耳機:

優惠五,購買vivo運動藍牙耳機送KKBOX 30日體驗卡。

除了一系列購機禮外,12/31前只要入手全系列vivo手機並至官網登入序號,還有機會抽中市價14,220元麗寶樂園×福容大飯店五星級飯店吃住玩全包雙人麗寶假期行程,內含精緻雙人房住宿一泊一食、渡假區禮券800元和饗樂券4張。此外,vivo也將於12/26(六)邀請氣球姊姊、12/27(日)請來造型棉花糖達人舉辦快閃活動,凡於周末指定時間到店體驗產品並拍照上傳即可獲得體驗禮,當日不限金額消費還可客製特殊造型款氣球或棉花糖。

4體驗店+3客戶服務中心 六大最強售後搶攻市場

vivo表示,目前已在台北三創、高雄夢時代、台中一中和台南南紡設有四間體驗店,客戶服務中心則在新北、台中、高雄皆有據點,2021年目標將在全台六大都會區完成體驗店布局,此外,vivo也推出業界最強六大保固,凡購買任一機種可享「業界最長15日新品換貨」、「終身維修免費到府收送」、「終身免檢修費」、「保固內原廠殼和原廠保護貼免費更換各兩次」、「終身免費手機健檢」、「長期服務始終如一」等6大業界最強售後保固,希望透過更全面的銷售通路和貼心服務搶攻市場,讓消費者能深入感受 vivo 手機的魅力!

另外在 vivo 館旁也有野獸國快閃店,裡面有展出X戰機 1:1 模型,可上去搭乘拍照,旁邊也有漫威免費著色活動,相當適合帶親子來這邊逛逛,建議大家晚上來更漂亮喔:

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※推薦評價好的iphone維修中心

擁有專業的維修技術團隊,同時聘請資深iphone手機維修專家,現場說明手機問題,快速修理,沒修好不收錢

台灣之星推出網路限定「用多少付多少」升級版,享受 5G 高速網路就是這麼輕鬆_貨運

※智慧手機時代的來臨,RWD網頁設計為架站首選

網動結合了許多網際網路業界的菁英共同研發簡單易操作的架站工具,及時性的更新,為客戶創造出更多的網路商機。

各家業者都在推 5G 行動網路,手機廠商也因應潮流陸續推出各種 5G 機型,5G 又快、又順真是非常誘人,只不過目前的 5G 資費價格還是偏高,且基站覆蓋率還須努力,要我立刻拋下 4G 轉身迎向 5G,皇上,臣妾真是做不到啊!好險世道還有公平正義,台灣之星從開台就主打「用到 5G 才付錢」的精神,將入手 5G 的門檻降到 399 元,每月有 20GB 上網量可以用;另外還有 4G 不限速吃到飽 799 起,5G 上網另外收費,最高只要加 200 元就可享 4G+5G 吃到飽,所以如果沒有用到 5G 訊號,就只要付 4G 吃到飽的錢就好。

這回台灣之星 So Sweet,特別為超想試試 5G 快感又步步驚心的你推出了「用多少,付多少」5G 版,讓你的每一分錢都用在刀口上,硬是把5G月租降到$0起,入主 5G 就是這麼輕鬆。

0 元起享受台灣之星 5G 飆速快感,立刻申辦點這裡

台灣之星推出網路限定「用多少付多少」升級版,享受 5G 高速網路就是這麼輕鬆

「4G 上網吃到飽」方案是許多人用以滿足生活、工作等網路需求的選擇,每個月只需繳交固定的金額就能滿足所需的無限網路流量,用起來心裡完全無負擔。雖說最新的高速 5G 網路相當吸引人,又很想試試,但是又不知道各家的訊號覆蓋怎麼樣,而目光所見所有的 5G 吃到飽方案低消都得要負擔制少 1399 元的高額月租,先不說這個金額對於一般人來說有多沉重,即便你每日出沒區域還是 4G 網路居多,用到 5G 的機會少之又少,還是免不了要繳交一樣的費用。對於薪水不漲、精打細算的現代人來說,這完全不符合經濟效益,難道要把血汗錢這麼揮霍?

0 元起享受台灣之星 5G 飆速快感,立刻申辦點這裡

台灣之星「用多少付多少」,5G 也可以輕鬆繳

好想用用時下最有話題的 5G 高速網路喔!可是月租拿~摸貴,訊號覆蓋又不夠普及,如果有平價 5G 那該有多好!
吃到飽餐廳裡明明都是付一樣的錢,卻可能因為食量小才吃一點點,對海鮮過敏只能吃肉,眼看著餐檯上滿滿的美食卻真得只能看而已,這根本不是真正的價格公道。噹啷!一向對電信資費方案最有創意的神燈精靈、正義使者 — 台灣之星將實現你的願望!在過去,台灣之星針對了輕量型 4G 行動上網用戶推出大受好評的「用多少付多少」方案,這次全新推出 5G 版「用多少付多少」。資費表先奉上:

◎設定費 300 元為單次費用,將在合約生效後的次月帳單中收取。

這個條件超優渥的資費方案可是【網路門市限定】,要怎麼辦理?必須符合哪些資格?

  • 新申裝與攜碼用戶皆可在網路門市申辦
  • 準備好身分證、第二證件(駕照或健保卡)就可申辦

0 元起享受台灣之星 5G 飆速快感,立刻申辦點這裡

台灣之星「用多少付多少」5G 版有什麼優勢?

為什麼筆者會如此推崇這回台灣之星的 5G 用多少付多少方案呢?先說說我的結論:夠厚道。怎麼說呢?筆者把台灣之星這項升級版方案的優勢與特色列了下來。

  • 4G 與 5G 分開計費,沒用到不用錢
    因為現在的 5G 基站還在進行中,除非你居住、工作與出沒地都在六都蛋黃區或是夠熱鬧的商圈,否則很多時候你用到的並不是 5G 網路,而是系統為了讓你能繼續上網而跳轉到 4G 網路。如果是其他電信業者的計費方式來看,不管你是用 4G 還是 5G 網路,通通得繳一樣的費用,就是一開始你所辦理,平均定價為 1,399 元的所謂「5G 吃到飽」(明明大多數時候可能吃的還是 4G)。台灣之星的計價方式清楚透明,將 4G 與 5G 用量分開計算,怎麼用就怎麼繳,有用到才收費,沒用到不坑錢,不敷衍、不含糊。
    舉例來說:
    這個月只有用到 4G,所用的網路計費就以資費表中的 4G 收費方式來算,每 GB 只要 30 元
    這個月只有用到 5G,所用的網路計費就以資費表中的 5G 收費方式來算,每 GB 只要 60 元
    兩個都有用到,那就看你用幾 GB 的 4G 網路、幾 GB 的 5G 網路,分開計算後再合計費用

    ※回頭車貨運收費標準

    宇安交通關係企業,自成立迄今,即秉持著「以誠待人」、「以實處事」的企業信念

  • 設置計費天花板,不怕帳單爆天價
    以量計價的收費方式,很多人都會擔心是否在無聲無息之間用得太多使得下個月收到天價帳單而用得戰戰競競。台灣之星設置了收費天花板,4G 網路吃到飽最高收到 499 元,5G 網路最高收到 899 元,就算是有時 4G 有時 5G 的使用,最多也是只收到 899 元,有效幫你控制最高支出,讓你安心暢快飆網衝浪。
    舉例來說:
    5G 網路收費 60 元/GB,這個月用了 30GB;4G 網路收費 30 元/GB,這個月用了 20GB
    原本應該支付 60 元 x 30GB + 30 元 x 20GB = 2,400 元
    台灣之星優惠只需支付最高 899 元  為你省下 1,501 元

  • 帳單 0 元起,無低消限制
    最常看到的資費方案,就算你很少用到,還是要支付一筆最低消費,是說花錢買沒用到的東西再便宜都是浪費。台灣之星「用多少付多少」方案最大的特點(與優良傳統)就是終身 0 月租,如果這個月完全沒用到,你就完全不需要付費,讓你的每一分錢都發光發熱,不造成額外的浪費。
    舉例來說:
    我出國去玩個一個月,本月手機根本沒有用到,那我這個月就完全不需要繳錢。

0 元起享受台灣之星 5G 飆速快感,立刻申辦點這裡

沒用到,幹嘛繳?台灣之星「用多少付多少」收費最實在

筆者自己一直很猶豫到底要不要搶在首波加入 5G 的行列,但想想目前 5G 訊號覆蓋不如 4G 網路來得全面又穩定,看著各家業者動不動就上千元的 5G 吃到飽費率,我也產生了許多疑慮,因為居住地、出沒地的不同,似乎也很難確保真得能否暢享 5G 吃得飽,往往變成繳了 5G 吃到飽費用卻一直在用 4G。台灣之星「用多少付多少」升級版不僅有 4G,這回更把 5G 也納入其中,也就是說你用了多少 4G,用了多少 5G ,費用明明白白、清清楚楚,你沒有用到的就完全不需要付費,這點對於大眾來說是最實惠的計價方式。以實際用量為準,免除其他業者一刀切資費方案下可能白花的錢,最適合精打細算又對 5G 躍躍欲試的你。

 

您也許會喜歡:

【推爆】終身$0月租 打電話只要1元/分

立達合法徵信社-讓您安心的選擇

※評比南投搬家公司費用收費行情懶人包大公開

搬家價格與搬家費用透明合理,不亂收費。本公司提供下列三種搬家計費方案,由資深專業組長到府估價,替客戶量身規劃選擇最經濟節省的計費方式

JavaScript的歷史由來及簡介_網頁設計公司

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

網站的第一印象網頁設計,決定了客戶是否繼續瀏覽的意願。台北網動廣告製作的RWD網頁設計,採用精簡與質感的CSS語法,提升企業的專業形象與簡約舒適的瀏覽體驗,讓瀏覽者第一眼就愛上它。

JavaScript的歷史由來及簡介

前言

這次寫一篇對於JavaScript的簡介,我們知道的編程語言有很多種,比如Java、C++、Python等等,每種編程語言都有其獨具的特色,不論是語法格式還是表達形式,都能讓每個程序員沉澱在知識的海洋里難以自拔。即每種編程語言都有無限的延展性,但如果我們考慮問題的時候追溯其根源,其實也不難發現每種編程語言都具有共同的初心,最直白的話就是人與計算機進行溝通的語言,在現實生活中,見什麼人說什麼話我們都很清楚,那在與計算機溝通的世界中,做什麼事用什麼編程語言溝通也是同樣的道理,前提就是我們要了解這些編程語言,在你需要選擇的時候做出正確的判斷,這也正是我寫此篇文章的意義。

JavaScript的歷史由來

 

 
在1994年,當時的網景公司(Netscape)憑藉Navigator這個瀏覽器成為了Web時代開啟最著名的第一代的互聯網公司。當時所用的第一版本的瀏覽器就是下圖中的瀏覽器,相信有很多年輕朋友都沒有見過這種瀏覽器。如果大家回想十年前或是十五年前,大家用的瀏覽器應該是IE瀏覽器,那個時候的瀏覽器跟現在的比如說谷歌瀏覽器火狐瀏覽器等相比而言,那就是天壤之別了。

 

 

 

像上圖中這是最早版本的瀏覽器,整個瀏覽器都是靜態的,也就是用HTMLCSS寫的,並沒有像今天的各種瀏覽器一樣具有各種各樣的動態效果了,比如像網頁的圖片輪播、鼠標懸浮切換等效果。

網景公司就想在原來的靜態頁面的基礎上添加一些動態的效果,這時候網景公司出來一個很牛的人物叫布蘭登·艾奇,他用不到兩周的時間就設計出了能在網頁上實現動態效果的編程語言。

 

 

就是上圖中的人設計的這中能實現網頁動態效果的編程語言,並將其編程語言命名為JavaScript

為什麼會命名為JavaScript呢?原因是在當時,Java非常火,網景公司希望借用Java在當時的名氣來進行推廣。其實事實上呢,JavaScript除了語法上有點像Java外,別的地方都跟Java沒有任何關係。

 

 

JavaScript和ECMAScript的關係

從上面講的JavaScript的由來中,我們就知道JavaScript由網景公司的布蘭登·艾奇開發出來的,一年後,微軟又模仿JavaScript開發出了一種編程語言叫JScript,再後來,陸續又有別的商家推出JavaScript的不同實現語言。這就導致JavaScript的語法和特性日益混亂,其標準化問題被提上日程。最終由歐洲計算機製造商協會(ECMA)以JavaScript1.1為藍本,制定了【ECMA-262】標準,並由此標準定義了一種新腳本語言ECMAScript。隨後,ISO也採用ECMAScript作為標準,各瀏覽器廠商便紛紛開始將ECMAScript作為各自JavaScript實現的基礎。

 

 

那到底JavaScriptECMAScript有什麼關係呢? ECMAScript其實並不等同於JavaScript,它只是JavaScript的核心標準(語法、類型、語句、關鍵字、保留字、操作符、對象),而JavaScript還包括文檔對象模型(DOM)和瀏覽器對象模型(BOM)等。其中各主流瀏覽器對ECMAScript的支持都還不錯,但對DOM的支持相差較大,對於BOM一直沒有相關標準。最後再簡單總結一下就是:ECMAScript是一種語言標準,JavaScript是對ECMAScript的一種實現

JavaScript版本

  • 1997年06月 :發布首版。

  • 1997年06月:修改規範完全符合ISO/IEC 16262國際標準。

  • 1998年6月,ECMAScript 2.0版發布。

  • 1999年12月,ECMAScript 3.0版發布,成為JavaScript的通行標準,得到了廣泛支持。

  • 1999年12月:增加正則、更好的文字處理、新的控制語句、try/catch異常處理、更加明確的錯誤定義,数字輸出格式等等。放棄發布。

  • 2007年10月,ECMAScript4.0版草案發布,對3.0版做了大幅升級,預計次年8月發布正式版本。草案發布后,由於4.0版的目標過於激進,各方對於是否通過這個標準,發生了嚴重分歧。以Yahoo、Microsoft、Google為首的大公司,反對JavaScript的大幅升級,主張小幅改動;以JavaScript創造者Brendan Eich為首的Mozilla公司,則堅持當前的草案。

  • 2008年7月,由於對於下一個版本應該包括哪些功能,各方分歧太大,爭論過於激進,ECMA開會決定,中止ECMAScript 4.0的開發,將其中涉及現有功能改善的一小部分,發布為ECMAScript3.1,而將其他激進的設想擴大範圍,放入以後的版本,由於會議的氣氛,該版本的項目代號起名為Harmony(和諧)。會後不久,ECMAScript 3.1改名為ECMAScript 5。

  • 2009年12月:完善了ECMASript 3版本、增加”strict mode,” (嚴格模式)、以及新的功能,如getter和setter、 JSON庫支持和更完整的對象屬性。ECMAScript 5.0版正式發布。Harmony項目則一分為二,一些較為可行的設想定名為JavaScript.next繼續開發,後來演變成ECMAScript 6;一些不是很成熟的設想,則被視為JavaScript.next.next,在更遠的將來再考慮推出。

  • 2011年06月:ECMAscript 5.1版發布,並且成為ISO國際標準(ISO/IEC 16262:2011)。

  • 2013年3月,ECMAScript 6草案凍結,不再添加新功能。新的功能設想將被放到ECMAScript 7。

  • 2013年12月,ECMAScript 6草案發布。

  • 2015年06月:第六版的名字有很多,可以叫ECMAScript6 (ES6) ,也可以叫ECMAScript 2015 (ES2015) 。

  • 2015年6月17日,ECMAScript 6發布正式版本,即ECMAScript 2015。

  • 2016年06月:也被稱為ECMAScript 2016。完善ES6規範,還包括兩個新的功能:求冪運算符(*) 和array.prototype.includes方法。

  • 2017年06月:增加新的功能,如併發、原子操作、Object.values/Object.entries、 字符串填充、promises、 await/asyn等等。

JavaScript的組成部分

 

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

以設計的實用美學觀點,規劃出舒適、美觀的視覺畫面,有效提昇使用者的心理期待,營造出輕鬆、愉悅的網站瀏覽體驗。

 
JavaScript的三個主要組成部分是:ECMAScript(核心),DOM(文檔對象模型),BOM(瀏覽器對象模型)

 

ECMAScript(核心)

【ECMA-262】並沒有參照web瀏覽器,規定了語言的組成部分,其具體內容包括語法、類型、語言、關鍵字、保留字、操作符、對象等。

ECMAScript的兼容

  1. 支持【ECMA-262】描述的所有“類型、值、對象、屬性、函數以及程序語法和語義” 。

  2. 支持Unicode字符標準。

  3. 添加【ECMA-262】沒有描述的更多“類型、值、對象、屬性和函數”,【ECMA-262】說的這些新增特性,主要是指該標準中沒有規定的新對象和對象的新屬性。

  4. 支持【ECMA-262】中沒有定義的“程序和正則表達式的語法”。也就是說可以修改和擴展內置的正則表達式語法。

DOM(文檔對象模型)

文檔對象模型(DOM)是針對XML但經過擴展用於HTML的應用程序編程接口(API)。DOM把整個頁面映射為一個多層次節點結構。HTML或者XML頁面中的每個組成部分都是某種類型的節點,這些節點又包含着不同類型的數據。

 

 

其實說白了,文檔對象模型(DOM)就是操作網頁上的那些標籤,來實現動態的效果。

在DOM中,頁面一般可以用分層節點圖表示。

 

 

DOM級別

  • DOM1級於1998年10月成為W3C的推薦標準。BOM1由兩個模塊組成分別是DOM coreDOM HTML

  • DOM core:規定如何映射基於XML的文檔結構,以便簡化對文檔中任意部分的訪問和操作。

  • DOM HTML:在DOM core的基礎上加以擴展,添加了針對HTML的對象和方法。

  • DOM2級在原來DOM的基礎上有擴充了鼠標和用戶界面事件、範圍、遍歷等細分模塊,通過對象接口增加了對css的支持。包括以下模塊:

  1. DOM Views(DOM視圖):定義了跟蹤不同文檔視圖的接口。

  2. DOM Events(DOM事件):定義了事件與事件處理的接口。

  3. DOM Traversal and Range(DOM遍歷和範圍):定義了遍歷和操作文檔的接口。

  • DOM3級則進一步擴展了DOM,引入了加載和保存模塊以統一方式加載和保存文檔的方法;新增了DOM驗證模塊主要還是驗證文檔的方法。

BOM(瀏覽器對象模型)

瀏覽器對象模型(BOM)是處理瀏覽器窗口框架,我們習慣上把所有針對瀏覽器的JavaScript擴展算作是BOM的一部分。包括以下:

  1. 彈出新瀏覽器窗口的功能。

  2. 移動、縮放和關閉瀏覽器窗口的功能。

  3. 提供瀏覽器所加載頁面的詳細信息的navigator對象。

  4. 提供瀏覽器所加載頁面的詳細信息的location對象。

  5. 提供用戶分辨率詳細信息的screen對象。

  6. 對cookies的支持。

  7. 像XMLHttpRequest和IE的ActionXobject這樣的自定義對象。

瀏覽器對象模型(BOM)其實很簡單,它包含了當前瀏覽器上的一些操作,比如說像關閉按鈕、刷新按鈕、前進和後退按鈕等等。

綜上來說,JavaScript就包含了以上這三部分內容,第一部分就是核心基礎語法,這是非常非常重要的東西,有了核心基礎的鋪墊,我們才能後續的學習文檔對象模型(DOM)和瀏覽器對象模型(BOM).文檔對象模型(DOM)就是操作一些網頁上的一些標籤元素,來實現網頁上的動態效果。而瀏覽器對象模型(BOM)就是像比如說滾動的行為,點擊回到頂部,還有刷新,前進,後退等操作。這些特性就是我們需要了解的內容,在你後續進行詳細學習的時候,就帶着這些特性疑問去學習,會有事半功倍的效果。

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

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

台中景泰電動車行只是一個單純的理由,將來台灣的環境,出門可以自由放心的深呼吸,讓空氣回歸自然的乾淨,減少污染,留給我們下一代有好品質無空污的優質環境

Asp.Net Mvc基於Fleck開發的多人網頁版即時聊天室_網頁設計公司

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

透過資料庫的網站架設建置,建立公司的形象或購物系統,並提供最人性化的使用介面,讓使用者能即時接收到相關的資訊

一、項目的核心說明

1、Fleck這個是實現websocket一個比較簡單第三方組件,它不需要安裝額外的容器。本身也就幾個接口可供調用。

2、項目是基於.net framework 4.7.2 ,在vs2019上開發的,沒試過在低版本上運行。但是代碼上沒怎麼用到新特性,所以估計是可以被低版本使用的。

3、這個項目並不是真實項目,也就是玩一下,但是對熟悉Fleck或者了解及時聊天,應該有一丁點的啟發作用。

 

二、Fleck 的簡要說明(https://github.com/statianzo/Fleck)

1、最簡單、最常用的調用方法:(ws://172.10.3.4:8111改成您的服務器本地IP和端口)

//控制台代碼
var server = new WebSocketServer("ws://172.10.3.4:8111");
server.Start(socket =>
{
  socket.OnOpen = () => Console.WriteLine("產生連接處理");
  socket.OnClose = () => Console.WriteLine("連接斷開處理");
  socket.OnMessage = (message) => {
  //1、此方法用於接收客戶端發送來的消息
  //2、可以做一些自己的操作,例如存入數據庫
  //3、為了響應客戶端,一般會使用下面的send函數,返迴響應結果。
  socket.Send(message);
  }
});

2、Fleck本身只負責幫你單線聯繫。也就是客戶端A和服務器建立連接后,會產生一個IWebSocketConnection,也就是上面代碼中socket變量的類型,它包含了接收方法、發送方法,但是都僅限於單一連接內。至於客戶端A想發送消息給客戶端B、C、D亦或者想群發,不好意思Fleck本身不Care。。。當然了那並不是這個功能就不能實現了,只是要開發者自己去把每一個IWebSocketConnection存儲起來,並管理他們的生存周期,通過自己的代碼去實現客戶端A給B發信息或者群發。

3、Fleck不需要額外的容器或進程來運行,它隨着IIS網站運行,也就是在w3wp.exe。至於它是怎麼運行的,目前我還沒有去看源碼,後期有時間再瞧瞧。

 

三、聊天室源碼位置

1、GitHub:https://github.com/DisSunRestart2020/DisSunChat

2、碼雲:https://gitee.com/dissun/DisSunChat

3、微信掃碼演示(網絡時好時壞)

        

 

四、核心代碼說明。

1、IWebSocketHelper接口。因為一開始,我是想用多個插件來實現聊天室,所以想用一個接口來做行為封裝。結果完成了Fleck之後,發現其他的操作模式都不太相同,很難封裝就放棄了,但是保留這個接口,是為了體現擴展性。

    /// <summary>
    /// 所有調用WebSocket的幫助類必須遵從的協議
    /// </summary>
    public interface IWebSocketHelper
    {
        /// <summary>
        /// websocket連通后觸發事件
        /// </summary>
        event SwitchEventHandler WsOpenEventHandler;
        /// <summary>
        /// websocket連接關閉后觸發事件
        /// </summary>
        event SwitchEventHandler WsCloseEventHandler;
        /// <summary>
        /// websocket監聽到消息后觸發事件
        /// </summary>
        event ListenEventHandler WsListenEventHandler;
        /// <summary>
        /// websocket響應處理事件
        /// </summary>
        event ResponseTextEventHandler WsResponseTextEventHandler;
        /// <summary>
        /// 聊天室在線人數
        /// </summary>
        int PlayerCount
        {
            get;
            set;
        }
        /// <summary>
        /// websocket初始化
        /// </summary>
        void WebSocketInit();

        /// <summary>
        /// 向全員發送信息
        /// </summary>
        /// <param name="wsocketMsg"></param>
        void SendMessageToAll(WebSocketMessage wsocketMsg);
        /// <summary>
        /// 向自己發送信息
        /// </summary>
        /// <param name="wsocketMsg"></param>
        void SendMessageToMe(WebSocketMessage wsocketMsg);
    }

接口中用到了4個委託事件,這裏稍微簡單的複習一下委託和事件。

①委託從使用形式來說,是指我們可以把一個函數作為參數進行傳遞,例如我們在解一道數學題,條件和要求都是一樣的,但是求解的過程可以多種多樣,通過委託就可以在不改變主體程序的同時,把不同的求解過程,封裝到不同的函數中,然後把函數作為參數傳入主體程序。

②委託從模式的角度來說,是在實現觀察者模式。訂閱者\觀察者告訴發布者\主題,如果發生了某一特定事情該怎麼處理,“怎麼處理”的過程就是委託方法的內容

※想知道最厲害的網頁設計公司嚨底家"!

RWD(響應式網頁設計)是透過瀏覽器的解析度來判斷要給使用者看到的樣貌

③事件其實就是一個委託,都說事件是一個特殊委託,特殊在哪裡,特殊在它對委託增加了約束,讓你不能毫無顧忌的使用委託,這是為了保證封裝性。

④上面的4個事件,其實我可以直接換成4個委託屬性,對程序運行不會有太大影響。但是為什麼要使用事件,還是第三點的封裝性。事件本來的用意,是達到特定條件后讓發布者自己來觸發委託方法的執行,但是如果使用委託屬性,訂閱者本身就可以進行調用,封裝性就很差。

⑤上面的4個事件,分別是訂閱者告訴Fleck中心,新長連接接通怎麼辦、長連接斷開怎麼辦、客戶端發來消息怎麼辦、要返回客戶端的消息怎麼轉換。

 

2、Fleck類的實現。Fleck實現了IWebSocketHelper接口,這是這個項目的核心代碼。

  1 public class FleckHelper:IWebSocketHelper
  2     {
  3         /// <summary>
  4         /// websocket連通后觸發事件
  5         /// </summary>
  6         public event SwitchEventHandler WsOpenEventHandler;
  7         /// <summary>
  8         /// websocket連接關閉后觸發事件
  9         /// </summary>
 10         public event SwitchEventHandler WsCloseEventHandler;
 11         /// <summary>
 12         /// websocket監聽到消息后觸發事件
 13         /// </summary>
 14         public event ListenEventHandler WsListenEventHandler;
 15         /// <summary>
 16         /// websocket反饋客戶端的文本處理事件
 17         /// </summary>
 18         public event ResponseTextEventHandler WsResponseTextEventHandler;       
 19         /// <summary>
 20         /// 聊天室在線人數 
 21         /// </summary>
 22         public int PlayerCount
 23         {
 24             get;
 25             set;
 26         }
 27         /// <summary>
 28         /// websocket已經連通的連接集合
 29         /// </summary>
 30         private Hashtable socketListHs = new Hashtable();
 31       
 32         public void WebSocketInit()
 33         {
 34        
 35             string websocketPath = Utils.GetConfig("websocketPath");
 36             WebSocketServer wsServer = new WebSocketServer(websocketPath);            
 37 
 38             wsServer.Start(socket =>
 39             {         
 40                 //以下的設置,每當一個新連接進來,都會生效。
 41                 socket.OnOpen = () => {
 42                     //自定義處理
 43                     
 44                     if (this.WsOpenEventHandler != null)
 45                     {
 46                         WebsocketEventArgs args = new WebsocketEventArgs();
 47                         this.WsOpenEventHandler(this, args);
 48                     }
 49                 };
 50 
 51                 socket.OnClose = () => {
 52                     //從連接集合中移除                    
 53                     for (int i= socketListHs.Count-1; i>=0;i--)
 54                     {
 55                         if (socketListHs[i] == null)
 56                         {                           
 57                             socketListHs.Remove(i);
 58                         }                        
 59                     }
 60                     PlayerCount = socketListHs.Count;
 61                     //自定義處理
 62                     if (this.WsCloseEventHandler != null)
 63                     {
 64                         WebsocketEventArgs args = new WebsocketEventArgs();
 65                         this.WsCloseEventHandler(this, args);
 66                     }
 67                 };
 68 
 69                 socket.OnMessage = (message) =>
 70                 {
 71                     ClientData cData = Utils.JsonToObject<ClientData>(message);
 72                     WebSocketMessage wsocketMsg = new WebSocketMessage(socket.ConnectionInfo.ClientIpAddress, socket.ConnectionInfo.ClientPort.ToString(), socket.ConnectionInfo.Id.ToString("N"), cData);
 73 
 74                     if (Convert.ToBoolean(cData.IsConnSign))
 75                     {
 76                         //收到用戶上線信息,更新socket列表
 77                         if (!socketListHs.ContainsKey(cData.IdentityMd5))
 78                         {
 79                             socketListHs.Add(cData.IdentityMd5, socket);
 80                         }
 81                         else
 82                         {
 83                             socketListHs[cData.IdentityMd5] = socket;
 84                         }
 85                         PlayerCount = socketListHs.Count;
 86                     }
 87 
 88                     if (this.WsListenEventHandler != null)
 89                     {
 90                         WebsocketEventArgs args = new WebsocketEventArgs();
 91                         args.WebSocketMessage = wsocketMsg;
 92                         this.WsListenEventHandler(this, args);
 93                     }
 94                 };
 95 
 96             });
 97         }   
 98 
 99         /// <summary>
100         /// 向全員發送信息
101         /// </summary>
102         /// <param name="wsocketMsg"></param>
103         public void SendMessageToAll(WebSocketMessage wsocketMsg)
104         {           
105             string resultData = "";
106             if (this.WsResponseTextEventHandler != null)
107             {
108                 WebsocketEventArgs args = new WebsocketEventArgs();
109                 args.WebSocketMessage = wsocketMsg;
110                 this.WsResponseTextEventHandler(this, args);
111                 resultData = args.ResultDataMsg;
112             }
113 
114             if (!string.IsNullOrWhiteSpace(resultData))
115             {
116                 foreach (DictionaryEntry dey in socketListHs)
117                 {
118                     IWebSocketConnection subConn = (IWebSocketConnection)dey.Value;
119                     subConn.Send(resultData);
120                 }          
121             }
122         }      
123         
124     }

①代碼中IdentityMd5是我自己通過各種本地信息算出來的身份標識,因為在在微信上運行cookie不穩定,不能在本地存儲任何信息,只能通過算法把環境信息合成一個唯一值。

②前面說過,Fleck只負責單線聯繫,每一個連接都是一個IWebSocketConnection,所以我需要把IdentityMd5和IWebSocketConnection存起來,方便索引調用。

③socket.OnMessage中,socketListHs是存儲IWebSocketConnection的集合,每次有消息發來,如果判斷是新的IdentityMd5就會存起來。

④socket.OnClose 中,如果有連接斷開了,IWebSocketConnection就會為null,所以遍歷集合,然後把值為null剔除就能保持socketListHs集合的有效性

⑤SendMessageToAll函數用於群發消息,遍歷集合中所有的對象,調用每個IWebSocketConnection.Send(),就可以把消息發送出去。如果想從客戶端A發到客戶端B,也得利用IdentityMd5來做文章,本項目由於是聊天室並不需要這個功能,所以就省略了。

⑥socket.OnOpen、socket.OnClose、socket.OnMessage都是Fleck自行觸發的事件,前面一開始我們介紹過了,例如OnOpen中,如果我們需要當建立新連接時記錄日誌,我們就可以對WsOpenEventHandler賦值(本項目在Global.asax的Application_Start中用lambda賦值),如下:

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            RouteConfig.RegisterRoutes(RouteTable.Routes);                   
            App_Start.FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            
         ChatService chatService = new ChatService();
            try
            {

                IWebSocketHelper helper = new FleckHelper();//用FleckHelper來實例化IWebSocketHelper 接口。
                helper.WebSocketInit();
                  
                helper.WsOpenEventHandler +=(sender, args)=>{
                    Utils.SaveLog("WebSocket已經開啟2");
                };

                helper.WsCloseEventHandler += (sender, args) => {
                    Utils.SaveLog("WebSocket已經關閉2");
                };

                helper.WsListenEventHandler += (sender, args) => {
                    Utils.SaveLog("WebSocket監聽到了消息2");
                    if (!Convert.ToBoolean(args.WebSocketMessage.ClientData.IsConnSign))
                    {
                        chatService.CreateChatInfo(args.WebSocketMessage);
                        args.WebSocketMessage.ClientData.SMsg = Utils.ReplaceIllegalWord(args.WebSocketMessage.ClientData.SMsg);
                    }
                    else
                    {
                        string clientName = args.WebSocketMessage.CIp + ":" + args.WebSocketMessage.CPort;
                        string traceInfo = string.Format("{0} 加入聊天室(共{1}人在線)", clientName, helper.PlayerCount);
                        args.WebSocketMessage.ClientData.SMsg = traceInfo;
                    }
                    //給所有人轉發消息
                    helper.SendMessageToAll(args.WebSocketMessage);
                };

                helper.WsResponseTextEventHandler += (sender, args) => {
                    string jsonStr = Utils.ObjectToJsonStr(args.WebSocketMessage);
                    args.ResultDataMsg = jsonStr;
                };

               
            }
            catch(Exception ex)
            {
                Utils.SaveLog("發現了錯誤:" + ex.Message);
            }
        }

 3、在html端連接Fleck,只須一個一個WebSocketJs.js文件。

var socket;
var websocketInit = function (wsPath) {
    if (typeof (WebSocket) === "undefined") {
        socket = null;
        console.log("瀏覽器不支持websocket");
    } else {
        // 實例化socket
        socket = new WebSocket(wsPath);
        // 監聽socket連接
        socket.onopen = wsOnOpen;
        //監聽socket關閉
        socket.onclose = wsOnClose;
        // 監聽socket錯誤信息
        socket.onerror = wsOnError;
        // 監聽socket消息
        socket.onmessage = wsOnMessage;
    }
}


var wsOnOpen = function () {
    console.log("已經成功連接");
    var sMsg = "";

    var sendMsg = "{\"IdentityMd5\":\"" + identityMd5 + "\",\"SMsg\":\"\",\"ImgIndex\":\"" + imgIndex + "\",\"IsConnSign\":\"true\"}";
    socket.send(sendMsg);
}

var wsOnClose = function () {
    console.log("已經關閉連接");
}


var wsOnError = function (evt) {
    console.log("異常:" + evt);
}

var wsSend = function (sMsg) {     
    if (socket == null || sMsg == "") return false;
    console.log("消息成功發出");
    socket.send(sMsg);
}
 

①WebSocket是瀏覽器內置的一個類型,現在一般的瀏覽器都支持,但是還是typeof (WebSocket)來做一下判斷。

②然後在啟動時加載即可(ws://14.215.177.1:8111改成您的服務器公網IP和端口)。

$(function () {
 
    websocketInit("ws://14.215.177.1:8111");    
  
});

 

********** End *****************

上面這些也只是部分代碼,需要可運行代碼,請去github下載源碼。

疫情當前,公司發展不順,舊項目停擺,新項目需求不明。像當前這樣的企業破產潮,我是比較緊張的,畢竟不是小年輕,技術又不是特別過硬,不上不下的焦慮的很。但是也明白,行動起來,每天讓自己靠近目標一點點,是解決焦慮的不二法門。

能寫一些博客,就寫一些博客吧,我也不確定寫這個對我自己有什麼幫助,對讀者都多大的幫助,就當備忘錄吧。

當一個會折騰的“前浪”…

 

歡迎建設性的批評和指導意見。

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

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

當全世界的人們隨著網路時代而改變向上時您還停留在『網站美醜不重要』的舊有思維嗎?機會是留給努力改變現況的人們,別再浪費一分一秒可以接觸商機的寶貴時間!