
java
zou song
这个作者很懒,什么都没留下…
展开
-
alibaba arthas
https://github.com/alibaba/arthas/blob/master/README_CN.md原创 2019-03-11 11:41:34 · 166 阅读 · 0 评论 -
Spring配置事务的五种方式
转自:http://my.oschina.net/xianggao/blog/84425?fromerr=NA3INY1G#navbar-headerSpring配置文件中关于事务配置总是由三个组成部分,分别是 DataSource 、TransactionManager 和 代理机制 这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。DataSource、Transaction转载 2016-06-27 12:16:52 · 275 阅读 · 0 评论 -
JVM 堆内存设置原理
转自:http://blog.youkuaiyun.com/sivyer123/article/details/17139443堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。He转载 2016-02-29 22:49:27 · 309 阅读 · 0 评论 -
聊聊并发(十)生产者消费者模式
聊聊并发(十)生产者消费者模式本文首发于InfoQ 作者:方腾飞 校对:张龙在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。为什么要使用生产者和消费者模式在线程世界里,生产者就是生产数据的线程,消费者就是消费数据的线程。在多线程开发当中,如果生产者处理速度很快,而消费者处理速转载 2016-03-24 17:26:24 · 331 阅读 · 0 评论 -
聊聊并发-Java中的Copy-On-Write容器
聊聊并发-Java中的Copy-On-Write容器Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyO转载 2016-03-24 17:24:56 · 294 阅读 · 0 评论 -
聊聊并发(八)——Fork/Join框架介绍
聊聊并发(八)——Fork/Join框架介绍本文首发于InfoQ1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执转载 2016-03-24 17:23:28 · 282 阅读 · 0 评论 -
聊聊并发(七)——Java中的阻塞队列
聊聊并发(七)——Java中的阻塞队列原文首发于InfoQ1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存转载 2016-03-24 17:22:08 · 316 阅读 · 0 评论 -
聊聊并发(六)ConcurrentLinkedQueue的实现原理分析
聊聊并发(六)ConcurrentLinkedQueue的实现原理分析本文是作者原创,首发于InfoQ:http://www.infoq.com/cn/articles/ConcurrentLinkedQueue1. 引言在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法转载 2016-03-24 17:20:58 · 483 阅读 · 0 评论 -
聊聊并发(五)原子操作的实现原理
聊聊并发(五)原子操作的实现原理本文属于作者原创,原文发表于InfoQ:http://www.infoq.com/cn/articles/atomic-operation1 引言原子(atom)本意是“不能被进一步分割的最小粒子”,而原子操作(atomic operation)意为”不可被中断的一个或一系列操作” 。在多处理器上实现原子操作就变得有点复杂。本文让我们一转载 2016-03-24 17:19:59 · 384 阅读 · 0 评论 -
聊聊并发(四)深入分析ConcurrentHashMap
聊聊并发(四)深入分析ConcurrentHashMap本文是作者原创,发表于InfoQ:http://www.infoq.com/cn/articles/ConcurrentHashMap术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值转载 2016-03-24 17:17:35 · 342 阅读 · 0 评论 -
聊聊并发(三)Java线程池的分析和使用
聊聊并发(三)Java线程池的分析和使用作者:方腾飞 原文发表于infoQ:http://www.infoq.com/cn/articles/java-threadPool1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:转载 2016-03-24 17:16:29 · 282 阅读 · 0 评论 -
聊聊并发(二)——Java SE1.6中的Synchronized
1 引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。2 术语定义术语相关厂商内容转载 2016-03-24 17:12:11 · 287 阅读 · 0 评论 -
聊聊并发(一)——深入分析Volatile的实现原理
转自:http://www.infoq.com/cn/articles/ftf-java-volatile/引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比syn转载 2016-03-24 17:06:56 · 265 阅读 · 0 评论 -
MemCache 详细解读
转自:http://www.cnblogs.com/xrq730/p/4948707.htmlMemCache是什么MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比转载 2016-03-13 13:53:51 · 279 阅读 · 0 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized转载 2016-02-27 16:28:57 · 326 阅读 · 0 评论 -
JDK1.8 HashMap源码分析
JDK1.8 HashMap源码分析一、HashMap概述在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减转载 2016-02-27 09:13:51 · 395 阅读 · 0 评论 -
深入理解JVM之JVM内存区域详解
转自:http://blog.youkuaiyun.com/lizhongkaide/article/details/50701052一、 JVM概述 Java虚拟机是整个Java平台的基石,是Java技术用以实现硬件无关与操作系统无关的关键部分,是Java语言生成出极小体积的编译代码的运行平台,是保障用户机器免于恶意代码损害的保护屏障。JVM是一种利用软件方法实现转载 2016-02-27 09:12:29 · 364 阅读 · 0 评论 -
深入理解JVM之垃圾回收详解
转自:http://blog.youkuaiyun.com/lizhongkaide/article/details/50738629一、 垃圾收集的意义在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集意味着程序不再需要的对转载 2016-02-27 09:10:36 · 302 阅读 · 0 评论 -
Java中的注解是如何工作的?
自Java5.0版本引入注解之后,它就成为了Java平台中非常重要的一部分。开发过程中,我们也时常在应用代码中会看到诸如@Override,@Deprecated这样的注解。这篇文章中,我将向大家讲述到底什么是注解,为什么要引入注解,注解是如何工作的,如何编写自定义的注解(通过例子),什么情况下可以使用注解以及最新注解和ADF(应用开发框架)。这会花点儿时间,所以为自己准备一杯咖啡,让我们来进入注转载 2016-08-23 21:08:46 · 223 阅读 · 0 评论 -
Java中动态加载properties文件,而不需要重启应用的解决方法
在Java项目中,如果需要使用.properties类型的文件作为某些配置信息存放介质的时候,一般都是将.properties文件放在src目录下,代码大部分都是这样写的:[java] view plain copyProperties prop = new Properties(); InputStream is = CommonUt转载 2016-09-05 20:31:50 · 565 阅读 · 0 评论 -
Java对象拷贝(BeanUtil.copyProperties 方法)
一、简介:BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。二、用法:如果你有两个具有很多相同属性的JavaBean,一个很常见的情况就是St...转载 2019-02-28 10:30:47 · 2098 阅读 · 0 评论 -
(转)Java Applet与Java Application的区别
在JAVA语言中,能够独立运行的程序称为Java应用程序(Application)。Java语言还有另外一种程序——Applet程序。Applet程序(也称Java小程序)是运行于各种网页文件中,用于增强网页的人机交互、动画显示、声音播放等功能的程序。 Java Applet和Java Application在结构方面的主要区别表现在: (1)运行方式不同。Java ...原创 2014-03-01 14:11:46 · 97 阅读 · 0 评论 -
How to be a professional distributed system engineer ?
https://github.com/apache/rocketmq/issues/494原创 2018-10-18 14:44:59 · 174 阅读 · 0 评论 -
编码规范
对于个人来说,技术很重要,但是对于工作来说,编码的习惯比技术更加主要。工作中你面试的大部分技术都不需要用到的。工作中,因为你的编码习惯不好,写的代码质量差,代码冗余重复多,很多无关的代码和业务代码搅在一起,导致了你疲于奔命应付各种问题。所以我作为SE,不管接手任何项目组,第一步就是制定代码框架,制定项目组的开发规范,把代码量减下去。事实上证明,这一步之后,大家的代码量能下去最少1/3,后台的问...转载 2018-09-05 15:20:06 · 143 阅读 · 0 评论 -
注解@PostConstruct
转自:https://blog.youkuaiyun.com/wo541075754/article/details/52174900简介Java EE5 引入了@PostConstruct和@PreDestroy这两个作用于Servlet生命周期的注解,实现Bean初始化之前和销毁之前的自定义操作。此文主要说明@PostConstruct。API使用说明以下为@PostConstruct的API使用说明:P...转载 2018-05-28 13:41:00 · 450 阅读 · 0 评论 -
java中的Static class
http://www.cnblogs.com/kissazi2/p/3971065.htmlJava中的类可以是static吗?答案是可以。在java中我们可以有静态实例变量、静态方法、静态块。类也可以是静态的。 java允许我们在一个类里面定义静态类。比如内部类(nested class)。把nested class封闭起来的类叫外部类。在java中,我们不能用static修饰顶级类(t...转载 2018-05-06 16:22:41 · 166 阅读 · 0 评论 -
设计模式总结篇系列:单例模式(SingleTon)
转自:https://www.cnblogs.com/lwbqqyumidi/p/3738059.html在Java设计模式中,单例模式相对来说算是比较简单的一种构建模式。适用的场景在于:对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象。如Android中常见的Application对象。通过单例模式,自行实例化并向这个系统提供这个单一实例的访问方法。根据此单一实例产生的时机不同(当...转载 2018-02-27 22:53:49 · 199 阅读 · 0 评论 -
优秀博客一览
1、http://www.micmiu.com/enterprise-app/sso/sso-cas-ldap-auth/原创 2016-03-09 15:08:30 · 534 阅读 · 0 评论 -
内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别
内存泄漏指你用malloc或new申请了一块内存,但是没有通过free或delete将内存释放,导致这块内存一直处于占用状态内存溢出指你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,就是溢出要点内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件转载 2017-12-04 22:01:38 · 433 阅读 · 0 评论 -
Java陷阱之assert关键字
Java陷阱之assert关键字 一、概述 在C和C++语言中都有assert关键,表示断言。在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。 二、语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关键字导致错误,Java在执行的时候默认是不启动断言检查的(这个时候转载 2017-12-03 15:15:43 · 275 阅读 · 0 评论 -
几种简单的负载均衡算法及其Java代码实现
什么是负载均衡负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题转载 2017-03-14 23:16:31 · 248 阅读 · 0 评论 -
log4j输出多个自定义日志文件,动态配置路径
1. log4j输出多个自定义日志文件 log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。 先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志: log4j.ro转载 2017-03-05 22:12:41 · 263 阅读 · 0 评论 -
Java中keySet()返回值的排序问题
上回说到,由于对数据进行处理的时候是按照乱序一行一行的处理,导致并行线程各自占据了一部分数据,谁也不肯释放,从而发生死锁。为什么会乱序,是因为取得数据行主键的时候,使用了HashMap.keySet()方法,而这个方法返回的Set结果,里面的数据是乱序排放的。JavaDoc里面没有详细地解释,所以用代码进行了一下尝试import java.sql.Timestamp;i转载 2017-03-05 22:10:16 · 537 阅读 · 0 评论 -
Java解惑精炼版(一)
1、找零时刻(货币计算问题) 问题简述:Tom现有$2.0,购买了$1.10美元的货物,店主应该找他多少零钱?1 public class Change {2 public static void main(String[] args) {3 System.out.println(2.00-1.10);//0.89999999999999994转载 2017-03-05 22:05:14 · 282 阅读 · 0 评论 -
spring通配符归纳
转自:开涛4.4.1 使用路径通配符加载Resource 前面介绍的资源路径都是非常简单的一个路径匹配一个资源,Spring还提供了一种更强大的Ant模式通配符匹配,从能一个路径匹配一批资源。 Ant路径通配符支持“?”、“*”、“**”,注意通配符匹配不包括目录分隔符“/”: “?”:匹配一个字转载 2016-12-27 22:23:17 · 2029 阅读 · 0 评论 -
负载均衡的基本算法
负载均衡的基本算法,主要有以下几种(参考F5产品):随机:负载均衡方法随机的把负载分配到各个可用的服务器上,通过随机数生成算法选取一个服务器,然后把连接发送给它。虽然许多均衡产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重。轮询:轮询算法按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有的服务器。轮询算法在大多数情况下都工作的不错,但是如果负转载 2016-09-05 20:54:38 · 303 阅读 · 0 评论 -
WebServices简介
原文: http://wenku.baidu.com/view/f87b55f19e31433239689314.htmlWebServices简介先给出一个概念 SOA ,即Service Oriented Architecture ,中文一般理解为面向服务的架构,既然说是一种架构的话,所以一般认为 SOA 是包含了运行环境,编程模型,架构风格和相转载 2016-03-12 10:47:54 · 586 阅读 · 0 评论 -
HashMap与ConcurrentHashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable转载 2016-03-12 10:18:41 · 292 阅读 · 0 评论 -
高并发程序设计入门
转自:http://blog.youkuaiyun.com/johnstrive/article/details/50667557说在前面本文绝大部分参考《JAVA高并发程序设计》,类似读书笔记和扩展。走入并行世界概念同步(synchronous)与异步(asynchronous)同步和异步通常来形容一次方法调用。同步方法调用一旦开始,调用者必须等到方法调用返回转载 2016-02-26 22:03:22 · 695 阅读 · 0 评论 -
Web 服务编程,REST 与 SOAP
转自:http://www.ibm.com/developerworks/cn/webservices/0907_rest_soap/Web 服务编程,REST 与 SOAP为什么选择 RESTREST 架构风格是一种全新的针对 Web 应用的开发风格,与 RPC 风格的 Web 服务(关于 RPC 风格的 Web 服务描述,请参见 Wikipeida )一转载 2016-02-01 13:39:45 · 367 阅读 · 0 评论