自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 12-多线程应用之下载器

1. 多线程下载器1.1 简介多线程下载器小项目的主要目的是对多线程知识做一些运用,加深对多线程知识的理解,该项目应用的知识点包括下面内容:RandomAccessFile类的运用HttpURLConnection类的运用线程池的使用原子类LongAdder的运用CountDownLatch类的运用ScheduledExecutorService类的运用1.2 环境搭建1.2.1 基本信息开发工具:IDEAJDK版本:8项目编码:utf-81.2.2 创建项目在开发工具中创

2021-08-23 10:08:43 460

原创 11.JVM&GC基础

一、JVM基础1.基础术语1.1 并行并发并行并行是多个线程同时在运行,其发生在多核心 CPU 下,每个 CPU 核心执行一个线程,多个线程同时执行并发并发偏重于任务交替执行,但是多个任务之间是串行的,一般指的是一个 CPU 核心的多个线程轮流执行1.2 进程和线程进程每个独立运行的程序都是一个进程,程序和程序之间相互隔离,进程和进程之间也隔离线程每个进程内部至少会有一个线程或者多少线程,线程是运行指令的最小单位,每个程序的功能就是由它进程内的所有线程共同完成

2021-04-15 09:40:41 336

原创 10.Java基础之IO+注解+反射+socket

0.回顾File的常用方法其他略1.IO流1.1 IO流的简介对于文件的读写操作需要使用IO流,Input和Output。分类:单位划分:①字节流:InputStream和OutputStream,可以处理任何类型的文件②字符流:Reader和Writer,文本文件 txt流向划分①输入流:InputStream和Reader②输出流:OutputStream和Writer输入和输出是相对而言的,存储设备—》内存 ,读的过程,输入流;内存—》存储设备,写的过程,输出流

2021-04-15 09:29:14 346

原创 9.Java基础之常用类

0.回顾①线程 vs 进程 并发 vs 并行②实现线程的方式 3种,以及run vs start、call vs run,实现Runnable和继承Thread的区别③线程的状态,一张图④线程安全【为什么会出现,怎么解决】 补充:拔高,RenentrantLock的原理,以及默认是公平锁还非公平锁…⑤线程通讯【原理–等待唤醒机制】,以及如何实现,wait()、notify/notifyall都是Object的方法;Conditionawait();和signal() class Boun

2021-04-15 09:23:47 302

原创 8.Java基础之多线程

1. 回顾接口①方法(分jdk版本)②多继承③变量特点④多态的前提之一⑤工厂设计模式,起码要知道简单工厂⑥vs 抽象类异常①异常的祖宗类:Throwable②异常的分类:编译(受检)+运行(非受检)③error:处理不了④常见异常(至少5个):算术、下标越界、空指针、类型转换、输入不匹配⑤异常的处理机制:捕获(try…catch…finally)+抛出(交给调用者处理)⑥throw和throws的使用区别⑤会自定义异常2. 线程2.1 线程引入【了解】2.1.

2021-04-15 07:42:58 602

原创 7.Java基础之集合框架+JDK8新特性

1.集合概述1.1 为什么学集合思考:数组有什么缺点?长度一旦定义,不能改变!定义大了,浪费空间;小了,可能不够 ----》动态的数组对于增删,需要移动位置 —》有人帮我们做这个事情,LinkedList数组存储的单列数据,对于双列数据的映射关系,怎么存储(key-value,键值对,类似数学中的函数映射)?Map基于以上问题,我们需要学习集合框架。开发中,数组用的非常少,几乎不怎么用!1.2 什么是集合集合就是一个存储数据的容器。1.3 集合的整体架构图Collec

2021-04-14 15:26:58 8975

原创 6.Java基础之面向对象【接口、异常、内部类、Lambda】

1.接口1.1 概述接口的类图是通过虚线:1.1.1 为什么需要需求:要求实现防盗门的功能思考:防盗门可以继承门的同时又继承锁吗?功能扩展,has a1.1.2 什么是接口接口,是Java语言中一种引用类型【类、数组、接口】,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)。 【面试的时候要分版本号去回答】接口的定义,它与定义类方式相似,但是使用i

2021-04-14 14:57:59 703

原创 5.Java基础之面向对象二

1.static、final、多态1.1 主要内容static关键字final关键字三大特征——多态1.2 目标能够理解static关键字能够写出静态代码块的格式描述final修饰的类的特点描述final修饰的方法的特点能够说出使用多态的前提条件理解多态的向上转型理解多态的向下转型2.static2.1 概述static关键字的使用,可以用来修饰成员变量、成员方法、代码块,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用

2021-04-14 14:47:51 441

原创 4.Java基础之面向对象一

1.类图1.1 类图说明若要画上面的这种类图,推荐的工具有:processon.com:https://www.processon.com/PowerDesigner:可以设计数据库【抽取出表与表之间的关系、生成建表语句,支持多种数据库】、画各种流程图、类图StarUML:设计类图,生成java文件drwa.io:https://app.diagrams.net/ ----》你可以将图保存到github1.2 对象在内存中的结构回想我们之前的数组,都是引用类型,引用类型中有一个特殊

2021-04-14 14:36:20 435

原创 3.Java基础之方法+双重循环+常见排序+面向对象入门

1.方法1.1 语法针对前面的最值、以及查找的问题,我们如果再去处理多个数组,需要做重复的事情。里面的处理的事情是一样,能否将这样的一个功能,提取出来,我们称之为方法语法:修饰符 返回值类型 方法名称(形式参数列表) { 方法体 return 值; }①修饰符:暂且不关心,拿main去说,public static②返回值:如果方法没有返回值,则使用void修饰,若有返回值,则使用对应的数据类型【基本+引用】③方法名称:一般是一种动作,在命名的时候,通常采用动宾结构

2021-04-14 14:21:00 424

原创 2.Java基础之概述-流程控制+数组+IDEA基本使用+程序调试

1.流程控制1.1 流程是什么生活中处处都有流程:比如你们大学报到程序就是为了解决生活的问题,程序也有流程3.2 顺序流程从上到下,一条直线走下去1.2 分支结构1.2.1 if单分支需求:如果今天天晴,我们就去上课;其他情况不处理语法:if(boolean值){ //boolean可以是一个很长的表达式,&& || 拼接 //your code}Tips:若if语句块中只有一条语句,则if后面的{}可以省略,但是不建议省略,若按照阿里规约,强制不能省

2021-04-14 11:54:37 354

原创 43_说说synchronized底层原理(重要)

这个我们要分情况来分析:1,JDK1.6之前synchronized是由一对monitor-enter和monitor-exit指令实现的。这对指令的实现是依靠操作系统内部的互斥锁来实现的,期间会涉及到用户态到内存态的切换,所以这个操作是一个重量级的操作,性能较低。2,JDK1.6之后JVM对synchronized进行了优化,改了三个经历的过程偏向锁-》轻量级锁-》重量级...

2021-04-14 11:37:22 112

原创 42_什么是反射?可以解决什么问题?

反射是指程序在运行状态中,1,可以对任意一个类,都能够获取到这个类的所有属性和方法。2,对于任意一个对象,都可以调用它的任意一个方法和属性反射是一种能力一种在程序运行时,动态获取当前类对象的所有属性和方法的能力,可以动态执行方法,给属性赋值等操作的能力Class代表的就是所有的字节码对象的抽象,类反射,让我们的java程序具备动态性这种动态获取类信息及调用对象方法...

2021-04-14 11:37:00 65

原创 1.Java基础之概述-变量常量和运算符

1.Java概述1.1 是什么Java起源于Sun公司,1995年诞生,高级语言,2009年被Oracle收购Java之父:James Goslingoak:橡树1.2 发展史1995年,1.0版本2004年,1.5版本 --》里程碑版本,增加了很多新特性,比如增强for、泛型、可变参数、枚举、包装类等等;版本命名的改变2006年,1.6版本 —》J2SE ----》JavaSEJ2EE ----》JavaEEJ2ME ----》JavaME2011年,java7*2014年,

2021-04-14 11:36:08 358

原创 7.深克隆和浅克隆有什么区别?它的实现方式有哪些?

目录1.典型回答2.考点分析3.知识扩展3.1clone() 源码分析3.2Arrays.copyOf()3.3深克隆实现方式汇总1.所有对象都实现克隆2.通过构造方法实现深克隆3.通过字节流实现深克隆4.通过第三方工具实现深克隆5.通过 JSON 工具类实现深克隆4.克隆设计理念猜想5.小结使用克隆可以为我们快速地构建出一个已有对象的副本,它属于 Java 基础的一部分,也是面试中常被问到的知识点之一。1.典型回答浅克隆(Shadow...

2020-05-27 16:06:42 674

原创 6.谈谈你对锁的理解?如何手动模拟一个死锁?

目录1.典型回答2.考点分析3.知识扩展3.1悲观锁和乐观锁3.2可重入锁3.3共享锁和独占锁4.小结在并发编程中有两个重要的概念:线程和锁,多线程是一把双刃剑,它在提高程序性能的同时,也带来了编码的复杂性,对开发者的要求也提高了一个档次。而锁的出现就是为了保障多线程在同时操作一组资源时的数据一致性,当我们给资源加上锁之后,只有拥有此锁的线程才能操作此资源,而其他线程只能排队等待使用此锁。当然,在所有的面试中也都少不了关于“锁”方面的相关问题。1.典型回答死锁是...

2020-05-27 15:50:14 309

原创 5.synchronized 和 ReentrantLock 的实现原理是什么?它们有什么区别?

目录1.典型回答2.考点分析3.知识扩展3.1ReentrantLock 源码分析3.2公平锁 VS 非公平锁3.3JDK 1.6 锁优化1.自适应自旋锁2.锁升级4.小结在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并不是为了替代 synchronized,而是在 synchronized 不适用的情况下,提供一种可以选择的高级功能...

2020-05-27 15:31:12 266

原创 4.详解 ThreadPoolExecutor 的参数含义及源码执行流程?

目录1.典型回答2.考点分析3.知识扩展3.1 execute() VS submit()3.2线程池的拒绝策略3.3自定义拒绝策略3.4ThreadPoolExecutor 扩展4.小结线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入“池”中,当有任务来临时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度。但如果要说线程池的话一定离不开 ThreadPoolExecutor ,在阿里巴巴的《...

2020-05-27 15:11:27 495

原创 3.线程的状态有哪些?它是如何工作的?

目录1.典型回答2.考点分析3.知识扩展3.1BLOCKED 和 WAITING 的区别3.2start() 和 run() 的区别3.3 线程优先级3.4线程的常用方法1.join2.yield4.小结线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。当然,线程也是面试中常被问到的...

2020-05-27 14:56:06 198

原创 2.HashMap 底层实现原理是什么?JDK8 做了哪些优化?

HashMap 是使用频率最高的类型之一,同时也是面试经常被问到的问题之一,这是因为 HashMap 的知识点有很多,同时它又属于 Java 基础知识的一部分,因此在面试中经常被问到。

2020-05-27 14:41:17 239

原创 1.String 的特点是什么?它有哪些重要的方法?

几乎所有的Java 面试都是以String开始的,如果第一个问题没有回答好,则会给面试官留下非常不好的第一印象,而糟糕的第一印象则会直接影响到自己的面试结果,就好像刚破壳的小鹅一样,会把第一眼看到的动物当成自己的母亲,即使它第一眼看到的是一只小狗或小猫,也会默认跟随其后,心理学把这种现象叫做印刻效应。印刻效应不仅存在于低等动物之中,同样也适用于人类,所以对于String的知识,我们必须深入的掌握才能为自己赢得更多的筹码。本节的问题是:String是如何实现的?它有哪些重要的方法?1.典型...

2020-05-27 14:21:05 357

原创 0.大厂技术面试“潜规则”

1.为什么说源码掌握程度决定 Offer 薪资?想要分辨出谁是“包装”出来的,谁是真正有实力的,方法其实很简单,只要追问更深层次的技术细节或源码执行流程就行。所以,只想通过背几道面试题就能拿到高薪或者进入大厂是完全不可能的,你需要追本溯源地搞懂每个知识点之间的关联,努力去研究 Java 底层数据结构和执行源码,才有可能获得成功。2.大厂面试的“潜规则”为什么这么说呢?几乎所有大厂的面试套路都是一样的:他们会从一个简单的面试题问起,然后扩展到和这个知识点相关的更深层次的知识点细节,直到问的你答

2020-05-27 14:03:14 291

原创 centos7安装解压版的mysql5.7.29教程

mysql官网下载mysql-5.7.29-el7-x86_64.tar.gz[root@centos7 src]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-el7-x86_64.tar.gz一、卸载系统自带的Mariadb[root@centos7 src]# rpm -qa|grep mar...

2020-03-19 23:11:41 1043

原创 Centos将yum源设置为阿里云的镜像源

备份原有镜像源cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak下载阿里云的镜像源wget -O /etc/yum.repo.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo重新设置缓存yum cl...

2020-03-14 22:57:26 454

原创 CentOS-7 最小安装VMware-tools

在root权限下操作加载vmware tools 到CentOS7光驱CD-ROMmkdir /mnt/cdrom ///创建挂载目录mount /dev/cdrom /mnt/cdrom ///将光驱挂载到/mnt/cdrom目录cd /mnt/cdromcp VMwareTools-XXXX.tar.gz /usr/localcd /usr/local ...

2020-03-14 21:49:28 444

原创 40_深拷贝和浅拷贝的区别是什么?

深拷贝:除了对象本身被复制外,对象所包含的所有成员变量都会被复制,包括引用类型的成员对象浅拷贝:只复制对象其中包含的值类型的成员变量,而引用类型的成员对象没有被复制...

2020-02-25 22:21:03 96

原创 39_synchronized和lock的区别

1,作用的位置不同synchronized可以给方法,代码块加锁lock只能给代码块加锁2,锁的获取锁和释放机制不同synchronized无需手动获取锁和释放锁,发生异常会自动解锁,不会出现死锁。lock需要自己加锁和释放锁,如lock()和unlock(),如果忘记使用unlock(),则会出现死锁,所以,一般我们会在finally里面使用unlock().补...

2020-02-25 22:20:52 100

原创 38_synchronized和volatile的区别

1,作用的位置不同synchronized是修饰方法,代码块volatile是修饰变量2,作用不同synchronized,可以保证变量修改的可见性及原子性,可能会造成线程的阻塞volatile仅能实现变量修改的可见性,但无法保证原子性,不会造成线程的阻塞...

2020-02-25 22:20:41 64

原创 37_什么是序列化

序列化是为了保持对象在内存中的状态,并且可以把保存的对象状态再读出来。什么时候需要用到java序列化?1,需要将内存的对象状态保存到文件中2,需要通过socket通信进行对象传输时3,我们将系统拆分成多个服务之后,服务之间传输对象,需要序列化...

2020-02-25 22:20:30 81

原创 36_并发和并行的区别

并发:同一个CPU执行多个任务,按细分的时间片交替执行并行:在多个CPU上同时处理多个任务

2020-02-25 22:20:18 88

原创 35_谈谈类的加载机制

面试场景:面试官第一问:请问,我现在编写一个类,类全名如下:java.lang.String,我们知道JDK也给我们听过了一个java.lang.String,那么,我们编写的这个String类能否替换到JDK默认提供,也就是说程序实际运行的时候,会加载我们的String还是JDK的String?为什么?如果,你无法确定?那么第二问:了解类的加载机制吗?知道JDK的类加载器吗?...

2020-02-25 22:20:00 83

原创 34_谈谈你对ThreadLocal的理解

ThreadLocal解决了什么问题?内部源码是怎么样的?作用:为每个线程创建一个副本实现在线程的上下文传递同一个对象,比如connection第一个问题:证明ThreadLocal为每个线程创建一个变量副本public class ThreadLocalTest { private static ThreadLocal<Long> threadL...

2020-02-25 22:19:47 444 1

原创 33_JDK提供的线程池有哪些?实际开发我们该怎么使用?

1,JDK通过接口ExecutorService来表示线程池,通过工具类Executors来创建多种线程池对象ExecutorService service1 = Executors.newSingleThreadExecutor();ExecutorService service2 = Executors.newFixedThreadPool(2);ExecutorService se...

2020-02-25 22:19:35 213

原创 32_谈谈Sleep和wait的区别

1、所属的类不同sleep方法是定义在Thread上wait方法是定义在Object上2、对于锁资源的处理方式不同sleep不会释放锁wait会释放锁3、使用范围:sleep可以使用在任何代码块wait必须在同步方法或同步代码块执行4、与wait配套使用的方法void notify()Wakes up a single thread that is waitin...

2020-02-25 22:19:19 189

原创 31_谈谈你对线程安全的理解?(重点)

如果这个是面试官直接问你的问题,你会怎么回答?一个专业的描述是,当多个线程访问一个对象时,如果不用进行额外的同步控制或其他的协调操作,调用这个对象的行为都可以获得正确的结果,我们就说这个对象是线程安全的那么我们如何做到线程安全?实现线程安全的方式有多种,其中在源码中常见的方式是,采用synchronized关键字给代码块或方法加锁,比如StringBuffer查看StringBuff...

2020-02-25 22:19:03 1274 1

原创 30_请描述线程的生命周期

一图胜千言!上述的图有些简略,下面详细说明下,线程共有6种状态:new,runnable,blocked,waiting,timed waiting,terminated1,当进入synchronized同步代码块或同步方法时,且没有获取到锁,线程就进入了blocked状态,直到锁被释放,重新进入runnable状态2,当线程调用wait()或者join时,线程都会进入到wai...

2020-02-23 13:26:24 974

原创 29_一个普通main方法的执行,是单线程模式还是多线程模式

因为java有个重要的特性,叫垃圾自动回收机制,所以答案是多线程,这里面有两部分,主线程(用户线程),垃圾回收线程GC(守护线程)同时存在。...

2020-02-23 13:26:13 239

原创 28_创建线程的方式

我们常说的方式有以下三种:继承Thread实现Runable接口实现Callable接口(可以获取线程执行之后的返回值)但实际后两种,更准确的理解是创建了一个可执行的任务,要采用多线程的方式执行,还需要通过创建Thread对象来执行,比如 new Thread(new Runnable(){}).start();这样的方式来执行。在实际开发中,我们通常采用线程池的方式来完成Th...

2020-02-23 13:25:56 73

原创 27_一道关于try catch finally返回值的问题

以下这道题,在实际开发中,并不会这么写。这个是面试官为了考察大家对finally的认识,而苦思冥想出来,我猜的。结果是多少?你可以先想下。。。。。。。。答案是:2,因为finally是无论如何都会执行,除非JVM关闭了...

2020-02-23 13:25:40 86

原创 26_throw跟throws的区别

throw,作用于方法内,用于主动抛出异常throws, 作用于方法声明上,声明该方法有可能会抛些某些异常针对项目中,异常的处理方式,我们一般采用层层往上抛,最终通过异常处理机制统一处理(展示异常页面,或返回统一的json信息),自定义 异常一般继承RunntimeException,我们去看看Hibernate等框架,他们的异常体系都是最终继承自RunntimeException...

2020-02-23 13:24:32 126

空空如也

空空如也

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

TA关注的人

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