Java
小s学技术
我想看看专注的做一件事有多难
展开
-
3分钟学会在IDEA上使用maven
Maven简介是一个采用纯Java编写的开源项目管理工具, 所有的项目配置信息都被定义在一个叫做 POM.xml 的文件中.主要服务于基于Java平台的项目构建、依赖管理Maven执行流程Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等等。实现自动构建项目清除--> 编译-->测试-->报告-->打包(jar\war)-->安装-->...原创 2018-03-09 16:56:56 · 544 阅读 · 0 评论 -
JDK8动态代理实现与原理解析
第一部分:JDK8动态代理基本实现1,先定义一个接口public interface UserService { void work(String workContent);}2,再定义一个接口实现类public class StudentService implements UserService { @Override public void work(St...原创 2019-04-09 15:11:54 · 873 阅读 · 2 评论 -
Java8 Stream列表去重 总结
今天遇到一个需求,需要对一个新闻列表根据标题进行去重,总结一下方法。1,stream().distinct()这个方法是Java8的Stream接口直接提供的方法,看起来最简单易用。但是 distinct() 具体是使用对象的 hashCode() 和equals() 方法来判断列表中元素是否为同一个元素,所以必须重写对象的 hashCode 和 equals 方法,这就很麻烦了,而且之后如...原创 2019-04-12 15:28:08 · 4861 阅读 · 0 评论 -
2分钟配置集成编码神器Lomok到AndroidStudio
简介之前在使用maven项目构建的Java项目中使用Lomok非常方便,能大幅提升编码效率,省去POJO的get,set,构造方法,还能添加buidler模式,非常方便。lombok官网常用注解:@NonNull 参数校验参数,能帮助避免空指针 @Cleanup 局部变量注解,自动使用对象的close() 方法(尤其是流对象) @Getter/@Setter 自动...原创 2019-04-03 12:20:51 · 288 阅读 · 0 评论 -
Spring中使用ElasticSearch实现中文分词全文搜索
1,创建Index:需要使用全文索引的字段,需要添加analyzer属性PUT /industry_index{ "settings": { "refresh_interval": "5s", "number_of_shards" : 3, "number_of_replicas" : 2, "analysis" : {原创 2019-02-15 14:08:46 · 3690 阅读 · 0 评论 -
Spring5.0:webflux中使用Elasticsearch
响应式web服务框架-webflux只需少量线程即可实现数千个并发连接。但是,与Spring-Data-MongoDB不同,Spring Data ElasticSearch本身不支持非阻塞存储库。幸运的是,ElasticSearch 6的Java API可以使用RESTful接口及非阻塞HTTP客户端实现。但是,它使用的是回调而不是类似的东西CompletableFuture。所以我们可以自己...原创 2019-02-15 11:18:56 · 1887 阅读 · 0 评论 -
spring springboot webflux 文件上传下载
webflux 的文件上传下载功能文件上传先上代码@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)public Mono<String> requestBodyFlux(@RequestPart("file") FilePart filePart) throws IOE...原创 2019-01-17 16:19:23 · 9505 阅读 · 8 评论 -
Java Nio 学习笔记
2012年12月11日记录今日总结今天主要主要花了半下午时间学习了Java Nio的内容,学习链接:极客学院NIO教程,这篇也是翻译国外大神的,有一些错别字。当然,有兴趣的同学可以看看原文:教程原文作者还很好心的提供了一个利用NIO写的非阻塞服务器,地址也给出来:https://github.com/jjenkov/java-nio-server知识点1,Nio是java 1.4 ...原创 2018-12-12 00:23:00 · 94 阅读 · 0 评论 -
深入理解Java虚拟机(4)内存分配与回收策略
一、对象优先在Eden分配 大多数情况下,对现在新生代Eden区中分配,当Eden区没有足够空间时,虚拟机将发起一次Minor GC。 新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为大多Java对象寿命短暂,所以Minor GC非常频繁,回收速度快。 老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC,经常伴随着至少一次的M...原创 2018-04-12 22:35:45 · 122 阅读 · 0 评论 -
深入理解Java虚拟机(3)垃圾回收
本文主要解决3个问题:哪些内存需要回收?什么时候回收?如何回收? 一、哪些内存需要回收?程序计数器、虚拟机栈、本地方法栈三个区域随线程而生,随线程而灭,而且每一个栈帧中分配多少内存基本在类结构确定下来时就是已知的,不需要考虑复杂的回收问题。线程结束,内存就直接回收了。 而Java堆和方法区则只有处于运行时才会知道存放哪些实例数据等。Java堆回收类实例方法区主要回收废...原创 2018-04-12 16:53:38 · 115 阅读 · 0 评论 -
Spring Aop 笔记
转载自:https://blog.csdn.net/zbuger/article/details/51011117比 Spring In Action 介绍的还要详细AOP即Aspect Oriented Programing,面向切面编程。AOP适合于那些具有横切逻辑的应用:如性能监测,访问控制,事务管理以及日志记录。AOP将这些分散在各个业务逻辑中的代码通过横向切割的方式抽取到一个独立...转载 2018-03-28 12:07:44 · 107 阅读 · 0 评论 -
深入理解Java虚拟机(2)对象创建及内存分配
一.对象的创建过程虚拟机遇到一条new指令时: 1. 首先去常量池寻找符号引用(通过引用找到并检查该类是否被加载,解析) 2. 未被加载过则去加载解析类 3. 为新生的对象分配内存(此时对象所占内存大小确定) 4. 分配的堆内存空间初始化(即赋零值) 5. 设置对象头信息(header) — 对于JVM来说,此时已经初始化完成 6. java 类实例的<-...原创 2018-04-10 19:13:59 · 124 阅读 · 0 评论 -
深入理解Java虚拟机(1)内存模型
虚拟机内存模型总结先来一个总结: 内存区域 说明 程序计数器 当前线程执行的字节码行号计数器 本地方法栈 native方法栈 java虚拟机栈 执行java方法时的内存模型,65535 Java堆 存放对象实例,数组,存类的属性值,不存方法 方法区 堆的逻辑部分:类信息,常量,静态变量,jit 编译后的代码 ...原创 2018-04-10 11:55:18 · 167 阅读 · 1 评论 -
Android Studio 使用Java8全知全解
说明:本篇整理自Android开发官方文档Android Studio 3.0 及以上版本支持所有 Java 7 语言功能,以及部分 Java 8 语言功能。内部原理如下图 所示,AS默认工具链通过 javac 编译器的输出执行字节码转换(称为 desugar),从而实现Java8的语言特性功能,这样我们就能从容的在代码中使用Java8特性了。这块解释一下,之前看的《深入理解Java虚拟机...原创 2019-05-31 14:51:37 · 3068 阅读 · 0 评论