自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MapStruct使用方法

目前代码中对象的copy大家使用的基本都是spring提供的BeanUtils.copyProperties,但是这个方法的实现都是基于反射,性能差而且容易出异常,很多规范严禁使用这种途径。效率最高的还是传统的get、set方法类似这种,但是这种方法重复又无聊,那么有什么方法可以解决呢?我们可以试试MapStruct:1.引入依赖<mapstruct.version>1.3.1.Final</mapstruct.version>org.mapstructmapstru

2020-07-24 14:19:34 1205

原创 互斥锁和自旋锁的区别

这里写自定义目录标题互斥锁(mutexlock):最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒。在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthrea

2020-05-24 22:18:46 757

原创 Java并发容器和框架

ConcurrentHashMap为什么要使用 ConcurrentHashMap原因有三:并发编程中HashMap会导致死循环;HashTable效率又非常低;ConcurrentHashMap的锁分段技术可有效提升并发访问率。在并发编程使用HashMap会导致死循环。在多线程环境下,使用HashMap进行put操作会引起 死循环,导致CPU利用率接近100%,所以在并发情况下不能使用H...

2019-11-26 23:19:49 155

原创 为什么阿里巴巴开发手册强制规定POJO 类中布尔类型的变量,都不要加 is 前缀

在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的。一般情况下,我们可以有以下四种方式来定义一个布尔类型的成员变量:以上四种定义形式,你日常开发中最常用的是哪种呢?到底哪一种才是正确的使用姿势呢?通过观察我们可以发现:(1)前两种和后两种的主要区别是变量的类型不同,前者使用的是boolean,后者使用...

2019-11-01 12:39:36 2868 4

原创 Java:如何更优雅的处理空值?

导语在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。业务中的空值场景存在一个UserSearchService用来提供用户查询的功能:p...

2019-10-29 15:15:14 224

原创 new一个对象有哪两个过程?

Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。我们先假设是第一次使用该类,这样的话new一个对象就可以分为两个过程:加载并初始化类和创建对象。一、类加载过程(第一次使用该类)java是使用双亲委派模型来进行类的加载的,所以在描述类加载过程前,我们先看一下它的工作过程:双亲委托模...

2019-10-29 10:56:38 797

原创 分布式锁--Redlock

业务背景平时开发中都会遇到这样的业务背景:一个任务或者一个订单请求到你,你很强大有三台机器但是只希望任务在同一时间只有一台机器处理,这时候单机的加锁策略synchronized、Lock等通通就不管用了,这时候就需要用到分布式锁,多个终端抢占一个单例的分布式锁。以下是现有实现分布式锁的方法,使用的是redis的setnx命令,有值不做操作,无值设置成功,设置成功之后再设置超时时间。假设服务执...

2019-07-31 16:49:37 215

翻译 深度探究mq的一些问题

一、为什么要使用MQ?相信大家也听过这样的一句话:好的架构不是设计出来的,是演进出来的。这句话在引入MQ的场景同样适用,使用MQ必定有其道理,是用来解决实际问题的。而不是看见别人用了,我也用着玩儿一下。其实使用MQ的场景有挺多的,但是比较核心的有3个:异步、解耦、削峰填谷异步我们通过实际案例说明:假设A系统接收一个请求,需要在自己本地写库执行SQL,然后需要调用BCD三个系统的接口。...

2019-07-12 09:01:48 315

原创 top命令

1.top查看pid 111122.top -H -p 11112查看线程占用比例 得到线程11140 比较高

2019-07-05 19:33:46 105

原创 mysql查询,插入的相关注意

1对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。  2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from...

2019-07-05 19:29:19 371

原创 DRUID-连接泄漏如何定位

http://www.cnblogs.com/dxxdsw/p/10667014.html分析原因应该是程序中有地方连接未关闭造成的。那如何来定呢?使用druid连接池的超时回收机制,在配置中增加以下内容: ...

2019-07-05 19:27:53 1343

原创 String,StringBuilder以及StringBuffer这三个类之间的区别

String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder &gt; S...

2019-03-11 20:24:28 270

空空如也

空空如也

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

TA关注的人

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