java基础
文章平均质量分 92
o慕容紫英o
这个作者很懒,什么都没留下…
展开
-
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 · 1133 阅读 · 0 评论 -
互斥锁和自旋锁的区别
这里写自定义目录标题互斥锁(mutexlock):最常使用于线程同步的锁;标记用来保证在任一时刻,只能有一个线程访问该对象,同一线程多次加锁操作会造成死锁;临界区和互斥量都可用来实现此锁,通常情况下锁操作失败会将该线程睡眠等待锁释放时被唤醒。在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。互斥锁是一种简单的加锁的方法来控制对共享资源的访问,互斥锁只有两种状态,即上锁( lock )和解锁( unlock )。原子性:把一个互斥量锁定为一个原子操作,这意味着操作系统(或pthrea原创 2020-05-24 22:18:46 · 710 阅读 · 0 评论 -
Java并发容器和框架
ConcurrentHashMap为什么要使用 ConcurrentHashMap原因有三:并发编程中HashMap会导致死循环;HashTable效率又非常低;ConcurrentHashMap的锁分段技术可有效提升并发访问率。在并发编程使用HashMap会导致死循环。在多线程环境下,使用HashMap进行put操作会引起 死循环,导致CPU利用率接近100%,所以在并发情况下不能使用H...原创 2019-11-26 23:19:49 · 127 阅读 · 0 评论 -
为什么阿里巴巴开发手册强制规定POJO 类中布尔类型的变量,都不要加 is 前缀
在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的。一般情况下,我们可以有以下四种方式来定义一个布尔类型的成员变量:以上四种定义形式,你日常开发中最常用的是哪种呢?到底哪一种才是正确的使用姿势呢?通过观察我们可以发现:(1)前两种和后两种的主要区别是变量的类型不同,前者使用的是boolean,后者使用...原创 2019-11-01 12:39:36 · 2739 阅读 · 4 评论 -
Java:如何更优雅的处理空值?
导语在笔者几年的开发经验中,经常看到项目中存在到处空值判断的情况,这些判断,会让人觉得摸不着头绪,它的出现很有可能和当前的业务逻辑并没有关系。但它会让你很头疼。有时候,更可怕的是系统因为这些空值的情况,会抛出空指针异常,导致业务系统发生问题。此篇文章,我总结了几种关于空值的处理手法,希望对读者有帮助。业务中的空值场景存在一个UserSearchService用来提供用户查询的功能:p...原创 2019-10-29 15:15:14 · 190 阅读 · 0 评论 -
new一个对象有哪两个过程?
Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载。加载并初始化类完成后,再进行对象的创建工作。我们先假设是第一次使用该类,这样的话new一个对象就可以分为两个过程:加载并初始化类和创建对象。一、类加载过程(第一次使用该类)java是使用双亲委派模型来进行类的加载的,所以在描述类加载过程前,我们先看一下它的工作过程:双亲委托模...原创 2019-10-29 10:56:38 · 755 阅读 · 0 评论 -
String,StringBuilder以及StringBuffer这三个类之间的区别
String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > S...原创 2019-03-11 20:24:28 · 248 阅读 · 0 评论