![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 75
两天
这个作者很懒,什么都没留下…
展开
-
05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
https://www.jianshu.com/p/9517c90db0d4导语没有什么是不可以改变的,换个角度看世界,截然不同!IoC相关的基本内容告一段落,本次介绍Spring的第二个特性,AOP,面向切面编程,术语听起来比较不容易理解,没关系,一切尽在实例中,让我们看一个简单的实例,就能明白。实例项目工程目录结构和代码获取地址获取地址(版本Log将会注明每一个版本...转载 2019-07-25 14:02:16 · 611 阅读 · 0 评论 -
Java性能调优:利用JMC分析性能
Java性能调优作为大型分布式系统提供高性能服务的必修课,其重要性不言而喻。好的分析工具能起到事半功倍的效果,利用分析利器JMC、JFR,可以实现性能问题的准确定位。本文主要阐述如何利用JMC分析系统性能JMC:Java Mission ControlJFR:Java Flight RecorderJMC打开性能日志后,主要包括7部分性能报告,分别是一般信息、内存、...转载 2019-05-24 09:48:42 · 205 阅读 · 0 评论 -
Java 性能分析工具 , 第 3 部分: Java Mission Control
引言本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Java 任务控制器的时候提供帮助。第一篇:操作系统工具,第二篇:Java 内置监控工具。JMC 是在 JAVA 7u40 发布中加入的性能监控工具。使用过 JDK 6 中 JRockit JVM 的...转载 2019-05-24 09:48:06 · 282 阅读 · 0 评论 -
Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具。在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身。在 JDK 中有许多内置的工具,其中包括:jcmd:打印一个 Java 进程的类,线程以及虚拟机信息。适合用在脚本中。使用 jcmd - h 来查看使用方法。 jconsole:提供 JVM 活动的图形化展示,包括线程使...转载 2019-05-24 09:46:36 · 141 阅读 · 0 评论 -
Java 性能分析工具 , 第 1 部分 操作系统工具
引言性能分析的前提是将应用程序内部的运行状况以及应用运行环境的状况以一种可视化的方式更加直接的展现出来,如何来达到这种可视化的展示呢?我们需要配合使用操作系统中集成的程序监控工具和 Java 中内置的监控分析工具来进行 Java 程序的性能分析。本文为系列文章,共三篇分别介绍这几类工具。在本文中将介绍操作系统中的性能监控工具。操作系统中的程序性能监控工具并非只针对于 Java 程序,适用于...转载 2019-05-24 09:46:01 · 153 阅读 · 0 评论 -
Maven 插件编写 之 Mojo
1.MavenMaven 作为一个优秀的项目管理工具,其插件机制为其功能扩展提供了非常大的便捷性。虽然说大多数情况下,我们可能不太会自己去编写 Maven 插件,但不排除在某些特殊的情况下,我们需要去完成一个自己的插件,来协助我们处理某些比较通用的事情。2.Maven 插件的命名规范一般来说,我们会将自己的插件命名为<myplugin>-maven-plugin,而不推...转载 2019-05-28 14:15:33 · 702 阅读 · 0 评论 -
第03课:观察者模式
3.1 课程概述观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。1. 发布 — 订阅在首篇导读中介绍了设计模式的分类,而观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。观察者模式有一个别名叫 “ 订阅 — 发布模式 ” 。报纸大家都订过吧,当你订阅了一份报纸,每天都会有...转载 2019-05-06 14:42:34 · 158 阅读 · 0 评论 -
【java】Observer和Observable详解
转载请标明出处:http://blog.csdn.net/u012250875/article/details/777478781.必要性1.1 观察者模式是oo设计中经常用到的模式之一,大家在解决实际需求时,观察者模式往往都会用到,而javase中已经提供了Observer接口和Observable类让你简单快速的实现观察者模式,因此有必要去了解Observer和Observable;...转载 2019-05-06 14:38:49 · 260 阅读 · 0 评论 -
消息中间件部署及比较:rabbitMQ、activeMQ、zeroMQ、rocketMQ、Kafka、redis
一发一存一消费,没有最好的消息队列中间件(简称消息中间件),只有最合适的消息中间件。消息队列常用的使用场景:非实时性:当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。主要解决了应用耦合、异步处理、流量削锋等问题。 应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败;(如:订单->库存) 异步处理:多应用对消息队列...转载 2019-05-05 12:08:37 · 205 阅读 · 0 评论 -
ActiveMQ · 基础篇
过了个春节,回到公司的成小胖变成了成大胖。但是你们千万别以为他那个大肚子里面装的都是肥肉,里面的墨水也多了不少嘞,毕竟成小胖利用春节的半个月时间专心学习并研究了 ActiveMQ,嘿嘿……这不,为了检验下自己的学习成果,上班的第一天成小胖就去找架构师老王交流 ActiveMQ 相关的知识,还顺便向老王讨了个红包,可把成小胖给高兴坏了。“来,根据你的了解说下 ActiveMQ 是...转载 2019-05-29 10:02:40 · 119 阅读 · 0 评论 -
ActiveMQ消息持久化-KahaDB
KahaDBKahaDB是从ActiveMQ 5.4开始默认的持久化插件。KahaDb恢复时间远远小于其前身AMQ并且使用更少的数据文件,所以可以完全代替AMQ。(AMQ适用于ActiveMQ5.3之前的版本。)KahaDB的持久化机制同样是基于日志文件,索引和缓存。一、配置方式:activemq.xml<per...转载 2019-05-29 10:03:45 · 636 阅读 · 0 评论 -
JVM内存:年轻代、老年代、永久代(推荐 转)
参考文章:1.Java 新生代、老年代、持久代、元空间2.Java内存与垃圾回收调优3.方法区的Class信息,又称为永久代,是否属于Java堆?Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象,如下图所示:在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old)。新生代 ( Young ) 又被划分为...转载 2019-05-29 13:48:30 · 538 阅读 · 0 评论 -
轻松理解AOP(面向切面编程)
https://blog.csdn.net/yanquan345/article/details/19760027本文主要介绍AOP思想,而不是Spring,Spring在本文只做为理解AOP的工具和例子,所以也不打算介绍Spring的Aspect、Join point、Advice、AOP proxy等概念,那样初学者会很难理解,如果你懂了AOP的思想,那么Spring的AOP,还是Aspe...转载 2019-07-25 14:01:27 · 140 阅读 · 0 评论 -
java解析xml的4种经典方法
==========================================xml文件<?xmlversion="1.0"encoding="GB2312"?><RESULT><VALUE> <NO>A1234</NO> <ADDR>四川省XX县XX镇XX路X段XX号</ADDR></VALUE><VALUE> <NO>B1234</NO>...转载 2019-07-18 15:39:03 · 237 阅读 · 0 评论 -
ActiveMQ讯息传送机制以及ACK机制
ActiveMQ消息传送机制以及ACK机制详解 AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。一. ActiveMQ消息传送机制 Producer客户端使用来发送消息的, Consumer客户端用来消费消息;它们的协同中心就是ActiveMQ...转载 2019-06-12 13:42:53 · 212 阅读 · 1 评论 -
ActiveMQ的设置消息时长,事务,确认机制 ,持久化(六)
1.消息事务消息事务是在生产者producer到broker或broker到consumer过程中同一个session中发生的,保证几条消息在发送过程中的原子性。(Broker:消息队列核心,相当于一个控制中心,负责路由消息、保存订阅和连接、消息确认和控制事务)在支持事务的session中,producer发送message时在message中带有transactionID。...转载 2019-06-12 13:28:34 · 351 阅读 · 0 评论 -
ActiveMQ的本地事务
1、ActiveMQ的本地事务在一个JMS客户端,可以使用本地事务来组合消息的发送和接收。JMS Session接口提供了commit和rollback方法。事务提交意味着生产的所有消息被发送,消费的所有消息被确认;事务回滚意味着生产的所有消息被销毁,消费的所有消息被恢复并重新提交,除非它们已经过期。 事务性的会话总是牵涉到事务处理中,commit或rollback方法一旦被调...转载 2019-06-12 13:26:53 · 165 阅读 · 0 评论 -
AMQ学习笔记 - 21. 异步发送
原文地址:Async Sends背景ActiveMQ支持同步、异步两种发送的模式将消息发送到broker,模式的选择对发送延时有巨大的影响。producer能达到怎样的产出率[1],主要受发送延时的影响,使用异步发送,可以显著的提高发送的性能。[1] 产出率:发送的数据量/时间。ActiveMQ默认使用异步发送的模式:除非明确指定使用同步发送的方式,或者在未使用事务的前提下发...转载 2019-06-12 10:55:42 · 204 阅读 · 0 评论 -
ActiveMQ性能优化思路-02
ActiveMQ处理规则和优化在ActiveMQ单个服务节点的优化中,除了对ActiveMQ单个服务节点的网络IO模型进行优化外,生产者发送消息的策略和消费者处理消息的策略也关乎整个消息队列系统是否能够高效工作。 Producer既是消息生产者,作为一个发送消息的客户端它既可以使用同步消息发送模式,也可以使用异步的消息发送模式。另外,消息生产者在ActiveMQ服务节点产生消息堆积的情况...转载 2019-06-04 14:40:22 · 420 阅读 · 0 评论 -
ActiveMQ性能优化思路-03
当ActiveMQ接收到PERSISTENT Message消息后就需要借助持久化方案来完成PERSISTENT Message的存储。这个介质可以是磁盘文件系统、可以是ActiveMQ的内置数据库,还可以是某种外部提供的关系型数据库。 所有PERSISTENT Message都要执行持久化存储操作,持久化存储操作方案的性能直接影响着整个MQ服务端的PERSISTENT Message吞吐性...转载 2019-06-04 14:39:31 · 944 阅读 · 0 评论 -
ActiveMQ性能优化思路-01
根据这个系列文章所陈述的中心思想,系统的性能层次包括:代码级性能、规则性能、存储性能、网络性能,以及多节点协同方法(集群方案),所以我们优化ActiveMQ的中心思路也是这样的:首先优化ActiveMQ单个节点的性能,然后在配置ActiveMQ的集群。下面我们就按照这个思路,一步步介绍和ActiveMQ性能有关的那些事。在默认情况下ActiveMQ的网络信息传递方式基于网络IO模型中的BIO方...转载 2019-06-04 14:38:46 · 618 阅读 · 0 评论 -
消息队列设计的要点
当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发的Notify、MetaQ、RocketMQ等。本文不会一一介绍这些消息队列的所有特性,而是探讨一下自主开发设计一个消息队列时,你需要思考和设计的重要方面。过程中我们会参考这些成熟消息队列的很多重要思想。本文首先会阐述什么时候你需要一个消息队列,然后以Push模型为主,从零开始分...转载 2019-06-04 14:38:12 · 326 阅读 · 0 评论 -
java 内存泄露分析工具-mat
https://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html转载 2017-11-06 15:31:28 · 255 阅读 · 0 评论 -
日志组件slf4j介绍及配置详解
1 基本介绍每一个Java程序员都知道日志对于任何一个Java应用程序尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库,如java.util.logging、Apache log4j、logback。但如果你还不知道SLF4J(Simple logging facade for Java)的话,那么是时候在你的项目中学习使用SLF4J了。SLF4J不同于其他日志转载 2017-11-17 15:44:47 · 260 阅读 · 0 评论 -
log4j 配置说明
1 log4j.rootCategory=INFO, stdout , R此句为将等级为INFO的日志信息输出到stdout和R这两个目的地,stdout和R的定义在下面的代码,可以任意起名。等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,如果配置OFF则不打出任何信息,如果配置为INFO这样只显示INFO, WARN, ERROR的log信息,而DE转载 2015-06-11 15:20:50 · 247 阅读 · 0 评论 -
Java NIO vs. IO
Table of ContentsMain Differences Betwen Java NIO and IOStream Oriented vs. Buffer OrientedBlocking vs. Non-blocking IOSelectorsHow NIO and IO Influences Application DesignThe API CallsThe转载 2015-07-07 22:11:12 · 235 阅读 · 0 评论 -
NIO与传统IO的区别 NIO Socket例子 实例
传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大。使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数量线程的线程池,甚至一个线程来为任意数量的连接服务。由于线程数量小于连接数量,所以每个线程进行IO操作时就不能阻塞,如果阻塞的话,有些连接就得不到处理,NIO提供了这种非阻塞的能力。小量的线程转载 2015-06-30 19:57:19 · 300 阅读 · 0 评论 -
JAVA四种线程池的使用
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。转载 2015-06-25 15:38:12 · 210 阅读 · 0 评论 -
[Java] java实现多重继承
多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而我们知道Java为了保证数据安全,它只允许单继承。有些时候我们会认为如果系统中需要使用多重继承往往都是糟糕的设计,这个时候我们往往需要思考的不是怎么使用多重继承,而是您的设计是否存在问题.但有时候我们确实是需要实现多重继承,而且现实生活中也真正地存在这样的情况,比如遗传:我们即继承了父亲的行为和特征也继承了母亲的行为和特征。可幸的转载 2015-06-25 09:48:11 · 369 阅读 · 0 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和转载 2015-05-06 16:41:53 · 184 阅读 · 0 评论 -
java多线程实例
实现线程的方式有两种: 1、继承java.lang.Thread,并重写它的run()方法,将线程的执行主体放入其中。 2、实现java.lang.Runnable接口,实现它的run()方法,并将线程的执行主体放入其中。 ==多线程的执行逻辑: 当主线程被挂起时, 其它就绪的线程会根据选择最实现线程的方式有两种:1、继承java.lang.Thread,并重写它的run(转载 2015-04-29 11:28:00 · 249 阅读 · 0 评论 -
聊聊并发(七)——Java中的阻塞队列
1. 什么是阻塞队列?阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方转载 2015-03-31 15:34:23 · 262 阅读 · 0 评论 -
JUnit三分钟教程 ---- 快速起步
JUnit三分钟教程 ---- 快速起步 JUnit是个好东西,做大点的项目离不开这东西,实际中用的时候也因为时间和人力的关系,仅仅写个TestCase(测试单元),运行一下看看就扔过去了,过后也不维护测试代码。 所用的JUnit包为3.8.2。 JUnit这东西,说复杂也复杂,说简单也简单,关于JUnit的叙述解说网上一堆一堆,可是就找不到个简单点转载 2015-03-23 17:10:09 · 265 阅读 · 0 评论 -
JUnit三分钟教程 ---- 实际应用
JUnit三分钟教程 ---- 实际应用 接上文“JUnit三分钟教程 ---- 快速起步”,续写一篇,以便能真正将JUnit用到项目的测试中。 进行测试确不清理垃圾数据就像随地大小便一样让人无法忍受! 测试是应该进行,如果测试过程中给数据库中写入了垃圾数据怎么办,不用担心,JUnit的设计者早已考虑到了这个问题,下面看如何控制“测试垃圾”的回收。转载 2015-03-23 17:10:44 · 240 阅读 · 0 评论 -
【Java TCP/IP Socket】基于NIO的TCP通信(含代码)
转载请注明出处:http://blog.csdn.net/ns_code/article/details/15545057 NIO主要原理及使用 NIO采取通道(Channel)和缓冲区(Buffer)来传输和保存数据,它是非阻塞式的I/O,即在等待连接、读写数据(这些都是在一线程以客户端的程序中会阻塞线程的操作)的时候,程序也可以做其他事情,以实现线程的异转载 2015-06-30 19:47:59 · 455 阅读 · 0 评论 -
logback 配置详解(一)
一:根节点包含的属性: scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。debug:当此属性设置为true时,将打印出logback内部日志信转载 2015-06-11 15:18:47 · 232 阅读 · 0 评论 -
logback 常用配置详解(二) <appender>
ogback 常用配置详解(二) :是的子节点,是负责写日志的组件。有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。 1.ConsoleAppender:把日志添加到控制台,有以下子节点::对日志进行格式化。(具体参数稍后讲解 ):字符串 System.转载 2015-06-11 15:19:28 · 277 阅读 · 0 评论 -
Java中Map按Value排序
前言Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。TreeMap基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。HashMapHashMap转载 2017-10-10 10:55:29 · 13122 阅读 · 2 评论 -
HashMap 的实现原理
HashMap 概述HashMap 是基于哈希表的 Map 接口的非同步实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection 视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大转载 2017-09-25 16:37:48 · 149 阅读 · 0 评论 -
Timer的schedule和scheduleAtFixedRate方法的区别解析
在Java中,Timer类主要用于定时性、周期性任务 的触发,这个类中有两个方法比较难理解,那就是schedule和scheduleAtFixedRate方法,在这里就用实例分析一下(1)schedule方法:“fixed-delay”;如果第一次执行时间被delay了,随后的执行时间按 照 上一次 实际执行完成的时间点 进行计算(2)scheduleAtFixedRate方法:“fi转载 2016-06-16 10:53:35 · 265 阅读 · 0 评论