文章分类 -  java

摘要:这是jvm优化系列第二篇: jvm优化——垃圾回收 通过上一篇的jvm垃圾回收知识,我们了解了jvm对内存分配以及垃圾回收是怎么来处理的。理论是指导实践的工具,有了理论指导,定位问题的时候,知识和经验是关键基础,数据可以为我们提供依据。 在常见的线上问题时候,我们多数会遇到以下问题: 内存泄露 某个 阅读全文
posted @ 2018-10-08 21:59 rocky-2013 阅读(622) 评论(0) 推荐(0)
摘要:垃圾回收算法与 JVM 垃圾回收器综述 我们常说的垃圾回收算法可以分为两部分:对象的查找算法与真正的回收方法。不同回收器的实现细节各有不同,但总的来说基本所有的回收器都会关注如下两个方面:找出所有的存活对象以及清理掉所有的其它对象——也就是那些被认为是废弃或无用的对象。Java 虚拟机规范中对垃圾收 阅读全文
posted @ 2018-10-08 21:50 rocky-2013 阅读(125) 评论(0) 推荐(0)
摘要:1 这些都是什么# 既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输。这里就要使用到TCP/IP协议。 1.1 TCP/IP协议组## TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成。 I 阅读全文
posted @ 2018-10-08 21:43 rocky-2013 阅读(141) 评论(0) 推荐(0)
摘要:1 JVM组成结构? JVM组成结构 JVM = 类加载器(classloader) + 执行引擎(execution engine) + 运行时数据区域(runtime data area) 2 JVM运行时数据区域? JVM运行时数据区域 3 什么是程序计数器? 当前线程所执行的字节码的行号指示 阅读全文
posted @ 2018-10-08 21:38 rocky-2013 阅读(72) 评论(0) 推荐(0)
摘要:面向对象的三大特性 1.封装 所谓封装,就是将客观事物封装成抽象的类,并且类可以把数据和方法让可信的类或者对象进行操作,对不可信的类或者对象进行隐藏。类就是封装数据和操作这些数据代码的逻辑实体。在一个类的内部,某些属性和方法是私有的,不能被外界所访问。通过这种方式,对象对内部数据进行了不同级别的访问 阅读全文
posted @ 2018-09-26 22:16 rocky-2013 阅读(235) 评论(0) 推荐(0)
摘要:SPI 简介 SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制。 目前有不少框架用它来做服务的扩展发现, 简单来说,它就是一种动态替换发现的机制, 举个例子来说, 有个接口,想运行时动态的给它添加实现,你只需要添加一个实现, 而后,把新加 阅读全文
posted @ 2018-09-19 20:31 rocky-2013 阅读(76) 评论(0) 推荐(0)
摘要:一、Thread Dump介绍 1.1什么是Thread Dump? Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活 阅读全文
posted @ 2018-09-06 15:32 rocky-2013 阅读(238) 评论(0) 推荐(0)
摘要:转载只为收录,原文地址:https://www.cnblogs.com/skywang12345/p/3344137.html 摘要 Java Annotation是JDK5.0引入的一种注释机制。 网上很多关于Java Annotation的文章,看得人眼花缭乱。Java Annotation本来 阅读全文
posted @ 2018-08-29 15:41 rocky-2013 阅读(227) 评论(0) 推荐(0)
摘要:1. 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。 什么是泛型?为什么要使用泛型? 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法 阅读全文
posted @ 2018-08-23 09:51 rocky-2013 阅读(349) 评论(0) 推荐(0)
摘要:转载只为收录,原文地址:https://www.cnblogs.com/qjjazry/p/6581568.html 首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数 阅读全文
posted @ 2018-08-22 09:44 rocky-2013 阅读(72) 评论(0) 推荐(0)
摘要:本文是学习了《深入理解Java虚拟机》之后的总结,主要内容都来自于书中,也有作者的一些理解。一是为了梳理知识点,归纳总结,二是为了分享交流,如有错误之处还望指出。(本文以jdk1.7的规范为基础)。 文章对JVM内存区域分布、JVM内存溢出分析、JVM垃圾回收算法/垃圾收集器、JVM性能调优工具及技 阅读全文
posted @ 2018-08-12 22:20 rocky-2013 阅读(71) 评论(0) 推荐(0)
摘要:使用 Semaphore是计数信号量。Semaphore管理一系列许可证。每个acquire方法阻塞,直到有一个许可证可以获得然后拿走一个许可证;每个release方法增加一个许可证,这可能会释放一个阻塞的acquire方法。然而,其实并没有实际的许可证这个对象,Semaphore只是维持了一个可获 阅读全文
posted @ 2018-08-01 11:07 rocky-2013 阅读(661) 评论(0) 推荐(0)
摘要:读写锁ReentrantReadWriteLock简介 ReentrantReadWriteLock是ReadWriteLock接口的实现,ReentrantReadWriteLock中有两个静态内部类:ReadLock读锁和WriteLock写锁,这两个锁实现了Lock接口,ReentrantRe 阅读全文
posted @ 2018-08-01 10:42 rocky-2013 阅读(1418) 评论(0) 推荐(0)
摘要:ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁。读锁可以在没有写锁的时候被多个线程同时持有,写锁是独占的。 所有读写锁的实现必须确保写操作对读操作的内存影响。换句话说,一个获得了读锁的线程必须能看到前一个释放的写锁所更新的内容。 读写锁比互斥锁允许对于共享数据更大程度的并发。每次只 阅读全文
posted @ 2018-08-01 10:41 rocky-2013 阅读(417) 评论(0) 推荐(0)
摘要:Netty强大的地方,是他能方便的实现自定义协议的网络传输。在上一篇文章中,通过使用Netty封装好的工具类,实现了简单的http服务器。在接下来的文章中,我们看看怎么使用他来搭建自定义协议的服务器。要做到这点,第一步要做的,就是要自定义编码器和解码器,这就是我们这一章主要讲的内容。 Netty入门 阅读全文
posted @ 2018-07-11 21:38 rocky-2013 阅读(993) 评论(0) 推荐(0)
摘要:netty.png 认识Http请求 在动手写Netty框架之前,我们先要了解http请求的组成,如下图: HTTP request component parts HTTP Request 第一部分是包含的头信息 HttpContent 里面包含的是数据,可以后续有多个 HttpContent 部 阅读全文
posted @ 2018-07-11 21:37 rocky-2013 阅读(342) 评论(0) 推荐(0)
摘要:Netty 什么是Netty? Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。 Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke's Choice Award,见https:/ 阅读全文
posted @ 2018-07-05 10:59 rocky-2013 阅读(124) 评论(0) 推荐(0)
摘要:原文地址:http://blog.csdn.net/hsuxu/article/details/9467651 java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包。可见CAS的重要性。 CAS CAS:Compare and Swap, 翻译成比较并交换。 ja 阅读全文
posted @ 2018-06-27 07:03 rocky-2013 阅读(98) 评论(0) 推荐(0)
摘要:一、概述 谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)! 类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLo 阅读全文
posted @ 2018-06-26 21:37 rocky-2013 阅读(97) 评论(0) 推荐(0)
摘要:这是一篇转载文章,只为收录,原文地址:http://blog.csdn.net/anxpp/article/details/51512200 1、BIO编程 1.1、传统的BIO编程 网络编程的基本模型是C/S模型,即两个进程间的通信。 服务端提供IP和监听端口,客户端通过连接操作想服务端监听的地址 阅读全文
posted @ 2018-04-03 10:04 rocky-2013 阅读(170) 评论(0) 推荐(0)