自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java图片裁剪并保存--2020/11/11

今天工作中接到一个新的需求,要求对一个图片进行剪辑,并设置为首页展示实现的碰到了许多的问题,踩了不少坑。话不多说上代码:<form id="queryForm"> <div id="box"> <!--原图片(第一层 ) 表示最底下那层 --> <img src="<c:url value='/djActRec/getFileById' />?id=<c:out value="${pbFileUu

2020-11-11 11:22:17 196

原创 面试题之闭包

闭包的概念:外部函数内部嵌套内部函数内部函数中使用外部函数的环境外部函数返回内部函数闭包的作用:获取函数内部的变量保持变量的值在内存中避免变量名重复

2020-08-12 11:02:00 136

原创 面试题之ajax请求方式

$.get$.post$.ajax$.load$.getJSON

2020-08-12 10:53:55 191

原创 面试题之数据库连接的问题

内连接和外连接的区别内连接表示:返回两个表中相同字段的数据外连接表示 :而外连接会选出其他不匹配的记录。左连接和右连接的区别左连接:只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来右连接:右连接是只要右边表中有记录,数据就能检索出来...

2020-08-12 09:19:14 276

原创 面试题之文件上传基本流程

首先,阐明项目的采用的框架(springmvc等),采用fileupload插件,在前台对form表单进行封装,在后台采用multipartfile文件对象进行接收,接收完以后对文件进行从新命名,命名方式采用UUID方法,然后获取文件后缀然后设置文件上传到服务器的路径,判断服务器路径下的是否存在目录,如果没有目录会进行新的创建。最后 上传到服务器上。...

2020-08-11 11:44:23 1054

原创 面试题之跨域问题的解决

一解决方式:jsonp 只支持get请求不支持post请求用法:①dataType改为jsonp 但是jsonp 只支持get请求不支持post请求二响应头添加Header允许访问三httpClient内部转发四使用接口网关——nginx、springcloud zuu...

2020-08-07 17:12:31 580

原创 面试题之Tomcat接收处理请求

Tomcat是什么?Tomcat是一个web应用服务器,是一个Servlet/Jsp容器,主要负责将客户端请求传递给对应的Servlet,并且将Servlet的响应数据返回给客户端。Tomcat是基于组件的服务器。Tomcat体系结构Tomcat是一个基于组件的服务器,它的构成组件都是可配置的。其各个组件都在Tomcat安装目录下的…/conf/server.xml文件中配置。向浏览器输入一个URL,Tomcat是怎么接收和处理的1.用户在浏览器中输入网址localhost:8080/test/

2020-07-27 20:02:58 360

原创 线程死锁和死锁的必要条件

死锁的概念如果一个进程集合里面的每个进程都在等待这个集合中的其他一个进程(包括自身)才能继续往下执行,若无外力他们将无法推进,这种情况就是死锁,处于死锁状态的进程称为死锁进程产生死锁的四个必要条件?死锁的必要条件(1)互斥条件:进程对所分配到的资源不允许其他进程进行访问,若其他进程访问该资源,只能等待,直至占有该资源的进程使用完成后释放该资源(2)请求和保持条件:进程获得一定的资源之后,又对其他资源发出请求,但是该资源可能被其他进程占有,此事请求阻塞,但又对自己获得的资源保持不放(3)不可剥夺条

2020-07-22 20:11:07 280

原创 面试题之线程之间同步的方式

1、同步方法synchronized关键字修饰方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。2、同步代码块synchronized关键字修饰的语句块。被该关键字修饰的语句块会自动加上内置锁,从而实现同步3、使用lock锁4、wait()方法与notify()方法5,使用阻塞队列...

2020-07-22 20:07:55 334

原创 面试题之进程和线程的区别

进程和线程的不同1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此 CPU 切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。3、线程之间的通信相对于进程更方便。4、但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程

2020-07-22 20:01:29 313

原创 JavaSE阶段回顾(11)集合之map集合

HashMap• HashMap是基于哈希表的Map接口的非同步实现,继承自AbstractMap,AbstractMap是部分实现Map接口的抽象类• 在之前的版本中,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里(和我们在之前自行实现的哈希表相同)。但是当链表中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。而JDK1.8中,HashMap采用数组+链表+红黑树(一种平衡搜索二叉树)实现,当链表长度超过阈值(8)时,将链表转换为

2020-07-22 19:30:02 80

原创 JavaSE阶段回顾(11)集合之set集合

set实现类EnumSet:• 是枚举的专用Set。所有的元素都是枚举类型HashSet• HashSet堪称查询速度最快的集合,因为其内部是以HashCode来实现的。它内部元素的顺序是由哈希码来决定的,所以它不保证set的迭代顺序;特别是它不保证该顺序恒久不变TreeSet• 基于TreeMap,生成一个总是处于排序状态的set,内部以TreeMap来实现。它是使用元素的自然顺序对元素进行排序,或者根据创建Set 时提供的 Comparator 进行排序,具体取决于使用的构造方法...

2020-07-22 18:48:21 135

原创 JavaSE阶段回顾(11)集合之list集合

常见集合List集合ArrayList• ArrayList是一个用数组实现的列表,也是我们最常用的集合。它允许任何符合规则的元素插入甚至包括null• 每一个ArrayList都有一个初始容量(10),该容量代表了数组的大小。随着容器中的元素不断增加,容器的大小也会随着增加。在每次向容器中增加元素的同时都会进行容量检查,当快溢出时,就会进行扩容操作(构建一个新的更大的数组并将之前的内容拷贝到新书组中)。所以如果我们明确所插入元素的多少,最好指定一个初始容量值,避免过多的进行扩容操作而浪费时间、效

2020-07-22 18:41:02 124

原创 JavaSE阶段回顾(10)反射

反射类对象:java.lang.Class• Java反射机制允许程序在运行时通过Reflection APIs取得任何一个已知名称的class的内部信息,包括其修饰符、父类、接口、构造方法、属性、方法等,并可于运行时改变属性值或者调用方法等;• Java反射机制是Java语言的一个重要特性,使得Java语言具备“动态性”:• 在运行时获取任意一个对象所属的类的相关信息;• 在运行时构造任意一个类的对象;• 在运行时获取任意一个类所具有的成员变量和方法;• 在运行时调用任意一个对象的方法;J

2020-07-10 19:31:43 214

原创 JavaSE阶段回顾(9)泛型

泛型概念泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法 。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。类型擦除Java编译器通过Codesharing方式为每个泛型类型创建唯一的字节码表示,并且将该泛型类型的实例都映射到这个唯一的字节码表示上。将多种泛型类形实例映射到唯一的字节码表示是通过类型擦除(typeerasue)

2020-07-10 18:50:13 113

原创 JavaSE阶段回顾(8)线程二

线程同步• 如果需要将多条代码视作一个整体调度单元,希望这个调度单元在多线程环境中的调度顺序不影响任何结果,除了保证可见性、防止重排序改变语义之外,还要将该代码段进行原子保护,这种保护我们称为线程同步,其主要的作用是实现线程安全的类• Java中使用synchronized关键字来对操作进行同步处理线程死锁• 因为线程可以阻塞,并且对象可以具有同步控制方法,用以防止别的线程在锁还没有释放的时候就访问这个对象.所以就可能出现这种情况:• 某个线程在等待另一个线程,而后者又等待别的线程,这样一直下去,

2020-07-09 20:43:26 161 1

原创 JavaSE阶段回顾(8)线程

线程生命周期• Java中线程存在以下几种状态(后续将详细讲解对应代码):新线程:• 当利用new关键字创建线程对象实例后,它仅仅作为一个对象实例存在, JVM没有为其分配CPU时间片和其他线程运行资源就绪状态:• 在处于创建状态的线程中调用start方法将线程的状态转换为就绪状态。这时,线程已经得到除CPU时间之外的其它系统资源,只等JVM的线程调度器按照线程的优先级对该线程进行调度,从而使该线程拥有能够获得CPU时间片的机会运行状态:• 就绪态的线程获得cpu就进入运行态等待/阻塞:•

2020-07-09 20:35:35 134

原创 JavaSE阶段回顾(7)异常及异常处理

异常异常(Exception):异常指的是程序运行时发生的不正常事件;异常能够被程序处理,保证程序继续运行下去;例如除数为0、文件没有找到、输入的数字格式不对……错误(Error):错误程序没法处理,例如内存泄漏。发生错误后,一般虚拟机会选择终止程序运行,程序员需要修改代码才能解决相关错误;API树状结构API中标准异常的顶级父类是Throwable类;Throwable类有两个子类:Exception和Error;所有异常都是Exception类的直接或间接子类;所有错误都是Error的直接或

2020-07-07 19:53:07 186

原创 JavaSE阶段回顾(6)抽象类

抽象简单的理解,Java的抽象就是只声明行为接口(方法签名)而不完成具体的实现Java中,抽象类主要用来进行类型隐藏;也就是使用抽象的类型来编程,但是具体运行时就可以使用具体类型利用抽象的概念,能够在开发项目中创建扩展性很好的架构,优化程序抽象类,抽象方法,在软件开发过程中都是设计层面的概念。也就是说,设计人员会设计出抽象类,抽象方法,程序员都是来继承这些抽象类并覆盖抽象方法,实现具体功能理想的继承树应该是:所有叶子都是具体类,而所有的树枝都是抽象类。在实际中当然不可能完全做到,但是应尽可能向此目

2020-07-07 19:40:21 106

原创 JavaSE阶段回顾(5)

可变与不可变API在Java中,可供调用的API从执行后的内存状态的角度可以从逻辑上划分为两种类型:可变API在给定的既有内存上进行操作的API不可变API执行时需要新分配一段内存后再执行操作的APIJava传递参数的特性Java中的参数只有值传递传统印象中基本数据类型和字符串传参时是值传递,其他对象传参是是引用传递的思想是错误的可变参数Java1.5增加了可变参数特性,适用于参数个数不确定,类型确定的情况Java把可变参数当做数组处理可变参数必须位于最后一项。当可变参数个数多余一个

2020-07-07 19:32:32 110

原创 JavaSE阶段回顾(4)Java特性之封装,继承

封装封装是与对象有关的一个重要概念形式:将数据和行为组合在一起,并对对象的使用者隐藏数据的实现方式属性由变量表示,属性名称由类的每个对象共享每个特定的对象都有一组特定的实例属性值,这些值的集合就是这个对象的当前状态,只要向对象发送一个消息,它的状态就有可能发生改变封装的特性能够让服务提供者把它服务的细节隐藏掉,你只需要提交请求与传递它需要的参数,它就会给你返回结果,而这个结果是如何产生的,经过了多少复杂运算,经过多少次数据读取,你都不用管,只要它给你结果就好了。封装使得对代码的修改更加安全和容易

2020-07-07 19:21:31 80

原创 JavaSE阶段回顾(3){基本引用类型和循环语句}

引用类型在Java语言中,除了8种基本数据类型,其他类型都是引用类型;也可以说,任何一个对象都是引用类型;引用类型使用=赋值;除了String、包装器类(共8个)外,都需要使用new 关键字;引用类型可以使用==、!=进行比较,比较的是引用类型的地址,不是内容;引用类型不能使用>、>=、<=、<进行比较;当只声明了一个引用类型变量,却没有为其赋值,则此时该变量为null;引用类型的默认值是null 表示空 什么都没有指向一个字符串是null,与一个字符串是””是

2020-07-07 19:18:32 134

原创 JavaSE阶段回顾(2)

变量变量:程序中的基本存储单元,其定义包括变量名、变量类型和作用域几个部分,存储数据的容器计算机中的数据 :二进制数为什么进行数据类型划分不同的变量有不同的用途,例如,可以用变量来表示年龄,或者用变量来表示成绩。而年龄只能是整数,而成绩却可能出现小数;如果不把数据划分为不同的类型,那么就没有办法区分出数据之间的差别;计算机可以根据不同的数据类型,把数据“合理”地存放到内存中;计算机从内存中读取数据时,也可以根据其数据类型就能确认取到的数据的特征,从而正确地去处理;数据类型树Java语言是强

2020-07-06 21:04:15 94

原创 JavaSE阶段回顾(1)

Java基础阶段回顾Java历史 1991年,SUNMicroSystem公司的JameGosling、BillJoe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件。Oak—>Java:互联网给Java带来新的生机1995年Sun向公众推出Java并引起业界的轰动发展:面向网络应用,类库不断丰富,性能不断提高,应用领域不断拓展。2009年Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有;Java不

2020-07-06 20:42:53 171

空空如也

空空如也

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

TA关注的人

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