MongoDB 4.X CRUD基本操作

本文總結了MongoDB 4.X在mongo shell客戶端涉及的對文檔一些基本的增刪改查操作,即CRUD操作。主要結合了自己平時使用MongoDB的操作命令,更詳細的命令可以參考官方文檔: https://docs.mongodb.com/manual/crud/ 。

創建(Create Operations)

創建(Create Operations)也叫插入操作,當集合不存在時,插入操作同時也會創建集合。MongoDB提供以下幾種插入文檔方法:

  • db.collection.insert():在指定集合中插入單個或多個文檔。
  • db.collection.insertOne():在指定集合中插入單個文檔(版本3.2新增)。
  • db.collection.insertMany():在指定集合中插入多個文檔(版本3.2新增)。

db.collection.insert()

在平時的使用當中,db.collection.insert()是我用得最多的文檔插入方式,具體的語法格式如下:

db.collection.insert(
   <document or array of documents>,
   {
     writeConcern: <document>,
     ordered: <boolean>
   }
)

參數說明:

  • document:指定一個或多個文檔;
  • writeConcern:文檔寫入確認級別(可選),關於讀寫策略確認級別,以後再進行討論;
  • ordered:指定文檔是否按順序插入(可選),默認為true;
    • 當指定為true時,插入多個文檔時將文檔排序保存在一個數組中進行插入,如果其中有一個文檔插入失敗,則會導致數組中餘下的文檔不進行插入操作;
    • 當指定為false時,插入多個文檔時將文檔不進行排序保存在一個數組中進行插入,如果其中有一個文檔插入失敗,則不影響數組中餘下的文檔進行插入操作。

如果插入的文檔當中沒有指定_id字段,則MongoDB會自動為文檔生成具有唯一ObjectId值的字段_id。

使用示例:

// 沒有指定_id字段的插入單個文檔
db.products.insert( { item: "card", qty: 15 } );

// 指定_id字段的插入單個文檔
db.products.insert( { _id: 10, item: "box", qty: 20 } );

// 插入多個文檔,不進行排序,多個文檔包含在數組[]中
db.products.insert(
   [
     { _id: 11, item: "pencil", qty: 50, type: "no.2" },
     { item: "pen", qty: 20 },
     { item: "eraser", qty: 25 }
   ]
);

// 插入多個文檔,並進行排序
db.products.insert(
   [
     { _id: 20, item: "lamp", qty: 50, type: "desk" },
     { _id: 21, item: "lamp", qty: 20, type: "floor" },
     { _id: 22, item: "bulk", qty: 100 }
   ],
   { ordered: false }
);

db.collection.insertOne()

語法格式如下:

db.collection.insertOne(
   <document>,
   {
      writeConcern: <document>
   }
)

參數說明:

參考db.collection.insert()的參數說明。

使用示例:

// 單行插入文檔,關於_id字段指定與否也與db.collection.insert()一致
db.products.insertOne( { item: "card", qty: 15 } );

db.collection.insertMany()

語法格式如下:

db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean>
   }
)

參數說明:

參考db.collection.insert()的參數說明。

使用示例:

參考db.collection.insert()的參數說明。

關於返回確認信息

db.collection.insert()在插入文檔成功之後返回的信息相對較為簡潔:

db.products.insert( { item: "card", qty: 15 } );
WriteResult({ "nInserted" : 1, "writeConcernError" : [ ] })

db.collection.insertOne()和db.collection.insertMany()返回的信息較為詳細:

db.products.insertOne( { item: "card", qty: 15 } );
{
    "acknowledged": true,
    "insertedId": ObjectId("5eccbd214139000074003be8")
}

db.products.insertMany( [
      { _id: 10, item: "large box", qty: 20 },
      { _id: 11, item: "small box", qty: 55 },
      { _id: 12, item: "medium box", qty: 30 }
   ] );
{
    "acknowledged": true,
    "insertedIds": [
        10,
        11,
        12
    ]
}

查詢(Read Operations)

查詢(Read Operations)讀操作,是對集合中已存在的文檔進行查詢,即對應關係型數據庫當中的select操作,比如MySQL,MongoDB提供以下幾種主要查詢文檔方法:

  • db.collection.find():查詢指定集合中滿足條件的一個或多個文檔和視圖;
  • db.collection.findOne():查詢指定集合中滿足條件的第一個文檔,並以格式化方式展現,通過pretty()方法。

來自官方文檔的測試數據:

db.inventory.insertMany([
   { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

db.collection.find()

db.collection.find()可以說是使用頻率最高的方法了,可以用來查詢數據庫集合當中的文檔。

語法格式如下:

db.collection.find(<query>, <projection>)
  • query:查詢表達式;
  • projection:指定查詢結果集中需要显示的字段。
    • Col_name:1|true 代表显示該字段;
    • Col_name:0 | false 代表不显示該字段。

_id字段是默認显示的,如果不想显示,則顯式指定{"_id" : 0}。

查詢所有文檔:

db.inventory.find()

或

db.inventory.find({})

db.collection.findOne()

db.collection.findOne()方法显示符合條件查詢的第一條文檔,接受的參數與db.collection.find()方法一致。

條件查詢操作符

通常對文檔的查詢,是需要帶條件的,而很少使用到不帶條件的全文檔檢索,以下總結了幾種常使用的查詢操作符:

比較操作符

比較操作符涉及的操作如下錶所示:

名稱 說明
$eq 與指定值相等
$gt 大於指定的值
$gte 大於或等於指定的值
$in 指定的值在數組中
$lt 小於指定的值
$lte 小於或等於指定的值
$ne 所有不等於指定的值
$nin 指定的值不在數組中

使用示例:

// $eq:等值查詢 SQL: SELECT * FROM inventory WHERE status = "D";
db.inventory.find( { status: "D" } )

// $ne 同$eq

// $gt:範圍查詢(以大於為例) SQL: SELECT * FROM inventory WHERE qty > 30;
db.inventory.find( { qty: { $gt: 30 } } )

// $gte、$lt、$lte 同$gt

// $in:或查詢,可使用or代替 SQL: SELECT * FROM inventory WHERE status in ("A", "D")
db.inventory.find( { status: { $in: [ "A", "D" ] } } )

// $nin 同$in

邏輯操作符

邏輯操作符涉及的操作如下錶所示:

名稱 說明
$and 指定查詢同時滿足多個條件查詢子句
$not 指定查詢不滿足條件查詢子句
$nor 指定查詢無法滿足多個條件查詢子句
$or 指定查詢滿足其中某個條件查詢子句

使用示例:

// $and: 邏輯與查詢 SQL: SELECT * FROM inventory WHERE status = "A" AND qty < 30;
db.inventory.find( { $and: [ { status: { $eq: "A" },  qty: { $lt: 30 } } ] } )

// $not: 不符合查詢 SQL: SELECT * FROM inventory WHERE status <> "A";
db.inventory.find( { status: { $not: { $eq: "A" } } } )

/*
$nor: 無法同時滿足多個條件查詢,字段不存在時也符合 SQL: SELECT * FROM inventory WHERE status <> "A" AND qty > 30; 
符合以下條件之一都會出現在結果集中:
1.文檔包含status和qty字段並且符合條件;
2.文檔包含status字段並且符合條件,不包含qty字段;
3.文檔不包含status字段,包含qty字段並且符合條件;
4.文檔不包含status字段和qty字段。
*/
db.inventory.find( { $nor: [ { status: { $eq: "A" } },  { qty: { $lt: 30 } } ] } )

// $or: 邏輯或查詢 SQL: SELECT * FROM inventory WHERE status = "A" OR qty < 30;
db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )

元素操作符

元素操作符主要涉及的操作如下錶所示:

名稱 說明
$exists 指定查詢文檔是否有對應的字段
$type 指定查詢文檔的某個字段是否是對應類型

使用示例:

// $exists: 是否存在指定字段查詢
db.inventory.find( { price: { $exists: true } } )

// $type: 字段是否是指定類型查詢
db.inventory.find( { "qty": { $type: "double" } } )

評估操作符

評估操作符主要涉及的操作如下錶所示,更多操作符可以參考官方文檔:https://docs.mongodb.com/manual/reference/operator/query-evaluation/。

名稱 說明
$expr 為同一個文檔中的字段指定表達式並且符合條件的查詢,比如比較同一文檔當中兩個字段的值
$mod 為字段值取模並且符合條件的查詢

為了更好的使用這兩個主要的操作符,額外創建個文檔:

db.monthlyBudget.insertMany([
    { "_id" : 1, "category" : "food", "budget": 400, "spent": 450 },
    { "_id" : 2, "category" : "drinks", "budget": 100, "spent": 150 },
    { "_id" : 3, "category" : "clothes", "budget": 100, "spent": 50 },
    { "_id" : 4, "category" : "misc", "budget": 500, "spent": 300 },
    { "_id" : 5, "category" : "travel", "budget": 200, "spent": 650 }
]);

使用示例:

// $expr: 允許使用聚合表達式,這裏以$gt為例,更多表達式參考 https://docs.mongodb.com/manual/meta/aggregation-quick-reference/#aggregation-expressions
db.monthlyBudget.find( { $expr: { $gt: [ "$spent" , "$budget" ] } } )

// $mod: 對字段所在值進行取模運算,显示符合條件的查詢,如qty字段值對4取模,並且餘數為0
db.inventory.find( { qty: { $mod: [ 4, 0 ] } } )

更新(Update Operations)

更新(Update Operations)是對已存在的文檔進行修改操作,MongoDB提供以下幾種主要更新文檔方法:

  • db.collection.update():更新或替換集合中符合條件的一個或多個文檔;
  • db.collection.updateOne():只更新集合中符合條件的第一個文檔,即使有多個文檔(版本3.2新增);
  • db.collection.updateMany():更新集合中所有符合條件的文檔(版本3.2新增)。

db.collection.update()

根據update指定的表達式可以修改文檔中符合條件的字段或代替整個文檔。具體的語法格式如下:

db.collection.update(
   <query>,   //查詢表達式
   <update>,  //更新表達式
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>                   // 版本4.2新增
   }
)

參數說明:

  • query:更新文檔的查詢表達式;如果指定了參數upsert: true並且集合中沒有符合查詢條件的文檔,查詢條件中有關於字段_id指定了.分隔符的,並不會插入新的文檔;

  • update:主要包含三種格式

    • 1.更新文檔:只包含更新操作符表達式;
    • 2.替換文檔:只包含<field1>: <value1>對;
    • 3.聚合管道:版本4.2新增,詳細參考官方文檔。
  • upsert:當query查詢條件沒符合更新的文檔,就新創建文檔(可選),默認值為false;

  • multi:是否更新多個符合條件的文檔(可選),默認值為false,只更新符合條件的第一個文檔;

  • writeConcern:參考db.collection.insert()相同參數說明;

  • collation:指定校對規則(可選,版本3.4新增);

  • arrayFilters:文檔數組更新過濾操作符(可選,版本3.6新增);

    詳細參考:https://docs.mongodb.com/manual/reference/method/db.collection.update/#specify-arrayfilters-for-array-update-operations

  • hint:採用文檔或字符串的形式指定適用於查詢表達式的索引,如果索引不存在則報錯(可選,版本4.2新增)。

使用示例:

使用示例將通過使用兩種場景進行,一是沒有使用參數選項upsert,二是使用參數選項upsert。

  • 不使用選項upsert
// 測試數據
db.books.remove({});

db.books.insertMany([
  {
    "_id" : 1,
    "item" : "TBD",
    "stock" : 0,
    "info" : { "publisher" : "1111", "pages" : 430 },
    "tags" : [ "technology", "computer" ],
    "ratings" : [ { "by" : "ijk", "rating" : 4 }, { "by" : "lmn", "rating" : 5 } ],
    "reorder" : false
   },
   {
    "_id" : 2,
    "item" : "XYZ123",
    "stock" : 15,
    "info" : { "publisher" : "5555", "pages" : 150 },
    "tags" : [ ],
    "ratings" : [ { "by" : "xyz", "rating" : 5 } ],
    "reorder" : false
   }
]);


/* 使用選項參數 upsert: true
1、如果查詢表達式找到匹配的文檔,則執行更新操作;
2、如果查詢表達式沒有找到匹配的文檔,則執行插入操作;
*/
db.books.update(
   { item: "ZZZ135" },   // 查詢表達式
   {                     // 更新或替換文檔
     item: "ZZZ135",
     stock: 5,
     tags: [ "database" ]
   },
   { upsert: true }
);

// 1.使用更新操作表達式
/* $set操作符
1、查詢表達式指定需要更新的文檔 _id;
2、$inc操作符: stock的字段值+5;
3、$set操作符: 替換item字段值,替換嵌入文檔info的publisher字段值,替換tags字段值,替換數組ratings的第二個元素值
*/
db.books.update(
   { _id: 1 },
   {
     $inc: { stock: 5 },
     $set: {
       item: "ABC123",
       "info.publisher": "2222",
       tags: [ "software" ],
       "ratings.1": { by: "xyz", rating: 3 }
     }
   }
);
更新之後的文檔:
{

  "_id" : 1,
  "item" : "ABC123",
  "stock" : 5,
  "info" : { "publisher" : "2222", "pages" : 430 },
  "tags" : [ "software" ],
  "ratings" : [ { "by" : "ijk", "rating" : 4 }, { "by" : "xyz", "rating" : 3 } ],
  "reorder" : false
}

// 2.為已存在的數組添加元素
// $push操作符: 為指定文檔數組ratings添加一個元素
db.books.update(
   { _id: 2 },
   {
     $push: { ratings: { "by" : "jkl", "rating" : 2 } }
   }
);
更新之後的文檔:
{
  "_id" : 2,
  "item" : "XYZ123",
  "stock" : 15,
  "info" : {
   "publisher" : "5555",
   "pages" : 150
  },
  "tags" : [ ],
  "ratings" : [
   { "by" : "xyz", "rating" : 5 },

   { "by" : "jkl", "rating" : 2 }

  ],
  "reorder" : false
 }

// 3.文檔移除字段
// $unset操作符: 移除文檔的指定字段,為_id:1文檔移除tags字段
db.books.update( { _id: 1 }, { $unset: { tags: 1 } } );
更新后的文檔:
{
  "_id" : 1,
  "item" : "TBD",
  "stock" : 0,
  "info" : {
   "publisher" : "1111",
   "pages" : 430
  },
  "ratings" : [ { "by" : "ijk", "rating" : 4 }, { "by" : "lmn", "rating" : 5 } ],
  "reorder" : false
 }

// 4.替換整個文檔
// 替換_id:2的文檔
db.books.update(
   { _id: 2 },
   {
     item: "XYZ123",
     stock: 10,
     info: { publisher: "2255", pages: 150 },
     tags: [ "baking", "cooking" ]
   }
);
更新后的文檔:
{
   "_id" : 2,
   "item" : "XYZ123",
   "stock" : 10,
   "info" : { "publisher" : "2255", "pages" : 150 },
   "tags" : [ "baking", "cooking" ]
}

// 5.更新多個文檔
db.books.update(
   { stock: { $lte: 10 } },
   { $set: { reorder: true } },
   { multi: true }
);
更新后的全部文檔:
[
  {
    "_id" : 1,
    "item" : "ABC123",
    "stock" : 5,
    "info" : {
     "publisher" : "2222",
     "pages" : 430
    },
    "ratings" : [ { "by" : "ijk", "rating" : 4 }, { "by" : "xyz", "rating" : 3 } ],

    "reorder" : true

   }
   {
     "_id" : 2,
     "item" : "XYZ123",
     "stock" : 10,
     "info" : { "publisher" : "2255", "pages" : 150 },
     "tags" : [ "baking", "cooking" ],

     "reorder" : true

   }
]
  • 使用upserts選項
/* 使用選項參數 upsert: true
1、如果查詢表達式找到匹配的文檔,則執行更新操作;
2、如果查詢表達式沒有找到匹配的文檔,則執行插入操作;
*/

// 1.插入未符合更新條件的文檔
db.books.update(
   { item: "ZZZ135" },   
   {                     
     item: "ZZZ135",
     stock: 5,
     tags: [ "database" ]
   },

   { upsert: true }      

);
因為集合併未滿足條件的文檔,則插入的文檔為:
{
  "_id" : ObjectId("5da78973835b2f1c75347a83"),
  "item" : "ZZZ135",
  "stock" : 5,
  "tags" : [ "database" ]
}

// 2.插入未符合更新條件並且基於更新操作符的文檔
// 如果沒有符合更新查詢條件,並且使用的是更新操作符,則會基於當前的查詢條件和更新操作符字段插入新的文檔
db.books.update(
   { item: "BLP921" },   
   {                     
      $set: { reorder: false },
      $setOnInsert: { stock: 10 }
   },
   { upsert: true }      
);
新插入的文檔為:
{
  "_id" : ObjectId("5da79019835b2f1c75348a0a"),
  "item" : "BLP921",
  "reorder" : false,
  "stock" : 10
}

// 3.插入未符合更新條件並且基於聚合管道的文檔
// 關於聚合管道請參考官方文檔:https://docs.mongodb.com/manual/reference/method/db.collection.update/#update-with-aggregation-pipeline

// 4.插入未符合更新條件並且同時聯合多文檔操作符的文檔
如果不符合查詢條件,則只會插入單個文檔
db.books.update(
  { "info.publisher": "Self-Published" },   
  {                                         
    $set: { reorder: false, tags: [ "literature", "hardcover" ], stock: 25 }
  },
  { upsert: true, multi: true }             
);
新插入的文檔:
{
  "_id" : ObjectId("5db337934f670d584b6ca8e0"),
  "info" : { "publisher" : "Self-Published" },
  "reorder" : false,
  "stock" : 25,
  "tags" : [ "literature", "hardcover" ]
}

db.collection.updateOne()

根據update指定的參數可以修改文檔中符合條件的字段或代替整個文檔,與db.collection.update()不同的是每次只更新單個文檔。

語法格式如下:

db.collection.updateOne(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>        
   }
)

參數說明:

參考db.collection.update()的參數說明。

使用示例:

// 參考db.collection.update()

db.collection.updateMany()

根據update指定的參數可以修改文檔中符合條件的字段或代替整個文檔,與db.collection.updateOne()不同的是更新所有符合條件的文檔。

語法格式如下:

db.collection.updateMany(
   <filter>,
   <update>,
   {
     upsert: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ],
     hint:  <document|string>        
   }
)

參數說明:

參考db.collection.update()的參數說明。

使用示例:

// 參考db.collection.update()

刪除(Delete Operations)

刪除是指對集合當中已存在的文檔進行清除操作,MongoDB提供以下幾種主要刪除文檔方法:

  • db.collection.deleteOne():只刪除集合中符合條件的一個文檔;
  • db.collection.deleteMany():刪除集合中所有符合條件的文檔;
  • db.collection.remove():刪除集合中符合條件的一個或多個文檔。

db.collection.deleteOne()

根據filter選項條件刪除集合中的單個文檔,具體語法格式如下:

db.collection.deleteOne(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)

參數說明:

  • filter:指定基於查詢表達式的過濾條件,關於查詢表達式可以查看db.collecion.find()中的<query>;
  • writeConcern:參考db.collection.insert()相同參數說明;
  • collation:指定校對規則(可選,版本3.4新增);

使用示例:

// 刪除指定條件的單個文檔
db.orders.deleteOne( { "_id" : 1 } );
{ "acknowledged" : true, "deletedCount" : 1 }

db.collection.deleteMany()

根據filter選項條件刪除集合中的單個文檔,具體語法格式如下:

db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)

參數說明:

參考db.collection.deleteOne()的參數說明。

使用示例:

// 刪除指定條件的多個文檔
db.orders.deleteMany( {"cust_id" : "Cam Elot"} );
{ "acknowledged" : true, "deletedCount" : 2 }

注意: 如果是對固定集合進行刪除文檔操作則會報錯,固定集合的清除操作使用方法db.collection.drop()。

總結

  1. 本文簡單梳理了在Mongo Shell下基本的CRUD操作,主要適用於DBA的運維管理,如果是研發同學,根據不同的編程語言使用不同客戶端驅動進行操作,詳細同樣可以參考官方文檔;
  2. 針對CRUD各個方面還有其他一些額外的方法,比如查詢修改文檔方法db.collection.findAndModify(),這裏只是總結每個文檔操作中一些最基礎的方法,對於額外高級的方法這裏不再贅述;
  3. 掌握了這些基本的CRUD操作,就可以對MongoDB文檔進行操作了,但還是需要控制好權限,畢竟數據安全不是小事,做變更之前做好數據的備份,以防萬一。

參考

https://docs.mongodb.com/manual/crud/

https://docs.mongodb.com/manual/reference/operator/query-evaluation/

https://docs.mongodb.com/manual/reference/method/db.collection.update/#specify-arrayfilters-for-array-update-operations

https://docs.mongodb.com/manual/reference/method/db.collection.update/#update-with-aggregation-pipeline

〖本人水平有限,文中如有錯誤還請留言批評指正!〗

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

【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

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

Python面試常用的高級用法,怎麼動態創建類?

本文始發於個人公眾號:TechFlow,原創不易,求個關注

今天是Python專題的第16篇文章,今天我們來聊聊Python當中的元類。

元類是Python當中的高級用法,如果你之前從來沒見過這個術語或者是沒聽說過這個概念,這是非常正常的,因為一方面它的使用頻率不高,另外一方面就是它相對不太容易理解。以至於很多Python開發者都理解得不是很深入,導致了市面上相關的資料也並不太多。我也是讀了一些大牛的代碼才開啟了這扇新世界的大門。

一切都是對象

我們之前的時候曾經介紹過,在Python當中一切都是對象,注意,是一切都是對象。我們都知道對象是類實例化之後的結果,可以簡單地將類和對象類比成模具和成品的關係。模具是類,而根據模具做出來的產品是對象。

這個比喻思想比較接近,但是不完美。因為實際當中一個模具可以做出多個產品,一個產品只有一個模具。但編程語言當中不同,由於類之間可以繼承以及多繼承,也就是說一個對象可以對應多個類。所以這個比喻不是特別合適,但是類和對象的關係是沒錯的。

但是這就有了一個問題,既然Python當中一切都是對象,那麼是不是說類其實也是一個對象呢?也就是說一個模具其實也是另外一個模具的產品?同樣,這個模具的模具其實也是另外一個模具的產品,那麼我們一直追問下去會怎麼樣呢?

很簡單,我們做個實驗就知道了,我們可以用_class__關鍵字來查看一個變量的類型,那麼我們反覆調用就可以查看其中的關係了:

從上面的圖中我們可以發現,num是int類型的變量。我們繼續查看int這個類型的類型,得到了type類型。而當我們去查看type的類型的時候,會發現我們得到的還是一個type的類型。

所以我們可以明白了,type是Python中用來創建所有類的元類,是所有模具的模具。在Python當中,我們把一個類的類叫做元類(metaclass)。所以type就是Python當中內置的元類,我們也可以自己創建我們需要的元類。通過元類,我們創建的對象也是一個類,而不是一個實例。

動態創建類

理解了type是一切類基礎之後,再來看動態類就簡單了。動態類是動態語言最大的特性之一,作為典型的動態語言,Python自然也是支持類型的動態創建的。

在Python當中,創建動態類型的一種方式就是通過type關鍵字。說起來有些意想不到,type函數不是用來查詢對象所屬的類型的嗎,怎麼還可以創建類呢?

這其實是type的另外一種用法,作為元類來創建一個類。在這種用法,type函數接收3個參數,分別是類型的名稱,父類的元組,以及一個字典。除了第一個參數之外,後面兩個參數都可以為空。比如我們來看一個例子:

注意,type返回的結果是一個類,而不是一個實例。所以我們還可以通過它創建實例:

hello = Hello()

這樣創建出來的是最簡單的空類,它什麼也沒有,和下面的代碼等價。

class Hello:
    pass

我們也可以在type的參數當中為這個類填充屬性和方法:

def hello_world(self):
    print('hello')
    
Hello = type('Hello', (), {'hello':hello_world, 'num': 3})

這樣我們就為Hello這個類創建了一個方法叫做hello,一個屬性num等於3。我們可以來調用一下試試:

也就是說我們可以使用type來根據我們的需要自行定義類,只不過type既可以獲取對象的類型又可以創建新的類,看起來可能覺得有些不太直觀,但是其實這也是說得通的。我們在Python當中通過調用str創建一個string對象,通過int來創建一個integer對象,那麼通過type則是創建一個類的對象。

實現繼承

我們之前說了,當我們使用type來創建類的時候,還可以傳入父類的元組從而實現類的繼承。

比如我們再創建一個叫做World的類繼承剛才通過type創建出來的Hello類,然後在為它加上額外的函數:

def say_world(self):
    print('World')
    
World = type('World', (Hello, ), {'world': say_world})

注意這裏傳入第二個參數是父類的元組,既然是元組,那麼當元素只有一個的時候,需要加上逗號,表示這是一個元組。這樣創建出來的類和我們通過class定義的靜態類效果是一樣的:

也就是說,我們可以先把函數實現,然後再根據任務的需要把這些函數組裝成新的類。顯然,這和傳統的C++以及Java這些靜態類型的語言相比,要靈活得多。

總結

我們固然可以通過type來創建動態創建類,但是從上面的使用過程也應該看得出來,這樣使用起來並不太方便,並且很多進階的功能很難實現。舉個簡單的例子,比如我們想要動態地為一個已有的類添加一些動態的方法,生成新的類。我們使用type就很難實現。type也的確不是Python元類的主要運用,metaclass才是王道,但由於篇幅限制,這部分將放在下一篇文章當中。

當然,元類是一個非常高級的用法,以至於Python的創始人說99%的Python程序員並不需要用到它。所以如果你覺得理解起來非常費勁的話也沒有關係,知道這麼個概念就可以了。

今天的內容就是這些,如果喜歡本文,可以的話,請點個關注,給我一點鼓勵,也方便獲取更多文章。

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

【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

※台中搬家公司費用怎麼算?

30萬以內教授看好的車型!但是它們都…

30萬以內更喜歡這些車型價格從低到高排列實際上,一輛車子賣不賣得好並不單單是車型本身的問題,4S店的門店數量、銷售的接待服務、售後管理都能直接影響到消費者的購車決定。作為一個“偽土豪”,周末的時間都會跑去4S店去看車。

平時看寫的導購文章已經夠多了,但是相信不少人還是選不到自己心儀的好車,這是正常的!市面上的車型選擇很多,一般面面俱到的車型價格都很貴,而我國汽車市場主要是集中在30萬這個區間內。有不少粉絲對的選車口味很感興趣,所以今天決定扒一扒30萬以內比較喜歡的車型,其實它們都是有一個共通點,那就是…

其實這是一個很普遍的現象,車評人眼中所看好的車型在市場上幾乎都是賣不好的貨色,而被我們黑就是垃圾的車型卻賣到瘋狂。原因很簡單,絕大部分消費者選車都偏向家用,選車需求:外觀要大氣、配置要高、空間要大、質量要穩定、操控是什麼?對於一個愛車之人,選車的要求則是:外觀帥、操控要好,動力要足、配置夠用就好、空間是什麼?兩種截然不同的選車理念已經決定車子賣得火不火的主要因素,畢竟“實用”才是眾多消費者的選擇,這才導致為什麼有這麼多“叫好不叫座”的車型出現。

30萬以內更喜歡這些車型

價格從低到高排列

實際上,一輛車子賣不賣得好並不單單是車型本身的問題,4S店的門店數量、銷售的接待服務、售後管理都能直接影響到消費者的購車決定。作為一個“偽土豪”,周末的時間都會跑去4S店去看車。跑得多你就能發現其實每一個品牌的4S店服務都有一定程度的差距,在必要的時候,還是會花錢買下來豐富一下自己家的車型庫(1:18模型)!

以所在的地區來說,在合資車型4S店中,個人感覺福特、別克的銷售一直都有着不錯的服務態度(基本的禮儀到位)、其次就是豐田、本田、大眾這一個檔次的,(看車的人比較多,銷售都沒空搭理你),最後就是馬自達這一類(看車的人沒幾個,但是銷售們也不會主動來搭理你)。

30萬以內,看上的車型其實不少!而今天說過的車型,除了宏光,其餘的都是賣不好的貨色,不過他們都有着各自的特點!高端品牌車型、改裝潛力極大的选手、駕控一流的选手,都是所喜愛的。不過為什麼不說SUV呢?因為中國SUV市場異常火爆,看上的SUV車型都賣得很好,就像昂科威、傳祺GS4、博越這一類的SUV都是很熱門的車型,是可以考慮的。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

※超省錢租車方案

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

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

※回頭車貨運收費標準

本年度印象最深刻的四台轎車

作為一輛主打舒適的旅行車,2系旅行版已經做得足夠好了。從去年在海外上市,到今天由東本投產,十代思域可謂是颳起了一股屬於自己的旋風。1。5T發動機搭載6MT/CVT變速箱,能爆發出最大177馬力,不到8秒完成破百,加上不到13萬的起售價,這些標籤已經足以讓很多人瘋狂。

我們之前一共做了年度印象最深的性能車和SUV兩期大爆炸節目,今天,就該論到年度印象最深刻的轎車了。

奔馳S級在豪華級別車型中一直都是最強者般的存在,而之前新E級面世后,大家紛紛表示買這輛小S級就夠了。然而,試完S500L之後,我們認為還是太年輕了。

S500L的各方面的質感,完全是高E級一個檔次的,而它所搭載的4.0T V8發動機能提供相當有力道的動力輸出,這就已經和其他用着2.0T發動機的同級車型拉開差距了。

而無與倫比的後排乘坐體驗,真的讓人深深感嘆有錢真好。舒適度極高的座椅,坐到老闆位上之後,你就可以開始享受人生了。

雖然S級無論是自己開還是司機開,都會被人認為是司機,但是,S級的魅力真的很難讓人拒絕。

寶馬2系旅行版在換上了UKL前驅平台後,成為了首輛前驅寶馬。而大家一向對寶馬的認識就是直六發動機+后驅,而2系旅行版這樣一改,還得了?

但事實是,2系旅行版取消了后驅設定之後,整輛車的後排和後備廂空間得到了不少的提升。 畢竟是旅行版,所以兼顧家用才是它的屬性。作為一輛主打舒適的旅行車,2系旅行版已經做得足夠好了。

從去年在海外上市,到今天由東本投產,十代思域可謂是颳起了一股屬於自己的旋風。1.5T發動機搭載6MT/CVT變速箱,能爆發出最大177馬力,不到8秒完成破百,加上不到13萬的起售價,這些標籤已經足以讓很多人瘋狂。

雖然駕駛表現相當強勢,但十代思域犧牲了內飾造工來換取了更大的性能表現,就可能會讓一些想入手思域的朋友只能繼續觀望了。但是對於改裝愛好者來說,十代思域無疑是相當好的選擇之一。

不過,現在你想入手一輛思域,大部分地區還是要等待或是加價提車,這產能跟不上,想銷量瘋漲也很難。

CT6上市之初的定價使其擁有了相當強的價格優勢,加上驚艷的外觀設計,着實讓人覺得它能在風雲變幻的國內豪華車市場站穩腳跟。但可惜的是,由於種種原因,CT6並沒有取得理想的銷量。除去品牌知名度因素之後,實在想不到有更好的理由來解釋了。

但是,你只要試駕了這輛配有電磁懸挂和后轎轉向系統的CT6,你就會覺得它開起來根本不像一輛中大型轎車,甚至你要快開的時候,信心會更加充足。只可惜,如果你開的車型沒有配備這兩個神器的話,那麼你就會覺得它遠遠不如寶馬5系。

以上四輛車就是我們年度印象最深的轎車,各位敬請期待下一期印象最深的新能源車!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

※超省錢租車方案

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

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

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

※台中搬家遵守搬運三大原則,讓您的家具不再被破壞!

拒絕PPT造車?蔚來汽車倫敦發布會的四大猜想

猜想三:神秘logo或為車標 暗含品牌名稱對於將要發布的品牌,目前找不到多少有價值的信息。兩周前蔚來汽車官方公眾號的一篇文章中,發布了一個圖形,外界猜測很可能就是未來量產車的車標,但這個品牌到底叫什麼至今不得而知。

距離11月21日蔚來汽車在倫敦發布品牌及電動超跑還有不到3天時間,官方卻依舊欲語還休,目前只公布了一個疑似的品牌logo和幾張超跑的局部照片,吊足胃口。

兩年前的這個時候,蔚來汽車成立,創始人李斌一再強調“我們不說沒有做到的事”,蔚來汽車也被業內視為“最靠譜”的新創車企。這場他們兩年以來正式舉辦的第一次發布會,想必是要兌現李斌許下的承諾了。

而一場發布會搞得如此神秘,不禁讓人聯想,到底又在憋什麼大招?

我們通過各種渠道搜集到一些信息,梳理出這場發布會的四大猜想。

猜想一:不走尋常路 藝術館里的發布會

不久前,蔚來官方宣布了即將在倫敦召開發布會,但是具體選址卻秘而不宣。直到我們近期拿到电子邀請函后,才知道此次發布會的舉辦地竟然是劍走偏鋒的倫敦薩奇藝術館(Saatchi Gallery)!

薩奇藝術館是一座專門收藏倫敦現代美術作品的藝術館,坐落於倫敦切爾西的帝王路,所有新生代藏品都是查爾斯·薩奇先生自身的收藏,這位讓英國當代藝術揚名世界的重要推手,在2010年將他的藏品和藝術館都捐贈給了政府。

作為倫敦文化地標,薩奇藝術館承辦過很多國際大型展覽,在2008年遷址開幕展中,張曉剛、方力鈞、岳敏君、王廣義、曾梵志、吳山專等24位中國當代藝術家的作品首次在此進行聯展。今年4月至9月,藝術館推出獻給滾石樂隊的第一個國際展覽,呈現樂隊50多年的歷史,展出超過500樣滾石樂隊物件。

蔚來汽車的發布會如何與薩奇藝術館相融合?炫酷的超跑如何跨界藝術空間?由於選址的特殊性,這次發布會的形式有可能打破大多科技品牌“一塊巨幕+一位主講人”的慣有思路!

猜想二:公布超跑性能數據 公開對抗邁凱倫

這款即將發布的跑車,是目前公開報道中第一台脫離了ppT、非概念、能在賽道上飛馳的實體電動跑車,蔚來汽車大約用了一年半時間造出了這款電動超跑,可以說是兌現了創始人李斌去年接受媒體採訪時許下的承諾。

此前多方都或隱晦或直接的說蔚來這款超跑能與邁凱倫p1和法拉利旗艦LaFerrari等頂級超跑抗衡。並且據稱這款超跑前不久在德國紐博格林北環進行了賽道速度測試,結果令人驚喜。但蔚來汽車官方對此沒有回應,這場發布會,官方是時候展現出蔚來在設計和技術方面的實力究竟幾何了。

猜想三:神秘logo或為車標 暗含品牌名稱

對於將要發布的品牌,目前找不到多少有價值的信息。兩周前蔚來汽車官方公眾號的一篇文章中,發布了一個圖形,外界猜測很可能就是未來量產車的車標,但這個品牌到底叫什麼至今不得而知。

我們從可靠渠道獨家獲悉,蔚來汽車對這個標誌的應用,或許有更多想法——很可能不僅僅只是一個車標。但這個車標究竟代表什麼意思?這個即將發布的品牌叫什麼名字?這些問題的答案也只能靜待發布會揭曉了。

猜想四:李斌李想“同框”直播發布會

2014年,汽車之家創始人李想在微博中寫了這麼一句話:爭取2015年結束之前,打造一款0-100公里/時實測加速在3秒之內的電動概念跑車出來。

2016年11月17日,他為這條微博畫上了句號:2014年吹的牛逼,在和李斌共同投資創辦蔚來汽車之後全部實現了,雖然晚了12個月,但是技術和產品更好。

他指的顯然就是蔚來汽車即將發布的這款超跑。

被業內親切稱作“李李”組合的李斌和李想,同為互聯網出身,他們創立的汽車之家和易車網是中國汽車垂直類網站的“百事和可口”。他們也曾各為其主,相爭七八年。

但蔚來汽車打破了外界對他倆關係的固有認知。李斌曾在採訪中透露,蔚來汽車是他和李想之間的個人合作,他們對汽車的未來,有着相似的洞察,即電動車對汽車行業的革命,不僅僅是環保節能,更多的是對汽車行業用戶體驗的重塑。

11月21日的這場發布會,可能成為他們聯手實現這個願景的第一步。李想在微博中透露,他會在國內與著名體育評論員段暄全程視頻直播蔚來倫敦發布會,並在直播中與李斌連線互動。屆時將出現極其罕見的“二李同框”場景,這究竟是什麼畫風,着實難以想象。

不過,儘管對蔚來汽車的諸多好奇得不到滿足讓人抓心撓肝,好在發布會馬上就要舉行。蔚來汽車將會帶領汽車行業打開一扇怎樣的大門,我們馬上就可以見到。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

※回頭車貨運收費標準

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

※超省錢租車方案

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

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

新形象新矩陣新高度 東風雪鐵龍全面刷新“收官”車展

基於信息化、数字化、雲計算未來使用的車輛間溝通、汽車周邊科技的研發。被動與主動安全融合建立汽車網絡安全體系, 2020年前實現所有新車聯網化。隨着神龍公司“E動戰略”的全面升級,東風雪鐵龍也將在旗下所有搭載渦輪增壓發動機的新車型上使用“pURETECH”的標識,以取代原有“發動機排量+T”的傳統動力標識。

作為本年度頂級汽車盛典,第十四屆中國(廣州)國際汽車展覽會今天拉開華麗大幕。東風雪鐵龍由全新越享高級轎車C6及新銳上市的2017款C3-XR領銜,率 T時代新C5、全新C4L、C4世嘉、全新愛麗舍、雪鐵龍全新C4 pICASSO等最新產品矩陣全力出擊萬眾矚目的“收官之戰”。

品牌新形象 更年輕,更具活力和創造力

伴隨着法系旗艦車型C6的榮耀上市,雪鐵龍全球品牌形象就此煥然一新。本屆車展儼然成為東風雪鐵龍“更年輕,更具活力和創造力”全新品牌形象的“T台秀”。

隨着80后、90後日漸成為新興購車主力,東風雪鐵龍也及時應對市場變化創新求變:品牌調性逐漸同年輕族群“接軌”、品牌特質逐步向年輕化滲透。 同時,品牌形象也開始大量融入時尚化元素,力求始終走在市場潮流的最前端。東風雪鐵龍甚至這樣表態:既可以讓消費者“任性”地在全系產品中挑選到他們自己認為時尚的車型,也可以為那些追崇個性、鄙夷“街車”的消費者量身定製。

無疑,給東風雪鐵龍超強信心的是一個歷經百年享譽世界的母品牌——雪鐵龍。因此,與生俱來就具備時尚、獨特和以人為本的優秀基因。這一品牌基因的完美傳承,正是東風雪鐵龍區隔其他品牌的獨特優勢,也自然而言與特立獨行的年輕消費族群產生強烈共鳴。

進入中國24年,東風雪鐵龍秉持“人性科技 創享生活”品牌理念,不斷通過旗下的產品和科技將“樂觀、人性、巧思”品牌價值帶給中國消費者。全新越享高級轎車C6的榮耀上市,不但彰顯了東風雪鐵龍“與眾不同 愉悅感受”獨特品牌優勢,更重要的是其代表着東風雪鐵龍最新的品牌形象和發展方向:更年輕、更有活力和創造力。

產品新矩陣 構築細分市場強大“火力網”

隨着社會經濟和居民可支配收入的持續增長,中國汽車消費者的購車觀念也隨之發生了巨大變化,逐漸從“實用”向“舒適”方向過渡。這是當前汽車消費趨勢中對法系車十分有利的“點”。這個趨勢不僅解決了法系車究竟在售賣什麼,也解決了法系車要往何處去的問題。

洞悉汽車舒適性與消費者對舒適性不斷提升的消費需求,雪鐵龍提出了“CITROËN ADVANCED COMFORT”(簡稱CAC)領先舒適設計理念,通過“過濾所有外部影響”、“讓車旅生活更加便捷”、“減少精神負荷”、“讓用車更加無縫相聯”四大方面來塑造消費者的舒適汽車生活,並將此指引未來雪鐵龍全球產品研發方向。

作為“CAC”理念下研發的的首款戰略車型,法系車旗艦C6完整詮釋了CAC全球產品設計理念,那就是愜意、便捷、凈謐、簡單這4大消費者核心利益點,為顧客帶來極致優越的全方位舒適享受。全新越享高級轎車C6自上市以來,憑藉比競品頂配車型低2萬元的售價讓消費者大呼“厚道”。除此之外,C6自身的產品力也不容小覷:豐富的標準配置、出色的底盤調校功力、以及細節方面體現出的卓越品質等都博得了消費者的嘖嘖稱道:這款車想不火都不成了!

在雪鐵龍新的設計理念下,東風雪鐵龍的產品定位將更加精準,也將更加符合年輕化的需求。同時,新產品新技術的市場投放速度越來越快。隨着全新越享高級轎車C6的上市,東風雪鐵龍全新產品矩陣已經形成。僅僅在今年,就陸續推出了全新愛麗舍2016款、全新C4L、全新越享高級轎車C6及C3-XR 2017款。“十三五”期間還將導入CMp及eCMp全新平台,加速進行不同市場覆蓋,新增覆蓋D級、C+SUV和MpV、LCV等市場;平均每年推出1~2款新車,共計15款新車,成為滿足客戶主流需求,覆蓋主要細分市場的主流品牌。

此外,將加速推進車載信息娛樂化、車聯網技術及智能化。基於信息化、数字化、雲計算未來使用的車輛間溝通、汽車周邊科技的研發;被動與主動安全融合建立汽車網絡安全體系, 2020年前實現所有新車聯網化。

隨着神龍公司“E動戰略”的全面升級,東風雪鐵龍也將在旗下所有搭載渦輪增壓發動機的新車型上使用“pURETECH”的標識,以取代原有“發動機排量+T”的傳統動力標識。目前,新的標識已率先安放在旗艦車型C6上。剛剛上市的C3-XR 2017款因為增加了230THp pureTech車型,所以“pureTech”的LOGO 也醒目“佩戴”在前格柵上。據悉,其他所有車型動力新標識的配置將於2017年年底前完成。通過全系T標識的升級,以及更加時尚、科技的產品魅力,東風雪鐵龍 “與眾不同 愉悅舒適”的獨特品牌魅力將更加凸顯。

服務新標高 勇奪2016CSI、SSI“雙冠王”

汽車市場增速放緩,隨之而來的就是競爭的加劇。東風雪鐵龍強烈意識到,謀取市場份額沒有捷徑可走,惟“給客戶提供最好的產品、最好的體驗和最好的服務”方能“精誠所至金石為開”最終贏得客戶的支持與信賴。

應對市場越來越嚴酷的競爭態勢,東風雪鐵龍將“服務創新+體系建設”作為全面提升客戶滿意度的兩大“推手”,並通過一系列行之有效的質量提升行動,讓自己的客戶滿意度連年保持增長。

此外,敢於創新的東風雪鐵龍相繼提出了“八大銷售流程、精益管理、領獎台計劃、30個動人時刻”,從戰略高度系統化地構建了品牌服務質量提升的基石。圍繞這4大方向,通過品牌長期堅持,實現了客戶售時滿意度和東風雪鐵龍品牌市場美譽度的雙提升。

根植中國24年,東風雪鐵龍始終秉承雪鐵龍創始人安德烈•雪鐵龍早在百年前就曾說過的一句經典名言:“汽車廠商賣的不僅僅是汽車,還有無微不至的服務”。延續百年傳承,東風雪鐵龍堅持在服務領域勇於創新永不止步,為此也收穫了累累碩果。

2016年7月28日, J.D. power2016年中國售後服務滿意度研究(CSI)報告正式發布。在主流車細分市場中,東風雪鐵龍以全行業最高分(814分)榮登榜首並成功衛冕。不僅如此,東風雪鐵龍還在J.D. power2016年中國汽車銷售滿意度研究(SSI)也名列主流汽車品牌第一位。藉此,東風雪鐵龍就成為唯一一個連續四年售時售後兩項滿意度排名均進入“前三甲”的主流汽車品牌。

2016年是東風雪鐵龍定義的“客戶體驗年”,在終端體驗方面,2017年開始將遵循雪鐵龍全球統一的全新形象標準,對自己的終端網絡進行升級,提升展廳的硬件設施和服務能力,以滿足未來全球化產品的投放需要和用戶體驗的需求。此外,按照全球統一標準,還將在一二線城市開展小型的體驗中心:雪鐵龍之家。

品牌新形象、產品新矩陣、服務新高度,帶着裡外“三新”參展的東風雪鐵龍想必是有備而來並且意欲大有斬獲。同樣可以預見,這“三新”也必將幻化為東風雪鐵龍早日躋身中國主流汽車品牌的“新引擎”。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

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

※回頭車貨運收費標準

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

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

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

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

這有點猛!疑似 M1X 晶片的規格、效能跑分現身國外網站,12 核心 CPU + 16 核心 GPU

搭載 M1X 晶片 MacBook 可說是今年很多蘋果用戶最期待的產品之一,從 M1 來看,雖然已經知道這顆效能絕對不會差到哪去,但究竟有多強悍,相信不少人都想提前知道。而最近國外跑分網站就出現疑似 M1X 晶片的規格表,不僅非常猛,下方甚至還附上跑分比較表,如果是真的,那這顆實在有點誇張。

(圖片來源)

疑似 M1X 晶片的規格、效能跑分現身國外網站

近日國外 CPU Monkey 跑分網站上,出現一筆 Apple M1X 的跑分與規格資料,從下圖可以看到,這顆晶片採 5nm 製程技術,時脈雖然維持在 3.20GHz,但核心數提升到 12 顆,8 顆效能核心 + 4 顆節能核心。GPU 更誇張,核心數直接多一倍,變成 16 核心(M1 為 8 核心)。也有註明推出時間,預計在 2021 年的 Q2:

核心數跟去年底 LeasApplePro 爆料的 12 顆一樣,也增添這表格的可信度:

Next Mac March 12 cores

— LeaksApplePro (@LeaksApplePro) December 31, 2020

下方還有跑分數據圖,多核心相當猛,不過真實性還不知道,所以大家就參考即可,不用太認真看待。

首先是 Cinebench R23 單核心,時脈沒變,也因此分數當然跟 M1 差不多,獲得 1514 的同分表現:

Cinebench R23 多核心就超級猛,比 Ryzen 5700G 和 i9-10900X 還要高,獲得 14450 的分數:

Geekbench 5 64 位元單核心測試,也跟 M1 一樣,獲得 1744 的分數:

iGPU F32 效能測試,跟 M1 相比幾乎快提升一倍,拿下 5200 的超高分數:

如果到時 Apple 端出的 M1X 晶片真是這樣,那今年的新 Mac 看來也必入手不可阿,實在是讓人非常期待。

稍早也有消息指出,3/16 蘋果有可能舉辦春季新品發表會,不過預測新品表似乎沒有 Mac。

資料來源:CPU Monkey

針對 Apple M1 惡意軟體出現,安全自保守好三不

您也許會喜歡:

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

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

【其他文章推薦】

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

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

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

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

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

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

確認以 GT 為名! realme GT 高通 S888 新旗艦將於 3/4 14:00 正式發表

昨(17)日我們才報導過 realme 副總裁徐起在微博暗示接下來 realme 的高通 Snapdragon 888 新旗艦將命名為 GT 系列的暗示,想不到在今(18)日稍早官方證實了此消息,同時預告 realme GT 的新機發表會時間就訂在 3 月 4 日。徐起也暗示 realme GT 不僅擁有 Snapdragon 888 的澎湃性能,還擁有持久續航和和高螢幕更新率。

▲圖片來源:徐起Chase(微博)

確認以 GT 為名! realme GT 高通 S888 新旗艦將於 3/4 14:00 正式發表

經過前幾天 realme 副總裁徐起在微博暗示 realme 這款內部代號「Race」的 Snapdragon 888 旗艦為 realme GT,稍早官方正式公開證實此消息,同時也預告 3 月 4 日下午 2 點舉行 realme GT 新機發表會。

▲圖片來源:徐起Chase(微博)

徐起在微博的貼文也提及 realme GT 將追求極致、挑戰「120% 的自己」,不過目前還無法肯定 120 的暗示是指 120Hz 螢幕更新率或 120W 快速充電。不過在 realme GT 首張官方宣傳海報左下角有三個圖示暗示 realme GT 的三大特色,從圖示推測由左至右依序為處理器、螢幕更新率和充電。根據過去的傳聞, realme GT 將搭載 Qualcomm Snapdragon 888 旗艦行動平台、 120Hz 螢幕更新率和 125W UltraDart 超級閃充。

▲圖片來源:徐起Chase(微博)

去年 7 月 16 亮相自家的 125W UltraDart 超級閃充技術 ,標榜只要充電 3 分鐘就能為 4000mAh 電池容量的手機充電達到 33% 電量。不過至今 125W UltraDart 超級閃充還未在 realme 旗下手機搭載,目前還是以 65W SuperDart 閃充為主流,不排除有機會在 realme GT 首次搭載。

▲圖片來源:realme真我手機(微博)

稍早數碼閒聊站在微博透露, realmeGT 將推出素皮和玻璃兩種版本,並提及在設計上有新東西:

▲圖片來源:數碼閒聊站(微博)

其實大約兩週前, realme GT 機身外觀就已經在中國工信部資料庫曝光,螢幕正面採用左上角採單挖孔的平面全螢幕設計,同時也採用光學螢幕下指紋辨識。在 realme GT 的機身背面下緣加入 GT 字樣。至於相機規格目前還無法得知,不過據過去傳聞將配備四鏡頭主相機設計。

▲圖片來源:TENAA

接下來在 3 月中旬前已經有多款新機即將陸續推出,目前可確認的依序為 2 月 22 日發表華為 Mate X2 、2 月 25 日發表紅米 Redmi K40 系列,以及 3 月 4 日將發表紅米 Redmi Note 10 系列和 realme GT 。另外,稍早 ROG 遊戲手機官方微博也確認新一代 ROG Phone 遊戲手機命名為 ROG Phone 5 ,在中國市場也是連續第三年和騰訊遊戲合作,預計也會在 3 月正式亮相。

消息來源:徐起Chase(微博)

延伸閱讀:
Redmi Note 10 系列確定將於 3/4 全球發表,相機與螢幕為此次升級重點

您也許會喜歡:

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

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

【其他文章推薦】

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

※台北網頁設計公司全省服務真心推薦

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

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

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

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

國外 YouTuber 實測 M1 MacBook Air 貼上導熱矽膠片後,效能有感提升(更接近 MacBook Pro)

MacBook Air 與 MacBook Pro 雖然都是搭載 M1 晶片,但 MacBook Air 的 GPU 部分少一顆,也沒有散熱風扇,因此正常來說重度工作的處理效能,MacBook Air 表現會差一些,不過最近一位國外 YouTuber 找到一個解決方案,只需要花個 30 美金購入導熱矽膠片並貼在 MacBook Air 上,就能立刻提升效能表現,甚至有些測試還超過 MacBook Pro,讓人眼睛為之一亮。

M1 MacBook Air 貼上導熱矽膠片效能有感提升

近日 Max Tech 頻道上傳一部 M1 MacBook Air 加裝導熱矽膠貼片的實測影片,這貼片是從 Amazon 網站上購買的,僅 30 美金(買兩片)。不過黏貼時需要把 MacBook Air 背蓋拆掉,因此有可能會喪失保固,有興趣的人這點要注意。

導熱矽膠片黏貼在左上角的位置,他也有拍攝一部黏貼教學影片,有興趣了解的人文末會附上:

下圖為這次的測試比較內容,從 Geekbench、Cinebench、影片輸出、圖片剪輯、一直到電池續航力比較都有:

Geekbench 5 成績跟 MacBook Pro 幾乎一樣,多核心還多出 21 分:

GPU 因為少一顆,因此即便 M1 MacBook Air 加上導熱矽膠貼片也無法追上 MacBook Pro:

Cinebench R23 跑分就跟 M1 MacBook Pro 差不多,差距僅 40 分不到:

而跟未黏貼的 M1 MacBook Air 相比,黏貼後整整高出 1,000 多分,這相當驚人:

Xcode 測試也相當接近,黏貼後的 M1 MacBook Air 僅慢個 1 秒:

BruceX Benchmark 測試也非常亮眼,比 M1 MacBook Pro 還快,23.91 秒就完成:

5 分鐘 4K H.264 格式影片輸出速度,黏貼後的 M1 MacBook Air 也比 M1 MacBook Pro 快,約 3 分 2 秒就完成:

8 位元 HEVC 穩定性測試就一樣,皆為 10 秒鐘完成:

10 位元 HEVC 輸出也相同時間完成,都是 1 分鐘 12 秒,Max Tech 也提到,這項測試過去 MacBook Air 都比 MacBook Pro 還慢,因此非常讓人驚艷:

4.5K Red Raw 影片輸出則是 M1 MacBook Pro 快一些,2 分 36 秒完成,不過黏貼後的 M1 MacBook Air 也僅慢 11 秒:

8K Red Raw 影片輸出差距就稍微大一點,M1 MacBook Pro 約 20 分 20 秒就完成,黏貼後的 M1 MacBook Air 為 23 分 39 秒:

Lightroom Classic 50x 42MP 輸出測試部分,黏貼後的 M1 MacBook Air 就比較快,2 分 37 秒完成,M1 MacBook Pro 慢了 17 秒:

而最後的電池續航力測試,一開始這兩台都是 100% 充飽電,過程都進行一樣的操作測試,跑到最後一項 M1 MacBook Pro 還有 67% 電量,黏貼後的 M1 MacBook Air 剩下 52% 電量,因此對於注重續航力的人,M1 MacBook Pro 還是比較好。

不得不說,花點小錢貼上幾片導熱矽膠片,就能讓 M1 MacBook Air 效能有感提升,感覺真的挺不錯的,但必須承擔可能喪失保固的風險,已過保的人就蠻值得試試。

完整測試影片:

 

這部則是黏貼教學影片,後半部有跟未黏貼的 M1 MacBook Air 測試比較:

這有點猛!疑似 M1X 晶片的規格、效能跑分現身國外網站,12 核心 CPU + 16 核心 GPU

您也許會喜歡:

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

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

【其他文章推薦】

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

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

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

※回頭車貨運收費標準

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

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

Google 雲端硬碟教育方案將不再享有免費無上限容量,2022 年 7 月生效

G Suite 教育版在過去因為提供無上限的空間容量受到許多教育單位的愛用,許多相關資源都能放在雲端共享,近日 Google 旗下的 G Suite 教育版更名為 Google Workspace for Education,緊接著來的就是跟隨整個 Google 雲端硬碟政策的腳步改變儲存空間規則而即將進行的大異動。

Google 雲端硬碟教育方案將不再享有免費無上限容量,2022 年 7 月生效

在去年 11 月時,Google 宣布相簿、文件等無限免費空間將在 2021 年 6 月後取消,現在連 Google 雲端硬碟教育版的規則也跟著動起來,在明年將失去無限儲存空間的福利。Google 表示,在新的雲端硬碟政策中推出了全新的空間模式,基本上為各級學校和大學提供 100TB 的集區儲存空間(也就是單位中所有人的共同空間,可存放帳戶中包括但不限於 Google 雲端硬碟、Gmail 與 Google 相簿的所有檔案),讓所有關聯用戶可以共同使用,這個新模式所提供的空間足以存放 1 億份文件、800 萬份簡報甚至是總時數達 40 萬小時的影片,也就是說如果你的學校單位有巨量資料在雲端硬碟中,超過 100TB 的部分可能要移至他處,或者付費購買後續擴充方案繼續使用。

這項新規定將適用於 Google Workspace for Education 所有版本用戶,對現有用戶的生效時間從 2022 年 7 月起,至於在 2022 年申請服務的新用戶也同樣適用該政策。因應新規則,Google 說明了整體的計算方式,用戶可以在規則生效後使用多少儲存空間主要取決於學校機構所使用的版本,並且進行計算:

  • Google Workspace for Education Fundamentals ( 舊稱 G Suite 教育版) 
    符合資格的機構可獲得至少 100 TB 的集區雲端儲存空間,供機構共同使用。所有檔案都會計入這個額度,包括 Google 雲端硬碟和相簿檔案以及 Gmail。

  • Google Workspace for Education Plus (舊稱 G Suite Enterprise 教育版)
    每購買一份 Google Workspace for Education Plus 授權,共用集區就會另外獲得 20 GB 的儲存空間。如果是繼續使用 G Suite Enterprise 教育版 (舊版) 授權的客戶,只要每購買一份付費員工授權,共用集區就會另外獲得 100 GB 的儲存空間。

    舉例來說:如果你的單位購買了 5000 份教育版授權,那你們總共擁有 100TB(基本空間) + (5000 份授權 x 100GB),總數為 600TB 可用空間。

如果你的單位有大量的資料儲存需求,Google 另外列出了建議的執行步驟,幫助用戶瞭解、規劃並整理可用空間,藉以釋出或獲得更多容量來存放資料,大家可前往官方說明中查看詳情並及早應變。

◎資料來源:Google

您也許會喜歡:

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

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

【其他文章推薦】

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

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

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

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

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

※超省錢租車方案

※回頭車貨運收費標準