1. Java
Java编程语言枝繁叶茂,数量掌握它并不是一件容易的事情,需不断钻研。
virgil.wang
苦学技术,精进业务
展开
-
AOP:从ProceedingJoinPoint中获取指定注解
【代码】AOP:从ProceedingJoinPoint中获取指定注解。原创 2023-04-13 10:19:13 · 710 阅读 · 0 评论 -
Java内存模型中堆和栈的区别
堆和栈的区别原创 2023-04-12 00:26:54 · 87 阅读 · 0 评论 -
创建正序和倒序的 TreeSet 集合
正序(默认正序)Set<Integer> collection = new TreeSet<>();倒序Set<Integer> collection = new TreeSet<>((m, n) -> n - m);原创 2021-09-14 17:17:39 · 222 阅读 · 0 评论 -
common-lang3 StringUtils.isNoneBlank(...)
public static boolean isNoneBlank(final CharSequence... css) { return !isAnyBlank(css);}这里的 blank 指的是 null, "" 和 " "。根据字面意思呢,我理解是如果方法参数里面均是 null, "" 和 " " 则为 true, ran后测试下来,发现大错特错。@Test public void stringUtilsIsNoneBlankTest() { Syst原创 2021-09-06 20:30:12 · 3890 阅读 · 0 评论 -
Java - main()启动会创建几个线程?
正如标题所指,当类中的 main() 启动的时候,JVM 会创建多少个线程,是一个吗?通过代码来看看这个问题。/** * @Author: virgil * @Date; 2021/4/3 上午11:24 * @Version: 1.0 **/public class MainMethodThreadTest { public static void main(String[] args) { System.out.println("I am main method"原创 2021-04-03 11:33:51 · 593 阅读 · 0 评论 -
JDK8 Map 利用 stream 表达式对 value 排序
/** * @author virgil * @datetime 2021/3/15 15:36 */public class MapSortTest { public static void main(String[] args) { Map<String, Long> map = new HashMap<>(); map.put("苹果", 20L); map.put("香蕉", 20L); m原创 2021-03-17 20:02:29 · 278 阅读 · 0 评论 -
Thread sleep()和yield()方法的区别
1. sleep() 方法和 yield() 方法的作用sleep():使线程休眠指定的时间,该方法不会释放当前线程的monitor锁。yield():提醒cpu当前的线程愿意释放当前的CPU资源,如果CPU资源不紧张,CPU会忽略掉这个提醒,如果CPU没有忽略这个提醒,则会释放该线程的monitor锁,然后将该线程的状态更新为RUNNABLE。2. 方法的区别sleep() 会导致当前线程暂停指定的时间,没有CPU时间片的消耗;yield() 只是给CPU提醒该线程愿意暂时释放CPU资源,CP原创 2021-03-14 11:20:19 · 795 阅读 · 0 评论 -
JVM Run-time Data Areas 异常发生原因及类型的汇总
摘录地址:https://docs.oracle.com/javase/specs/jvms/se13/html/index.html1. the pc registerEach Java Virtual Machine thread has its own pc(program counter) register.The Java Virtual Machine’s pc register is wide enough to hold a renturnAddress or a native p.翻译 2021-03-14 10:56:13 · 68 阅读 · 0 评论 -
Java - CompletableFuture 异步编排
1. 业务场景商品的详情页逻辑比较复杂,有些数据还需要远程调用,必然需要花费更多的时间。例如:商品详情页调用接口顺序优先级名称消耗时间/秒前置请求1获取 sku 的基本信息0.5无2获取 sku 的图片信息0.5无3获取 sku 的促销信息1无4获取 spu 的所有销售属性1依赖步骤一返回的spuId5获取规格参数及组下所有的规格参数1.5依赖步骤一返回的spuId6spu 详情1依赖步骤一返回的spuId原创 2021-03-04 23:25:29 · 204 阅读 · 1 评论 -
Java-线程池
1. 创建线程的四种方式继承Thread类实现Runnable接口实现Callable接口 + FutureTask (可以拿到返回结果,可以处理异常)线程池方式1和方式2: 主线程无法获取线程的运算结果。方式3: 主进程可以获取线程的运算结果,但是不利于控制服务器中的线程资源。可能导致服务器资源耗尽。用方式1、2和3创建线程,本质都是用new Thread()。在业务代码中,创建线程方式一律使用线程池的方式。2. 创建线程池2.1 Executorspublic static f原创 2021-02-28 23:50:42 · 126 阅读 · 0 评论 -
思考:Java抛出异常后程序代码还会继续执行吗?
这里讨论的异常不包括内存或栈溢出的运行时异常。演示代码package edu.virigl.exception;/** * @author virgil * @datetime 2020/12/31 11:06 */public class ExceptionContinueRun { public static void main(String[] args) { System.out.println("程序运行中..."); try {.原创 2020-12-31 11:15:30 · 1432 阅读 · 3 评论 -
Java Stream 正排序 示例
package edu.virigl.compare;import java.util.Arrays;import java.util.Comparator;import java.util.List;/** * @author virgil * @datetime 2020/12/11 11:26 */public class ComparatorTest { public static void main(String[] args) { Employee原创 2020-12-11 11:29:38 · 314 阅读 · 0 评论 -
RESTful APIs 设计规范
RESTful APIs 设计规范该文章是RESTful Web APIs中文版的重点概要。仅个人查阅使用,如要获取详细信息,可直接购买书籍。RESTful不是一种协议,也是一种文件格式,更不是一种开发框架。它是一系列的设计约束的集合:无状态性、将超媒体作为应用状态的引擎等。1、资源 和 表述资源 - 万物皆可为对象。资源一般是可以保存到计算机里面的事物。比如电子文档,数据库的一条记录,或者是一条算法的运行结果等。表述 - 表述用来描述资源状态。当客户端对一个资源发起一原创 2020-07-21 14:31:16 · 289 阅读 · 0 评论 -
面试-JVM-运行时数据区域
官方文档运行时数据区域描述JVM官方文档PDF链接地址链接:https://pan.baidu.com/s/1Lq-m7zFhpZ-ppII7kwe1wQ提取码:q7n2运行时数据区域Java虚拟机定义了在程序执行期间使用的各种运行时数据区域。其中一些数据区域是在Java虚拟机启动时创建的,只有在Java虚拟机退出时才会销毁。其他数据区域是每个线程。每个线程的数据区域在线程创建时创建,在线程退出时销毁。关于运行时数据区可以用以下图形来表示:程序计数器(The PC Register)程.原创 2020-07-10 16:38:19 · 106 阅读 · 0 评论 -
面试-JVM-四种引用的区别
何为引用(Reference)java.lang.ref.ReferenceAbstract base class for reference objects. This class defines the operations common to all reference objects. Because reference objects are implemented in close cooperation with the garbage collector, this class may原创 2020-07-10 13:59:23 · 179 阅读 · 0 评论 -
面试-Java基础-描述一下Java集合,项目中用到哪些?
这是一个很难回答的面试题,真不知道有哪位仁兄会碰到这种面试题。不过既然看到了这种题目的存在,那就手撕这个题目,如何来回答这个问题呢?思路:Java集合的组成元素?+ Java集合带来的好处? + Java集合都有哪些具体的实现,每个实现都有什么特点?集合是用来表示和操作一组相似元素的统一结构。Java乃至其它语言的集合框架都包含:接口(interface),实现(implmentations)和 算法(algorithms)。Java集合带来的好处:减少了代码的工作;提高编码的速度和质量;允许不相关原创 2020-07-07 17:25:01 · 1849 阅读 · 0 评论 -
面试-Java基础-StringBuffer与StringBuilder的区别
Java 提供了三种表达字符串的类,分别是String、StringBuffer和StringBuilder。String类被final修饰,是不可被继承或被重写的,为什么String被定义为不可变(immutable),请前往我的博客为什么String定义为final?;StringBuffer和StringBuilder是可变的(mutable)。noStringBufferStringBuilder1(主要区别)线程安全。方法大多都被synchronized修饰,意味着两个线原创 2020-07-06 15:55:49 · 122 阅读 · 0 评论 -
面试-java基础-为什么String定义为final?
虽然问题是短短的一句话:“为什么 String 定义为 final ?”。但问题表面下知识点可不止一点两点,为了更好的理解并回答这个问题。那先从 String 的类定义说起... * Strings are constant; their values cannot be changed after they * are created. String buffers support mutable strings. * Because String objects are immutable t原创 2020-07-06 12:04:43 · 865 阅读 · 0 评论 -
Java访问控制修饰词概要
1、包的概念package语句 定义类时需要指定类的名称,但如果仅仅将类名作为类的唯一标识,则不可避免的出现命名冲突的问题,这会给组件复用及团队间的合作造成很大的麻烦。 在java语言中,用包(package)的概念来解决命名冲突的问题,在定义一个类时,除了定义类的名称一般还要指定一个包名。 package语句必须写在java源文件的最开始,在定义类之前原创 2017-09-04 10:25:36 · 349 阅读 · 0 评论 -
Java—URL的equals比对方式
根据equals的文档说明:如果两个主机名可解析为同一IP地址,则认为两个主机相同(即使主机名不等);如果有一个主机名无法解析,但两个主机名相等(不区分大小写),或者两个主机名都为Null,则也认为这两个主机相同。原创 2017-09-04 21:22:36 · 2026 阅读 · 0 评论 -
Java-抽象方法和抽象类
由abstract修饰的方法为抽象方法,抽象方法只有方法的定义,诶欧方法体实现,用一个分号结尾; 一个类如果包含抽象方法,该类应该用abstract关键字声明为抽象类; 如果一个类继承了抽象类,必须重写其抽象方法(除非该类也声明了抽象类)。原创 2017-09-05 13:08:32 · 354 阅读 · 0 评论 -
Java-面向对象之接口interface
接口与继承不同,一个类可以实现(implements)多个接口,而只能继承(extends)一个(抽象)类,实现的接口直接用逗号分隔。当然,该类需要实现这些接口中定义的所有方法。 一个类可以通过implements关键字“实现”一个或多个接口。一个类实现了某个接口后必须实现该接口中定义的所有方法。例如:public interface A { void add(); //等价于pub原创 2017-09-05 14:16:05 · 304 阅读 · 0 评论 -
Java Long保留小数操作
public static void main(String[] args) { Long s = 1354201L; Double d = s / 100d; System.out.println(d);}原创 2017-12-11 09:33:52 · 36695 阅读 · 0 评论 -
构造函数的重载之泛型和基本类型调用分析
构造函数的重载之泛型和基本类型调用分析在定义http公共响应数据格式的时候,需要重载构造方法,对于public ResultVO(Integer code, String msg) 方法和 public ResultVO(Integer code, T data) 方法,在面对两个参数的时候,会调用哪一个方法呢?下面我来进行测试:/** * @author: chunxiao ...原创 2018-03-25 18:25:25 · 460 阅读 · 0 评论 -
Java 重写equals()时为什么要重写hashCode()方法
答案在基类Object中,你找到了吗?package java.lang;/** * Class {@code Object} is the root of the class hierarchy. * Every class has {@code Object} as a superclass. All objects, * including arrays, implement ...原创 2018-04-04 21:35:48 · 387 阅读 · 0 评论 -
Java小工具之SQL字段拼单引号或逗号
package com.virgil.application.util;import java.io.*;import java.util.ArrayList;import java.util.List;/** * @author virgil.Wang * @date 2019/8/23 9:32 */public class SqlUtils { private ...原创 2019-08-23 15:09:11 · 895 阅读 · 0 评论 -
面向对象三大特征之继承详解
面向对象三大特征:继承多态封装一、继承先从代码层次理解class Student{ String name; int age; String adress; String calssName; void eat(){} void sleep(){} void study(){}}class Teacher{ String na原创 2017-09-03 11:56:18 · 218 阅读 · 0 评论