自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 两种开源分布式主键生成器简介

简单介绍两种开源分布式主键生成器,UidGenerator和Leaf。

2019-07-04 17:58:53 1095

原创 RabbitMQ自动扩展消费者源码分析

1.前言在 RabbitMQ异常监控及动态控制队列消费的解决方案 中,提供了一种在线动态修改消费者数量的方法,但使用该方法需要及时的监控队列消息的堆积情况,不能做到自动扩展(增加或减少)消费者数量,以应对偶发的消息堆积场景。通过阅读源码,发现RabbitMQ已经提供了一种自动扩展消费者数量的方法,现把具体实现的源码分析进行分享如下。2.SimpleMessageListenerCont...

2018-04-06 11:39:58 4181 4

原创 RabbitMQ异常监控及动态控制队列消费的解决方案

最近,随着系统的上线,在RabbitMQ的使用上遇到了一些问题,现将其分析总结及对应的解决方法分享出来,以便大家借鉴参考。如有不对的地方欢迎指正交流。1.遇到的问题(1)某个消费者线程因内存溢出而挂掉,造成对应的队列没有消费者,消息在MQ Server堆积,而系统缺少对该类异常的监控,无法及时有效的进行处理。 (2)在一些业务场景,消息的消费速度远低于生产速度,造成大量消息堆积在MQ...

2018-04-05 12:47:20 21716 6

原创 Springboot项目搭建有ftpClientPool的Ftp工具类

本文基于commons-pool2的ObjectPool接口构建了ftpClientPool,并以ftpClientPool为基础构建了FTPUtil工具类。可以实现FTPClient的复用,以减少频繁创建FTPClient对象而造成的性能开销;可以实现线程安全的并发访问FTP服务器。

2017-11-26 16:20:31 14464 7

原创 消费者比对RabbitMQ同步数据的解决方案

1.前言RabbitMQ数据同步一致性解决方案中,提出了使用方案“MQ+Redis+接口”来保证数据同步的一致性,其关键在于需要对消费者已接收成功数据的唯一标识与redis中的全量唯一标识进行比对,如果存在数据丢失,需要采用接口的方式进行丢失数据补偿。 本文提供两个进行数据比对的解决方案。2.方案一生产者定时或实时推送数据至MQ,消费者消费数据,然后通过定时任务比对是否有丢失的数据,...

2018-08-31 17:31:52 1534

原创 MySQL覆盖索引

正确地创建和使用索引是实现高性能查询的基础。本文简要介绍MySQL覆盖索引。覆盖索引根据查询的WHERE条件创建合适的索引,不过只是索引优化的一个方面。设计优秀的索引还应该考虑到整个查询,MySQL也可以使用索引来直接获取列的数据,这样就不需要读取数据行了。 如果一个索引包含或覆盖所有需要查询的字段的值,我们就成之为“覆盖索引”。覆盖索引的优点被索引覆盖的查询即为索引覆盖...

2018-05-01 15:56:50 812

原创 MySQL聚簇索引

正确地创建和使用索引是实现高性能查询的基础。本文简要介绍MySQL聚簇索引。聚簇索引聚簇索引不是一种单独的索引类型,而是一种数据存储方式。 在InnoDB中的聚簇索引实际上是在同一个结构中保存了B-Tree索引和数据行。当表有聚簇索引时,它的数据实际上存放在索引的叶子节点中。“聚簇”表示数据行和相邻的键值紧凑地存储在一起。因为无法同时把数据行存放在两个不同的地方,所以一个表只能有...

2018-05-01 14:35:32 610

原创 MySQL前缀索引

正确地创建和使用索引是实现高性能查询的基础。本文旨在介绍关于长字符列如何高效地使用索引,如果需要可以查阅MySQL索引类型了解MySQL常用的索引类型。前缀索引场景有时需要在很长的字符列(如BLOB、TEXT或很长的VARCHAR类型的列)上创建索引,这会造成索引特别大且慢。解决方案为了避免产生大且慢的索引,一种策略是使用MySQL索引类型中提到过的模拟哈希索引,另...

2018-04-30 22:07:38 5190

原创 MySQL索引类型

索引是存储引擎用于快速定位记录的一种数据结构,是优化查询性能最有效的手段。使用索引有如下三个优点:索引大大减少了服务器需要扫描的数据量;索引可以帮助服务器避免排序和临时表;索引可以将随机I/O变为顺序I/O。1. 索引类型索引有很多种类型,可以为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层而不是服务器层实现的。所以,没有统一的索引标准,不同的存储引擎的索引的工作...

2018-04-29 21:43:20 328

原创 RabbitMQ数据同步一致性解决方案

1.概述我们知道在使用RabbitMQ时,生产者将消息发布出去之后,消息是否顺利到达broker代理服务器呢?默认情况下发布操作没有任何信息返回给生产者,也就是生产者是不知道消息有没有顺利到达broker。如果在消息到达broker之前已经丢失了,那发布的消息就更不会到达队列并被消费者消费。如果出现上述情况,就会造成生产者发布的消息与消费者消费的消息不一致的问题。2.RabbitMQ自...

2018-03-29 21:22:20 17464 3

原创 垃圾收集器(一)

近期学习了JVM垃圾收集器与内存分配策略,现将部分学习笔记记录如下,以供今后使用。前言为了能使Java应用程序正常运行,JVM将内存数据分为程序计数器、虚拟机栈、本地方法栈、Java堆和方法区5个区域。其中程序计数器、虚拟机栈、本地方法栈3个区域是线程私有的,其生命随线程而生,随线程而亡;栈中的栈帧随着方法的进入和退出而执行着入栈和出栈操作,每个栈帧中分配的内存基本上在类结构确定时就已...

2018-03-19 22:57:32 122

原创 Java代理技术

前言Java代理分为静态代理与动态代理(jdk、cglib、javaassit等),它是整个java技术中最为重要的技术之一。其中,动态代理更是在很多java框架中得到广泛地使用,比如spring aop,mybatis,hibernate等等。使用场景代理模式是常用的java设计模式之一,它的理论依据就是java代理技术。 代理模式使用的场景很多,常见的有以下几种:因安全...

2018-02-28 23:05:04 358 1

转载 JPA和Spring-Data-JPA简介

JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束就现在Hibernate、TopLink等ORM框架各自为营的局面。

2017-10-27 14:42:33 212

原创 单点登录CAS技术概述

单点登录(简称SSO)是目前比较流行的服务于企业业务整合的解决方案之一,SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

2017-10-25 21:28:41 1003

原创 Spring中Logback日志配置详解

1.前言Logback日志是一款功能强大,使用最广泛的日志框架之一。下面给出logback在项目中配置方式,并对相关配置进行详细的解释。详细配置见官方文档:https://logback.qos.ch/manual/introduction.html.2.添加logback依赖<dependency> <groupId>org.slf4j<...

2017-10-19 15:47:15 976

原创 对象copy源码分析与性能测试

本文总结了对象copy常用的四个工具方法的实现原理及特点,对部分源码进行了分析,测试了四个工具方法的性能,并给出了结论。

2017-10-11 17:53:39 286

原创 Spring集成Mybatis配置与源码分析

本文详细介绍了spring集成mybatis的配置,并对相关源码进行了详细的分析。

2017-10-11 12:58:10 410

原创 Mybatis源码分析

Mybatis是当前最流行的持久层框架之一,本文介绍了使用mybatis的相关配置,并对主要的核心源码进行了详细的分析。

2017-10-11 11:43:32 869

原创 求最大值

二分法求最大值

2017-02-27 21:39:04 247

原创 安全漏洞

敏感COOKIE攻击 原理: 攻击者通过JS等客户端脚本获取被攻击者的敏感Cookie信息, 从而达到伪装成被攻击者的目的。 预防手段: 设置敏感CookiehttpOnly属性为true,使敏感cookie只能通过server端来进行访问。XSS攻击 跨站脚本攻击(Cross Site Scripting) 原理:  此攻击是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如J

2017-02-13 17:28:28 371

原创 在对象之间搬移特性

对象设计与重构

2016-09-30 21:51:08 542

原创 JVM内存模型

Java虚拟机内存模型是Java程序运行的基础。为了能使Java应用程序正常运行,JVM虚拟机将其内存数据分为程序计数器、虚拟机栈、本地方法栈、Java堆和方法区等部分。

2016-02-24 22:28:05 181

Eclipse中Git使用手册

详细介绍了在Eclipse中如何使用Git管理项目版本,从Git远程仓库导入项目,创建开发分支,合并代码等...

2017-03-20

最新JAVA编程题全集(50题及答案)

最新JAVA编程题全集(50题及答案)。对初学者很容易上手。

2013-07-16

MyEclipse快捷键大全

MyEclipse快捷键大全,记住这些快捷键,对提高你的编程效率有很大的帮助。

2013-07-16

空空如也

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

TA关注的人

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