Java
文章平均质量分 73
Billy___
这个作者很懒,什么都没留下…
展开
-
new xxx()出来的对象无法调用类中@Autowired注入的Spring Bean 及 原理分析、解决方法
@Autowired注入Spring Bean,则当前类必须也是Spring Bean才能调用它,不能用new xxx()来获得对象,这种方式获得的对象无法调用@Autowired注入的Bean。原创 2021-06-13 00:49:52 · 3994 阅读 · 0 评论 -
Java 算法 刷题 常用API 代码
目录比较器StringStringBuilder数组排序集合框架CollectionListStackQueueDequePriorityQueueSetMap以下为Java常用API(带注释)比较器Comparator<Object> cmp = new Comparator<Object>() { @Override public int compare(Object o1, Obj原创 2021-03-08 21:17:10 · 1501 阅读 · 0 评论 -
Java——变量定义与赋值 使用连等号的解析 连等赋值问题
在变量定义的时候使用连等号是错误的,而在定义之后使用连等号是正确的。为什么会这样呢定义的时候使用如下的连等号,此时编译器默认此条语句定义了一个变量slow ,并将head地址赋值给res ,又将res赋值给fast ,最后将fast赋值给slow 。由于代码前面并没有定义fast ,res ,head ,故会报错。 ListNode slow = fast = res =head;定义了fast ,res ,head三个变量,下一步再进行赋值。...原创 2021-02-20 00:20:45 · 1453 阅读 · 1 评论 -
Java 八大基本数据类型的默认值 及其 相关初始化问题分析
八大基本数据类型的默认值boolean falsechar '/uoooo'(null)byte (byte)0short (short)0int 0long 0Lfloat 0.0fdouble 0.0d基本类型数组没有赋值也一样。基本数据类型默认值和初始化问题class TestClass { static double double1; double double2; double[] double4; public static.原创 2021-01-25 02:21:31 · 365 阅读 · 0 评论 -
Java 集合框架 详解
一、Java 集合框架概述集合框架是一个用来代表和操纵集合的统一架构(java集合框架位于java.util包中)。所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。 算法:是实现集合接口的对象里的.原创 2021-01-21 17:25:04 · 947 阅读 · 0 评论 -
在 某项目下 某个时间段内 查询某类型传感器下 各个传感器 所有原始数据的最大值最小值
在 某项目下 某个时间段内 查询某类型传感器下 各个传感器 所有原始数据的最大值最小值sensor表(传感器表)sensor_data表(传感器数据表)SELECT id, max( Vx ) AS maxVx, max( Vy ) AS maxVy, max( Vz ) AS maxVz, min( Vx ) AS minVx, min( Vy ) AS minVy, min( Vz ) AS minVz FROM pkg, sensor WHERE id .原创 2021-01-20 16:59:06 · 347 阅读 · 0 评论 -
统计某一字段下相同值的个数 及 统计A字段下不重复,B字段相同值的个数
目录SQL知识点实例说明(统计各个部门员工的个数)第一种情况,根据员工表查询员工个数(统计某一字段下相同值的个数)第二种情况,根据员工操作数据表查询员工个数(统计A字段下不重复,B字段相同值的个数)SQL知识点统计某一字段下相同值的个数 统计A字段下不重复,B字段相同值的个数实例说明(统计各个部门员工的个数)下面用具体的例子说明:员工表员工操作数据表第一种情况,根据员工表查询员工个数(统计某一字段下相同值的个数)根据下面 员工表 统计各个部..原创 2021-01-20 16:40:37 · 1062 阅读 · 0 评论 -
深入JVM字节码执行引擎
我们都知道,在当前的Java中(1.0)之后,编译器讲源代码转成字节码,那么字节码如何被执行的呢?这就涉及到了JVM的字节码执行引擎,执行引擎负责具体的代码调用及执行过程。就目前而言,所有的执行引擎的基本一致:输入:字节码文件 处理:字节码解析 输出:执行结果。物理机的执行引擎是由硬件实现的,和物理机的执行过程不同的是虚拟机的执行引擎由于自己实现的。运行时候的栈结构每一个线程都有一个栈,也就是前文中提到的虚拟机栈,栈中的基本元素我们称之为栈帧。栈帧是用于支持虚拟机进行方法调用和方法执行的数转载 2021-01-16 14:52:19 · 100 阅读 · 0 评论 -
JVM的类加载和字节码执行引擎
在上篇《JVM的Class文件结构》中,简单梳理了Class文件内容,然而这只是一个小小的开始。Class文件只是一个你所编写的程序信息的等价完备的存储,它是死的,若要让它活起来,就需要将Class文件加载到虚拟机中并运行。Class文件的类加载过程是怎样?进入到虚拟机中的Class文件信息又会以什么样的形式存储?虚拟机如何找到应该执行的方法?虚拟机如何执行Class文件中的字节码?这些都是需要思考的问题。一、类加载C/C++在编译时就需要进行连接工作,而在Java里,类型的加载、连接和初始化都转载 2021-01-16 14:48:09 · 141 阅读 · 0 评论 -
Java程序编译和运行的过程
Java整个编译以及运行的过程如下图,Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode) 2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言("semi-interpreted" language)。图1 java程序编译运行过程下面通过以下这个java程序,来说明java程序从编译到最后运行的整个流程。代码如下:...转载 2021-01-16 14:45:50 · 153 阅读 · 0 评论 -
字节码文件(Class文件)结构解读、理解与分析
字节码什么是字节码?字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。字节是电脑里的数据量单位。字节码文件展示魔数(4个字节 )每个Class文件的头4个字节被称为魔数(Magic Number) , 值为0xCAFEBABE(咖啡宝贝? ),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件。版本号(4个字节)紧接着魔数的4个字节存储的是Class文件的版本号: 第5和第6个字节是次版本号(Min原创 2021-01-16 14:23:58 · 7663 阅读 · 1 评论 -
集合迭代器遍历的 快速失败(fail-fast)与 安全失败(fail-safe)
目录一、快速失败(fail—fast)二、安全失败(fail—safe)三、实例说明题外话(关于牛客一道面试题)一、快速失败(fail—fast) 在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会...原创 2021-01-15 11:53:04 · 700 阅读 · 0 评论 -
Java负整数的左移、右移、无符号右移
Java负整数的左移、右移、无符号右移。正数的位移没有涉及到符号,而且正数的原码、反码、补码都是一样的,所以相对简单,但是对于负整数的位移,往往容易混淆。Java的<< >> >>> 都是针对补码来进行的,因为Java只存储补码。例如对整数-3进行<< >> >>>运算做说明。整数-3的二进制原码为 10000000 00000000 00000000 00000011反码为1111...转载 2021-01-04 22:47:39 · 222 阅读 · 0 评论 -
Java 泛型总结(三):通配符的使用
简介前两篇文章介绍了泛型的基本用法、类型擦除以及泛型数组。在泛型的使用中,还有个重要的东西叫通配符,本文介绍通配符的使用。这个系列的另外两篇文章:Java 泛型总结(一):基本用法与类型擦除 Java 泛型总结(二):泛型与数组数组的协变在了解通配符之前,先来了解一下数组。Java 中的数组是协变的,什么意思?看下面的例子:class Fruit {}class Apple extends Fruit {}class Jonathan extends Apple {}clas转载 2020-12-13 22:04:41 · 214 阅读 · 0 评论 -
JAVA 通过类属性名称(String)操作属性值
根据属性名获取属性值/** * 根据属性名获取属性值 * */ private Object getFieldValueByName(String fieldName, Object o) { try { String firstLetter = fieldName.substring(0, 1).toUpperCase(); String getter = "get" + firstLetter + fi原创 2020-12-12 16:25:35 · 3484 阅读 · 0 评论 -
Java中Comparable和Comparator接口区别 以及 Collections调用重写的compareTo方法 分析
ComparableComparable 简介Comparable 是排序接口。若一个类实现了Comparable接口,就意味着“该类支持排序”。 即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort)进行排序。此外,“实现Comparable接口的类的Comparable 定义Comparable 接口仅仅只包括.原创 2020-12-09 16:38:35 · 498 阅读 · 0 评论 -
重载和重写 以及 重载的方法不能根据返回类型进行区分
请说明重载(Overload)和重写(Override)的区别。方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载的方法能否根据返回类型进行区分?首先重载是Java多态的转载 2020-12-07 21:48:47 · 382 阅读 · 0 评论 -
面向对象的“六原则一法则“
单一职责原则- 单一职责原则:一个类只做它该做的事情。(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。另一个是模块化,好的自行车是组装车,从减震叉、刹车到变速器,所有的部件都是可以拆卸和重新组装的,好的乒乓球拍也不是成品拍,一定是底板和胶皮可以拆分和自行组装的,一个好的软件系统,它里面的每个功能模块也应该是.原创 2020-12-07 16:18:51 · 98 阅读 · 0 评论 -
HashMap 哈希表 原理
HashMap具体的存取过程HashMap原理深入理解https://blog.csdn.net/visant/article/details/80045154哈希表的存储过程(存取原理)https://www.cnblogs.com/z-b-q/p/11641991.html 哈希表的存储过程(存取原理):每存入一个新的元素都要走以下五步 (1)调用对象的hashCode()方法,获得要存储元素的哈希值。(为什么是对象的HashCode()方法??不...原创 2020-12-06 20:48:36 · 159 阅读 · 0 评论 -
JVM 运行时数据区域
程序计数器程序计数器(Program Counter Register) 是一块较小的(各线程私有的)内存空间, 它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令, 它是程序控制流的指示器, 分支、 循环、 跳转、 异常处理、 线程恢复等基础功能都需要依赖这个计数器来完成。每条线程都需要有一个独立的程序计数器, 各条线程之间计数器互不影响, 独立存储, 我们称这类内存区域为“线程私有”的内存。Java虚...原创 2020-12-04 21:39:17 · 91 阅读 · 0 评论 -
探究 Serializable接口和serialversionUID 意义及用途
问题描述我们在实体类中实现了Serializable这个接口,那么这个接口到底有什么用?另外还定义了个serialVersionUID变量,这个变量又有什么作用呢?什么是Serializable接口一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才能被序列化。什么是序列化?序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象.原创 2020-12-04 16:39:18 · 770 阅读 · 0 评论 -
Mybatis的resultMap中各个标签解释
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dao.IRoleDao"> <!--定义role表的ResultMap...原创 2020-11-23 21:43:34 · 1614 阅读 · 0 评论 -
Java设计模式——代理模式
UML类图UML—— Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果UML本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图:使用UML来建模,常用的工具有 Rational rose,也可以使用一些插件来建模,如 AmaterasUMLEclipse安装Amatera原创 2020-10-09 10:37:08 · 276 阅读 · 0 评论 -
Mybatis学习:一、mybatis入门
一、mybatis入门1、什么是框架?它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题。使用框架的好处:框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。2、三层架构表现层:是用于展示数据的业务层:是处理业务需求持久层:是和数据库交互的3、持久层技术解决方案JDBC技术:Connection PreparedStatement ResultSetSpring的JdbcTemplate:Spring中对jdbc的简单封装原创 2020-10-11 10:27:33 · 884 阅读 · 0 评论