自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis与memcache的区别

一、简介1、redisRedis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 ...

2019-09-30 11:44:19 346

原创 JDK 1.8中的 HashMap 有哪些优化

1、由 数组+链表 的结构改为 数组+链表+红黑树。旧版本的HashMap存在一个问题,即使负载因子和Hash算法设计的再合理,也免不了会出现拉链过长的情况,一旦出现拉链过长,则会严重影响HashMap的性能。于是,在JDK1.8版本中,对数据结构做了进一步的优化,引入了红黑树。而当链表长度太长(TREEIFY_THRESHOLD默认超过8)时,链表就转换为红黑树,利用红黑树快速增删改查的特点提高...

2019-09-29 18:21:40 1084

原创 【算法】将字符串B插入字符串A使产生的字符串是一个回文串,并统计回文个数

1、题目:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A = “...

2019-09-29 13:37:52 1403

原创 Spring Cloud 学习系列:(一)微服务开发框架——Spring Cloud

一、Spring Cloud 简介Spring Cloud是一个微服务框架,相比Dubbo等RPC框架, Spring Cloud提供的全套的分布式系统解决方案。Spring Cloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及和Spring Boot开发框架的集成。Spring Cloud为微服务架构开发涉及的配置管理,服务治理,熔断机制,智能路由...

2019-09-26 23:52:15 585

原创 maven聚合项目以及module多模块的依赖关系

一、前言最近在新项目中发现了maven采用聚合的功能,顿时恍然大悟。博主之前项目中没有采用聚合功能,然后好多微服务都要一个个启动,当时觉得微服务很麻烦,原来是之前自己不了解maven的聚合功能,现在有了聚合功能,所有的微服务可以统一管理,想同时启动几个就几个,真的爽!!!二、Maven 聚合网上很多资料大多数是讲先建一个project项目,然后把src文件夹删除,然后再相应的建不同的modu...

2019-09-26 00:02:23 3082

原创 Spring Cloud与Docker微服务架构实战 pdf百度网盘下载

链接: https://pan.baidu.com/s/12fmLNmGrNH6GV4p0pkjfAQ 提取码: pgyc

2019-09-25 00:55:33 5127

原创 Netty权威指南(第2版) pdf百度网盘下载

链接: https://pan.baidu.com/s/1DfxG9qKU2fshi6ha1a8NkA 提取码: bmt4

2019-09-25 00:36:45 19927 55

原创 重新定义Spring Cloud实战 pdf百度网盘下载

链接: https://pan.baidu.com/s/1n0QbS011JZtHu0P_ORb3Lw 提取码: mhdp

2019-09-25 00:32:31 9146 10

原创 SpringBoot项目中集成Shiro进行权限管控

一、准备工作在开始本教程之前,请保证已经熟悉以下几点。Spring Boot 基本语法,至少要懂得 Controller 、 RestController 、 Autowired 等这些基本注释。其实看看官方的 Getting-Start 教程就差不多了。JWT (Json Web Token)的基本概念,并且会简单操作JWT的 JAVA SDK。Shiro 的基本操作,看下官方的 10...

2019-09-23 00:09:27 837

原创 用过哪些MQ,和其他mq比较有什么优缺点

一、常见消息中间件MQ介绍1、RocketMQ阿里系下开源的一款分布式、队列模型的消息中间件,原名Metaq,3.0版本名称改为RocketMQ,是阿里参照kafka设计思想使用java实现的一套mq。同时将阿里系内部多款mq产品(Notify、metaq)进行整合,只维护核心功能,去除了所有其他运行时依赖,保证核心功能最简化,在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构,目前主...

2019-09-20 23:37:10 5274

原创 如何保证消息的有序性

一、RabbitMQ架构RabbitMQ消息顺序错乱的场景:一个 queue,多个 consumer。比如,生产者向 RabbitMQ 里发送了三条数据,顺序依次是 data1/data2/data3,压入的是 RabbitMQ 的一个内存队列。有三个消费者分别从 MQ 中消费这三条数据中的一条,结果消费者2先执行完操作,把 data2 存入数据库,然后是 data1/data3。这不明显乱了...

2019-09-20 00:04:40 2994

原创 消息的重发以及补充策略

一、MQ消息发送1、发送端MQ-client(消息生产者:Producer)将消息发送给MQ-server;2、MQ-server将消息落地;3、MQ-server回ACK给MQ-client(Producer);4、MQ-server将消息发送给消息接受端MQ-client(消息消费者:Customer);5、MQ-client(Customer)消费接受到消息后发送ACK给MQ-s...

2019-09-18 23:05:09 2803

原创 SpringBoot项目中集成AOP

一、简介AOP(Aspect Oriented Programming)面向切面编程,想必大家都耳熟能详了吧,AOP是对OOP(面向对象)的一个补充。我们先来说下Spring吧,大家都知道它是一个框架,对于新手来说,越解释越抽象,越抽象也就越懵逼。我们可以换个角度来看,从功能的角度定义来看:Spring是一个库,一个Java库,它的功能提供了软件的框架,这个框架目的是使软件之间的逻辑更加清晰、配...

2019-09-17 23:34:56 785

原创 SpringBoot项目中自定义Filter过滤器、Listener监听器、Interceptor拦截器和Servlet容器

一、前言如果你是做后台开发,我相信对这几个很熟悉了,不熟悉的话也是有经常围绕在我们身边的,毕竟它们几个是Web开发的利器。下面我们就来自定义它们并写相应的demo。在启动类上添加@ServletComponentScan注解,我们来看下javadoc中关于@ServletComponentScan的描述:Enables scanning for Servlet components ({@...

2019-09-17 01:04:55 717

原创 MySQL百万数据删除表中重复数据只保留一条数据

看了网上方案,很多用到了关键字in,in适合类别少用的才效率高呀,而对于百万数据很多相同的话,直接导致索引失效,那就失去了这个关键字的意义了。我这里的方案是用存储过程:首先对有重复的name分组及查询出来,然后循环删除重复数据,相同的name只保留最大id的那一条。下面直接上存储过程:BEGIN DECLARE v_name INT(32); DECLARE v_maxid INT(10...

2019-09-15 13:06:54 1156

原创 MySQL中的innodb_flush_log_at_trx_commit参数

一、简介1、innodb_flush_log_at_timeout 这个参数的意思是刷新日志的时间,在mysql5.6版本中可以自定义,默认为1s。其与oracle有很大区别:在oracle中,有三种情况可以将日志缓冲区的数据写到在线日志文件中日志缓冲区中的记录达到1M每隔3秒日志缓冲区已经用了三分之一2、INNODB REDO日志:InnoDB为了保证日志的刷写的高效,使用了内存...

2019-09-15 00:59:03 4508

原创 MySQL使用存储过程30秒插入百万数据!!!

来了,老弟!!!没有骗你,30秒插入了百万数据!!!坐稳了,开车了。。。直接写个存储过程BEGIN DECLARE i INT DEFAULT 0; WHILE i < 1000000 DO INSERT INTO duplicated_user(name) VALUES ('edgar'); SET i = i + 1; END WHILE;END我这里直接在...

2019-09-15 00:43:35 2848 1

原创 MyBatis实现MySQL和Oracle的主键自增设置

MyBatis进行插入操作时,如果表的主键是自增的,针对不同的数据库相应的操作也不同。基本上经常会遇到的就是 Oracle Sequece 和 Mysql 自增主键。主要说明下在MyBatis中对于自增主键的配置。1、MySQL主键自增设置方法一:<insert id="insert" parameterType="Person" useGeneratedKeys="true" key...

2019-09-14 18:18:00 1209

原创 MySQL中存储过程和函数的区别及优缺点

一、为什么要使用存储过程和函数存储过程和函数,是用来实现一组关于表操作的SQL语句、可重复地执行操作数据库的集合。存储过程和函数可以简单的理解为一条或多条SQL语句的集合。存储过程和函数就是事先经过编译并存储在数据库中的一段SQL语句集合。存储过程和函数执行不是由程序调用,也不是手动启动,而是由事件触发、激活从而实现执行的。他们的主要区别是函数必须有返回值,而存储过程可以没有。二、存储过程...

2019-09-14 17:41:20 7889

原创 Java反射怎么调用静态(私有)方法和非静态(私有)方法

在一个类中声明一个静态方法、非静态方法、私有静态方法和私有非静态方法。public class StaticAndNoStaticTest { public static void staticMethod(String[] args) { for (String str : args) { System.out.println(str); } } ...

2019-09-14 16:35:41 11012

原创 调用A接口返回a耗时1分钟,调用B接口返回b耗时1分钟,怎么使得a+b在1分钟左右

不知道大家面试的时候有遇到这种类似的问题,面试官其实考察的知识点还是有那么多的。我觉得考察的知识点有:1、同步以及异步的选择2、并发编程带参数的异步调用一看这个问题,显然是选择异步,因为同步的话你得等调用A接口完成后,再调用B接口,这个耗时就2分钟了,显然不行。选择异步的话,A接口调用完和B接口调用完互不影响。AsyncController.javapackage com.riemann...

2019-09-13 18:50:07 998

原创 MySQL中timestamp、datetime和int类型的区别与优劣

一、三者的区别1、int占用4个字节建立索引之后,查询速度快条件范围搜索可以使用使用between不能使用mysql提供的时间函数结论:适合需要进行大量时间范围查询的数据表2、datetime占用8个字节允许为空值,可以自定义值,系统不会自动修改其值实际格式储存(Just stores what you have stored and retrieves the same...

2019-09-10 01:02:20 2432

原创 MySQL数据库设置时间字段为DateTime,展示给前台页面时,时间后面多了个.0

今天项目中碰到过这个问题,在考虑设计数据库表字段的时候,针对更新时间这个字段,我想到了datetime和timestamp两种类型,还有一种是date,我这里是要展示yyyy-MM-dd HH:mm:ss格式,而date类型是yyyy-MM-dd类型,所以date舍弃。关于datetime和timestamp两者的区别请戳下面链接:好了,了解完区别我们来看下针对时间后面多了个.0的问题怎么处理...

2019-09-09 22:45:53 3028 5

原创 MySQL数据库自增主键的间隔不为1的解决方法

今天新版本上线的时候,遇到了一个这样的问题,测试fvt环境的自增主键ID是每隔一位顺序增加,而上到lp类生产的环境,每插入一条数据,发现自增主键ID是每隔2增加。我首先想到的就是是不是类生产的环境的数据库的默认配置是每隔2的,带着这样的疑惑就来查看数据库不同环境的默认配置。fvt测试环境数据库配置:pr类生产环境数据库配置:哈哈哈,被我猜中了。下面就对auto_increment_i...

2019-09-09 19:25:10 4660

原创 Java校验时间是否为yyyyMMddHHmmss格式

之前我写过校验时间的博文,Java判断时间格式是否为yyyyMMddHHmmss的合法格式但感觉是原生的,感觉复杂了,今天刚好又碰到了这个需求,把它简化了并记录之。/** * 校验时间是否为 yyyyMMddHHmmss 格式 * @param str * @return */public static boolean checkDateTime(String str) { ...

2019-09-07 00:58:18 3524 2

原创 写一个字符串(如:www.jd.cn)反转函数的五种写法

话不多说,直接上代码。package com.algorithm.test;import org.apache.commons.lang.StringUtils;import java.util.Arrays;/** * @author riemann * @date 2019/09/05 23:05 */public class ConvertFunction { ...

2019-09-06 00:16:56 1005

原创 【数据结构】之二叉堆

一、二叉堆是什么?二叉堆 本质上就是一颗 二叉树 ,而且是完全二叉树。而根据根节点数据的不同又分为:最大堆 和 最小堆。完全二叉树:每一层都是二叉树,都被填满 ,除了最低/最下面的一层,并且所有的最底层顶点都尽力向左靠拢。什么是最大堆?父节点的值 永远 大于等于 两个 孩子节点 的值。什么是最小堆?父节点的值 永远 小于等于 两个 孩子节点 的值。二、二叉堆的特性自我调整:当插入...

2019-09-04 00:44:11 439

原创 消息队列的五个使用场景

一、简介消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题;实现高性能,高可用,可伸缩和最终一致性架构;使用较多的消息队列有ActiveMQ,RabbitMQ,RocketMQ,Kafka。二、消息队列使用场景以下介绍消息队列在实际应用中常用的使用场景。应用解耦,异步处理,流量削锋、日志处理和消息通讯五个场景。1、应用解耦场景说明:像我们公司的统一的管...

2019-09-02 00:16:25 1011

原创 源码解读之(六)DelayQueue

一、简介DelayQueue是一个支持延时获取元素的无界阻塞队列。里面的元素全部都是“可延期”的元素,列头的元素是最先“到期”的元素,如果队列里面没有元素到期,是不能从列头获取元素的,哪怕有元素也不行。也就是说只有在延迟期到时才能够从队列中取元素。DelayQueue非常有用,可以运用在以下两个应用场景:缓存系统的设计:使用DelayQueue保存缓存元素的有效期,使用一个线程循环查询De...

2019-09-01 01:54:17 512

空空如也

空空如也

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

TA关注的人

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