JAVA多线程编程之批量生产者消费者问题实例介绍



JAVA多线程编程之批量生产者消费者问题实例介绍。最近在找工作,自学已经遗忘的多线程知识,就在网上查看了经典的生产者消费者例子,发现都是一次性生产和消费一个的,于是我就想搞一个多生产多消费者的例子。写在博客中全当是记录自己的学习记录,若纰漏百出,望不吝指出,谢谢!
实体bean类:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
package thread.productAndConsumer;

public class ProductsVO {

private String name ;
private String id[......]

Read more

Annotation之系统内建的 注释Annotation的注释



java Annotation之系统内建的 注释Annotation的注释。

一、@Target注释之前定义的Annotation,如果明确说明,可以在任意位置使用。

例:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
@MyTargetAnntation(key=”MLDN”,value=”www.mldnjava.cn”)
public class SimpleBean{
@MyTargetAnntation(key=”MLDN”,value=”www.mldnjava.cn”)
public String toString()[......]

Read more

java堆排序算法实例讲解

java堆排序算法实例讲解。堆排序的概念相信大家都有所了解,单纯看代码的话,还是有点生硬,所以我们就来解析下代码:

/**
*
*/
package com.cxm;

/**
* @author admin
*
*/
public class HeapSort
{
/** *以2为底的对数 *
* @paramparam
* *@return
* */
private static double getLog(double param){
return Math.log(param)/Math.log(2);
}

private static v[......]

Read more

java多线程编程应用总结之线程安全队列Queue

java多线程编程应用总结之线程安全队列Queue。在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。

注:什么叫线程安全?这个首先要明确。线程安全的类,指的是类内共享的全局变量的访问必须保证是不受多线程形式影响的。如果由于多线程的访问(比如修改、遍历、查看)而使这些变量结构被破坏或者针对这些变量操作的原子性被破坏,则这个类[......]

Read more

nginx 出现 13 Permission denied Linux不能下载文件

nginx 出现 13 Permission denied Linux不能下载文件。是什么原因?怎么解决这个问题?在windows环境下下载zip文件功能正常,部署到linux环境下,下载zip文件功能不正常。查找tomat日志报错如下:

ClientAbortException:  java.net.SocketException: Connection reset
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:358)
at org.apache.tomcat.util.b[......]

Read more

java枚举类EnumSet和EnumMap的使用实例

 java 提供了两个枚举集合:EnumSet和EnumMap,这两个集合的使用都比较简单,EnumSet表示其元素必须是某一枚举的枚举项,EnumMap表示Key值必须是某一枚举的枚举项,由于枚举类的实例数量固定并且有限,相对来说EnumSet和EnumMap的效率会比其他Set和Map要高。
为什么要限定在64个枚举项以内?
虽然EnumSet很好用,但是它有一个隐藏的特点,看源代码:
    /**
     * Creates an enum set containing all of the elements in the specified
     * elem[......]

Read more

java代理模式和动态代理实例代码讲解

java设计模式中的代理模式:就是当调用代理者的某个方法时,代理者在自己内部调用被代理者的相应方法,看起来就像代理者自己执行的某个方法样。代理者和被代理者实现同一个接口。

举例:例如朝鲜(NorthKorea)和美国(America)没有建立外交关系,朝鲜对美国喊话(Speak),要通过代理者瑞士Swiss来实现。

/**
*
* @author man
* 定义一个国家接口.包含国家的共同属性和方法
*/
public interface Country {
public void SpeakToAmerica(String message);//同美国对话

}[......]

Read more

c 面试题之包含min函数的栈

c 面试题之包含min函数的栈。定义栈的数据结构,在该类型中实现一个能够得到栈的最小元素的min函数。要求函数minpushpop的时间复杂度都是O(1)这是去年google的一道面试题。

首先会想到在栈里添加一个成员变量来存放最小元素。每次push一个新元素时,如果该元素比当前的最小元素还要小,则更新最小元素。乍一看这思路挺好,但仔细一想,该思路存在一个重要问题:如果当前的最小元素被pop出去,如何才能得到下一个最小元素?

因此仅仅只添加一个成员变量存放最小元素是不够的,我们需要一个辅助栈。每次push一个新元素时,同时将此时数据栈中的最小元素push到辅助栈中;每次pop[......]

Read more

c 面试题之顺时针打印矩阵

c 面试题之顺时针打印矩阵。输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如,输入如下矩阵:

则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10。

第一次看到这个题目的时候,觉得这个题目很简单,完全不需要用到数据结构或算法的知识。后来听到包括Autodesk、EMC在内的多家公司在面试或者笔试里采用过这道题,于是决定自己写一遍试一下。真正写一遍才发现,要完整写出这道题的代码,还真不容易。

解决这道题的难度在于代码中会包含很多个循环,而且还有多个边界条件需要判断。如果在把问题考虑得很清楚之前就开始写代码,不可避免地会越[......]

Read more

c 面试题之二叉树的镜像

c 面试题之二叉树的镜像。请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树结点的定义如下:

struct BinaryTreeNode
{
int m_nValue;
BinaryTreeNode* m_pLeft;
BinaryTreeNode* m_pRight;
};

树的镜像是一个新的概念。如下图,右边的二叉树是左边二叉树的镜像。(很多面试题很抽象,不容易找到解决办法,可以画一些图形来帮助理解)

从图可以看出,要得出一棵树的镜像,可以前序遍历这棵树的每个结点,如果该结点有子结点,就交换它的两个子结点。当交换完所有非叶子结点之后,就得到了树的镜像。[......]

Read more