自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

转载 常量池、字符串常量池与运行时常量池区分

常量池每个class一份,存在于字节码文件中。常量池中有字面量(数量值、字符串值)和符号引用(类符号引用、字段符号引用、方法符号引用),虚拟机指令根据这张常量表找到要执行的类名、方法名、参数类型、字面量等类型运行时常量池每个class一份,存在于方法区中(元空间)。当类加载到内存中后,jvm就会将class常量池中的内容存放到运行时常量池中,经过解析(resolve)之后,也就是把符号引用替换为直接引用,解析的过程会去查询全局字符串池,也就是下面的StringTable,以保证运行时常量池所引用的字符

2021-07-23 23:18:12 405 1

原创 关于类与对象的创建,以及静态属性与实例属性的赋值

文章目录1.类创建的整体流程1.1类加载1.2链接1.2.1验证1.2.2准备1.2.3解析1.3类的初始化1.4静态属性的赋值总结2.对象创建的整体流程2.1类的加载、链接、初始化2.2开辟内存空间2.2.1指针碰撞2.2.2空闲列表2.2.3并发问题2.3赋默认值2.4设置对象头2.5初始化2.6实例属性的赋值总结1.类创建的整体流程1.1类加载所谓加载,就是将 Java 类的字节码文件加载到机器内存中,并在内存中构建出 Java 类的原型——类模板对象。所谓类模板对象,其实就是Java 类在

2021-07-23 23:10:37 671 1

原创 java快排详解

思路个人觉得快排是冒泡的进阶版,都是利用了交换的思想快排的一般步骤:1、设置中轴数,可以是最左边的数,可以是中间索引的数,可以是随机索引的数(防止出现极端数组造成时间复杂度太高)2、中轴左边的值小于中轴数,中轴右边的值大于中轴数3、调用递归,中轴左半边按照1、2步递归,中轴右半边按照1、2步递归程序程序一:中轴数为数组最左边的数(单指针) public int[] MySort (int[] arr) { // write code here

2021-07-17 10:16:20 696

原创 ArrayList详解

文章目录数据结构线程安全问题继承关系构造方法动态扩容机制数据结构ArrayList的底层数据结构就是一个数组,数组元素的类型为Object类型,对ArrayList的所有操作底层都是基于数组的。线程安全问题线程不安全,只能用在单线程环境。解决:第一,使用synchronized关键字;第二,可以用Collections类中的静态方法synchronizedList()对ArrayList进行调用即可继承关系实现了Serializable接口,因此它支持序列化,能够通过序列化传输;实现了Ran

2021-07-06 19:48:08 198

原创 HashMap详解

文章目录简介构造函数数据结构工作原理PUT 方法hashCode方法扩容机制JDK1.8对hashMap的优化HashMap和HashTable 的异同优化 HashMap线程安全问题有序的Map简介HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。

2021-07-05 17:11:58 227

原创 zookeeper伪集群搭建myid file is missing问题

环境搭建之路永远那么坎坷…今天在windows搭建zookeeper伪集群,步骤如下:1、复制三份zookeeper安装好的服务器文件,目录名称分别为zookeeper-1、zookeeper-2、zookeeper-32、将conf里的zoo_sample.cfg复制一份命名为zoo.cfg,修改三个服务服务器对应配置文件:3、在上一步 dataDir 指定的目录下,创建 myid 文件,然后在该文件添加上一步server 配置的对应 id 数字(只能有数字,不能有别的字符):4、到这里

2021-07-02 15:53:49 680 2

原创 使用IDEA MAVEN配置运行dubbo---provider

今天使用idea配置dubbo,在测试provider时,出现了错误:dubbo java.io.FileNotFoundException: class path resource [provider.xml] cannot be opened because it does not exist查询了论坛,发现了原因在于Maven项目编译后classes文件中没有.xml,生成的target/classes 文件是输出目录的主体,项目实际使用的配置文件就在里面。对比两幅图发现确实没有provid

2021-06-22 11:21:56 599

原创 记录一次令人崩溃的的zookeeper搭建过程

今天开始学习dubbo,需要搭建zookeeper环境作为注册中心,本来以为跟着视频配很容易的,没想到调了一整天,最后调试成功的原因也让人哭笑不得…首先配置流程1、下载zookeeper网址 https://archive.apache.org/dist/zookeeper/zookeeper-3.4.13/2、解压zookeeper解压运行zkServer.cmd ,初次运行会报错,没有zoo.cfg配置文件3、修改zoo.cfg配置文件将conf下的zoo_sample.cfg复制一份改名

2021-06-16 19:27:51 148 3

原创 java.lang.ClassNotFoundException

问题出现:在框架搭建过程中,导入了依赖,编写了业务代码与配置文件,但在运行时出现了java.lang.ClassNotFoundException错误。解决方法:需要在项目结构中将jar包导入打开项目结构,左侧选择“Artifacts”,选中项目,在右侧的“web-inf”文件夹下新建一个lib文件夹,选中lib文件夹点击“+”,“Library files”,选中所有jar包然后就会运行啦!!!...

2021-06-10 10:27:56 262

原创 ssm整合——数据库连接ClassNotFoundException问题

今天跟着狂神搭建ssm框架,导入依赖后,在测试数据库连接出现了错误。狂神用的测试连接方法是idea右侧的“database”,点击“+”,选择data source为mysql,输入用户和密码后测试数据库能否连接。但是我点击“test connection”后,出现了 java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver…错误。在查询一系列博客后,发现是数据库和驱动版本不匹配造成的。按照以上图片的版本对照修改自己的版本号:还有最

2021-06-08 16:45:43 316

原创 匿名内部类

匿名内部类的创建格式为: new 父类构造器(参数列表)|实现接口(){//匿名内部类的类体实现}使用匿名内部类时,必须继承一个类或实现一个接口匿名内部类由于没有名字,因此不能定义构造函数匿名内部类中不能含有静态成员变量和静态方法...

2021-05-31 21:01:52 49

原创 继承、构造函数与synchronized

1、JAVA语法规定构造方法不能被synchronized关键词修饰,而且构造方法每次都是构造出新的对象,不存在多个线程同时读写同一对象中的属性的问题,所以不需要同步 。2、子类的同名方法可以覆盖父类的对应方法,只不过synchronized修饰符不会被继承,也就是说子类覆盖后对应方法就不同步了,但是可以调用的。这个时候调用父类的对应方法还是可以同步的...

2021-05-29 22:26:51 512

原创 抽象类与接口一些易错点

1、接口中方法的默认修饰符时public abstract,抽象方法没有方法体;JDK8中,接口中的方法可以被default和static修饰,但是被修饰的方法必须有方法体。2、abstract 类中最好不要有private的成员,不代表必须没有。3、关于抽象类JDK 1.8以前,抽象类的方法默认访问权限为protectedJDK 1.8时,抽象类的方法默认访问权限变为default关于接口JDK 1.8以前,接口中的方法必须是public的JDK 1.8时,接口中的方法可以是public的

2021-05-28 21:56:34 191

原创 构造函数与对象创建

构造函数完成对象的初始化1、子类构造函数第一行是默认super()调用父类无参构造函数。2、当程序执行到new操作符时, 首先去看new操作符后面的类型,因为知道了类型,才能知道要分配多大的内存空间。3、分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化。其他方法完成初始化调用Java.io.ObjectInputStream的readObject()方法和调用对象的clone()方法中,对象的初始化并不是通过构造函数完成的,而是读取别的内存区域中的对象的各个域来完成。.

2021-05-26 21:21:10 78

原创 泛型之间的包含关系

1、只看尖括号里边的:如果尖括号里的是一个类,那么尖括号里的就是一个点,比List,List如果尖括号里面带有问号,那么代表一个范围,<? extends A> 代表小于等于A的范围,<? super A>代表大于等于A的范围,<?>代表全部范围2、尖括号里的所有点之间互相赋值都是错,除非是俩相同的点3、尖括号小范围赋值给大范围,对,大范围赋值给小范围,错。如果某点包含在某个范围里,那么可以赋值,否则,不能赋值4、List<?>和List 是相等的,.

2021-05-25 21:36:08 99

原创 关于程序编译

java编译成的是字节码,在运行时被各系统的jvm翻译成本系统可以识别的机器码,这就是java一次编程多平台应用的跨平台性java源文件生成的是class文件,与系统无关java编译出来的目标文件,不能运行在任意jvm上...

2021-05-24 22:04:36 44

原创 关键字修饰的易错点

1、abstract只能修饰类和方法,不能修饰字段2、构造方法可以用private,protected,default,private3、public:同类、同包、子类、不同包protected:同类、同包、子类default:同类、同包private:同类

2021-05-21 21:56:36 78

原创 暑期实习面经---中行研发中心西安

面试前进入等候区,会核对资料并没收手机面试分为三部分:自我介绍+材料理解+自由提问自我介绍为一分钟,超时就会被打断材料问题为两分钟,我读到的材料是说出无人网点缺点,如何改进(当时脑子一片空白,说的也磕磕巴巴的,太紧张了根本想不到有啥缺点…)自由提问大概问了这些问题:为什么去西安?性格?优缺点?团队中担任什么作用?当你(负责人)的思路和组员思路不一致怎么办?比赛中用的什么软件?比赛题目是什么?项目用的什么软件?七八月份有没有时间?面试完之后大概1-2天会有体检通知,不过好巧不巧出现了新冠确诊患者,正

2021-05-20 22:18:43 929

原创 字符串的拼接

String test="javaandpython";String strl="java";String str2="and";String str3="python";System.out.println(test=="java"+"and"+"python"):System.out.println(test ==strl + str2 + str3);结果对于上面这段代码,结果是true false原理这是因为字符串字面量拼接操作是在Java编译器编译期间就执行了,也就是说编译器编

2021-05-20 22:10:35 102

原创 五种单例模式简介

1.饿汉式(线程安全,调用效率高,但是不能延时加载);2.懒汉式(线程安全,调用效率不高,但是能延时加载);3.Double CheckLock实现单例:DCL也就是双重锁判断机制(由于JVM底层模型原因,偶尔会出问题,不建议使用);4.静态内部类实现模式(线程安全,调用效率高,可以延时加载);5.枚举类(线程安全,调用效率高,不能延时加载,可以天然的防止反射和反序列化调用)...

2021-05-10 21:22:00 66

转载 节点流与处理流

按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。**节点流:**可以从或向一个特定的地方(节点)读写数据。如FileReader.**处理流:**是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。JAVA常用的节点流:文 件 FileInputStream FileOutputStrean FileReader FileWr

2021-05-07 22:28:23 59

原创 IDEA的导入Seckill项目后,启动出现404的解决办法

这个介绍的很有条理,虽然说我这么配置了还是报错吧…https://blog.csdn.net/qq_44038822/article/details/108918238?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_utm_term-0&spm=1001.2101.3001.4242

2021-05-07 15:36:28 62

原创 编码问题

char foo='中’这里的’中‘应该是不管用什么编码方式存储,赋值给char变量后都会先转换成对应的unicode的序号\u4e2d,之后再用UTF-16BE来作为\u4e2d这个字符编码的存储方案。因此,只要是utf-16be能表示的unicode编码都是可以成功的,与java文件本身的字符编码无关系。比如,’中‘在gbk中的编码是d6d0,那当赋值给char类型时,java知道这是gbk字符集下表示的’中‘,那就能通过对比gbk和unicode,找到d6d0对应的是\u4e2d.同理,utf-8

2021-05-05 21:40:07 50

原创 windows10+anaconda创建与切换python虚拟环境

python虚拟环境创建使用 conda create -n your_env_name python=X.X(2.7、3.6等)命令创建python版本为X.X、名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。python虚拟环境切换激活环境:activate your_env_name(虚拟环境名称)退出环境:exit()切换环境:conda info --envs列出所有虚拟环境activate your_e

2021-05-04 19:15:20 420

原创 暑期实习面经---邮储研发中心西安

形式多对二远程面试多个面试官,两个应聘者,轮流回答问题问题没有问什么具体的技术问题,这个应该是看不同的面试官吧,我同学被问的就都是技术性问题提问我的问题主要围绕项目问的,主要有这些:项目交付时提交了什么材料做ppt的经验(因为简历里提了要向老师和客户汇报)能实习几个月几月份能开始实习以后想做哪个方向做项目用到过哪些工具用过python哪些包注意面试之前会告诉你,你是在哪个时间段面试但是这个时间不准确,所以最好提前进入大厅看看你前边还有几组,推断自己的面试时间我的面试时间就提前

2021-05-04 17:51:32 1329 3

原创 运行时异常与非运行时异常

Java的异常分为两种,一种是运行时异常(RuntimeException),一种是非运行异常也叫检查式异常(CheckedException)。运行时异常运行时异常不需要程序员去处理,当异常出现时,JVM会帮助处理。常见的运行时异常有:ClassCastException(类转换异常)ClassNotFoundExceptionIndexOutOfBoundsException(数组越界异常)NullPointerException(空指针异常)ArrayStoreException(数组存

2021-04-24 21:54:25 278

原创 try catch finally与return

结论一:finally块前有return,会先执行return语句,并保存下来,再执行finally块,最后return(return的值会暂存在栈里面,等待finally执行后再返回)。结论二:如果finally块中有return语句的话,它将覆盖掉函数中其他return语句。finally块前有return、finally块中也有return,先执行前面的return,保存下来,再执行finally的return,覆盖之前的结果,并返回。...

2021-04-14 22:00:07 67

原创 正则表达式

正则表达式的规则 任意一个字符表示匹配任意对应的字符,如a匹配a,7匹配7,-匹配-。 []代表匹配中括号中其中任一个字符,如[abc]匹配a或b或c。 在中括号里面和外面代表含义不同,如在外时,就匹配-,如果在中括号内[a-b]表示匹配26个小写字母 中的任一个;[a-zA-Z]匹配大小写共52个字母中任一个;[0-9]匹配十个数字中任一个。 在中括号里面和外面含义不同,如在外时,就表示开头,如7[0-9]表示匹配开头是7的,且第二位是任一数字的字符串;如果在中括号里面,表示除了

2021-04-06 08:46:56 95

原创 一些jvm命令

 jps:查看本机java进程信息。 jstack:打印线程的栈信息,制作线程dump文件。 jmap:打印内存映射,制作堆dump文件 jstat:性能监控工具 jhat:内存分析工具 jconsole:简易的可视化控制台 jvisualvm:功能强大的控制台...

2021-04-02 08:39:38 39

原创 hashCode()方法和equals()方法

hashCode()方法和equals()方法的作用其实是一样的,在Java里都是用来对比两个对象是否相等一致。重写的equals()里一般比较全面,但效率比较低,而hashCode()并不是完全可靠,有时候不同的对象他们生成的hashcode也会一样(生成hash值得公式可能存在的问题),但效率比较高可以得出:equals()相等的两个对象他们的hashCode()肯定相等,也就是用equals()对比是绝对可靠的。hashCode()相等的两个对象他们的equal()不一定相等,也就是hashC

2021-04-01 08:45:55 51

原创 HashMap、HashTable与TreeMap键值对的问题

HashMap基于哈希表实现Map接口的类,并允许null的值和null键。HashTable不允许null的值和null键。TreeMap通过红黑树实现Map接口的类,key不可以为null,会报NullPointerException异常,value可以为null。

2021-03-31 08:48:57 83

原创 多态中的方法调用

java多态有两种情况:重载和覆写**在覆写中,**运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;**在重载中,**运用的是静态多分派,即根据静态类型确定对象,因此不是根据new的类型确定调用的方法...

2021-03-26 08:47:57 134

原创 局部变量

1、被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量2、在方法中定义的局部变量在该方法被执行时创建:错误不是局部变量在该方法被执行/调用时创建,而是应该为在该变量被声明并赋值时创建,可以理解为“当代码执行到该变量被赋值的代码时才被创建”...

2021-03-25 15:03:22 585

原创 基本数据类型间相互转换

float f = 45.0;错误,小数如果不加 f 后缀,默认是double类型。double转成float向下转换,意味着精度丢失,所以要进行强制类型转换。char s = ‘\u0639’;正确,是使用unicode表示的字符。d:Object o = ‘f’;正确,‘f’ 字符会自动装箱成包装类,可以向上转型成ObjectDouble d = 100;错误,整数默认是int类型,int类型不能转型为Double,最多通过自动装箱变为Integer但是Integer与Double没有继承

2021-03-25 08:50:51 364

原创 与线程有关的方法

sleep()方法:在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。sleep()使当前线程进入阻塞状态,在指定时间内不会执行。wait()方法:在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标志”,从而使别的线程有机会抢占该锁。当前线程必须拥有当前对象锁。如果当前线程不是此锁的拥有者,会抛出IllegalMonitorStateException异常。notify()方法:唤醒当前对象锁的等待线程使用noti

2021-03-24 08:56:40 73

原创 抛InterruptedException的代表方法

抛InterruptedException的代表方法java.lang.Object 类的 wait 方法java.lang.Thread 类的 sleep 方法java.lang.Thread 类的 join 方法

2021-03-23 08:54:44 75

原创 i++与++i

结果:numcount=0分析:count = count++ 原理是 temp = count; count = count+1 ; count = temp就是先把局部变量表中count的值0放入操作数栈中,然后直接对局部变量表中的count加1,然后再把操作数栈中的0出栈赋值给局部变量表中的count,最终局部变量表中的count值仍为0**若是改为count=++count;(先自加,再返回自加后的值),结果就是5050101=510050了**...

2021-03-22 08:48:47 58

原创 JAVA初始化过程加载顺序

JAVA初始化过程加载顺序初始化过程:初始化父类中的静态成员变量和静态代码块 ;初始化子类中的静态成员变量和静态代码块 ;初始化父类的普通成员变量和代码块,再执行父类的构造方法**(如果父类构造方法中调用了在子类中重写的方法,实际执行子类重写后的方法);**初始化子类的普通成员变量和代码块,再执行子类的构造方法补充:静态块:用static申明,JVM加载类时执行,仅执行一次构造块:类中直接用{}定义,每一次创建对象时执行执行顺序优先级:静态块>main()>构造块>构造方

2021-03-21 10:46:56 80

原创 数据类型转换

float f = 45.0错误,小数如果不加 f 后缀,默认是double类型。double转成float向下转换,意味着精度丢失,所以要进行强制类型转换。char s = ‘\u0639’正确,是使用unicode表示的字符。Object o = ‘f’正确,‘f’ 字符会自动装箱成包装类,可以向上转型成ObjectDouble d = 100错误,整数默认是int类型,int类型不能转型为Double,最多通过自动装箱变为Integer但是Integer与Double没有继承关系,也没法

2021-03-20 18:57:08 178

原创 基本类型与包装类

基本类型与包装类的比较基本型和基本型封装型进行“==”运算符的比较基本型封装型将会自动拆箱变为基本型后再进行比较,封装类与封装类进行不会自动拆箱,碰到运算符才会自动拆箱。int a = 220;Integer b = 220;System.out.println(ab);//true两个Integer类型进行“==”比较如果其值在-128至127,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关,-128~127保存在常量池,超过此范围就要new对象

2021-03-20 16:09:18 40

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除