![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
hellohello3306
这个作者很懒,什么都没留下…
展开
-
idea中报错Error running ‘BiaoBaiShenQi [clean]‘: JAVA_HOME environment variable not define问题解决
检查环境变量java_home检查环境变量maven_home检查环境变量path原创 2022-05-26 15:55:21 · 1083 阅读 · 0 评论 -
使用J2SE API读取Properties文件
使用java.util.Properties类的load()方法import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Enumeration;import java.util.Properties;/** 新建一个配置文件(Test.properties),内容可以录入下面的语句。* name=JJ* Weigh...原创 2020-11-19 11:57:01 · 97 阅读 · 0 评论 -
spring中基于XML配置基本元数据的基本结构以及实例化和使用容器
目录spring中基于XML配置基本元数据的基本结构单配置文件的引用多配置文件的引用如何使用容器spring中基于XML配置基本元数据的基本结构<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs原创 2020-11-16 09:49:23 · 700 阅读 · 0 评论 -
@Resource和@Autowired注解
@Resource注解实现自动注入(反射)默认根据属性字段名称查找对应的bean对象(即属性字段名与id相等) 如果属性字段名没有找到,则会通过类型(class类型)查找 属性可以提供set方法,也可以不提供set方法 注解可以声明在属性上,也可以声明在set方法上 注解可以设置name属性,name属性值必须与bean标签的id值保持一致;如果设置了name属性值则只会按照name属性值查找bean对象 当注入接口时,如果该接口只有一个实现,则正常注入;如果接口存在多个实现,则需要使用nam原创 2020-11-09 11:46:37 · 97 阅读 · 0 评论 -
java知识点相关
目录newInstance和new的区别dom4j+xpath解析xml文件spring开启自动扫描包,并设置扫描的范围newInstance和new的区别newInstance: 弱类型。低效率。只能调用无参构造。new: 强类型。相对高效。能调用任何public构造。dom4j+xpath解析xml文件//dom4j+xpath解析xml文件private void parseXml(String fileName) { // 得到解析器 Sa...原创 2020-11-06 17:26:38 · 122 阅读 · 0 评论 -
spring roo与springboot的区别
spring roo是创建spring工程的小工具,通过一些命令可以快捷的创建spring的项目,可以选择性的增加spring的大部分特性。无论你是一个新的Java开发人员或经验丰富的架构师,Spring Roo 都可以在短短几分钟内构建一个全面的工作应用。Roo 的任务是从根本上可持续地改善 Java 开发人员的生产效率,而无损工程完整性和灵活性。这一要求转换为构建于 Java 技术之上的一种工具,可持续地增加项目整个生命周期的生产效率,且不限定开发人员使用某一特定方法。Spring Roo 使用流行原创 2020-10-29 17:16:47 · 485 阅读 · 0 评论 -
详解IPFS技术架构与应用
IPFS是什么?星际文件系统(InterPlanetary File System)本质上是一种内容可寻址、版本化、点对点超媒体的分布式存储、传输协议,目标是补充乃至取代过去20年里使用的超文本媒体传输协议(HTTP),希望构建更快、更安全、更自由开放的互联网时代。Ipfs最核心的技术是p2p,原来是中心化的服务器在分发内容,现在我们想要下载某一个内容,可以直接建立一个连接,也可以跟其他人连接,迅雷也是这种模式,它是一个虚拟的p2p中心网络,这里不多细讲。为什么需要IPFS?1.HTTP转载 2020-10-21 09:49:30 · 1104 阅读 · 0 评论 -
java多线程相关总结
实现多线程的三种方法1.继承Thread类,重写run()方法优点:编写简单,如果需要访问当前线程,无需使用Thread.currentThread()方法,直接使用this,即可获得当前线程。缺点:因为该类已经继承了Thread类,所以不能在继承其他类;2.实现runnable接口,重写run()方法优点:线程只是实现了runnable接口,所以还可以继承其他类。在这种方式下多个线程可以共享同一个目标对象,所以非常适合多个线程共享同一份资源的情况;缺点:稍微有一点复杂,如果需要访问原创 2020-10-19 21:00:32 · 52 阅读 · 0 评论 -
hashMap底层实现和扩容问题详解
1.hashMap底层实现是一个哈希表,数组+链表+红黑树2.hashMap初始容量大小为16,扩容因子为0.75,扩容倍数为2;3.当hashMap中的元素个数超过数组大小(数组总大小length,不是数组中个数size)loadFactor扩容因子时,就会进行数组扩容,loadFactor的默认值是0.75,这是一个折中的取值,也就是说,默认情况下,数组的大小为16,那么当数组中元素个数超过16*0.75=12时(这个值就是代码中的临界值),就把数组的大小扩展为2*16=32,即扩大一倍,然后重原创 2020-10-19 16:44:29 · 642 阅读 · 0 评论 -
悲观锁和乐观锁详解
1.悲观锁该锁的核心思想是总是假设最坏的情况,即每次取数据时都认为其他线程会修改该数据,所以每次在拿数据的时候都会上锁,这样其他人想拿这个数据的时候就会阻塞直到它拿到了锁;传统的关系型数据库中就有很多用到了这种锁机制,例如:表锁,行锁,读锁,写锁等,都是在操作之前先上锁。下面大概介绍一下这四种锁的区别:1.表锁(表级锁):开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突的概率最高,并发度最低。2.行锁(行级锁):开销大,加锁慢;会出现死锁;锁定力度最小,发生锁冲突的概率最低,并发度最高。原创 2020-09-01 21:19:31 · 279 阅读 · 0 评论 -
浅谈Iterator与ListIterator的异同
浅谈Iterator与ListIterator的异同Iterator 可以对集合set和list进行遍历,有add和remove方法,没有set方法,也就是说不能对集合元素进行修改,单向遍历。 ListIterator 只能对集合list及其子类进行遍历,不能遍历set,有add和remove方法,有set方法,可以对元素进行修改,双向遍历。 如以下例子,分别使用两种方式进行遍历集合;import java.util.ArrayList;import ...原创 2020-07-16 19:57:06 · 130 阅读 · 0 评论 -
比较器Comparable和Comparator
java中的比较器大概分为内部比较器和外部比较器;下面是测试类;import java.util.ArrayList;import java.util.List;/* * 题一:调用Collections.sort()方法,通过定值排序比较两个Employee(先按年龄比,年龄相同按姓名比),使用Lambda作为参数传递 * 分析: * 1.定制排序:指自定义比较器|定制排序 * 自然排序:内部比较器|自然排序 * 2.先比较年龄,年龄相同才比较姓名 */p原创 2020-07-15 20:22:29 · 110 阅读 · 0 评论 -
java中日期格式化方法SimpleDateFormat的用法
常用的主要由两种用法:1.将date类型时间格式化为自定义的String类型;2.将时间字符串按一定格式转为date类型,此时需要注意时间字符串的格式需要跟你的模板日期格式一样,不然会报错;话不多说,上代码:import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class Test { public static void main(Str原创 2020-07-15 20:08:56 · 1997 阅读 · 0 评论 -
String和StringBuffer和StringBuilder之间的区别
String和StringBuffer和StringBuilder之间的区别String 不可变 ------------------- 效率低,执行速度慢,每一次对String的操作都会new一次对象开辟一块内存,所以很浪费空间。但是用起来方便,Java包中封装的方法多; 适用于少量字符串操作的时候 StringBuffer 可变 线程安全 效率比StringBuilder低一些但是高于String 适用于多线程并发的时候对字符串操作 Strin原创 2020-07-15 18:00:07 · 106 阅读 · 0 评论 -
java中的包装类
java中的包装类首先java中为什么会有包装类呢;1.首先java是一个面向对象的语言,除了基本数据类型其他的都是引用类型,在方法的参数上面大多数都是引用类型的参数,所以为了传参的方便,我们需要一个跟基本数据类型对应的引用类型,此时包装类就应运而生!2.在实际应用中,成员变量的默认值是有意义的有含义的,就需要包装类;如:用int定义一个性别,0表示女,1表示男;此时如果你在初始化的时候忘了给性别赋值,那么他的默认值就是0女了,这样就和我们正常赋值的数据混在一起了,不能区分,此时如果是用包装类I原创 2020-07-15 17:43:19 · 105 阅读 · 0 评论 -
java中try-catch-finally捕捉异常处理
使用throw和throws进行异常捕获抛出自定义异常类NumExceptio.javaclass NumException extends Exception{ public NumException(){ } public NumException(String string){ super(string); }}异常处理方式一:public class Test { public static void main(Stri原创 2020-07-15 15:46:22 · 428 阅读 · 0 评论 -
重写equals和toString方法
重写equals方法不重写equals方法就是调用Object的equals方法,比较的是当前对象的地址;如下例:public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public Person() {原创 2020-07-15 14:51:47 · 458 阅读 · 0 评论 -
java面向对象编程之part03
掌握多态的原理,发生多态的条件和多态使用场合java实现多态有三个前提条件:1.子类继承父类或是子类实现接口: 在多态中必须存在继承关系的子类或者实现了接口的子类;2.重写方法: 重写父类的方法,运行时多态会调用子类的重写方法;3.向上转型: 在多态中需要将子类的引用赋值给父类的类型,这样才能够根据引用的类型调用相对应子类的方法;掌握向下转型和向上转型,以及instanceof运算符的使用未完待续。。。。。。...原创 2020-07-03 21:00:01 · 229 阅读 · 0 评论 -
java面向对象编程之part02
理解封装的好处和javabean的规范首先我们必须明白一点,封装是Java语言的风格或者说是所有面向对象类语言的风格。如果没有这一特性,那么也就谈不上什么OOP了,所以我们平时在编写Java代码时,不管是否有意义或者显得有些多余,我们仍然要将其进行封装。封装的作用:1.提高代码的安全性。2.提高代码的可复用性。3.将代码模块化。封装时需要注意些什么呢?1.成员变量(属性)建议或者说是尽量使用private修饰;2.成员方法一般使用public修饰;3.通过使用getX原创 2020-07-03 20:19:47 · 158 阅读 · 0 评论 -
java面向对象编程之part01
面向过程和面向对象区别面向过程:当需要实现一个功能的时候,每一个步骤都需要我们去做,处理实现功能的每一个细节,强调实现功能的过程。面向对象:当需要实现一个功能的时候,我们不需要自己去做,可以找一个已经具有该功能的东西,来帮我解决问题,侧重于使用它。例如:洗衣服面向过程:拿一个盆 -> 把衣服扔进去 -> 倒水和洗衣液 -> 洗衣服 -> 用清水洗两遍 -> 拧干衣服 -> 晾起来面向对象:将衣服扔进洗衣机 -> 放水和洗衣液 -> 启动洗衣原创 2020-06-30 07:44:38 · 147 阅读 · 2 评论 -
java中方法重载的注意事项
java中方法重载的注意事项方法的重载:方法名相同,参数列表不同(个数,类型,顺序)参数个数不同,如method(int x)与method(int x,int y)不同 参数类型不同,如method(int x)与method(double x)不同 参数顺序不同,如method(int x,double y)与method(double x,int y)不同注:方法的重载与返回值类型无关...原创 2020-06-25 21:59:39 · 215 阅读 · 0 评论 -
java中有关数组打印的小知识
java中有关数组打印的小知识char类型的数组可以直接使用通过数组名打印String str = "a123";char[] aa = new char[str.length()];for (int i = 0; i < str.length(); i++) {aa[i] = str.charAt(i);}System.out.println(aa);整型,浮点型,布尔型的的数组不可以直接通过数组名打印整个数组的值int[] a = new int[10];...原创 2020-06-24 19:21:50 · 150 阅读 · 0 评论 -
Java中关于Arrays.sort()用法
Java中关于Arrays.sort()用法Arrays.sort():无返回值,静态方法,可用类名调用如下例子:随机生成一个数组,然后对这个数组进行排序Random random = new Random();int[] aa1 = new int[15];for (int i = 0; i < aa1.length; i++) {aa1[i] = random.nextInt(100);}System.out.println(Arrays.toString(aa1));Ar原创 2020-06-24 17:46:20 · 164 阅读 · 0 评论 -
java中关于数组拷贝的小知识
java中关于数组拷贝的小知识普通的赋值拷贝:一个数组变量拷贝给另一个数组变量。这时,两个变量将引用同一个数组,改变其中一个数组引用的数组值,那另外一个数组引用对应的数组值也会改变。如下:int[] a = new int[10];a = new int[]{1,2,3,4,5,6};int[] b = new int[a.length];b = a;b[0] = 100;System.out.println(Arrays.toString(a));//[100, 2, 3, 4, 5,原创 2020-06-24 17:42:37 · 133 阅读 · 0 评论 -
java中的+=运算符具有数据类型转换功能
java中的+=运算符具有数据类型转换功能当右边操作数的类型与左边的数据类型不一样的时候,会自动内部完成转换功能;public class Test{ public static void main(String[] args) { int x = 10; x += 3.5; System.out.println(x);//13 }}...原创 2020-06-21 15:02:46 · 279 阅读 · 0 评论 -
java中类型强制转换的一些小细节
java中类型强制转换的一些小细节强制类型转换通过截断小数部分将浮点值转换为整型。如果想对浮点数进行舍人运算,以便得到最接近的整数(在很多情况下,这种操作更有用),那就需要使用Math.round方法。当调用round的时候,仍然需要使用强制类型转换(int)。其原因是round方法返回的结果为long类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将long类型转换成int类型 Math.round() 将参数的值四舍五入到最接近的 long/int值(当参数是f...原创 2020-06-21 11:55:45 · 137 阅读 · 0 评论 -
java环境变量的配置
java环境变量的配置总共配置两个环境变量即可,如下JAVA_HOME=D:\jdk-14.0.1注:jdk的安装目录作为JAVA_HOME的值,目录最好不要有中文PATH=%JAVA_HOME%\bin原创 2020-06-17 14:55:18 · 102 阅读 · 0 评论 -
java中的%运算符
java中的%运算符当取余操作返回一个非零的结果时。它与左操作数具有相同的正负符号。原创 2020-06-16 19:42:20 · 1017 阅读 · 0 评论 -
java中字符串String与+的相关操作
java中字符串String与+的相关操作原创 2020-06-16 16:00:27 · 114 阅读 · 0 评论 -
java中的boolean与c/c++的一些区别
java中的boolean与c/c++的一些区别在c/c++中,非0就是true,0就是false; 而java中的boolean只有两种值,要么true,要么false; java中的int等类型不能自己主动转为boolean,想要转成boolean就可以用if语句;原创 2020-06-16 15:21:53 · 394 阅读 · 0 评论 -
JavaScript中的/与Java中的/的区别
JavaScript中的/与Java中的/的区别JavaScript中:var x=245;var y=x/10;//y=24.5//个人感觉原因应该是JavaScript是弱类型语言,所以相当于结果自动转为浮点类型了Java中:int x=245;int y=x/10;//y=24原创 2020-06-14 22:03:51 · 132 阅读 · 0 评论 -
&和&&的区别
& 不管前面表达式是否成立,后面表达式都执行。 && 具有短路功能,前面表达式不成立时,后面表达式就直接略过。原创 2020-06-13 20:06:54 · 140 阅读 · 0 评论