![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 65
bboy枫亭
技术栈:
Java、Python、Scala、Shell
大数据开发
Linux
展开
-
JAVA的向上转型和向下转型
转自:https://www.cnblogs.com/lifexy/p/10812841.html父子对象之间的转换分为了向上转型和向下转型,它们区别如下:向上转型 : 通过子类对象(小范围)实例化父类对象(大范围),这种属于自动转换向下转型 : 通过父类对象(大范围)实例化子类对象(小范围),这种属于强制转换向上转型示例代码1:class A { public void print() { System.out.println("A:pri转载 2021-01-26 09:39:18 · 155 阅读 · 0 评论 -
Java中的<< 和 >> 和 >>> 详细分析
<<表示左移移,不分正负数,低位补0;注:以下数据类型默认为byte-8位左移时不管正负,低位补0正数:r = 20 << 220的二进制补码:0001 0100向左移动两位后:0101 0000结果:r = 80负数:r = -20 << 2-20 的二进制原码 :1001 0100-20 的二进制反码 :1110 1011-20 的二进制补码 :1110 1100左移两位后的补码:1011 0000反码:1010 1111原码:1101转载 2020-12-21 17:00:50 · 191 阅读 · 0 评论 -
Java中的原码,补码,反码
原码原码比较好理解,也就是该数字不进行其他操作时数字最原始的二进制表示,在Java中我们有熟悉的byte,short,int,long的整数型基本数据类型以及float,double的浮点型基本数据类型。在Java中,对于整数而言,其原码格式为最高位为符号位,该位上1表示负数而0表示正数,剩余位数为该数字的二进制表示。在这里我们简单用int型的整数5及-5看下例子:5的原码:00000000 00000000 00000000 00000101-5的原码:10000000 00000000 0000转载 2020-12-05 16:37:20 · 184 阅读 · 0 评论 -
Java中transient关键字的作用
首先介绍一下序列化Serializable通常一个类实现序列化方式是实现序列化接口: class XXX implements Serializable序列化的作用:把数据长久的保存在磁盘中,磁盘和内存是不同的,内存一般在程序运行时占用,数据保存周期短,随程序结束而结束,磁盘可以长久保存数据transient关键字的作用,在已实现序列化的类中,有的变量不需要保存在磁盘中,就要transient关键字修饰,如银行卡密码等,就这个作用------在已序列化的类中使变量不序列化...转载 2020-10-22 10:28:26 · 231 阅读 · 0 评论 -
SpringBoot项目部署详细步骤(jar包+war包+Tomcat下部署多个war包)
文章目录1. 打成 jar 包2. 打成 war 包2.1 入口类继承SpringBootServletInitializer重写configure方法2.2 配置pom.xml文件2.3 IDEA生成war包2.4 部署环境配置tomcat运行项目2.5 配置Tomcat开机自启动(非必须,根据自己情况)3. Tomcat同时部署多个war包4. 警告 [main] org.apache.catalina.webresources.Cache.getResource 无法将位于[/WEB-INF/clas原创 2020-10-06 14:55:50 · 1222 阅读 · 0 评论 -
JVM类加载器详解
1. 类加载全过程为什么研究类加载全过程?– 有助于了解JVM运行过程– 更深入了解java动态性,(解热部署、动态加载),提高程序的灵活性。类加载机制– JVM把class文件加载到内存,并对数据进行校验、解析和初始化,最终形成JVM可以直接使用的Java类型的过程。·1.1 加载• 将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口。 这个过程需要类加载器参与原创 2020-10-02 18:13:50 · 311 阅读 · 0 评论 -
使用Java脚本引擎执行javascript代码示例
JAVA脚本引擎是从JDK6.0之后添加的新功能。• 脚本引擎介绍:– 使得 Java 应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在 Java 平台上调用各种脚本语言的目的。– Java 脚本 API 是连通 Java 平台和脚本语言的桥梁。– 可以把一些复杂异变的业务逻辑交给脚本语言处理,这又大大提高了开发效率。• 获得脚本引擎对象//获得脚本引擎对象ScriptEngineManager sem = new ScriptEngineManager();ScriptEn原创 2020-09-28 17:12:25 · 556 阅读 · 1 评论 -
Java 字节码操作示例
Java 动态性的两种常见实现方式(1)字节码操作(2)反射运行时操作字节码可以让我们实现如下功能:(1)动态生成新的类(2)动态改变某个类的结构(添加/删除/修改 新的属性/方法)优势(1)比反射开销小,性能高(2)Javassist 性能高于反射,低于ASM常见的字节码操作类库BCELByte Code Engineering Library(BCEL),这是 Apache Software Foundation 的 Jakarta 项目的一部分。BECL 是 Ja..原创 2020-09-28 09:17:06 · 250 阅读 · 0 评论 -
Java反射_笔记分享
Java的动态性反射机制• 动态编译• 动态执行javascript代码• 动态字节码操作动态语言动态语言– 程序运行时,可以改变程序结构或变量类型。典型的语言:• Python、ruby、javascript等。• 如下javascript代码:• C, C++, JAVA不是动态语言,JAVA可以称之为“准动态语言”。但是JAVA有一定的动态性,我们可以利用反射机制、字节码操作获得类似动态语言的特性。• JAVA的动态性让编程的时候更加灵活反射机制– 反射机制指的是可以于运行原创 2020-09-25 08:28:10 · 151 阅读 · 0 评论 -
Java注解详细总结
1. 概述Annotation是从JDK5.0开始引入的新技术。1.1 Annotation的作用:– 不是程序本身,可以对程序作出解释。(这一点,跟注释没什么区别)– 可以被其他程序(比如:编译器等)读取。(注解信息处理流程,是注解和注释的重大区别如果没有注解信息处理流程,则注解毫无意义)1.2 Annotation的格式:– 注解是以“@注释名”在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(value=“unchecked”)。1.3 Annotat原创 2020-09-24 10:08:16 · 196 阅读 · 0 评论 -
输入两棵二叉树A,B,判断B是不是A的子结构。
@TOC1. 题目概述题目抽象:给2棵树A,树B,判断B是否是A的子结构。子结构定义:树A和树B的根结点相等,并且树A的左子树和树B的左子树相等,树A的右子树和树B的右子树相等2. 解题思路若树 BB 是树 AA 的子结构,则子结构的根节点可能为树 AA 的任意一个节点。因此,判断树 BB 是否是树 AA 的子结构,需完成以下两步工作:先序遍历树 AA 中的每个节点 n_AnA ;(对应函数 isSubStructure(A, B))判断树 AA 中 以 n_AnA 为根节点的转载 2020-09-04 09:46:21 · 1022 阅读 · 0 评论 -
用两个栈实现队列详解(附Java、Python源码)——《剑指Offer》
文章目录1. 题目描述2. 分析3. 代码实现3.1 Java实现3.2 Python实现1. 题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。2. 分析队列是:“先进先出”栈是:“先进后出”如何用两个站实现队列,看下图两个栈:in和out图解:push 操作就直接往in中 push, pop 操作需要分类一下:如果out栈为空,那么需要将in栈中的数据转移到out栈中,然后在对out栈进行 pop,如果out栈不为空,直接 pop 就可以了。3原创 2020-08-20 21:55:25 · 196 阅读 · 0 评论 -
剑指Offer第4题详解(附Java、Python源码)
1. 题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2. 分析(1)根据前序序列第一个结点确定根结点(2)根据根结点在中序序列中的位置分割出左右两个子序列(3)对左子树和右子树分别递归使用同样的方法继续分解示例前序序列{1,2,4,7,3,5,6,8} = pre中序序列{4,7,2,1,5,3,原创 2020-08-20 18:04:19 · 206 阅读 · 0 评论 -
剑指Offer第3题详解(附Java、Python源码)
题目描述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。1. Java实现1.1 使用add方法首位插入/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* }* }**/import java.util.ArrayList;原创 2020-08-19 11:41:27 · 213 阅读 · 0 评论 -
剑指Offer第2题详解(附Python、Java代码实现)
这个题较为简单1. Python实现1.1 使用replace直接实现def replaceSpace(s): # return s.replace(" ","%20",s.count(" ")) return s.replace(' ','%20')1.2 正则表达式实现import redef replaceSpace(self, s): return re.sub(r' ', '%20', s)2. Java实现2.1 使用自带方法直接实现public clas原创 2020-08-18 09:57:17 · 140 阅读 · 0 评论 -
剑指Offer第1题详解(附Java、Python实现代码)
《剑指Offer》第 1 题详解题目:“在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。”文章目录1. Python 实现1.1 暴力实现1.2 二分查找(与一维的二分查找有区别)1.2.1 初始值在右上角1.2.2 初始值在右下角2. Java 二分实现2.1 初始值在右上角2.2 初始值在左下角1. Python 实现1.1 暴力实现直接遍历一遍数组,原创 2020-08-17 14:12:06 · 253 阅读 · 0 评论 -
什么是OOM,为什么会OOM及一些解决方法
1. 什么是OOM?OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError。看下关于的官方说明: Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. 意思就是说,转载 2020-08-10 17:26:14 · 11901 阅读 · 0 评论 -
Java的访问控制符详解(结合代码演示)
概述Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节是需要暴露的。Java中四种“访问控制符”说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。修饰符同类同包子类所有类private*default**protected***public****下面归纳一下Java用于控制可见性的4个访问修饰符:同包同类中,可以自由访问protected成员1.private 表示私有,只原创 2020-08-04 08:14:41 · 502 阅读 · 0 评论 -
什么是JVM?什么是JRE?什么是JDK?三者的区别和联系?
什么是JVM、JRE、JDK?区别?Java Virtual MachineJVM :JVM 是 Java Virtual Machine(Java虚拟机)的缩写,它是整个 java 实现跨平台的最核心的部分,所有的 java 程序会首先被编译为 .class 的类文件,这种类文件可以在虚拟机上执行,也就是说 class 并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。JVM 是 Java 平台的基础,和实际的机器一样,它也有自己的指令集,并且原创 2020-08-03 22:56:42 · 824 阅读 · 0 评论 -
Java的三大版本含义及区别
标准版(JavaSE)、企业版(JavaEE)、微缩版(JavaME)Standard Editor(标准版)J2SE 包含构成 Java 语言核心的类,定位在个人计算机上的应用。这个版本是Java平台的核心,它提供了非常丰富的API来开发一般个人计算机上的应用程序,包括用户界面接口AWT及Swing,网络功能与国际化、图像处理能力以及输入输出支持等。在上世纪90年代末互联网上大放异彩的Applet也属于这个版本。Applet后来为Flash取代,Flash即将被HTML5取代。比如:数据库连接、原创 2020-08-03 22:38:18 · 2337 阅读 · 0 评论 -
Java的System.exit()详解
说到 java.lang.System.exit() 这个方法,咱们先看下 JDK8 的 API 中怎么说为方便大家分析,我给粘下来public static void exit(int status)Terminates the currently running Java Virtual Machine. The argument serves as a status code; by convention, a nonzero status code indicates abnormal te原创 2020-08-02 19:22:24 · 5903 阅读 · 0 评论 -
Tomcat9安装配置、服务配置开机自启动以及启动窗口的中文乱码问题解决
在安装配置 Tomcat9 之前,要先配好 jdk 。没有配 jdk 的朋友可以看这篇:https://blog.csdn.net/weixin_44285445/article/details/107725271下载Tomcat9进入官网:http://tomcat.apache.org/,找到Download,点击Tomcat9根据自己操作系统进行选择,我这里是Windows64位下载完成后解压缩apache-tomcat-9.0.37-windows-x64.zip到自己指定的目录下。原创 2020-08-01 10:17:55 · 1166 阅读 · 0 评论 -
jdk8安装及环境变量配置
目录1. 下载和安装jdk82. 环境变量配置3. 验证是否安装成功1. 下载和安装jdk8下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html根据自己操作系统情况进行选择,我这里是 Windows64位下载完成后点击jdk-8u261-windows-x64.exe这个文件,选择好安装路径,一路下一步即可完成安装2. 环境变量配置右键点击【我的电脑】或者文件资源管理器的【此电脑】,点击属原创 2020-08-01 08:37:38 · 1319 阅读 · 0 评论 -
Java的内部类详解(结合代码全面分析)
分分钟搞清楚Java内部类概述分类非静态内部类内部类中访问成员变量内部类的访问静态内部类匿名内部类局部内部类概述 内部类是一种特殊的类,指的是定义在一个类的内部的类。实际开发中,为了方便的使用外部类的相关属性和方法,这时候我们通常会定义一个内部类。 一般情况下,我们把类定义成独立的单元,有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses)。 内部类可以使用 public、private、default、protected 以及 static 修饰。而外部顶级类原创 2020-07-30 16:25:30 · 376 阅读 · 0 评论 -
Java的this、static关键字详解
文章目录this对象创建过程this的本质this的常见用法this的简单使用this() 调用重载构造方法static概述静态初始化块this对象创建过程构造方法是创建 Java 对象的重要途径,通过 new 关键字调用构造器时,构造器也确实返回该类的对象,但这个对象并不是完全由构造器负责创建。创建一个对象分为如下四个步骤:1.分配对象空间,并将对象成员变量初始化为0或空;2.执行属性值的显式初始化;3.执行构造方法;4.返回对象的地址给相关的变量。this的本质this 的本质就是“创原创 2020-07-29 15:34:59 · 1933 阅读 · 0 评论 -
Java的包机制以及import、static import的用法详解(看这篇就够了)
三分钟搞明白Java的包机制以及import、static import的用法概述packageimportstatic import概述包机制是 Java 中管理类的重要手段。包对于类,相当于文件夹对于文件的作用。包的主要作用开发中会遇到大量同名的类,通过包可以很容易解决类重名的问题,也可以实现对类的有效管理。把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。包限定了访问权限,拥有包访问权限的类才能访问某个包中的类。如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类原创 2020-07-29 08:31:40 · 979 阅读 · 0 评论 -
Java的Object类详解(入门必备)
Java的Object类详解基本特性java.lang.Object的常用类toString() 方法== 和 equals 方法super() 关键字继承树追溯为什么要专门研究一下Object类,因为我们日常定义的类都是Object类的子类,也都具备Object类的所有特性。因此,我们非常有必要掌握Object类的用法。基本特性Object 类是所有 Java 类的根基类,也就意味着所有的 Java 对象都拥有Object 类的属性和方法。java.lang.Object的常用类下面是在日常开发原创 2020-07-28 22:58:28 · 1738 阅读 · 0 评论 -
Gof23设计模式趣味详解(三分钟上手系列)
三分钟上手系列之 Gof23 设计模式概述设计模式分类根据目的根据作用范围功能简介六大原则23种设计模式详解概述在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。四位作者合原创 2020-07-24 16:04:35 · 1006 阅读 · 3 评论