自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 策略模式在业务中的实际应用

Part1策略模式结构图策略模式主要由以上三个身份组成,这里我们就不过多介绍策略模式的基础知识,默认大家已经对策略模式已经有了一个基础的认识。Part2业务需求现有一个广告点击数据埋点上报...

2021-11-01 10:58:35 14

原创 面试问题:ThreadLocalRandom类原理分析

1、Random类及其局限性publicintnextInt(intbound){if(bound<=0)thrownewIllegal...

2021-10-12 15:13:23 46

原创 揭开JVM中TLAB中的神秘面纱

在开始文章之前,我这里暂且认为大家已经明白了JVM创建对象分配内存地址的流程,也知道JVM内存划分。基于人道主义我还是放一张图吧,大家对照着看。JVM内存结构堆内存划分结构堆区分配内存是否...

2021-07-28 21:46:11 27

原创 记一次CPU过高排查过程

存在的问题上周突然在部署一点很简单的新业务之后,上线没多久突然OOM,大部分接口访问超时,甚至有的直接失败,刚开始以为是查询了什么了大数据导致的,结果看了下CPU,300%。排查思路最开始...

2021-06-22 20:00:00 30

原创 一文看懂JVM内存区域分布与作用

那么我们在开始介绍Java内存区域之前,我们先放一张内存区域的图,方便我们后面介绍的时候可以对照着看。须知,本文是根据JDK8来介绍的。程序计数器首先它是线程私有的,它也称为代码的行号指示器,字节码解释器就是通过改变程序计数器的位置来确定下一行要执行的代码,它不存在OOM。如果线程正在执行一个Java方法,那么它记录的是正在执行虚拟机字节码指令的地址,如果是一个本地方法那么它的值为空。Java虚拟机栈它也是线程私有的,它的声明周期和线程一致。每个线程创建时都会创建一个虚拟机栈,内部保存了一个个

2021-06-07 09:36:38 18 1

原创 一文看懂JVM内存分布与作用

那么我们在开始介绍Java内存区域之前,我们先放一张内存区域的图,方便我们后面介绍的时候可以对照着看。「须知」,本文是根据JDK8来介绍的。Java内存区域图程序计数器首先它是线程私有的,...

2021-06-06 12:18:25 20 1

转载 颠覆认知——Redis会遇到的15个「坑」,你踩过几个?

阅读本文大约需要 20 分钟。大家好,我是 Kaito。这篇文章,我想和你聊一聊在使用 Redis 时,可能会踩到的「坑」。如果你在使用 Redis 时,也遇到过以下这些「诡异」的场景,那...

2021-04-06 21:16:57 44

转载 CountDownLatch:别浪,等人齐再团!

一入王者深似海,从此对象是路人。哈喽观众老爷们大家好,我是战神吕布字奉先,今天给大家来一部吕布的教学视频!咳咳,不对。大家好,我是磊哥,今天给大家来一篇 CountDownLatch 的文...

2021-04-02 16:44:25 23

原创 移除List中的元素,你的姿势对了吗?

之前遇到对List进行遍历删除的时候,出现来一个ConcurrentModificationException 异常,可能好多人都知道list遍历不能直接进行删除操作,但是你可能只是跟我...

2021-01-19 09:10:00 52

转载 框架篇:linux网络I/O+Reactor模型

前言网络I/O,可以理解为网络上的数据流。通常我们会基于socket与远端建立一条TCP或者UDP通道,然后进行读写。单个socket时,使用一个线程即可高效处理;然而如果是10K个so...

2020-12-01 09:30:00 98

原创 为了一个HTTP请求问题,差点跟iOS干起来

本次斗殴事件起因全部归iOS,为啥这么说,http请求都不会发,瞎写的什么玩意(ps:他应该不会看到...)。在处理本次冲突中,意外发现了另外一个存在已久的bug,我们先说说这个玩意,再...

2020-11-25 08:30:00 162 5

原创 我的服务器接连被黑客攻击,我好难

最近在几台测试服务器上跑一些业务数据,但是过了几天服务器突然变的奇慢无比,敲个命令就像卡壳一样,有时候甚至都连接不上,最开始我以为是网络问题,就强行kill掉进程,重新跑一下进程,最后实...

2020-11-17 08:30:00 400 7

原创 Executors使用不当引起的内存泄漏

线上服务内存溢出这周刚上班突然有一个项目内存溢出了,排查了半天终于找到问题所在,在此记录下,防止后面再次出现类似的情况。先简单说下当出现内存溢出之后,我是如何排查的,首先通过jstack...

2020-09-08 19:38:10 730 2

原创 导致MySQL索引失效的几种常见写法

最近一直忙着处理原来老项目遗留的一些SQL优化问题,由于当初表的设计以及字段设计的问题,随着业务的增长,出现了大量的慢SQL,导致MySQL的CPU资源飙升,基于此,给大家简单分享下这些...

2020-09-06 15:15:41 3935 8

转载 为什么建议你使用枚举?

枚举是 JDK 1.5 新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如...

2020-06-23 20:56:39 455 1

原创 用户输入的虎狼之词,怎么校验之后不见了?

不知道你们有没有对用户输入的东西进行过敏感校验,如果不进行校验,用户属于一些攻击脚本,那么我们的服务就挂逼啦!所以我们首先需要通过过滤器将用户的数据读出来进行安全校验,这里面涉及到一个动...

2020-05-26 22:39:10 257

原创 登录成功后,如何同步用户产生的各种数据

前几篇我们介绍了如果通过RabbitMQ发布一个简单的消息,再到工作队列,多个消费者进行消费,最后再到工作队列的分发与消息的应答机制(ACK);之前我们分享的这几种模式,都是被消费之后就...

2020-05-18 22:15:13 1209

原创 RabbitMQ工作队列之公平分发消息与消息应答(ACK)

上篇文章中,我们讲了工作队列轮询的分发模式,该模式无论有多少个消费者,不管每个消费者处理消息的效率,都会将所有消息平均的分发给每一个消费者,也就是说,大家最后各自消费的消息数量都是一样多...

2020-05-13 22:39:06 487

原创 RabbitMQ如何高效的消费消息

在上篇介绍了如何简单的发送一个消息队列之后,我们本篇来看下RabbitMQ的另外一种模式,工作队列。什么是工作队列我们上篇文章说的是,一个生产者生产了消息被一个消费者消费了,如下图上面这...

2020-05-12 09:20:00 1357

原创 如何利用RabbitMQ生产一个简单的消息

最近业务中有有这样一个场景,就是用户在商城下单之后,如果30分钟没有付款,那么就需要将这个订单处理掉,要么直接删除,要么直接标识为失效状态,为什么要这么做?1、库存,用户在下单之后,会锁...

2020-05-08 22:31:40 879

转载 String性能提升10倍的几个方法!(源码+原理分析)

这是我的第 54 篇原创文章。String 类型是我们使用最频繁的数据类型,没有之一。那么提高 String 的运行效率,无疑是提升程序性能的最佳手段。我们本文将从 String 的源码...

2020-04-26 22:30:00 69

原创 Java内功系列-HashSet是如何保证元素不重复的

面试官:你能简单介绍List和Set有什么区别吗?小憨:List是一个有序的集合,在内存是连续存储的,可以存储重复的元素,List查询快,增删慢;Set是一个无序的集合,在内存中不连续,...

2020-04-25 20:16:55 475

原创 SpringBoot过滤器中的异常处理

在昨天的文章我跟大家分享了SpringBoot中异常的处理中,我说了一个需要注意的点,就是过滤器中抛出的异常无法被异常处理类捕获,然后这个朋友就问应该如何处理。其实处理这种问题的处理方式有好几种,那么我就简单分享一下我近期一个项目中的处理方式。Filter中的异常处理思路首先我们要明白,在过滤器中我们一般是不会写很长的业务逻辑的,一般都是做一些基础参数或者权限的校验,所以不会出现太过复杂的代...

2020-04-22 12:55:50 2201

原创 SpringBoot中的异常处理与参数校验
原力计划

兄弟们好,这次来跟老铁交流两个问题,异常和参数校验,在说参数校验之前我们先来说异常处理吧,因为后面参数的校验会牵扯到异常处理这块的内容。异常处理说到异常处理,我不知道大家有没有写过或者遇到过如下的写法。public void saveUser() { try { // 所有的业务内容,目测几百行 }catch (Exception e) {...

2020-04-21 09:09:24 656

原创 @PostConstruct注解,你该好好看看

在最近的工作中,get到一个很实用的注解,分享给诸位。痛点做过微信或支付宝支付的童鞋,可能遇到过这种问题,就是填写支付结果回调,就是在支付成功之后,支付宝要根据我们给的地址给我们进行通知,通知我们用户是否支付成功,如果成功我们就要去处理下面相应的业务逻辑,如果在测试服务,那么这个回调地址我们就需要填写测试服务的,如果发布到线上那么我们就需要改成线上的地址。针对上面的场景,我们一般都会通...

2020-04-07 22:56:28 191

原创 字符串、集合如何判断空值?看看成年人的正确操作

在平时的开发中,基本上都会用到字符串判断空值和集合判断空值的处理,还记得在刚干开发的时候,写的代码在现在看起来是真的有点Hello World,那么这次分享两个非常常用的方法,字符串非空判断和集合非空判断。字符串非空判断你有没见过下面的代码,要是没见过你就不配是一个程序员,我还写过呢!现在回过头来看感觉自己当年真的是太年轻了。public static void main(String[] ...

2020-01-10 13:59:06 156

原创 List如何根据属性排序?快来get吧

今天来分享一下集合的排序,说道排序其实工作中有很多的应用场景,现在大家应该普遍都用Java8了吧!那么我还是从Java7和Java8两个版本去分享一下排序,莱茨狗。首先我们创建一个Stu...

2020-01-09 22:30:00 609

原创 字符串、集合如何判断空值?看看成年人的正确操作

在平时的开发中,基本上都会用到字符串判断空值和集合判断空值的处理,还记得在刚干开发的时候,写的代码在现在看起来是真的有点Hello World,那么这次分享两个非常常用的方法,字符串非空...

2020-01-07 22:30:00 589

原创 高效开发,超实用的一款IDEA开发插件

今天主要分享一个很常用,也很实用的IDEA插件Free Mybatis plugin。我们在平时的开发中,会写大量的SQL语句,一般的简单语句我们可以直接使用注解的方式(@Select、@Update、@Delete)进行书写,但是一些复杂的,比如单表多条件查询、多表组合查询等。那么这个时候就必须要自己去通过Mapper.xml文件中写了。一般写的流程大概是这个样子的,在接口层我们定义接口,然...

2020-01-03 09:02:05 220

转载 惊讶!我定的日志规范被CTO在全公司推广了

打印日志是一门艺术,但长期被开发同学所忽视。日志就像车辆保险,没人愿意为保险付钱,但是一旦出了问题都又想有保险可用。我们打印日志的时候都很随意,可是用的时候会吐槽各种 SB 包括自己!写...

2019-12-24 20:00:00 105

转载 Java8 Stream常用API整理(值得收藏)

题 图:pexels作 者:程铭程铭你快成名来 源:https://blog.csdn.net/wangchengming1/article/details/89245402Java8中...

2019-12-03 21:33:28 403

原创 SpringBoot + Redisson实现分布式锁

一、什么是分布式?要想说什么是分布式,那么首先要知道分布式之前的系统是什么样的架构,之前的架构又存在什么样的问题?单体架构 分布式之前就是单体架构,单体架构顾名思义就是将所有的业务功能打包在一个应用中,然后部署在服务器上。如果我们把单体架构比作一个汽车工厂,那么从汽车发动机到汽车上的一个螺丝钉都需要由它来负责完成,如果有一天这家工厂由于自然灾害的原因导致业务量急剧下滑,甚至停止生产,那么...

2019-12-01 18:29:39 349

原创 SpringBoot多数据源中的分布式事务

虽然现在微服务越来越流行,我们的系统随之也拆分出来好多的模块功能。这样做的目的其实就是为了弥补单体架构中存在的不足。随着微服务的拆分,肯定设计到分库分表,但这之中肯定设计到分布式事务。最典型的例子就是银行转账,比如银行A给银行B转账500块钱,流程肯定是银行A-500,银行B+500,在这个过程要么都成功,要么都成仁。首先银行A和银行B的数肯定是在不同的数据库,如果在转账的过程中,银行A首先-5...

2019-11-24 15:19:40 7302 18

原创 Java开发中那些不容忽略的小问题-1

写公众号说实话挺久了,也因此认识了很多的朋友,咨询什么的都有,总之,或多或少的帮助到过一些人。最近想了好久,我往后应该写一些什么类型的文章?1、偏理论的?感觉在一篇文章里面去概述一些比较复杂的理论,说不说的完暂且不说,作为一个读者大部分肯定是没有耐心看下去的,而且看完吸收的也不会很多,这种东西还是得通过啃书的方式可能会更好。2、偏代码层次的?之前也写过几篇文章里面代码很多,但是其实很少有...

2019-11-08 20:06:13 969

原创 Java线程池的四种用法与使用场景

一、如下方式存在的问题new Thread() { @Override public void run() { // 业务逻辑 }}.start();首先频繁的创建、销毁对象是一个很消耗性能的事情; 如果用户量比较大,导致占用过多的资源,可能会导致我们的服务由于资源不足而宕机; 综上所述,在实际的开发中,这种操作其实是不可取的一种方式。二...

2019-10-24 09:16:30 1484 1

原创 强烈推荐,IDEA开发必备的4款插件(文末送书)

俗话说,工欲善其事,必先利其器,今天给大家介绍4款非常常用的IDEA插件,来提高你的开发效率;一、Translation在我们平时的开发中接触的都是英文,那么作为普通人...

2019-10-16 09:00:00 457

原创 SpringBoot整合easyexcel实现Excel导入

上篇写了Excel如何导出,那么其实在提供的那几个工具类中已经有了导入的方法,只需要直接调用即可。下面我们来简单演示一下,如何导入。我们先看下Controller是如何写的@PostMapping("/import/order")public ResultMsg import_order(MultipartFile excel) { Object objList = Exce...

2019-10-10 22:05:37 1630

原创 SpringBoot整合easyexcel实现Excel的导出

在一般不管大的或者小的系统中,各家的产品都一样,闲的无聊的时候都喜欢让我们这些程序员导出一些数据出来供他观赏,非说这是必须需求,非做不可,那么我们就只能苦逼的哼哧哼哧的写bug喽。之前使用POI导出excel需要自己先去创建excel文件,还要创建sheet,写表头,操作起来确实很麻烦,针对产品这种随心而欲的需求我们能不能快速的做完这样一个产品看起来挺简单的功能。基于这样一个快速开发的场景...

2019-10-09 21:54:25 20363 13

原创 SpringBoot集成Redis引起的序列化问题

想必大家对SpringBoot可能已经很熟悉了,包括集成Redis这种常用的技术,之前一直用一贯的写法去集成Redis,写配置类没发现过任何问题,但是上周在给Redis配置类加了一个Bean之后就出现了很难发现的问题。配置类代码@Configurationpublic class RedisConfig extends CachingConfigurerSupport { ...

2019-10-08 21:32:24 639

原创 Redis如何保证接口的幂等性?

在最近的一次业务升级中,遇到这样一个问题,我们设计了新的账户体系,需要在用户将应用升级之后将原来账户的数据手动的同步过来,就是需要用户自己去触发同步按钮进行同步,因为有些数据是用户存在自己本地的。那么在这个过程中就存在一个问题,要是因为网络的问题,用户重复点击了这个按钮怎么办?就算我们在客户端做了一些处理,在同步的过程中,不能再次点击,但是经过我最近的爬虫实践,要是别人抓到了我们的接口那么还是不安...

2019-07-15 22:57:07 802

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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