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/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

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

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

※回頭車貨運收費標準

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

※超省錢租車方案

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

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

巴西政府護林計畫 成效不彰適得其反

摘錄自2020年9月3日公視新聞網報導

巴西亞馬遜雨林大火引發全球關注,波索納洛政府在幾個月前,提出綠色巴西計畫,宣布要派遣軍隊保護雨林。但是根據美聯社的調查,軍方對濫墾濫伐的違法業者,根本是「睜一隻眼閉一隻眼」,甚至還放任他們舖橋造路,使得雨林遭受破壞的危機變得更加嚴重。

此外巴西地方環保官員透露,目前針對亞馬遜雨林的調查和掃蕩行動,在軍方主導下已經停擺,不法犯罪者的罰鍰被減半,相關的起訴行動也不了了之。

氣候變遷
國際新聞
巴西
森林大火
森林野火
亞馬遜雨林

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

【其他文章推薦】

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

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

※回頭車貨運收費標準

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

※超省錢租車方案

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

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

波札那數百頭大象離奇死亡 查明是藍綠藻毒素作祟

摘錄自2020年9月22日中央社報導

非洲國家波札那(Botswana)官員今(21日)說,波札那今年數百頭大象死亡讓環境保護人士感到困惑和震驚,最後發現是由水中細菌藍綠藻(cyanobacteria)產生的毒素引起。

路透社報導,波札那野生動物和國家公園部副主任陶洛(Cyril Taolo)在記者會說,死亡大象的數量已從7月的281頭上升到330頭。

野生動物和國家公園部首席獸醫魯賓(Mmadi Reuben)在記者會表示:「我們的最新檢測發現,藍綠藻神經毒素是造成(大象)死亡的原因。這些是在水中發現的細菌。」

他又說:「(大象)死亡是由藍綠藻造成中毒引起,藍綠藻在窪地或水坑中生長。」另外,大象的死亡「在2020年6月底已經停止,正是窪地枯乾的時候」。

由於盜獵,非洲大象整體數量正在下降,但是波札那大象數量已經增加到約13萬頭,是非洲大陸近1/3大象的家。

生物多樣性
國際新聞
波札那
大象
動物死亡
藍綠藻

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

【其他文章推薦】

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

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

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

※超省錢租車方案

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

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

※回頭車貨運收費標準

墨西哥居民死守水壩 不讓政府輸水給美國

摘錄自2020年9月21日中央社報導

群眾今(20日)聚集在乾旱成災的墨西哥北部示威,試圖保住一座位於美墨邊界的水壩控制權。向來致力與美國總統川普維持良好關係的墨西哥總統羅培茲歐布拉多(Andres Manuel Lopez Obrador)18日表示,墨西哥必須善盡義務。

根據1944年的條約,墨西哥必須在5年內把175萬英畝呎(acre-feet)的水輸給美國,墨西哥也會拿到美國科羅拉多河(Colorado River)的水源。

美國德州州長艾波特(Greg Abbott)上週促請國務院協助落實協議。墨西哥還差近一年的水量才能達到條約要求,10月24日前,必須還完近1年量的水債。

但墨西哥民眾拒絕輸水給美國,群眾9月間在與美國新墨西哥州接壤的奇瓦瓦州(Chihuahua)波基亞水壩(La Boquilla dam)附近示威,奪得水壩控制權,但示威期間卻發生濺血事件,一個星期前,一名民眾在示威時遭砲火波及,死在墨西哥國民兵的子彈之下。

墨西哥國家水務委員會(National Water Commission of Mexico)發布的旱情監測顯示,奇瓦瓦州大片地區已有超過6個月出現中度和重度乾旱,鄰州索諾拉(Sonora)與科阿韋拉州(Coahuila)也受乾旱影響。

國際新聞
墨西哥
水壩
輸水
抗議

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

【其他文章推薦】

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

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

※超省錢租車方案

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

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

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

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

逾70頭鯨魚擱淺澳洲海灣沙洲 海洋專家設法救援

摘錄自2020年9月21日中央社報導

澳洲官員今(21日)表示,有超過70頭鯨魚擱淺在澳洲島嶼塔斯馬尼亞的海灣,海洋專家現正動員,評估救援的可能性。

那些鯨魚擱淺在麥夸利港(Macquarie Harbour),據信受困在沙洲上。麥夸利港位於塔斯馬尼亞(Tasmania)地形崎嶇且人煙稀少的西岸地區。

塔斯馬尼亞掌管環境的部門表示,警方已趕赴事發現場,海洋專家也正在評估狀況。

擱淺的鯨魚據信為領航鯨,但實際物種尚未獲得確認。塔斯馬尼亞相對常發生大批鯨魚擱淺事件,然而擱淺鯨魚為數眾多,使救援情況不甚樂觀。

海洋
國際新聞
澳洲
沙洲
鯨魚擱淺

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

【其他文章推薦】

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

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

※回頭車貨運收費標準

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

※超省錢租車方案

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

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