- 博客(17)
- 资源 (11)
- 问答 (1)
- 收藏
- 关注
转载 RabbitMQ的几种典型使用场景
RabbitMQ主页:https://www.rabbitmq.com/AMQPAMQP协议是一个高级抽象层消息通信协议,RabbitMQ是AMQP协议的实现。它主要包括以下组件:1.Server(broker): 接受客户端连接,实现AMQP消息队列和路由功能的进程。2.Virtual Host:其实是一个虚拟概念,类似于权限控制组,一个Virtual Host里面可以有若干个Exchange和...
2018-04-30 17:38:24 273
转载 Rabbitmq基本原理
MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列中的消息。RabbitMQ是MQ产品的典型代表,是一款基于AMQP协议可复用的企业消息系统。业务上,可以实现服务提供者和消费者之间的数据解耦,提供高可用性的消息传输机制,在实际生产中应用相当广泛。本文...
2018-04-30 17:19:18 596
原创 对象锁和类锁---模拟实现Hashtable
核心思想:java中的任何对象都是一把锁,有且只有一把钥匙。多个线程必须共享同一把锁才能互斥。普通方法的锁是当前对象this,静态方法的锁跟当前对象没有关系,它的锁是该类的类类型*.class。public class TestSychoronized { static Hashtable<String,String> a = new Hashtable<>(); ...
2018-04-25 22:20:40 799
转载 JVM调优命令-jmap
jmapJVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件。 jmap不仅能生成dump文件,还可以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等。【内存分析】1234567891011121...
2018-04-25 15:58:48 209
转载 jvm 性能调优工具之 jps
概述jps 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。 通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。如果在 linux 中想查看 java 的进程,一般我们都需要 ps -ef | grep java 来获取进程 ID。如果只想获取 Java 程序的进程,可以直接使用 jps 命令来直接查看。jps ...
2018-04-25 15:54:32 464
转载 (入门贴)JVM堆内存相关的启动参数:年轻代、老年代和永久代的内存分配
如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe。JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数。再通过JDK提供的工具的统计结果,进行对比,就比较容易理解这些内存分配的理论知识。运行环境是win7 32位操作系统,JDK1.7.0_60版本。测试代码和JVM启动参数如下:[java] view plain...
2018-04-25 15:01:51 315
转载 “-Xmx1024m -Xms1024m -Xmn512m -Xss256k”——Java运行参数(转)
年轻代 年老代概念 http://jefferent.iteye.com/blog/1123677 JVM的堆的内存, 是通过下面面两个参数控制的 -Xms 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你 -Xmx 是最大堆的大小 当最小堆占满后,会尝试进行GC,如果GC之后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新的对象,那么就会扩展堆,如果-Xmx...
2018-04-25 14:02:30 1731 1
转载 使用无限大小线程池 newCachedThreadPool 可能遇到的问题
看一段测试代码: [java] view plain copypackage com.wenniuwuren.concurrent; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Created by zhuyb on 16/6/16. */ p...
2018-04-18 16:15:10 1311
转载 ExecutorService中submit和execute的区别
Java5 并发学习 在Java5之后,并发线程这块发生了根本的变化,最重要的莫过于新的启动、调度、管理线程的一大堆API了。在Java5以后,通过Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。 一、创建任务 任务就是一个实现了Runnable接口的类。创建的时候实run方法即可。 二、执行任务 ...
2018-04-18 16:11:55 421
转载 Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecutor
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。本文是基础篇,后面会分享下线程池一些高级功能。1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() { @Overridepublic void run() {// TODO Auto-generated method stub...
2018-04-18 16:08:06 193 3
转载 Java大白话讲解享元模式(Flyweight)
一、概念一个系统中若存在大量相同或相似的对象(比如26个英文字母),则只共享一份就可以了(并非单例模式),没有必要为每份相同的东西还都单独实例化出一个对象,浪费性能。(有点缓存的意思)二、例如比如26个英文字母,一个文本中有10MB的26个英文字母,那你解析出来的时候需要为每一个字母都创建一个对象的话(10M那么大,对象数不可直视。。。),内存肯定扛不住。所以可以用享元模式,只创建26个对象进行共...
2018-04-13 08:50:53 1786
转载 如何将一个类改造为线程安全-例如TreeMap
对这个问题,好多人可能第一反应就是使用syschronized关键字,诚然应用这个关键字可以解决问题(仍是有条件线程安全的且低效的),但是在无意中看java源码时,看到了另一种更高效的方式—采用lock的方式。在ReentrantReadWriteLock的源码注释中,作者写了这样一段代码:class RWDictionary { private final Map<String, ...
2018-04-11 22:20:53 5872
原创 简单测试序列化前后对象大小
public static void main(String[] args) throws IOException, ClassNotFoundException { //--ObjectInputStream/ObjectOutputStream--对象输入/输出流 int a = 3; //程序内部创建一个byte型别数组的缓冲区,然后利用Byt...
2018-04-11 14:01:00 3066
转载 request接收表单提交中文参数乱码问题
request接收表单提交中文参数乱码问题3.1、以POST方式提交表单中文参数的乱码问题例如有如下的form表单页面: 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transit...
2018-04-09 23:10:27 329
原创 简单的servlet测试案例
简单的servlet测试案例:包含post,get方式请求和ajax访问。前端(\WebContent\chap01\demo01.html):<!DOCTYPE html><html><head><meta charset="UTF-8"><!-- <meta charset="gbk"> --&g
2018-04-08 22:52:48 2277
转载 ArrayList中的数组为什么被transient修饰
Java中的ArrayList底层实现机制是动态扩容数组,最近在看ArrayList源码时发现数组被定义为transient,源代码如下[java] view plain copyprivate transient Object[] elementData; 当时有些想不通,为什么最为重要的数组元素要定义为transient?难道不希望elementData被序列化?后来查阅了一些资料了解到,假...
2018-04-04 10:15:15 1816
转载 System.arraycopy()
在查看arrayList源码时会遇到一个native方法System.arraycopy(),下文对其解析:在System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。其函数原型是:public static void (Object src, int srcPos, ...
2018-04-03 10:21:52 294
slf4j jar包
2018-07-22
KeyStore Explorer
2018-04-02
hibernate-distribution-3.3.2.GA-dist.zip
2013-10-11
hibernate-annotations-3.4.0.GA.zip
2013-10-11
sun/security/x509/X509CertImpl
2017-01-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人