游泳池誤倒不明液體冒白煙 19名幼童急送醫_貨運

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

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

中和景新國小委外由游泳池晚間發生誤混液體,造成多名幼童不適,環保署人員趕抵檢查現地。(吳家詮翻攝)

新北景新國小外包游泳池,晚間發生誤倒入不明液體,早成多名在場幼童身體不適。(圖摘自Google Map)

新北市中和區景新國小旁一處私人游泳池,晚間現場疑似救生員誤將不明液體倒入泳池產生白煙,造成現場場19名小朋友噁心嘔吐,送新北雙和醫院急救。

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

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

 

消防局初步了解,現場為伊藤萬游泳晚上6時50分至8時為學校的游泳課程,因工作人員誤將強酸(氯)及強鹼(消毒水)加在一起,故產生化學作用冒煙,引起上課學生身體不適,小朋友分屬不同學校參加游泳課程,目前送醫計有18名,有1名為家長自行送往醫院,消防局救護車載運10女8男(18名),均送往雙和醫院。

 

雙和醫院稍晚表示,另有5名泳池的教練也因身體不適,陸續到院檢查治療。

※回頭車貨運收費標準

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

XStream學習手冊_租車

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污

一、前言

1、XStream官網

    http://x-stream.github.io

2、XStream是什麼

    XStream是一個簡單的基於Java的類庫,用來將Java對象序列化成XML(JSON)或反序列化為對象(即:可以輕易的將Java對象和XML文檔相互轉換)

3、XSteam能幹什麼

    XStream在運行時使用Java反射機制對要進行序列化的對象樹的結構進行探索,並不需要對對象作出修改。XStream可以序列化內部字段,包括私private和final字段,並且支持非公開類以及內部類。

    在缺省情況下,XStream不需要配置映射關係,對象和字段將映射為同名XML元素。但是當對象和字段名與XML中的元素名不同時,XStream支持指定別名。XStream支持以方法調用的方式,或是Java 標註的方式指定別名。

    XStream在進行數據類型轉換時,使用系統缺省的類型轉換器。同時,也支持用戶自定義的類型轉換器。

4、XStream特點

  • 使用方便 – XStream的API提供了一個高層次外觀,以簡化常用的用例

  • 無需創建映射 – XStream的API提供了默認的映射大部分對象序列化

  • 性能  – XStream快速和低內存佔用,適合於大對象圖或系統

  • 乾淨的XML  – XStream創建一個乾淨和緊湊XML結果,這很容易閱讀

  • 不需要修改對象 – XStream可序列化的內部字段,如private和final字段,支持非公開類和內部類。默認構造函數不是強制性的要求

  • 完整對象圖支持 – XStream允許保持在對象模型中遇到的重複引用,並支持循環引用

  • 可自定義的轉換策略 – 定製策略可以允許特定類型的定製被表示為XML的註冊

  • 安全框架 – XStream提供了一個公平控制有關解組的類型,以防止操縱輸入安全問題

  • 錯誤消息 – 出現異常是由於格式不正確的XML時,XStream拋出一個統一的例外,提供了詳細的診斷,以解決這個問題

  • 另一種輸出格式 – XStream支持其它的輸出格式,如JSON

5、XStream常見的用途

    傳輸、持久化、配置、單元測試

二、XStream入門

1、添加XSteam依賴

<dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.12</version> </dependency> <dependency> <groupId>org.codehaus.jettison</groupId> <artifactId>jettison</artifactId> <version>1.4.1</version> </dependency>

2、XStream基本使用

package io.github.xstream.test01; ​ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; import lombok.AllArgsConstructor; import lombok.ToString; ​ public class XStreamTest01 { public static void main(String[] args) { Student student = new Student("張三", 20); XStream xStream = new XStream();//需要XPP3庫 //XStream xStream = new XStream(new DomDriver());//不需要XPP3庫 //XStream xStream = new XStream(new StaxDriver());//不需要XPP3庫開始使用Java 6 //XML序列化 String xml = xStream.toXML(student); System.out.println(xml); //XML反序列化 student = (Student) xStream.fromXML(xml); System.out.println(student); ​ xStream = new XStream(new JettisonMappedXmlDriver()); xStream.setMode(XStream.NO_REFERENCES); //Json序列化 String json = xStream.toXML(student); System.out.println(json); //Json反序列 student = (Student) xStream.fromXML(json); System.out.println(student); } } ​ @AllArgsConstructor @ToString class Student { private String name; private int age; }

3、程序運行結果

<io.github.xstream.test01.Student>
  <name>張三</name>
  <age>20</age>
</io.github.xstream.test01.Student>
Security framework of XStream not initialized, XStream is probably vulnerable.
Student(name=張三, age=20)
{"io.github.xstream.test01.Student":{"name":"張三","age":20}}
Student(name=張三, age=20)
Security framework of XStream not initialized, XStream is probably vulnerable.

注意:文中使用到的Lombok註解,Lombok依賴自行添加;XStream序列化XML時需要引用的jar包:xstream-[version].jar、xpp3-[version].jar、xmlpull-[version].jar,當引入xstream依賴後會自動依賴xpp3、xmlpull依賴。XStream序列化JSON需要引用的jar包:jettison-[version].jar。

    使用XStream序列化時,對JavaBean沒有任何限制。JavaBean的字段可以是私有的,也可以沒有getter或setter方法,還可以沒有默認的構造函數。

    XStream序列化XML時可以允許用戶使用不同的XML解析器,用戶可以使用一個標準的JAXP DOM解析器或自Java 6集成STAX解析器。這樣用戶就不需要依賴xpp3-[version].jar。

三、XStream混疊

1、混疊是一種技術來定製生成XML或者使用XStream特定的格式化XML。假設,一個下面的XML格式是用於序列化/反序列化Student對象。

<student name="張三"> <phone> <brand>小米</brand> <description>小米手機的描述</description> </phone> <phone> <brand>蘋果</brand> <description>蘋果手機的描述</description> </phone> </student>

2、根椐上面的XML格式,我們創建實體類

@AllArgsConstructor @ToString class Student { private String studentName; private List<Phone> phones; } ​ @AllArgsConstructor @ToString class Phone { private String brand; private String description; }

3、執行代碼

package io.github.xstream.test02; ​ import com.thoughtworks.xstream.XStream; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.util.ArrayList; import java.util.List; ​ public class XStreamTest02 { public static void main(String[] args) { List<Phone> phones = new ArrayList<>(); phones.add(new Phone("小米手機", "小米手機的描述")); phones.add(new Phone("蘋果手機", "蘋果手機的描述")); Student student = new Student("張三", phones); ​ XStream xStream = new XStream();//需要XPP3庫 //XML序列化 String xml = xStream.toXML(student); System.out.println(xml); } } ​ @AllArgsConstructor @ToString class Student { private String studentName; private List<Phone> phones; } ​ @AllArgsConstructor @ToString class Phone { private String brand; private String description; }

4、驗證輸出

<io.github.xstream.test02.Student> <studentName>張三</studentName> <phones> <io.github.xstream.test02.Phone> <brand>小米手機</brand> <description>小米手機的描述</description> </io.github.xstream.test02.Phone> <io.github.xstream.test02.Phone> <brand>蘋果手機</brand> <description>蘋果手機的描述</description> </io.github.xstream.test02.Phone> </phones> </io.github.xstream.test02.Student>

    在上面的結果,我們已經看到了Student對象名稱是完全合格的。要替換它作為學生的標籤,按照四、XStream類混疊的步驟

    另外,在上述結果中可以看出,所需studentName要重命名來命名。要替換它,按照五、XStream字段混疊的步驟

    在上面的結果,我們可以看到手機標記被添加成為手機列表。替換它,按照六、XStream隱式集合混疊的步驟

    在上面的結果,我們可以看到這個名字來作為一個子節點,需要將它作為根節點的屬性。替換它,按照七、XStream屬性混疊的步驟

四、XStream類混疊

1、類混疊是用來創建一個類的XML完全限定名稱的別名。讓我們修改XStreamTest02例子,將下面的代碼添加到XStreamTest02例子裏面

xStream.alias("student", Person02.class); xStream.alias("phone", Phone.class);

2、執行代碼

package io.github.xstream.test02; ​ import com.thoughtworks.xstream.XStream; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.util.ArrayList; import java.util.List; ​ public class XStreamTest02 { public static void main(String[] args) { List<Phone> phones = new ArrayList<>(); phones.add(new Phone("小米手機", "小米手機的描述")); phones.add(new Phone("蘋果手機", "蘋果手機的描述")); Student student = new Student("張三", phones); ​ XStream xStream = new XStream();//需要XPP3庫 xStream.alias("student", Student.class); xStream.alias("phone", Phone.class); ​ //XML序列化 String xml = xStream.toXML(student); System.out.println(xml); } } ​ @AllArgsConstructor @ToString class Student { private String studentName; private List<Phone> phones; } ​ @AllArgsConstructor @ToString class Phone { private String brand; private String description; }

3、執行結果

<student> <studentName>張三</studentName> <phones> <phone> <brand>小米手機</brand> <description>小米手機的描述</description> </phone> <phone> <brand>蘋果手機</brand> <description>蘋果手機的描述</description> </phone> </phones> </student>

可以看到<io.github.xstream.test02.Student>和<io.github.xstream.test02.Phone>分別被修改為了<student>和<phone>

五、XStream字段混疊

1、字段混疊用於創建以XML字段的別名。讓我們再次修改原來的XStreamTest02例子,將下面的代碼添加到XStreamTest02例子裏面

xStream.aliasField("name", Student.class, "studentName");

2、執行代碼

package io.github.xstream.test02; ​ import com.thoughtworks.xstream.XStream; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.util.ArrayList; import java.util.List; ​ public class XStreamTest02 { public static void main(String[] args) { List<Phone> phones = new ArrayList<>(); phones.add(new Phone("小米手機", "小米手機的描述")); phones.add(new Phone("蘋果手機", "蘋果手機的描述")); Student student = new Student("張三", phones); ​ XStream xStream = new XStream();//需要XPP3庫 xStream.alias("student", Student.class); xStream.alias("phone", Phone.class); xStream.aliasField("name", Student.class, "studentName"); ​ //XML序列化 String xml = xStream.toXML(student); System.out.println(xml); } } ​ @AllArgsConstructor @ToString class Student { private String studentName; private List<Phone> phones; } ​ @AllArgsConstructor @ToString class Phone { private String brand; private String description; }

3、執行結果

<student> <name>張三</name> <phones> <phone> <brand>小米手機</brand> <description>小米手機的描述</description> </phone> <phone> <brand>蘋果手機</brand> <description>蘋果手機的描述</description> </phone> </phones> </student>

可以看到<studentName>被修改為了<name>

六、XStream隱式集合混疊

1、隱式集合混疊時使用的集合是表示在XML無需显示根。例如,在我們的例子中,我們需要一個接一個,但不是在根節點來显示每一個節點。讓我們再次修改原來的XStreamTest02例子,將下面的代碼添加到XStreamTest02例子裏面

xStream.addImplicitCollection(Student.class, "phones");

2、執行代碼

package io.github.xstream.test02; ​ import com.thoughtworks.xstream.XStream; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.util.ArrayList; import java.util.List; ​ public class XStreamTest02 { public static void main(String[] args) { List<Phone> phones = new ArrayList<>(); phones.add(new Phone("小米手機", "小米手機的描述")); phones.add(new Phone("蘋果手機", "蘋果手機的描述")); Student student = new Student("張三", phones); ​ XStream xStream = new XStream();//需要XPP3庫 xStream.alias("student", Student.class); xStream.alias("phone", Phone.class); xStream.aliasField("name", Student.class, "studentName"); xStream.addImplicitCollection(Student.class, "phones"); ​ //XML序列化 String xml = xStream.toXML(student); System.out.println(xml); } } ​ @AllArgsConstructor @ToString class Student { private String studentName; private List<Phone> phones; } ​ @AllArgsConstructor @ToString class Phone { private String brand; private String description; }

3、執行結果

<student> <name>張三</name> <phone> <brand>小米手機</brand> <description>小米手機的描述</description> </phone> <phone> <brand>蘋果手機</brand> <description>蘋果手機的描述</description> </phone> </student>

可以看到<phones>被隱藏了

七、XStream屬性混疊

1、屬性混疊用於創建一個成員變量作為XML屬性序列化。讓我們再次修改原來的XStreamTest02例子,將下面的代碼添加到XStreamTest02例子裏面

xStream.useAttributeFor(Student.class, "studentName");

2、執行代碼

※超省錢租車方案

商務出差、學生出遊、旅遊渡假、臨時用車!GO 神州租賃有限公司!合法經營、合法連鎖、合法租賃小客車!

package io.github.xstream.test02; ​ import com.thoughtworks.xstream.XStream; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.util.ArrayList; import java.util.List; ​ public class XStreamTest02 { public static void main(String[] args) { List<Phone> phones = new ArrayList<>(); phones.add(new Phone("小米手機", "小米手機的描述")); phones.add(new Phone("蘋果手機", "蘋果手機的描述")); Student student = new Student("張三", phones); ​ XStream xStream = new XStream();//需要XPP3庫 xStream.alias("student", Student.class); xStream.alias("phone", Phone.class); xStream.aliasField("name", Student.class, "studentName"); xStream.addImplicitCollection(Student.class, "phones"); xStream.useAttributeFor(Student.class, "studentName"); ​ //XML序列化 String xml = xStream.toXML(student); System.out.println(xml); } } ​ @AllArgsConstructor @ToString class Student { private String studentName; private List<Phone> phones; } ​ @AllArgsConstructor @ToString class Phone { private String brand; private String description; }

3、執行結果

<student name="張三"> <phone> <brand>小米手機</brand> <description>小米手機的描述</description> </phone> <phone> <brand>蘋果手機</brand> <description>蘋果手機的描述</description> </phone> </student>

可以看到<name>被作為了<student>的屬性

八、XStream包混疊

1、包混疊用於創建一個類XML的完全限定名稱的別名到一個新的限定名稱。讓我們再次修改原來的XStreamTest02例子,將下面代碼

xStream.alias("student", Student.class); xStream.alias("phone", Phone.class);

修改為

xStream.aliasPackage("xx.xx.xx.xx", "io.github.xstream.test02");

2、執行代碼

package io.github.xstream.test02; ​ import com.thoughtworks.xstream.XStream; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.util.ArrayList; import java.util.List; ​ public class XStreamTest02 { public static void main(String[] args) { List<Phone> phones = new ArrayList<>(); phones.add(new Phone("小米手機", "小米手機的描述")); phones.add(new Phone("蘋果手機", "蘋果手機的描述")); Student student = new Student("張三", phones); ​ XStream xStream = new XStream();//需要XPP3庫 // xStream.alias("student", Student.class); // xStream.alias("phone", Phone.class); xStream.aliasPackage("xx.xx.xx.xx", "io.github.xstream.test02"); xStream.aliasField("name", Student.class, "studentName"); xStream.addImplicitCollection(Student.class, "phones"); xStream.useAttributeFor(Student.class, "studentName"); ​ //XML序列化 String xml = xStream.toXML(student); System.out.println(xml); } } ​ @AllArgsConstructor @ToString class Student { private String studentName; private List<Phone> phones; } ​ @AllArgsConstructor @ToString class Phone { private String brand; private String description; }

3、執行結果

<xx.xx.xx.xx.Student name="張三"> <xx.xx.xx.xx.Phone> <brand>小米手機</brand> <description>小米手機的描述</description> </xx.xx.xx.xx.Phone> <xx.xx.xx.xx.Phone> <brand>蘋果手機</brand> <description>蘋果手機的描述</description> </xx.xx.xx.xx.Phone> </xx.xx.xx.xx.Student>

可以看到包名由io.github.xstream.test02替換為了xx.xx.xx.xx

九、XStream註解

1、前面的四、五、六、七、八步驟都是通過代碼操作的

//xStream.alias("student", Student.class);
//xStream.alias("phone", Phone.class);
xStream.aliasPackage("xx.xx.xx.xx", "io.github.xstream.test02");
xStream.aliasField("name", Student.class, "studentName");
xStream.addImplicitCollection(Student.class, "phones");
xStream.useAttributeFor(Student.class, "studentName");

2、XStream同時也支持註解,使用註解會變得簡單也會達到相同的效果

package io.github.xstream.test03; ​ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.*; import com.thoughtworks.xstream.converters.basic.BooleanConverter; import lombok.AllArgsConstructor; import lombok.Data; import lombok.ToString; ​ import java.util.ArrayList; import java.util.List; ​ public class XStreamTest03 { public static void main(String[] args) { List<Phone> phones = new ArrayList<>(); phones.add(new Phone("小米手機", "小米手機的描述")); phones.add(new Phone("蘋果手機", "蘋果手機的描述")); Student student = new Student("張三", phones, 20, true); XStream xStream = new XStream();//需要XPP3庫 //xStream.processAnnotations(new Class[]{Student.class}); xStream.autodetectAnnotations(true); //XML序列化 String xml = xStream.toXML(student); System.out.println(xml); } } ​ @AllArgsConstructor @ToString //別名註解 @XStreamAlias("student") class Student { @XStreamAlias("name") //把字段節點設置成屬性 @XStreamAsAttribute private String studentName; //省略集合根節點 @XStreamImplicit private List<Phone> phones; //隱藏字段 @XStreamOmitField private int age; //設置轉換器 @XStreamConverter(value = BooleanConverter.class, booleans = {false}, strings = {"男", "女"}) private boolean sex; } ​ @AllArgsConstructor @ToString @XStreamAlias("phone") class Phone { private String brand; private String description; }

3、使用註解的話,需要XML序列化之前添加如下代碼

xStream.autodetectAnnotations(true);

或者

xStream.processAnnotations(new Class[]{Student.class});

4、執行結果

<student name="張三"> <phone> <brand>小米手機</brand> <description>小米手機的描述</description> </phone> <phone> <brand>蘋果手機</brand> <description>蘋果手機的描述</description> </phone> <sex>男</sex> </student>

使用註解我們也可以看到也能達到相同的效果

注意:當使用XStream對象處理一個被註解的類型時,XStream對象也會處理所有與其相關的類型的註解信息,即該類型的父類、父接口、所有子類的註解。

十、XStream自定義轉換器

1、XStream自帶的轉換器

    XStream內部有許多轉換器,用於JavaBean對象到XML或JSON之間的轉換。這些轉換器的詳細信息網址:http://x-stream.github.io/converters.html

2、使用自定義轉換器

package io.github.xstream.test04; ​ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import lombok.ToString; ​ public class XStreamTest04 { public static void main(String[] args) { Student student =new Student("張三",19); XStream xStream = new XStream(); //註冊轉換器 xStream.registerConverter(new StudentConverter()); //序列化 String xml = xStream.toXML(student); System.out.println(xml); //反序列化 student=(Student)xStream.fromXML(xml); System.out.println(student); } } ​ @Getter @Setter @ToString @AllArgsConstructor class Student { private String name; private int age; }

自定義轉換器

package io.github.xstream.test04; ​ import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; ​ public class StudentConverter implements Converter { //定義轉換器能轉換的JavaBean類型 @Override public boolean canConvert(Class type) { return type.equals(Student.class); } ​ //把對象序列化成XML或JSON @Override public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) { Student student = (Student) value; writer.startNode("姓名"); writer.setValue(student.getName()); writer.endNode(); writer.startNode("年齡"); writer.setValue(student.getAge() + ""); writer.endNode(); writer.startNode("轉換器"); writer.setValue("自定義的轉換器"); writer.endNode(); } ​ //把XML或JSON反序列化成對象 @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { Student student = new Student("", -1); reader.moveDown(); student.setName(reader.getValue()); reader.moveUp(); reader.moveDown(); student.setAge(Integer.parseInt(reader.getValue())); reader.moveUp(); return student; } }

3、執行結果

<student>
  <姓名>張三</姓名>
  <年齡>19</年齡>
  <轉換器>自定義的轉換器</轉換器>
</student>
Security framework of XStream not initialized, XStream is probably vulnerable.
Student(name=張三, age=19)

4、常用的轉換器接口與抽象類

SingleValueConverter:單值轉換接口
AbstractSingleValueConverter:單值轉換抽象類
Converter:常規轉換器接口

十一、XStream對象流

1、對象輸出流

package io.github.xstream.test05; ​ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.io.*; ​ public class XStreamTest05 { public static void main(String[] args) throws IOException, ClassNotFoundException { XStreamTest05 xStreamTest04 = new XStreamTest05(); String path = "F:\\test.txt"; XStream xStream = new XStream();//需要XPP3庫 xStream.processAnnotations(Student.class); xStream.autodetectAnnotations(true); xStreamTest04.writeObject(xStream, path); } ​ //對象輸出流方法 public void writeObject(XStream xStream, String path) throws IOException { Student zs = new Student("張三", 20); Student ls = new Student("李四", 21); Student ww = new Student("王五", 22); ObjectOutputStream objectOutputStream = xStream.createObjectOutputStream(new FileOutputStream(path)); objectOutputStream.writeObject(zs); objectOutputStream.writeObject(ls); objectOutputStream.writeObject(ww); objectOutputStream.writeObject("totalStudent"); objectOutputStream.writeInt(3); objectOutputStream.close(); } } ​ @AllArgsConstructor @ToString //別名註解 @XStreamAlias("student") class Student { @XStreamAlias("name") //把字段節點設置成屬性 @XStreamAsAttribute private String studentName; private int age; }

2、在指定路徑中打開test.txt文件,查看執行結果

<object-stream> <student name="張三"> <age>20</age> </student> <student name="李四"> <age>21</age> </student> <student name="王五"> <age>22</age> </student> <string>totalStudent</string> <int>3</int> </object-stream>

注意:XStream對象流是通過標準java.io.ObjectOutputStream和java.io.ObjectInputStream對象。因為XML文檔只能有一個根節點,必須包裝在一個序列化的所有元素額外的根節點。這個根節點默認為<object-stream>上面的例子所示。 

3、對象輸入流

package io.github.xstream.test05; ​ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.io.*; ​ public class XStreamTest05 { public static void main(String[] args) throws IOException, ClassNotFoundException { XStreamTest05 xStreamTest04 = new XStreamTest05(); String path = "F:\\test.txt"; XStream xStream = new XStream();//需要XPP3庫 xStream.processAnnotations(Student.class); xStream.autodetectAnnotations(true); xStreamTest04.readObject(xStream, path); } ​ //對象輸入流方法 public void readObject(XStream xStream, String path) throws IOException, ClassNotFoundException { ObjectInputStream objectInputStream = xStream.createObjectInputStream(new FileInputStream(path)); System.out.println((Student) objectInputStream.readObject()); System.out.println((Student) objectInputStream.readObject()); System.out.println((Student) objectInputStream.readObject()); System.out.println(objectInputStream.readObject()); System.out.println(objectInputStream.readInt()); } } ​ @AllArgsConstructor @ToString //別名註解 @XStreamAlias("student") class Student { @XStreamAlias("name") //把字段節點設置成屬性 @XStreamAsAttribute private String studentName; private int age; }

4、執行結果

Student(studentName=張三, age=20)
Student(studentName=李四, age=21)
Student(studentName=王五, age=22)
totalStudent
3

十二、XStream持久化API

1、保存Java對象

package io.github.xstream.test06; ​ import com.thoughtworks.xstream.persistence.FilePersistenceStrategy; import com.thoughtworks.xstream.persistence.PersistenceStrategy; import com.thoughtworks.xstream.persistence.XmlArrayList; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.io.File; import java.util.List; ​ public class XStreamTest06 { public static void main(String[] args) { XStreamTest06 xStreamTest06=new XStreamTest06(); xStreamTest06.saveObject(); } ​ //保存Java對象 public void saveObject(){ PersistenceStrategy strategy = new FilePersistenceStrategy(new File("F:\\")); List list = new XmlArrayList(strategy); list.add(new Student("張三",13)); list.add(new Student("李四",21)); list.add(new Student("王五",17)); } } ​ @ToString @AllArgsConstructor class Student { private String name; private int age; }

2、運行程序結果,在F磁盤的根路徑可以看到有三個文件:int@0.xml、int@1.xml、int@2.xml,每個對象都被序列化到XML文件里

3、讀取並刪除JavaBean對象

package io.github.xstream.test06; ​ import com.thoughtworks.xstream.persistence.FilePersistenceStrategy; import com.thoughtworks.xstream.persistence.PersistenceStrategy; import com.thoughtworks.xstream.persistence.XmlArrayList; import lombok.AllArgsConstructor; import lombok.ToString; ​ import java.io.File; import java.util.Iterator; import java.util.List; ​ public class XStreamTest06 { public static void main(String[] args) { XStreamTest06 xStreamTest06 = new XStreamTest06(); xStreamTest06.deleteObject(); } //讀取並刪除Java對象 public void deleteObject() { PersistenceStrategy strategy = new FilePersistenceStrategy(new File("F:\\")); List list = new XmlArrayList(strategy); for (Iterator it = list.iterator(); it.hasNext(); ) { System.out.println((Student) it.next()); //刪除對象序列化文件 it.remove(); } } } ​ @ToString @AllArgsConstructor class Student { private String name; private int age; }

4、運行程序結果,可以看到把F磁盤的根路徑int@0.xml、int@1.xml、int@2.xml文件刪除了

Security framework of XStream not initialized, XStream is probably vulnerable.
Student(name=張三, age=13)
Student(name=李四, age=21)
Student(name=王五, age=17)

十三、XStream操作JSON

1、XStream序列化JSON的重命名

package io.github.xstream.test07; ​ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; import io.github.xstream.test04.StudentConverter; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import lombok.ToString; ​ public class XStreamTest07 { public static void main(String[] args) { XStreamTest07 xStreamTest07 = new XStreamTest07(); xStreamTest07.serializeJson(); } ​ public void serializeJson() { Student student = new Student("張三", 19); XStream xStream = new XStream(new JettisonMappedXmlDriver());//設置Json解析器 xStream.autodetectAnnotations(true); //JSON序列化 String xml = xStream.toXML(student); System.out.println(xml); //JSON反序列化 student = (Student) xStream.fromXML(xml); System.out.println(student); } } ​ @ToString @AllArgsConstructor @XStreamAlias("人") class Student { @XStreamAlias("姓名") private String name; @XStreamAlias("年齡") private int age; }

2、運行結果

{"人":{"姓名":"張三","年齡":19}}
Student(name=張三, age=19)
Security framework of XStream not initialized, XStream is probably vulnerable.

注意:XStream序列化JSON的重命名的方式與其序列化成XML的方式一樣!

3、去掉序列化JSON的根節點

package io.github.xstream.test07; ​ import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver; import com.thoughtworks.xstream.io.json.JsonWriter; import io.github.xstream.test04.StudentConverter; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import lombok.ToString; ​ import java.io.Writer; ​ public class XStreamTest07 { public static void main(String[] args) { XStreamTest07 xStreamTest07 = new XStreamTest07(); xStreamTest07.removeRootNode(); } ​ public void removeRootNode() { Student student = new Student("張三", 19); XStream xStream = new XStream(new JsonHierarchicalStreamDriver() { public HierarchicalStreamWriter createWriter(Writer writer) { return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE); } }); //Json序列化 String xml = xStream.toXML(student); System.out.println(xml); } } ​ @ToString @AllArgsConstructor @XStreamAlias("人") class Student { @XStreamAlias("姓名") private String name; @XStreamAlias("年齡") private int age; }

4、運行結果

{
  "name": "張三", "age": 19 }

注意:去掉根節點后的JSON串是不能反序列化的,因為XStream不知道它的類型。

5、JSON的解析器區別

前面兩個例子使用了不同的JSON解析器,這裏說明他們的不同之處:

  1. JettisonMappedXmlDriver:是支持序列化和反序列化Json的。

  2. JsonHierarchicalStreamDriver:只支持序列化,不支持反序列化。

 

參考:

    http://x-stream.github.io

    https://www.yiibai.com/xstream

    https://www.cnblogs.com/LiZhiW/p/4313493.html

● 別在 Java 代碼里亂打日誌了,這才是正確的打日誌姿勢!

● 高可用Redis服務架構分析與搭建

● 8 種方案,幫你解決重複提交問題!請拿走

● IDEA 解決 Maven 依賴衝突的高能神器,這一篇夠不夠?

● 你連微服務的網關都說不清楚,還天天鼓搗着要把項目拆分微服務?

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

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

有別於一般網頁架設公司,除了模組化的架站軟體,我們的營業主軸還包含:資料庫程式開發、網站建置、網頁設計、電子商務專案開發、系統整合、APP設計建置、專業網路行銷。

1.3T動力強?比速新SUV/MPV預售價僅6.19-8.6萬_租車

※超省錢租車方案

商務出差、學生出遊、旅遊渡假、臨時用車!GO 神州租賃有限公司!合法經營、合法連鎖、合法租賃小客車!

總結:外觀上也算是比較高顏值,原創度方面值得表揚,豐富的配置和良好的空間表現,綜合實力還是比較強的,未來的路充滿挑戰啊。比速M3預售價:6。19-8。39萬比速M3主要針對的是嚮往舒適安逸生活的家庭消費群體而打造的,外觀上更有精緻感,車身線條簡潔舒暢,誇張的X造型中網採用大面積鍍鉻裝飾,給人很霸氣的感覺,辨識度很高,B、C、D柱也是採用黑色設計,懸浮車頂非常時尚。

比速T3

預售價:7.49-8.69萬元

比速T3的整體外觀設計走的是時尚風格,進氣格柵與大燈採用整體式設計,視覺效果出色,再加上鍍鉻飾條的點綴與中央“BISU”車標巧妙的融合,營造了飛翼式的造型特點,黑色運動包圍與車頂行李架很有SUV的范。

而側面A柱、B柱和C柱都採用了黑色的設計,營造出懸浮式車頂的炫酷效果,雙五輻式輪圈,硬朗的尾燈線條,雙邊雙出的排氣管,運動感十足。

內飾部分依然透露着很潮流的氣息,黑棕雙色搭配的內飾很顯檔次,多處採用銀色飾條飾板,凸顯年輕的風格,懸浮式的中控屏設計是一大亮點,據說,比速T3還全系標配車身穩定系統、四輪碟剎、倒車雷達、中控大屏、倒車影像等使用功能。

比速T3的長寬高分別為4350/1825/1685mm,軸距為2565mm,與哈弗H2、瑞風S3等競爭對手相比稍微佔優,雙縫線皮質座椅質感出色,前後排空間表現還算良好,

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

有別於一般網頁架設公司,除了模組化的架站軟體,我們的營業主軸還包含:資料庫程式開發、網站建置、網頁設計、電子商務專案開發、系統整合、APP設計建置、專業網路行銷。

儲物格空間比較實用。

動力方面,比速T3全系標配1.3T發動機,最大功率133馬力,與之匹配的5擋手動變速器,相信不會讓我們失望。

總結:外觀上也算是比較高顏值,原創度方面值得表揚,豐富的配置和良好的空間表現,綜合實力還是比較強的,未來的路充滿挑戰啊。

比速M3

預售價:6.19-8.39萬

比速M3主要針對的是嚮往舒適安逸生活的家庭消費群體而打造的,外觀上更有精緻感,車身線條簡潔舒暢,誇張的X造型中網採用大面積鍍鉻裝飾,給人很霸氣的感覺,辨識度很高,B、C、D柱也是採用黑色設計,懸浮車頂非常時尚。

內飾整體造型設計還是挺跟得上潮流的,仿木飾板的加入提升了不少豪華感,雖說這個價位來說塑料面板在所難免,但是邊緣仿縫線的設計增添了很多精緻感,頂配車型一塊10英寸的中控屏是一大亮點,支持手機互聯、導航等主流功能。

其長*寬*高為4760*1810*1751mm,軸距達到2800mm,和寶駿730等競品相比很有優勢,門板還有擋把兩側都包裹了皮革、絨布等軟性材質,觸感很好,即使是第三排空間也很舒適。

在動力系統部分,將提供了1.5L自然吸氣發動機,最大功率114馬力,後期還會有1.5T渦輪增壓發動機和CVT變速器,而傳動部分,將搭載5擋手動變速器。

總結:在高手如雲的自主品牌MpV市場里,會與有寶駿730、風行S500等車型廝殺,相信在車內空間、配置方面有優勢的比速M3會得到用戶的肯定。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污

CR-V、RAV4要哭?全新美繫緊湊型SUV酷似大切諾基!_租車

※超省錢租車方案

商務出差、學生出遊、旅遊渡假、臨時用車!GO 神州租賃有限公司!合法經營、合法連鎖、合法租賃小客車!

4T有所不同,指南者所搭載的1。4T發動機最大馬力達到165匹,而自由俠的1。4T馬力值為150匹,相信未來正式上市以後動力表現還是值得期待。此外作為配置分級,不出意外的話全新指南者還將會搭載一台與現款自由光一樣的2。4L自然吸氣發動機,最大馬力值175匹。

Jeep在華國產以後,先後推出了自由光和自由俠兩款SUV車型,但自由光作為中型SUV售價偏高,自由俠作為小型SUV尺寸偏小,使得很大一部分意向車型在緊湊型SUV的潛在買家有些感到捉急..不過不需要糾結,廣汽菲克第三款SUV——指南者,將在不久后發布,並有望在年內正式上市。

指南者的名聲來頭並不小,作為Jeep品牌全系尚以進口方式在國內進行銷售之時,指南者可以說是Jeep品牌銷量非常高的車型,車身緊湊,外觀也是足夠的霸氣,

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

日本、大陸,發現這些先進的國家已經早就讓電動車優先上路,而且先進國家空氣品質相當好,電動車節能減碳可以減少空污

而且進口指南者最低售價僅在20萬出頭,這也讓很大一部分車主有了購買進口車型的理由。

(圖為現款在售2014款指南者)

全新指南者的外觀依舊向自家旗艦大切諾基看齊,標誌性的7孔豎狀進氣格柵彰顯的是Jeep家族的血統,整體性極強的前臉設計風格讓指南者的車頭看上去更寬,視覺效果也更加威武霸氣。

全新指南者的內飾與自由光的相似程度比較高,從官圖上看用深淺配色的撞色設計的確有助於提高視覺衝擊力,至於實車的內飾表現如何,還需要在正式上市以後看到實車再進行評判。

動力總成方面,全新指南者搭載了號稱Jeep史上最強的小排量渦輪增壓發動機1.4T FIRE Multi-Air2,與自由俠身上那台1.4T有所不同,指南者所搭載的1.4T發動機最大馬力達到165匹,而自由俠的1.4T馬力值為150匹,相信未來正式上市以後動力表現還是值得期待。

此外作為配置分級,不出意外的話全新指南者還將會搭載一台與現款自由光一樣的2.4L自然吸氣發動機,最大馬力值175匹。

市場分析:Jeep指南者作為進口車型在華銷售的價格並不高(22.19-28.09萬),進行國產後售價有望進一步壓低,屆時可能會成為合資緊湊型SUV市場中的有力競爭选手。據悉Jeep指南者將在11月16日正式發布,至於具體的配置,我們也將在新車上市後進行詳細分析。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

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

有別於一般網頁架設公司,除了模組化的架站軟體,我們的營業主軸還包含:資料庫程式開發、網站建置、網頁設計、電子商務專案開發、系統整合、APP設計建置、專業網路行銷。

三天三夜,打撈一座風雨橋

文化遺產和我們普通人有什麼關係?文物到底是保護重要還是利用重要?近日,在中央廣播電視總台央視綜藝頻道和喜馬拉雅聯合出品的大型文化類節目《一堂好課》上,故宮學院院長單霽翔帶來一堂別開生面的文博課。

單霽翔分享了一則關於貴州省黎平縣地坪鄉風雨橋的故事,引起了人們的思考。2004年夏,暴雨誘發山洪,衝垮了有着120多年悠久歷史的風雨橋。就在橋倒塌的時刻,在場的124名侗族小伙子紛紛躍入洪水,拚死打撈。歷時3天3夜,他們從貴州一直打撈到廣西,將撈回的構件運回了地坪鄉,一清理,28根大木構居然一根都沒有少,73%的風雨橋構件回到了原地,使這座橋得以重建。

當媒體採訪村裡的老人,橋垮塌的時候也沒人組織,為什麼小伙子們就能紛紛躍入洪水去搶救?老人說,“這就是他們的家呀!他們從小就在橋上聽老人講故事、做作業,唱侗族的大歌,風雨橋早已是他們生命的一部分了,遇到什麼危險,他們都會挺身而出的!”

“這就是當我們民眾跟他們家鄉的文物建立了血肉聯繫以後,才能出現的奇迹”,單霽翔希望用這個故事分享給大家的理念是,保護不是目的,利用也不是目的,我們祖先創造的燦爛文化,經過我們的手、經過我們的時代、經過我們的城市,能夠把它真實完整地傳給我們的子孫後代,這才是最重要的。

目前,中國世界遺產已達55項,已經成為文化遺產大國。單霽翔認為,“文化遺產不是文物保護部門的專利,它是全民的事業,應該把文化遺產保護的知情權、參与權、監督權和受益權交給億萬民眾,我們的文化遺產才會更安全。”

這堂文博課產生了很大反響。有年輕觀眾意識到:“我們不僅有義務保護好、傳承好祖先留給我們的文物,我們也有使命去創造、去延續中華民族的文化記憶,為其注入生生不息的能量。”

《一堂好課》中,作家王蒙、導演陳凱歌、中央美術學院院長范迪安、中國舞蹈家協會主席馮雙白等,走進高校、走進社會,以講課的形式,從國學、藝術、軍事、體育等領域開講,給觀眾帶來各自領域的知識和經驗分享。打破傳統類型的節目空間,《一堂好課》採用露天課堂的形式,將現場搬進大學校園,於夜幕降臨之時開講,讓觀眾也得以沉浸在青春氣息濃郁的學習氛圍中,聆聽名家分享的智慧。中國作家協會副主席、書記處書記閻晶明說,《一堂好課》是把真實的高度、學術的深度和藝術氛圍融為一體的文化節目,為青年學子講授啟迪心靈的人生之課,用知識與榜樣的力量指引年輕一代,激發廣大觀眾的向上好學之風。

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

【其他文章推薦】

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

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

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

※超省錢租車方案

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

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

※回頭車貨運收費標準

盡“扇”盡美風自來

王明德迎亮看一看扇骨,手一捋,依次推開;拿起刷子,估量一下,蘸着膠水往扇骨上刷起來。雪白扇面緊貼着扇骨,發出輕快的聲音,靈巧的雙手在竹與紙間穿梭,動作絲毫不拖泥帶水。

竹深樹密蟲鳴處,時有微涼不是風。竹,自古被譽為君子。在王明德看來,“它沒被做成筷子和籃子,而是在我手中變成了有靈氣的竹扇。”

一把竹扇,看上去簡單,做起來卻很麻煩。“傳統的竹扇製作有67道工序。”71歲的王明德一邊拿刮刀打磨扇骨,一邊介紹。

在王明德看來,選料是最重要的環節。“我們一般要用生長周期在6至8年間的竹子,竹節少,形體直,才算標準。”而這竹子,鋸斷竹根后,就不能落地了,要靠人力一根一節從高上山背下來。究其原因,不過是竹子落地會碰壞竹青,這樣做出的扇骨或有黑斑,不符合要求。選好料后,通過蒸煮、晒乾使竹骨定型,再將之打磨成扇骨,並賦予扇面色彩,二者組合,就是一把精巧的竹扇。

作為竹扇的省級非遺傳承人,王明德的竹扇之路,並非一帆風順。“我雖然喜歡做扇子,但一開始並沒有用這個來謀生,而是當作一種愛好。”直到1989年,他才把這門手藝撿起來,開起了竹扇廠。

建廠之初,王明德就接到了日本一筆大單:生產七八萬白竹片,用作日本馬路上的護欄和家裡的裝修材料。當王明德趕工一個多月完成了客戶需要的貨物時,對方卻反悔了。“他們說我的產品質量不符合要求。我當時把全部家當都投進去了,結果賣不出去。”

王明德最終找到了另一家日本公司,承諾對方半個月內做好一萬片未加工的扇骨,免費打樣供對方參考,若是滿意,就簽合同。萬片扇骨,數萬斤毛竹,零星幾個工人,在高溫的竹扇廠中熬了半個月,王明德終於將成品打磨完成,並得到了對方認可。“當時我們幾乎沒怎麼閉眼,甚至還自造了設備。”王明德指着廠中打磨拋光扇骨的機器說,“那會兒就是木頭做的設備,很簡陋,卻陪着我們度過了最難的歲月。”

如今,26歲的王亞凌也傳承了爺爺的手藝,成為新的省級非遺傳承人。自2019年3月起,她每周都會去東亭小學兩次,給感興趣的孩子們介紹竹扇知識,並手把手教他們製作竹扇(見圖)。“其實爺爺也想來,但他畢竟年紀大了,所以就由我負責。”

細雨如絲,從屋檐上滴落。身着旗袍的王亞凌細心地教5年級的陳思涵搭面:“左手握緊,右手均勻展開,就這樣,慢慢來……”

做了一輩子竹扇的王明德也沒停下來。他又在家裡搗鼓掛扇了。他那雙布滿老繭的手拿起了刮刀,和手中青色的毛竹映襯着,似已融為一體。

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

【其他文章推薦】

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

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

※超省錢租車方案

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

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

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

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

我們都是“武漢伢”

  “lalala,lalalala……街道口的風,撩醒了夏蟲,竹床上的小孩做着夢……可愛的武漢伢,這是我的家,我們守護她。如果有一天,她也需要我,搭把手,就過了。”新型冠狀病毒感染的肺炎疫情爆發后,一首名為《武漢伢》的公益歌曲在網絡、廣播等平台上廣為流傳。歌曲以深情柔美的旋律、清新質樸的語言,溫暖撫慰了身處疫情一線的武漢人民,同時也深深打動了全國人民的心。

  17位武漢人隔空錄歌為家鄉

  譚旋和段思思都是音樂人,也是土生土長的“武漢伢”。自新型冠狀病毒感染的肺炎疫情爆發以來,他們與其他身處異鄉的武漢人一樣,格外關注疫情發展,牽挂着家鄉的親人朋友。

  1月23日,農曆大年廿九,為應對新型冠狀病毒感染的肺炎疫情,武漢宣布全市公交、地鐵、輪渡、長途客運暫停運營;機場、火車站離漢通道暫時關閉。

  當天,居住在北京的譚旋從電視上看到這則新聞,內心又焦急又難過。他給遠在新西蘭的段思思發了一條微信:我們給武漢寫首歌吧,今天就寫!段思思回復:好!

  兩人商量后決定寫兩首歌為家鄉助力加油,一首是《戰書》,另一首是《武漢伢》。前者以武漢人最親切的本土方言演繹,向病毒性肺炎宣戰。後者通過武漢人的視角,呈現武漢的自然人文之美和城市精神。

  “寫得很快,用一個通宵就完成了兩首歌的創作。段思思因為住在新西蘭,相當於熬了一個通宵加一個白天。”譚旋說。懷着滿腔的愛與情感寄託,兩人邊寫邊哭,眼淚嘩嘩地流。

  完成《武漢伢》的詞曲創作后,譚旋找來身處各地的武漢人來參与歌曲的編曲、混音、演奏、演唱、錄製等環節:編曲陳夔,混音馬濤,吉他手吳濤,演員袁姍姍、吳倩、劉思言以及不同職業的文藝工作者共17位。

  特殊時期,錄音成為最大的困難。要把這麼多不同地方的人聚在一起錄音是不太可能的,於是他們就用手機錄。儘管音質不如專業設備好,但是每個人都用最真摯的情感唱出來,最後呈現出的效果特別棒。

  “真的是一呼百應。”譚旋感動地說。歌曲錄完后,他又找到西安、哈爾濱的美術編輯,大連、杭州的文案宣傳。儘管處於春節假期,大家還是二話不說抓緊時間干,通過互聯網,在手機、電腦上迅速完成了後期製作。

  千萬網友收聽觀看為武漢加油

  《武漢伢》上線后,在廣播、電視、網絡等平台上流傳開來,並迅速成為新浪微博熱搜關鍵詞。

  1月28日,湖北廣播電視台音樂廣播部在楚天音樂廣播電台播放這首歌,並向全國上百家電台推廣。1月29日,央視《東方時空》在節目開始前配用了這首歌曲,主持人深情地說:這首歌唱出了無數武漢人的心聲,也唱出了此刻我們的心聲。

  截至2月2日16時,《武漢伢》在網易雲音樂得到近6萬人點贊,近4000條評論。在唱吧被用戶翻唱了1.2萬次,用戶翻唱作品的最高收聽率超過12萬。新浪微博里觀看該歌曲視頻最多的一條微博里,有1403萬次觀看量、26.4萬點贊、4.7萬次轉發、2萬條評論。

  許多人聽完歌曲后紛紛留言,有感動,有加油,有祝福——

  “聽到唱歌的人數次努力壓着哭腔,真的感同身受。”

  “這是我的家,在這裏長大。我的城市生病了,但我依然愛她。”

  “沒去過武漢,聽歌聽哭了!武大的櫻花聽說很美,長江大橋也很有故事吧。突如其來的疫情讓人猝不及防。時代在變化,相信國家的力量。疫情馬上就快結束了,再等等……來年一起去看櫻花!”

  看到這首歌受到大家的肯定和喜愛,譚旋和段思思內心很欣慰。譚旋表示:“我們的初衷就是通過歌曲給武漢帶去正能量,給予家鄉父老最大的鼓勵。希望聽到這首歌的人,可以從歌里得到力量,也相當於我們為這個城市盡了一點綿薄之力。”

  “武漢的精神就是不服輸,我相信樂觀勇敢的武漢人一定能挺過這次難關。武漢的櫻花會開,賣熱乾麵的老闆會重新支起攤,早上過早(注:吃早飯)的人排起長隊,煙火氣的武漢會再回來。武漢加油!”段思思說。

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

【其他文章推薦】

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

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

※回頭車貨運收費標準

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

※超省錢租車方案

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

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

故宮博物院—— 数字展生機 文化添活力

如今,觀眾在家便可逛故宮、看展覽、賞文物、學歷史。走在数字博物館建設前列的“数字故宮”,以越來越開放的姿態,讓古老的故宮與時代相接,讓更多的觀眾與文化相遇。正如故宮博物院院長王旭東所說,願5000年的中華文明、600年的紫禁城,通過数字故宮,走入觀眾心田,讓其承載的中華優秀傳統文化,在人們心中種下一粒種子,並生根、發芽,築牢每一位中國人的文化自信。

故宮博物院首先為延遲開學的孩子們送上了一門公開課:該院和中信出版集團聯合推出《我要去故宮》少兒讀本和同名公益視頻課,以新穎的形式、有趣的內容,為小朋友揭開紫禁城的奧秘,讓他們足不出戶就能“雲遊故宮”。

說到“雲遊故宮”,打開故宮博物院官網和官方微信便能隨時隨地來一場“深度游”。進入以高清影像記錄故宮各個院落的“全景故宮”欄目,全部開放區域以及養心殿、重華宮等暫未開放區域的外部空間和內部空間可盡收眼底;同時觀眾可以跨越時空,欣賞故宮一年四季之美景。通過“V故宮”,可以身臨其境般地深度探訪頗具人氣的養心殿、虛擬修繕后的“水晶宮”靈沼軒、乾隆“秘密花園”中的倦勤齋等“神秘”宮殿,在沉浸式互動體驗中多層次解析皇家生活以及建築背後蘊含的歷史文化。

故宮博物院擁有超過186萬件/套藏品。為了進一步活化典藏,以“小”空間呈現“大”庫藏,故宮博物院利用網絡平台推出“故宮名畫記”“数字文物庫”“数字多寶閣”,三者各有側重。“故宮名畫記”現收錄歷代名畫334幅,通過超高清数字影像無極縮放,《清明上河圖》街邊商販的表情、《千里江山圖》山間亭台的構造等,一覽無餘,纖毫畢現;與之相關的論文資料、研究成果等內容也一應俱全,集審美與知識於一體。2019年建成的“数字文物庫”,一次性推出故宮博物院藏二十五大類文物的5萬餘張高清影像,滿足公眾博古賞析、學習研究之需求。“数字多寶閣”目前上線金銀器、玉石器、銅器等十二大類共200餘件三維文物,高精度全方位立體式地展示文物的細節和全貌,觀眾輕輕滑動鼠標便能零距離“觸摸”文物。

近期,故宮博物院官網還推出虛擬展覽——《淳化閣帖》版本展等。《淳化閣帖》版本複雜。該展彙集故宮博物院藏品,以宋刻《淳化閣帖》、明刻《淳化閣帖》和清刻《淳化閣帖》三個部分高清展示各版本細節,方便觀眾進行直觀對比欣賞。同時,為讓觀眾有機會“重回展廳”,“故宮展覽”APP集合“賀歲迎祥”“須彌福壽”等2015年以來推出的76個主題各異的展覽,觀眾可在展廳全景中虛擬漫遊,全方位了解展覽、展品信息,讓展覽真正實現“不落幕”。

除此以外,故宮博物院官網推出的“視聽館”,使觀眾可以聆聽故宮博物院研究人員對古代名畫的解析,聆聽中國傳統音樂以及現代年輕人用音樂詮釋古代名畫中的故事及意蘊。“文創”欄目下的“故宮壁紙”,將古代精品文物設計成可供下載的電腦和手機壁紙;“故宮回聲”則以連載漫畫的形式,呈現了抗戰時期故宮國寶南遷及西遷的故事……可以預見,隨着時代發展,故宮博物院的数字體驗內容和層次將不斷豐富。

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

【其他文章推薦】

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

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

※回頭車貨運收費標準

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

※超省錢租車方案

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

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

僅售16萬起,配置超豪華,大7座SUV就買它

車身尺寸對比。同尺寸的合資选手非漢蘭達、銳界莫屬。在尺寸方面,由於三者都屬於中定位車型,所以在尺寸方面三者都半斤八兩,但在油耗方面,GS8表現更好。雖然三者都是用官方油耗,在實際油耗方面還得加上1-2L的油耗,依然佔有很大的優勢,最關鍵的一點是。

SUV市場已經成為了中國汽車品牌必爭戰略位置,為此大量的新款國產SUV爭相上市,迎接市場的考驗。而前段時間,一款極受關注的中大型SUV車型正式上市,它就是繼爆款SUV廣汽傳祺GS4后又一新鮮力作,它就是傳祺GS8!該車型在未上市前就已經備受關注,而今它高調地來了,但是它值得我們去選擇嗎?

這是一個不得不說的事實!為什麼國產SUV能夠成功將合資SUV踩在腳下?在看來是有兩個主要因素造成!第一便宜!就像保持在榜首而且關注度非常高的哈弗H6、GS4、560,實際上它們的價格都不高,作為一款緊湊型SUV,前兩者售價基本在10-15萬之間,而後者更是在10萬以內,相比同級別的合資緊湊型SUV,價格均在15萬以上。另一個因素就是選擇車型多!來看看合資的SUV車型,來來去去也就是那幾輛賣得好的,相反國產SUV,從幾萬到十幾萬的價格區間,數十款車型任君選擇,關鍵是配置還比合資車型要高得多!

實際上超過15萬的車型售價,是國產車型的一個坎。不少消費者依然覺得花10多20萬去支持國產,他們都表示做不到。在GS8之前就有着不少例子,就像哈弗的H8/H9,主打SUV高端市場,目的就是搶佔這部分市場的份額,但是它們卻敗得一塌塗地。而今GS8它卻要再次挑戰這一個高度,不過底氣足才能面對更強烈地挑戰,GS8也是如此,在看來,它已經擁有足夠的底氣!

傳祺GS8憑什麼去挑戰眾多合資車型?

從定位來看,廣汽傳祺GS8定位在中大型SUV上,直接的競爭對是就是哈弗的H8(賣不起來的車型也不成氣候)、長安CS95(還沒上市)。其實作為一款旗艦車型,更希望將GS8對飆合資車型!既然這樣讓我們來一場實打實的對比。

車身尺寸對比!

同尺寸的合資选手

非漢蘭達、銳界莫屬!

在尺寸方面,由於三者都屬於中定位車型,所以在尺寸方面三者都半斤八兩,但在油耗方面,GS8表現更好!雖然三者都是用官方油耗,在實際油耗方面還得加上1-2L的油耗,依然佔有很大的優勢,最關鍵的一點是!GS8便宜太多了!

配置豐富度對比

同價位配置秒殺合資选手!

在配置方面,相比同價位的合資車型,處於一個領跑狀態,不是合資車的配置不行,而是GS8的配置真心高得嚇人!

作為一款爆款車型

本身就擁有逆天的能力!

既然車子這麼棒!

應該買哪個配置呢?

廣汽傳祺GS8的售價為16.38-25.98萬,分為精英版、豪華版、豪華智聯版(2/4驅)、尊貴版(2/4驅)共6個車型選擇,而其中認為性價比最高的車型為豪華智聯版本!就像上文所發過的配置表,LED大燈、無鑰匙進入+一鍵啟動、自動駐車、全景天窗、電動座椅、全景影像、座椅加熱/通風、中控大屏幕等得…天吶,配置太高了!另外喜歡越野的朋友也能加13000去選擇四驅版本,性價比一樣高!本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

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

※超省錢租車方案

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

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

※回頭車貨運收費標準

這輛號稱快過邁凱倫的超跑 終於要發布了!

這個陣容相當於中國的半個互聯網都投了蔚來汽車。與此同時,業界發出了一些質疑之聲:搞互聯網的人會造出什麼樣的車。有意思的是,李斌極少回應,蔚來汽車至今也沒舉辦過哪怕一場新聞發布會。(蔚來汽車聖何塞辦公室)(蔚來汽車慕尼黑辦公室)(蔚來汽車上海辦公室)(蔚來汽車南京工廠)而有跡可循的事實是,在短短兩年間,這家新創車企已先後在美國聖何塞、德國慕尼黑、英國倫敦和中國上海、北京、香港、南京、合肥等12地設立了研發、設計、生產和商務機構,全球僱員達2000餘人,來自近40個國家和地區。

對大多數人來說,蔚來汽車是熟悉又陌生的存在。

熟悉的是它的創始人——李斌,一手帶領易車成為中國第一家在海外上市的汽車互聯網公司。易車之後,他創辦了蔚來汽車。

陌生的是迄今為止,除了幾張照片、幾條被瘋狂轉發的微博外,沒有任何官方對蔚來汽車旗下有關車型的回應或宣傳。我們所知道的,就是蔚來汽車做出了一輛電動超跑,它很厲害,可與邁凱倫等頂級跑車抗衡,僅此而已。

“哥不在江湖,但江湖裡總有哥的傳說”。在競爭如此激烈的汽車界,在大家都在推崇“品牌營銷”理念的市場環境中,蔚來汽車顯得太低調了。如果要列舉一份至今沒有舉辦過發布會的新創車企名單,“蔚來汽車”肯定不會缺席。為何蔚來反而“低調做事”?

因為他們曾公開表示,“一旦我們舉辦發布會,那就是要發布真正可以使用、可以跑的車了。”

今年10月14日,英國知名超跑博主Shemee150在社交應用Instagram上曝光了一組蔚來汽車純電動超跑的賽道測試照。

邁凱倫p1看到這兒消息的時候也懵逼了,直呼:“what do we think 我們該怎麼看”。

對此蔚來汽車官方遲遲沒有回應,直到前幾天官網突然發布了一條公告:“11月21日,蔚來汽車將於倫敦舉行全球發布會,正式發布新品牌並推出限量版電動超級跑車。”

這家異常低調神秘的新創車企,終於要開發布會了。

如果仔細推敲,蔚來的這款超跑,是目前公開報道中第一台脫離了ppT、非概念、能在賽道上飛馳的實體電動跑車。有傳言這款超跑前幾天在德國紐博格林北環進行的賽道速度測試中成功刷新世界紀錄,成為該賽道上速度最快的電動超跑。

回顧“蔚來汽車”的發展之路

創辦蔚來汽車前,在接受許多媒體採訪時,李斌都表達了一個相似的觀點。他發現在傳統的汽車公司架構中,企業與用戶交流的方式以及產業鏈與汽車用戶之間的互動平台無法滿足移動互聯網時代用戶對汽車品牌的全方位服務需求。他開始萌生了要重新定義汽車的用戶體驗,創造一個真正為用戶考慮的“用戶企業”的想法。

(李斌內部分享)

真正讓他把這個想法落到實處的,多少和北京近幾年嚴重的霧霾有關。蔚來汽車官方微信發布的一篇文章显示,李斌在一次內部講話中談及他創辦蔚來的初衷時直言:“在霧霾天空下生活是很絕望的,會讓人覺得人生非常沒有意義。趁着自己還清醒的時候,我們應該做一點事情。”

於是2014年11月,蔚來汽車誕生。

第一次聽到“蔚來汽車”,很多人會誤以為是“未來汽車”,但據稱蔚來汽車的寓意應該理解為“讓蔚藍的天空回到我們身邊”。

蔚來汽車的投資背景堪稱豪華。公開報道显示,蔚來汽車的創始投資方包括騰訊、易車創始人李斌、汽車之家創始人李想、京東創始人劉強東以及順為資本(雷軍創辦)、高瓴資本、紅杉資本和愉悅資本。今年年中公布的新一輪投資機構名單中,淡馬錫、聯想、TpG和厚朴也赫然在列。這個陣容相當於中國的半個互聯網都投了蔚來汽車。

與此同時,業界發出了一些質疑之聲:搞互聯網的人會造出什麼樣的車?有意思的是,李斌極少回應,蔚來汽車至今也沒舉辦過哪怕一場新聞發布會。

(蔚來汽車聖何塞辦公室)

(蔚來汽車慕尼黑辦公室)

(蔚來汽車上海辦公室)

(蔚來汽車南京工廠)

而有跡可循的事實是,在短短兩年間,這家新創車企已先後在美國聖何塞、德國慕尼黑、英國倫敦和中國上海、北京、香港、南京、合肥等12地設立了研發、設計、生產和商務機構,全球僱員達2000餘人,來自近40個國家和地區。

(李斌與伍絲麗)

去年12月,蔚來汽車挖來了“硅谷女王”伍絲麗,擔任公司首席發展官兼北美公司CEO。這位前思科首席技術和戰略官、摩托羅拉首席技術官的履新,引發了硅谷不小震動。

默默完成了產業鏈的布局,最可怕的不是對手太強大,而是強大的對手太低調。

“蔚來汽車”的速度

當不少新創車企在“ppT造車”的道路上越走越遠時,蔚來汽車已將電能技術運用到自己的電動方程式賽車上。

早在2014年,蔚來汽車就參加了第一屆由國際汽聯主辦的“電動方程式世界錦標賽”(Formula E,簡稱“FE”),這項賽事可以簡單理解為“F1的電動版”,是全球第一項依靠全電力驅動的賽車比賽。

(FE 蔚來賽車)

2015年FE第一賽季結束時,蔚來車隊有些出人意料地奪得該項賽事史上首個年度車手總冠軍。今年已是蔚來車隊連續第三年參加該項賽事。

“很多人誤認為我們只是冠名贊助商,這是一個很大的誤解。這就是蔚來汽車自己的車隊,賽車和車手都是我們自己的,而且我們擁有賽車的核心技術。”蔚來汽車相關消息人士透露。

而在2016年,這家低調的車企所取得的進展則有些令人吃驚。

今年4月,蔚來汽車悄然發布了兩條新聞:一是與江淮汽車達成戰略合作協議,雙方將在電動汽車領域進行全面戰略合作,整體合作規模達到100億元;二是當月底,蔚來汽車總投資30億元人民幣的高性能電機及電控系統生產基地在南京經濟技術開發區落成。

半年後的10月28日,一條公眾號消息未讀提醒推送到了很多人的手機屏幕上:“蔚來汽車首批電驅動總成在南京下線”。

11月21日,蔚來汽車第一款電動超跑的神秘面紗終於要揭開。

“蔚來汽車”未來要重新定義汽車?

在不少論壇現場,李斌都會被主辦方有意無意地安排與滴滴的高層同台。

“汽車產業現在得了一種‘互聯網焦慮症’的病,最焦慮的東西其實就是前面柳青提到的他們的目標:將來大家不用買車了!”今年6月的中國互聯網大會開幕論壇上,李斌在國家發改委、工信部、國家互聯網信息辦的領導面前慷慨陳詞。

他在現場舉了兩個很有說服力的例子,美國灣區和中國北京的汽車銷量,都沒有因為優步、滴滴的風行而減少,銷量反而大幅度增加。

“汽車用戶的購車需求並沒有因為移動出行軟件的興起而下降。之所以出現這樣的一個跟想象不一樣的判斷,主要是我們大部分時候簡單地把出行等同於汽車!”李斌認為,汽車行業最大的問題是把汽車當成一個交通工具,“如果你把手機只當成一個通話的工具,那就永遠沒有智能手機的出現。所以重新定義汽車的用戶體驗,才能重新定義汽車。”本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

※超省錢租車方案

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

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

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

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