自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (3)
  • 收藏
  • 关注

转载 常见的垃圾回收器

1.JDK诞生 Serial追随 提高效率,诞生了PS,为了配合CMS,诞生了PN,CMS是1.4版本后期引入,CMS是里程碑式的GC,它开启了并发回收的过程,但是CMS毛病较多,因此目前任何一个JDK版本默认是CMS 并发垃圾回收是因为无法忍受STW(Stop-The-World)2.Serial年轻代 串行回收单CPU效率最高,虚拟机是Client模式的默认垃圾回收器。Serial回收器使用单线程进行垃圾回收,使用复制算法。在 HotSpot 虚拟机中,使用-XX:+UseSerialGC 参..

2020-06-15 17:02:04 240

转载 JMM及类加载JVM调优总结

1:类加载-初始化 1. 加载过程 2. Loading 3. 双亲委派,主要出于安全来考虑2. LazyLoading 五种情况1. –new getstatic putstatic invokestatic指令,访问final变量除外–java.lang.reflect对类进行反射调用时–初始化子类的时候,父类首先初始化–虚拟机启动时,被执行的主类必须初始化–动态语言支持java.lang.invoke.MethodHandle解析的结果为REF_g...

2020-06-15 16:51:40 1670 1

转载 触发JVM进行Full GC的情况及应对策略

堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但...

2019-03-06 09:44:09 258

转载 深入理解JVM(八)——HotSpot垃圾收集器详解

HotSpot虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,没有最好的垃圾收集器,只有最适合的垃圾收集器。我们可以根据自己实际的应用需求选择最适合的垃圾收集器。根据新生代和老年代各自的特点,我们应该分别为它们选择不同的收集器,以提升垃圾回收效率。新生代垃圾收集器1. Serial垃圾收集器单线程只开启一条GC线程进行垃圾回收,并且在垃圾回收过程中停止一切用户线程,从而用...

2019-03-06 09:39:54 230

转载 深入理解JVM(七)——垃圾收集策略详解

Java虚拟机的内存模型分为五个部分,分别是:程序计数器、Java虚拟机栈、本地方法栈、堆、方法区。这五个区域既然是存储空间,那么为了避免Java虚拟机在运行期间内存存满的情况,就必须得有一个垃圾收集者的角色,不定期地回收一些无效内存,以保障Java虚拟机能够健康地持续运行。这个垃圾收集者就是平常我们所说的“垃圾收集器”,那么垃圾收集器在何时清扫内存?清扫哪些数据?这就是接下来我们要解决的...

2019-03-06 09:39:13 255

转载 深入理解JVM(六)——对象内存的分配策略

Java所承诺的自动内存管理主要是针对对象内存的回收和对象内存的分配。在Java虚拟机的五块内存空间中,程序计数器、Java虚拟机栈、本地方法栈内存的分配和回收都具有确定性,一般在编译阶段就能确定需要分配的内存大小,并且由于都是线程私有,因此它们的内存空间都随着线程的创建而创建,线程的结束而回收。也就是这三个区域的内存分配和回收都具有确定性,垃圾回收器不需要在这里花费太大的精力。而Java...

2019-03-06 09:38:14 198

转载 深入理解JVM(五)——JVM内存模型

JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是:1. 程序计数器2. Java虚拟机栈3. 本地方法栈4. 堆5. 方法区。下面对这五个区域展开深入的介绍。1. 程序计数器1.1. 什么是程序计数器?程序计数器是一块较小的内存空间,可以把它看作当前线程正在执行的字节码的行号指示器。也就是说,程序计...

2019-03-06 09:37:37 180

转载 深入理解JVM(四)——揭开HotSpot对象创建的奥秘

对象的创建过程当虚拟机遇到一条含有new的指令时,会进行一系列对象创建的操作:检查常量池中是否有即将要创建的这个对象所属的类的符号引用;若常量池中没有这个类的符号引用,说明这个类还没有被定义!抛出ClassNotFoundException;若常量池中有这个类的符号引用,则进行下一步工作;进而检查这个符号引用所代表的类是否已经被JVM加载;若该类还没有被加载,就找该类的class...

2019-03-06 09:36:41 170

转载 深入理解JVM(三)——类加载的时机

类的生命周期一个类从加载进内存到卸载出内存为止,一共经历7个阶段:加载——>验证——>准备——>解析——>初始化——>使用——>卸载其中,类加载包括5个阶段:加载——>验证——>准备——>解析——>初始化在类加载的过程中,以下3个过程称为连接:验证——>准备——>解析因此,JVM的类加载过程也可以概括...

2019-03-06 09:36:02 178

转载 深入理解JVM(二)——类加载的过程

通过之前的介绍可知,类加载过程共有5个步骤,分别是:加载、验证、准备、解析、初始化。其中,验证、准备、解析称为连接。下面详细介绍这5个过程JVM所做的工作。加载注意:“加载”是“类加载”过程的第一步,千万不要混淆。1. 加载的过程在加载过程中,JVM主要做3件事情:通过一个类的全限定名来获取这个类的二进制字节流,即class文件:在程序运行过程中,当要访问一个类时,若发现这个类...

2019-03-06 09:35:06 186

转载 深入理解JVM(一)——Class文件结构

什么是JVM的“无关性”?Java具有平台无关性,也就是任何操作系统都能运行Java代码。之所以能实现这一点,是因为Java运行在虚拟机之上,不同的操作系统都拥有各自的Java虚拟机,因此Java能实现“一次编写,处处运行”。而JVM不仅具有平台无关性,还具有语言无关性。平台无关性是指不同操作系统都有各自的JVM,而语言无关性是指Java虚拟机能运行除Java以外的代码!这听起来非常...

2019-03-06 09:33:35 202

转载 对于Dubbo一些面试题自己的答案

Dubbo      头几天瞧到《Java顶尖口试必问-Dubbo口试题汇总》,对于内里得难点本人试着答复少许,有错误得请民众指正。      Dubbo固然大概不革新了,可是背靠阿里得措施能力,中文报告得多样,非常合适很多几中小型分散式类型得开辟。一、Dubbo通讯协议      第一、dubbo Dubbo 缺省协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并...

2019-02-19 11:12:11 102

转载 史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!

Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉。下面我为大家准备了一些 Dubbo 常见的的面试题,一些是我经常问别人的,一些是我过去面试遇到的一些问题,总结给大家,希望对大家能有所帮助。1、Dubbo是什么?Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布...

2019-02-19 11:12:05 132

转载 Dubbo的底层原理

一、Duboo基本概念解释Dubbo是一种分布式服务框架。 Webservice也是一种服务框架,但是webservice并不是分布式的服务框架,他需要结合F5实现负载均衡。因此,dubbo除了可以提供服务之外,还可以实现软负载均衡。它还提供了两个功能Monitor 监控中心和调用中心。这两个是可选的,需要单独配置。Dubbo的计数架构图如下:我们解释以下这个架构图:Consume...

2019-02-19 11:11:56 122

转载 精通Dubbo——Dubbo支持的协议的详解

Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的。下面我们就针对Dubbo的每种协议详解讲解,以便我们在实际应用中能够正确取舍。dubbo协议缺省协议,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。 连接个数:单连接 连接方式:长连接 ...

2019-02-18 09:25:16 168

转载 10个常见的Redis面试"刁难"问题

导读:在程序员面试过程中Redis相关的知识是常被问到的话题。作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题。十分值得一读。作者简介:钱文品(老钱),互联网分布式高并发技术十年老兵,目前任掌阅科技资深后端工程师。熟练使用 Java、Python、Golang 等多种计算机语言,开发过游戏,制作过网站,写过消息推送系统和MySQL 中间件,实现过...

2019-02-18 09:24:52 99

转载 redis 面试总结篇

同样是针对面试被问了redis,来做的笔记:1. 使用Redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)(2) 支持丰富数据类型,支持string,list,set,sorted set,hash(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行(4) ...

2019-02-18 09:24:47 92

转载 redis常用数据类型 HyperLoglog

1.HyperLoglog简介HyperLoglog是redis新支持的两种类型中的另外一种(上一种是位图类型Bitmaps)。主要适用场景是海量数据的计算。特点是速度快。占用空间小。同样是用于计算,HyperLoglog在适用场景方面与Bitmaps方面有什么不同呢。我个人的理解是,Bitmaps更适合用于验证的大数据,比如签到,记录某用户是不是当天进行了签到,签到了多少天的时候。也...

2019-02-18 09:24:28 250

转载 redis GEO地理位置

edis目前已经到了3.2版本,3.2版本里面新增的一个功能就是对GEO(地理位置)的支持。地理位置大概提供了6个命令,分别为:GEOADD GEODIST GEOHASH GEOPOS GEORADIUS GEORADIUSBYMEMBER具体的功能如下:1.命令:GEOADD key longitude latitude member [longitude lati...

2019-02-18 09:24:24 117

转载 基于redis的setnx()、get()、getset()方法 分布式锁

一.redis命令讲解: setnx()命令:setnx的含义就是SET if Not Exists,其主要有两个参数 setnx(key, value)。该方法是原子的,如果key不存在,则设置当前key成功,返回1;如果当前key已经存在,则设置当前key失败,返回0。 get()命令:get(key) 获取key的值,如果存在,则返回;如果不存在,则返回nil; getset...

2019-02-18 09:24:12 226

转载 分布式缓存Redis之发布/订阅(Pub/Sub)

写在前面  本学习教程所有示例代码见GitHub:https://github.com/selfconzrr/Redis_Learning一、简介  SUBSCRIBE、UNSUBSCRIBE和PUBLISH 三个命令实现了发布与订阅信息泛型(Publish/Subscribe messaging paradigm),在这个实现中, 发送者(发送信息的客户端)不是将信息直接发送给特定的接收...

2019-02-18 09:23:47 120

转载 redisRDB持久化

redisRDB持久化转自:http://blog.csdn.net/u012658346/article/details/513857701、RDB文件  Redis是一个基于内存的数据库,数据库中的所有数据都是保存在内存中的。   当进程退出时,内存中的数据库状态也会全部丢失。为了解决这个问题,redis提供了RDB持久化功能,RDB持久化可以将redis保存在内存中的数据存储到...

2019-02-18 09:23:28 117

转载 Redis 总结精讲 看一篇成高手系统-4

本文围绕以下几点进行阐述1、为什么使用redis2、使用redis有什么缺点3、单线程的redis为什么这么快4、redis的数据类型,以及每种数据类型的使用场景5、redis的过期策略以及内存淘汰机制6、redis和数据库双写一致性问题7、如何应对缓存穿透和缓存雪崩问题8、如何解决redis的并发竞争问题 正文 1、为什么使用redis 分析:博主觉得...

2019-02-18 09:22:51 104

转载 Redis入门教程-超详细

目录【redis是什么】【redis的作者何许人也】【谁在使用redis】【学会安装redis】【学会启动redis】【使用redis客户端】【redis数据结构 – 简介】【redis数据结构 – strings】【redis数据结构 – lists】【redis数据结构 – 集合】【redis数据结构 – 有序集合】【redis数据结构 – 哈希...

2019-02-18 09:22:33 2330 1

转载 select、poll、epoll之间的区别总结[整理]

  select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无需自己负责进行读写,异步I/O的实现会负责把数据从内核拷贝...

2019-02-15 10:22:16 88

转载 IO多路复用之epoll总结

1、基本知识  epoll是在2.6内核中提出的,是之前的select和poll的增强版本。相对于select和poll来说,epoll更加灵活,没有描述符限制。epoll使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中,这样在用户空间和内核空间的copy只需一次。2、epoll接口  epoll操作过程需要三个接口,分别如下:#includ...

2019-02-15 10:21:34 111

转载 IO多路复用之poll总结

1、基本知识  poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大。2、poll函数  函数...

2019-02-15 10:20:46 97

转载 IO多路复用之select总结

1、基本概念  IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:  (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。  (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。  (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。...

2019-02-15 10:19:52 107

转载 高性能网络编程(六):一文读懂高性能网络编程中的线程模型

1、前言本文接上篇《高性能网络编程(五):一文读懂高性能网络编程中的I/O模型》。随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力。本文(和上篇《高性能网络编程(五):一文读懂高性能网络编程中的I/O模型》)旨在为大家提供有用的高性能网络编程的I/O模型概览以及网络服务进程模型的比较,以揭开设计和实现高性能网络架构的神秘面纱。另外,作者的另一篇《新手入门:目前...

2019-02-15 10:15:08 666

转载 高性能网络编程(五):一文读懂高性能网络编程中的I/O模型

高性能网络编程(五):一文读懂高性能网络编程中的I/O模型阅读(12559) | 评论(2)收藏9 淘帖2 赞2JackJiang Lv.9    5 个月前 | |只看大图 1、前言 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力。本文(和下篇《高性能网络编程(六):一文读懂高性能网络编程中的线程模型》)旨在为大家提供有用的高性能网络编...

2019-02-15 10:14:23 339

转载 高性能网络编程(四):从C10K到C10M高性能网络应用的理论探索

1、前言本系列的上篇文章中,我们简要探讨了C10M问题的由来以及基本的技术实现思路(详见《高性能网络编程(三):下一个10年,是时候考虑C10M并发问题了》),本文内容由京东的资深架构师闫国旗分享,以分享者多年的实践和总结,进一步探讨解决C10M问题的理论可行性。对于中小型应用场景来说,实现单机10万、单机百万、单机千万的负载能力,对团队的运营成本以及产品投入其实差别不是太大。但对于大量、海量...

2019-02-15 10:13:20 428

转载 高性能网络编程(三):下一个10年,是时候考虑C10M并发问题了

1、前言在本系列文章的上篇中我们回顾了过云的10年里,高性能网络编程领域著名的C10K问题及其成功的解决方案(上篇请见:《高性能网络编程(二):上一个10年,著名的C10K并发连接问题》)。本文将讨论单机服务器实现C10M(即单机千万并发连接)的可能性及其思路。截至目前,40gpbs、32-cores、256G RAM的X86服务器在Newegg网站上的报价是几千美元。实际上以这样的硬件配置来...

2019-02-15 10:12:35 242

转载 高性能网络编程(二):上一个10年,著名的C10K并发连接问题

1、前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解。“C10K”概念最早由Dan Kegel发布于其个人站点,即出自其经典的《The C10K problem (英文PDF版、中文译文)》一文。正如你所料,过去的10年里,高性能网络编程技术领域里经过众多开发者的努力,已很好地解决了C10K问题,大家已开始关注并着手解决...

2019-02-15 10:11:28 123

转载 (转载)高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少

前言曾几何时我们还在寻求网络编程中C10K问题(有关C10K问题请见文章《The C10K problem(英文在线阅读、英文PDF版下载、中文译文)》)的解决方案,但是现在从硬件和操作系统支持来看单台服务器支持上万并发连接已经没有多少挑战性了。我们先假设单台服务器最多只能支持万级并发连接,其实对绝大多数应用来说已经远远足够了,但是对于一些拥有很大用户基数的互联网公司,往往面临的并发连接数是百...

2019-02-15 10:10:10 152

HttpClient 学习精髓

HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

2011-12-29

ehcache 专业教程

ehcache 专业教程 ehcache 专业教程 ehcache 专业教程 ehcache 专业教程 ehcache 专业教程

2010-04-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除