java 特殊开发包,jxab,xml,并发

1 同步锁和解开锁
2 原子类型数据
3 线程池

1 jxab 实例




package com.newegg.ec.kafka.util;


import java.io.File;
import java.util.HashSet;
import java.util.Set;


import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement  
class Customer {  
    String name;  
    int age;  
    int id;  
    Set<Book> bookSet;
    @XmlElement  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  
      
    @XmlElement  
    public int getAge() {  
        return age;  
    }  
    public void setAge(int age) {  
        this.age = age;  
    }  
      
    @XmlAttribute  
    public int getId() {  
        return id;  
    }  
    public Set<Book> getBookSet() {
return bookSet;
}
public void setBook(Set<Book> bookSet) {
this.bookSet = bookSet;
}
public void setId(int id) {  
        this.id = id;  
    }  
      
    @Override  
    public String toString() {  
        return "Customer [id=" + id + ",name=" + name + ",age=" + age + "]";  
    }
}  




  
//Marshaller  
public class TestJXAB {  
    public static void main(String[] args) {  
  
        Customer customer = new Customer();  
        customer.setId(100);  
        customer.setName("suo");  
        customer.setAge(29);  
          
        Book book = new Book();  
        book.setId("1");  
        book.setName("哈里波特");  
          
        Book book2 = new Book();  
        book2.setId("2");  
        book2.setName("苹果");  
          
        Set<Book> bookSet = new HashSet<Book>();  
        bookSet.add(book);  
        bookSet.add(book2);  
          
        customer.setBook(bookSet);  
          
        try {  
            File file = new File("src/main/resources/configjxab.xml");  
            JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);  
            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();  
            // output pretty printed  
            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  
            jaxbMarshaller.marshal(customer, file);  
            jaxbMarshaller.marshal(customer, System.out);  
        } catch (JAXBException e) {  
            e.printStackTrace();  
        }  
        
        read();
        
    }  
    static void read(){
    try {  
            File file = new File("src/main/resources/configjxab.xml");  
            JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);  
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();  
            Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);  
            System.out.println(customer);  
        } catch (JAXBException e) {  
            e.printStackTrace();  
        }  
    }
}  




<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
    <age>29</age>
    <name>suo</name>
</customer>




2 java 并发实例




AtomicInteger简介
这个类真的非常实用,更重要的是 它确实非常简单:


附上自己的代码,可以自己试试:


AtomicInteger,一个提供原子操作的Integer的类。在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。


 


代码:


package test;


import java.util.concurrent.atomic.AtomicInteger;
/**
 * 来看AtomicInteger提供的接口。


 //获取当前的值
 
 public final int get()
 
 //取当前的值,并设置新的值
 
  public final int getAndSet(int newValue)
 
 //获取当前的值,并自增
 
  public final int getAndIncrement() 
 
 //获取当前的值,并自减
 
 public final int getAndDecrement()
 
 //获取当前的值,并加上预期的值
 
 public final int getAndAdd(int delta)




 * @author YangBaoBao
 *
 */
public class AtomicIntegerDemo {
 public static void main(String[] args) {
  AtomicInteger ai=new AtomicInteger(0);
  int i1=ai.get();
  v(i1);
  int i2=ai.getAndSet(5);
  v(i2);
  int i3=ai.get();
  v(i3);
  int i4=ai.getAndIncrement();
  v(i4);
  v(ai.get());
  
 }
 static void v(int i)
 {
  System.out.println("i : "+i);
 }
}




3 xml读取实例




package com.newegg.ec.kafka.util;


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;


 class Item {
 private String date; 
 private String mode;
 private String unit;
 private String current;
 private String interactive;
 
 public String getDate() {
   return date;
 }
 
 public void setDate(String date) {
   this.date = date;
 }
 public String getMode() {
   return mode;
 }
 public void setMode(String mode) {
   this.mode = mode;
 }
 public String getUnit() {
   return unit;
 }
 public void setUnit(String unit) {
   this.unit = unit;
 }
 public String getCurrent() {
   return current;
 }
 public void setCurrent(String current) {
   this.current = current;
 }
 public String getInteractive() {
   return interactive;
 }
 public void setInteractive(String interactive) {
   this.interactive = interactive;
 }


 @Override
 public String toString() {
   return "Item [current=" + current + ", date=" + date + ", interactive="
       + interactive + ", mode=" + mode + ", unit=" + unit + "]";
 }













 class StaXParser {
  static final String DATE = "date";
  static final String ITEM = "item";
  static final String MODE = "mode";
  static final String UNIT = "unit";
  static final String CURRENT = "current";
  static final String INTERACTIVE = "interactive";


  @SuppressWarnings({ "unchecked", "null" })
  public List<Item> readConfig(String configFile) {
    List<Item> items = new ArrayList<Item>();
    try {
      // First, create a new XMLInputFactory
      XMLInputFactory inputFactory = XMLInputFactory.newInstance();
      // Setup a new eventReader
      InputStream in = new FileInputStream(configFile);
      XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
      // read the XML document
      Item item = null;


      while (eventReader.hasNext()) {
        XMLEvent event = eventReader.nextEvent();


        if (event.isStartElement()) {
          StartElement startElement = event.asStartElement();
          // If we have an item element, we create a new item
          if (startElement.getName().getLocalPart() == (ITEM)) {
            item = new Item();
            // We read the attributes from this tag and add the date
            // attribute to our object
            Iterator<Attribute> attributes = startElement
                .getAttributes();
            while (attributes.hasNext()) {
              Attribute attribute = attributes.next();
              if (attribute.getName().toString().equals(DATE)) {
                item.setDate(attribute.getValue());
              }
            }
          }


          if (event.isStartElement()) {
            if (event.asStartElement().getName().getLocalPart()
                .equals(MODE)) {
              event = eventReader.nextEvent();
              item.setMode(event.asCharacters().getData());
              continue;
            }
          }
          if (event.asStartElement().getName().getLocalPart()
              .equals(UNIT)) {
            event = eventReader.nextEvent();
            item.setUnit(event.asCharacters().getData());
            continue;
          }


          if (event.asStartElement().getName().getLocalPart()
              .equals(CURRENT)) {
            event = eventReader.nextEvent();
            item.setCurrent(event.asCharacters().getData());
            continue;
          }


          if (event.asStartElement().getName().getLocalPart()
              .equals(INTERACTIVE)) {
            event = eventReader.nextEvent();
            item.setInteractive(event.asCharacters().getData());
            continue;
          }
        }
        // If we reach the end of an item element, we add it to the list
        if (event.isEndElement()) {
          EndElement endElement = event.asEndElement();
          if (endElement.getName().getLocalPart() == (ITEM)) {
            items.add(item);
          }
        }


      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (XMLStreamException e) {
      e.printStackTrace();
    }
    return items;
  }











public class TestXml {
  public static void main(String args[]) {
    StaXParser read = new StaXParser();
    List<Item> readConfig = read.readConfig("src/main/resources/configxml.xml");
    for (Item item : readConfig) {
      System.out.println(item);
    }
  }



<?xml version="1.0" encoding="UTF-8"?>
<config>
  <item date="January 2009">
    <mode>1</mode>
    <unit>900</unit>
    <current>1</current>
    <interactive>1</interactive>
  </item>
  <item date="February 2009">
    <mode>2</mode>
    <unit>400</unit>
    <current>2</current>
    <interactive>5</interactive>
  </item>
  <item date="December 2009">
    <mode>9</mode>
    <unit>5</unit>
    <current>100</current>
    <interactive>3</interactive>
  </item>
</config> 


学习 jxab网址


http://www.vogella.com/tutorials/JAXB/article.html




java 特殊开发包,jxab,xml,并发
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值