![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
帅明
这个作者很懒,什么都没留下…
展开
-
个人总结Java面试题(一)
关于类的加载的面试题,这个题几乎每个公司的面试题都会原创 2014-06-19 00:41:36 · 513 阅读 · 0 评论 -
有状态bean和无状态bean是在说什么
一个类的内部状态创建后,在整个生命期间都不会发生变化时,就是不变类。这种使用不变类的做法叫做不变模式。不变模式有两种形式:一种是弱不变模式,另一种是强不变模式。弱不变模式:一个类的实例的状态是不可变化的,但是这个类的引用的实例具有可能会变化的状态。这样的类符合弱不变模式的定义。要实现弱不变模式,一个类必须满足如下条件: 第一,对象没有任何方法会修改对象的状态,转载 2016-04-08 10:15:02 · 945 阅读 · 0 评论 -
深度解析Java8 – AbstractQueuedSynchronizer的实现分析(下)
本文首发在infoQ :http://www.infoq.com/cn/articles/java8-abstractqueuedsynchronizer,感谢作者liuinsect的分享。前言: 经过本系列的上半部分JDK1.8 AbstractQueuedSynchronizer的实现分析(上)的解读,相信很多读者已经对AbstractQueuedSynchronize转载 2016-03-28 16:24:40 · 339 阅读 · 0 评论 -
nginx+tomcat7+memcached服务架构实现session共享
一、Nginx安装 详见前文:http://www.cnblogs.com/yixiwenwen/p/3574097.html二、memcached安装和启动 详见前文:http://www.cnblogs.com/yixiwenwen/p/3574137.html三、配置Nginx实现tomcat服务的负载均衡,利用memcached服务实现session共享原创 2016-04-13 15:23:26 · 449 阅读 · 0 评论 -
happens-before俗解
学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。synchronized、大部分锁,众所周知的一个功能就是使多个线程互斥/串行的(共享锁允许多个线程同时访问,如读锁)访问临界区,但他们的第二个功能 —— 保证变量的可见性 —— 常被遗忘转载 2016-03-03 14:51:25 · 316 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(一.内存模型的相关概念)
大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存转载 2016-04-20 17:43:41 · 360 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(二.并发编程中的三个概念)
在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。我们先看具体看一下这三个概念:1.原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的例子就是银行账户转账问题: 比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。转载 2016-04-21 17:23:27 · 446 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(三.Java内存模型)
在前面谈到了一些关于内存模型以及并发编程中可能会出现的一些问题。下面我们来看一下Java内存模型,研究一下Java内存模型为我们提供了哪些保证以及在java中提供了哪些方法和机制来让我们在进行多线程编程时能够保证程序执行的正确性。 在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程转载 2016-04-21 17:28:17 · 367 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(四.深入剖析volatile关键字)
在前面讲述了很多东西,其实都是为讲述volatile关键字作铺垫,那么接下来我们就进入主题。1.volatile关键字的两层语义 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 2)禁止进行指令转载 2016-04-22 13:46:57 · 688 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(五.使用volatile关键字的场景)
synchronized关键字是防止多个线程同时执行一段代码,那么就会很影响程序执行效率,而volatile关键字在某些情况下性能要优于synchronized,但是要注意volatile关键字是无法替代synchronized关键字的,因为volatile关键字无法保证操作的原子性。通常来说,使用volatile必须具备以下2个条件: 1)对变量的写操作不依赖于当前值 2)该转载 2016-04-22 15:32:21 · 1000 阅读 · 0 评论 -
JDK中System.getProperty()方法介绍
该方法用于获得jdk现在运行的系统的一些信息,具体使用如下:java.versionJava 运行时环境版本java.vendorJava 运行时环境供应商java.vendor.urlJava 供应商的 URLjava.homeJav原创 2016-04-24 17:02:59 · 783 阅读 · 1 评论 -
FutureTask 源码解析
版权声明:转载请注明出处。http://www.liuinsect.com/2014/02/17/FutureTask 感谢作者liuinsect。站在使用者的角度,future是一个经常在多线程环境下使用的Runnable,使用它的好处有两个:1. 线程执行结果带有返回值2. 提供了一个线程超时的功能,超过超时时间抛出异常后返回。那,怎么实现future这种超时控制呢?来转载 2016-03-15 15:48:27 · 336 阅读 · 0 评论 -
深度解析Java8 – AbstractQueuedSynchronizer的实现分析(上)
本文转载自:http://www.liuinsect.com/2014/08/07/jdk1-8-abstractqueuedsynchronizer/,感谢作者liuinsect的分享前言:Java中的FutureTask作为可异步执行任务并可获取执行结果而被大家所熟知,通常可以使用future.get()来获取线程的执行结果,在线程执行结束之前,get方法会一直阻塞状态转载 2016-03-23 16:02:05 · 337 阅读 · 0 评论 -
Java synchronize method与synchronize block的不同
在学习并发安全编程时,无意发现了一遍关于同步的文章,现记录下来。package others;public class CP { private int i = 0; public synchronized int synchronizedMethodGet() { return i; } public int synchronizedBlockGet()原创 2016-03-10 16:28:26 · 716 阅读 · 0 评论 -
Java面试题总结(二)
public class ForTest { private static int j = 0; private static boolean methodB(int k) { j += k; return true; } private static void methodA(int i) { boolean b; b = i < 10 | methodB(4);原创 2014-06-20 15:13:40 · 788 阅读 · 0 评论 -
JVM中各内存区域解释,以及变量的作用域解释
JVM内存分四种:1、栈区(stacksegment)—由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源;2、堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收;3、静态区(datasegment)—存放全局变量,静态变量和字符串常量,不释放翻译 2015-01-19 16:50:51 · 972 阅读 · 0 评论 -
你不知道的JAVA
System.getProperty("line.separator");//获取该系统下的换行分隔符/**下边列出其他类似的方法:System.out.println("java版本号:" + System.getProperty("java.version")); // java版本号System.out.println("Java提供商名称:" + System.getPropert原创 2016-01-12 11:53:14 · 232 阅读 · 0 评论 -
阻塞与非阻塞,同步与异步的理解
“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者转载 2016-02-02 11:11:30 · 286 阅读 · 0 评论 -
使用dom4j将xml文件转换成bean
package com.util;import java.lang.reflect.Field;import java.util.HashMap;import java.util.Map;import org.apache.commons.lang3.StringUtils;import org.dom4j.Document;import org.dom4j.DocumentExc原创 2016-02-03 13:32:59 · 1111 阅读 · 0 评论 -
Java反射与内省
1.什么是反射反射就是在运行状态把 Java 类中的各种成分映射成相应相应的 Java 类,可以动态得获取所有的属性以及动态调用任意一个方法。1).一段java代码在程序的运行期间会经历三个阶段:source-->class-->runtime2).Class对象在java中用一个Class对象来表示一个java类的class阶段Class对象封装了一个java类定义的成员变量原创 2016-02-18 11:53:30 · 286 阅读 · 0 评论 -
怎么理解Condition
本文章转自:http://www.liuinsect.com/2014/01/27/how_to_understand_condition/,感谢作者liuinsect。在java.util.concurrent包中,有两个很特殊的工具类,Condition和ReentrantLock,使用过的人都知道,ReentrantLock(重入锁)是jdk的concurrent包提供的一种独占转载 2016-03-17 15:01:11 · 374 阅读 · 0 评论 -
正则表达式实战
先推荐一个正则学习的地址,这个博客讲的非常清晰,http://www.bejson.com/knownjson/regexJiaocheng/。我写的这篇主要是为了记录在工作中非常实用的一些正则表达式。先简单介绍一下常用的一些字符含义:^ 正则匹配的开始$ 正则匹配的结尾* 匹配出现0次或多次+ 匹配出现1此或多次? 匹配出现0此或多次x|y 匹配x或y{n} 匹配原创 2016-02-22 16:51:02 · 355 阅读 · 0 评论 -
JVM系列之JVM体系(一)
前言、为什么要学习了解Java虚拟机1.我们需要更加清楚的了解Java底层是如何运作的,有利于我们更深刻的学习好Java。2.对我们调试错误提供很宝贵的经验。3.这是合格的Java程序必须要了解的内容。基于此,笔者打算出一个Java虚拟机的系列,加深自己对知识点的理解,同时也方便各位有需要的园友。一、Java虚拟机的定义Java虚拟机(Java Vi转载 2016-02-23 10:47:07 · 320 阅读 · 0 评论 -
JAVA方法和本地方法
JAVA中有两种方法:JAVA方法和本地方法JAVA方法是由JAVA编写的,编译成字节码,存储在class文件中本地方法是由其它语言编写的,编译成和处理器相关的机器代码本地方法保存在动态链接库中,即.dll(windows系统)文件中,格式是各个平台专有的JAVA方法是与平台无关的,但是本地方法不是转载 2016-02-23 14:10:11 · 331 阅读 · 0 评论 -
@ResponseBody处理Bean中属性值为空
在Bean的类上加上如下注解即可。@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)转载 2017-03-14 16:45:30 · 616 阅读 · 0 评论