java
hashmap、多线程、反射、线程池、IO、异常、数据类型、面向对象
楼上有只喵
Java不归路。。。
展开
-
面试常问:BIO、NIO、AIO
文章目录1.BIO、NIO、AIO定义2.BIO、NIO、AIO使用场景3. NIO 有3大核心部分:channel、buffer、selector4.NIO和BIO的区别1.BIO、NIO、AIO定义Java共支持3种网络编程模型IO模式BIO:(blocking io)同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时,服务器就要启动一个线程进行处理,如果这个链接不做任何事,就容易造成不必要的线程开销。可以用线程池改善实现多用户访问一个服务器即实现并发NIO:(n原创 2020-10-06 14:00:37 · 337 阅读 · 0 评论 -
java面试复习提纲
一 网络LRU算法 9一个url访问的完整流程 9DNS解析过程 10APR解析网络协议7层 5层分别是什么 10GET 与 POST 11Tcp ip协议 12TCP与UDP的区别 13TCP流模式与UDP数据报模式 14TCP的三次握手 15四次挥手 16TIME_WAIT作用 17HTTP协议 17HTTP长连接、短连接是什么? 18HTTP 1.0、1.1、1...原创 2020-08-04 22:28:56 · 470 阅读 · 0 评论 -
java并发编程
一 常见java 锁名词锁大概有以下名词:阻塞锁,可重入锁,读写锁,互斥锁,悲观锁,乐观锁,公平锁,偏向锁,对象锁,线程锁,锁粗化,锁消除,轻量级锁,重量级锁,信号量,独享锁,共享锁,分段锁1. 常见的锁Synchronized 和 LockSynchronized,它就是一个:非公平,悲观,独享,互斥,可重入的重量级锁。原生语义上实现的锁。以下两个锁都在JUC包下,是API层面上的实...原创 2020-08-04 22:27:58 · 165 阅读 · 0 评论 -
java框架面试题汇总
一 spring1. IOC 和AOP两个核心特性Spring 是一个开源框架,Spring可以做很多事情,它为企业级开发提供这些功能的底层都依赖于它的两个核心特性:IOC和AOP。1.IOC:IOC控制反转也叫依赖注入,IOC 利用 java 反射机制,所谓控制反转是指,本来被调用者的实例是有调用者来创建的,这样的缺点是耦合性太强,IOC 则是统一交给 spring 容器来管理创建,将对象...原创 2020-08-04 22:24:56 · 1682 阅读 · 0 评论 -
java集合体系
一、集合体系简单介绍List特点:元素有顺序,能重复 ,可以插入多个 null 元素。a) List 接口有三个实现类:LinkedList,ArrayList,Vectorb) LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢c) ArrayList 可变长数组,查询快,非同步d) ArrayL...原创 2020-08-04 22:22:39 · 169 阅读 · 0 评论 -
HashMap底层实现原理(源码解析)及常见面试题
hashmap底层是基于数组加链表实现的,数组是主干,链表主要是为了解决hash冲突存在的。我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存Entry对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用...原创 2019-07-26 16:51:54 · 327 阅读 · 0 评论 -
java多线程总结(二)之Thread类的常用方法
1.Thread类的常用方法(1)sleep() 导致当前正在执行的县城休眠(暂时停止执行)指定的毫秒数,具体取决于系统计时器和调度程序的精度和准确性。package com.thread;class MyRunnable implements Runnable{ @Override public void run() { for (int i = 1...原创 2019-06-07 11:33:27 · 383 阅读 · 0 评论 -
java多线程总结(一)
1.基本概念(1)多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。(2)进程和线程进程:就是正在执行的一个应用程序。线程:线程是进程的最小执行单位,一个进程中包含多个线程。(3)并发和并行并发:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将...原创 2019-06-03 08:51:06 · 146 阅读 · 0 评论 -
java 反射(二)之提高反射的方法 setAccessible(true)
setAccessible(true/false):表示启用和禁用安全检查的开关。当值为true时,指反射对象在使用时应该取消java语言访问检查,值为false则只是反射的对象应该试试java语言访问检查。当 值 设置为true时,不接受检查,可以提高反射的运行速度。package com.reflect;import java.lang.reflect.Con...原创 2019-04-30 16:04:54 · 4904 阅读 · 0 评论 -
java 反射(一)之反射机制
一.反射引入1.动态语言:程序运行时,可以改变程序结构或变量类型,典型的有:python、javascript。java不是动态语言,但它有动态性,反射就是java动态性的一个体现。2.反射概念:Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。即加载完类以后,就产生了一个Class对象,这个对象包含完整的类的结构信息,我们可以通过这个对象看到类...原创 2019-04-29 21:37:59 · 195 阅读 · 0 评论 -
Tomcat8开启SSI
1.SSI定义 SSI是英文ServerSideIncludes的缩写, 即“服务器端包含”或“服务器端嵌入”技术。 SSI在HTML文件中,可以通过注释行调用的命令或指针,是一种基于服务器端的网页制作技术。 shtml文件就是应用了SSI技术的html文件。SSI工作原理因为是基于服务器端的网页制作技术,所以在.shtml页面返回到客户端前,服务器会对SHTML...原创 2019-06-01 17:16:05 · 1025 阅读 · 0 评论 -
java页面静态化
1.概念 页面静态化,其实就是将动态生成的jsp页面,变成静态的HTML页面,让用户直接访问。2.优点(1)加快页面打开浏览速度,静态页面无需连接数据库,打开速度较动态页面有明显提高。(2)降低数据库压力,数据库只有在最初写入HTML文件时被访问一次,之后都直接访问静态页面,大大降低与数据库交互次数。(3)即使客户端数据库出错,也不影响网站的正常访问。2.原理 ...原创 2019-05-29 08:38:20 · 1426 阅读 · 0 评论 -
java 生成验证码
代码如下:package com.part01;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.u...原创 2019-05-03 16:41:56 · 221 阅读 · 0 评论 -
重载(overload)和重写(override)的区别
1、重载(overload)和重写(override) 方法的重写和重载都是实现多态的方式,重载实现的是编译时多态,重写实现的是运行时多态。1.方法重载(overload):在同一个类中,方法名相同,参数列表(类型不同,顺序不同,个数不同)不同,跟返回值类型无关,就构成方法重载方法重载的规则:方法名一致,参数列表(类型不同,顺序不同,个数不同)不同。 重载跟返回值类型无关...原创 2019-05-23 20:28:27 · 527 阅读 · 0 评论 -
java中&和&&的区别
1.概念:&运算符有两种用法:(1)按位与 (2)逻辑与&&运算符是短路与2.相同点:二者都是要求符号两边的值都为true,表达式的值,才为true3.不同点:&左边的表达式即使为false,右边的表达式也会进行运算&左边的表达式如果为false,右边的表达式会直接短路掉,即不会进行运算我们经常使用的是&&,...原创 2019-05-22 20:55:05 · 281 阅读 · 0 评论 -
java 面向对象的三大特性及理解
默认情况下,面向对象有三大特性:继承、封装、多态。但如果考官让回答4大特性,我们就把抽象加上去。1、继承 继承就是从已有的类继承信息创建新类的过程,被继承的类称为父类(也叫基类、超类),继承的类叫做子类(也叫派生类)。子类可以全盘接受父类的所有属性和方法(甚至是private修饰的,也可以继承,但是不能在父类之外访问,提供共有的访问方法(比如封装set()、get...原创 2019-05-22 08:32:20 · 493 阅读 · 0 评论 -
java中的抽象类(abstract class)和接口(interface)有什么异同
1.概念抽象类:被abstract 修饰的类就是抽象类 如:abstract class Animal{ },抽象类的作用就是为了去让子类去继承它,提高代码重用性!接口:我们可以把它看做是一种特殊的抽象类,接口中的所有方法都必须是抽象的,接口中的方法定义默认为 public abstract 类型,接口中的成员产量类型默认为 public static final。2.抽象类和接...原创 2019-05-25 19:11:59 · 1982 阅读 · 0 评论 -
java的异常处理
1.对异常的定义 在程序运行期间,出现了不正常的情况,统称为异常。2.分类 java对异常做了分类,所有的异常的根为java.lang.Throwable,Throwable下又派生了2个子类,分别是Error和ExceptionError:一般是指和虚拟机相关的问题。如内存溢出,操作系统出错,虚拟机错误等。对于这类错误导致的应用程序中断,仅靠程序本身无法恢复和预防,建议让...原创 2019-05-25 20:44:04 · 125 阅读 · 0 评论 -
java的IO流
1、分类A.按方向分: 输入流:比如从文件到程序 输出流:比如从程序到文件B.按单位分: 字节流:每次进行读写时操作的最小单位是一个字节,继承于InputStream和OutputStream 字符流:每次进行读写时操作的最小单位是一个字符继承于InputStreamReader和OutputStreamWriter...原创 2019-05-27 08:42:24 · 106 阅读 · 0 评论 -
java中线程池
1.线程池的定义 线程池的基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样可以避免反复创建线程对象所带来的性能开销,节省了系统的资源,提高了代码执行效率。。2.线程池的使用在JDK的java.util.concurrent.Executors中提供了多种...原创 2019-08-16 22:20:53 · 215 阅读 · 0 评论 -
线程的优先级
1.线程的优先级(鸡肋) Java线程可以有优先级的设定,高优先级的线程比低优先级的线程有更高的几率得到执行。但也只是执行几率大,不是一定会先执行,由调度程序决定哪一个线程被执行,线程的优先级是高度依赖于系统的。优先级可以用从1到10的范围指定。10表示最高优先级,1表示最低优先级,5是普通优先级(在源码里注释的是默认优先级)。 你可以使用常量,如MIN_PRIORITY,MA...原创 2019-08-16 22:22:10 · 742 阅读 · 0 评论 -
java的数据类型
1. 数据类型分类基本数据类型(8种基本数据类型) 复合类型(引用类型,类类型):类,枚举,接口,数组,字符串(底层用char数组实现)2.基本数据类型分类3、基本数据类型及其包装类 java是一个近乎纯洁的面向对象的语言,但是为了编程的方便还是引入了基本数据类型,为了能将这些基本数据类型能够当做对象处理,因此java为每一个基本数据...原创 2019-05-25 17:44:30 · 353 阅读 · 0 评论