自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

转载 Spring中使用MapStruct自动映射DTO

概述MapStruct 可以将某几种类型的对象映射为另外一种类型,如将多个 DO(业务实体对象) 对象转换为 DTO(数据传输对象) 使用方式也很简单,定义一个映射接口,声明映射方法,配上注解,MapSturct 就会实现此接口使用例子添加依赖包<dependency> <groupId>org.mapstruct</groupId> ...

2020-03-30 20:47:21 1608

原创 Optional容器类——Java8新特性

package com.example.demo.lambdaOptional;import com.example.demo.lambda.Employee;import org.junit.Test;import java.util.Optional;/** * @Description * Optional<T> * (java.util.Optional...

2020-03-30 19:48:09 323 1

原创 并行流——Java8新特性

package com.example.demo.lambdaStreamAPI;import org.junit.Test;import java.time.Duration;import java.time.Instant;import java.util.stream.LongStream;/** * @Description Java8 并行流:底层是基于ForkJoi...

2020-03-30 14:25:50 293

原创 stream归约与收集(终止操作)——Java8新特性

package com.example.demo.lambdaStreamAPI;import com.example.demo.lambda.Employee;import org.junit.Test;import java.util.*;import java.util.stream.Collectors;/** * @Description stream api * ...

2020-03-30 13:09:51 460

原创 stream查找与匹配(终止操作)——Java8新特性

package com.example.demo.lambdaStreamAPI;import com.example.demo.lambda.Employee;import org.junit.Test;import java.util.Arrays;import java.util.List;import java.util.Optional;/** * @Descrip...

2020-03-29 21:17:50 988

转载 Java的BIO和NIO很难懂?用代码实践给你看,再不懂我转行!

1、引言这段时间自己在看一些Java中BIO和NIO之类的东西,也看了很多博客,发现各种关于NIO的理论概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,发现自己对NIO还是一知半解、一脸蒙逼的状态(请原谅我太笨)。基于以上原因,就有了写本文的想法。本文不会提到很多Java NIO和Java BIO的理论概念(需要的话请参见本文的“相关文章”一节),而是站在编码实践的角度,...

2020-03-29 15:24:52 694 2

转载 基于NIO的Socket通信示例讲解

一、NIO的简介Java NIO( non-blocking IO)是从Java 1.4版本开始引入的一个新的IO API,Java NIO提供了与标准IO不同的IO工作方式:IO NIO 面向流 面向缓冲区 阻塞 非阻塞 1. 面向流与面向缓冲Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的。 Java IO面向流意味着每...

2020-03-29 15:22:00 479

转载 Java nio 实现socket异步通信

在原有基础上考虑了编码与解码的问题,还有消息发送的两个重要方法调用疏忽public abstract int write(ByteBuffer src)将字节序列从给定的缓冲区中写入此通道。public abstract int read(ByteBuffer dst)将字节序列从此通道中读入给定的缓冲区。下面代码在关闭连接时还有问题,服务器可以与客户端断开,但是...

2020-03-29 15:03:30 638

转载 synchronized的底层原理(三)

Java对象头与Monitorjava对象头是实现synchronized的锁对象的基础,synchronized使用的锁对象是存储在Java对象头里的。对象头包含两部分:Mark Word 和 Class Metadata Address其中Mark Word在默认情况下存储着对象的HashCode、分代年龄、锁标记位等以下是32位JVM的Mark Word默认存储结构由...

2020-03-25 18:07:57 302

转载 Synchronized的底层原理(二)

synchronize底层原理:monitor对象存在于每个Java对象的对象头中(存储的指针的指向),synchronized锁便是通过这种方式获取锁的,也是为什么Java中任意对象可以作为锁的原因,同时也是notify/notifyAll/wait等方法存在于顶级对象Object中的原因。Java 虚拟机中的同步(Synchronization)基于进入和退出Monitor对象实现, ...

2020-03-25 17:53:39 269

转载 Synchronized的底层实现原理

如果对上面的执行结果还有疑问,也先不用急,我们先来了解Synchronized的原理,再回头上面的问题就一目了然了。我们先通过反编译下面的代码来看看Synchronized是如何实现对代码块进行同步的:package com.paddx.test.concurrent;public class SynchronizedDemo { public void method() { ...

2020-03-25 17:45:14 256

原创 stream映射与排序——Java8新特性

package com.example.demo.lambdaStreamAPI;import com.example.demo.lambda.Employee;import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.uti...

2020-03-24 15:12:52 317

转载 Java集合类的数据结构(二)

1:集合 Collection(单列集合) List(有序,可重复) ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector 底层数据结构是数组,查询快,增删慢 线...

2020-03-24 14:54:02 293

转载 Java集合类的数据结构(一)

本文源自参考《Think in Java》,多篇博文以及阅读源码的总结前言Java的集合其实就是各种基本的数据结构(栈,队列,hash表等),基于业务需求进而演变出的Java特有的数据结构(因为不仅仅是基本数据结构)。现在,我们以数据结构的视角来看看Java的集合到底是什么样子。并分析他们的性能。一 JAVA集合体系JAVA的集合体系分为两类,Collection接口和Map接口...

2020-03-24 14:51:05 556

转载 MultiKeyedMap方案的实现

方案背景所谓“MultiKeyedMap”是指允许多个关键字经过组合映射到一个对象的集合类。比方说,我们有一个数据表,大概的结构如下:ID 姓 名 性别 出生日期 1 王 小毛 男 '1973-05-18' 2 沈 佩佩 女 '1976-06-24' 数据结构大体如下:class Person...

2020-03-24 14:46:22 603

转载 为什么直接打印java集合对象打印出来的不是哈希码,而是里面存储值

Collection(接口)—AbstractCollection(抽象类)–AbstractList(抽象类)–ArrayList(类)Collection(接口)—AbstractCollection(抽象类)–AbstractSet(抽象类)–TreeSet(类)......以ArrayList为例:ArrayList的父类AbstractList的父类AbstractCollec...

2020-03-24 13:55:32 912

转载 推荐 33 个 IDEA 最牛配置,写代码太爽了

1.设置maven1.在File->settings->搜索maven2.Mavan home directory--设置maven安装包的bin文件夹所在的位置3.User settings file--设置setting文件所在的位置4.Local repository--设置本地仓库2.IDEA 设置代码行宽度1.在File->settings...

2020-03-23 05:46:33 380

原创 stream筛选与切片——Java8新特性

package com.example.demo.lambdaStreamAPI;import com.example.demo.lambda.Employee;import org.junit.Test;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java...

2020-03-23 05:19:00 632

转载 JAVA-Iterator迭代器详解

1.定义Iterator的定义为:对Collection进行迭代的迭代器,Iterator取代了Java Collection Framework中的 Enumeration。Iterator与Enumeration主要有两点不一样:迭代器允许在调用者从集合中删除元素 迭代器的方法名有所改进以上是Java Api对Iterator的介绍,该接口主要定义了如下代码的规则public...

2020-03-23 04:49:57 436

转载 Cloneable和clone的使用,深入理解深度克隆与浅度克隆(二)

cloneable接口的作用cloneable其实就是一个标记接口,只有实现这个接口后,然后在类中重写Object中的clone方法,然后通过类调用clone方法才能克隆成功,如果不实现这个接口,则会抛出CloneNotSupportedException(克隆不被支持)异常。Object中clone方法:这里有一个疑问,Object中的clone方法是一个空的方法,那么他是如何判断类...

2020-03-23 04:28:31 551

转载 Cloneable和clone的使用,深入理解深度克隆与浅度克隆(一)

一.Cloneable 的用途Cloneable和Serializable一样都是标记型接口,它们内部都没有方法和属性,implements Cloneable表示该对象能被克隆,能使用Object.clone()方法。如果没有implements Cloneable的类调用Object.clone()方法就会抛出CloneNotSupportedException。二.克隆的分类浅...

2020-03-23 04:15:08 661

原创 Lambda表达式方法引用与构造器引用——Java8新特性

package com.atguigu.java8;import java.io.PrintStream;import java.util.Comparator;import java.util.function.BiFunction;import java.util.function.BiPredicate;import java.util.function.Consumer;i...

2020-03-22 22:41:44 258

转载 java泛型你需要知道的一切

问题引入:为什么泛型类的类型不能是基本数据类型?问题解答:泛型的定义:在程序中我们将一个对象放入集合中,但是集合不会记住对象的类型,当我们在次使用对象的时候,对象变为Object类型,而程序中还是原来的类型,我们必须要自己转换其类型,为了解决这个问题,则提出泛型。 泛型要求包容的是对象类型,而基本数据类型在Java中不属于对象。但是基本数据类型有其封装类,且为对象类型。 想放int类...

2020-03-22 18:53:23 428

原创 Lambda表达式四大核心函数式接口——Java8新特性

package com.atguigu.java8;import java.util.ArrayList;import java.util.Arrays;import java.util.List;import java.util.function.Consumer;import java.util.function.Function;import java.util.functi...

2020-03-22 18:10:05 334

原创 Lambda表达式基础语法——Java8新特性

package com.atguigu.java8;import java.util.ArrayList;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.function.Consumer;import...

2020-03-22 18:06:22 238

原创 Lambda表达式入门——Java8新特性

package com.atguigu.java8;public class Employee { private int id; private String name; private int age; private double salary; public Employee() { } public Employee(String name) { this....

2020-03-22 18:01:42 253

转载 设计模式在外卖营销业务中的实践

业务策略多变导致需求多变,是业界很多技术团队面临的最具挑战的问题之一。那么如何设计一套易于扩展和维护的营销系统呢?今天的文章来自美团外卖营销技术团队,他们分享了从领域模型到代码工程之间的转化,从DDD引出了设计模式,并详细介绍了工厂方法模式、策略模式、责任链模式以及状态模式这四种模式在美团营销业务中的具体实现,将理论与实践进行了一次深度结合。一、前言随着美团外卖业务的不断迭代与发展...

2020-03-22 10:53:01 539

转载 快速理解-设计模式六大原则

前言:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每一个架构师所必备的技能之一。想要精通设计模式,必须要先搞清楚设计模...

2020-03-21 12:19:15 526

转载 五轮阿里面试题及答案

附上最近更新的面经:某大佬的20+公司面试题总结和自己的补充一面自我介绍下自己,不超过3分钟(实际上我的自我介绍不到一分钟)你感觉比本科阶段自己进步了多少,有哪些进步研究生期间最大的进步是什么你觉得你适合从事哪个方向的开发synchronized与lock的区别,使用场景。看过synchronized的源码没JVM自动内存管理,Minor GC与Full GC的触发机制了解过J...

2020-03-21 12:17:02 508

转载 某大佬的20+公司面试题总结

面试问题整理ZooKeeperCAP定理:一个分布式系统不可能同时满足以下三种,一致性(C:Consistency),可用性(A:Available),分区容错性(P:Partition Tolerance).在此ZooKeeper保证的是CP,ZooKeeper不能保证每次服务请求的可用性,在极端环境下,ZooKeeper可能会丢弃一些请求,消费者程序需要重新请求才能获得结果。另外在...

2020-03-21 12:12:22 1551

转载 某大佬的20+公司面试题总结和自己的补充

附上原文链接(在此基础上自己做了补充和修改。)ZooKeeper1. CAP定理C:一致性(读操作总能读到以前的写操作)A:可用性(在单台机器出错时,仍然能正常工作,不用迁移到其他机器)P:分区容错性 (异常情况下仍然能满足CA)该理论指出一个分布式系统不可能同时满足CAP,ZooKeeper保证了CP,A的话在Leader选举时会丢失部分请求2. ZAB协议分为消...

2020-03-21 12:07:33 909

转载 语法糖

语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。举例说明举个例子:在C语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i)+j...

2020-03-19 14:56:34 359

转载 IDEA错误:Cannot start compilation: the output path is not specified for module "Test". Specify the out

错误是发生在从github上checkout自己的项目时。因为没有将配置文件一起上传,所以在运行java程序时有了这个报错:Cannot start compilation: the output path is not specified for module “Test”. Specify the output path in Configure Project.其实这个错误是因为...

2020-03-19 14:00:55 518

原创 idea新打开项目java类左下角显示黄色的J

我们在初学java的时候使用idea进行开发,但突然发现项目不可运行,并且文件上标有小黄色的j。打开项目工程的工程结构设置(快捷键:ctrl+alt+shift+s),如图中所示选择第一栏的Moduls然后在第三栏选择source然后在按照途中所示选择删除当前的内容跟路径按照图中所示点击添加内容根路径最后一步选择你的项目根路径然后点击 ok,一直确认就行了。...

2020-03-19 13:35:52 12557 3

原创 LeetCode算法题

package com.example.demo.leetcode;import java.util.Arrays;import java.util.HashMap;/** * @Description two sum * Given nums = [2, 7, 11, 15], target = 9; * Because nums[0] + nums[1] = 2 + 7 = ...

2020-03-19 13:01:23 266

原创 LeetCode算法题

package com.example.demo.leetcode;import org.apache.commons.lang3.StringUtils;import java.util.HashMap;import java.util.HashSet;/** * @Description Longest Substring Without Repeating Characte...

2020-03-19 13:00:20 273

原创 EqualsTest

package com.example.demo;import java.util.Objects;public class EqualsTest { public static void main(String[] args) { }}class Person { int id; String name; String address;...

2020-03-19 12:58:31 272

原创 装箱和拆箱IntegerTest

package com.example.demo;/** * @Description 装箱和拆箱 * @Auther gf.x * @Date 2020/1/8 13:44 */public class IntegerTest { public static void main(String[] args) { Integer t = new Intege...

2020-03-19 12:54:37 306

转载 IntelliJ IDEA 设置代码提示或自动补全的快捷键 (附IntelliJ IDEA常用快捷键)

修改方法如下:点击 文件菜单(File) –> 点击 设置(Settings… Ctrl+Alt+S), –> 打开设置对话框。在左侧的导航框中点击 KeyMap。接着在右边的树型框中选择 Main menu –> Code –> Completion.接着需要做两件事:1. 移除原来的Cycle Expand Word 的 Alt+/ 快捷键绑定。...

2020-03-18 20:21:19 972

转载 Java中try catch finally语句中含有return语句的执行情况(总结版)

在这里看到了try catch finally块中含有return语句时程序执行的几种情况,但其实总结的并不全,而且分析的比较含糊。但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因。下面来看这几种情况。情况一(try中有ret...

2020-03-18 20:12:55 326

Java8 新特性.rar

Java8新特性,包含代码实例与技术文档。

2020-03-29

空空如也

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

TA关注的人

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