Java
文章平均质量分 86
Java相关知识总结
alwaysrun
当你站在山顶的时候,你的头上还有星空。
展开
-
[Java]-Elastic中查询与聚合操作
文章目录search基础分词器request请求SearchSourceBuilder查询QueryBuildersQueryStringQuery排序游标Scroll聚合AggregationBuildersnested嵌套聚合排序查询聚合collapse去重在《Elastic中index与document基本操作》中介绍了Elastic的基本知识,及索引与文档操作;本节将介绍Elasticsearch中常用的查询与聚合操作。search基础Elasticsearch会对文档内容进行分词,并根据分词原创 2021-07-24 09:06:03 · 2350 阅读 · 0 评论 -
[Java]-Elastic中suggest查询建议
文章目录查询建议API单个建议查询词多个建议查询词SuggesterTerm suggester参数phrase suggestercompletion suggester搜索框实现查询建议(suggest)是为用户提供良好的使用体验。主要包括: 拼写检查; 自动建议查询词(自动补全)。官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/7.7/search-suggesters.html#。查询建议API查询建议也是使用_sea原创 2021-07-11 19:26:31 · 1741 阅读 · 2 评论 -
[Java]-当前目录下文件读写
文章目录目录获取保护域ProtectionDomain获取路径文件读写读取写入在《spring读取配置文件以及忽略部分文件处理》中介绍了配置文件中操作;在《Java输入输出流与文件操作简介》中介绍了常用文件流操作;本节就介绍如何获取当前目录并读写文件。目录获取通过保护域,可以方便地获取Java程序运行的当前目录。保护域ProtectionDomain保护域是用来容纳class文件的,会包含permission与codeSource对象。类装载器将类型装入Java虚拟机时,会为每个类型指派一个保护域原创 2021-07-07 23:13:08 · 913 阅读 · 1 评论 -
[Java]-Elastic中index与document基本操作
文章目录Elastic依赖包client对象RestHighLevelClientIndex创建索引判断索引是否存在删除索引获取索引Document添加记录判断记录是否存在删除记录更新记录获取记录获取记录条数获取记录IdElasticsearch是一个基于Lucene的搜索服务器;它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。ElasticES提供了两个JAVA REST client版本:Java Low Level REST Client: 低级别的REST客户原创 2021-07-03 21:17:08 · 940 阅读 · 1 评论 -
[Java]-Guava工具库简介
文章目录字符串JointerSplitter拆分器工厂拆分器修饰符CharMatcher工厂方法操作方法Strings集合不可变集合新型集合MultisetMultimapRangeSet工具类ListsMapsuniqueIndexdifference扩展工具集ForwardingPreconditionsOrdering创建排序器链式调用使用缓存LoadingCacheCacheLoader缓存回收Guava库中包含了一系列方便使用的工具库,如:集合 [collections] 、缓存 [cachin原创 2021-06-21 20:12:54 · 2852 阅读 · 0 评论 -
[Java]-服务端RestAPI接口封装简介
文章目录RestAPIContent-TypeServletHttpServletRequest请求行请求头请求参数HttpServletResponse状态码SpringBoot中支持Controller与MethodRequestMappingExceptionHandler统一异常捕捉参数自动验证API接口示例Form方式请求文件上传在《HTTP客户端工具OkHttp简介》中介绍了RestAPI客户端请求方式;《HTTP请求中RestAPI接口中时间序列化处理》中介绍了针对时间序列化处理。Rest原创 2021-06-13 22:29:31 · 2324 阅读 · 0 评论 -
[Java]-弱引用WeakReference与ThreadLocal
文章目录WeakReference定义获取WeakHashMapThreadLocal简介示例WeakReference (弱引用) 的强度比软引用更弱一些,会被垃圾收集器(GC)回收掉。WeakReferenceJava中,对象在堆上创建;当GC运行时,会回收掉没有任何引用的对象。定义当一个对象仅仅被弱引用指向, 而没有其他强引用指向的时候,GC运行时会把这个对象回收掉。weak reference的语法是:WeakReference<T> wrEle = new WeakRefe原创 2021-06-12 17:40:50 · 1406 阅读 · 1 评论 -
[Java]-HTTP客户端工具OkHttp简介
文章目录简介依赖包创建OkHttpClient构造UrlHeader头设定请求示例Get请求同步Get异步GetPost请求Json内容Form表单文件上传Put请求Json内容参数方式Delete请求OkHttp是一款优秀的HTTP客户端框架,OkHttp3是OkHttp发展到版本3.0之后的名字。简介OkHttp是一个高效的HTTP客户端,他有如下特性:对 HTTP/2 和 SPDY 的支持:使得对同一个主机发出的所有请求都可以共享同一个套接字连接;若HTTP/2 和 SPDY 不可用,OkH原创 2021-06-05 22:38:35 · 1673 阅读 · 2 评论 -
[Java]-同步工具类CountDownLatch与CyclicBarrier简介
文章目录CountDownLatch主要方法说明等待其他线程完成示例等待信号一起执行示例CyclicBarrier主要方法说明示例countDownLatch与CyclicBarrier是在java1.5被引入的线程同步工具类。CountDownLatchCountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(不能用作互斥)。可用于:让多个线程等待:模拟并发,让并发线程一起执行。初始化一个共享的CountDownLatch(1),多个线程在开始执行任务前原创 2021-05-29 14:01:11 · 118 阅读 · 0 评论 -
[Java]-高并发框架Netty简介
文章目录Netty简介NIOEvent事件线程模型Pipeline模型零拷贝与ByteBuf示例Java NIO服务端Netty服务端Netty客户端Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。Netty简介NIONIO(Non Blocking IO):非阻塞IO;是Java1.4中引入的。提供了SocketChannel和ServerSocketChannel两种不同的套接字通道实现,都支持阻塞和非阻塞两种模式。NIO通过设定套接原创 2021-05-23 10:50:18 · 718 阅读 · 1 评论 -
[Java]-单例模式与volatile简介
文章目录volatilevolatile变量特性多线程可见性禁止重排序单例模式Double Check静态变量方式volatilevolatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。volatile变量特性一旦一个共享变量被volatile修饰之后,就具备了两层语义:保证不同原创 2021-05-15 20:00:34 · 939 阅读 · 0 评论 -
[Java]-Java中获取调用者与类中静态成员
文章目录调用者类静态属性在《Java反射机制简介》介绍了java中的反射机制,本节中就通过反射机制获取函数调用者以及获取类中属性信息。调用者通过Thread.currentThread().getStackTrace可获取调用堆栈的信息,返回StackTraceElement类型的数组,里面有类、方法、行数等信息。通过此方法,即可方便地获取当前函数信息以及调用者信息:// level=0, is the method-name who call getCallerMethodName; =1 is原创 2021-05-09 22:11:12 · 757 阅读 · 0 评论 -
[Java]-Java中集合定义初始化与Map使用
文章目录Collection传统方式双括号方式Arrays.asListMap初始化示例Stream流computemerge在《Java集合Collection简介及List与Map使用示例》我们介绍了集合的基本使用。本节介绍如何在定义时就初始化集合。Collection有时,需要集合在定义时就要初始化(特别是定义集合常量时)。传统方式Collection有两种常用的初始化方式:构造器方式:通过接受另外一个Collection来初始化集合;add方式:静态变量可通过static块;pr原创 2021-05-03 10:27:43 · 1103 阅读 · 0 评论 -
[Java]-Java8中stream用法详解
文章目录操作API分类接口说明映射创建streamCollection.streamArrays.streamStream.of无限流Stream.generateStream.iterateCollectors归并到集合toXXXmapping分组groupingBypartitioningBy计算与统计reducecollectingAndThenStream是Java8中处理集合的抽象概念,可以执行复杂的查找、过滤和映射等操作。在操作APIStream API 提供了一种高效且易于使用的处理数据原创 2021-05-02 13:07:37 · 644 阅读 · 0 评论 -
[Java]-spring读取配置文件以及忽略部分文件处理
文章目录资源文件读取资源文件nonFilteredFileExtension配置文件配置文件读取顺序中文处理spring中很多配置文件与静态文件都放在resources目录下。资源文件资源文件是Java代码中要使用的文件。代码在执行的时候会到指定位置去查找这些文件。若希望把其他目录中的资源也复制到classes目录中,这时就需要在Pom.xml文件中做修改了。把resources目录下的xml文件配置在外(不打包进jar包);把java目录下properties和xml打包进jar包;<原创 2021-04-24 14:40:17 · 746 阅读 · 0 评论 -
[Java]-Jackson修改Node与节点获取
文章目录JsonNodeObjectNode节点修改at与path方法Json转类示例在《Jackson使用简介》中介绍了Jackson的基本用法:字符串与JsonNode间转换。JsonNodeJsonNode为抽象类,这意味着不能直接构建JsonNode实例的对象图,但可以通过创建其子类ObjectNode的实例对象进行相关操作。ObjectNodeObjectNode是JsonNode的子类,用于修改:Iterator elements():accessing all value nod原创 2021-04-17 20:50:40 · 3693 阅读 · 0 评论 -
[Java]-使用mapstruct与builder优雅地转换Bean对象
文章目录mapstruct简介pom依赖注入方式映射示例说明Bean定义转换接口在日常业务处理中,会经常做相似(相同)类型转换。若手动编写转换代码,会写很多无聊类似的代码,且容易出错。mapstruct简介MapStruct是满足JSR269规范的一个Java注解处理器,用于为Java Bean生成类型安全且高性能的映射。它基于编译阶段生成get/set代码,此实现过程中没有反射,不会造成额外的性能损失。pom依赖为使用MapStruct,需要引入:<dependency>原创 2021-04-11 10:06:02 · 1894 阅读 · 0 评论 -
[java]-线程与线程池ThreadPoolExecutor使用简介
文章目录多线程继承Thread类实现Runnable接口实现Callable接口线程池几种常见线程池ThreadPoolExecutor任务队列拒绝策略ThreadFactory自定义示例为了发挥计算(多核)能力,就需要使用多线程;但线程本身也会占用部分资源;为了降低线程本身创建、销毁引起的开销,需要使用线程池来管理线程。多线程java中有几种实现多线程的方式:继承Thread类实现Runnable接口实现Callable接口使用线程池继承Thread类Thread类实现了Runnab原创 2021-04-04 23:25:49 · 154 阅读 · 0 评论 -
[Java]-Spring中面向切面编程AOP学习
文章目录AOP基础AOP术语通知类型切点指示符切点匹配executionwithinthis和targetargs@target与@within@annotation@args注解AOP示例依赖包定义注解实现AOP使用AOPAOP是OOP的延续,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,使业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高 了开发的效率。AOP基础AOP(Aspect Oriented Programming)面向切面编程,是通过预编译方式和运行原创 2021-03-28 21:11:47 · 175 阅读 · 0 评论 -
[Java]-Spring中事件EventListener与Guava
文章目录事件ApplicationEvent@EventListener@Async发布guavaPreconditionsJointerSplitterStrings集合ApplicationEvent和Listener是Spring中的一个事件监听、订阅实现(实现原理是观察者设计模式),为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件spring事件由三部分组成:事件(ApplicationEvent)、监听器(ApplicationListener)和事件发布操作。Applicati原创 2021-02-21 17:44:25 · 732 阅读 · 1 评论 -
Spring中Bean中注入与条件注入简介
文章目录注入简介注解分类Bean扫描规则条件注入Condtion接口常见条件注解@ConditionalOnProperty在Spring中,不需要自己创建对象,只需要告诉Spring,哪些类需要创建出对象;在项目启动的时候Spring就会自动创建出该对象。注入简介在Spring中通过注解即可方便地实现注入:在定义类时使用‘注册注解’(@Service等),标记类需要注册生成Bean;需要地方,通过‘使用注解’(@Autowired等)声明,来引入Bean。注解分类注解分为使用Bean的注原创 2021-01-10 23:08:02 · 2329 阅读 · 1 评论 -
ElasticSearch中Index判断与数量和分组处理
文章目录获取数量count判断Index是否存在ES7中判断IndexES6中判断Index聚合(分组)查询在《ElasticSearch安装与Java Client API查询》中,介绍了简单查询的方法,下面介绍一些其他操作。获取数量count在ES查询时,SearchResponse中的SearchHits中包含有满足条件的记录数量;为了减少数据量的传递,查询时需要设定size为0,避免返回记录的详细信息,浪费时间与流量。public long count(List<String>原创 2021-01-03 10:29:59 · 1007 阅读 · 0 评论 -
[Java]-RestAPI请求中获取源IP地址
文章目录HttpServletRequest接口请求行消息头请求参数请求源地址获取源地址RestAPI接口调用Servlet API中,有一个HttpServletRequest接口(继承自ServletRequest接口),专门用来封装HTTP请求消息。其中定义了获取请求行、请求头和请求消息体的相关方法(对应HTTP请求消息中的:请求行、请求消息头和请求消息体三部分)。HttpServletRequest接口访问Servlet时,请求消息的请求行中包含:请求方法、请求资源名、请求路径等信息。请求行原创 2020-12-27 18:44:04 · 2315 阅读 · 0 评论 -
[Java]-HTTP请求中RestAPI接口中时间序列化处理
文章目录参数中时间处理body中时间处理注解方式@JsonFormat修改Json序列化器扩展序列化器添加序列化器网络传输时需要将对象转换为字节流,这时就需要把对象进行序列化;在接收时,需要进行反序列化,把字节流转换为对象。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。Java中可方便地通过JackSON(参见:《Jackson使用简介与示例》)进行序列化与反序列化。但是因时间格式的复杂与多样性,经常会遇到序列化原创 2020-12-26 10:08:41 · 872 阅读 · 0 评论 -
Java中UUID编码为22字符的Base64字符串
UUID 是通用唯一识别码(Universally Unique Identifier)的缩写,是一个128比特的数值。UUID是基于当前时间、计数器(counter)和硬件标识(通常为无线网卡的MAC地址)等数据计算生成的,它保证对在同一时空中的所有机器都是唯一的。常见的UUID是36字符编码的,为了更方便使用且缩写空间占用,可通过Base64编码压缩为22字符(只含字符、数字和下划线、中划线),此种编码可以方便地用于数据库、URL等中。为了保证只含字符、数字和下划线、中划线,需要使用UrlEncod原创 2020-12-23 23:02:28 · 1151 阅读 · 0 评论 -
ElasticSearch安装与Java Client API查询
文章目录Windows下环境搭建安装ES安装head插件Java客户端依赖包client对象搜索searchRequestClient API网络资源ElasticSearch(简称ES)是一个基于Lucene的分布式全文搜索服务器。Windows下环境搭建ES依赖Java,需要先安装Java JDK并配置JAVA_HOME环境变量。安装ES从(https://www.elastic.co/cn/downloads,或国内镜像)下载ES安装包,并解压。配置环境变量ES_HOME为ES的目录(如:原创 2020-11-08 21:01:41 · 400 阅读 · 2 评论 -
Java中HTTP接口请求与HTTPS证书验证问题
文章目录HTTP请求证书验证HTTPS通讯出错处理HTTP是基于TCP/IP的应用层协议,简单、便捷。RESTFUL是一种基于HTTP的网络应用程序设计风格和开发方式,方便实现跨平台的业务接口。HTTP请求Java中通过HttpURLConnection可方便地进行HTTP请求:String sendRequest(String strUrl, String strMethod, String strBody) { String strResult = ""; try {原创 2020-09-23 20:32:33 · 2799 阅读 · 0 评论 -
Java中使用Mybatis操作H2数据库
文章目录H2数据库依赖库配置MyBatis框架依赖库注解参数传递返回自增列动态SQLforeach用法示例数据库操作接口接口调用RestAPI接口H2数据库H2是一个使用 Java 编写的数据库,有内嵌式和服务两种运行模式。内嵌式: 主要有两种内存模式:不会落地持久化,关闭连接后数据就清空;"jdbc:h2:mem:MyDb"文件模式:将数据持久化到文件中;jdbc:h2:file:./Mydb(保存到当前目录下的Mydb.mv.db中)服务式: 像普通数据库一样,以客户端方式通过原创 2020-09-20 13:56:49 · 6353 阅读 · 3 评论 -
Jackson使用简介与示例
文章目录Jackson是当前用最流行的json解析器之一,用来序列化和反序列化。###Jackson基础Jackson的核心模块由三部分组成:jackson-core:核心包,提供基于"流模式"解析的相关API,包括JsonPaser和JsonGenerator;jackson-annotations:注解包,提供标准注解功能;jackson-databind:数据绑定包,提供基于"对象绑定"解析的相关API(ObjectMapper)和"树模型"解析的相关API(JsonNode)。为使原创 2020-09-13 10:46:30 · 1290 阅读 · 2 评论 -
Java通过Process运行外部子程序
Process类Runtime.exec方式ProcessBuilder方式Java中ProcessBuilder.start()和Runtime.exec()方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息。Process类Process类提供了从进程输入、输出到进程、等待进程完成、检查进程的退出状态以及销毁(杀掉)进程的方法。Java中创建的Process子进程没有自己的终端或控制台;它的所有.原创 2020-05-30 16:35:25 · 1475 阅读 · 0 评论 -
Redis的java操作接口与分布式锁
RedisTemplate分布式锁Redis是一个基于内存的数据库,提供了字符串(String)、散列(Hash)、列表(list)、集合(sets) 和 有序集合(sorted sets)几种数据类型(具体参见Redis简介)。RedisTemplatespring-redis中使用了RedisTemplate进行redis的操作,通过泛型的K和V设置键值对的类型;并对五种...原创 2020-04-11 23:13:27 · 215 阅读 · 1 评论 -
Java反射机制简介
反射操作类反射示例反射库提供了丰富的工具集,以便编写能动态操纵Java代码的程序(JavaBean中即大量应用)。通过反射,可以知道任意类的所有属性和方法,调用对象的属性和方法。反射机制可以:在运行时分析类的能力; 在运行时查看对象; 实现通用的数组操作代码; 利用Method对象:调用函数;反射操作类java.lang.reflect包中封装了反射相关的操作类:...原创 2020-03-20 23:15:28 · 168 阅读 · 1 评论 -
Java输入输出流与文件操作简介
I/O体系文件操作Java所有的I/O机制都是基于数据流进行输入输出的,这些数据流表示了字符或者字节数据的流动序列: 可以从中读入一个字节序列的对象称为输入流; 可以向其写入一个字节序列的对象称为输出流。 I/O体系输入输出流大体可分为字符流与字节流两大类: 字节流:以字节为单位从stream中读取或写入信息;抽象类InputStream和OutputS...原创 2020-03-15 15:20:59 · 1058 阅读 · 0 评论 -
Java Socket通讯简介
服务端客户端Java中Socket通讯是通过java.net.ServerSocket和java.net.Socket实现的,ServerSocket用于服务端侦听,Socket用于真实的连接。服务端服务端所有操作是通过ServerSocket完成。侦听服务端需要先绑定要侦听的端口,然后通过accept等待客户端连接: new时传入端口:在所有本机地址上侦听;...原创 2020-03-04 22:23:53 · 230 阅读 · 0 评论 -
Java格式化与日期时间简介
格式化符指定格式化参数时间日期格式化日期格式化传统方式本地日期LocalDate本地时间LocalTime日期时间时间点Instant与段DurationJava中的格式化类似C语言中printf,如System.out.printf(...)、String.format(...)等。格式化符格式化符以%开始,根据格式化符格式化后面的参数。可使用各种标志来控制格式化输出...原创 2020-02-27 22:52:36 · 849 阅读 · 1 评论 -
Java中获取CPU与内存利用率
使用说明代码示例当我们需要获取当前机器的资源利用时,Java中如何获取呢?最方便的方式即使用com.sun.management.OperatingSystemMXBean来获取。使用说明虽然通过getProcessCpuLoad和getSystemCpuLoad可获取当前CPU的负载,但是当首次调用时,常常获取到的是不真实的值(甚至可能为负),且CPU负载常常是忽高忽低的,...原创 2020-02-23 22:57:20 · 2964 阅读 · 2 评论 -
Java集合Collection简介及List与Map使用示例
集合框架List接口Map接口Set接口Java集合(java.util.*)是一非常重要的工具包: 其包含了常用的数据结构:集合、链表、队列、栈、数组、映射等; 集合可分为几个重要部分:List列表、Set集合、Map映射、工具类(Iterator、Enumeration、Arrays、Collections)。 集合框架Java集合工具包框架图如下...原创 2020-02-09 18:45:01 · 559 阅读 · 0 评论 -
Java8之流(Stream)操作与可空类(Optional)
Java8的集合支持新的stream方法会返回流(java.util.stream.Stream),流只能遍历一次;其可以支持常用的类似数据库的流操作。中间操作可以连接起来(将一个流转换为另一个流)构建一个流水线,终端操作会消耗流,以产生一个最终结果: 中间操作(返回Stream) filter(Predicate<?>):返回匹配的流; map(Fu...原创 2019-06-26 22:14:09 · 9523 阅读 · 0 评论 -
Java点滴之相等比较、抽象类与接口、多线程与锁简介
Java点滴之相等比较、抽象类与接口、多线程与锁简介1、==和equals的区别:JVM把内存分为栈内存和堆内存:基本类型会直接在栈上分配;而new创建的对象(包括基本类型的封装类:Interger、String、Double等)和数组,则在对上存放,栈上只存放引用地址。默认情况下equal是通过==实现的:public boolean equals(Object a...原创 2019-05-29 20:04:55 · 246 阅读 · 0 评论 -
java简介
Java是一种面向对象的程序设计语言,包括三个体系: JavaSE(J2SE)(Java2 Platform Standard Edition,java平台标准版) JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企业版) JavaME(J2ME)(Java 2 Platform Micro Edition,ja...原创 2019-05-09 22:23:49 · 333 阅读 · 0 评论