Visual Studio 2012及.NET Framework 4.5通告

1.BlockingQueue队列和平常队列一样都得据此来作为存储数据的器皿,但奇迹在线程当中

微软顶住Visual Studio部门的公司副总裁Jason
Zander刚刚发表博客,宣布Visual
Studio 2012及.NET Framework
4.5现曾好下载。同时提供MSDN订户、付费版本、试用版和免费Express版。

提到到数码存储的下就会见油然而生问题,而BlockingQueue是拖欠的语,如果一个线程要由BlockingQueue

图片 1

里拿走多少的时刻,该线程将会晤为阻断,并进入等状态,直到BlockingQueue里面有数量存入了后,就会见

Zander博客列举了升级至Visual Studio 2012的十二杀理由:

提醒线程进行数据的删减。若BlockingQueue是充满的,如果一个线程要拿数据存入BlockQueue,该线程

1. Windows 8开发

用会见于阻断,并上待状态,直到BlcokQueue里面的多寡为抱来有空间后,线程被唤起后在以数据存入、

Visual Studio 2012呢Windows
8应用开发提供了到支持,从沙盘、设计器到调试、测试。附带的可视化创作工具Blend(即前的Expression
Blend)现在又支持HTML/CSS和XAML。更多详情:http://blogs.msdn.com/b/windowsappdev/。

 

2. Web开发

2.重要涉嫌的方法:

Visual Studio 2012于Web开发及也生了扳平西功夫,除了ASP.NET
4.5的广大初特点(Web优化、ASP.NET MVC
4等,具体参见这里.aspx#whatsnew_feature))外,对JavaScript支持大妈增强,包括引入智能提醒IntelliSense(同时又好地支撑XML)、DOM查看器和JavaScript控制台、对第三正在库jQuery和RequireJS的原生化支持。

    BlockingQueue 方法以四种植形式出现,对于无克就满足但可能以前之一平整日好满足的操作,这四种植样式之处理方式不同:第一种是丢弃来一个格外,第二栽是回一个出奇值(null 或 false,具体在操作),第三种植是当操作可以成功面前,无限期地打断时线程,第四栽是在放弃前才于加以的卓绝老工夫限定内阻塞。下表中总结了这些方式:

3. Windows Phone 8开发

 
抛出异常 特殊值 阻塞 超时
插入 add(e) offer(e) put(e) offer(e, time, unit)
移除 remove() poll() take() poll(time, unit)
检查 element() peek() 不可用 不可用

出于Windows Phone
8本身及SDK都没有公布,这上头支持即没有完成,未来将通过在线披露。预计要新增特色是支撑期待已久的C++原生开发,还有企业应用。具体情况还得看WP团队博客的存续发布。

 

4. Windows Azure开发

3.BlockingQueue定义之常用方法详解: 
       
1)add(anObject):把anObject加到BlockingQueue里,即要BlockingQueue可以包容,则赶回true,否则报那个 
       
2)offer(anObject):表示如可能的话,将anObject加至BlockingQueue里,即只要BlockingQueue可以容纳,则回true,否则回false. 
       
3)put(anObject):把anObject加至BlockingQueue里,如果BlockQueue没有空间,则调用此方的线程被阻断直到BlockingQueue里面有空中重累. 
       
4)poll(time):取走BlockingQueue里排在首号之靶子,若未可知就取出,则可当time参数规定之年月,取不顶经常回来null 
       
5)take():取走BlockingQueue里排在首号的靶子,若BlockingQueue为空,阻断进入等状态直到Blocking有新的目标为投入了 
    2.BlockingQueue有四单实际的实现类似,根据不同需求,选择不同之贯彻类 
       
1)ArrayBlockingQueue:规定大小的BlockingQueue,其构造函数必须带来一个int参数来指明其大小.其所包含的对象是因FIFO(先入先出)顺序排序的. 
       
2)LinkedBlockingQueue:大小不定的BlockingQueue,若那构造函数带一个确定大小的参数,生成的
BlockingQueue有高低限制,若不带大小参数,所特别成的BlockingQueue的轻重缓急由Integer.MAX_VALUE来决定.其所含
的对象是盖FIFO(先入先出)顺序排序的 
       
3)PriorityBlockingQueue:类似于LinkedBlockQueue,但彼所包含对象的排序不是FIFO,而是根据对象的自排序依次或者是构造函数的Comparator决定的顺序. 
       
4)SynchronousQueue:特殊的BlockingQueue,对那个的操作必须是推广以及取交替完成的. 
   
3.LinkedBlockingQueue和ArrayBlockingQueue比起来,它们背后所用底数据结构不同等,导致
LinkedBlockingQueue的多寡吞吐量要大于ArrayBlockingQueue,但每当线程数量特别挺时该性质的可预见性低于
ArrayBlockingQueue.     

Visual Studio
2012当出口应用开发及之支撑至关重要是分布式缓存、更多宣布选择和再次粗之安装内存占用。更多详情参见这里。

  以网上找到两个例 

5. 企业应用开发

package com.thread;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public class BlockingQueueTest {
    public static void main(String[] args) {
        final BlockingQueue queue = new ArrayBlockingQueue(3);
        for(int i=0;i<2;i++){
            new Thread(){
                public void run(){
                    while(true){
                        try {
                            Thread.sleep((long)(Math.random()*1000));
                            System.out.println(Thread.currentThread().getName() + "准备放数据!");                            
                            queue.put(1);
                            System.out.println(Thread.currentThread().getName() + "已经放了数据," +                             
                                        "队列目前有" + queue.size() + "个数据");
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                    }
                }

            }.start();
        }

        new Thread(){
            public void run(){
                while(true){
                    try {
                        //将此处的睡眠时间分别改为100和1000,观察运行结果
                        Thread.sleep(1000);
                        System.out.println(Thread.currentThread().getName() + "准备取数据!");
                        queue.take();
                        System.out.println(Thread.currentThread().getName() + "已经取走数据," +                             
                                "队列目前有" + queue.size() + "个数据");                    
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }

        }.start();            
    }
}

立点的助益是初工具LightSwitch,同时支持桌面以及讲部署。当然,SharePoint应用开发为更为便利了。Visual
Studio 2012对Web开发支持之应有尽有升级,企业应用的前端开发自然吧收益颇多。

  ***********************************

6. 玩与3D应用开发

public class BlockingQueueCondition {

    public static void main(String[] args) {
        ExecutorService service = Executors.newSingleThreadExecutor();
        final Business3 business = new Business3();
        service.execute(new Runnable(){

            public void run() {
                for(int i=0;i<50;i++){
                    business.sub();
                }
            }

        });

        for(int i=0;i<50;i++){
            business.main();
        }
    }

}

class Business3{
    BlockingQueue subQueue = new ArrayBlockingQueue(1);
    BlockingQueue mainQueue = new ArrayBlockingQueue(1);
    //这里是匿名构造方法,只要new一个对象都会调用这个匿名构造方法,它与静态块不同,静态块只会执行一次,
    //在类第一次加载到JVM的时候执行
    //这里主要是让main线程首先put一个,就有东西可以取,如果不加这个匿名构造方法put一个的话程序就死锁了
    {
        try {
            mainQueue.put(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    public void sub(){
        try
        {
            mainQueue.take();
            for(int i=0;i<10;i++){
                System.out.println(Thread.currentThread().getName() + " : " + i);
            }
            subQueue.put(1);
        }catch(Exception e){

        }
    }

    public void main(){

        try
        {
            subQueue.take();
            for(int i=0;i<5;i++){
                System.out.println(Thread.currentThread().getName() + " : " + i);
            }
            mainQueue.put(1);
        }catch(Exception e){
        }        
    }
}

首要是DirectX调试、DirectX shaders (HLSL)等地方的支撑。

  

7. 针对编程语言最新特性的支撑

重点是异步编程,有矣初重点字async和await,编写异步代码和共同时一度坏相近了。

图片 2

本着C++
11初规范的支持自为是核心,包括无状态lambda、SCARY迭代器、基于范围的for循环、scoped枚举等。同时通过C++/CX和C++
AMP(支持硬件加速和异构编程)支持针对WindowsRT组件的无缝访问。

另外利用F#色提供程序和LINQ查询,能够好地动各种数据服务来编程。

8. 属性、可靠性和兼容性

起下图来拘禁,性能改进的确有目共睹。详情之前发生大多首稿子叙。此外还有针对性前面版本开发之档次之兼容性。

图片 3

9. IDE再度有效率

微软此次充分发布还生一个联名特征:简化界面。Visual Studio 2012乎未例外。

图片 4

10. 测试

Visual Studio
2012本支撑探索式测试(也称高速测试,不知底呀意思?赶快Google一下咔嚓)。对第三正在测试框架的支撑呢大大改善。

11. 飞跃实践

针对迅速的支持始终是Visual
Studio近几只版的第一之一。VS2012引入了PowerPoint故事板精益求精团队里关系,Microsoft
Feedback Client可以用来收集团队外部的申报。Team Foundation Server
2012对敏捷流程各环节且提供了再度好支持。

12. DevOps

提计算时,在研发流程中引入运维是大势所趋。Visual Studio
2012对这个首次于提供了支撑,更好地拼微软的云平台管理工具System
Center,将运维正式纳入为研发角色之一。