JAVA语言
小济公
本人目前在读研究生,在做一些项目开发,在这里做一下自己学习过程中的笔记
展开
-
蚂蚁金服面试分享
第一面10.4(电话面试)1.自我介绍2.项目情况:1> 选择最为熟悉的一到两个项目说明,提及该项目中的难点问题,以及如何针对该项目的开展2> 为什么做这个项目(避免被动安排这个话题)3> 解释项目中遇到的难点是如何攻克,最难的点是什么。3.基础模块考察(面试官问)1> 模块化的好处2> http协议3> HashMap和ConcurrentHashMap的区别,以及两者的优缺点4> 数据库(事物,加锁,ORM)5> JVM原理6>原创 2020-10-25 22:33:40 · 206 阅读 · 0 评论 -
剑指offor刷题---java版
面试题03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3class Solution { public int findRepeatNumber(int[] nums) { /**方法一 暴力双循环 for (in原创 2020-06-21 21:47:11 · 532 阅读 · 0 评论 -
二叉树的遍历
二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)二叉树是一种非常重要的数据结构,非常多其他数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们寻常所说的层次遍历。由于树的定义本身就是递归定义,因此採用递归的方法去实现树的三种遍历不仅easy理解并且代码非常简洁,而对于广度遍历来说,须要其他数据结构的支撑。比方堆了。所以。对于一段代码来说,可读性有时候要比代码本身的效率要重要的多。四种基本的遍历思想为:前序遍历:根原创 2020-06-14 22:07:08 · 109 阅读 · 0 评论 -
JVM---垃圾回收的优点和原理。并考虑 2 种回收机制?
Java 语言中一个显著的特点就是引入了垃圾回收机制,使 C++ 程序员最头疼的内存管理的问题迎刃而解, 它使得 Java 程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java 中的对象不再有“作用域”的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收, 程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。原创 2020-06-10 22:58:18 · 155 阅读 · 0 评论 -
JVM---如何判断一个对象是否存活?(或者 GC 对象的判定方法)?
判断一个对象是否存活有两种方法:1. 引用计数法所谓引用计数法就是给每一个对象设置一个引用计数器, 每当有一个地方引用这个对象时,就将计数器加一,引用失效时,计数器就减一。当一个对象的引用计数器为零时,说明此对象没有被引用,也就是“死对象”,将会被垃圾回收. 引用计数法有一个缺陷就是无法解决循环引用问题, 也就是说当对象 A 引用对象 B,对象 B 又引用者对象 A,那么此时 A、B 对象的引用计数器都不为零,也就造成无法完成垃圾回收,所以主流的虚拟机都没有采用这种算法。2. 可达性算法(引用链法原创 2020-06-10 22:53:00 · 585 阅读 · 0 评论 -
jvm --- GC 是什么? 为什么要有 GC?
GC 是垃圾收集的意思(GabageCollection),内存处理是编程人员容易出现问题的地方, 忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃, Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java 语言没有提供释放已分配内存的显示操作方法。 GC机制在 Java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在 JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时原创 2020-06-10 22:38:29 · 476 阅读 · 0 评论 -
JVM--Java 内存分配?
• 寄存器:我们无法控制。• 静态域:static 定义的静态成员。• 常量池:编译时被确定并保存在 .class 文件中的(final)常量值和一些文本修饰的符号引用(类和接口的全限定名,字段的名称和描述符,方法和名称和描述符)。• 非 RAM 存储:硬盘等永久存储空间。• 堆内存:new 创建的对象和数组,由 Java 虚拟机自动垃圾回收器管理,存取速度慢。• 栈内存:基本类型的变量和对象的引用变量(堆内存空间的访问地址),速度快,可以共享,但是大小与生存期必须确定,缺乏灵活性。1. Jav原创 2020-06-10 22:30:40 · 87 阅读 · 0 评论 -
jvm--描述一下 JVM 加载 Class 文件的原理机制?
Java 语言是一种具有动态性的解释型语言,类(Class)只有被加载到 JVM 后才能运行。当运行指定程序时,JVM 会将编译生成的 .class 文件按照需求和一定的规则加载到内存中,并组织成为一个完整的 Java 应用程序。这个加载过程是由类加载器完成,具体来说,就是由 ClassLoader 和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中。 类的加载方式分为隐式加载和显示加载。 隐式加载指的是程序在使用 new 等方式创建对象时, 会隐式地调用类的加载器把对应的类加载原创 2020-06-10 22:21:45 · 175 阅读 · 0 评论 -
Jvm ---类加载过程?
Java 类加载需要经历一下 7 个过程:加载–>验证–>准备–>解析–>初始化–>使用—>卸载1、加载加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:• 通过一个类的全限定名获取该类的二进制流。• 将该二进制流中的静态存储结构转化为方法区运行时数据结构。• 在内存中生成该类的 Class 对象, 作为该类的数据访问入口。2、验证验证的目的是为了确保 Class 文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验证:• 文件格式验原创 2020-06-10 22:07:48 · 130 阅读 · 0 评论 -
数据结构与算法学习---数据结构篇(图b)(默然回首,夯实基础)
一、有向图在实际生活中,很多应用相关的图都是有方向性的,最直观的就是网络,可以从A页面通过链接跳转到B页面,那么a和b连接的方向是a->b,但不能说是b->a,此时我们就需要使用有向图来解决这一类问题,它和我们之前学习的无向图,最大的区别就在于连接是具有方向的,在代码的处理上也会有很大的不同。1.1 有向图的定义及相关术语定义:有向图是一副具有方向性的图,是由一组顶点和一组有方向的边组成的,每条方向的边都连着一对有序的顶点。出度:由某个顶点指出的边的个数称为该顶点的出度。入度:原创 2020-05-27 13:18:03 · 648 阅读 · 0 评论 -
数据结构与算法学习---数据结构篇(图a)(默然回首,夯实基础)
一、图的入门1.1 图的实际应用:现实生活中,有许多应用场景会包含很多点以及点点之间的连接,而这些应用场景我们都可以用即将要学习的图这种数据结构去解决地图:我们生活中经常使用的地图,基本上是由城市以及连接城市的道路组成,如果我们把城市看做是一个一个的点,把道路看做是一条一条的连接,那么地图就是我们将要学习的图这种数据结构;电路图下面是一个我们生活中经常见到的集成电路板,它其实就是由一个一个触点组成,并把触点与触点之间通过线进行连接,这也是我们即将要学习的图这种数据结构的应用场景1.2 图的原创 2020-05-26 23:08:33 · 466 阅读 · 0 评论 -
数据结构与算法学习---数据结构篇(堆)(默然回首,夯实基础)
一、堆1.1 堆的定义堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二叉树的数组对象。堆的特性:1.它是完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。2.它通常用数组来实现。具体方法就是将二叉树的结点按照层级顺序放入数组中,根结点在位置1,它的子结点在位置2和3,而子结点的子结点则分别在位置4,5,6和7,以此类推。如果一个结点的位置为k,则它的父结点的位置为[k/2],而它的两个子结点的位置原创 2020-05-26 15:47:41 · 199 阅读 · 0 评论 -
数据结构与算法学习---数据结构篇(树a)(默然回首,夯实基础)
一、二叉树入门之前我们实现的符号表中,不难看出,符号表的增删查操作,随着元素个数N的增多,其耗时也是线性增多的,时间复杂度都是O(n),为了提高运算效率,接下来我们学习树这种数据结构。1.1树的基本定义树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家谱、单位的组织架构、等等。树是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。树具有以下特点:1.每个结点有原创 2020-05-26 12:09:17 · 340 阅读 · 0 评论 -
数据结构与算法学习---数据结构篇(符号表)(默然回首,夯实基础)
一、符号表符号表最主要的目的就是将一个键和一个值联系起来,符号表能够将存储的数据元素是一个键和一个值共同组成的键值对数据,我们可以根据键来查找对应的值。符号表中,键具有唯一性。符号表在实际生活中的使用场景是非常广泛的,见下表:1.1 符号表API设计结点类:符号表:**1.2 符号表实现**//符号表public class SymbolTable<Key,Value> { //记录首结点 private Node head; //记录符号表原创 2020-05-25 22:20:21 · 254 阅读 · 0 评论 -
数据结构与算法学习---数据结构篇(线性表)(默然回首,夯实基础)
昨晚看了某B站主播的讲解,原来数据结构与算法才是校招面试的重点;在目前比较迷茫的准备中,也算是一盏明灯告诉我以后的这段时间该怎么准备了;接下来就是,重点复习一下数据结构与算法的基础知识,做一下leetcode上的题,希望在找工作之前能做完一半的题吧。原创 2020-05-25 22:01:53 · 333 阅读 · 0 评论 -
java多线程---(面试的多线程就靠它了)
1、多线程有什么用?1)发挥多核CPU 的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也都是双核的,4 核、8 核甚至 16 核的也都不少见,如果是单线程的程序,那么在双核 CPU 上就浪费了 50%, 在 4 核 CPU 上就浪费了 75%。单核 CPU 上所谓的"多线程"那是假的多线程,同一时间处理器只会处理一段逻辑,只不过线程之间切换得比较快,看着像多个线程"同时"运行罢了。多核 CPU 上的多线程才是真正的多线程,它能让你的多段逻辑同时工作,多线程,可以真正发挥出多核CPU原创 2020-05-19 21:19:33 · 318 阅读 · 0 评论 -
Java面试题宝典
Java基础部分&与&&区别?&和&&都是逻辑运算符,都是判断两边同时真则为真,否则为假;但是&&当第一个条件不成之后,后面的条件都不执行了,而&则还是继续执行,直到整个条件语句执行完为止。使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容 还是可以改变的。**静态变量和实例变量的区别?在语法定义上的区别:静态原创 2020-05-18 22:44:15 · 4449 阅读 · 0 评论 -
JAVA算法---(蓦然回首,夯实基础)
1. 二分查找又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。 public static int biSearch(int []array,int a){ int lo=0; int hi=array.length-1; int mid;原创 2020-05-09 21:42:54 · 150 阅读 · 0 评论 -
数据库---(蓦然回首,夯实基础)
1. 存储引擎1.1. 概念数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Archive, 5. Federated 。1.2. InnoDB (B+树 )InnoDB 底层存储结构为B+树,原创 2020-05-09 19:47:31 · 167 阅读 · 0 评论 -
JAVA基础--- 复制(蓦然回首,夯实基础)
将一个对象的引用复制给另外一个对象,一共有三种方式。第一种方式是直接赋值,第二种方式是浅拷贝,第三种是深拷贝。所以大家知道了哈,这三种概念实际上都是为了拷贝对象。1. 直接赋值复制直接赋值。在 Java 中,A a1 = a2,我们需要理解的是这实际上复制的是引用,也就是说 a1 和 a2 指向的是同一个对象。因此,当 a1 变化的时候,a2 里面的成员变量也会跟着变化。2. 浅复制(复制引用但不复制引用的对象)创建一个新对象,然后将当前对象的非静态字段复制到该新对象,如果字段是值类型的,那么对该字原创 2020-05-09 16:36:13 · 100 阅读 · 0 评论 -
JAVA基础--- 序列化(蓦然回首,夯实基础)
保存( 持久化) 对象 及其状态到内存或者磁盘Java 平台允许我们在内存中创建可复用的 Java 对象,但一般情况下,只有当 JVM 处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM 的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java 对象序列化就能够帮助我们实现该功能。序列化对象以字节数组保持- 静态成员不保存使用 Java 对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节原创 2020-05-09 16:28:09 · 127 阅读 · 0 评论 -
JAVA基础--- 泛型(蓦然回首,夯实基础)
泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,我们就可以使用 Java 泛型。1. 泛型方法 ( )你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。// 泛型方法 printArray publ原创 2020-05-09 16:22:05 · 94 阅读 · 0 评论 -
JAVA基础---内部类(蓦然回首,夯实基础)
Java 类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类。根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种。1. 静态内部类定义在类内部的静态类,就是静态内部类。public class Out { private static int a; private int b; public static class Inner { public void print() {原创 2020-05-09 16:09:31 · 110 阅读 · 0 评论 -
JAVA基础---注解(蓦然回首,夯实基础)
1. 概念Annotation(注解)是 Java 提供的一种对元程序中元素关联信息和元数据(metadata)的途径和方法。Annatation(注解)是一个接口,程序可以通过反射来获取指定程序中元素的 Annotation对象,然后通过该 Annotation 对象来获取注解中的元数据信息。2. 4 种标准 元注解元注解的作用是负责注解其他注解。 Java5.0 定义了 4 个标准的 meta-annotation 类型,它们被用来提供对其它 annotation 类型作说明。@Target原创 2020-05-09 14:37:13 · 132 阅读 · 0 评论 -
JAVA基础---反射(蓦然回首,夯实基础)
1. 动态语言动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的 JavaScript 就是动态语言,除此之外 Ruby,Python 等也属于动态语言,而 C、C++则不属于动态语言。从反射角度说 JAVA 属于半动态语言。2. 反射机制概念 (运行状态中知道类所有的属性和方法)在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态原创 2020-05-09 14:08:27 · 113 阅读 · 0 评论 -
JAVA基础---JAVA 异常分类及处理(蓦然回首,夯实基础)
1. 概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。2. 异常分类Throwable 是 Java 语言中所有错误或异常的超类。下一层分为 Error 和 ExceptionErrorError 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果出现了这样的错误,原创 2020-05-09 13:30:18 · 111 阅读 · 0 评论 -
My SpringMVC学习之路---02
1、高级参数绑定a) 数组类型的参数绑定b) List类型的绑定2、@RequestMapping注解的使用3、Controller方法返回值4、Springmvc中异常处理5、图片上传处理6、Json数据交互7、Springmvc实现RESTful8、拦截器1、高级参数绑定1.1 复制工程粘贴并修改工程名为web2,如下图:工程右键点击,如下图:修改工程名,如下...原创 2020-04-27 16:50:13 · 146 阅读 · 0 评论 -
My SpringMVC学习之路---01
1.SpringMVC是什么?Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出来,如下图:2…Springmvc处理流程如下图所示:3. 入门程序需求:使用浏览器显示商品列表3.1 创建一个web工程springMVC是表现层框架,需要搭建web工程开发。如下图创建动态web工程:输入工程...原创 2020-04-27 11:35:59 · 193 阅读 · 0 评论 -
my spring 学习之路 ---01
1、什么是spring?Spring:SE/EE开发的一站式框架。 一站式框架:有EE开发的每一层解决方案。 WEB层 :SpringMVC Service层 :Spring的Bean管理,Spring声明式事务 DAO层 :Spring的Jdbc模板,Spring的ORM模块2、为什么学习Spring?3、Spring的入门(IOC)3.1 什么是IOC? IO...原创 2020-04-25 21:08:05 · 692 阅读 · 0 评论 -
maven学习之路---入门
1. 什么是maven?它是一个软件开发的管理工具,主要管理的工作是:依赖管理,项目构建2. 使用maven的好处?能够集中管理jar包提供一键构建3. maven的安装及配置配置环境变量:MAVEN_HOME,PATH路径配置本地仓库配置:Settings.xml文件中d:/repository</…>运行:mvn -v4. 常用的maven命令compile...原创 2020-04-24 22:20:40 · 267 阅读 · 0 评论 -
my Hibernate学习之路
1 Hibernate的框架的概述1.1 什么是框架框架:指的是软件的半成品,已经完成了部分功能。1.2 EE的三层架构1.3 什么是Hibernate1.3.1 什么是ORMORM:Object Relational Mapping(对象关系映射)。指的是将一个Java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表。1.3.2 为什么要学习H...原创 2020-04-18 23:12:04 · 166 阅读 · 0 评论 -
Listener&Filter
#Listener & Filter##Listener监听器能做什么事?监听某一个事件的发生。 状态的改变。监听器的内部机制其实就是接口回调.####接口回调需求:A在执行循环,当循环到5的时候, 通知B。事先先把一个对象传递给 A , 当A 执行到5的时候,通过这个对象,来调用B中的方法。 但是注意,不是直接传递B的实例,而是传递一个...原创 2020-04-07 22:06:10 · 97 阅读 · 0 评论 -
Ajax&Jquery
#Ajax & Jquery##Ajax是什么?“Asynchronous Javascript And XML”(异步JavaScript和XML),并不是新的技术,只是把原有的技术,整合到一起而已。 1.使用CSS和XHTML来表示。 2. 使用DOM模型来交互和动态显示。 3.使用XMLHttpRequest来和服务器进行异步通信。 ...原创 2020-04-07 21:59:36 · 119 阅读 · 0 评论 -
事务&数据库连接池&DBUtiles
#事务&数据库连接池&DBUtils##事务Transaction 其实指的一组操作,里面包含许多个单一的逻辑。只要有一个逻辑没有执行成功,那么都算失败。 所有的数据都回归到最初的状态(回滚)为什么要有事务?为了确保逻辑的成功。 例子: 银行的转账。###使用命令行方式演示事务。开启事务start transaction;提交或者回滚事务co...原创 2020-04-07 21:58:24 · 116 阅读 · 0 评论 -
Cookie&Session
##中文文件下载针对浏览器类型,对文件名字做编码处理 Firefox (Base64) , IE、Chrome … 使用的是URLEncoder /* * 如果文件的名字带有中文,那么需要对这个文件名进行编码处理 * 如果是IE ,或者 Chrome (谷歌浏览器) ,使用URLEncoding 编码 * 如果是Firefox , 使用Base64编码 */ //获取来...原创 2020-04-07 21:53:43 · 75 阅读 · 0 评论 -
Request&Response
##HttpServletRequest 和 HttpServletResponse###Servlet配置方式全路径匹配以 / 开始 /a /aa/bblocalhost:8080/项目名称/aa/bb路径匹配 , 前半段匹配以 / 开始 , 但是以 * 结束 /a/* /*其实是一个通配符,匹配任意文字localhost:...原创 2020-04-07 21:48:25 · 68 阅读 · 0 评论 -
JSP & EL & JSTL
#JSP & EL & JSTL#jspJava Server Page什么是jsp从用户角度看待 ,就是是一个网页 , 从程序员角度看待 , 其实是一个java类, 它继承了servlet,所以可以直接说jsp 就是一个Servlet.为什么会有jsp?html 多数情况下用来显示静态内容 , 一成不变的。 但是有时候我们需要在网页上显示一些动态数据...原创 2020-03-26 08:57:44 · 82 阅读 · 0 评论 -
JQuery&BootStrap
使用JQuery发送请求局部刷新页面使用BootStrap制作一个响应式的页面使用BootStrap制作网站的首页教学目标掌握什么是响应式及响应式的原理掌握BootStrap的栅格系统了解BootStrap的其他组件及JS控件上次课内容:什么JQ : write less do more 写更少的代码,做更多的事情 javascript函数库基本选择器: ID选择器: #I...原创 2020-03-18 22:07:22 · 376 阅读 · 0 评论 -
mysql学习之路---01
数据库的创建 : create database 数据库的名 character set 字符集 collate 校对规则 数据库的删除: drop database 数据库名 修改: alter database 数据库 character set 字符集(utf8) 查询: show databases; show create database 数据库的名字...原创 2020-03-18 21:13:05 · 164 阅读 · 0 评论 -
JDBC
##JDBCJAVA Database Connectivity java 数据库连接为什么会出现JDBCSUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。###使用JDBC的基本步骤注册驱动Dr...原创 2020-03-18 20:26:11 · 78 阅读 · 0 评论