
java
一条宝鱼
这个作者很懒,什么都没留下…
展开
-
使用maven-jar-plugin打可执行jar包
另外的几种方式:http://blog.youkuaiyun.com/johnnywww/article/details/7964326原创 2015-07-09 16:49:13 · 2892 阅读 · 0 评论 -
linux下jconsole连接tomcat进行远程监控
2013-03-01 17:51 1796人阅读 评论(0) 收藏 举报jconsole监控tomcat配置:以下配置是在linux环境下进行。1、安装jdk,推荐安装jdk6.0。2、在tomcat的bin/catalina.sh中配置:JAVA_OPTS="-Dcom.sun.management.jmxremote.port=10000 -Dcom转载 2015-10-29 15:25:45 · 471 阅读 · 0 评论 -
ThreadPoolExecutor运转机制详解
最近发现几起对ThreadPoolExecutor的误用,其中包括自己,发现都是因为没有仔细看注释和内部运转机制,想当然的揣测参数导致,先看一下新建一个ThreadPoolExecutor的构建参数:[java] view plaincopypublic ThreadPoolExecutor(int corePoolSize,转载 2015-11-16 11:42:52 · 330 阅读 · 0 评论 -
哈希表(HashMap)分析及实现(JAVA)
探讨Hash表中的一些原理/概念,及根据这些原理/概念,自己设计一个用来存放/查找数据的Hash表,并且与JDK中的HashMap类进行比较。我们分一下七个步骤来进行。 一。 Hash表概念二 . Hash构造函数的方法,及适用范围三. Hash处理冲突方法,各自特征四. Hash查找过程五. 实现一个使用Hash存数据的场景--Hash查找算法,插入算法六. JDK中转载 2015-11-19 15:56:18 · 440 阅读 · 0 评论 -
一致性哈希算法与Java实现
一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了,如果是持久化存储则要做数据迁移,如果是分布式缓存,则其他缓存就失效了。 因此,引入了一致性哈希算法:转载 2015-11-19 16:29:30 · 367 阅读 · 0 评论 -
char与byte的区别
很多初学者肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享: byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是0—65535 ;cha转载 2015-11-25 15:55:07 · 827 阅读 · 0 评论 -
浅谈Java中的hashcode方法
哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:1public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的转载 2015-11-19 16:07:00 · 416 阅读 · 0 评论 -
CyclicBarrier介绍
CyclicBarrier介绍 (一)一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier 支持一个可选的 Runnabl转载 2016-01-18 11:31:54 · 338 阅读 · 0 评论 -
CountDownLatch浅析
CountDownLatch类是一个同步计数器,构造时传入int参数,该参数就是计数器的初始值,每调用一次countDown()方法,计数器减1,计数器大于0 时,await()方法会阻塞程序继续执行。CountDownLatch可以看作是一个倒计数的锁存器,当计数减至0时触发特定的事件。利用这种特性,可以让主线程等待子线程的结束。下面以一个模拟运动员比赛的例子加以说明。 CountDownL转载 2016-01-18 11:37:46 · 319 阅读 · 0 评论 -
深入JVM系列(三)之类加载、类加载器、双亲委派机制与常见问题
一.概述定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。二. 类的加载方式1):本地编译好的class中直接加载2):网络加载:java.net.URLClassLoader可以加载url指定的类3):从jar、zip等等转载 2015-10-29 14:55:15 · 1554 阅读 · 0 评论 -
深入JVM系列(二)之GC机制、收集器与GC调优
一、回顾JVM内存分配需要了解更多内存模式与内存分配的,请看 深入JVM系列(一)之内存模型与内存分配1.1、内存分配:1、对象优先在EDEN分配2、大对象直接进入老年代 3、长期存活的对象将进入老年代 4、适龄对象也可能进入老年代:动态对象年龄判断动态对象年龄判断:虚拟机并不总是要求对象的年龄必须达到MaxTen转载 2015-10-29 14:52:32 · 939 阅读 · 0 评论 -
instanceof 与isAssignableFrom
instanceof 针对实例 isAssignableFrom针对class对象 isAssignableFrom 是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。 通常调用格式是 Java代码 Class1.isAssignableFrom(Class2) 调用转载 2015-11-11 14:41:29 · 380 阅读 · 0 评论 -
一次Java垃圾收集调优实战
1 资料JDK5.0垃圾收集优化之--Don't Pause(花钱的年华) 编写对GC友好,又不泄漏的代码(花钱的年华) JVM调优总结 JDK 6所有选项及默认值 2 GC日志打印 GC调优是个很实验很伽利略的活儿,GC日志是先决的数据参考和最终验证:-XX:+PrintGCDetails -XX:+PrintGCTimeStamps(GC发生的转载 2015-07-06 15:41:46 · 363 阅读 · 0 评论 -
JVM的DirectMemory设置
几台服务器的JVM占用内存总是持续增长,大大超过-Xmx设定的值,服务器物理内存几乎被耗尽。使用jmap查看JVM的内存使用,发现jvm的堆大小完全在-Xmx参数设定的范围之内,那问题只能处在别的地方了。JVM除了堆内存之外,就只有栈内存和DirectMemory了。栈空间每个线程是固定的,线程数也没可能多到可以占用这么多内存的程序,所以怀疑的目标就在DirectMemory上了。转载 2015-07-07 10:02:15 · 9228 阅读 · 0 评论 -
Content-Range HTTP 下载文件原理
Content-RangeContent-Range 实体头.用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式: Content-Range: bytes (unitSPfirst byte pos) - [last byte pos]/[entity legth] 一般向服务器转载 2015-08-17 17:12:34 · 1615 阅读 · 0 评论 -
Java中堆内存和栈内存详解
Java把内存分成两种,一种叫做栈内存,一种叫做堆内存在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。转载 2015-09-04 11:33:36 · 497 阅读 · 0 评论 -
Thread.currentThread().getContextClassLoader() 和 Class.getClassLoader()区别
查了一些资料也不是太明白两个的区别,但是前者是最安全的用法 打个简单的比方,你一个WEB程序,发布到Tomcat里面运行。首先是执行Tomcat org.apache.catalina.startup.Bootstrap类,这时候的类加载器是ClassLoader.getSystemClassLoader()。而我们后面的WEB程序,里面的jar、resources都是由Tomca转载 2015-09-27 20:23:31 · 1923 阅读 · 0 评论 -
JVM内存模型与性能调优
Java是一门面向对象的编程语言,用对象来定义,描述和操作一切。对象数据存储在计算机内存中,Java的内存模型到底是个什么样子,让Java引为自豪的垃圾回收器又是如何工作的,如何针对JVM的内存管理进行性能调优,笔者将通过本文带您揭开这些Java世界深处不为人知的内幕。文章导航堆内存(Heap)垃圾回收器(GC)垃圾回收策略堆栈内存(Stack)JVM如何使用堆内存堆内存结构图内存溢出转载 2015-09-12 20:39:51 · 834 阅读 · 0 评论 -
JVM结构、GC工作机制详解
关于JVM和GC,我相信学java的绝大部分人都听过,很多公司的面试官都爱问,一开始我也很头痛,问这么底层干什么,所以我每次面试也只是看看答案敷衍了事。知识不仅要知其然,还要知其所以然。其实弄懂了JVM和GC,对我们理解很多java知识都有帮助。网上有很多关于GC和JVM的文章,这篇博文主要是根据我最近看《深入理解Java虚拟机》的一些体会总结出来的,希望对新手有些帮助,也欢迎大牛拍砖。文章主要分转载 2015-09-13 13:51:31 · 679 阅读 · 1 评论 -
深入JVM系列(一)之内存模型与内存分配
一、JVM内存区域划分大多数 JVM 将内存区域划分为 Method Area(Non-Heap),Heap,Program Counter Register, Java Method Stack,Native Method Stack和Direct Memomry(注意 Directory Memory 并不属于 JVM 管理的内存区域)。前三者一般译为:方法区、堆、程序计数器。转载 2015-10-20 10:56:47 · 454 阅读 · 0 评论 -
Java 信号量 Semaphore 介绍
Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库 的Semaphore 可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。比如在Windows下可以设置共享文件的最大客户端访问个数。 Semap转载 2016-01-18 13:36:00 · 356 阅读 · 0 评论 -
Java异步回调
(转载) 回调你可以这样来理解:A发送消息给B,B处理好A要求的事情后,将结果返回给A,A再对B返回的结果来做进一步的处理。 1、回调的实现/** * 回调接口 * @author KOOK * */ public interface CallBack { /** * 执行回调方法 * @param objects 将处理后的转载 2016-01-18 15:26:13 · 846 阅读 · 0 评论 -
JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代
内存模型JVM运行时数据区由程序计数器、堆、虚拟机栈、本地方法栈、方法区部分组成,结构图如下所示。JVM内存结构由程序计数器、堆、栈、本地方法栈、方法区等部分组成,结构图如下所示:1)程序计数器 几乎不占有内存。用于取下一条执行的指令。2)堆所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制。堆被划分为新生代和老年代,新...转载 2019-03-23 23:15:23 · 284 阅读 · 0 评论 -
linux系统jconsole的使用和windows远程查看
一、jconsole能干什么查看jvm内存使用情况就可以使用jconsole,从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。二、开始部署和运行1、先...转载 2019-04-01 22:40:06 · 4374 阅读 · 1 评论 -
三大性质总结:原子性,有序性,可见性
1. 三大性质简介在并发编程中分析线程安全的问题时往往需要切入点,那就是两大核心:JMM抽象内存模型以及happens-before规则(在这篇文章中已经经过了),三条性质:原子性,有序性和可见性。关于synchronized和volatile已经讨论过了,就想着将并发编程中这两大神器在 原子性,有序性和可见性上做一个比较,当然这也是面试中的高频考点,值得注意。2. 原子性原子性是指一...转载 2019-04-08 11:09:43 · 255 阅读 · 0 评论 -
使用Eclipse Memory Analyzer Tool(MAT)分析线上故障
Eclipse Memory Analyzer Tool(MAT)相关文章目录: 使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(一) - 视图&功能篇 使用Eclipse Memory Analyzer Tool(MAT)分析线上故障(二) - 概念篇 Eclipse Memory Analyzer Tool(M...转载 2019-04-14 18:10:30 · 691 阅读 · 0 评论 -
使用 eclipse memory analyzer 分析dump文件
https://blog.youkuaiyun.com/zhangkang65/article/details/79351069转载 2019-04-14 18:11:52 · 1905 阅读 · 0 评论 -
Java单例模式--------懒汉式和饿汉式
Java单例模式--------懒汉式和饿汉式单件模式用途:单件模式属于工厂模式的特例,只是它不需要输入参数并且始终返回同一对象的引用。单件模式能够保证某一类型对象在系统中的唯一性,即某类在系统中只有一个实例。它的用途十分广泛,打个比方,我们开发了一个简单的留言板,用户的每一次留言都要将留言信息写入到数据库中,最直观的方法是没次写入都建立一个数据库的链接。这是个简单的方法,在不考虑并发的时...转载 2019-05-19 23:30:20 · 358 阅读 · 0 评论 -
idea热部署静态资源无法及时生效
最近开始使用Idea,有些地方的确比eclipse方便。但是我发现工程每次修改JS或者是JSP页面后,并没有生效,每次修改都需要重启一次Tomcat这样的确不方便。我想Idea肯定有设置的方法,不可能有这么不方便的功能存在。需要在Tomcat的设置中为:on ‘update‘ action:当用户主动执行更新的时候更新 快捷键:Ctrl + F...转载 2019-06-06 17:14:26 · 2234 阅读 · 1 评论 -
RandomAccessFile的常见用法
1.RandomAccessFile的简介1.1为什么要用到RandomAccessFile我们平常创建流对象关联文件,开始读文件或者写文件都是从头开始的,不能从中间开始,如果是开多线程下载一个文件我们之前学过的FileWriter或者FileReader等等都无法完成,而当前介绍的RandomAccessFile他就可以解决这个问题,因为它可以指定位置读,指定位置写的一个类,通常开发过程中...转载 2019-06-27 22:39:43 · 5108 阅读 · 0 评论 -
JVM(HotSpot) 7种垃圾收集器的特点及使用场景
这里讨论的收集器基于JDK1.7Update 14之后的HotSpot虚拟机,这个虚拟机包含的所有收集器如下图3-5所示:上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。1.Serial收集器Serial收集器是最基本、发展历史最悠久的收集器。是单线程的收集器。它在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集完成。...转载 2019-03-23 23:01:27 · 191 阅读 · 0 评论 -
system.gc()和-XX:+DisableExplicitGC启动参数,以及DirectByteBuffer的内存释放
我之前的一篇博客:java中使用堆外内存,关于内存回收需要注意的事和没有解决的遗留问题(等大神解答)介绍了java堆外内存的使用,以及堆外内存的释放。那篇博客遗留了一个问题:DirectByteBuffer究竟是如何释放堆外内存的?本文主要是解决下那篇博客的遗留问题。首先我们修改下JVM的启动参数,重新运行之前博客中的代码。JVM启动参数和测试代码如下:-verbose:gc -X...转载 2019-03-25 15:38:55 · 4013 阅读 · 0 评论 -
异常栈信息不见了之JVM参数OmitStackTraceInFastThrow
问题描述某天收到生产环境error日志告警(对error.log监控,超过一定大小就会给开发人员发送告警短信)。但是tail查看最新的异常信息只有这些,好忧伤:... ...java.lang.NullPointerExceptionjava.lang.NullPointerExceptionjava.lang.NullPointerExceptionjava.lang.Null...转载 2019-03-25 15:35:14 · 2578 阅读 · 0 评论 -
页面片段缓存----基于velocity
一般,页面上会分为很多部分,而不同的部分更新的频率是不一样的。如果对整个页面采用统一的缓存策略则不太合适,而且很多系统的页面左上角都有一个该死的“Welcome XXX”。这种特定于用户的信息我们是不能缓存的。对于这些情况我们就需要使用片段缓存了。对页面不同的部分(片段)施加不同的缓存策略,而要使用片段缓存,首先就得对页面进行切分。土一点的办法可以用iframe,用iframe将页面划转载 2016-02-13 21:35:29 · 1911 阅读 · 2 评论 -
页面片段缓存----使用esi标签
了一些bug。而且还有点hack的味道(虽然我喜欢hack)。实际上对于片段缓存,业界有成熟的解决方案,还有一个所谓的W3C标准:ESI(Edge Side Include) 。ESI本身没有什么,只是一个XML的标签集合。ESI和SSI(Server Side Include)很相似,做过ASP开发的都熟悉这么一个标签:IIS碰到这么一个标签后,会把hea转载 2016-02-13 21:37:51 · 2991 阅读 · 0 评论 -
Google Zxing 二维码生成与解析
生成二维码的开源项目可谓是琳琅满目,SwetakeQRCode、BarCode4j、Zxing...... 前端有JQuery-qrcode,同样能实现生成二维码。 选择Zxing的原因可能是对 Google 公司的信赖和个人崇拜吧。 其实使用起来相当的简单,我这里使用的是最新3.2 Zxing.jar ,省的你找jar的时间,下面是下载地址。转载 2017-03-30 13:35:09 · 322 阅读 · 0 评论 -
Netty笔记:使用WebSocket协议开发聊天系统
前言,之前一直围绕着Http协议来开发项目,最近由于参与一个类似竞拍项目的开发,有这样一个场景,多个客户端竞拍一个商品,当一个客户端加价后,其它关注这个商品的客户端需要立即知道该商品的最新价格。 这里有个问题,Http协议是基于请求/响应的,客户端发送请求,然后服务端响应返回,客户端是主动方,服务端被动的接收客户端的请求来响应,无法解决上述场景中服务端主动将最新的数据推送给客户端的转载 2017-09-06 21:57:58 · 1534 阅读 · 1 评论 -
JVM的新生代、老年代、MinorGC、MajorGC
参考资料:http://blog.youkuaiyun.com/flamezyg/article/details/44673951http://www.blogjava.net/ldwblog/archive/2013/07/24/401919.htmlhttp://www.360doc.com/content/12/1023/16/9615799_243296263.shtml...转载 2019-03-15 17:00:00 · 294 阅读 · 1 评论 -
JVM垃圾收集器-对比Serial、Parallel、CMS和G1
4个Java垃圾收集器,错误的选择会对性能影响很大现在很多开发者仍然搞不清垃圾收集器。这一块在Java 8版本的改动也比较大,特别是去掉了PermGen永久代和带来一些新的让人激动的优化。提到垃圾收集,大多数人在每天的编程工作中都会用到并知道这个概念。其中最大的一个误解是一位JVM只有一个垃圾收集器,事实上它有4个,每个都有自己的优点和缺点。JVM并不会自动帮你选择,决定权在你手里,不同的选...转载 2019-03-19 22:47:52 · 773 阅读 · 0 评论 -
Java的堆,栈,方法区
https://blog.youkuaiyun.com/danny_idea/article/details/81137306转载 2019-03-11 21:58:36 · 146 阅读 · 0 评论