AirPods Pro 2 零件現蹤,可能將像 Apple Watch 一樣有雙尺寸?_網頁設計公司

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

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

看到將蘋果自家耳機產品推上價格「Max」值的 AirPods Max,雖說也不至於貴到遙不可及,甚至也有傳將會有更入門的版本。但就生活使用來講,似乎還是同樣具備主動降噪機能與空間音訊等功能的 AirPods Pro 比較適合自己?看來,蘋果應該也沒打算放掉這個產品系列,現在被發現已經默默在準備新品當中 — 而且這次將可能像旗下智慧型手錶那樣,提供更客製化的尺寸選項(!)。繼續閱讀 AirPods Pro 2 零件現蹤,可能將像 Apple Watch 那樣具備雙尺寸報導內文。

▲圖片來源:Mr·White

AirPods Pro 2 零件現蹤,可能將像 Apple Watch 一樣有雙尺寸?

AirPods 無疑已經是現階對最受歡迎的真無線耳機。而儘管目前看來此系列的產品已經被 AirPods Max 給奪下了最高階的寶座,不過這不代表蘋果沒打算持續精進相對低價且易用的產品系列 — 畢竟市場上的對手也早已開始端出更小尺寸的版本。

▲圖片來源:Apple

從最近在社群網站上由 Mr·White 所貼出的疑似 AirPods Pro 2 零件照看來,蘋果似乎不僅準備帶來新的真無線耳塞耳機還。可能像 Apple Watch 那樣,疑似準備提供兩種不同的尺寸來對應使用者的需求。

雖說還是採用 W2 的晶片,不過根據爆料者的猜測,新世代的 AirPods Pro 很可能會有大小兩種尺寸可供選擇。對照先前媒體報導,新世代 AirPods Pro 很可能移除底部的控制桿造型,帶來僅剩下 Earbuds 耳機本體的新設計。

▲圖片來源:Mr·White

是說,儘管這樣「耳機豆」的設計在其他品牌已經不算少見,但畢竟 AirPods Pro 小小一顆耳機裡面塞入包括動態追蹤、光學感測器、加速度計與力度感測器等,可以配合蘋果生態系帶來有趣功能的硬體配置。所以某種程度來講,能在保有舊有配置更進一步縮小機身體積,甚至加入新功能與帶來不同尺寸的版本,應該也是十分不容易的事。

不過,更小的耳機本體雖然應該會看起來更美型,相應而來的電力與表現是否會有所落差,應該也會是許多人會想關注的重點。總之,畢竟目前也僅有零件洩漏而已,一切就等更多相關消息浮現再來看看有些什麼樣令人驚豔的可能性吧。

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

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

本篇圖片 / 引用來源

延伸閱讀:

傳明年中 Apple 將推出更便宜的 AirPods Max Sport 運動版,售價 400 美元

340 萬台,據報 PS5 破 PlayStation 首月出貨最高紀錄

您也許會喜歡:

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

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

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

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

輕鬆實現記錄與撤銷——C#中的Command模式_網頁設計公司

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

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

Command模式屬於行為模式,作為大名鼎鼎的23個設計模式之一,Command模式理解起來不如工廠模式,單例模式等那麼簡單直白。究其原因,行為模式着重於使用,如果沒有編程實踐,確實不如創造模式那麼直白。我們先看看UML類圖。

估計很多同學看着圖就暈了,那麼多東西,Command和Concrete Command還好理解,那些Receiver和Invoker又是什麼東西呢?
 
別著急,只要理解了一點,這個模式就很容易理解了,下面划重點,Command模式最主要的特點,是將命令封裝成類,在類中保存命令執行的上下文(即該命令執行的參數,執行的對象),以實現命令執行對象和命令發出對象的解耦。
 
這樣一來是不是覺得好理解多了?Command類裏面的Receiver,就是命令具體執行的對象。這裏的Client可以理解為裝配環境,在這裏面代碼實例化Command。Invoker內部保存命令(可以保存多條命令,實現命令記錄查看,撤銷等),客戶端代碼通過Invoker來操作命令。接下來我們看看示例代碼。

 

定義Command接口

首先我們定義一個支持撤銷的Command接口。

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

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

    interface Command
    {
        void Execute();
        void Undo();
    }

定義Receiver

接下來我們定義Receiver,也就是命令的執行對象,這裏我們定義一個Ball類。

    class Ball
    {
        public int Size { get; set; } = 10;
        public string Name { get; set; } = "My First Ball";
        public void Inspect()
        {
            Console.WriteLine("My Name is {0} and size is {1}", Name, Size);
        }
    }

定義具體命令

這裏定義兩個命令,一個修改名字,一個修改大小。

    class ChangeNameCommand : Command
    {
        private Ball _Ball;
        private string _OldName;
        public string NameYouWant { get; set; }
        public ChangeNameCommand(Ball ball)
        {
            _Ball = ball;
        }

        public void Execute()
        {
            _OldName = _Ball.Name;
            _Ball.Name = NameYouWant;
        }

        public void Undo()
        {
            _Ball.Name = _OldName;
        }
    }
    
	class ChangeSizeCommand : Command
	{
	//代碼大同小異,略
	}

定義Invoker

接下來是Invoker,,也就是存儲命令,並最終會被用戶代碼調用的類,這裏我們叫它CommandManager。

    class CommandManager
    {
        private Stack<Command> commands = new Stack<Command>();

        public void RunCommand(Command command)
        {
            command.Execute();
            commands.Push(command);
        }

        public void Undo()
        {
            if (commands.Count > 0)
            {
                var command = commands.Pop();
                command.Undo();
            }
        }
        
		public void ShowCommands()
        {
            var temp = commands.Reverse();
            foreach(var command in temp)
            {
                //display command
            }
        }
    }

使用命令

現在我們看看客戶端代碼是怎麼使用他們的,定義Ball,定義命令,通過CommandManager去調用,這樣可以方便查看命令記錄,撤銷命令,等。

        static void Main(string[] args)
        {
            Ball ball = new Ball();
            ball.Inspect();

            ChangeNameCommand changeName = new ChangeNameCommand(ball) { NameYouWant = "Changed" };
            ChangeSizeCommand changeSize = new ChangeSizeCommand(ball) { SizeYouWant = 20 };

            CommandManager manager = new CommandManager();
            manager.RunCommand(changeName);
            manager.RunCommand(changeSize);
            ball.Inspect();

			manager.ShowCommands();
            
            manager.Undo();
            ball.Inspect();

            manager.Undo();
            ball.Inspect();            
        }

就醬,我們已經實現了命令模式,並且還支持命令的記錄與撤銷,希望能對大家有點幫助。

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

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

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

DQN(Deep Q-learning)入門教程(六)之DQN Play Flappy-bird ,MountainCar_台北網頁設計

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

在DQN(Deep Q-learning)入門教程(四)之Q-learning Play Flappy Bird中,我們使用q-learning算法去對Flappy Bird進行強化學習,而在這篇博客中我們將使用神經網絡模型來代替Q-table,關於DQN的介紹,可以參考我前一篇博客:DQN(Deep Q-learning)入門教程(五)之DQN介紹

在這篇博客中將使用DQN做如下操作:

  • Flappy Bird
  • MountainCar-v0

再回顧一下DQN的算法流程:

項目地址:Github

MountainCar-v0

MountainCar的訓練好的Gif示意圖如下所示,汽車起始位置位於山的底部,最終目標是駛向右邊山的插旗的地方,其中,汽車的引擎不能夠直接駛向終點,必須藉助左邊的山體的重力加速度才能夠駛向終點。

MountainCar-v0由OpenAI提供,python包為gym,官網網站為https://gym.openai.com/envs/MountainCar-v0/。在Gym包中,提供了很多可以用於強化學習的環境(env):

在MountainCar-v0中,狀態有2個變量,car position(汽車的位置),car vel(汽車的速度),action一共有3種: Accelerate to the Left, Don't accelerate,Accelerate to the Right,然後當車達到旗幟的地方(position = 0.5)會得到\(reward = 1\)的獎勵,如果沒有達到則為\(-1\)。但是如果當你運行步驟超過200次的時候,遊戲就會結束。詳情可以參考源代碼(ps:官方文檔中沒有這些說明)。

下面介紹一下gym中幾個常用的函數:

  • env = gym.make("MountainCar-v0")
    

    這個就是創建一個MountainCar-v0的遊戲環境。

  • state = env.reset()
    

    重置環境,返回重置后的state

  • env.render()
    

    將運行畫面展示在屏幕上面,當我們在訓練的時候可以不使用這個來提升速度。

  • next_state, reward, done, _ = env.step(action)
    

    執行action動作,返回下一個狀態,獎勵,是否完成,info。

初始化Agent

初始化Agent直接使用代碼說明吧,這個還是比較簡單的:

import keras
import random
from collections import deque

import gym
import numpy as np
from keras.layers import Dense
from keras.models import Sequential


class Agent():
    def __init__(self, action_set, observation_space):
        """
        初始化
        :param action_set: 動作集合
        :param observation_space: 環境屬性,我們需要使用它得到state的shape
        """
        # 獎勵衰減
        self.gamma = 1.0
        # 從經驗池中取出數據的數量
        self.batch_size = 50
        # 經驗池
        self.memory = deque(maxlen=2000000)
        # 探索率
        self.greedy = 1.0
        # 動作集合
        self.action_set = action_set
        # 環境的屬性
        self.observation_space = observation_space
        # 神經網路模型
        self.model = self.init_netWork()

    def init_netWork(self):
        """
        構建模型
        :return: 模型
        """
        model = Sequential()
        # self.observation_space.shape[0],state的變量的數量
        model.add(Dense(64 * 4, activation="tanh", input_dim=self.observation_space.shape[0]))
        model.add(Dense(64 * 4, activation="tanh"))
        # self.action_set.n 動作的數量
        model.add(Dense(self.action_set.n, activation="linear"))
        model.compile(loss=keras.losses.mean_squared_error,
                      optimizer=keras.optimizers.RMSprop(lr=0.001))
        return model

我們使用隊列來保存經驗,這樣的話新的數據就會覆蓋遠古的數據。此時我們定義一個函數,專門用來將數據保存到經驗池中,然後定義一個函數用來更新\(\epsilon\)探索率。

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

def add_memory(self, sample):
    self.memory.append(sample)

def update_greedy(self):
    # 小於最小探索率的時候就不進行更新了。
    if self.greedy > 0.01:
        self.greedy *= 0.995

訓練模型

首先先看代碼:

def train_model(self):
    # 從經驗池中隨機選擇部分數據
    train_sample = random.sample(self.memory, k=self.batch_size)

    train_states = []
    next_states = []
    for sample in train_sample:
        cur_state, action, r, next_state, done = sample
        next_states.append(next_state)
        train_states.append(cur_state)

    # 轉成np數組
    next_states = np.array(next_states)
    train_states = np.array(train_states)
    # 得到next_state的q值
    next_states_q = self.model.predict(next_states)

    # 得到state的預測值
    state_q = self.model.predict_on_batch(train_states)

    # 計算Q現實
    for index, sample in enumerate(train_sample):
        cur_state, action, r, next_state, done = sample
        if not done:
            state_q[index][action] = r + self.gamma * np.max(next_states_q[index])
        else:
            state_q[index][action] = r
    
    self.model.train_on_batch(train_states, state_q)

大家肯定從上面的代碼發現一些問題,使用了兩個for循環,why?首先先說一下兩個for循環分別的作用:

  • 第一個for循環:得到train_states和next_states,其中next_states是為了計算Q現實。
  • 第二個for循環:計算Q現實

可能有人會有一個疑問,為什麼我不寫成一個for循環呢?實際上寫成一個for循環是完全沒有問題的,很,但是寫成一個for循環意味着我們要多次調用model.predict_on_batch,這樣會耗費一定的時間(親身試驗過,這樣會比較慢),因此,我們寫成了兩個for循環,然後只需要調用一次predict

執行動作與選擇最佳動作

執行動作的代碼如下所示:

def act(self, env, action):
    """
    執行動作
    :param env: 執行環境
    :param action: 執行的動作
    :return: ext_state, reward, done
    """
    next_state, reward, done, _ = env.step(action)

    if done:
        if reward < 0:
            reward = -100
        else:
            reward = 10
    else:
        if next_state[0] >= 0.4:
            reward += 1

    return next_state, reward, done

其中,我們可以修改獎勵以加快網絡收斂。

選擇最好的動作的動作如下所示,會以一定的探索率隨機選擇動作。

def get_best_action(self, state):
    if random.random() < self.greedy:
        return self.action_set.sample()
    else:
        return np.argmax(self.model.predict(state.reshape(-1, 2)))

開始訓練

關於具體的解釋,在註釋中已經詳細的說明了:

if __name__ == "__main__":
    # 訓練次數
    episodes = 10000
    # 實例化遊戲環境
    env = gym.make("MountainCar-v0")
    # 實例化Agent
    agent = Agent(env.action_space, env.observation_space)
    # 遊戲中動作執行的次數(最大為200)
    counts = deque(maxlen=10)

    for episode in range(episodes):
        count = 0
        # 重置遊戲
        state = env.reset()

        # 剛開始不立即更新探索率
        if episode >= 5:
            agent.update_greedy()

        while True:
            count += 1
            # 獲得最佳動作
            action = agent.get_best_action(state)
            next_state, reward, done = agent.act(env, action)
            agent.add_memory((state, action, reward, next_state, done))
            # 剛開始不立即訓練模型,先填充經驗池
            if episode >= 5:
                agent.train_model()
            state = next_state
            if done:
                # 將執行的次數添加到counts中
                counts.append(count)
                print("在{}輪中,agent執行了{}次".format(episode + 1, count))

                # 如果近10次,動作執行的平均次數少於160,則保存模型並退出
                if len(counts) == 10 and np.mean(counts) < 160:
                    agent.model.save("car_model.h5")
                    exit(0)
                break

訓練一定的次數后,我們就可以得到模型了。然後進行測試。

模型測試

測試的代碼沒什麼好說的,如下所示:

import gym
from keras.models import load_model
import numpy as np
model = load_model("car_model.h5")

env = gym.make("MountainCar-v0")

for i in range(100):
    state = env.reset()
    count = 0
    while True:
        env.render()
        count += 1
        action = np.argmax(model.predict(state.reshape(-1, 2)))
        next_state, reward, done, _ = env.step(action)
        state = next_state
        if done:
            print("遊戲的次數:", count)
            break

部分的結果如下:

Flappy Bird

FlappyBird的代碼我就不過多贅述了,裏面的一些函數介紹可以參照這個來看:DQN(Deep Q-learning)入門教程(四)之Q-learning Play Flappy Bird,代碼思想與訓練Mountain-Car基本是一致的。

import random
from collections import deque

import keras
import numpy as np
from keras.layers import Dense
from keras.models import Sequential
from ple import PLE
from ple.games import FlappyBird


class Agent():
    def __init__(self, action_set):
        self.gamma = 1
        self.model = self.init_netWork()
        self.batch_size = 128
        self.memory = deque(maxlen=2000000)
        self.greedy = 1
        self.action_set = action_set

    def get_state(self, state):
        """
        提取遊戲state中我們需要的數據
        :param state: 遊戲state
        :return: 返回提取好的數據
        """
        return_state = np.zeros((3,))
        dist_to_pipe_horz = state["next_pipe_dist_to_player"]
        dist_to_pipe_bottom = state["player_y"] - state["next_pipe_top_y"]
        velocity = state['player_vel']
        return_state[0] = dist_to_pipe_horz
        return_state[1] = dist_to_pipe_bottom
        return_state[2] = velocity
        return return_state

    def init_netWork(self):
        """
        構建模型
        :return:
        """
        model = Sequential()
        model.add(Dense(64 * 4, activation="tanh", input_shape=(3,)))
        model.add(Dense(64 * 4, activation="tanh"))
        model.add(Dense(2, activation="linear"))

        model.compile(loss=keras.losses.mean_squared_error,
                      optimizer=keras.optimizers.RMSprop(lr=0.001))
        return model

    def train_model(self):
        if len(self.memory) < 2500:
            return

        train_sample = random.sample(self.memory, k=self.batch_size)
        train_states = []
        next_states = []

        for sample in train_sample:
            cur_state, action, r, next_state, done = sample
            next_states.append(next_state)
            train_states.append(cur_state)
        # 轉成np數組
        next_states = np.array(next_states)
        train_states = np.array(train_states)

        # 得到下一個state的q值
        next_states_q = self.model.predict(next_states)
        # 得到預測值
        state_q = self.model.predict_on_batch(train_states)

        for index, sample in enumerate(train_sample):
            cur_state, action, r, next_state, done = sample
            # 計算Q現實
            if not done:
                state_q[index][action] = r + self.gamma * np.max(next_states_q[index])
            else:
                state_q[index][action] = r
        self.model.train_on_batch(train_states, state_q)

    def add_memory(self, sample):
        self.memory.append(sample)

    def update_greedy(self):
        if self.greedy > 0.01:
            self.greedy *= 0.995

    def get_best_action(self, state):
        if random.random() < self.greedy:
            return random.randint(0, 1)
        else:
            return np.argmax(self.model.predict(state.reshape(-1, 3)))

    def act(self, p, action):
        """
        執行動作
        :param p: 通過p來向遊戲發出動作命令
        :param action: 動作
        :return: 獎勵
        """
        r = p.act(self.action_set[action])
        if r == 0:
            r = 1
        if r == 1:
            r = 100
        else:
            r = -1000
        return r


if __name__ == "__main__":
    # 訓練次數
    episodes = 20000
    # 實例化遊戲對象
    game = FlappyBird()
    # 類似遊戲的一個接口,可以為我們提供一些功能
    p = PLE(game, fps=30, display_screen=False)
    # 初始化
    p.init()
    # 實例化Agent,將動作集傳進去
    agent = Agent(p.getActionSet())
    max_score = 0
    scores = deque(maxlen=10)

    for episode in range(episodes):
        # 重置遊戲
        p.reset_game()
        # 獲得狀態
        state = agent.get_state(game.getGameState())
        if episode > 150:
            agent.update_greedy()
        while True:
            # 獲得最佳動作
            action = agent.get_best_action(state)
            # 然後執行動作獲得獎勵
            reward = agent.act(p, action)
            # 獲得執行動作之後的狀態
            next_state = agent.get_state(game.getGameState())
            agent.add_memory((state, action, reward, next_state, p.game_over()))
            agent.train_model()
            state = next_state
            if p.game_over():
                # 獲得當前分數
                current_score = p.score()
                max_score = max(max_score, current_score)
                scores.append(current_score)
                print('第%s次遊戲,得分為: %s,最大得分為: %s' % (episode, current_score, max_score))
                if len(scores) == 10 and np.mean(scores) > 150:
                    agent.model.save("bird_model.h5")
                    exit(0)
                break

該部分相比較於Mountain-Car需要更長的時間,目前的我還沒有訓練出比較好的效果,截至寫完這篇博客,最新的數據如下所示:

emm,我又不想讓我的電腦一直開着,。

總結

上面的兩個例子便是DQN最基本最基本的使用,我們還可以將上面的FlappyBird的問題稍微複雜化一點,比如說我們無法直接的知道環境的狀態,我們則可以使用CNN網絡去從遊戲圖片入手(關於這種做法,網絡上有很多人寫了相對應的博客)。

項目地址:Github

參考

  • openai-gym
  • MountainCar-v0 ——src code
  • DQN(Deep Q-learning)入門教程(四)之Q-learning Play Flappy Bird

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

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

UWP開發入門(25)——通過Radio控制Bluetooth, WiFi_網頁設計公司

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

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

回顧寫了許久的UWP開發入門,竟然沒有講過通過Windows.Devices.Radios.Radio來控制Bluetooth和WiFi等功能的開關。也許是因為相關的API設計的簡單好用,以至於被我給忽略了。最近工作中有涉及這塊的內容,不妨一起來回顧下,順便看看一些新的發現。

在Windows 10以前,想要控制Bluetooth,WiFi等功能,那麻煩大了。得操作ManagementBaseObject,ManagementEventWatcher 等一系列WMI提供的API,寫出來的代碼又臭又長。其間還夾着複雜的WMI query字符串,十分難用。

升級到Windows 10后,我們通過Windows.Devices.Radios.Radio可以方便的獲取控制Bluetooth和WiFi的對象。

var radios = await Radio.GetRadiosAsync();
Bluetooth = radios.FirstOrDefault(r => r.Kind == RadioKind.Bluetooth);
WiFi = radios.FirstOrDefault(r => r.Kind == RadioKind.Bluetooth);

在拿到上面的Bluetooth和WiFi的Radio實例后,就可以通過

Public event TypedEventHandler<Radio, object> StateChanged;

來監聽Radio實例的狀態改變,可以說通過寥寥幾行代碼,就可以替代以往大量繁瑣的操作。

而設置Bluetooth和WiFi設備On/Off的狀態,也非常簡單。

public IAsyncOperation<RadioAccessStatus> SetStateAsync(RadioState value);

RadioState枚舉如同字面的意思:

    public enum RadioState
    {
        //
        // Summary:
        //     The radio state is unknown, or the radio is in a bad or uncontrollable state.
        Unknown = 0,
        //
        // Summary:
        //     The radio is powered on.
        On = 1,
        //
        // Summary:
        //     The radio is powered off.
        Off = 2,
        //
        // Summary:
        //     The radio is powered off and disabled by the device firmware or a hardware switch
        //     on the device.
        Disabled = 3
    }

這裏需要提一下的是,在第一次更改狀態前,UWP APP需要向用戶申請權限。

慢着慢着,貌似忘記給UWP APP向Windows要權限了,我們要編輯Package.aaxmanifest文件,在Capabilities節點加上DeviceCapability這一行才行。

  <Capabilities>
    <Capability Name="internetClient" />
    <DeviceCapability Name="radios"></DeviceCapability>
  </Capabilities>

 

這回運行起來,才真的可以操作Bluetooth和WiFi了。

是不是覺得幾行代碼就能寫出一個控制Bluetooth和WiFi的APP了?事實也確實如此。

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

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

如果人生只如初見那般美好,UWP的處境就不會如此難堪了。對於某軟提供了完善UWP API的功能,開發起來那是一個爽快。但要是沒有或是沒來得及提供,UWP就顯得頗為尷尬了。

我們不妨看下RadioKind的枚舉,很顯然如果想操作FM radio就得另尋他法。而MobileBoardband即Cellular也是從1703版本才開始得到支持。

那是不是意味這MobileBroadband就可以像Bluetooth和WiFi一樣通過

public static IAsyncOperation<IReadOnlyList<Radio>> GetRadiosAsync();

來獲取實例對象了,還真不是,欲知如何操作,且聽下回《UWP開發入門(26)——通過Radio控制Cellular》。

實際是我Sample code還沒整理好。所以分成了兩篇來寫。

有感日前MS Store里的網易雲音樂UWP也被替換成Win32版本,可嘆國產的UWP APP越來越少。某軟畫了個好餅,可惜不能讓人在Windows生態上通過UWP掙到錢。好技術生不逢時出不了頭,真是可惜。

同時也能感覺到某軟的妥協和進步,現如今的UWP,結合desktop extension以及desktop bridge技術。只要公司的APP能通過某軟的審核,功能方面已經無限接近傳統desktop APP了。可惜一個Windows平台做Win32和UWP兩個產品,燒的錢可不是小數目。總不能用愛發電吧。

希望Win7早日被淘汰,WinUI 3.0能進一步融合UWP和Win32。距離上一次某軟說要重振desktop開發已經過去蠻久了。

本篇提到的相關Sample code在GitHub:

https://github.com/manupstairs/UWPSamples/tree/master/UWPSamples/RadioDevice

 

 

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

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

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

藍瘦、香菇!十幾萬貶值最快的車型,好多人都中招了_台中搬家公司

※台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

豐田的車也被套上高貶值率,看到這肯定不少朋友要起異議了。別急,這次講的是雷凌混動版,並非汽油版車型。儘管雷凌雙擎的貶值率較高,但憑藉著開不爛的豐田,以及最便宜混動車的頭銜,雙擎想不火都難,若是秉承買一輛車開一輩子的打算,覺得雷凌雙擎還是非常值得購買的。

最近陪一位屌絲朋友去置換汽車時,發現一個很有意思的事。小夥伴的車只開兩三年,降價百分之50都無人問津,而隔壁老王的車不僅買時便宜,即使開了十年以上仍會有人以高價競購。看到這,小夥伴不禁發出感嘆“藍瘦~香菇 為什麼我的車會買時貴賣時虧!”

造成如此大的差異,究其原因就是“貶值率”的問題了,不同的汽車,貶值率也各不相同,有的車品牌力度強,性能穩定,消費者就都願意選意選購這類車型,價格自然水漲船高。而有的車即使當初購買的時候價格花費高,但由於車型較為小眾,保有量低,所以想再賣出時即使大幅度降價也無人問津。下面給大家捋一捋20萬以內,哪些車的貶值率是偏高的,大家在選購時要多加留意。

福特-蒙迪歐

售價:17.98萬—26.58萬

貶值率:三年將近50%

新蒙迪歐改款以後,憑藉著家族式的馬丁前臉,超高的顏值,一度成為關注度較高的中型車。但他的銷量表現卻遠沒有關注度來得強烈,屬於典型的叫好不叫座類型。

但平心而論,這一代蒙迪歐的改變較原款車致勝,確實有了翻天覆地的變化。看不膩的馬丁前臉、發動機蓋隆起的線條無不在展現美式肌肉車的線條動力系統及底盤的表現同樣出彩,2.0T的發動機搭配六擋手自一體變速箱,

※推薦台中搬家公司優質服務,可到府估價

台中搬鋼琴,台中金庫搬運,中部廢棄物處理,南投縣搬家公司,好幫手搬家,西屯區搬家

讓蒙迪歐具有百公里加速進入8秒的實力。

豐田-雷凌雙擎

售價:13.98-15.98萬

貶值率:三年將近40%

納尼!豐田的車也被套上高貶值率,看到這肯定不少朋友要起異議了。別急,這次講的是雷凌混動版,並非汽油版車型。

儘管雷凌雙擎的貶值率較高,但憑藉著開不爛的豐田,以及最便宜混動車的頭銜,雙擎想不火都難,若是秉承買一輛車開一輩子的打算,覺得雷凌雙擎還是非常值得購買的。

雪鐵龍-世嘉

9.58—11.18萬元

貶值率:三年將近40%

聊起法系車,我想大家體會最深的就是它前衛的外觀設計以及深厚的底盤調校能力。但為何在國內法系車就是永遠無法“雄起”呢?究其原因就是法國人不了解中國, 就拿本文的世嘉來看外觀看上去挺大的,各項數據也領先同級,可乘坐空間比起飛度都不如,這讓我們以大為美的國人情何以堪啊!

也許法國人根本不在乎你們的想法,他們的產品只給懂得欣賞他們的人去選擇,實事上也正是這樣。世嘉具有鮮明的特點,外形奇特,低產量,這也許就是人們追求的“高逼格”吧。

總結一句:對於法系車,你改變不了,那你就要去適應它,而購買法系車的同學就要做好貶值的心理準備了。

馬自達6

售價12.98-15.98萬元

貶值率:三年將近60%

說起老馬6,我想有不少同學已經非常熟悉了。馬自達6車型在國內生產銷售了超過10年時間,不僅沒有停產,並且衍生出了3代車型(馬自達6、睿翼、阿特茲),可謂是三代同堂。

老馬六的市場保有量大,這是毋庸置疑的事實,但自從老馬六改款,新舊兩代車型同時銷售,當時20萬起步的老馬六立刻官降10萬,希望以低價中級車的身份搶佔緊湊級車市場。

總結:汽車的貶值會受諸多因素的影響,建議小夥伴們在購車選車的時候要充分考慮貶值率這個問題,多關注心儀車型的品牌口碑、換代新車的價格、車輛的受眾情況等等,綜合這幾方面來選購車型。(要是有選擇困難症的小夥伴也可以在下方留言,讓給你分析下)本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

※台中搬家公司教你幾個打包小技巧,輕鬆整理裝箱!

還在煩惱搬家費用要多少哪?台中大展搬家線上試算搬家費用,從此不再擔心「物品怎麼計費」、「多少車才能裝完」

為什麼國產品牌SUV能贏合資品牌?你買車會選誰?_網頁設計

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

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

從是否引入全新車型,合資品牌內部便要經過長時間的項目討論。出於商業上的原因,合資品牌的外資方對於新車型的引入,是持極其謹慎的態度的。所以,儘管合資品牌的中方人員已經意識到這一問題,但往往也是處於干著急的情況,畢竟中方在大部分的情況下,是沒有獨立開發新車型的權力的。

根據乘聯會公布的數據显示,2016年上半年,國內SUV銷量共計391.5萬輛。而中國自主品牌以56.6%的絕對性優勢,成功稱霸了這個時下國內最為火熱的汽車細分市場。在上半年SUV銷量前10排名中,自主品牌共佔到了6個席位。這就不禁讓人有一個疑問:合資品牌SUV為什麼會一敗塗地?

SUV市場的火熱

是合資品牌做夢都沒有想到的

2003年,國內的SUV銷量僅為9.74萬輛,連如今哈弗H6半年的銷量都達不到。但十年過後的2013年,國內的SUV銷量迅速膨脹至266.13萬輛,堪稱是火箭式的增長。對於多年來一直注重發展轎車市場的合資品牌來說,SUV市場誇張式的增長以及市場規模的龐大程度一直是一件讓它們難以相信的事情。這種對市場形勢的誤判,為合資品牌在SUV市場上的糟糕市場表現埋下了深深的伏筆。

十個手指頭能數完的合資SUV

早在1994年的日內瓦車展上,豐田便發布了被譽為“城市SUV鼻祖”的SUV車型—RAV4。比越野車更時尚的外觀,比普通轎車能寬裕的空間,比轎車略為優秀的通過能力,從全世界的範圍來說,SUV都是一種具有深深吸引力的車型。但可惜的是,消費者對於SUV的追捧,並沒有讓合資品牌加深在SUV車型上的研發,特別是針對中國市場。

直至8年之後,也就是2002年,才有了第一款國產的合資SUV—東風本田CRV的出現。這8年間,竟然沒有一家合資品牌在中國市場推出一款SUV車型,這是一件如今讓人無法相信的事情。而即便有了第一款國產合資SUV的出現,但合資品牌對於中國的SVU市場依舊沒有太多的重視。即便是在中國汽車市場具有絕對品牌影響力的大眾汽車,把途觀引入國內生產的時間已經是2009年的事情。

自主品牌已經贏在了起跑線上

相反,不少的自主品牌已經在SUV真槍實彈地幹了起來。譬如,大家眾所周知的雙環汽車(沒錯,就是那家被本田告上法庭,還反坑本田1600萬元賠償的雙環汽車),在2004年便山寨本田的CRV,推出了大名鼎鼎的雙環SRV。而如今國內SUV的銷量冠軍—長城汽車,在2002年也依靠皮卡的平台基礎,生產出了自家的第一款SUV—長城賽弗。更不要說具有傳奇色彩,賣到南美市場的奇瑞瑞虎。所以說,從第一步棋開始,

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

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

合資品牌便已經輸在了起跑線上。

合資品牌龜速一樣的產品研發

意識到落後的合資品牌開始奮力直追,但要知道合資車企的內部運營遠沒有自主品牌靈活。從是否引入全新車型,合資品牌內部便要經過長時間的項目討論。出於商業上的原因,合資品牌的外資方對於新車型的引入,是持極其謹慎的態度的。

所以,儘管合資品牌的中方人員已經意識到這一問題,但往往也是處於干著急的情況,畢竟中方在大部分的情況下,是沒有獨立開發新車型的權力的。在確定要引入全新的SUV車型以後,還要進行一定的本土化適配、車輛測試等長時間的流程。比如國內著名的合資品牌–X安X特的一款SUV,整車試驗的流程,便有4000多項。所以,目前合資品牌的SUV研發以及生產的速度,完全可以用緩慢去形容。

自主品牌的地頭蛇優勢

但相比合資品牌,自主品牌完全就是地頭蛇一般的靈活。依靠國外成熟的SUV進行逆向研發,大大縮小研發所需的研發。再通過三菱、愛信等成熟的零部件供應商,完成最核心的動力組裝。當然,自主品牌不但在產品的設計、製造有着相當的速度優勢。在推出全新車型的決策上,同樣具有優勢。譬如國內的某知名的自主品牌,自今年3月推出緊湊型SUV以來,依次又在5月、8月,相繼發布了兩款全新的緊湊型SUV。新品推出的速度之快,不僅讓業內人士感到詫異,消費者同樣感到詫異。

神一般的速度

更著名的,如漢騰汽車,今年的5月份才宣布完成品牌的發布。僅僅過了4月的時候,旗下的首款緊湊型SUV—漢騰X7便騰空出世。從品牌的構建,到產品的設計研發,再到生產線的投產,漢騰僅用了4個月的時間。這幾乎是世界上任何一家合資品牌都無法完成的事情。

不過,有部分的自主品牌存在過於追求投產速度,希望更早地享受到SUV市場的紅利,而在生產、製造環節存在把控不嚴的情況。也正是這個原因,談到自主SUV,許多的消費者第一時間都會拋出諸如“耐用性怎麼樣?”“小問題多不多”的疑問。這也是這種運作的靈活性給自主品牌帶來的負面影響。

不過儘管合資品牌SUV在產品的投放速度不如自主品牌,但根據相關的數據显示,截止2015年底,17萬以上區間的SUV市場,98%的市場份額依然由合資品牌所垄斷。而自主品牌主要活躍在中端(13-17萬)、次中端(9-13萬)、低端(9萬以下)等SUV市場。也就是說,儘管自主品牌佔據了SUV的大部分市場份額,但更具有盈利能力的高端SUV市場依然是合資品牌的天下。如何在保障銷量漂亮的同時,改善產品的質量,以及提高自身品牌在高端SUV市場的影響力,是目前自主品牌亟待需要思考的問題。

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

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

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

性能再升級 斯巴魯BRZ GT官圖曝光_貨運

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

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

新款的斯巴魯BRZ GT車型是基於此前發布的新款BRZ打造的,外觀相比舊款車型的變化包括採用了經過重新設計的前保險杠,並換裝全LED頭尾燈組等。據了解到,BRZ GT將作為日規BRZ的高配車型銷售,其相比普通版BRZ增配了小型擾流板、新樣式的17英寸多輻式輪圈、Brembo布雷博制動系統以及SACHS品牌減振器等。

日前,斯巴魯發布了一組新款BRZ GT車型的官圖,新車將作為日規BRZ車系的高配車型進行銷售。其中手動擋車型起售價格為331.56萬日元(約合人民幣21.53萬元),自動擋車型起售價格為337.5萬日元(約合人民幣21.92萬元)。

新款的斯巴魯BRZ GT車型是基於此前發布的新款BRZ打造的,

※回頭車貨運收費標準

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

外觀相比舊款車型的變化包括採用了經過重新設計的前保險杠,並換裝全LED頭尾燈組等。據了解到,BRZ GT將作為日規BRZ的高配車型銷售,其相比普通版BRZ增配了小型擾流板、新樣式的17英寸多輻式輪圈、Brembo布雷博制動系統以及SACHS品牌減振器等。

內飾方面,除新的多功能行車電腦显示屏和多功能方向盤外,新款BRZ GT還增加了由Alcantara搭配真皮材料包裹的運動座椅等。

動力部分,新款BRZ GT將沿用FA20型2.0L水平對置自然吸氣發動機,其最大輸出功率208馬力,峰值扭矩211牛·米,與新款BRZ的普通版車型一致。傳動系統匹配的依然是6速手動及6速手自一體變速箱。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

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

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

7萬落地買到合資車!漂亮三廂車車主們愛嗎?_網頁設計公司

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

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

5L左右,比較省油,操作起來很輕鬆。尚有不足:車漆比較薄,隔音有待提升,畢竟價位擺在那裡了。車主二購買車型:2016款 1。4L 自動領先型GLX裸車價格:7。59萬最值得表揚的地方:現代流體雕塑的設計理念出來的車子就是好看,還有就是空間了,雖然是小型車,但是後排坐3個人都不是很擁擠的,1。

北京現代-瑞納

指導價:7.39-10.69萬

基本資料

長*寬*高(mm) 4375*1700*1460

軸距(mm) 2570

動力系統

1.4L/1.6L+5擋手動/4擋自動變速器

車主一

購買車型:2016款 1.4L 手動智能型GLS

裸車價格:6.05萬

最值得表揚的地方:這車最滿意的首先就是外觀了,設計得非常流暢,其次就是優惠幅度大,物超所值,再者就是用車成本了,百公里綜合油耗在6.5L左右,比較省油,操作起來很輕鬆。

尚有不足:車漆比較薄,

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

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

隔音有待提升,畢竟價位擺在那裡了。

車主二

購買車型:2016款 1.4L 自動領先型GLX

裸車價格:7.59萬

最值得表揚的地方:現代流體雕塑的設計理念出來的車子就是好看,還有就是空間了,雖然是小型車,但是後排坐3個人都不是很擁擠的,1.4的動力就別要求什麼推背感了,反正日常駕駛代步足矣,優惠幅度大,配置比較齊全,而且油耗低,總體而言性價比很高。

尚有不足:內飾塑料感比較強,燈光是蠟燭燈,離地間隙較低。

編輯點評:瑞納的市場表現還是挺不錯的,車子操作起來很輕鬆靈活,動力日常使用也是足夠,當然配置上還是稍微欠缺的,加上現在市場優惠巨大,總體來說。適合剛工作不久的年輕人。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

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

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

青銅食器 鐘鳴鼎食_網頁設計公司_網頁設計公司

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

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

中國古代青銅食器起源甚早,源遠流長,經夏商周三代而臻於隆盛。河南偃師二里頭遺址,就曾出土一件距今3500多年的平底圓鼎。商代之後,青銅食器逐漸作為主角登上歷史舞台。現藏於中國國家博物館的杜嶺方鼎,就是目前所見商代前期形體最大的青銅鼎。商代後期也就是殷墟時期,青銅食器開始以特定的組合方式出現,不但規模數量大幅度提升,而且面貌各異,精品迭出。尤其是大名鼎鼎的後母戊鼎(圖③),高133厘米,口長110厘米,口寬79厘米,重達832.84公斤,造型雄偉,氣勢恢宏,1939年一經發現就備受矚目,如今已成為中國國家博物館的代表性珍藏之一。

  青銅食器按其功能可以細分為烹煮器、盛食器、挹取器、切肉器等,其中烹煮盛食器種類數量最多,像鼎、簋(guǐ)、鬲(lì)、豆等都是後人耳熟能詳的門類。

  烹煮器:鼎、鬲、甗

  烹煮器主要有鼎、鬲、甗(yǎn)。

  鼎是殷周青銅器中數量最多、地位最重要的器類,主要用來烹煮肉食。商周墓葬出土的銅鼎內往往存有牛、羊、豬、魚、雞等各種動物遺骨,考古資料也證實了鼎的確切用途。

  鬲的功能和鼎相似,也是烹煮肉食的(圖①:西周戜(dié)伯鬲)。這點由東週隨葬陶鬲中發現有豚骨可推知。

  甗的上半部分為甑(zèng),下半部分為鬲(也有作鼎形的),中間有箄(bǐ),箄上有孔,甑置食物,鬲盛水,下舉火煮水,以蒸汽加熱食物,作用同於現在的蒸鍋。著名的殷墟婦好墓出土的三聯甗(圖⑥),由三個甑和一個長方形案狀的鬲組成,案上有三個圈形孔灶,用來承置甑體,不僅放置穩當,而且一次能加溫蒸好三份飯,構思非常奇巧。

  盛食器:簋、盨、簠、敦、豆

  盛食器則主要包括簋、盨(xǔ)(圖⑦:西周魯司徒伯吳盨)、簠(fǔ)(圖④:春秋捲曲夔紋簠)、敦(duì)、豆,主要用於盛放黍稷稻粱等主食。豆還可以盛放肉醬、肉汁、醬菜等食品,相當於今天的菜盤(圖②:戰國嵌紅銅獸紋豆)。

 挹取器匕、切肉器俎

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

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

  挹取器指的是匕,多放置於鼎、鬲、甗等器中,主要用來取肉食、飯食。切肉器指的是俎,是切肉用的几案,俎面上多有鏤孔,便於在切肉時擠壓出的肉汁滲流。(圖⑤:春秋王子臣俎)從功能上看,這些食器之間的關係十分密切,比如鼎、俎、匕就是一套完整處理肉食的裝備,用匕將肉從鼎中取出,放置在俎上切分,用於祭祀和宴饗。

  西周以降,週人重食,鼎簋等食器進而升級成為青銅禮器的核心,鼎為奇數、簋為偶數,形成“列鼎”的器用制度,即所謂“禮祭,天子九鼎,諸侯七,卿大夫五,元士三也”(《公羊傳》桓公二年何休注),某些情況下盨、簠也可以代替簋的位置。這種青銅食器禮器化的場景,還被頻頻載入詩歌。《詩經·週頌·絲衣》雲“鼐(nài)鼎及鼒(zī),兕(sì,古代犀牛一類的獸名)觥(gōng)其觩(qiú)”,描繪的正是周王祭祀行禮時的盛況,鼐指大鼎,鼒為小鼎,“鼐鼎及鼒”的意思就是尺寸大小有等差的一套鼎。考古發現也證實了這一描述。山西曲沃北趙晉侯墓地八號墓出土有五件晉侯蘇鼎,它們造型、紋樣、銘文全部相同,僅大小尺寸呈遞減陳設,這組晉侯蘇列鼎顯然是《絲衣》這首古詩生動的註腳。

  由此看來,古代中國青銅食器不僅單純作為實用器,而且被賦予了特殊的使命,彰顯的是尊卑貴賤的社會地位,是等級身份和行為規範的標誌,由此形成獨特的禮器體系,正所謂“藏禮於器”。

  例如1978年陝西扶風齊村出土的簋,體量巨大,通高59厘米,口徑43厘米,腹深23厘米,重達60公斤,是存世商周青銅簋中最大的一件,而它的主人正是赫赫有名的周厲王。《詩經·小雅·伐木》雲“於(wū)粲灑埽,陳饋八簋”,說的是天子九鼎八簋,通過這一件器物,我們就可以遙想西周天子氣像是何等的恢弘磅礴。西周青銅食器高度發達,還出現了很多新的器型,如簠、盨等。現藏於中國國家博物館的內史盨,便是年代最早的青銅盨之一。值得一提的是,中國國家博物館館藏名器西周大盂鼎,鼎內鑄有銘文291字,其中一段銘文記載的是商人因縱酒誤國,以致亡國的史實,使我們不由聯想到商紂王“以酒為池”的惡跡,這也是目前發現的唯一有關商人縱酒亡國的實物證據。

  東週時期,列國諸侯紛爭不休,青銅文化呈現出鮮明的地域差異,青銅食器也不例外,顯得爭奇鬥豔。

  1978年河南淅川下寺二號墓出土的七件王子午鼎是一套列鼎,器主是楚莊王之子王子午,其中最大的一件通高67.4厘米、口徑66厘米、重110.4公斤,出土時還附有一銅匕,是挹取鼎中之肉的工具。這種平底束腰形制的鼎,是東週時期楚文化的代表,現藏於中國國家博物館。

  長江下游乃至廣東、廣西等南方地區,則流行一種被稱作“越式鼎”的三足細瘦外撇的銅鼎,極具地方特色。至於河北、北京一帶,則常見一種世稱“燕式豆”的銅豆,同樣別具一格。由此可見,東週時期銅豆的地位上升,常與鼎作為固定組合出現。

  歷經數千年的滄桑,那些觥籌交錯的場面早已湮沒於歷史深處,但留存至今的一件件青銅食器足以讓我們浮想聯翩,去回味那個鐘鳴鼎食的時代。毋庸置疑,這些承載著中華文明基因的青銅食器,早已脫離了其本身的實用意義,演變為國家政權、社稷秩序的象徵,進而又演變為中華文化的象徵性符號,並將一代一代傳承下去。

  (作者為中國國家博物館館長,本報記者王珏整理。圖片由國家博物館提供)

  版式設計:沈亦伶

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

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

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

火樹銀花_台北網頁設計

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。

本站聲明:網站內容來http://www.societynews.cn/html/wh/fq/,如有侵權,請聯繫我們,我們將及時處理

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

擁有後台管理系統的網站,將擁有強大的資料管理與更新功能,幫助您隨時新增網站的內容並節省網站開發的成本。