摘要: Java进阶7并发优化4——JDK并发数据结构20131114由于并发程序和串行程序的不同特点,在串行程序中使用的数据结构可能无法在并行程序中直接的正常使用,因为这些数据结构可能不是线程安全的,所以这一次并发程序的优化介绍的是并发程序中的数据结构,比如并发List,并发Set,并发Map等。1.并发List Vector实现的List接口,CopyOnWriteArrayList也是实现的List接口,这两个List的实现是线程安全的,但是对于ArrayList不是线程安全的,所以在多线程中尽量避免使用ArrayList,如果因为某些原因必须使用的话,需呀使用同步机制: Collection. 阅读全文
posted @ 2013-11-23 12:35 追梦的飞飞 阅读(888) 评论(0) 推荐(0)
摘要: Java进阶7并行优化JDK多任务执行框架技术20131114Java语言本身就是支持多线程机制的,他提供了Thread类Runnable接口等简单的多线程支持工具,同时为了进一步改善并发程序的性能,在JDK中还提供了用于多线程管理的线程池概念。并行优化中,一个重要的知识点就是线程池技术。ExecutorService exe = Executors.newCachedThreadPool();1.无限制线程的缺陷多线程设计的软件方法确实可以最大限度的发挥现代多核处理器的计算能力,提高生产系统的吞吐量和性能。但是如果不加控制的随意的使用多线程技术,对于系统性能反而会产生不利的影响,线程的创建, 阅读全文
posted @ 2013-11-23 12:34 追梦的飞飞 阅读(2014) 评论(0) 推荐(0)
摘要: Java进阶7并发优化2并行程序设计模式201311141.Master-worker模式前面讲解了Future模式,并且使用了简单的FutureTask来实现并发中的Future模式。下面介绍的是Master-Worker模式。这个模式也是经常使用的并发模式之一,核心思想就是系统有两类线程协同工作:Master线程和Worker线程。Master线程负责接收和分配任务,Worker线程负责处理这些子任务。当每一个worker线程处理完成之后,将结果返回给Master线程,有Master线程负责整合结果。他的好处在于能够将一个大的任务拆分成为若干个小任务,并且能够并行执行,从而提高系统的吞吐量 阅读全文
posted @ 2013-11-23 12:33 追梦的飞飞 阅读(487) 评论(0) 推荐(0)
摘要: Java进阶7并发优化1并行程序的设计模式20131114本章重点介绍的是基于Java并行程序开发以及优化的方法,对于多核的CPU,传统的串行程序已经很好的发回了CPU性能,此时如果想进一步提高程序的性能,就应该使用多线程并行的方式挖掘CPU的潜能。本章知识点:常用的多线程设计模式,比如Future模式,Master-Worker模式,Guarded Suspeionsion模式、不变模式、生产者消费者模式等等。JDK内置的多线程框架和各种线程池技术;JDK内置的并发数据结构;JDK并发控制方式,比如内部锁,重入锁,读写锁,ThreadLocal变量,信号量等等有关锁的一些优化方法;使用无锁的 阅读全文
posted @ 2013-11-23 12:29 追梦的飞飞 阅读(508) 评论(0) 推荐(0)
摘要: Java进阶6异常处理的陷阱20131113异常处理机制是Java语言的特色之一,尤其是Java的Checked异常,更是体现了Java语言的严谨性:没有完善的错误的代码根本就不会被执行。对于Checked异常,Java程序要么声明抛出,要不使用try .. catch捕获程序运行过程中抛出的异常,进行处理。Java开发程序员都是无法回避异常处理的情况,Java异常处理同样存在着一些迷惑的地方。例如在finally代码块执行的规则是怎样的?程序中遇到return语句之后还会执行finally代码块吗?程序遇到System.exit()的时候还会执行finally代码块吗?1.正确关闭资源的方式 阅读全文
posted @ 2013-11-23 12:28 追梦的飞飞 阅读(290) 评论(0) 推荐(0)
摘要: 获得一个int数中二进制位为1 的个数intNumberOfOne(intn){intcount = 0;unsignedintflag = 1;while(flag){if(n& flag){count++;}flag = flag << 1;}returncount;}intNumberOfOne2(intn){intcount = 0;while(n){count++;n=n&(n- 1);}returncount;} 阅读全文
posted @ 2013-11-08 16:46 追梦的飞飞 阅读(212) 评论(0) 推荐(0)
摘要: 数组中,有一个元素的值在数组中重复的个数是超过一半,获得元素超过一半的元素值intMoreThanHalfNumber(int*arr,intn){intresult =arr[0];inttime = 1;for(inti = 1; i <n; i++){if(time == 0){result =arr[i];time = 1;}elseif(arr[i] == result){time++;}else{time--;}}returnresult;} 阅读全文
posted @ 2013-11-08 16:44 追梦的飞飞 阅读(155) 评论(0) 推荐(0)
摘要: 全排列思想: 这是一个全排列问题,需要使用递归实现,将数组中的所有元素和第一个元素交换,求后面n-1个元素的全排列。 按照这个条件递归下去,知道元素的个数只有一个的时候,输出所有的元素。#includeusingnamespacestd;inttotal = 0;voidperm(intarr[],intstart,intsize){if(start>=size){for(inti = 0; i <size; i++){cout <<arr[i] <<" ";}cout << endl;total++;//return;}el 阅读全文
posted @ 2013-11-08 16:43 追梦的飞飞 阅读(293) 评论(0) 推荐(0)
摘要: Java进阶5 面向对象的陷阱 20131103 Java是一门纯粹面向对象的编程语言,Java面向对象是基础,而且面向对象的基本语法非常多,非常的细,需要程序员经过长时间的学习才可以掌握。本章重点介绍的是Java中面向对象中的容易出现的陷阱。1. instanceof 运算符的陷阱 Instanceof运算符前一个操作数通常是一个引用类的变量,后一个操作数是一个类,也可以是接口,用于判断前面的对象是不是后面类或者其子类,如果是的话,则返回true反之则返回false。但是也会有一些陷阱: String str = "yang"; System.out.println( ( 阅读全文
posted @ 2013-11-05 23:21 追梦的飞飞 阅读(310) 评论(0) 推荐(0)
摘要: Java进阶2 数组内存和对象的内存管理知识 20131028前言: 在面试的时候,如果是Java的编程语言,也许你认为没有什么可以问的,只能够说明你对于Java了解的太浅了,几乎就是两个星期的节奏速成,没有在底层掌握Java编程语言。那么面试的时候,你就会发现很多的不会,所以在这个时候切记说你懂Java。 还有有些人面试Java认为就是面试SSH框架,其实个人理解方面,除了那种很小型的公司还有不懂技术的什么什么类型的企业,就会拿SSH器标准你。说一下自己的情况: 我的第一编程语言是C++,同时Java是自己的辅助,可以算的上是本科生中学习Java最好的之一(谦虚点了),但是我自己真的对于SS 阅读全文
posted @ 2013-11-05 23:19 追梦的飞飞 阅读(434) 评论(0) 推荐(0)