自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 RocketMQ延迟消息实现的方式以及具体实践

场景:如果一个商城业务需要实现以下功能,用户在下单后,如果用户未付款的情况下,30分钟后需要取消订单,让你来设计你会怎么设计?首先,针对这个问题实现的方式比较多,往小了说,如果是单机服务,不考虑持久化什么的,完全可以在服务中自主实现:1.使用JDK自带的 DelayQueue其实说是用DelayQueue,只是基于了这个queue的排序的特点,如果用 PaiorityQueue ,也就是常说的优先队列一样可以做到。以下是DelayQueue的例子代码,可以做到延迟消费,并且有随机性。

2021-09-02 09:36:39 1799

原创 Spring AOP @After,@Around,@Before执行的顺序以及可能遇到的问题

AOP中有@Before,@After,@Around,@AfterRunning注解等等。首先上下自己的代码,定义了切点的定义@Aspect@Componentpublic class LogApsect { private static final Logger logger = LoggerFactory.getLogger(LogApsect.class); ...

2018-11-23 17:03:39 68826 22

转载 一文搞懂 Redis 高性能之 IO 多路复用

最近在看Redis的IO线程模型,看到了这篇文章讲的比较好也通俗易懂,所以转载下来,方便以后再看。以下是原文的正文部分:相信大家在面试过程中经常会被问到:“单线程的 Redis 为啥这么快?”哈哈,反正我在面试时候经常会问候选人这个问题,这个问题其实是对 redis 内部机制的一个考察,可以牵扯出好多涉及底层深入原理的一些列问题。回到问题本身,基本的回答就两点: 完全基于内存 IO 多路复用 1、关于第 1 点比较好理解。Redis 绝大部分请求是纯粹的内存操

2021-07-20 14:54:55 1499

原创 Mybatis Cause: java.sql.SQLException: Invalid value for getLong()异常解析

首先,遇到这个问题的情况下就说明你的实体接收类重写了构造函数,并且你的构造函数无法对应上你的Sql查询语句。 我的Mybatis的版本是3.5.0 前阵子在用Mysql写select语句的时候,发生了Invalid value for getLong() 异常,Debug发现Mabatis在用Long类型为返回的Varchar赋值(这边赋值表示Mysql返回的Rs给Java的Entity赋值),用Long给String当然赋值不上,因此就报错了。 查...

2020-08-16 23:35:36 8368 3

原创 大话 KMP 算法

LeetCode上有一题,简单难度的,以下是原题这个题目应该刷LeetCode的同学大部分都刷到过,比较荒谬的是可以直接用 indexOf 方法实现,并且是最优的解法,看到评论以后一片哗然,大家扯到最多的是这道题就应该用KMP来做,如果用KMP做那这道题应该是困难级别的。所以看了这些评论以后,决定自己去摸索一下KMP的算法,以及大概其实现原理。 网上找了很多关于解释KMP算法的...

2020-04-13 19:34:56 3690

原创 Mybatis 多数据源事务是否生效问题

我们所有的程序员应该都使用过事务注解 @Transactional ,面试的时候大家或多或少的都能说出来一些东西 比如: 1.事务的隔离级别 2.事务在哪些情况下不生效,比如加在类上,方法上(public,private,protected) 3.事务的配置使用 等等的一系列问题,大部分的小伙伴应该对这些方面也是了如指掌,对答如流了。...

2020-01-17 16:35:23 4871

原创 Spring 统一异常处理的方式

最近帮公司面试的时候,问的最多的问题就是Spring统一异常处理的方式你知道哪几种?这本身并不是一个很难的问题,说实话,会一种方式在工作中完全就可以了。毕竟每种的方式其实都是八九不离十的。 1:AOP处理 因为现在Spring Boot的流行,所以很多人第一个想到的都是AOP。这里不做过多的介绍,之前的一篇博客中有说过关于AOP的一些运行机制 Spring AOP @A...

2019-11-27 13:33:06 3900

原创 Mysql 死锁引发的@Transactional 数据回滚

Spring框架中我们经常使用 @Transactional 注解来做事务,但是事务并不能保证有效性;以下是我遇到的问题,不一定完全正确,可以做个参考:在一个类上标记了 @Transactional,使得该类下的所有方法都以默认的事务方式运行。@Transactionalpublic class test(){ // 往A表中插入数据 public void A()...

2019-09-07 17:29:13 6132

原创 Redis 实现限流的三种方式

面对越来越多的高并发场景,限流显示的尤为重要。 当然,限流有许多种实现的方式,Redis具有很强大的功能,我用Redis实践了三种的实现方式,可以较为简单的实现其方式。Redis不仅仅是可以做限流,还可以做数据统计,附近的人等功能,这些可能会后续写到。第一种:基于Redis的setnx的操作 我们在使用Redis的分布式锁的时候,大家都知道是...

2019-05-30 23:37:24 52978 33

原创 RocketMQ 多个实例消息聚集在一个实例的坑

RT。上周有个问题一直未解决,先说需求:有A和B两个实例的RocketMQ,并不是集群关系。A的实例是服务器本地的RocketMQ,B的实例是阿里云上所购买的实例。在JAVA代码中,要做到往A发消息的时候也要往B推送消息。光看需求,其实so easy。因为自己对RocketMQ不是很了解,就“天真”的认为只是调用两个实例化对象的send方法而已。实际上这里蕴藏着一个深坑。用过Ro...

2019-05-20 21:06:56 11337

原创 RedisTemplate下Redis分布式锁引发的系列问题

自己的项目因为会一直抓取某些信息,但是本地会和线上经常一起跑,造成冲突。这其实就是我们常说的分布式集群的问题了,本地和线上的服务器构成了集群以及QPS为2的小并发(其实也不叫并发,不知道拿什么词形容?)。 首先,分布式集群的问题大家都知道,会造成数据库的插入重复问题,会造成一系列的并发性问题。 解决的方式呢也大概如下几点,百度以及谷歌上都能搜到的解决方式:...

2019-04-27 19:49:37 21253 19

原创 静态代理,jdk动态代理以及Cglib区别

众所周知,Spring AOP中涉及到了动态代理模式,那么有动态代理相应的就会有静态代理。那么动态代理分为哪几种,相对应的区别又是什么呢? 首先什么是代理? 找一个东西或者一个人去帮你做事,比如常说的中介就是一个代理,各大经销商的代理商等等。JAVA中的代理即是指将自己的事情委派给别人帮忙去完成。 静态代理:代理的是程序员已经创建好的类,也就是说当前仅...

2019-04-16 21:10:36 3703

原创 关于MySql的索引原理以及优化原则

在面试或者实际的工作中,我们都会遇到会需要优化MySql的场景,那么优化MySql的原理到底是什么呢。 曾经看过一篇公众号文章,具体阐述了MySql的优化原理,所以我的绝大部分见解是基于这篇文章之上,其他部分是自己参考了其他的博客包括查询了大量的资料获得的经验。 首先盗一张图来看下MySql的优化原理吧,方便大家更方便的理解MySql,以下是MySql的运行图...

2019-03-27 23:58:26 4565

原创 Synchronized下的自旋锁、偏向锁、轻量级锁以及重量级锁(这是一篇有味道的博客)

在理解Synchronized中的锁时,需要先了解一下CAS,CAS在应用中有很多的用途。什么是CAS?CAS的全名叫做Compare andSwap,翻译过来就是先比较再交换,在JAVA的并发包中很多的类用到了这个技术,也和数据库的乐观锁机制是一样的。举个栗子说明下 1。第一步拿到需要修改的对象 2。第二步修改当前对象的值 3。将当前的对象...

2019-03-14 21:21:14 4641 1

原创 记录一下蚂蚁金服的电话面试

明知道自己肯定达不到阿里的要求的,所以自己把相关的面试问题都记录下来,以便以后复习使用。1.你常用的设计模式有哪些?2.工厂模式和策略模式的区别有哪些?3.什么情况下你会用工厂模式或者策略模式?4.RabbitMQ在你的服务中你是怎样使用的?5.消息的持久化如何实现?6.考虑多种特殊环境下,怎样使得消息不丢失,不重复消费?(服务宕机,队列溢出等情况)7.RabbitMQ...

2019-02-19 18:28:47 4298

原创 个人理解简单工厂模式和策略模式的区别

刚刚接触设计模式的时候,我相信单例模式和工厂模式应该是用的最多的,毕竟很多的底层代码几乎都用了这些模式。自从接触了一次阿里的公众号发的一次文章关于 DDD的使用 以后,就逐渐接触了策略模式。现在在项目中运用最多的也是这几种设计模式了,用了设计模式给我的感受就是感觉代码没那么冗余了,再注入一点贫血,充血模型之后,感觉在 service 层面代码看上去很舒服很简洁。 首先...

2019-01-24 14:41:59 38125 26

原创 Rest风格下验证POST和GET请求

HTTP分为两种请求,GET以及POST。现如今,请求中都会带有大量的验证字符。 我验证的方式一般分为两种: 1。用当前的时间生成一个时间戳,然后用这个时间戳加盐的方式去用MD5或者其他的加密方式生成一个key。将这些字符传到后台以后后台接收这些参数,然后以特定的格式在后台再以同样的公式生成key,与前台传过来的key进行比对。 2。前台...

2019-01-09 23:44:14 5637

原创 redis结合spring的事务使用

最近有一个需求,一个接口需要去包另外的3个接口,接口之间的数据相互联系相互依赖,如果有一个接口发生异常或者在主逻辑之中发生异常,那么所有此次产生的数据变化都需要回滚。-------------------------------------------------------------------------------------------------------------------...

2018-12-19 14:57:51 5828

原创 mybaits一级缓存和二级缓存的实现

近来看了一下关于mybaits的一些缓存讲解的文章,然后自己也顺着文章看了一下mybaits底层的源码。(本文部分内容转载于美团的 聊聊MyBatis缓存机制 文章)目前而言,myabits是最流行的dao层框架,简洁,易上手,开箱即用,但是如果不了解一下底层的东西,可能会造成其他的问题。比如造成的脏数据。首先谈的肯定是mybaits的工作原理,大家都知道mybaits有一级缓存和...

2018-12-10 20:32:00 3830

原创 java公平锁,非公平锁,CAS,AQS的一些事情

PS:该文章是借鉴掘金的 石衫的架构笔记附上借鉴的所有链接:大白话聊聊Java并发面试问题之Java 8如何优化CAS性能?【石杉的架构笔记】大白话聊聊Java并发面试问题之谈谈你对AQS的理解?【石杉的架构笔记】大白话聊聊Java并发面试问题之公平锁与非公平锁是啥?【石杉的架构笔记】谈到公平锁和非公平锁,首先要引入2个概念。一个是CAS,一个是AQS。CAS:全名叫做C...

2018-12-07 18:36:06 6527

原创 java指定线程执行顺序

众所周知,指定java线程的执行顺序一般都是通过线程间的join方法比如有3个线程,t1,t2,t3。如果我们需要将线程执行顺序调整为 t3 -> t2 -> t1。那么在t3的线程中加入t2.join,t2的线程中加入t1.join方式即可解决。第二种方式我们可以用线程池解决。public class ThreadYield extends Thread {...

2018-12-06 11:43:11 4164

原创 Spring boot Java Mail 邮件发送

Spring boot自带了发送邮件的功能,因此在我们自己的项目中可以引用一下邮件发送。顺势写了一个小Demo,并且把遇到的坑记录下来。首先需要在pom文件中引入相对应的jar包<dependency> <groupId>org.springframework.boot</groupId> <art...

2018-11-23 15:21:16 3802

原创 记 RedisTemplate 和 Cacheable 注解

最近一直在找关于 redisTemplate 和 redisCache等一系列注解的区别。奈何没有找到。所以自己写了demo试下 首先,单从操作Redis来说,我觉得两者并没有什么区别。但是 redisCache 从单词就可以看出。这个是缓存效果。即不经过任何的关系型和非关系型数据库。 先是 redisTemplate 操作redis,当redis中没有当前的key时,查找sql...

2018-11-15 19:38:14 10519 7

原创 数据库主从服务器遇到的坑。

数据库主从配置,我两台服务器配置的mysql都是5.6版本的,所以针对my.cnf文件中添加对应的host-name等一系列参数是没用的。所以需要另一种命令行的形式去设置。详见参考原文链接:https://www.jianshu.com/p/50e2dbd2d449 遇到的坑!问题来了!服务器下午一直在报错  Last_IO_Error: error connecting to...

2018-09-18 17:01:10 926

原创 mybaits-config配置

针对无法进行读取mybaits-config的配置。spring boot中mybaits-config.xml的文件配置首先上mybaits-config.xml的文件内容&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DT...

2018-08-07 11:14:07 680

原创 spring boot热部署,修改java代码不重启

我用的idea插件,虽然每次用虚拟机重启快很多,但是每次看到有日志打印项目重启感觉还是不舒服。所以部署了不重启的方法 首先和其他的类似,idea中的配置 registry 勾选 compiler.automake.allow.when.app.running然后 compiler 中勾选 build project automatically引入对应的maven包&lt;de...

2018-08-07 11:07:56 9162 12

原创 logback配置日志文件目录

配置log的时候遇到了很多问题。这里记录一下配置过程。方便以后再用。logback-dev.xml的配置文件&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;configuration&gt; &lt;property name="LOG_DIR" value="/data/log/jcl/" /&gt;

2018-08-07 11:01:31 15257

原创 开发聊天通讯所遇到的问题

    目前正在开发一个网页实时聊天,支持web和手机端即时通讯,支持web多页面的接收和发送,仅支持单对单的聊天模式。    开发过程中遇到了一些问题,记载下来以供以后参考:    1。在技术选型方面,目前实现聊天及时通讯的方式无非就是ajax,短轮询,长轮询,长链接。但是在网上找了许多的资料以后,发现最适合于开发的是icomet框架以及h5新支持的websocket。找了很久的icomet的d...

2018-03-06 14:05:34 344

Redis数据结构.pptx

针对Redis的高级数据结构PPT。该PPT一共14页,介绍了Zset的数据结构类型,以及跳表的数据结构。简单阐述了BitMap,HLL,Bloom Filter的原理以及一些常用的指令。针对Bloom Filter有一些自己的见解以及分析

2019-05-11

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

TA关注的人

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