格陵蘭冰融已難挽回 全球海平面恐升6公尺

摘錄自2020年08月16日中央通訊社格陵蘭報導

新研究顯示,格陵蘭(Greenland)冰層可能已經融化到無法挽回的地步,無論全球以多快的速度降低溫室氣體排放,冰層仍可能繼續融化。如果格陵蘭的冰全部融化,全球海平面平均將上升6公尺。

路透社報導,科學家研究橫跨北極234個冰川截至2018年的34年數據發現,年降雪量已經不足以補充冰川在夏季融化而流失的雪和冰。冰川融化已造成全球海平面每年平均上升1公釐。如果格陵蘭的冰全部融化,足以淹沒全球許多沿海城市,不過這個過程將花上數十年。

過去30年來,北極暖化的速度比起全球其他區域至少快兩倍,此現象被稱為「北極放大」效應,而極地海冰在今年7月創下40年來最低點。科學家表示,全球仍能透過降低碳排來減緩氣候變遷,即使格陵蘭難再累積覆蓋其200萬平方公里的冰層,遏制全球氣溫上升也能放慢冰層流失的速度。

氣候變遷
國際新聞
格陵蘭
冰川融化
海平面上升

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

重學 Java 設計模式:實戰外觀模式「基於SpringBoot開發門面模式中間件,統一控制接口白名單場景」

作者:小傅哥
博客:https://bugstack.cn

沉澱、分享、成長,讓自己和他人都能有所收穫!

一、前言

你感受到的容易,一定有人為你承擔不容易

這句話更像是描述生活的,許許多多的磕磕絆絆總有人為你提供躲雨的屋檐和避風的港灣。其實編程開發的團隊中也一樣有人只負責CRUD中的簡單調用,去使用團隊中高級程序員開發出來的核心服務和接口。這樣的編程開發對於初期剛進入程序員行業的小夥伴來說鍛煉鍛煉還是不錯的,但隨着開發的日子越來越久一直做這樣的事情就很難得到成長,也想努力的去做一些更有難度的承擔,以此來增強個人的技術能力。

沒有最好的編程語言,語言只是工具

刀槍棍棒、斧鉞鈎叉、包子油條、盒子麻花,是語言。五郎八卦棍、十二路彈腿、洪家鐵線拳,是設計。記得恭弘=叶 恭弘問里有一句台詞是:金山找:今天我北方拳術,輸給你南方拳術了。恭弘=叶 恭弘問:你錯了,不是南北拳的問題,是你的問題。所以當你編程開發寫的久了,就不會再特別在意用的語言,而是為目標服務,用最好的設計能力也就是編程的智慧做出做最完美的服務。這也就是編程人員的價值所在!

設計與反設計以及過渡設計

設計模式是解決程序中不合理、不易於擴展、不易於維護的問題,也是幹掉大部分ifelse的利器,在我們常用的框架中基本都會用到大量的設計模式來構建組件,這樣也能方便框架的升級和功能的擴展。但!如果不能合理的設計以及亂用設計模式,會導致整個編程變得更加複雜難維護,也就是我們常說的;反設計過渡設計。而這部分設計能力也是從實踐的項目中獲取的經驗,不斷的改造優化摸索出的最合理的方式,應對當前的服務體量。

二、開發環境

  1. JDK 1.8
  2. Idea + Maven
  3. SpringBoot 2.1.2.RELEASE
  4. 涉及工程三個,可以通過關注公眾號bugstack蟲洞棧,回復源碼下載獲取(打開獲取的鏈接,找到序號18)
工程 描述
itstack-demo-design-10-00 場景模擬工程;模擬一個提供接口服務的SpringBoot工程
itstack-demo-design-10-01 使用一坨代碼實現業務需求
itstack-demo-design-10-02 通過設計模式開發為中間件,包裝通用型核心邏輯

三、外觀模式介紹

外觀模式也叫門面模式,主要解決的是降低調用方的使用接口的複雜邏輯組合。這樣調用方與實際的接口提供方提供方提供了一个中間層,用於包裝邏輯提供API接口。有些時候外觀模式也被用在中間件層,對服務中的通用性複雜邏輯進行中間件層包裝,讓使用方可以只關心業務開發。

那麼這樣的模式在我們的所見產品功能中也經常遇到,就像幾年前我們註冊一個網站時候往往要添加很多信息,包括;姓名、昵稱、手機號、QQ、郵箱、住址、單身等等,但現在註冊成為一個網站的用戶只需要一步即可,無論是手機號還是微信也都提供了這樣的登錄服務。而對於服務端應用開發來說以前是提供了一個整套的接口,現在註冊的時候並沒有這些信息,那麼服務端就需要進行接口包裝,在前端調用註冊的時候服務端獲取相應的用戶信息(從各個渠道),如果獲取不到會讓用戶後續進行補全(營銷補全信息給獎勵),以此來拉動用戶的註冊量和活躍度。

四、案例場景模擬

在本案例中我們模擬一個將所有服務接口添加白名單的場景

在項目不斷壯大發展的路上,每一次發版上線都需要進行測試,而這部分測試驗證一般會進行白名單開量或者切量的方式進行驗證。那麼如果在每一個接口中都添加這樣的邏輯,就會非常麻煩且不易維護。另外這是一類具備通用邏輯的共性需求,非常適合開發成組件,以此來治理服務,讓研發人員更多的關心業務功能開發。

一般情況下對於外觀模式的使用通常是用在複雜或多個接口進行包裝統一對外提供服務上,此種使用方式也相對簡單在我們平常的業務開發中也是最常用的。你可能經常聽到把這兩個接口包裝一下,但在本例子中我們把這種設計思路放到中間件層,讓服務變得可以統一控制。

1. 場景模擬工程

itstack-demo-design-10-00
└── src
    ├── main
    │   ├── java
    │   │   └── org.itstack.demo.design
    │   │       ├── domain
    │   │       │	└── UserInfo.java
    │   │       ├── web	
    │   │       │	└── HelloWorldController.java
    │   │       └── HelloWorldApplication.java
    │   └── resources	
    │       └── application.yml	
    └── test
        └── java
            └── org.itstack.demo.test
                └── ApiTest.java
  • 這是一個SpringBootHelloWorld工程,在工程中提供了查詢用戶信息的接口HelloWorldController.queryUserInfo,為後續擴展此接口的白名單過濾做準備。

2. 場景簡述

2.1 定義基礎查詢接口

@RestController
public class HelloWorldController {

    @Value("${server.port}")
    private int port;

    /**
     * key:需要從入參取值的屬性字段,如果是對象則從對象中取值,如果是單個值則直接使用
     * returnJson:預設攔截時返回值,是返回對象的Json
     *
     * http://localhost:8080/api/queryUserInfo?userId=1001
     * http://localhost:8080/api/queryUserInfo?userId=小團團
     */
    @RequestMapping(path = "/api/queryUserInfo", method = RequestMethod.GET)
    public UserInfo queryUserInfo(@RequestParam String userId) {
        return new UserInfo("蟲蟲:" + userId, 19, "天津市南開區旮旯衚衕100號");
    }

}
  • 這裏提供了一個基本的查詢服務,通過入參userId,查詢用戶信息。後續就需要在這裏擴展白名單,只有指定用戶才可以查詢,其他用戶不能查詢。

2.2 設置Application啟動類

@SpringBootApplication
@Configuration
public class HelloWorldApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloWorldApplication.class, args);
    }

}
  • 這裡是通用的SpringBoot啟動類。需要添加的是一個配置註解@Configuration,為了後續可以讀取白名單配置。

五、用一坨坨代碼實現

一般對於此種場景最簡單的做法就是直接修改代碼

累加if塊幾乎是實現需求最快也是最慢的方式,是修改當前內容很快,是如果同類的內容幾百個也都需要如此修改擴展和維護會越來越慢。

1. 工程結構

itstack-demo-design-10-01
└── src
    └── main
        └── java
            └── org.itstack.demo.design
                └── HelloWorldController.java
  • 以上的實現是模擬一個Api接口類,在裏面添加白名單功能,但類似此類的接口會有很多都需要修改,所以這也是不推薦使用此種方式的重要原因。

2. 代碼實現

public class HelloWorldController {

    public UserInfo queryUserInfo(@RequestParam String userId) {

        // 做白名單攔截
        List<String> userList = new ArrayList<String>();
        userList.add("1001");
        userList.add("aaaa");
        userList.add("ccc");
        if (!userList.contains(userId)) {
            return new UserInfo("1111", "非白名單可訪問用戶攔截!");
        }

        return new UserInfo("蟲蟲:" + userId, 19, "天津市南開區旮旯衚衕100號");
    }

}
  • 在這裏白名單的代碼佔據了一大塊,但它又不是業務中的邏輯,而是因為我們上線過程中需要做的開量前測試驗證。
  • 如果你日常對待此類需求經常是這樣開發,那麼可以按照此設計模式進行優化你的處理方式,讓後續的擴展和摘除更加容易。

六、外觀模式重構代碼

接下來使用外觀器模式來進行代碼優化,也算是一次很小的重構。

這次重構的核心是使用外觀模式也可以說門面模式,結合SpringBoot中的自定義starter中間件開發的方式,統一處理所有需要白名單的地方。

後續接下來的實現中,會涉及的知識;

  1. SpringBoot的starter中間件開發方式。
  2. 面向切面編程和自定義註解的使用。
  3. 外部自定義配置信息的透傳,SpringBoot與Spring不同,對於此類方式獲取白名單配置存在差異。

1. 工程結構

itstack-demo-design-10-02
└── src
    ├── main
    │   ├── java
    │   │   └── org.itstack.demo.design.door
    │   │       ├── annotation
    │   │       │	└── DoDoor.java	
    │   │       ├── config
    │   │       │	├── StarterAutoConfigure.java
    │   │       │	├── StarterService.java
    │   │       │	└── StarterServiceProperties.java
    │   │       └── DoJoinPoint.java
    │   └── resources	
    │       └── META_INF
    │           └── spring.factories
    └── test
        └── java
            └── org.itstack.demo.test
                └── ApiTest.java

門面模式模型結構

  • 以上是外觀模式的中間件實現思路,右側是為了獲取配置文件,左側是對於切面的處理。
  • 門面模式可以是對接口的包裝提供出接口服務,也可以是對邏輯的包裝通過自定義註解對接口提供服務能力。

2. 代碼實現

2.1 配置服務類

public class StarterService {

    private String userStr;

    public StarterService(String userStr) {
        this.userStr = userStr;
    }

    public String[] split(String separatorChar) {
        return StringUtils.split(this.userStr, separatorChar);
    }

}
  • 以上類的內容較簡單隻是為了獲取配置信息。

2.2 配置類註解定義

@ConfigurationProperties("itstack.door")
public class StarterServiceProperties {

    private String userStr;

    public String getUserStr() {
        return userStr;
    }

    public void setUserStr(String userStr) {
        this.userStr = userStr;
    }

}
  • 用於定義好後續在 application.yml 中添加 itstack.door 的配置信息。

2.3 自定義配置類信息獲取

@Configuration
@ConditionalOnClass(StarterService.class)
@EnableConfigurationProperties(StarterServiceProperties.class)
public class StarterAutoConfigure {

    @Autowired
    private StarterServiceProperties properties;

    @Bean
    @ConditionalOnMissingBean
    @ConditionalOnProperty(prefix = "itstack.door", value = "enabled", havingValue = "true")
    StarterService starterService() {
        return new StarterService(properties.getUserStr());
    }

}
  • 以上代碼是對配置的獲取操作,主要是對註解的定義;@Configuration@ConditionalOnClass@EnableConfigurationProperties,這一部分主要是與SpringBoot的結合使用。

2.4 切面註解定義

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DoDoor {

    String key() default "";

    String returnJson() default "";

}
  • 定義了外觀模式門面註解,後續就是此註解添加到需要擴展白名單的方法上。
  • 這裏提供了兩個入參,key:獲取某個字段例如用戶ID、returnJson:確定白名單攔截后返回的具體內容。

2.5 白名單切面邏輯

@Aspect
@Component
public class DoJoinPoint {

    private Logger logger = LoggerFactory.getLogger(DoJoinPoint.class);

    @Autowired
    private StarterService starterService;

    @Pointcut("@annotation(org.itstack.demo.design.door.annotation.DoDoor)")
    public void aopPoint() {
    }

    @Around("aopPoint()")
    public Object doRouter(ProceedingJoinPoint jp) throws Throwable {
        //獲取內容
        Method method = getMethod(jp);
        DoDoor door = method.getAnnotation(DoDoor.class);
        //獲取字段值
        String keyValue = getFiledValue(door.key(), jp.getArgs());
        logger.info("itstack door handler method:{} value:{}", method.getName(), keyValue);
        if (null == keyValue || "".equals(keyValue)) return jp.proceed();
        //配置內容
        String[] split = starterService.split(",");
        //白名單過濾
        for (String str : split) {
            if (keyValue.equals(str)) {
                return jp.proceed();
            }
        }
        //攔截
        return returnObject(door, method);
    }

    private Method getMethod(JoinPoint jp) throws NoSuchMethodException {
        Signature sig = jp.getSignature();
        MethodSignature methodSignature = (MethodSignature) sig;
        return getClass(jp).getMethod(methodSignature.getName(), methodSignature.getParameterTypes());
    }

    private Class<? extends Object> getClass(JoinPoint jp) throws NoSuchMethodException {
        return jp.getTarget().getClass();
    }

    //返回對象
    private Object returnObject(DoDoor doGate, Method method) throws IllegalAccessException, InstantiationException {
        Class<?> returnType = method.getReturnType();
        String returnJson = doGate.returnJson();
        if ("".equals(returnJson)) {
            return returnType.newInstance();
        }
        return JSON.parseObject(returnJson, returnType);
    }

    //獲取屬性值
    private String getFiledValue(String filed, Object[] args) {
        String filedValue = null;
        for (Object arg : args) {
            try {
                if (null == filedValue || "".equals(filedValue)) {
                    filedValue = BeanUtils.getProperty(arg, filed);
                } else {
                    break;
                }
            } catch (Exception e) {
                if (args.length == 1) {
                    return args[0].toString();
                }
            }
        }
        return filedValue;
    }

}
  • 這裏包括的內容較多,核心邏輯主要是;Object doRouter(ProceedingJoinPoint jp),接下來我們分別介紹。

@Pointcut(“@annotation(org.itstack.demo.design.door.annotation.DoDoor)”)

定義切面,這裏採用的是註解路徑,也就是所有的加入這個註解的方法都會被切面進行管理。

getFiledValue

獲取指定key也就是獲取入參中的某個屬性,這裏主要是獲取用戶ID,通過ID進行攔截校驗。

returnObject

返回攔截后的轉換對象,也就是說當非白名單用戶訪問時則返回一些提示信息。

doRouter

切面核心邏輯,這一部分主要是判斷當前訪問的用戶ID是否白名單用戶,如果是則放行jp.proceed();,否則返回自定義的攔截提示信息。

3. 測試驗證

這裏的測試我們會在工程:itstack-demo-design-10-00中進行操作,通過引入jar包,配置註解的方式進行驗證。

3.1 引入中間件POM配置

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>itstack-demo-design-10-02</artifactId>
</dependency>
  • 打包中間件工程,給外部提供jar包服務

3.2 配置application.yml

# 自定義中間件配置
itstack:
  door:
    enabled: true
    userStr: 1001,aaaa,ccc #白名單用戶ID,多個逗號隔開
  • 這裏主要是加入了白名單的開關和白名單的用戶ID,逗號隔開。

3.3 在Controller中添加自定義註解

/**
 * http://localhost:8080/api/queryUserInfo?userId=1001
 * http://localhost:8080/api/queryUserInfo?userId=小團團
 */
@DoDoor(key = "userId", returnJson = "{\"code\":\"1111\",\"info\":\"非白名單可訪問用戶攔截!\"}")
@RequestMapping(path = "/api/queryUserInfo", method = RequestMethod.GET)
public UserInfo queryUserInfo(@RequestParam String userId) {
    return new UserInfo("蟲蟲:" + userId, 19, "天津市南開區旮旯衚衕100號");
}
  • 這裏核心的內容主要是自定義的註解的添加@DoDoor,也就是我們的外觀模式中間件化實現。
  • key:需要從入參取值的屬性字段,如果是對象則從對象中取值,如果是單個值則直接使用。
  • returnJson:預設攔截時返回值,是返回對象的Json。

3.4 啟動SpringBoot

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.2.RELEASE)

2020-06-11 23:56:55.451  WARN 65228 --- [           main] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)
2020-06-11 23:56:55.531  INFO 65228 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2020-06-11 23:56:55.533  INFO 65228 --- [           main] o.i.demo.design.HelloWorldApplication    : Started HelloWorldApplication in 1.688 seconds (JVM running for 2.934)
  • 啟動正常,SpringBoot已經啟動可以對外提供服務。

3.5 訪問接口接口測試

白名單用戶訪問

http://localhost:8080/api/queryUserInfo?userId=1001

{"code":"0000","info":"success","name":"蟲蟲:1001","age":19,"address":"天津市南開區旮旯衚衕100號"}
  • 此時的測試結果正常,可以拿到接口數據。

非白名單用戶訪問

http://localhost:8080/api/queryUserInfo?userId=小團團

{"code":"1111","info":"非白名單可訪問用戶攔截!","name":null,"age":null,"address":null}
  • 這次我們把userId換成小團團,此時返回的信息已經是被攔截的信息。而這個攔截信息正式我們自定義註解中的信息:@DoDoor(key = "userId", returnJson = "{\"code\":\"1111\",\"info\":\"非白名單可訪問用戶攔截!\"}")

七、總結

  • 以上我們通過中間件的方式實現外觀模式,這樣的設計可以很好的增強代碼的隔離性,以及復用性,不僅使用上非常靈活也降低了每一個系統都開發這樣的服務帶來的風險。
  • 可能目前你看這隻是非常簡單的白名單控制,是否需要這樣的處理。但往往一個小小的開始會影響着後續無限的擴展,實際的業務開發往往也要複雜的很多,不可能如此簡單。因而使用設計模式來讓代碼結構更加乾淨整潔。
  • 很多時候不是設計模式沒有用,而是自己編程開發經驗不足導致即使學了設計模式也很難駕馭。畢竟這些知識都是經過一些實際操作提煉出來的精華,但如果你可以按照本系列文章中的案例方式進行學習實操,還是可以增強這部分設計能力的。

八、推薦閱讀

  • 1. 重學 Java 設計模式:實戰工廠方法模式(多種類型商品發獎場景)
  • 2. 重學 Java 設計模式:實戰抽象工廠模式(替換Redis雙集群升級場景)
  • 3. 重學 Java 設計模式:實戰建造者模式(裝修物料組合套餐選配場景)
  • 4. 重學 Java 設計模式:實戰原型模式(多套試每人題目和答案亂序場景)
  • 5. 重學 Java 設計模式:實戰橋接模式(多支付渠道「微信、支付寶」與多支付模式「刷臉、指紋」場景)
  • 6. 重學 Java 設計模式:實戰組合模式(營銷差異化人群發券,決策樹引擎搭建場景)

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

用社群媒體對抗珊瑚白化 菲律賓鼓勵潛客拍照上傳App 民間自發響應監測

環境資訊中心綜合外電;黃鈺婷 翻譯;林大利 審校;稿源:Mongabay

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

五菱宏光就算加了S,在這幾輛麵包車面前也得跪!

如果說福特那個有點想法那下面這個就是變態,因為它搭載的是一台不折不扣的F1 賽車引擎。最高輸出597 kw,峰值扭矩705 牛米,並且採用中置后驅布局。匹配的是一台碳纖維6速半自動變速箱,0-62英里加速僅需2。89秒(你沒有看錯),0-200km/h加速也僅需6。

當我們還在說國產SUV每個月多暢銷,德國原裝進口車一個月賣了多少輛的時候,上汽通用五菱發布了最新銷量數據:2016年總銷量突破213萬輛大關,其中五菱宏光系列就狂銷了65萬輛。這絕對是名副其實的不敗傳說。

但是在這兩輛麵包車面前,不要說五菱宏光S,就是以後出五菱宏光M、AMG五菱宏光在它們面前都是渣渣!說起偽裝車我們的印象就是一身斑馬皮的諜照。但是以前的廠商可不是這麼玩的。

當年捷豹在開發XJ220時,為了保密,使用了VE6一代的全順作為XJ220發動機的測試用車,Transit mule car for Jaguar XJ200 engine test。

TWR作為捷豹當時的技術合作方,弄出了極速170邁的全順。雖然XJ220最為遺憾的事情就是沒有搭載V12發動機,也沒有完成220英里的極速,但也並不妨礙它成了一代傳奇。

這輛全順搭載了其3.0L雙渦輪增壓V6發動機。功率達到640馬力(量產的XJ220功率被調低至542馬力)。事實上不僅是發動機,這就是台套了全順殼的XJ220 ,可以看到連輪轂都是同款。XJ220開發結束后,捷豹的技術合作方TWR將這輛全順賣給了一支使用XJ220作為賽車的私人車隊——Don Law Racing,所以每年的Goodwood速度節還經常能夠看到這輛捷豹順的出鏡。

如果說福特那個有點想法那下面這個就是變態,因為它搭載的是一台不折不扣的F1 賽車引擎。最高輸出597 kw,峰值扭矩705 牛米,並且採用中置后驅布局。

匹配的是一台碳纖維6速半自動變速箱,0-62英里加速僅需2.89秒(你沒有看錯),0-200km/h加速也僅需6.9秒,在碳纖維陶瓷剎車和通風碟的幫助下,從0加速到270公里時速再靜止下來整個過程竟然不到600米。

除了引擎蓋,車頂和車尾門保持原廠的金屬材質,底盤和Espace J63車身都改為輕量化碳纖維,內裝也覆蓋碳纖維,車內不必要的設備均移除。

並安裝了4個碳纖維桶式座椅加裝三點式安全帶和大型防滾架,前懸挂由威廉姆斯工程師專門設計,后懸挂來自FW15C,18英寸輪圈來自Ronal。

與之匹配的是特製的米其林輪胎,整車離地間隙為100mm,車重僅為1300kg,車長443 cm,寬205 cm,此車還有一個最值得注意的地方,那就車頂那個誇張的尾翼在賽道上產生1.5-2G的下壓力。

雖然車身外觀發生了變化,但他完完全全不折不扣是一台套着新殼的FW15C賽車,連啟動方式都一樣,必須連接外部電腦手動打火。

聽起來就很貴的樣子?所以也只造了兩台,一台是用於展出,另一台則是負責測試工作。可能在大多數人眼中這種車完全沒有意義甚至有點傻X,也許正是這些看似沒有意義的東西才給了我們茶餘飯後的話題。

聽到V10的咆哮,宏光S有感到顫抖嗎?

本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

一款什麼樣的轎車才是符合當下潮流的選擇?

CADS3帶行人識別感應制動保護系統,對於前方靜止和移動的事物都有着靈敏的感知能力,預防車輛外界碰撞盡在分寸之間。ACC全速智能自適應巡航控制系統,最高可在180KM/H的工況下,實時監視前方路況信息,隨時保持安全車距,讓出行更加放心。

試想一下

你是一個職場精英

工作與家庭的特性

你需要購置一台轎車

你的選擇會是什麼?

你又會想你的車有着怎麼樣的優點?

高顏值的汽車外觀?還是洶湧澎湃的動力輸出?

正所謂情人眼裡出西施,一台車在不同的人眼裡,有着不一樣的顏值標準。一台車的顏值高低,向來是一個見仁見智無法量化的標準。

而汽車的油耗是用車成本的第一筆也是最大的一筆支出,相信每一個車主都不忍心看到在加油站時那冷酷的加油機上不斷跳躍上升的数字,它每跳動一下,都是我們錢包里紅通通的人民幣。

所以你需要的,是一款智能的汽車

正在用手機看文章的你,一定知道現在是一個智能化的信息時代,隨着科技的發展,智能化設備在生活中的普及程度越來越高,作為從一個代步工具逐漸成為我們生活中的夥伴、家庭中重要一員的汽車來說,智能化、信息化的進化方式也成了當下提升汽車品質、豐富人們生活的流行趨勢;

2017款新蒙迪歐順應信息時代的潮流智行而來,致力成為國內領先的科技網聯智能高品質B級車。

智行:輔助駕駛,行車安全盡在掌控之中

行車安全是每一個汽車駕駛員在駕車時都需要第一位考慮的重要事項,2017款新蒙迪歐,植入智能的大腦,對於行車安全具備更主動的思考能力。

2017款新蒙迪歐採用全新設計的豪華內飾,並在座椅中植入按摩功能,在路途中讓駕乘人員時刻感受到舒適與一台B級車應該有的高檔感。並輔以全方位安全配置,極大程度上保證了車輛與人身安全。

LKA車道保持輔助系統,全程監測兩側車道標記,全天候的提醒並輔助車輛在車道上無意識的誤操作,穩定行車軌跡,將意外發生的可能性降至最低。

CADS3帶行人識別感應制動保護系統,對於前方靜止和移動的事物都有着靈敏的感知能力,預防車輛外界碰撞盡在分寸之間。

ACC全速智能自適應巡航控制系統,最高可在180KM/H的工況下,實時監視前方路況信息,隨時保持安全車距,讓出行更加放心。

此外,2017款新蒙迪歐還配備主動泊車系統與全車10氣囊環繞式安全防護、氣囊式安全帶真正做到便利輔助、安全出行。

智擎:從心出發,引領智慧動力

作為一台汽車運轉的核心,2017款新蒙迪歐所搭載的全新升級1.5T和2.0T渦輪增壓發動機,採用先進的雙渦流渦輪增壓技術,有效緩解普通渦輪增壓車型擁有的渦輪遲滯,最大扭矩平台爆發時間較早,在提升動力的同時,配合上出色的發動機啟停功能,更出色有效的控制了燃油經濟性,並且平穩的運轉特性擁有着非常優秀的隔音效果,在提升動力輸出的同時,並不會對車內人員造成過分的噪音影響。

與這台發動機配合的是一台6速手自一體變速箱,採用先進的E-shifter电子旋鈕式換擋器,操作更加靈活編輯,視覺上也更具科技感與檔次感。

此外除了汽油版車型以外,2017款新蒙迪歐引入了HEV混合動力版本車型,阿特金森循環的發動機配合上電動機一同聯動,並且加上ECVT變速箱的輔助,使得2017款新蒙迪歐混合動力版本有着業內領先的燃油經濟性、行車途中出色的車內靜謐性;並且由於有着先進的軟件控制,使得2017款新蒙迪歐混動在動力和油耗間做到更完美的平衡,不失高效傳動的特性更兼顧環境保護能力,智慧動力,與時俱進。

智聯:智能人機,出行便利僅在彈指之間

現如今的生活離不開智能,我們每天使用的电子設備和移動終端都向智能化和便捷化發展,

作為一台與時俱進的科技網聯B級座駕,2017款新蒙迪歐使用車載互聯模塊+Fordpass技術,在2017款新蒙迪歐與智能手機之間架設起一座互聯的橋樑,便於車主對2017款新蒙迪歐進行遠程開閉汽車鎖、遠程啟動、汽車定位、更可以方便車主隨時查看汽車狀態。

2017款新蒙迪歐所使用的SYNC3智能聲控多媒體系統,可以非常便利地讓駕駛者解放雙手而在駕車過程中延續社交的習慣,與Siri無縫鏈接,讓語音指令得以迅速的響應,高精度的電容屏幕可以精確地識別連寫字體,讓輸入不再成為車載多媒體的弊端。

作為時代的寵兒,2017款新蒙迪歐,一款科技網聯座駕順應而生,它在人、車、與智能信息終端間架起了一條無縫對接的橋樑,一款真正智能的汽車,才是真正智能、安全、高效出行的行業典範。

科技是人類進步的階梯,智能是品質生活的主題,2017款新蒙迪歐,智行、智擎、智聯的“三智”科技網聯B級車,在車內配置和使用檔次上提供給人們便利的同時,更將車輛安全和人身安全提升到行業領先級別,一款安全、智能的高科技網聯智能座駕,方為當下潮流品質之選。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

css3中的@font-face你真的了解嗎

css3中的自定義字體方法@font-face

@font-face屬性可以讓我們自定義網站字體屬性,然後引用到想要應用該字體的元素上。

基本語法:

@font-face {
  font-family: <font-name>;
  src: local( <family-name> ) | <url> [format("formatName")][,<url> [format("formatName")]]*;
  unicode-range: <unicode-range>;
  font-variant: <font-variant>;
  font-feature-settings: <font-feature-settings>;
  font-variation-settings: <font-variation-settings>;
  font-stretch: <font-stretch>;
  font-weight: <font-weight>;
  font-style: <font-style>;
  font-display: <font-display>;
}

屬性規則說明

font-family

給你引入的字體起一個專屬的字體名字,font-name,然後他會在元素font-family:中使用,如div{font-family:font-name}

src

用於指定加載字體文件的路徑或者加載本地字體

local

加載一個本地字體,font-name表示本地的字體名稱,比如Microsoft YaHei | 微軟雅黑;如果本地有應用此字體显示文本。

示例:

/* 加載一個本地字體 */
@font-face{
  font-family: myFont;
  src: local('Microsoft YaHei');
}
/* 加載多個本地字體 */
@font-face{
  font-family: myFont;
  src:  local(黑體), local("Microsoft YaHei"), local("HelveticaNeue-Light"), local("Helvetica Neue Light"),  local("PingFang SC"), local(sans-serif);
}
/* 應用自定義字體 */
.box{
  font-family: myFont;
}

在上邊代碼中看到,可以使用一個或多個local,多個之間用逗號分開,括號中的字體名稱可以使用單引號或者雙引號括起來,也可以不帶引號直接寫字體名稱,有空格的必須添加引號,但是只能寫一個字體名稱
上邊的寫法讓我們在定義字體的時候變得方便很多,我們只需要定義好自定義名稱然後直接引用該字體等同於下邊代碼:

.box{
  font-family: 黑體, "Microsoft YaHei", "HelveticaNeue-Light", "Helvetica Neue Light", "PingFang SC", sans-serif;
}

url

表示服務器端提供的字體地址,這個也是可以使用多個,多個之間用逗號隔開,一般寫多個是為了瀏覽器兼容加載不同格式的字體。目前web可以加載六種格式的字體:

  1. EOT:全拼:Embedded_OpenType,是由微軟開發的字體格式規範,所以只適用於IE瀏覽器。詳細介紹

兼容:

兼容詳情

  1. TTF:全拼:TrueType,是一種輪廓字體標準,最早是由蘋果公司研發,後來成為Mac OSMicrosoft Windows系統中最常用的字體格式。詳細介紹

兼容:

兼容詳情
3. OTF:全拼:OpenType,是可縮放計算機字體的格式,是由微軟和Adobe公司聯合開發。詳細介紹

兼容:

兼容詳情
4. WOFF:全拼:Web Open Font Formatweb網絡開放字體格式,他是專為網絡設計的一種字體格式,WOFF是把OpenTypeTrueType字體進行了封裝,並進行了壓縮優化,它使用了廣泛應用的zlib壓縮,並添加了XML元數據,這種字體格式體積更小,適用於網絡傳輸,可以使用戶體驗做到更好。詳細介紹

兼容:

兼容詳情
5. WOFF2:它是WOFF的升級版,它使用Brotli進行字節級壓縮,比WOFF體積更小

兼容:

兼容詳情

  1. SVG:全拼:Scalable Vector Graphics可縮放矢量圖形,是一種基於可擴展標記語言(XML)的矢量圖像格式,用於二維圖形,並支持交互性和動畫,字體中就是使用svg技術來呈現文字樣式。我測試只有蘋果Safari支持; 詳細介紹

兼容:

兼容詳情

format

可選值,表示給加載的外部字體指定字體格式,用來告訴瀏覽器讓瀏覽器能夠識別所使用的字體格式,可用的類型有 embedded-opentype, truetype, opentype, woff, woff2, svg。分別對應上邊我們介紹的字體格式。

語法:

/* 加載一種字體格式 */
@font-face{
  font-family: "myFontName";
  src:  url('font.woff') format('woff');
}

/* 加載多個字體格式,兼容更多瀏覽器 */
@font-face{
  font-family: "myFontName";
  src: url('font.eot'); /* IE9*/
  src: url('font.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
  url('font.woff2') format('woff2'),
  url('font.woff') format('woff'), /* chrome、firefox */
  url('font.ttf') format('truetype'), /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/
  url('font.svg#Alibaba-PuHuiTi-Regular') format('svg'); /* iOS 4.1- */
}

從上邊語法來看我們可以加載一個格式的字體文件,也可以加載多個格式字體,之間用逗號分開,瀏覽器會優先讀取寫在前面的字體格式並且檢測是否支持,如果支持就使用該格式的字體文件。

font-weight

表示自定義字體規則的字重程度,我們可以給一個字體指定不同的粗細規則引用不同規格的字體文件。

語法:

/* Single values */
font-weight: normal;
font-weight: bold;
font-weight: 400;

/* Multiple Values */
font-weight: normal bold;
font-weight: 300 500;

取值說明:

  1. normal:默認值,表示該字體規則是在默認情況下的字體,也就是在應用改字體的元素中不規定字體的粗細情況或者font-weight: 400 | normal下應用該字體;
  2. bold:粗體,表示元素設置font-weight: bold | 700,或者使用<b><strong>元素的時候應用該字體。
  3. 400:也可以設置成數值,在CSS Fonts Level 4之前的版本只能去100-900的100倍數值,之後的數值可以去1-1000的任意數值。
  4. normal bold:可以使用多個關鍵字來定義此字體規則,多個關鍵字之間用逗號分開,表示元素字重設置為此關鍵字中的其中一個值時應用該字體。
  5. 300 500:也可以使用多個數值來定義此字體規則。

取數值情況下應該對應的每個字體:

value 對應的字體的自重名稱
100 Thin (Hairline)
200 Extra Light (Ultra Light)
300 Light
400 Normal
500 Medium
600 Semi Bold (Demi Bold)
700 Bold
800 Extra Bold (Ultra Bold)
900 Black (Heavy)

代碼示例:因為字體有版權限制,這裏我們使用阿里的免費商用字體來演示

https://codepen.io/qwguo88/full/jObgQYG

從上邊的案例我們可以看出,先自定義了一個名為FW的字體,並且使用font-weight定義不同字重使用不同的字體。在上邊的案例中定義了5中字重樣式,分別是bold阿里巴巴-普惠體-Heavy100楊任東竹石體-Bold200站酷高端黑300 600龐門正道標題體2900思源黑體-粗
然後給div設置font-family:FW;最後我們分別給這個div下的每個段落設置不同的font-weight,段落的字體就會根據不同的字重來應用不同的字體。
我們可以把自定義字體看成我們平常使用系統內置字體一樣,當我們設置字體為微軟雅黑,並且設置不同的字重他會在系統中尋找每個自重對應的字體,然後來显示。

font-style

表示自定義字體規則的樣式表現形式,我們可以給一個字體指定不同的樣式規則引用不同規格的字體文件。

語法:

font-style: normal | italic | oblique <angle>{0,2}

取值說明:

  1. normal:默認字樣式使用的字體規則,當我們不設置或者設置成此值時的字體。
  2. italic:表示字樣式設置成斜體的時候使用的字體規則。
  3. oblique:表示字樣式設置成斜體的時候使用的字體規則。

當我們同時定義italicoblique規則的字體時,寫在後邊的生效所設置的斜體字體显示。

代碼示例: https://codepen.io/qwguo88/full/RwWXONo

unicode-range

表示自定義字體規則的unicode字符範圍

語法:

/* unicode-range 取值規則 */
unicode-range: U+26;                /* 單個值 */
unicode-range: U+0-7F;              /* 字符編碼區間*/
unicode-range: U+0025-00FF;        /* 字符編碼區間 */
unicode-range: U+4??;              /* 通配符區間 */
unicode-range: U+0025-00FF, U+4??; /* 可以寫多個值,多個值之間用逗號分開 */

取值說明:
取值規則:前邊是U+後邊跟上字符的charCode

  1. 可以是單個值,表示文本中只有該字符的字應用該字體。
  2. 可以使用一個字符區間,表示文本中如果有在此區間的文字將應用改字體規則。
  3. 也可以使用通配符來設置一個區間規則其中?表示一個16進制0-F的之間的值U+4??表示 U+400U+4FF區間的字符編碼。
  4. 也可以使用多個值,多個值之間使用逗號分開。

案例:https://codepen.io/qwguo88/full/XWXWqmP

從上邊案例可以看出,unicode-range是用來規定應用當前字體規則的文字unicode碼在規則內的將以此字體規則显示字體。
他能讓我們來控制一個段落中的個別字的显示效果,一般要显示的字體規則排在最前面,將優先显示。

font-display

設置自定義字體在沒有加載完的显示方式取值如下:

語法:

font-display: auto | block | swap | fallback | optional
  1. auto:字體显示策略由用戶代理定義。
  2. block:為字體提供一個短暫的阻塞周期和無限的交換周期。也就是說等字體加載完以後字體显示效果會自動更新成改字體
  3. swap:為字體提供一個非常小的阻塞周期和無限的交換周期。也就是說等字體加載完以後字體显示效果會自動更新成改字體
  4. fallback:為字體提供一個非常小的阻塞周期和短暫的交換周期。也就是說等字體加載在過了一定的交互周期后加載完字體將不進行更新显示
  5. optional:為字體提供一個非常小的阻塞周期,並且沒有交換周期。也就是說等字體加載不進行更新显示

參考網站

  1. https://webplatform.github.io/docs/tutorials/typography/font-face/
  2. https://developer.mozilla.org/zh-CN/docs/Web/CSS/@font-face/font-display
  3. https://www.zhangxinxu.com/wordpress/2016/11/css-unicode-range-character-font-face/
  4. https://www.w3cplus.com/css/font-display-masses.html

字體下載格式轉換網站

  1. https://www.fontke.com/tool/fontface/
  2. http://www.fonts.net.cn/
  3. https://fonts.google.com/

字體壓縮工具

  1. http://www.fonts.net.cn/ 字體天下
  2. http://www.ziticq.com/ 字體傳奇
  3. https://www.hellofont.cn/ 字由
  4. http://fontstore.baidu.com/static/editor/index.html 百度在線字體編輯器
  5. https://efe.baidu.com/ 百度字體處理
  6. https://www.fontsquirrel.com/tools/webfont-generator 字體格式換
  7. https://www.fontke.com/tool/fontface/ 字體轉換

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

研究:1993年《生物多樣性公約》 至今成功保育48個物種免於滅絕

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

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

憑什麼要多花20萬?10萬與30萬的車究竟差在哪?

0T發動機搭載矩陣式LED大燈全系匹配9AT自動變速箱在85km/h即可掛入9擋120km/h時速時轉速2000轉120km/h實測噪音值64。6分貝隔音靜謐性表現不錯採用米其林浩悅輪胎,靜音性強用料豪華的內飾真皮設計車窗採用雙層玻璃+隔音膜設計有效地降低噪音,隔絕99%的紫外線車內底部採用大量吸隔音墊問題210萬的車在城市道路里走走停停該頓挫還是會頓挫大力踩油門時降擋不果斷與發動機匹配不夠完美傳動效率不高30萬的車具有綿密的變速箱齒輪比設計換擋平順,降擋果斷頓挫感不明顯傳動效率高推薦車型2。

汽車市場這幾年在中國蓬勃發展

可聽說

在10個人裏面

還是有8個人對汽車一竅不通

有人曾經很有趣地問過幾個問題

問題1

但是同樣地跑到120km/h時

10萬的車

發動機最低轉速3000轉

油門繼續踩下去車輛無反應

開啟遠光燈昏暗得像蠟燭

感覺整輛車一直在抖啊抖

風噪,發動機噪,胎噪的交響曲

一直在進行

30萬的車

發動機轉速低於2000轉

搭載矩陣式LED大燈

轉向指哪打哪,隨心所欲

靜謐的隔音,悠閑地聽着歌

推薦車型

搭載1.5T和2.0T發動機

搭載矩陣式LED大燈

全系匹配9AT自動變速箱

在85km/h即可掛入9擋

120km/h時速時轉速2000轉

120km/h實測噪音值64.6分貝

隔音靜謐性表現不錯

採用米其林浩悅輪胎,靜音性強

用料豪華的內飾真皮設計

車窗採用雙層玻璃+隔音膜設計

有效地降低噪音,隔絕99%的紫外線

車內底部採用大量吸隔音墊

問題2

10萬的車

在城市道路里走走停停

該頓挫還是會頓挫

大力踩油門時降擋不果斷

與發動機匹配不夠完美

傳動效率不高

30萬的車

具有綿密的變速箱齒輪比設計

換擋平順,降擋果斷

頓挫感不明顯

傳動效率高

推薦車型

2.0T車型搭載通用9AT自動變速箱

在95km/h即可上9擋

變速箱齒輪比設計綿密

傳動平順,油耗低

問題3

10萬的車

10萬元購合資車乞丐版

並無搭載ESp車身穩定系統

在高速行駛上

由於懸架和車輕問題

遇到緊急情況無法快速變線切道

30萬的車

全系搭載ESp車身穩定系統

配備主動剎車防碰撞系統

車道保持系統

360°全景倒車影像

更紮實的懸架更強的動力

變現超車變得更加輕鬆一些

推薦車型

在售車型圖

全新沃爾沃V60將於8月成都車展上市

軸距加長約100mm

全新雷神之錘行車燈廣受好評

搭載第二代City Safety主動安全系統

配備主動剎車

併線輔助功能

車道偏離預警系統

疲勞駕駛提示

所以30萬的車對比起10萬的車

差別還是非常大的

預算多20萬元

你能夠買到

安全配置更多

動力配備更強

車內隔音更好

底盤懸架更紮實

本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

進制數轉換方法(八/十六/十)

進制轉換算法

 

二/八/十六進制 → 十進制

 

  • 二進制 → 十進制

  方法:二進制數從低位到高位(即從右往左)計算,第0位的權值是2的0次方,第1位的權值是2的1次方,第2位的權值是2的2次方,依次遞增下去,把最後的結果相加的值就是十進制的值了。

  例:將二進制的(101011)B轉換為十進制的步驟如下:

1. 第0位 1 x 2^0 = 1;

2. 第1位 1 x 2^1 = 2;

3. 第2位 0 x 2^2 = 0;

4. 第3位 1 x 2^3 = 8;

5. 第4位 0 x 2^4 = 0;

6. 第5位 1 x 2^5 = 32;

7. 讀數,把結果值相加,1+2+0+8+0+32=43,即(101011)B=(43)D。

  • 八進制 → 十進制

  方法:八進制數從低位到高位(即從右往左)計算,第0位的權值是8的0次方,第1位的權值是8的1次方,第2位的權值是8的2次方,依次遞增下去,把最後的結果相加的值就是十進制的值了。

  八進制就是逢8進1,八進制數採用 0~7這八數來表達一個數。

  例:將八進制的(53)O轉換為十進制的步驟如下:

1. 第0位 3 x 8^0 = 3;

2. 第1位 5 x 8^1 = 40;

3. 讀數,把結果值相加,3+40=43,即(53)O=(43)D。

  • 十六進制 → 十進制

  方法:十六進制數從低位到高位(即從右往左)計算,第0位的權值是16的0次方,第1位的權值是16的1次方,第2位的權值是16的2次方,依次遞增下去,把最後的結果相加的值就是十進制的值了。

  十六進制就是逢16進1,十六進制的16個數為0123456789ABCDEF。

  例:將十六進制的(2B)H轉換為十進制的步驟如下:

1. 第0位 B x 16^0 = 11;

2. 第1位 2 x 16^1 = 32;

3. 讀數,把結果值相加,11+32=43,即(2B)H=(43)D。

十進制 → 二、八、十六進制

  • 十進制 → 二進制

  方法:除2取余法,即每次將整數部分除以2,餘數為該位權上的數,而商繼續除以2,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數讀起,一直到最前面的一個餘數。 

  例:將十進制的(43)D轉換為二進制的步驟如下:

1. 將商43除以2,商21餘數為1;

2. 將商21除以2,商10餘數為1;

3. 將商10除以2,商5餘數為0;

4. 將商5除以2,商2餘數為1;

5. 將商2除以2,商1餘數為0; 

6. 將商1除以2,商0餘數為1; 

7. 讀數,因為最後一位是經過多次除以2才得到的,因此它是最高位,讀数字從最後的餘數向前讀,101011,即(43)D=(101011)B。

  • 十進制 → 八進制

  方法1:除8取余法,即每次將整數部分除以8,餘數為該位權上的數,而商繼續除以8,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數起,一直到最前面的一個餘數。

  例:將十進制的(796)D轉換為八進制的步驟如下:

1. 將商796除以8,商99餘數為4;

2. 將商99除以8,商12餘數為3;

3. 將商12除以8,商1餘數為4;

4. 將商1除以8,商0餘數為1;

5. 讀數,因為最後一位是經過多次除以8才得到的,因此它是最高位,讀数字從最後的餘數向前讀,1434,即(796)D=(1434)O。

  方法2:使用間接法,先將十進制轉換成二進制,然後將二進制又轉換成八進制;

  • 十進制 → 十六進制

  方法1:除16取余法,即每次將整數部分除以16,餘數為該位權上的數,而商繼續除以16,餘數又為上一個位權上的數,這個步驟一直持續下去,直到商為0為止,最後讀數時候,從最後一個餘數起,一直到最前面的一個餘數。

  例:將十進制的(796)D轉換為十六進制的步驟如下:

1. 將商796除以16,商49餘數為12,對應十六進制的C;

2. 將商49除以16,商3餘數為1;

3. 將商3除以16,商0餘數為3;

4. 讀數,因為最後一位是經過多次除以16才得到的,因此它是最高位,讀数字從最後的餘數向前讀,31C,即(796)D=(31C)H。

  方法2:使用間接法,先將十進制轉換成二進制,然後將二進制又轉換成十六進制;

二進制 ↔ 八、十六進制

  • 二進制 → 八進制

  方法:取三合一法,即從二進制的小數點為分界點,向左(向右)每三位取成一位,接着將這三位二進制按權相加,然後,按順序進行排列,小數點的位置不變,得到的数字就是我們所求的八進制數。如果向左(向右)取三位后,取到最高(最低)位時候,如果無法湊足三位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足三位。

  例:將二進制的(11010111.0100111)B轉換為八進制的步驟如下:

1. 小數點前111 = 7;

2. 010 = 2;

3. 11補全為011,011 = 3;

4. 小數點后010 = 2;

5. 011 = 3;

6. 1補全為100,100 = 4;

7. 讀數,讀數從高位到低位,即(11010111.0100111)B=(327.234)O。

  • 八進制 → 二進制

  方法:取一分三法,即將一位八進制數分解成三位二進制數,用三位二進制按權相加去湊這位八進制數,小數點位置照舊。

  例:將八進制的(327)O轉換為二進制的步驟如下:

1. 3 = 011;

2. 2 = 010;

3. 7 = 111;

4. 讀數,讀數從高位到低位,011010111,即(327)O=(11010111)B

  • 二進制 → 十六進制

  方法:取四合一法,即從二進制的小數點為分界點,向左(向右)每四位取成一位,接着將這四位二進制按權相加,然後,按順序進行排列,小數點的位置不變,得到的数字就是我們所求的十六進制數。如果向左(向右)取四位后,取到最高(最低)位時候,如果無法湊足四位,可以在小數點最左邊(最右邊),即整數的最高位(最低位)添0,湊足四位。

  例:將二進制的(11010111)B轉換為十六進制的步驟如下:

1. 0111 = 7;

2. 1101 = D;

3. 讀數,讀數從高位到低位,即(11010111)B=(D7)H。

  • 十六進制 → 二進制

  方法:取一分四法,即將一位十六進制數分解成四位二進制數,用四位二進制按權相加去湊這位十六進制數,小數點位置照舊。

  例:將十六進制的(D7)H轉換為二進制的步驟如下:

1. D = 1101;

2. 7 = 0111;

3. 讀數,讀數從高位到低位,即(D7)H=(11010111)B。

八進制 ↔ 十六進制

  • 八進制 → 十六進制

  方法:將八進制轉換為二進制,然後再將二進制轉換為十六進制,小數點位置不變。

  例:將八進制的(327)O轉換為十六進制的步驟如下:

1. 3 = 011;

2. 2 = 010;

3. 7 = 111;

4. 0111 = 7;

5. 1101 = D;

6. 讀數,讀數從高位到低位,D7,即(327)O=(D7)H。

  • 十六進制 → 八進制

  方法:將十六進制轉換為二進制,然後再將二進制轉換為八進制,小數點位置不變。

  例:將十六進制的(D7)H轉換為八進制的步驟如下:

1. 7 = 0111;

2. D = 1101;

3. 0111 = 7;

4. 010 = 2;

5. 011 = 3;

6. 讀數,讀數從高位到低位,327,即(D7)H=(327)O。

 

十進制的小數到二進制的轉換

  • 將小數部分0.125乘以2,得0.25,然後取整數部分0

      

 

  • 再將小數部分0.25乘以2,得0.5,然後取整數部分0
  • 再將小數部分0.5乘以2,得1,然後取整數部分1
  • 得到的二進制的結果就是0.001

二進制到十進制的轉換

  • 0.001第一位為0,則0*1/2,即0乘以2負 一次方

  • 0.001第二位為0,則0*1/4,即0乘以2的負二次方。
  • 0.001第三位為1,則1*1/8,即1乘以2的負三次方。

  • 各個位上乘完之後,相加,0*1/2+0*1/4+1*1/8得十進制的0.125

注:一些內容通過上網查找並進行了整理

 

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

中國承諾2060年實現碳中和 外媒提五大疑問

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

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案