自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 阻塞队列-DelayQueue延迟队列使用入门及源码详解

简介延迟元素的无限制BlockingQueu,其中元素只能在其延迟到期后才能获取。当元素的getDelay(TimeUnit.NANOSECONDS)方法返回小于或等于零的值时,就会发生过期。即使未到期的元素无法使用take或poll删除,它们也被视为普通元素。此队列不允许 null 元素。方法说明方法 抛出异常 返回值 一直阻塞 超时退出 插入方法 add offer put offer(time) 移除方法 remove p

2021-01-25 19:53:49 341

原创 HttpServletResponse和HttpServletRequest取值的2个坑

有时候,我们需要用拦截器对Request或者Response流里面的数据进行拦截,读取里面的一些信息,也许是作为日志检索,也许是做一些校验,但是当我们读取里请求或者回调的流数据后,会发现这些流数据在下游就无法再次被消费了,这里面是其实存在着两个潜在的坑。坑一Request的 getInputStream()、getReader()、getParameter()方法互斥,也就是使用了其中一个,再使用另外的两,是获取不到数据的。除了互斥外,getInputStream()和getReader()都只能使

2021-01-23 15:30:34 980

原创 MySQL:逻辑架构图解和InnoDB存储引擎详解

MySQL逻辑架构1.逻辑架构图基于下面的逻辑架构图,可以大致熟悉MySQL各个架构组件之间的协同工作关系。很经典的C/S架构风格,即客户端/服务端模式。2.分层描述客户端连接通常会进行连接池管理,连接用户权限认证,安全管理等操作。可以通过如下命令查看连接配置信息:SHOW VARIABLES LIKE '%connect%';可以看到最大连接和每个连接占用的内存等相关配置。核心功能第二层架构封装MySQL一系列核心操作,查询解析、优化、缓存、内置函数、触发器、视图等,跨

2021-01-22 21:27:36 171

原创 DbUtils简化JDBC操作数据库

DbUtils概述DbUtils是Apache提供的一个对JDBC轻量级封装的开源类库,使用它能够简化JDBC程序开发,同时不会影响程序性能。DbUtils API介绍DbUtils提供了org.apache.commons.dbutils.QueryRunner来操作数据库public QueryRunner(DataSource ds)通过数据库来构造QueryRunner对象 public int update(String sql, Object... params) throw.

2021-01-22 20:54:50 199

原创 Netty内存池泄漏问题

为了提升消息接收和发送性能,Netty针对ByteBuf的申请和释放采用池化技术,通过PooledByteBufAllocator可以创建基于内存池分配的ByteBuf对象,这样就避免了每次消息读写都申请和释放ByteBuf。由于ByteBuf涉及byte[]数组的创建和销毁,对于性能要求苛刻的系统而言,重用ByteBuf带来的性能收益是非常可观的。内存池是一把双刃剑,如果使用不当,很容易带来...

2018-12-10 16:20:28 649

原创 如何诊断和解决CPU高度消耗(100%)的数据库问题

概述很多时候我们的服务器可能会经历CPU消耗100%的性能问题.排除系统的异常,这类问题通常都是因为系统中存在性能低下甚至存在错误的SQL语句, 消耗了大量的CPU所致.本文通过一个案例就如何捕获这样的SQL给出一个通用的方法.问题描述:系统CPU高度消耗,系统运行缓慢1.首先通过Top命令查看发现在进程列表里,存在两个高CPU耗用的Oracle进城,分别消耗了47.7...

2018-12-01 18:33:42 301

原创 ElasticSearch分词器比较及使用方法

ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。Elasticsearch中,内置了很多分词器(anal...

2018-12-01 18:13:56 380

原创 四种东西永远不要放到数据库里

改进你的系统的最好的方法是先避免做“蠢事”。我并不是说你或你开发的东西“蠢”,只是有些决定很容易被人们忽略掉其暗含的牵连,认识不到这样做对系统维护尤其是系统升级带来多大的麻烦。图片 二进制数据 日志文件 短生命期数据图片和二进制数据既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是这样的!别的先不提,在很多数据库语言里,处理大字段都不是很容易。...

2018-10-31 22:07:20 182

转载 TCP和UDP的优缺点及区别

TCP优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接...

2018-10-31 20:46:00 402

转载 JVM内存结构、JVM GC的优化策略、实践优化总结

当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。优化前准备: 简单回顾JVM相关知识、介绍GC优化的一些通用策略。 优化方法: 介绍调优的一般流程:明确...

2018-10-23 19:50:10 316

转载 RPC服务和HTTP服务对比

很长时间以来都没有怎么好好搞清楚RPC(即Remote Procedure Call,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单地介绍一下两种形式的C/S架构,先说一下他们最本质的区别,就是RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看...

2018-10-22 15:58:25 112

原创 MySQL优化指南(简单指北)

当MySQL单表记录数过大时,增删改查性能都会急剧下降,所以我们本文会提供一些优化参考,大家可以参考以下步骤来优化:一、单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度。一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的,而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量...

2018-10-17 16:53:27 128

转载 记一次MySQL迁移并从MySQL5.6升级到5.7后查询慢了几十倍的问题

起因因为生产环境数据量越来越大,客户越来越多,项目功能也越来越多,项目本身也越来越多,导致之前的服务器内存、硬盘都已经渐渐的不够用了,当时出现了2种解决方案,增加服务器配置和新购服务器,但是就算是新增硬盘,也需要对数据库进行迁移,所以就采用了新购服务器的方案,并且因为之前用的是云盘,出现过IO占满的情况。所以对于新购的服务器采用了SSD硬盘,理论上速度会飞起来了,实际上我在新服务器上安装MySQ...

2018-10-17 16:33:04 1071

翻译 Java的new和newInstance的区别

问:初始化一个类,生成一个实例的时候;newInstance() 和 new 有什么区别?答:用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有两种创建对象方式?这个就要从可伸缩、可扩展,可重用等软件思想上解释了。下面一个简单的说明演示,要结果可以直接看最后。***********************************...

2018-10-17 15:46:49 198

空空如也

空空如也

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

TA关注的人

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