Java
文章平均质量分 77
南风不竸
指掀涛澜天下惊,抚筝百载,清绝吾命。挑弦一曲与谁听,昂首万里,江山无人!
展开
-
Java Stream API进阶篇
上一节介绍了部分Stream常见接口方法,理解起来并不困难,但Stream的用法不止于此,本节我们将仍然以Stream为例,介绍流的规约操作。规约操作(reduction operation)又被称作折叠操作(fold),是通过某个连接动作将所有元素汇总成一个汇总结果的过程。元素求和、求最大值或最小值、求出元素总个数、将所有元素转换成一个列表或集合,都属于规约操作。Stream类库有两个通用的...转载 2019-02-18 09:38:25 · 255 阅读 · 0 评论 -
Java线程:并发协作-生产者消费者模型
Java线程:并发协作-生产者消费者模型 对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。 实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。对于此模型,应该明确一下几点:1、生产者仅仅在仓储未满时候生产,仓满则停止生产。2、消费者转载 2014-06-22 18:29:14 · 379 阅读 · 0 评论 -
Java线程:线程的同步-同步块
Java线程:线程的同步-同步块 对于同步,除了同步方法外,还可以使用同步代码块,有时候同步代码块会带来比同步方法更好的效果。 追其同步的根本的目的,是控制竞争资源的正确的访问,因此只要在访问竞争资源的时候保证同一时刻只能一个线程访问即可,因此Java引入了同步代码快的策略,以提高性能。 在上个例子的基础上,对oper方法做了改动,由同步方法改为同步代码块模式,程序的执行逻转载 2014-06-22 18:28:18 · 388 阅读 · 0 评论 -
Java线程:线程的调度-让步
Java线程:线程的调度-让步 线程的让步含义就是使当前运行着线程让出CPU资源,但是然给谁不知道,仅仅是让出,线程状态回到可运行状态。 线程的让步使用Thread.yield()方法,yield() 为静态方法,功能是暂停当前正在执行的线程对象,并执行其他线程。 /*** Java线程:线程的调度-让步 * * @author leizhimin 20转载 2014-06-22 18:24:49 · 353 阅读 · 0 评论 -
Java线程:线程的调度-优先级
Java线程:线程的调度-优先级 与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。 线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。 在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同。 /*** Java转载 2014-06-22 18:23:33 · 362 阅读 · 0 评论 -
Java线程:线程的交互
Java线程:线程的交互 SCJP5学习笔记 线程交互是比较复杂的问题,SCJP要求不很基础:给定一个场景,编写代码来恰当使用等待、通知和通知所有线程。 一、线程交互的基础知识 SCJP所要求的线程交互知识点需要从java.lang.Object的类的三个方法来学习: void notify() 唤醒在此对象监视器上等待的单个线程转载 2014-06-22 18:21:07 · 337 阅读 · 0 评论 -
Java线程:线程的同步与锁
Java线程:线程的同步与锁 一、同步问题提出 线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。 publicclass Foo { private int x = 100; public int g转载 2014-06-22 18:20:10 · 377 阅读 · 0 评论 -
Java线程:线程状态的转换
Java线程:线程状态的转换 SCJP5学习笔记 一、线程状态 线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下: 1、新状态:线程对象已经创建,还没有在其上调用start()方法。 2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当sta转载 2014-06-22 18:19:07 · 426 阅读 · 0 评论 -
java java.lang.NoClassDefFoundError 的解决办法
以简单而经典的 “HelloWorld.java” 为例不含包层次的HelloWorld.java public class HelloWorld { public static void main(String[] args) { System.out.println("H转载 2014-06-22 09:39:46 · 1719 阅读 · 0 评论 -
Java线程:并发协作-死锁
Java线程:并发协作-死锁 线程发生死锁可能性很小,即使看似可能发生死锁的代码,在运行时发生死锁的可能性也是小之又小。 发生死锁的原因一般是两个对象的锁相互等待造成的。 在《Java线程:线程的同步与锁》一文中,简述死锁的概念与简单例子,但是所给的例子是不完整的,这里给出一个完整的例子。 /*** Java线程:并发协作-死锁 * * @a转载 2014-06-22 18:30:22 · 458 阅读 · 0 评论 -
Java线程:线程的同步-同步方法
Java线程:线程的同步-同步方法 线程的同步是保证多线程安全访问竞争资源的一种手段。线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题? 在本文之前,请参阅《Java线程:线程的同步与锁》,本文是在此基础上所写的。 对于同转载 2014-06-22 18:27:21 · 371 阅读 · 0 评论 -
Java线程:线程的调度-休眠
Java线程:线程的调度-休眠 Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。 这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制。 线程休眠的目的是使线程让出CPU的最简单的做法之一,线程休眠时候,会将CPU资源交给其他线程,以便能轮换执行,当休眠一定时间后,线程会苏醒,进入转载 2014-06-22 18:22:38 · 368 阅读 · 0 评论 -
web.xml 文件理解
转载自:http://www.cnblogs.com/hellojava/archive/2012/12/28/2835730.html前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet等。但是要说明的是web.xml并不是必须的,一个web工程可以没有web.x转载 2014-06-26 23:26:49 · 420 阅读 · 0 评论 -
Java线程:大总结
Java线程:大总结 Java线程是Java语言中一个非常重要的部分,Java5之前,多线程的语言支持还是比较弱的,内容也较少,写一个复杂的多线程程序是相当有挑战性的。 在Java5以后,Java对多线程做了很多扩展,扩展部分称之为并发包。这部分内容大大增强了Java多线程编程的能力,通过使用Java5线程新特征的API,可以很容易的做出复杂的多线程程序。与其他语言相比,已经是相当转载 2014-06-26 23:19:20 · 507 阅读 · 0 评论 -
Java线程:新特征-阻塞队列
Java线程:新特征-阻塞队列 阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有可用元素为止。 有了这样的功能,就为多线程的排队等候的转载 2014-06-26 23:15:11 · 454 阅读 · 0 评论 -
Java线程:新特征-锁(上)
Java线程:新特征-锁(上) 在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。 ConditionCondition 将Object 监视器转载 2014-06-22 18:33:22 · 460 阅读 · 0 评论 -
Java线程:线程栈模型与线程的变量
Java线程:线程栈模型与线程的变量 SCJP5学习笔记 要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。 下面通过一个示例性的代码说明线程(调用)栈的变化过程。转载 2014-06-22 18:17:47 · 402 阅读 · 0 评论 -
Java线程:新特征-线程池
Java线程:新特征-线程池 Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。 有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部转载 2014-06-22 18:32:01 · 374 阅读 · 0 评论 -
Java Stream API入门篇
你可能没意识到Java对函数式编程的重视程度,看看Java 8加入函数式编程扩充多少功能就清楚了。Java 8之所以费这么大功夫引入函数式编程,原因有二:代码简洁,函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环。 多核友好,Java函数式编程使得编写并行程序从未如此简单,你需要的全部就是调用一下parallel()方法。这一节我们学习stream,也就是Ja...转载 2019-02-18 09:37:32 · 164 阅读 · 0 评论 -
深入理解Java Stream流水线
前面我们已经学会如何使用Stream API,用起来真的很爽,但简洁的方法下面似乎隐藏着无尽的秘密,如此强大的API是如何实现的呢?Pipeline是怎么执行的,每次方法调用都会导致一次迭代吗?自动并行又是怎么做到的,线程个数是多少?本节我们学习Stream流水线的原理,这是Stream实现的关键所在。首先回顾一下容器执行Lambda表达式的方式,以ArrayList.forEach()方法为...转载 2019-02-18 09:36:13 · 219 阅读 · 0 评论 -
Lambda表达式和Java集合框架
Java8为容器新增一些有用的方法,这些方法有些是为完善原有功能,有些是为引入函数式编程(Lambda表达式),学习和使用这些方法有助于我们写出更加简洁有效的代码.本文分别以ArrayList和HashMap为例,讲解Java8集合框架(Java Collections Framework)中新加入方法的使用.前言我们先从最熟悉的Java集合框架(Java Collections Fram...转载 2019-02-18 09:34:22 · 143 阅读 · 0 评论 -
CentOS7安装JDK
一、准备工作卸载默认安装的OpenJDK1.查找需要卸载的OpenJDK rpm -qa | grep openjdk | grep -v grep[root@localhost etc]# rpm -qa | grep openjdk | grep -v grep java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64 java-1.8.0-openjd原创 2016-11-22 15:46:46 · 465 阅读 · 0 评论 -
Windows下编译hadoop 2.x Hadoop-eclipse-plugin插件
由于使用的Hadoop版本是2.7.3,没有相应的Eclipse开发插件,就只好自己编译一个。编译环境: 2.1 JDK配置 2.2安装Eclipse,只需按正常开发配置好,能运行HelloWorld即可 2.3配置Ant,添加%ANT_HOME%\bin到PATH,执行ant -version,即可显示Ant版本,说明配置好了 2.4下载hadoop二进制包,解压 2.5下载编译Ecl原创 2016-11-22 15:39:39 · 2207 阅读 · 0 评论 -
Java移位运算符
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定原创 2015-05-17 15:11:33 · 428 阅读 · 0 评论 -
Java位运算符
计算机内部的数据都以二进制的形式存在,二进制数据最高位是符号位,正数是0,负数为1;正数的原码、反码、补码都是一样的,负数的反码为原码的符号位不变,其它位取反,即0->1,1->0;而负数的补码等于反码加1;0的反码、补码都是0;在计算机进行运算的时候,都是以补码的方式运算。Java语言中的位运算符主要有4种:&(位与)、|(位或)、^(异或)和~(按位取反),下面依次介绍运算规则和使原创 2015-05-17 14:47:05 · 321 阅读 · 0 评论 -
JDBC连接各种数据库的字符串
oracle driverClass:oracle.jdbc.driver.OracleDriver url:jdbc:oracle:thin:@127.0.0.1:1521:dbnamemysql driverClass:com.mysql.jdbc.Driver url:jdbc:mysql://localhost:3306/mydb原创 2015-01-11 18:19:40 · 778 阅读 · 0 评论 -
Java线程:新特征-有返回值的线程
Java线程:新特征-有返回值的线程 在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。 现在Java终于有可返回值的任务(也可以叫做线程)了。 可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。 执行Callable任务后,可以获取一个Future的对象转载 2014-06-22 18:32:43 · 415 阅读 · 0 评论 -
Java线程:volatile关键字
Java线程:volatile关键字 Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。 谈及到volatile关键字,不得不提的一篇文章是:《Java 理论与实践: 正确使用 Volatile 变量》,这篇转载 2014-06-22 18:31:07 · 380 阅读 · 0 评论 -
Java线程:线程的调度-守护线程
Java线程:线程的调度-守护线程 守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。 守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。 setDaemo转载 2014-06-22 18:26:35 · 334 阅读 · 0 评论 -
Java线程:线程的调度-合并
Java线程:线程的调度-合并 线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。 join为非静态方法,定义如下:void join() 等待该线程终止。 void join(long millis) 等待该线程终止的时间最长为 mill转载 2014-06-22 18:25:34 · 315 阅读 · 0 评论 -
Java线程:创建与启动
Java线程:创建与启动 SCJP5学习笔记 一、定义线程 1、扩展java.lang.Thread类。 此类中有个run()方法,应该注意其用法:public void run()如果该线程是使用独立的 Runnable 运行对象构造的,则调用该Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。 Thre转载 2014-06-22 18:16:54 · 447 阅读 · 0 评论 -
Java线程:概念与原理
Java线程:概念与原理 SCJP5学习笔记 一、操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线程是指进程中的一个执行流程,一个进程中可以运行多个线程转载 2014-06-22 18:16:02 · 341 阅读 · 0 评论 -
Java线程:新特征-锁(下)
Java线程:新特征-锁(下) 在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,在一定程度上提高了程序的执行效率。 Java中读写锁有个接口java.util.concurrent.locks.ReadWriteLock,也有转载 2014-06-26 23:13:39 · 376 阅读 · 0 评论 -
JNDI 的理解
JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。 那么,JNDI到底起什么作用?//带着问题看文章是最有效的 要了解JNDI的作用,我们可以从“如果不用JNDI我们怎样做?用了JNDI后我们又将怎转载 2014-06-26 23:25:52 · 456 阅读 · 0 评论 -
选用Ibatis和Hibernate的区别1
选择hibernate还是选择ibatis,其实都有它的道理,本文分别介绍了两个的特性,并对其自身特点和使用特点做了比较。AD: hibernate简介hibernate是一个开放源代码的对象关系映射框架,它对jdbc进行了转载 2011-08-13 12:29:26 · 362 阅读 · 0 评论 -
详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析XML的四种方法。AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互转载 2011-08-13 12:28:37 · 289 阅读 · 0 评论 -
你不知道的Java秘密3
本文向各位介绍一下Java性能监控小技巧:“JDK附带分析器、远程连接进程、跟踪统计、为离线分析创建一个堆转储、JConsole并不是高深莫测的。”AD: Java 平台上更简单的脚本编写方法现在,许多 Java 开发人员都喜欢在转载 2011-08-13 12:27:50 · 392 阅读 · 0 评论 -
你不知道的Java秘密2
本文向各位介绍一下Java性能监控小技巧:“JDK附带分析器、远程连接进程、跟踪统计、为离线分析创建一个堆转储、JConsole并不是高深莫测的。”AD: 5个命令行分析工具全功能内置分析器,如JConsole和VisualVM的成转载 2011-08-13 12:27:16 · 408 阅读 · 0 评论 -
你不知道的Java秘密1
本文向各位介绍一下Java性能监控小技巧:“JDK附带分析器、远程连接进程、跟踪统计、为离线分析创建一个堆转储、JConsole并不是高深莫测的。”AD: 51CTO给各位读者讲过《Java的8大技术优势》,很多开发者觉得自己懂Java转载 2011-08-13 12:26:40 · 342 阅读 · 0 评论 -
详解JVM工作原理和特点
在我们运行和调试Java程序的时候,经常会提到一个JVM的概念。本文将为大家讲解JVM工作原理和特点,希望对大家有所帮助。AD: JVM工作原理和特点主要是指操作系统装入JVM是通过jdk中Java.exe来完成,通过下面4步来完成JV转载 2011-08-13 12:23:43 · 517 阅读 · 0 评论