![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 96
cjrjc
我的小目标:北京有套房
展开
-
HashMap,LinkedHashMap,TreeMap的区别
原文地址:http://blog.csdn.net/xin_jmail/article/details/25975085Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一...转载 2019-02-18 10:56:58 · 239 阅读 · 0 评论 -
Eclipse远程调试(远程服务器端监听)
前提:远程服务器上运行的WEB项目class对应的源码与本地项目中必须保持一致,也就是远程tomcat部署的项目就是本机项目打包过去的,而本机项目没有发生变动。远程服务器端服务器端配置eclipse调试器监听端口,有两种方式,任选其一第一种方式:环境变量export JPDA_ADDRESS=9999启动tomcat使用sh catalina.sh jpda start转载 2018-01-11 16:36:15 · 937 阅读 · 0 评论 -
activemq-5.14在centos开机启动
from http://blog.csdn.net/maweiba163/article/details/51602558场景:有的时候服务器不可避免需要重新启动, activemq 不可避免需要跟着重新手工去启动;通过设置 自启动管理来减少手工操作压力处理方案: 1、安装并保证 apache-activemq-5.14.0 可以通过 /bin/activem转载 2017-11-30 11:32:54 · 690 阅读 · 0 评论 -
CentOS6.5下安装ActiveMQ
from http://blog.csdn.net/brushli/article/details/416945511.下载ActiveMQ[sql] view plain copy [root@localhost softwares]# wget http://archive.apache.org/dist/activemq/apache-转载 2017-11-20 13:50:49 · 686 阅读 · 0 评论 -
Java GC 调试手记
from http://blog.csdn.net/FireCoder/article/details/7225654摘要本文记录GC调试的一次实验过程和结果。GC知识要点回顾问题1:为什么要调试GC参数?在32核处理器的系统上,10%的GC时间导致75%的吞吐量损失。所以在大型系统上,调试GC是以小博大的不错选择。'small improvements in redu转载 2017-12-24 17:49:01 · 236 阅读 · 0 评论 -
Java虚拟机-JVM各种参数配置大全详细
from http://blog.csdn.net/chenleixing/article/details/43230527usr/local/jdk/bin/java -Dresin.home=/usr/local/resin -server -Xms1800M -Xmx1800M -Xmn300M -Xss512K -XX:PermSize=300M -XX:MaxPermSize=3转载 2017-12-25 07:35:36 · 522 阅读 · 0 评论 -
基于JVM(内存)和Tomcat性能调优
from http://blog.csdn.net/caomiao2006/article/details/46293485一、总结前一天的学习从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是:ü 吞吐量ü Responsetimeü Cpuloadü MemoryUsage我们也在第三天的学转载 2017-12-25 07:39:14 · 169 阅读 · 0 评论 -
Java 7之基础 - 强引用、弱引用、软引用、虚引用
转载请注明出处:http://blog.csdn.net/mazhimazh/article/details/197524751、强引用(StrongReference) 强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:[java] view plain copy Object o=new Obj转载 2017-12-25 08:19:16 · 136 阅读 · 0 评论 -
Java四种引用包括强引用,软引用,弱引用,虚引用
from https://www.cnblogs.com/yw-ah/p/5830458.html强引用:只要引用存在,垃圾回收器永远不会回收Object obj = new Object();//可直接通过obj取得对应的对象 如obj.equels(new Object());而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之转载 2017-12-25 08:21:06 · 140 阅读 · 0 评论 -
为JVM启用大页面支持
from http://cjjwzs.iteye.com/blog/1059381最近在看《Linux服务器性能调整》,书中第九章-Linux虚存的性能问题中提到了当代计算机体系结构都支持多种页面大小。大型页面可以改善高性能计算及内存密集型应用的性能。回想起之前看IBM developmentworks上介绍websphere调优和oracle weblogic中tuning都提到转载 2017-12-25 08:02:18 · 1130 阅读 · 0 评论 -
centos7识别验证码字体
一段java写的纯字母和数字的登录验证码程序,在windows运行正常。部署到阿里云,起初也是正常的。但经过对这台阿里云主机(CentOS 7.4)进行一系列的环境配置(nginx,ffmpeg等)后,验证码变成了乱码,与后台打印的字母数字完全不同。考虑到代码没有变动,应当是环境的问题。可能是某个时候把centos的字体文件给删除或覆盖了。最后发现可以通过以下方式解决:1、检查代码使用的字体为Ti...原创 2018-07-12 16:28:32 · 1643 阅读 · 0 评论 -
JAVA经典算法大全
JAVA经典算法大全from http://java-mans.iteye.com/blog/1645703 1.河内之塔 2.Algorithm Gossip: 费式数列. 3.巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官(一) 6.Algorithm ...转载 2018-09-29 09:53:30 · 636 阅读 · 0 评论 -
算法-调整数组顺序使奇数位于偶数前面
输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)/** * 调整数组顺序使奇数位于偶数前面 * * 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分, * 所有偶数位于数组的后半部分。要求时间复杂度为O(n) */public class OddHead { /** ...原创 2019-01-23 16:09:18 · 381 阅读 · 0 评论 -
算法-动态规划 Dynamic Programming--从菜鸟到老鸟
2017年07月15日 22:58:29 HankingHu 阅读数:68782更多所属专栏: 图解算法版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/u013309870/article/details/75193592前言最近在牛客网上做了几套公司的真题,发现有关动态规划(Dynamic Programming)算法的题目很多。相对于...转载 2019-01-20 09:59:12 · 208 阅读 · 0 评论 -
【Java面试宝典】深入理解JAVA虚拟机
【Java面试宝典】深入理解JAVA虚拟机一、运行时数据区域 线程隔离:线程隔离的意思,就是给不同的线程多分配的资源用,以做到不争用。 线程共享:线程共享就是资源只有一个没有办法分配更多,只能共享。 Java虚拟机管理的内存包括几个运行时数据内存:方法区、虚拟机栈、本地方法栈、堆、程序计数器,其中方法区和堆是由线程共享的数据区,其他几个是线程隔离的数据区。程序计数器,虚拟机栈...转载 2019-01-19 20:27:31 · 206 阅读 · 0 评论 -
十大经典排序算法最强总结(含JAVA代码实现)
最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在“桶排序”算法中对每个桶进行排序直接使用了Collection.sort()函数,这样虽然能达到效果,但对于算法研究来讲是不可以的。所以我根据这几天看的文章,整理了一个较为完整的排序算法总结,本文中的所有算法均有JAVA实现,经本人调试无误后才发出,如有错误,请各位前辈...转载 2019-01-19 20:23:09 · 282 阅读 · 0 评论 -
两个list合并的算法
valueListtimeList 根据两个list比对获取这样的数据以timeList为基准,把valueList的值合并到新的List,valueList中没有的值设为0 public class ComOrder { private List<Map<String, Integer>> valueList = new Ar...原创 2019-01-24 17:39:48 · 1844 阅读 · 0 评论 -
深入理解JVM—JVM内存模型
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子...转载 2019-01-17 13:30:59 · 159 阅读 · 0 评论 -
深入详解JVM内存模型与JVM参数详细配置
对于大多数应用来说,Java 堆(Java Heap)是Java 虚拟机所管理的内存中最大的一块。Java 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。JVM内存结构 由上图可以清楚的看到JVM的内存空间分为3大部分:堆内存 方法区 栈内存其中栈内存可以再细分为java虚拟机栈和本地方法栈,堆内存可以划分为新生代和老年代,新生代中还可以再...转载 2019-01-17 13:20:10 · 200 阅读 · 0 评论 -
Java字节码指令收集大全
Java字节码指令大全 常量入栈指令 指令码 操作码(助记符) 操作数 描述(栈指操作数栈) 0x01 aconst_null null值入栈。 0x02 iconst_m1 ...转载 2018-12-06 17:49:55 · 105 阅读 · 0 评论 -
Java内存模型深度解读
Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。如果你想设计表现良好的并发程序,理解Java内存模型是非常重要的。Java内存模型规定了如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。原始的Java内存模型存在一些不足,因此Ja...转载 2018-12-03 22:46:35 · 111 阅读 · 0 评论 -
多线程交替打印ABC的多种实现方法
一、题目描述建立三个线程A、B、C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印。二、Synchronized同步法1、基本思路使用同步块和wait、notify的方法控制三个线程的执行次序。具体方法如下:从大的方向上来讲,该问题为三线程间的同步唤醒操作,主要的目的就是Thre转载 2017-11-16 10:43:10 · 625 阅读 · 0 评论 -
JAVA IO中的设计模式
阎宏博士的《Java与模式》第27章【专题:设计模式在Java I/O库中的应用】P469在java语言 I/O库的设计中,使用了两个结构模式,即装饰模式和适配器模式。 在任何一种计算机语言中,输入/输出都是一个很重要的部分。与一般的计算机语言相比,java将输入/输出的功能和使用范畴做了很大的扩充。因此输入输出在java语言中占有极为重要的位置。java语言采用流的机制来实现输入/输出。所谓流,就是数据的有序排列,流可以是从某个源(称为流源,或者 Source of S转载 2017-11-15 17:12:14 · 141 阅读 · 0 评论 -
深入理解JVM—性能监控工具
源自博客园: http://www.cnblogs.com/duanxz/p/3712734.html我们知道,在JVM编译期和加载器,甚至运行期已经做了大量的调优操作,但是那些都是JVM针对Java程序所做的通用的、简单的优化,程序在运行时由于运行环境的复杂性、业务逻辑的复杂性,很多JVM是无法进行优化处理的,这就需要我们自己在写代码的时候就注意,以便我们的程序在特定的业务场景发挥到最佳转载 2017-11-18 12:24:25 · 192 阅读 · 0 评论 -
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
https://my.oschina.net/feichexia/blog/196575摘要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引玉之用,让大家能开始对JVM性能调优的常用工具有所了解。 现实企业级Java开发转载 2017-11-18 12:22:16 · 242 阅读 · 0 评论 -
深入理解JVM性能调优
在上文中我们分析了很多性能监控工具,介绍这些工具的目的只有一个,那就是找出对应的性能瓶颈。盲目的性能调优是没有效果的,只有充分知道了哪里出了问题,针对性的结果才是立竿见影的。解决了主要的性能问题,那些次要的性能问题也就不足为虑了!我们知道,性能问题无非就这么几种:CPU、内存、磁盘IO、网络。那我们来逐一介绍以下相关的现象和一些可能出现的问题。一、CPU过高。查看CPU转载 2017-11-18 09:47:59 · 217 阅读 · 0 评论 -
Java并发编程:如何创建线程?
Java并发编程:如何创建线程? 在前面一篇文章中已经讲述了在进程和线程的由来,今天就来讲一下在Java中如何创建线程,让线程去执行一个子任务。下面先讲述一下Java中的应用程序和进程相关的概念知识,然后再阐述如何创建线程以及如何创建进程。下面是本文的目录大纲: 一.Java中关于应用程序和进程相关的概念 二.Java中如何创建线程 三.Java中如何创建进程 若有不转载 2017-11-15 20:39:30 · 127 阅读 · 0 评论 -
Java并发编程:深入剖析ThreadLocal
Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对ThreadLocal的理解 二.转载 2017-11-15 20:36:57 · 117 阅读 · 0 评论 -
消息队列在项目中的使用总结
一、传统通信模式的不足常用的传统进程通信模式一般是client调用server的服务,等待server的响应。但是在网络情况不好或者在server需要较长的处理时间的时候,就可能导致client的调用失败或超时。业务场景中经常会有一些非常耗时的操作容易阻塞通信,就需要选择独立、耦合性低的消息中间件来完成业务系统间的交互和数据传递。二、消息队列的优势消息队列可以作为通信的中介转载 2017-11-16 21:42:51 · 1693 阅读 · 0 评论 -
JVM原理讲解和调优
一、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而转载 2017-11-18 13:36:04 · 113 阅读 · 0 评论 -
JProfiler入门笔记
1 前言 开始之前,我问自己,为什么要学习jProfiler? 回答之前先让我们来看看什么是jProfiler:JProfiler是一个商业授权的Java剖析工具,由EJ技术有限公司,针对Java EE和Java SE应用程序开发的。它允许两个内存剖面评估内存使用情况和动态分配泄漏和CPU剖析,以评估线程冲突。JProfiler直觉式的GUI让你可以找到性能瓶颈、抓出内存漏失转载 2017-11-18 18:04:20 · 446 阅读 · 0 评论 -
JAVA多线程的应用场景和应用目的举例
多线程使用的主要目的在于:1、吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的。简单的说,可能就是一个请求一个线程。或多个请求一个线程。如果是单线程,那同时只能处理一个用户的请求。2、伸缩性:也就是说,你可以通过增加CPU核数来提升性能。如果是单线程,那程序执行到死也就利用了单核,肯定没办法通过增加CPU核数来提升性能。鉴于你是做WEB的,第1点可能你几乎转载 2017-11-16 14:53:55 · 113 阅读 · 0 评论 -
JMS(Java消息服务)入门教程
JMS(Java消息服务)入门教程阅读目录什么是Java消息服务 为什么需要JMSJMS的优势JMS消息传送模型接收消息JMS编程接口JMS消息结构JMS使用示例译文链接(做了部分修改~~)什么是Java消息服务 Java消息服务指的是两个应用程序之间进行异步通信的API,它为标准消息协议和消息服务提供了一组通用接口,包括创建、发送、读取消息等,用于支持JA转载 2017-11-20 10:58:33 · 331 阅读 · 0 评论 -
搞定JAVA消息队列,看我用了几步
from http://www.jianshu.com/p/942925f36490近期公司项目中,听同事提起MQ、JMS,因为之前没有使用过不太了解,所以抽出半天时间学习下,了解下相关概念、功能及其用途。便于再次与人沟通时可以言之有物,后续工作中遇到了,可立马上手,提高工作效率。学习过程分为三个步骤:1 查找资料2 实验实践3 归纳总结学习思路.jpg转载 2017-11-20 15:25:00 · 4562 阅读 · 0 评论 -
CentOS下安装JDK1.8.0_121
从oracle下载 jdk-8u121-linux-x64.tar.gz新建一个自定义目录/app(或/usr/local/java)#mkdir /app解压jdk#mv jdk-8u121-linux-x64.tar.gz /app#cd /app#tar -xzvf jdk-8u121-linux-x64.tar.gzvi 编辑/etc原创 2017-11-30 10:45:48 · 4473 阅读 · 0 评论 -
Java线程面试题 Top 50
Java线程面试题 Top 50 原文链接:http://www.importnew.com/12773.html 本文由 ImportNew - 李 广 翻译自 javarevisited。欢迎加入Java小组。转载请参见文章末尾的要求。 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发转载 2017-11-15 20:35:05 · 104 阅读 · 0 评论 -
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作。比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中转载 2017-11-15 20:32:23 · 83 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务转载 2017-11-15 20:30:07 · 86 阅读 · 0 评论 -
让你彻底明白JAVA中堆与栈的区别
from http://blog.csdn.net/wulianghuan/article/details/8602254 Java中堆与栈的区别简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Jav...转载 2017-11-19 18:01:18 · 147 阅读 · 0 评论 -
JProfiler学习笔记
from http://blog.csdn.net/djy1135/article/details/2304465JProfiler学习笔记 一、安装JProfiler 从http://www.ej-technologies.com/下载5.1.2并申请试用序列号 二、主要功能简介1.内存剖析 Memory profiler JProfile转载 2017-11-18 19:46:15 · 183 阅读 · 0 评论