自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 笔试算法题中常用API

笔试算法题中常用API1、基本数据类型byteshortintlongfloatdoublecharbooleanByteShortIntegerLongFloatDoubleCharacterBoolean2、Mapimpot javva.util.HashMap//创建集合对象Map<Integer,String>() map=new HashMap<Integer,String>();//添加元素map.put(

2020-08-26 13:31:11 486

原创 常见设计模式实现、详解及在Spring中的应用

Spring中涉及到的设计模式详解一、单例模式1、介绍要点:某个类只能有一个实例;它必须自行创建这个实例;它必须自行向整个系统提供这个实例。实现:单例模式的类只提供私有的构造函数(这样就不会被继承);类定义中含有一个该类的静态私有对象;该类提供了一个静态的公有的函数用于创建或获取它本身的静态私有对象。使用单例模式的好处:对于频繁使用的对象,可以省略创建对象所花费的时间,这对于那些重量级对象而言,是非常可观的一笔系统开销;由于 new 操作的次数减少,因而对系统内存的使用频

2020-08-25 16:20:58 464

原创 Java异常类详解(异常、错误)

Java异常类详解(异常、错误)Throwable在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。Throwable 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。一、Error(错误)表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机

2020-08-16 21:25:33 607

原创 hashcode()和equals()方法详解

hashcode()和equals()方法详解1、何为hashcode()hash是一个函数,就是通过一种算法来得到一个hash值。通过hash算法得到的hash值就存放在这张hash表中,也就是说hash表示所有的hash值组成的。hashcode通俗地讲就是在hash表中对应的位置。每个对象都有hashcode,对象的hashcode是怎么来的呢?首先一个对象肯定有物理地址,独享的物理地址跟这个hashcode地址不一样,hashcode代表对象的地址说的是对象在hash表中的位置,物理地址说的对

2020-08-16 16:56:32 386

原创 MySQL学习|视图、变量、存储过程、流程控制结构

MySQL学习其他一、视图含义:虚拟表,和普通表一样使用mysql5.1版本出现的新特性,是通过表动态生成的数据比如:舞蹈班和普通班级(即视图和普通表)的对比:只有领导来检查时,才会有舞蹈班,进行表演,平时他们都在普通班学习。创建语法的关键字是否实际占用物理空间使用视图create view只是保存了sql逻辑增删改查,只是一般不能增删改表create table保存了数据增删改查#案例:查询姓张的学生名和专业名SELECT stuname,maj

2020-08-15 20:14:35 309

原创 MySQL学习|TCL事务

MySQL学习TCL事务Transaction Control Language 事务控制语言1、事务:一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。案例:转账张三丰 1000郭襄 1000update 表 set 张三丰的余额=500 where name=‘张三丰’意外update 表 set 郭襄的余额=1500 where name=‘郭襄’2、事务的特性:ACID事务的ACID(acid)属性原子性(Atomicity)原子性是指事

2020-08-15 16:11:38 110

原创 MySQL学习笔记|DDL

MySQL学习笔记|DDL数据定义语言库和表的管理一、库的管理创建、修改、删除二、表的管理创建、修改、删除创建: create修改: alter删除: drop一、库的管理#1、库的创建/*语法:create database [if not exists]库名;*/#案例:创建库BooksCREATE DATABASE IF NOT EXISTS books ;#2、库的修改RENAME DATABASE books TO 新库名;#更改库的字符集AL

2020-08-14 23:48:20 117

原创 MySQL学习笔记|DML

MySQL学习笔记|DML数据操作语言:插入:insert修改:update删除:delete一、插入语句1、方式一:经典的插入#方式一:经典的插入/*语法:insert into 表名(列名,...) values(值1,...);*/SELECT * FROM beauty;#1.插入的值的类型要与列的类型一致或兼容INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)VALUES(13,'唐艺昕

2020-08-14 23:37:31 217

原创 MySQL学习笔记|DQL

一、基础查询1、基本语法:select 查询列表 from 表名;类似于:System.out.println(打印东西);特点:1、查询列表可以是:表中的字段、常量值、表达式、函数2、查询的结果是一个虚拟的表格USE myemployees;#1.查询表中的单个字段SELECT last_name FROM employees;#2.查询表中的多个字段SELECT last_name,salary,email FROM employees;#3.查询表中的所有字段#方

2020-08-14 22:53:08 279

原创 ==、equals和new、直接赋值

==、equals和new、直接赋值我们通过如下实例来说明,先看一个简单的代码: public class Practice1 { public static void main(String[] args) { String str1=new String("hello"); String str2=new String("hello"); String str3="hello"; String str4="hello"; //结果为true System.out

2020-08-14 12:15:24 355

原创 Java数据类型转换

数据类型转换(1)数据类型Java的数据类型分为两大类:基本数据类型和引用数据类型基本数据类型:包括 整数、浮点数、字符、布尔。Java中的四类八种基本数据类型第一类:整数类型 byte short int long第二类:浮点型 float double第三类:逻辑型 boolean(它只有两个值可取true false)第四类:字符型 char 引用数据类型:包括 类、数组、接口。引用数据类型:包括 类、数组、接口。(2)自动转换将取值范围小的类型自动提升为取值范围大的

2020-08-14 12:05:38 93

原创 LeetCode刷题|数据结构归类|队列各算法题合辑(持续补充)

1、#232、用栈实现队列1、题目难度:简单使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 fa

2020-08-07 08:51:03 391

原创 LeetCode刷题|数据结构归类|栈各算法题合辑(持续补充)

1、#1047删除字符串中所有相邻重复项(1)、题目难度:简单给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项

2020-08-04 20:21:46 319

原创 #991双倍或递减得到某数的最小操作数

#991双倍或递减得到某数的最小操作数一、题目难度:中等在显示着数字的坏计算器上,我们可以执行以下两种操作:双倍(Double):将显示屏上的数字乘 2;递减(Decrement):将显示屏上的数字减 1 。最初,计算器显示数字 X。返回显示数字 Y 所需的最小操作数。示例 1:输入:X = 2, Y = 3输出:2解释:先进行双倍运算,然后再进行递减运算 {2 -> 4 -> 3}.示例 2:输入:X = 5, Y = 8输出:2解释:先递减,再双倍 {5 -&g

2020-08-04 16:18:54 305

原创 #1518空瓶换酒问题

一、题目难度:简单小区便利店正在促销,用 numExchange 个空酒瓶可以兑换一瓶新酒。你购入了 numBottles 瓶酒。如果喝掉了酒瓶中的酒,那么酒瓶就会变成空的。请你计算 最多 能喝到多少瓶酒。示例 1:输入:numBottles = 9, numExchange = 3输出:13解释:你可以用 3 个空酒瓶兑换 1 瓶酒。所以最多能喝到 9 + 3 + 1 = 13 瓶酒。示例 2:输入:numBottles = 15, numExchange = 4输出:19解

2020-08-04 14:33:48 224

原创 new String、声明String、String变量常量相加的区别详解

new String、声明String、String变量常量相加的区别详解1、new String和声明String区别和实现过程1)String str1 = "abcd"的实现过程:首先栈区创建str引用,然后在String池(独立于栈和堆而存在,存储不可变量)中寻找其指向的内容为"abcd"的对象,如果String池中没有,则创建一个,然后str指向String池中的对象,如果有,则直接将str1指向"abcd";如果后来又定义了字符串变量 str2 = “abcd”,则直接将str2引用指向S

2020-08-04 10:25:29 763

原创 最全Java各修饰符详解(接口、类、方法、变量)

一、总述类、方法、成员变量和局部变量的可用修饰符修饰符类成员访求构造方法成员变量局部变量abstract(抽象的)√√---static (静态的)-√-√-public(公共的)√√√√-protected(受保护的)√√√-private(私有的)-√√√-synchronized(同步的)-√---native(本地的)-√---transient(暂时的)

2020-08-03 17:08:39 5903 1

原创 try、catch、finally、return执行顺序超详解析(针对面试题)

try、catch、finally、return执行顺序超详解析(针对面试题)有关try、catch、finally和return执行顺序的题目在面试题中可谓是频频出现。总结一下此类问题几种情况。写在前面不管try中是否出现异常,finally块中的代码都会执行;当try和catch中有return时,finally依然会执行;finally是在return语句执行之后,返回之前执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍

2020-07-30 12:13:45 8209 2

原创 SSM学习1|整合SSM框架

SSM1目录结构:pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs

2020-07-24 08:40:03 188

原创 LeetCode刷题|数据结构归类|数组各算法题合辑(持续补充)

1、大小为 K 且平均值大于等于阈值的子数组数目1、题目难度:中等给你一个整数数组 arr 和两个整数 k 和 threshold 。请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。示例 1:输入:arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4输出:3解释:子数组 [2,5,5],[5,5,5] 和 [5,5,8] 的平均值分别为 4,5 和 6 。其他长度为 3 的子数组的平均值都小于 4 (threshold 的值)。

2020-07-19 15:14:08 223

原创 LeetCode刷题|算法归类|贪心算法介绍及各算法题合辑(持续补充)

贪心算法一、介绍贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法贪婪算法所得到的结果不一定是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果二、案例假设存在如下表的需要付费的广播台,以及广播台信号可以覆盖的地区。 如何选择最少的广播台,让所有的地区都可以接收到信号思路分析:如何找出覆盖所有地区的广播台的集合呢,使用穷举法实现,列出每个可能的广播台的集合,这被称为

2020-07-19 15:12:41 213

原创 LeetCode刷题|算法归类|回溯算法介绍及各算法题合辑(持续补充)

一、算法介绍回溯算法就是把问题的解空间转化为图或树的结构表示,然后使用深度优先搜索策略进行遍历,遍历的过程中记录和寻找所有可行解或者最优解。基本思想类同于:图的深度优先搜索和二叉树的后序遍历详细的描述则为:回溯法按深度优先策略搜索问题的解空间树。首先从根节点出发搜索解空间树,当算法搜索至解空间树的某一节点时,先利用剪枝函数判断该节点是否可行(即能得到问题的解)。如果不可行,则跳过对该节点为根的子树的搜索,逐层向其祖先节点回溯;否则,进入该子树,继续按深度优先策略搜索。回溯法的基本行为是搜索,搜索过

2020-07-19 15:10:08 179

原创 LeetCode刷题|算法归类|滑动窗口介绍及各算法题合辑(持续补充)

一、算法介绍滑动窗口算法可以用以解决数组/字符串的子元素问题,它可以将嵌套的循环问题,转换为单循环问题,降低时间复杂度。二、LeetCode题1、#1343大小为 K 且平均值大于等于阈值的子数组数目1、题目难度:中等给你一个整数数组 arr 和两个整数 k 和 threshold 。请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。示例 1:输入:arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4输出:3解释:子数组 [2

2020-07-19 15:09:13 210

原创 LeetCode刷题|算法归类|动态规划介绍及算法题合辑(持续补充)

一、算法介绍1、介绍动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是,适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。 ( 即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解 )动态规划可以通过填表的方式来逐步推进,得到最优解.2、适用

2020-07-19 15:07:57 176

原创 #1343大小为k且平均值大于等于阈值的子数组数目

一、题目难度:中等给你一个整数数组 arr 和两个整数 k 和 threshold 。请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。示例 1:输入:arr = [2,2,2,2,5,5,5,8], k = 3, threshold = 4输出:3解释:子数组 [2,5,5],[5,5,5] 和 [5,5,8] 的平均值分别为 4,5 和 6 。其他长度为 3 的子数组的平均值都小于 4 (threshold 的值)。示例 2:输入:arr = [1,1,1,1,1

2020-07-19 14:30:50 177

原创 #1144递减元素使数组呈锯齿状

一、题目难度:中等给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的值减少 1。如果符合下列情况之一,则数组 A 就是 锯齿数组:每个偶数索引对应的元素都大于相邻的元素,即 A[0] > A[1] < A[2] > A[3] < A[4] > …或者,每个奇数索引对应的元素都大于相邻的元素,即 A[0] < A[1] > A[2] < A[3] > A[4] < …返回将数组 nums 转换为锯齿数组所需的最小操作

2020-07-19 14:30:18 116

原创 尚硅谷JVM从入门到精通宋红康版|第十七章、垃圾回收器

垃圾回收器GC分类与性能指标垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。Java不同版本新特性语法层面:Lambda表达式、switch、自动拆箱装箱、enumAPI层面:Stream API、新的日期时间、Optional、String、集合框架底层优化:JVM优化、GC的变化、元空间、静态域、字符串常量池位置变化

2020-07-14 14:08:57 947 3

原创 尚硅谷JVM从入门到精通宋红康版|第十六章、垃圾回收相关概念

垃圾回收相关概念System.gc()的理解在默认情况下,通过system.gc()者Runtime.getRuntime().gc() 的调用,会显式触发FullGC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。然而system.gc() )调用附带一个免责声明,无法保证对垃圾收集器的调用。(不能确保立即生效)JVM实现者可以通过system.gc() 调用来决定JVM的GC行为。而一般情况下,垃圾回收应该是自动进行的,无须手动触发,否则就太过于麻烦了。在一些特殊情况下,如我们正在

2020-07-14 13:41:52 676

原创 VisualVM安装VisualGC插件

VisualVM安装VisualGC插件前言在我们安装的JDK中,提供了一个很棒的JVM调优工具,也就是 Java VisualVM,通过它我们能够看到很多关于我们Java程序的信息,比如查看 Eden,Survivor From, Survivor To区的空间使用情况,以及排查程序中那些对象造成OOM。VisualVM位置我们可以通过找到安装JDK的目录或者使用cmd命令来打开图形化界面jvisualvm启动完成后,会有这样一个界面这就代表Java VisualVM启动成功安装V

2020-07-14 10:38:22 1661 1

原创 通过一道笔试题来说明按位或|和逻辑或||按位与&和逻辑与&&的区别

通过一道笔试题来说明按位或|和逻辑或||,按位与&和逻辑与&&的区别先上笔试题Given the following code:链接:https://www.nowcoder.com/questionTerminal/593cc3972afe4b32a49cd9c518571221来源:牛客网public class Test { private static int j = 0; private static Boolean methodB(int

2020-07-14 09:56:33 436

原创 尚硅谷JVM从入门到精通宋红康版|第十五章、垃圾收集相关算法

垃圾回收相关算法标记阶段:引用计数算法在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡。判断对象存活一般有两种方式:引用计数算法和可达性分析算法。引用计数算法(Reference Count

2020-07-14 08:35:59 824

原创 尚硅谷JVM从入门到精通宋红康版|第十四章、垃圾回收概述

垃圾回收概述概念这次我们主要关注的是黄色部分,内存的分配与回收什么是垃圾在提到什么是垃圾之前,我们先看下面一张图从上图我们可以很明确的知道,Java 和 C++语言的区别,就在于垃圾收集技术和内存动态分配上,C语言没有垃圾收集技术,需要我们手动的收集。垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:哪些内存需要回收?什么时候回收?如何回收?垃圾收集机制是Java的招牌能力,极大地提高了

2020-07-13 22:36:56 638

原创 尚硅谷JVM从入门到精通宋红康版|第十三章、StringTable

StringTableString的基本特性String:字符串,使用一对 ”” 引起来表示String s1 = “mogublog” ; // 字面量的定义方式String s2 = new String(“moxi”);string声明为final的,不可被继承String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示string可以比较大小string在jdk8及以前内部定义了final char[] value用于存储

2020-07-13 22:20:40 686

原创 尚硅谷JVM从入门到精通宋红康版|第十二章、执行引擎

执行引擎执行引擎概述执行引擎属于JVM的下层,里面包括 解释器、及时编译器、垃圾回收器执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。JVM的主要任务是负责装载字节码 到其内部,但字节码并不能够直接运行在操作系统之上,因为

2020-07-13 20:01:51 609

原创 尚硅谷JVM从入门到精通宋红康版|第十一章、直接内存

直接内存 Direct Memory不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存通常,访问直接内存的速度会优于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序使用直接内存,用于数据缓冲区使用下列代码,直接分配本地内存空间int BUFFER = 1024*

2020-07-13 19:56:17 494

原创 尚硅谷JVM从入门到精通宋红康版|第十章、对象实例化内存布局与访问定位

对象实例化内存布局与访问定位对象实例化面试题对象在JVM中是怎么存储的?对象头信息里面有哪些东西?Java对象头有什么?从对象创建的方式 和 步骤开始说对象创建方式new:最常见的方式、单例类中调用getInstance的静态类方法,XXXFactory的静态方法Class的newInstance方法:在JDK9里面被标记为过时的方法,因为只能调用空参构造器Constructor的newInstance(XXX):反射的方式,可以调用空参的,或者带参的构造器使用clone():

2020-07-13 19:53:31 625

原创 尚硅谷JVM从入门到精通宋红康版|第九章、方法区

方法区前言这次所讲述的是运行时数据区的最后一个部分从线程共享与否的角度来看ThreadLocal:如何保证多个线程在并发环境下的安全性?典型应用就是数据库连接管理,以及会话管理栈、堆、方法区的交互关系下面就涉及了对象的访问定位Person:存放在元空间,也可以说方法区person:存放在Java栈的局部变量表中new Person():存放在Java堆中对于以上图片的说明:首先我们要明白,Java里对象传递的时候,传递的都是引用(也就是对象的地址),这比传递整个对象效率高多了

2020-07-13 19:49:54 1245 1

原创 尚硅谷JVM从入门到精通宋红康版|第八章、堆

堆堆的核心概念堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j6hvIUHD-1594638341130)(img/image-20200706195127740.png)]一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。堆内存的大小是可以调节

2020-07-13 19:32:25 1025

原创 尚硅谷JVM从入门到精通宋红康版|第七章、本地方法栈

本地方法栈Java虚拟机栈于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足够的内存,或者在创建新的线程时没有足够的内存去创建对应的本地方法栈,那么Java虚拟机将会抛出一个outofMemoryError

2020-07-13 19:05:57 374

原创 尚硅谷JVM从入门到精通宋红康版|第六章、本地方法接口

本地方法接口什么是本地方法简单地讲,一个Native Methodt是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern “c” 告知c++编译器去调用一个c的函数。“A native method is a Java method whose implementation is provided by non-java c

2020-07-13 19:04:59 554

空空如也

空空如也

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

TA关注的人

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