Java
文章平均质量分 68
peterchan88
这个作者很懒,什么都没留下…
展开
-
三步曲学Java socket编程
第一步 充分理解Socket 1.什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使转载 2014-09-07 16:46:38 · 353 阅读 · 0 评论 -
java自动内存管理机制
java自动内存管理1.运行时的数据区域 java程序在运行的过程中把它所管理的内存划分为若干个区域分别是: 1. 方法区 2. 虚拟机栈 3. 本地方法栈 4,堆 5.程序计算器2.程序计算器 程序计数器是一块小的内存空间,主要用来记录所执行字节码的行号。3.java虚拟机栈原创 2016-10-31 10:14:30 · 1309 阅读 · 0 评论 -
Ubuntu环境下搭建java环境(配置JDK)
1、源码包准备:首先到官网下载jdk,http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html,我下载jdk-8u25-Linux-x64.tar.gz,下载到主目录2、解压源码包通过终端在/usr/local目录下新建java文件夹,命令行:[ht转载 2016-11-27 13:18:24 · 254 阅读 · 0 评论 -
java线程池
自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池、Struts1.3的对象池等等,池的最终目的都是节约资源,以更小的开销做更多的事情,从而提高性能。 我们的web项目都是部署在服务器上,浏览器端的每一个request就是一个线程,那转载 2016-11-27 15:52:55 · 199 阅读 · 0 评论 -
ExecutorService中submit和execute的区别
三个区别:1、接收的参数不一样2、submit有返回值,而execute没有Method submit extends base method Executor.execute by creating and returning a Future that can be used to cancel execution and/or wait for completion. 用到返转载 2016-11-27 22:03:27 · 421 阅读 · 0 评论 -
Callable和Future
Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,下面来看一个简单的例子:public class CallableAndFuture { public stati转载 2016-11-28 10:08:32 · 177 阅读 · 0 评论 -
锁对象Lock-同步问题更完美的处理方式
Lock是Java.util.concurrent.locks包下的接口,Lock 实现提供了比使用synchronized 方法和语句可获得的更广泛的锁定操作,它能以更优雅的方式处理线程同步问题,我们拿Java线程(二)中的一个例子简单的实现一下和sychronized一样的效果,代码如下:[java] view plain copy print?转载 2016-11-28 14:24:12 · 316 阅读 · 0 评论 -
Condition-线程通信更高效的方式
那么引入本篇的主角,Condition,Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的对象,以便通过将这些对象与任意 Lock 实现组合使用,为每个对象提供多个等待 set (wait-set)。其中,Lock 替代了 synchronized 方法和语句的使用,Condition 替代了 Object 监视器方法的使用。下面将之转载 2016-11-28 15:41:26 · 220 阅读 · 0 评论 -
Java对象数组深拷贝
Java对象数组深复制原创 2017-07-16 19:57:10 · 3604 阅读 · 0 评论 -
java面试题(一)
问题1:如果main方法被声明为private会怎样?答案:能正常编译,但运行的时候会提示”main方法不是public的”。问题2:Java里的传引用和传值的区别是什么?传引用是指传递的是地址而不是值本身,传值则是传递值的一份拷贝。问题3:如果要重写一个对象的equals方法,还要考虑什么?hashCode。问题4:Java的”一次编写,处转载 2017-08-18 09:28:49 · 212 阅读 · 0 评论 -
面向对象三大基本特性,五大基本原则
透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有转载 2017-08-18 12:34:14 · 198 阅读 · 0 评论 -
java中的匿名内部类总结
匿名内部类也就是没有名字的内部类正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口 实例1:不使用匿名内部类来实现抽象方法12345678910111213转载 2017-08-23 10:45:11 · 202 阅读 · 0 评论 -
Java中为什么要使用内部类
一、前言关于Java的内部类,要说的东西实在太多,这篇博文中也无法一一具体说到,所以就挑些重点的讲。关于内部类的使用,你可能会疑问,为什么我们要使用内部类?为了回答这个问题,你需要知道一些关于内部类的重点。所以本篇文章首先介绍了一些关于内部类的一些与众不同的地方,后面再解答为什么我们要使用内部类这个问题。各位看官,文章稍微有点长,深吸一口气。来,我们开始吧!二、内部类定义转载 2017-08-23 13:51:43 · 802 阅读 · 0 评论 -
java引用
java引用1. 引用的定义: 如果reference类型的数据在存储的数值代表了另一块内存的起始地址,就称这块内存代表着一个引用。2. 引用分类 在jdk1.2之后,引用分为了4种,分别是强引用(Strong Reference),软引用(Soft Reference),虚引用(Phantom Reference),弱引用(Weak Reference) 2.1 强引用原创 2016-11-01 10:43:11 · 511 阅读 · 0 评论 -
gc状态查询(java)
Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。jstat工具特别强大,有众多转载 2016-11-04 16:25:51 · 6707 阅读 · 0 评论 -
虚拟机类加载机制
虚拟机类加载机制1.虚拟机的类加载机制 虚拟机将描述类的数据从class文件加载到内存当中去,并对数据进行校验,转换解析和初始化,最终形成了可以被虚拟机执行的java类型,这就是虚拟机的类加载机制2.类的生命周期 一个java类的完整的生命周期会经历加载、连接、初始化、使用、和卸载五个阶段,当然也有在加载或者连接之后没有被初始化就直接被使用的情况,其中链接的原创 2016-11-23 18:12:26 · 225 阅读 · 0 评论 -
Java的native方法
一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。 "A nati转载 2016-10-30 17:11:35 · 256 阅读 · 0 评论 -
Fork/Join-Java并行计算框架
并行计算在处处都有大数据的今天已经不是一个新鲜的词汇了,现在已经有单机多核甚至多机集群并行计算,注意,这里说的是并行,而不是并发。严格的将,并行是指系统内有多个任务同时执行,而并发是指系统内有多个任务同时存在,不同的任务按时间分片的方式切换执行,由于切换的时间很短,给人的感觉好像是在同时执行。 Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题转载 2016-11-28 19:34:53 · 354 阅读 · 0 评论 -
阻塞队列BlockingQueue
BlockingQueue最终会有四种状况,抛出异常、返回特殊值、阻塞、超时,下表总结了这些方法: 抛出异常特殊值阻塞超时插入add(e)offer(e)put(e)offer(e, time, unit)移除remove()poll()take()poll(time, unit)检查e转载 2016-11-28 20:05:36 · 246 阅读 · 0 评论 -
java对象存活判断
垃圾收集器与内存分配策略原创 2016-11-01 09:50:32 · 1245 阅读 · 0 评论 -
java垃圾回收算法以及垃圾收集器
java垃圾回收算法以及垃圾收集器1. java垃圾回收算法1.1标记-清除算法 算法分为了标记和清除两个阶段,标记:利用引用计数法和可达性分析算法(算法简介:引用计数法和可达性算法介绍)标记出需要清除的对象。然后对这些对象进行回收。 ps:标记-清除算法的主要不足之处是:1.效率问题 ,标价和清除的效率都并不高。2.空间问题,标记清除之后会产生大量原创 2016-11-02 10:56:48 · 483 阅读 · 0 评论 -
Java Thread.yield理解
前言: 前几天复习了一下多线程,发现有许多网上讲的都很抽象,所以,自己把网上的一些案例总结了一下!一. Thread.yield( )方法:使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。cpu会从众多的可执行态里选择,也就是说,当前也就是刚刚的那个线程还是有可能会被再次执行到的,并不是说一定会执行其他线程而该线程在下一次中不会执行到了转载 2016-11-25 19:23:47 · 411 阅读 · 0 评论 -
线程协作(生产者与消费者问题)
上一篇讲述了线程的互斥(同步),但是在很多情况下,仅仅同步是不够的,还需要线程与线程协作(通信),生产者/消费者问题是一个经典的线程同步以及通信的案例。该问题描述了两个共享固定大小缓冲区的线程,即所谓的“生产者”和“消费者”在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加转载 2016-11-25 18:34:00 · 349 阅读 · 0 评论 -
volatile的一些理解
找了很多资料,包括《Java并发编程实战》,综合一下各家的说法就是:volatile让变量每次在使用的时候,都从主存中取。而不是从各个线程的“工作内存”。volatile具有synchronized关键字的“可见性”,但是没有synchronized关键字的“并发正确性”,也就是说不保证线程执行的有序性。也就是说,volatile变量对于每次使用,线程都能得到当前volat转载 2016-11-25 16:23:16 · 206 阅读 · 0 评论 -
Java多线程(一)--线程同步
要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现。拿上篇博文中的例子来说明,在多个线程之间共享了Count类的一个对象,这个对象是被创建在主内存(堆内存)中,每个线程都有自己的工作内存(线程栈),工作内存存储了主内存Count对象的一个副本,当线程操作Count对象时,首先从主内存复制Count对象到工作转载 2016-11-25 15:57:52 · 287 阅读 · 0 评论 -
虚拟机字节码执行引擎
虚拟机字节码执行引擎1.概述 执行引擎是java虚拟机最核心的组成部分之一,虚拟机区别于物理机的一点是,物理机的执行引擎是直接建立于硬件,处理器和操作系统的层面上的,但是虚拟机的执行引擎是由自己实现的,因此可以自己去定义指令集和执行引擎的结构体系。java虚拟机在执行Java代码的时候有两种方式:解析执行和编译执行。2.栈帧结构 栈帧是用于支持虚拟机进行方法调用原创 2016-11-24 19:31:16 · 257 阅读 · 0 评论 -
String使用equals和==比较的区别
"=="操作符的作用1、用于基本数据类型的比较2、判断引用是否指向堆内存的同一块地址。equals所在位置:在Object类当中,而Object是所有类的父类,包含在jdk里面,但并不适合绝大多数场景,通常需要重写public boolean equals(Object obj) { return (this == obj); }转载 2017-07-11 19:48:13 · 218 阅读 · 0 评论