java
文章平均质量分 76
鱻焱
这个作者很懒,什么都没留下…
展开
-
int与Integer的区别以及转换
java是面向对象编程的语言,为了能够将这些基本数据类型当成对象操作,java为每个类型都引入了对应的包装类,integer就是int的包装类。1.int是数据基本类型存在栈内,而integer是作为对象存在堆里面的;2.Integer的默认值是null,而int的默认值却是0;3.声明integer的变量需要实例化,而申明int的变量不需要实例化;4.integer是对象,用一个原创 2017-09-26 16:21:10 · 1044 阅读 · 0 评论 -
start()和run()方法的区别
start()和run()方法的区别:1、start方法用来启动相应的线程;2、run方法只是thread的一个普通方法,在主线程里执行;3、需要并行处理的代码放在run方法中,start方法启动线程后自动调用run方法;4、run方法必去是public的访问权限,返回类型为void。...原创 2019-03-04 12:03:19 · 6597 阅读 · 0 评论 -
实现多线程的三种方法
实现多线程的三种方法:1、继承Thread,重写run()方法,调用start()方法启动线程;2、实现Runnable接口,实现run()方法,用new Thread(Runnable target).start()方法启动相应线程;3、实现Callable接口,实现call()方法,而且call()方法有返...原创 2019-03-04 12:15:32 · 522 阅读 · 0 评论 -
volatile关键字的作用
volatile关键字的作用:1、volatile关键字主要用在多线程中,用来修饰变量,保证其在多线程中的可见性,每次读到volatile变量,一定是最新的数据。2、volatile关键字能禁止指令重排序,volatile不能保证之前访问语句的执行顺序,也不能保证之后的访问语句的执行顺序,它只能保证在它执行时,它前面访问语句执行完毕,且结果对它和之后的语句是可见性的...原创 2019-03-04 12:33:29 · 2352 阅读 · 0 评论 -
ThreadLocal的作用是什么
ThreadLocal的作用1、ThreadLocal解决多线程的并发问题,是Thread的局部变量,使用它维护变量,会使该变量的线程提供一个独立的副本,可以独立修改,不会影响其他线程的副本、...原创 2019-03-04 12:59:54 · 3324 阅读 · 0 评论 -
Lock和synchronized的区别
Lock和synchronized的区别1、Lock是接口,而synchronized是java的关键字;2、synchronized发生异常时,自动释放线程占有的锁,不会导致死锁现象的发生;Lock发生异常时,如果没有通过unLock()释放锁,可能会造成死锁现象,使用Lock需要在final...原创 2019-03-04 13:14:34 · 501 阅读 · 0 评论 -
多线程产生死锁的四个必要条件
多线程产生死锁的四个必要条件1、互斥条件:任意时刻一个资源只能给一个进程使用,其他进程若申请一个资源,而该资源被另一进程占有时,则申请者等待直到资源被占有者释放。2、不可剥夺条件:进程所获得的资源在未使用完毕之前,不被其他进程强行剥夺,而只能由获得该资源的进程资源释放。3、请求和保持条件:进程每次申请它所需要的一部分...原创 2019-03-04 19:28:49 · 2139 阅读 · 1 评论 -
JAVA中double和float类型精度丢失
JAVA中double和float类型精度丢失的主要原因: 我们所定义或者获取的double或float型数据其实是十进制的,计算机不能直接进行计算,需要将它转换成二进制才能识别计算;然而在转换成二进制的过程中,我们知道十进制整数转化为二进制(除2取余,逆序排列); 但是如果double和float类型值为小数的时候,十进制小数转二进制小数(乘2取整,顺序...原创 2019-03-12 00:10:36 · 709 阅读 · 0 评论 -
同步与异步的区别
同步:当请求时,需要处理完所有的操作,结果返回到客户端,这个过程中页面出现假死状态,不能有任何其他操作,如果关闭浏览器就会中断程序执行;例如:表单提交。异步:请求时,,后端程序已经进入启动执行状态,不用等待所有操作完成就会响应客户端。例如:ajax请求。...原创 2019-03-13 13:19:04 · 208 阅读 · 0 评论 -
java创建线程池的方式有哪些
1、NewSingleThreadExecutor:创建一个单线程的线程池,只有一个线程工作,保证所有任务的执行顺序按照任务的提交顺序执行;2、NewFixedThreadPool:创建固定大小的线程池,每次提交一个任务就从线程池中拿一个线程,直到线程达到线程池的最大大小。线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程;3、newCach...原创 2019-04-16 17:01:22 · 836 阅读 · 0 评论 -
BIO、NIO与AIO的区别
BIO:同步且阻塞,一个连接一个线程,使用于多线程中,适用连接数少且固定的架构;NIO:同步非阻塞,一个请求一个线程,多使用于单线程或者少量使用于多线程,适用于连接数量多且连接比较短(轻连接)的架构;AIO:异步非阻塞,一个有效请求一个线程,多使用于连接数量多且连接比较长(重连接)的架构;...原创 2019-04-16 17:11:06 · 222 阅读 · 0 评论 -
java实现对象克隆
1、实现Cloneable接口,重写Clone()方法,方法修饰符用public;2、利用序列化,实现Serializable接口;原创 2019-04-16 17:16:29 · 167 阅读 · 0 评论 -
java实现将图片转为base64格式
logoImgUrl = getImgStr(url);//图片链接 public static String getImgStr(String imgFile) { ByteArrayOutputStream data = new ByteArrayOutputStream(); try { // 创建URL...原创 2019-06-14 15:54:25 · 3404 阅读 · 2 评论 -
Spring的七大事务传播行为
1、PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。2、PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。3、PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。4、PROPAGATION_REQUIRES_NEW:新...原创 2019-03-03 16:35:58 · 552 阅读 · 0 评论 -
不通过构造函数如何创建对象?
我们通常创建对象的方式有两种:new一个新的对象;或者是利用反射原理。 然而这两种都是通过构造函数创建对象的。如果不通过构造函数则使用对象的clone()方法,或者是用反序列化。...原创 2019-02-25 16:14:34 · 2270 阅读 · 0 评论 -
java的栈,堆,静态区的理解
栈:主要用来存储定义的变量,对象的引用(不是对象),函数调用的现场,而每个栈中的数据都是私有的,其他栈不能访问。堆:存储对象,一般有程序员释放,如果程序员没有释放,则程序结束后由系统自动回收。静态区:存放静态数据,全局数据和常量原创 2017-09-26 17:21:36 · 502 阅读 · 0 评论 -
引用传递和值传递的区别
引用传递:我们在调用方法时,把实际引用的参数地址传递给了方法中相对应的形式参数,而函数接收的是原始的参数值的内存地址;所以在方法执行中形参和实参内容相同,都指向同一个内存地址,注意的是在方法执行中对引用参数的操作会影响到实际的参数。值传递:调用方法时,实际参数把值传给了对应的形式势参数,函数接收的是原始值的复制,此时内存中出现两个相等的实际参数和形式参数,后续的方法执行中对参数的操作都是针对形原创 2017-09-26 19:50:05 · 623 阅读 · 0 评论 -
String、stringbuffer、Stringbuilder的区别和讲解
String:String可以理解为字符串常量,因为它创建的对象是final修饰的,不能被继承,也不能被改变,所以线程是安全的,如果改变改变了它对象的值,也就相当于创新创建了一个新的对象,把原来的对象释放掉。StringBuilder与StringBuffer都继承自AbstractStringBuilder类,对象可以修改,不会产生新的对象。StringBuffer:字符串变量,对其对象...原创 2017-09-26 20:12:31 · 210 阅读 · 0 评论 -
LinkedList、ArrayList、 Vector的区别和详解
ArrayList:1.数组队列,是基于动态数组的数据结构,实现了可变大小的数组,允许元素null。2.每个ArrayList实例都有一个容量,ArrayList创建对象的时候,会有一个带有参数的构造器,而此参数就是ArrayList的长度,默认长度为10,当数据增加时,原来的长度不够用时,ArrayList就会实现自增长,将会创建一个更大的数组,数组长度为newLength = ol原创 2017-09-29 17:37:45 · 251 阅读 · 0 评论 -
接口与抽象类的区别
抽象类:1.抽象类不能实例化,及不能用new来实例化抽象类。2.抽象类可以包含属性、方法、构造方法,但是构造方法不能用new来实例,只能用来被子类调用。3.抽象类只能用来继承,而且是单继承。4.抽象方法必须被子类实现。5.抽象类实现了规范和具体实现的分离,通过abstract方法定义规范,要求子类必须定义具体实现。6.抽象类中成员可以是private,默认,protecte原创 2017-09-30 13:37:03 · 180 阅读 · 0 评论 -
内部类的理解
内部类的定义: 通常我们把一个类放在另一个类的内部定义称为内部类。内部类的作用: 1.内部类提供了更好的额封装,只能让外部类直接访问,不允许同一个包的其他类直接访问。 2.内部类可以直接访问外部类的私有属性,内部类被当其成外部类的成员,但是外部类不能访问内部类的内部属性。内部类的分类:1.成员内部类(细分为两种):(1).非静态内部类:a.非静态内部类必须寄存在一个原创 2017-10-01 18:41:34 · 235 阅读 · 0 评论 -
java实现图片jpg批量转换成pdf
简单实现jpg图片批量转换成pdf原创 2018-03-28 23:23:03 · 3455 阅读 · 0 评论 -
wait与sleep的区别
1、wait()方法属于Object类,sleep()属于Thread类;2、wait()方法释放cpu给其他线程,自己让出资源进入等待池等待;sleep占用cpu,不让出资源;3、sleep()必须指定时间,wait()可以指定时间也可以不指定;sleep()时间到,线程处于临时阻塞或运行状态;4、wait()方法会释放持有的锁,不然其他线程不能进入同步方法或同步块,从而不能调用no...原创 2018-04-21 01:32:46 · 8008 阅读 · 4 评论 -
notify()和notifyAll()的区别
1、notify()只能唤醒一个wait()线程,然而notifyAll()可以唤醒多个wait()线程;2、两个都必须在synchronized中使用,过程不释放锁;3、当每个线程都有特定锁的时候,只有等待这个锁的线程才能被唤醒,也就是线程2的notify()或notifyAll()不能唤醒线程1的wait();...原创 2019-02-17 00:21:31 · 3110 阅读 · 0 评论 -
spring中涉及的所有设计模式汇总
1、工厂方法模式:spring中的FactoryBean就是典型的工厂方法模式;2、单例:spring中的单例模式提供了全局的访问点BeanFactory,由于Spring的管理是任意的java对象,所以没有从构造器级别去控制单例;3、适配器(Adapter):Spring中aop的处理中,需要拦截器对象,需要适配对应的拦截器对象;4、包装器:Spring中用到的包装器模式在类名上有两...原创 2019-02-17 00:49:54 · 237 阅读 · 0 评论 -
static关键字的几种用法
就我们平常工作中用到的static关键字,静态变量和静态方法比较常见,我总结了一下static的多种用法:1、静态变量:存放在方法区,静态变量是属于类的,只有一个实例化对象,使用方式【类名.变量名】【对象.变量名】。2、静态方法:static方法直接用类名调用。3、静态代码块:用于初始化类,只会执行一次,由于JVM在加载类时会执行静态代码块,静态代码块先于主方法执行。4、静态内部类...原创 2019-02-27 18:50:54 · 856 阅读 · 0 评论 -
get与post的区别
1、get把参数放在url里,而post则是由request body传递参数;2、get方法向url添加数据;url的长度是受限制的(url的最大长度是 2048 个字符),而post没有限制;3、get的请求数据在逗暴露在url上,安全性比post差,容易暴露敏感信息;4、get请求只能进行url编码,而post支持多种编码方式;5、get产生一个TCP数据包;post产生两个...原创 2019-02-25 16:08:13 · 103 阅读 · 0 评论 -
java生成二维码
String shopbase64s = QrCodeUtil.createQrCode(shopUrls);//生成二维码的地址url以下是封装的工具类,可直接使用,所需要的jar包core-3.3.3.jarimport java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream;import ja...原创 2019-06-14 16:26:15 · 483 阅读 · 0 评论