JAVA
文章平均质量分 73
打怪的蚂蚁
这个作者很懒,什么都没留下…
展开
-
如何查找占用CPU最高的线程及相关代码
场景: 某些线上服务,一段时间之内占用CPU特别高,如何确认这是否属于正常情况还是代码中出现了异常导致占用CPU特高呢?如何定位确认是哪个线程导致的?如何确认下是哪部分代码导致的CPU使用率偏高呢? 当然CPU使用高,并不一定意味着是有问题的,下面的方法仅用于排插问题的时候使用,例子也仅作为参考。(PS下面最终查询出来的具体代码使用CPU高是正常情况,这个需根据原创 2016-12-01 22:13:36 · 7516 阅读 · 1 评论 -
设计模式之装饰模式
装饰模式概念: 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活(大话设计模式) 在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。(百度百科)装饰模式的UML图 装饰模式的代码package com.roc.decorate;/** *转载 2017-07-13 10:13:39 · 288 阅读 · 0 评论 -
JAVA基本面试二
一、HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,然后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用LinkedList来解决碰撞问题,原创 2017-05-25 20:47:08 · 281 阅读 · 0 评论 -
谁都忍不了烂代码,如何用重构的方式让它整洁起来?
“整洁的代码简单直接。整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直截了当的控制语句。”怎样让代码更加整洁?答案是重构!写在前面现在的软件系统开发难度主要在于其复杂度和规模,客户需求也不再像 Winston Royce 瀑布模型期望那样在系统编码前完成所有的设计满足用户软件需求。在这个信息爆炸技术日新月异的时代,需求总是在不断的变化,随之在 2001 年转载 2017-08-09 10:23:54 · 275 阅读 · 0 评论 -
每个程序员都应该收藏的算法复杂度速查表
转载 2017-08-11 11:41:27 · 256 阅读 · 0 评论 -
Java8 如何正确使用Optional
Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。这篇文章是建立在你对Optional的用法有一定了解的基础上的,如果你还不太了解Optional,可以先去看看相关教程,或者查阅Java文档。使用Optional,我们就可以把下面这样的代码进行改写。转载 2017-08-14 10:06:20 · 519 阅读 · 0 评论 -
跟上 Java 8 : 日期和时间实用技巧
当你开始使用Java操作日期和时间的时候,会有一些棘手。你也许会通过System.currentTimeMillis() 来返回1970年1月1日到今天的毫秒数。或者使用Date类来操作日期;当遇到加减月份、天数的时候 你又需要用到Calendar类;当需要格式化日期的时候需要使用java.text.DateFormat类。 总而言之在Java中操作日期不是很方便,以至于很多开发者不得不使用第三方转载 2017-08-14 10:07:21 · 284 阅读 · 0 评论 -
一图读懂JVM架构解析
每个Java开发人员都知道字节码由JRE(Java运行时环境)执行。但许多人不知道JRE是Java Virtual Machine(JVM)的实现,它分析字节码,解释代码并执行它。作为开发人员,我们应该知道JVM的架构是非常重要的,因为它使我们能够更有效地编写代码。在本文中,我们将更深入地了解Java中的JVM架构和JVM的不同组件。什么是JVM?Virtual Machine是物转载 2017-08-26 10:34:49 · 347 阅读 · 0 评论 -
Btrace入门到熟练小工完全指南
原文地址:http://calvin1978.blogcn.com/articles/btrace1.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io BTrace是神器,每一个需要每天解决线上问题,但完全不用BTrace的Java工程师,都是可疑的。BTrace的最大好处,是可以通过...转载 2018-08-31 16:45:07 · 252 阅读 · 0 评论 -
fastJson的@JSONField和jackson的@JsonProperty使用
一、jackson的@JsonProperty使用<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.3</vers...原创 2018-09-12 16:29:47 · 22606 阅读 · 2 评论 -
maven神器插件enforce查找重复类
背景通过maven的GAV完全可以避免同一个构件在项目中使用===》也就是打包出来最终同一个GA的构件一定只有一个但是除了这种GA构件唯一 我们在java项目中还经常碰到class完全相同的场景 比如典型的就是mail参考邮件无法发送之maven项目引入新依赖问题像这种构件名称不一样导致出现class重复的问题也不再少数对于这种问题怎么解决呢???对策其实说难不难 说易...转载 2018-10-08 09:32:21 · 2800 阅读 · 0 评论 -
代理模式之静态代理与动态代理
在学习Spring框架的时候,有一个重要的思想就是AOP,面向切面编程,利用AOP的思想结合Spring的一些API可以实现核心业务与辅助业务的分离,即可以在执行核心业务时,将一些辅助的业务加进来,而辅助业务(如日志,权限控制等)一般是一些公共业务,这样就实现了两者的分离,使得核心业务的代码更加纯粹,而且辅助业务也能得到复用,这一篇笔记是当时学习spring的时候写的,使用springAPI以及自转载 2017-07-13 10:13:02 · 247 阅读 · 0 评论 -
JAVA基本面试一
A、String、StringBuffer与StringBuilder的区别?1)、在执行速度方面的比较:StringBuilder > StringBuffer;2)、String类中使用字符数组保存字符串,如private final char value[];,因为有“final”修饰符,所以可以知道String对象是不可变的。StringBuilder与StringBuff...原创 2016-12-23 11:44:31 · 255 阅读 · 0 评论 -
Java命令学习系列(1):Jps
jps位于jdk的bin目录下,其作用是显示当前系统的java进程情况,及其id号。 jps相当于Solaris进程工具ps。不象”pgrep java”或”ps -ef grep java”,jps并不使用应用程序名来查找JVM实例。因此,它查找所有的Java应用程序,包括即使没有使用java执行体的那种(例如,定制的启动 器)。另外,jps仅查找当前用户的Java进程,而不是当前系统中的所有进原创 2016-12-01 22:20:40 · 432 阅读 · 0 评论 -
Java调优经验谈
对于调优这个事情来说,一般就是三个过程:性能监控:问题没有发生,你并不知道你需要调优什么?此时需要一些系统、应用的监控工具来发现问题。性能分析:问题已经发生,但是你并不知道问题到底出在哪里。此时就需要使用工具、经验对系统、应用进行瓶颈分析,以求定位到问题原因。性能调优:经过上一步的分析定位到了问题所在,需要对问题进行解决,转载 2016-12-08 14:58:06 · 457 阅读 · 0 评论 -
Java程序员应该知道的10个调试技巧
摘要:调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷。对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序。本文介绍了Java程序员必知的10个调试技巧,保证让你受益匪浅!调试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序。但这里介绍的调试方法基本都是通用的,也适用原创 2017-01-03 15:15:50 · 250 阅读 · 0 评论 -
线程数究竟设多少合理
一、需求缘起Web-Server通常有个配置,最大工作线程数,后端服务一般也有个配置,工作线程池的线程数量,这个线程数的配置不同的业务架构师有不同的经验值,有些业务设置为CPU核数的2倍,有些业务设置为CPU核数的8倍,有些业务设置为CPU核数的32倍。“工作线程数”的设置依据是什么,到底设置为多少能够最大化CPU性能,是本文要讨论的问题。 二、一些共性认知转载 2016-12-26 11:17:07 · 298 阅读 · 0 评论 -
聊聊clean code
clean code,顾名思义就是整洁的代码,或者说清晰、漂亮的代码,相信大多数工程师都希望自己能写出这样的代码。也许这是个千人千面的话题,每个工程师都有自己的理解。比如我,从一个天天被骂代码写得烂的人,逐渐学习成长,到现在也能写的出“人模人样”的代码来了。这期间算是积累了一点经验心得,想和大家分享,抛砖引玉。本文主要针对面向对象编程的clean code来阐述,面向过程代码的思路转载 2017-02-11 15:13:04 · 1545 阅读 · 1 评论 -
一图读懂JVM架构解析
本文阐述了JVM的构成和组件,配图清晰易懂,是学习Java开发者的入门必读文章。每个Java开发人员都知道字节码经由JRE(Java运行时环境)执行。但他们或许不知道JRE其实是由Java虚拟机(JVM)实现,JVM分析字节码,解释并执行它。作为开发人员,了解JVM的架构是非常重要的,因为它使我们能够编写出更高效的代码。本文中,我们将深入了解Java中的JVM架构和JVM的各个转载 2017-03-10 15:20:52 · 367 阅读 · 0 评论 -
你真的会用Gson吗?Gson使用指南(一)
JSON (官网) 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、FastJson等。该系列其它文章你真的会用Gson吗?Gson使用指南(一)你真的会用Gson吗?Gson使用指南(二)你真的会用Gson吗?Gson使用指南原创 2017-03-28 20:51:03 · 612 阅读 · 0 评论 -
连接池原来这么简单
应网友要求,写一写连接池实现细节。 一、如何通过连接访问下游工程架构中有很多访问下游的需求,下游包括但不限于服务/数据库/缓存,其通讯步骤是为:(1)与下游建立一个连接(2)通过这个连接,收发请求(3)交互结束,关闭连接,释放资源 这个连接是什么呢,通过连接怎么调用下游接口?服务/数据库/缓存,官方会提供不同语言的Driver、Doc转载 2017-04-01 11:50:18 · 339 阅读 · 0 评论 -
OkHttp使用完全教程
上一节我们讲述了Http请求的过程, 这一节我们就讲述下OkHttp是怎么完成Http请求的.(为了更好的理解这节内容,强烈推荐上一节文加图, 理解Http请求与响应)1. 历史上Http请求库优缺点在讲述OkHttp之前, 我们看下没有OkHttp的时代, 我们是如何完成http请求的.在没有OkHttp的日子, 我们使用HttpURLConnection或者HttpCl转载 2017-04-11 15:45:39 · 1025 阅读 · 0 评论 -
Visualizing Garbage Collection Algorithms
Visualizing Garbage Collection AlgorithmsMost developers take automatic garbage collection for granted. It’s just another amazing feature provided by our language run-times to make our jobs转载 2017-04-02 11:04:15 · 480 阅读 · 0 评论 -
Can't connect to X11 window server的问题研究
情境:java web程序中,页面包含图形的展示,是使用jfreechart来开发的。war包部署在RHEL 5.5环境下的tomcat中。1 在服务器(服务器默认启动为图形界面)本机上启动tomcat,在客户端浏览器上查看jfreechart图形正常;2 远程通过ssh启动服务器上的tomcat,在客户端浏览器上查看jfreechart图形为小红叉; 先将异常部分贴出:...转载 2018-10-09 17:19:05 · 15555 阅读 · 1 评论