java
文章平均质量分 58
Crystalqy
这个作者很懒,什么都没留下…
展开
-
jdk 8 List相关知识点
如果只需检查元素是否存在,使用 List.contains。原创 2023-10-12 10:40:35 · 144 阅读 · 0 评论 -
jdk 8 hashMap相关知识点
这些方法允许您对 Map 中的键值对进行灵活的操作,根据需要更新、插入或删除键值对。原创 2023-10-12 10:39:04 · 98 阅读 · 0 评论 -
解析yml文件 转换 Map
起因有一个需求是把一个yml文件解析成HashMap格式的数据,文件内容如下spring: datasource: serviceDB: jdbc-url: jdbc:mysql://127.0.0.1:3306/serviceDB password: test minimum-idle: 1 idle-timeout: 60000 maximum-pool-size: 150 username: root原创 2021-07-27 15:14:40 · 27422 阅读 · 0 评论 -
java8 Lambda表达式集合排序
初始化一个集合List<Person> list= new ArrayList<>();for (int i = 0; i < 5; i++) { Person person = new Person(); person.setId(new Random().nextInt(i + 10)); list.add(person);}1. 自然排序list = list.stream().sorted(Comparator.comparing(Perso.原创 2021-07-02 11:08:22 · 998 阅读 · 0 评论 -
Java中sin、log、tan等复杂数学运算怎么搞?
出处 | 程序猿DD 责编 | 张红月MXReflection,一个基于mXparser库功能的Java复杂计算框架。还记不记得求学时代各种复杂的数学公式?sin、log2、tan等等等,是不是看到这就觉得算起来麻烦?通过MXReflection框架,你可以使用Java计算这些曾经我们觉得无比复杂的数学运算和函数,只需使用与类相关的字段。MXReflection可以从指定字段读取值,并将结果注入@Expression注释字段。<dependency><gro...转载 2021-03-30 20:00:39 · 471 阅读 · 0 评论 -
ExecutorService——shutdown方法和awaitTermination方法
ExecutorService的关闭shutdown和awaitTermination为接口ExecutorService定义的两个方法,一般情况配合使用来关闭线程池。方法简介 shutdown方法:平滑的关闭ExecutorService,当此方法被调用时,ExecutorService停止接收新的任务并且等待已经提交的任务(包含提交正在执行和提交未执行)执行完成。当所有提交任务执行完毕,线程池即被关闭。 awaitTermination方法:接收人timeout和TimeUnit转载 2021-01-28 17:31:54 · 910 阅读 · 0 评论 -
Java子类与父类之间的对象转换(说明继承)
在使用Java的多态机制时,常常使用的一个特性便是子类和父类之间的对象转换。从子类向父类的转换称为向上转换(upcasting),通过向上转换,我们能够在编写程序时采用通用程序设计的思想,在需要使用子类对象的时候,通过把变量定义为父类型,我们可以通过一个变量,使用该父类型的所有子类型实例;从父类型向子类型的转换称为向下转换(downcasting),通过向下转换,我们能在必要的时候,将父类型变量转换成子类型变量,使用一些通过子类型才能够使用的方法。以下是我对于对象转换的一些个人理解,如有不对,欢迎指正,虚心转载 2021-01-06 10:43:41 · 1017 阅读 · 0 评论 -
就这一次,搞定异常!
异常的分类Throwable类Throwable:所有异常都是由Throwable继承而来的,可以通过继承Throwable来实现新的异常,但是一般不推荐这样做,下一层分为了两个分支:Error和ExceptionError类Error类来用描述java运行时系统内部引起的错误和资源消耗错误,因为是java内部的错误,因此编写的应用程序无能为力。Exception类Exception:Exception类又可以分为IOException和RuntimeException,一般程.转载 2020-10-26 14:08:26 · 221 阅读 · 0 评论 -
面向对象的三大基本特征和五大原则
面向对象的三大基本特征封装(Encapsulation)所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。继承(Inheritance转载 2020-10-22 19:50:23 · 300 阅读 · 0 评论 -
Eclipse安装查看java字节码插件Bytecode Outline查看java字节码信息
一 :安装二:使用输入by,同时选中这两个选项,点击确定按钮接下来就可以查看.java文件编译后对应的字节码了原创 2020-09-04 20:34:35 · 815 阅读 · 1 评论 -
Java substring() 方法
substring() 方法返回字符串的子字符串。语法public String substring(int beginIndex)或public String substring(int beginIndex, int endIndex)参数 beginIndex-- 起始索引(包括), 索引从 0 开始。 endIndex-- 结束索引(不包括)。 返回值子字符串。1、取得的字符串长度为:endIndex - beginIndex;2、从b...原创 2020-08-24 14:09:00 · 212 阅读 · 0 评论 -
Fastjson解析json对象出现$ref: “$.list[0]“的解决办法
今天定义了一个JSONObject对象,引用的com.alibaba.fastjson.JSONObject,循环给这个对象赋值出现"$ref":"$[0]"现象,/** * fastjson中$ref对象重复引用问题 * * 介绍: * FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测。 * 关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致StackOverf原创 2020-08-18 18:59:56 · 721 阅读 · 0 评论 -
新一代垃圾回收器ZGC的探索与实践
很多低延迟高可用Java服务的系统可用性经常受GC停顿的困扰,作为新一代的低延迟垃圾回收器,ZGC在大内存低延迟服务的内存管理和回收方面,有着非常不错的表现。本文从GC之痛、ZGC原理、ZGC调优实践、升级ZGC效果等维度展开,详述了ZGC在美团低延时场景中的应用,以及在生产环境中取得的一些成果。希望这些实践对大家有所帮助或者启发。ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括: 停顿时间不超过10ms; 停顿时间转载 2020-08-07 15:29:49 · 373 阅读 · 0 评论 -
jvm垃圾回收的算法调优
在控制台输入命令java -XX:+PrintCommandLineFlags -version显示结果 -XX:+UseParallelGC 新生代使用ParallerGC,老年代使用Serial Old垃圾回收器列表并行:垃圾收集的多线程的同时进行。并发:垃圾收集的多线程和应用的多线程同时进行。垃圾回收器工作示意图Serial/Serial Old最古老的,单线程,独占式,成熟,适合单CPU服务器-XX:+UseSerialGC 新生代和老年代都用...转载 2020-07-27 15:42:02 · 181 阅读 · 0 评论 -
jstat分析JVM的使用情况和查看full gc频率
jstat 命令格式如下所示为jstat的命令格式jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]使用jps查看java进程也可以直接使用ps -ef | grep java查看java进程如下表示分析进程id为25677的gc情况,每隔1000ms打印一次记录,打印10次停止,每3行后打印指标头部jstat -gc -h3 25677 1..原创 2020-07-24 09:02:06 · 26596 阅读 · 3 评论 -
面试再问你什么是堆和栈,你就把这篇文章甩给他
堆和栈栈:管程序如何运行的,程序如何执行,如何处理数据。(局部变量其实也是存在栈中的,引用数据类型在栈中存的是地址引用)(栈的空间就不需要那么大了)堆:管数据存储的。(引用数据类型的存放,所以堆的空间是比较大的)栈的作用主管Java程序的运行,它保存方法的局部变量(8种基本数据类型、对象的引用地址)、部分中间的结果,并参与方法的调用和返回。我们先粗粒度感受一个栈的结构:每个线程都有自己的栈,栈中的数据都是以栈帧(stack Frame)的格式为基本单位进行存储的。(栈中保存的...转载 2020-07-20 09:33:26 · 220 阅读 · 0 评论 -
Disruptor介绍 -- 初识Disruptor框架
Disruptor简介:LMAX Disruptor是一个高性能的线程间消息库。它源于LMAX对并发性,性能和非阻塞算法的研究,如今构成了Exchange基础架构的核心部分。 Disruptor它是一个开源的并发框架,并获得2011 Duke’s 程序框架创新奖,能够在无锁的情况下实现网络的Queue并发操作。 Disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。 在这里你可以跟Bloc原创 2020-07-10 18:31:27 · 1207 阅读 · 0 评论 -
Java线程池实现原理深度分析
一、写在前面1.1 线程池是什么线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处理任务时创建销毁线程开销的代价,另一方面避免了线程数量膨胀导致的过分调度问题,保证了对内核的充分利用。而本文描述线程池是JDK中提供的ThreadPoolExecutor类。原创 2020-06-05 09:05:45 · 26512 阅读 · 0 评论 -
java 注解和自定义注解详解
定义注解是在JDK1.5之后引入的新特性位于java.lang.annotation,注解其实就是对代码进行一种特殊的标记,这些标记可以在编译,类加载和运行时被读取,并执行相应的处理。第三方注解在Java开发者,JDK自带了一些注解,在第三方框架Spring 带了大量的注解,这些注解称为第三方注解1、Jdk通用注解@Override注解:编译检查,告诉编译器这个是个覆盖父类的方法。如果父类删除了该方法,则子类会报错。@Target({ElementType.METHOD})@.原创 2020-05-15 17:44:34 · 16633 阅读 · 0 评论 -
java(jdk1.8)五种线程池,你都知道具体的应用场景吗?
1.什么是线程池?线程池是指在进程开始时创建一定数量(有上限)的线程,并放入池中,需要使用时,就从池中取出来一个可用线程,用完后,不是销毁,而是返回池中。如果线程用完了,就需要等待有空闲的线程后,才能使用。java在JDK1.5后就引入了线程池。所以不需要我们自己实现一个线程池。举例说明:没有使用线程池的时候,假设我们要看一本书“java编程思想”,是直接到网上买一本书,买来后,看完...转载 2020-02-21 16:51:09 · 1693 阅读 · 0 评论 -
ThreadPoolExecutor使用LinkedBlockingQueue的坑
ThreadPoolExecutor threadPool = new ThreadPoolExecutor( 4, // corePoolSize 64, // maximumPoolSize 60L, // keepAliveTime TimeUnit.SECONDS, // timeUnit new LinkedBlockingQueue<&g...转载 2019-10-24 19:41:03 · 2257 阅读 · 0 评论 -
java8 lambda表达式
1、在lambda表达式中加入PredicateList features = Arrays.asList("Lambdas", "Default Method", "Stream API", "Date and Time API");features.stream().filter(str->str.startsWith("D")).forEach(name -> {System.o原创 2018-01-12 16:33:17 · 334 阅读 · 0 评论 -
java内存分配与回收
jvm区域总体分两类,heap区和非heap区heap区又分:Eden Space(年轻代)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。1:对象优先在Eden原创 2018-01-12 16:36:36 · 231 阅读 · 0 评论 -
Eclipse远程调试
java -Xdebug -Xrunjdwp:transport=dt_socket,address=2345,server=y,suspend=n -jar xxx.jarjava -Xdebug -Xrunjdwp:transport=dt_socket,address=2345,server=y,suspend=n -jar ./target/fae-ms-d原创 2018-01-15 16:54:22 · 307 阅读 · 0 评论 -
Spring boot处理附件的一个坑
最近在做项目的时候由以前的war包部署在tomcat中运行,改成了Spring boot框架,Spring boot框架更加简单方便的搭建一个web应用。 之前的代码在改造的过程中遇到了一个关于附件处理的坑,之前在war包运行的时候,使用了Spring提供的ResourceLoader获取附件,代码是这样写的: @Autowired private ResourceLoader re...原创 2018-01-24 16:07:48 · 573 阅读 · 0 评论 -
java web 服务器推送技术--comet4j
java web 服务器推送技术--comet4j长轮询(lpool)方式,它同样使用的ajax,简单说一下,就是客户端使用ajax发送一个请求,HTTP的连接保持,服务器端会阻塞请求,直到服务器端有一个事件触发或者到达超时。服务器端肯定会开启一个线程,这个线程会时时监测要请求的数据是否有变化,如果有变化,则向客户端输出最新消息,并关闭链接,客户端收到消息处理之后,再次向服务器端请求,原创 2018-01-12 16:38:08 · 429 阅读 · 0 评论 -
java7 try-with-resources
try-with-resources语句是一个声明一个或多个资源的 try 语句。一个资源作为一个对象,必须在程序结束之后随之关闭。 try-with-resources语句确保在语句的最后每个资源都被关闭 。任何实现了 Java.lang.AutoCloseable的对象, 包括所有实现了 java.io.Closeable 的对象, 都可以用作一个资源。static Str原创 2018-01-12 16:36:11 · 202 阅读 · 0 评论 -
java反射
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。Eg1:通过一个对象获得完整的包名和类名package Reflect; /** * 通过一个对象获得完整的包名和类名 * */class Demo{原创 2018-01-16 20:26:56 · 181 阅读 · 0 评论 -
Bug解决方案:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 8; 不允许有匹配 "[xX][mM][lL]" 的处理指令目标
Bug解决方案: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 8; 不允许有匹配 “[xX][mM][lL]” 的处理指令目标问题解析:遇到这样的bug是因为xml文件第一句出错。解决方法:1、确保xml的第一句转载 2018-02-01 19:37:35 · 1808 阅读 · 0 评论 -
Logback日志
Logger可以被分配级别。级别包括:TRWARNACE、DEBUG、INFO、ERROR,定义于ch.qos.logback.classic.Level类。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。如果设置级别为INFO,则优先级高于等于INFO级别(如:INFO、 WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。为确保所转载 2018-02-01 19:42:22 · 717 阅读 · 0 评论 -
面向接口编程详解(一)——思想基础
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。1.面向接口编程和面向对象编程是什么关系首先,面向接口编程和面向对象编程并不是平级的,转载 2018-01-18 10:11:54 · 239 阅读 · 0 评论 -
面向接口编程详解(二)——编程实例
通过上一篇文章的讨论,我想各位朋友对“面接接口编程”有了一个大致的了解。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象。为充分考虑到初学者,所以这个例子非常简单,望各位高手见谅。问题的提出 定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。上下文(环境):已知要实现U盘、MP3播放器、移动硬盘三种移动存储原创 2018-01-18 10:32:36 · 245 阅读 · 0 评论 -
java动态代理特性学习
使用下面的代码示例进行演示,代码结构如下: 定义接口IProxyEntity:/** * 被代理对象的接口 * @author administrator * */public interface IProxyEntity { public void modify(); void test1(); void test2();}接口实现类ProxyE原创 2018-01-18 17:09:52 · 274 阅读 · 0 评论 -
java使用Httpclient发送post和get请求
做项目的时候需要使用到远程调用某个接口,采用简单的httpclient是一个不错的选择;采用http发送请求最核心的代码是httpClient.execute(httpPost) 下面是我项目中使用的工具类HttpClientUtil ,可以直接进行调用/** * httpclient util 处理http请求工具类 * * @author administrator */pu原创 2018-02-02 16:04:57 · 2048 阅读 · 0 评论 -
java打开本地应用程序
首先需要创建一个进程,然后用该进程去打开本地应用程序,当然也可以调用cmd命令。package main;public class CallExe { public static void main(String[] args) { Runtime rt = Runtime.getRuntime(); Process p = null;原创 2018-01-19 16:44:04 · 5953 阅读 · 2 评论 -
Java String的经典问题
Java中的比较有两种,是==和equals()方法,equals()是Object类的方法,定义在Object类中的equals()方法是如下实现的: public boolean equals(Object obj){ return (this==obj); } ==判断的是地址 String类重写了equals()方法,改变了这些类型对象相等的原则,原创 2018-01-19 16:49:18 · 286 阅读 · 0 评论 -
java基础知识
类成员的初始化顺序 一个类中,最首先被初始化的是静态成员,也就是有关键字static修饰的成员。只要一个类被使用也就是创建对象或者调用了该类的某个静态方法时静态成员就都会被初始化,并且静态数据在内存中只占用一份存储区域,无论创建多少个对象,静态数据被所有对象共享。 初始化静态成员后再初始化非静态成员。对于非静态成员之间,也是有初始化顺序的,变量定义的顺序决定了初始化的顺序(无论成员变量...原创 2018-01-19 16:51:24 · 1362 阅读 · 0 评论 -
Java中只有值传递没有引用传递
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。在java中,新创建的实体对象在堆...原创 2018-01-19 16:52:31 · 483 阅读 · 0 评论 -
java垃圾回收机制
垃圾回收算法: 大多数垃圾回收算法使用了根集(root set)这个概念;所谓根集就是正在执行的Java程序可以访问的引用变量的集合(包括局部变量、参数、类变量),程序可以使用引用变量访问对象的属性和调用对象的方法。垃圾回收首先需要确定从根开始哪些是可达的和哪些是不可达的,从根集可达的对象都是活动对象,它们不能作为垃圾被回收,这也包括从根集间接可达的对象。而根集通过任意路径不可达原创 2018-01-19 16:53:10 · 173 阅读 · 0 评论 -
Java 静态语句块、语句块、构造函数执行顺序
先执行静态代码块内容,接着执行父类非静态代码块和构造方法,然后执行子类非静态代码块和构造方法。而且子类的构造方法,不管这个构造方法带不带参数,默认的它都会先去寻找父类的不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键子来调用父类带参数的构造方法,否则编译不能通过。下面举几个实例 实例1: 父类HelloApublic class HelloA { ...原创 2018-01-19 16:53:44 · 582 阅读 · 0 评论