
Java基础
文章平均质量分 79
猎人在吃肉
这个作者很懒,什么都没留下…
展开
-
Java 类中各员 的加载顺序 和 内存中的存放位置
在Person.class文件加载时,静态方法和非静态方法都会加载到方法区中,只不过要调用到非静态方法时需要先实例化一个对象,对象才能调用非静态方法。如果让类中所有的非静态方法都随着对象的实例化而建立一次,那么会大量消耗内存资源,所以才会让所有对象共享这些非静态方法,然后用this关键字指向调用非静态方法的对象。加载类文件时,除了非静态成员变量(对象的特有属性)不会被加载,其它的都会被加载。注意:要想使用类中的成员,必须调用。构造函数: 给对应对象初始化的,建立对象时,选择相应的构造函数初始化对象。转载 2024-02-20 11:36:17 · 594 阅读 · 0 评论 -
使用Lambda Stream 表达式,将 List<JavaBean> 转换为 List<Map>
@Testpublic void test(){ List<AdClaimsVO> list = adClaimsService.queryList(); List<Map> mapList = list.stream().map(adClaimsVO -> { //方法的参数 Map map = BeanUtil.beanToMap(adClaimsVO, false, true); // BeanUtil是一个工具类,beanToMap() 将JavaBe原创 2021-06-04 09:14:30 · 3403 阅读 · 0 评论 -
JVM 的 Native Method (本地方法)
文章目录java 的 native method (本地方法)1、 什么是 native method1.1、native method 的定义1.2、native 与 abstract 的区别1.3、native 与 java 普通方法使用的区别1.4、native method 的返回类型 与 异常二、为什么要使用 native method2.1、与java环境外交互:2.2、与操作系统...转载 2020-04-02 12:05:46 · 2443 阅读 · 0 评论 -
Java IO流体系图(图)
文章目录一、字节流1.1、字节写入流1.2、字流读取流二、字符流2.1、字符写入2.2、字符读取一、字节流1.1、字节写入流1.2、字流读取流二、字符流2.1、字符写入2.2、字符读取...原创 2020-03-07 12:06:41 · 4185 阅读 · 0 评论 -
Exception in thread “main“ java.io.FileNotFoundException: d:\aaaa\a.txt (系统找不到指定的路径。)
问题学习IO流时,想换字符持久化到 a.txt 文件中,代码如下:public class Test { public static void main(String[] args) throws IOException { File file=new File("d:/aaaa/a.txt"); if(!file.exists()){ file.mkdirs...原创 2020-03-05 14:59:28 · 12746 阅读 · 1 评论 -
java 接口(interface)在不同JDK版本中的变化
接口定义:使用interface关键字 。接口中的 所有 成员变量 都默认是由 public static final 修饰的。接口中的 所有方法 都默认是由 public abstract 修饰的。也可以使用protected,但不能用private。接口中的 所有方法 都没有方法体。接口没有构造方法。因为构造方法用于创建对象。实现接口的类中必须提供接口中所有方法的具体实现内容。...原创 2020-02-16 18:04:35 · 2986 阅读 · 1 评论 -
java如何区分变量、成员变量、实例变量、静态变量、静态常量(类变量)、常量、静态常量、字段、属性
文章目录一、概念区分0、变量1、成员变量2、实例变量3、静态变量、类变量4、常量:5、静态常量:6、字段7.属性:8.局部变量:二、代码示例一、概念区分0、变量通常说的变量,就是将对象的状态存储到字段中int a = 10;1、成员变量成员变量:作用范围是整个类,相当于C语言中的全局变量,定义在方法体和语句块之外,一般定义在类的声明之下;成员变量包括:实例变量、静态变量(又叫类变量...原创 2020-02-12 11:19:06 · 789 阅读 · 0 评论 -
Java集合类: Set、List、Map、Queue使用场景梳理
文章目录1. Java集合类基本概念2. Java集合类架构层次关系2.1、Iterable 接口2.2、Collection2.2.1、Set2.2.3、 List2.2.4、 Queue2.5、Map3. Java集合类的应用场景代码3.1、Set3.1.1、HashSet3.1.2、LinkedHashSet3.1.3、TreeSet3.1.4、EnumSet3.2、List3.2.1、Ar...转载 2018-11-20 13:56:52 · 310 阅读 · 0 评论 -
java 正则表达式 去掉 文章头部和尾部的空格(全角,半角)、制表符、换页符
public class StringTool { /** * 去除 字符串中 所包含的空格 * * &amp;lt;pre&amp;gt; * 包括:空格(全角,半角)、制表符、换页符等 * &amp;lt;/pre&amp;gt; * * @param xhtml * @return */ public static String removeAllBlank(Strin转载 2019-01-03 18:02:42 · 2265 阅读 · 1 评论 -
CountDownLatch (倒数计数器)使用例子
CountDownLatch doneSignal = new CountDownLatch(10);public boolean await()当计数(N)大于零,当前线程将一直处于休眠状态;并一直监控N和countDown()方法。当直到countDown()方法将 N 减为0,则当前的线程进入运行状态。public void countDown()每调用一次,计数...转载 2015-03-02 23:23:05 · 2612 阅读 · 0 评论 -
加密解密时,报异常 java.security.InvalidKeyException: Illegal key size or default parameters的解决办法
1、异常执行代码加密解密在此处报错了。 Cipher cipher = Cipher.getInstance(&amp;amp;amp;quot;AES/CBC/NoPadding&amp;amp;amp;quot;);异常信息是 java.security.InvalidKeyException: Illegal key size or default parameters2、原因因为美国的出口限制,Sun通过权限文件(local_polic原创 2018-12-24 15:04:57 · 2904 阅读 · 0 评论 -
百度小程序的用户数据解密(java实现)
https://smartprogram.baidu.com/docs/develop/api/open_log/#用户数据的签名验证和加解密/百度小程序 对 用户数据的签名验证和解密BaiduDecryptUtil.javaimport java.nio.charset.Charset;import java.util.Arrays;import javax.crypto.Ciphe...原创 2018-12-24 15:17:57 · 2432 阅读 · 0 评论 -
List 和Array 相互转化
1、List to Array1.1、List 转成 Object 类型数组使用List的toArray()方法,只能转成 Object 数组,所以有局限性。@Testpublic void listToArray() { Object[] array = list.toArray(); //print(array);}1.2、List 转成 String 类型数组使用List...转载 2019-01-03 14:52:40 · 15693 阅读 · 0 评论 -
蚂蚁花呗 三面题目:红黑树+并发容器+CAS+Solr+分布式+大数据
蚂蚁花呗一面(一个小时):Java容器有哪些?哪些是同步容器,哪些是并发容器?ArrayList和LinkedList的插入和访问的时间复杂度?java反射原理, 注解原理?新生代分为几个区?使用什么算法进行垃圾回收?为什么使用这个算法?HashMap在什么情况下会扩容,或者有哪些操作会导致扩容?HashMap push方法的执行过程?HashMap检测到hash冲突后,将元素插入...转载 2018-11-20 08:49:29 · 1051 阅读 · 2 评论 -
java占位符
1、键值 (key/value)占位符import java.util.HashMap;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Main5 { public static void main(String[] args) { M...原创 2018-11-19 15:14:14 · 2187 阅读 · 0 评论 -
从ConcurrentHashMap的演进看Java多线程核心技术
转载:https://blog.csdn.net/Habren/article/details/74371423线程不安全的HashMap众所周知,HashMap是非线程安全的。而HashMap的线程不安全主要体现在resize时的死循环及使用迭代器时的fast-fail上。注:本章的代码均基于JDK 1.7.0_67HashMap工作原理HashMap数据结构常用的底层数据结构主要有...转载 2018-11-15 10:00:09 · 246 阅读 · 0 评论 -
Java 链式编程 和 lombok 实现链式编程
转载:https://www.jianshu.com/p/2b29aaffa954在我们编写代码过程中听到过很多说法如:面向切面编程,函数式编程,面向对象编程等等接着我来说下链式编程链式编程的原理就是返回一个this对象,就是返回本身,达到链式效果。我们经常用的 StringBuffer 就是 实现了链式的写法。StringBuffer builder = new StringBu...转载 2018-10-28 21:52:53 · 42310 阅读 · 7 评论 -
事务的7种传播机制和演示
required如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。requires_new创建新事务,无论当前存不存在事务,都创建新事务。nested如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与 propagation_required 类似的操作。supports支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。not_supported以非事务方式执行操作,如果转载 2018-04-11 22:25:37 · 8161 阅读 · 2 评论 -
synchronized 面试题 ---- 生产者、消费者
/** * 面试题 ---- 生产者、消费者 * */public class TestProductorAndConsumer { public static void main(String[] args) { Clerk clerk=new Clerk(); Productor pro=new Productor(clerk); ...原创 2018-08-17 19:38:11 · 395 阅读 · 0 评论 -
非静态同步方法和静态同步方法 对锁的持有
一、代码package com.aop8.testJava;import java.util.concurrent.TimeUnit;/** * * &amp;amp;lt;pre&amp;amp;gt; * 1. 两个普通同步方法,两个线程,标准打印,打印? //one two * 2. 新增 Thread.sleep() 给getOne() ,打印? // one two * ...转载 2018-08-18 10:32:38 · 656 阅读 · 0 评论 -
读写锁 ReadWriteLock
读写锁 ReadWriteLockpackage com.aop8.testJava;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * 读写锁 ReadWriteLock * */public cla...原创 2018-08-18 10:30:12 · 195 阅读 · 0 评论 -
ThreadPoolTaskExecutor 使用说明
当我们需要实现并发、异步等操作时,通常都会使用到 ThreadPoolTaskExecutor,现对其使用稍作总结。配置ThreadPoolTaskExecutor 通常通过XML方式配置,或者通过Executors的工厂方法进行配置。XML方式配置代码如下:&amp;amp;amp;lt;bean id=&amp;amp;quot;taskExecutor&amp;amp;quot; class=&amp;amp;quot;转载 2019-02-15 11:10:57 · 6950 阅读 · 0 评论 -
队列 LinkedBlockingQueue
1 apijava.util.concurrent包下的新类。LinkedBlockingQueue 就是其中之一,是一个阻塞的线程安全的队列,底层采用 链表 实现。LinkedBlockingQueue 构造的时候若没有指定大小,则默认大小为 Integer.MAX_VALUE ,当然也可以在构造函数的参数中指定大小。LinkedBlockingQueue 不接受null。添加元素的方法...转载 2019-02-15 15:34:46 · 1617 阅读 · 0 评论 -
java 精确到小数点后6位、必须保留小数点后6位
精确到小数点后6位,必须保留小数点后6位@NotBlank(message = "rate不能为空")@Length(max = 20, message = "rate长度不能超过20位")@Pattern( regexp = "^[0-9]+.[0-9]{6}$" ,message = "rate 必须保留小数点后6位")private String rate;...原创 2019-10-08 15:03:10 · 6336 阅读 · 0 评论 -
java实现冒泡、选择、插入、快速和归并的基础排序
文章目录1、Java实现各种基础排序1.1、工具类(用于元素的比较、交换)2、冒泡排序3、选择排序4、插入排序5、快速排序6、归并排序1、Java实现各种基础排序在排序的过程中,元素的比较和交换是避免不了的。在此我们先封装个工具类,封装起来元素的 比较方法、交换方法 及 排序前后的输出。1.1、工具类(用于元素的比较、交换)/** * 封装 元素交换,元素比较 */public f...转载 2019-03-18 15:32:26 · 251 阅读 · 0 评论 -
深入理解单例模式:静态内部类单例原理
public class Client { private Client (){} private static class SingletonHolder { static final Client instance = new Client(); } public static Client getInstance() { return SingletonHolder....转载 2019-03-02 15:48:38 · 499 阅读 · 0 评论 -
Java JVM虚拟机学习的经典书籍
1、深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)基于最新JDK1.7,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行全面而深入的分析,深刻揭示JVM的工作原理。以实践为导向,通过大量与实际生产环境相结合的案例展示了解决各种常见JVM问题的技巧和实践2、揭秘Java虚拟机:JVM设计原理与实现《揭秘Java虚拟机:JVM设计原理与实现》从源码角度解...转载 2019-02-20 21:55:47 · 7517 阅读 · 0 评论 -
JVM类加载机制—加载的顺序问题
文章目录1、代码2、运行结果:3、分析:1、代码package com.aop8.classload;public class Demo01 { static { System.out.println(&amp;amp;quot;静态代码块Demo01&amp;amp;quot;); } public static void main(String[] args) { System.out.println(&a转载 2019-03-01 16:01:29 · 753 阅读 · 0 评论 -
java中 构造代码块、static代码块和局部代码块的区别
package com.aop8.classload;class StaticCode { int age; // static 代码块 static { System.out.println("111--static "); } // 构造代码块 { System.out.println("22 "); } // 构造函数 StaticCode(int age) ...转载 2019-03-01 15:51:04 · 389 阅读 · 0 评论 -
3个线程 交替换打印,lock.newCondition()、Condition的使用例子
编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。如:ABCABCABC…… 依次递归package com.aop8.lock1;import java.util.Random;import java.util.concurrent.TimeUnit;import java.util....原创 2019-02-13 23:38:19 · 3601 阅读 · 0 评论 -
Lock、ReentrantLock实现生产者,消费者的面试题
package com.aop8.proAndcum;import java.util.Random;import java.util.Vector;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock...转载 2019-02-13 18:23:36 · 1879 阅读 · 0 评论 -
Java中字段、属性、成员变量、局部变量、实例变量、静态变量、类变量、常量
代码示例public class Student { private int Id;//成员变量(字段)、实例变量(表示该Id变量既属于成员变量,又属于实例变量) private String name;//成员变量(字段)、实例变量 public int age;//成员变量(字段)、实例变量(这里用来举例子,在实际中一般都会设置为private) ...转载 2019-02-19 09:53:49 · 1431 阅读 · 0 评论 -
Executor、ExecutorService 和 Executors 三者的继承关系 和 不同点
Executor,ExecutorService,Executors 最主要的区别是 Executor 是一个抽象层面的 **根接口**。ExecutorService 接口 对 Executor 接口进行了扩展,提供了返回 Future 对象,终止,关闭线程池等方法。当调用 shutDown 方法时,线程池会停止接受新的任务,但会完成正在 pending 中的任务。`Executors` 是一个工具类,类似于 `Collections` 、`Arrays` 等 。提供工厂方法来创建不同类型的线程池,比如转载 2019-02-13 15:09:07 · 2966 阅读 · 0 评论 -
CountDownLatch 和 CyclicBarrier 区别
这两天写多线程时,用到了CyclicBarrier,下意识的认为CyclicBarrier和CountDownLatch作用很像,就翻阅资料查了一下,说一下他们的区别吧CyclicBarrier 和 CountDownLatch 都位于 java.util.concurrent 这个包下 CountDownLatch CyclicBarrier 减计数方式 加计...转载 2018-04-09 23:10:23 · 729 阅读 · 2 评论 -
Integer、new Integer() 和 int 比较和相关的面试题
两个 `new Integer()` 变量比较 ,永远是 false 。`Integer`变量 和 `new Integer()` 变量比较 ,永远为 false。两个` Integer` 变量比较,如果两个变量的值在区间-128到127 之间,则比较结果为true。Integer i = 100 在编译时,会翻译成为 Integer i = Integer.valueOf(100)转载 2018-04-06 11:46:05 · 3194 阅读 · 1 评论 -
java基本数据类型所占字节数
1、整型类型存储需求bit数取值范围备注byte1字节1*8-128~127-short2字节2*8-32768~32767-int4字节4*8--long8字节8*8--JAVA是采用Unicode编码。每一个字节占8位。你电脑系统应该是 32位系统,这样每个int就是 4个字节 。其中,一个字节由8个二进制位...原创 2019-02-11 17:30:41 · 11239 阅读 · 3 评论 -
Java面试题——try/catch
面试题1public class Main3 { public static void main(String[] args) { System.out.println(test1()); System.out.println("================="); System.out.println(test2()); } public static String ...原创 2019-02-11 15:52:45 · 1157 阅读 · 0 评论 -
原子变量与CAS算法 AtomicInteger
package com.aop8.testJava;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;/** * &amp;lt;pre&amp;gt; * 二、原子变量:JDK1.5后,java.util.concurrent.atomic包下提供了常用的原子变量: * ...原创 2018-08-18 08:24:15 · 358 阅读 · 0 评论 -
Lock ReentrantLock Condition 面试题----线程按序交替
import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 面试题 ---- 线程按序交替 */public class TestABCAlternate { ...转载 2018-08-17 22:36:54 · 811 阅读 · 0 评论 -
批量删除maven下载失败文件lastUpdated的目录
因网络或其他的原因,maven下载jar等文件失败后,会在目录中存在 *.jar.lastUpdated ,如:xmlpull-1.1.3.1.jar.lastUpdated,此时,代码编译时会一直出错,编译无法通过。必须将此下载失败文件的目录全部删除,然后maven重新下载jar等文件。如果下载失败的文件太多,查找和删除时会很耗时间的。下面提供一个查找和删除文件目录的类,减原创 2017-03-27 14:02:46 · 2415 阅读 · 0 评论