![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
知识点积累
文章平均质量分 54
你是我的海啸
I hate void
展开
-
sleep()和wait()方法的区别有哪些?
答:以下几点:sleep是Thread类的方法,wait是Object类的方法。sleep可以用在任意方法中,wait只能用在同步方法或同步块中。 sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。sl...原创 2018-03-12 13:41:52 · 1153 阅读 · 0 评论 -
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
是值传递。Java语言的方法调用只支持参数的值传递。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的属性可以在被调用过程中被改变,但对对象引用的改变是不会影响到调用者的。C++和 C#中可以通过传引用或传输出参数来改变传入的参数的值。说明:Java中没有传引用实在是非常的不方便,这一点在 Java 8 中仍然没有得到改进,正是如此在 Java 编写的代码中才会出现大量...原创 2018-03-12 16:19:41 · 429 阅读 · 0 评论 -
重载(overload)和重写(override)的区别?重载的方法能否根据返回类型进行区分?
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。方...原创 2018-03-13 08:22:04 · 668 阅读 · 0 评论 -
char 型变量中能不能存储一个中文汉字,为什么?
char 类型可以存储一个中文汉字,因为Java中使用的编码是 Unicode(不选择任何特定的编码,直接使用字符在字符集中的编号,这是统一的唯一方法),一个char 类型占 2 个字节(16 比特),所以放一个中文是没问题的。补充:使用Unicode意味着字符在JVM内部和外部有不同的表现形式,在JVM内部都是 Unicode,当这个字符被从JVM内部转移到外部时(例如存入文件系统中),需要进行...原创 2018-03-13 08:33:17 · 5236 阅读 · 0 评论 -
抽象的(abstract)方法是否可同时是静态的(static), 是否可同时是本地方法(native),是否可同时被synchronized?
都不能。抽象方法需要子类重写,而静态的方法是无法被重写的,因此二者是矛盾的。本地方法是由本地代码(如C 代码)实现的方法,而抽象方法是没有实现的,也是矛盾的。synchronized 和方法的实现细节有关,抽象方法不涉及实现细节,因此也是相互矛盾的。...原创 2018-03-13 08:40:33 · 3000 阅读 · 0 评论 -
阐述静态变量和实例变量的区别?
静态变量: 是被static 修饰符修饰的变量,也称为类变量,它属于类,不属于类的任何一个对象,一个类不管创建多少个对象,静态变量在内存中有且仅有一个拷贝;实例变量: 必须依存于某一实例,需要先创建对象然后通过对象才能访问到它。静态变量可以实现让多个对象共享内存。...原创 2018-03-13 08:45:53 · 2468 阅读 · 0 评论 -
Java中实现多态的机制是什么?
靠的是父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。...原创 2018-03-13 08:53:39 · 662 阅读 · 0 评论 -
Math.round(11.5)等于多少?Math.round(- 11.5) 又等于多少?
Math.round(11.5)的返回值是 12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加 0.5然后进行取整。原创 2018-03-13 09:03:22 · 853 阅读 · 0 评论 -
什么情况下用“+”运算符进行字符串连接比调用StringBuffer/StringBuilder 对象的append方法连接字符串性能更好?
字符串是Java程序中最常用的数据结构之一。在Java中String类已经重载了"+"。也就是说,字符串可以直接使用"+"进行连接,如下面代码所示:]String s = "abc" + "ddd";但这样做真的好吗?当然,这个问题不能简单地回答yes or no。要根据具体情况来定。在Java中提供了一个StringBuilder类(这个类只在J2SE5及以上版本提供,以前的版本使用String...原创 2018-03-13 09:37:12 · 12371 阅读 · 6 评论 -
两个对象值相同(x.equals(y) == true),但却可有不同的hashCode,这句话对不对?
不对,如果两个对象x 和 y 满足 x.equals(y) == true,它们的哈希码(hashCode)应当相同。Java 对于eqauls 方法和 hashCode 方法是这样规定的:(1)如果两个对象相同(equals 方法返回 true),那么它们的hashCode 值一定要相同;(2)如果两个对象的 hashCode 相同,它们并不一定相同。当然,你未必要按照要求去做,但是如果你违背了...原创 2018-03-12 16:09:56 · 6758 阅读 · 1 评论 -
如何跳出当前的多重嵌套循环?
在最外层循环前加一个标记如A,然后用 break A;可以跳出多重循环。(Java 中支持带标签的break和continue 语句,作用有点类似于 C 和 C++中的 goto 语句,但是就像要避免使用 goto 一样,应该避免使用带标签的 break 和 continue,因为它不会让你的程序变得更优雅,很多时候甚至有相反的作用)。...原创 2018-03-12 16:05:27 · 909 阅读 · 1 评论 -
foreach与正常for循环效率对比。
答案: 可以看出,循环ArrayList时,普通for循环比foreach循环花费的时间要少一点; 循环LinkList时,普通for循环比foreach循环花费的时间要多很多。 当我将循环次数提升到一百万次的时候,循环ArrayList,普通for循环还是比foreach要快一点; 但是普通for循环在循环LinkList时,程序直接卡死。...原创 2018-03-12 13:42:20 · 3467 阅读 · 0 评论 -
反射的作用与原理
(1)概念反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。(2)功能反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代...原创 2018-03-12 13:42:44 · 4146 阅读 · 0 评论 -
jdk1.8新添内容
一、接口的默认方法与静态方法。也就是接口中可以有实现方法;并且接口也可以有静态方法,工具类也可以使用接口来实现;二、Lambda 表达式。简化了代码,实际上是函数式接口的简化函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口。比如Java标准库中的java.lang.Runnable和 java.util.Compa...原创 2018-03-12 13:43:20 · 633 阅读 · 1 评论 -
jdk1.7新添内容
Boolean类型反转,空指针安全,参与位运算Boolean Booleans.negate(Boolean booleanObj)True => False , False => True, Null => Nullboolean Booleans.and(boolean[] array)boolean Booleans.or(boolean[] array)boolean B...原创 2018-03-12 13:43:50 · 168 阅读 · 0 评论 -
Java设计模式思想(单列模式,工厂模式,策略模式,共23种设计模式)
a) 单例模式:单例模式核心只需要new一个实例对象的模式, 比如数据库连接,在线人数等,一些网站上看到的在线人数统计就是通过单例模式实现的, 把一个计时器存放在数据库或者内存中,当有人登陆的时候取出来加一再放回去, 有人退出登陆的时候取出来减一再放回去, 但是当有两个人同时登陆的时候,会同时取出计数器,同时加一,同时放回去,这样的话数据就会错误, 所以需要一个全局变...原创 2018-03-12 13:44:10 · 1111 阅读 · 0 评论 -
匿名内部类使用的参数为什么要是final的?
答案:因为你得到的参数实际上是拷贝而来的 1.形参为什么要拷贝一份: 不拷贝的话,匿名内部类中使用的引用与外部的引用是同一份引用, 但是这个引用的生命周期与函数相同,若匿名内部类的生命周期超过这个函数的话(比如新开了一个线程), 再去访问这个引用会有空指针等问题。2.形参为什么是final 从我们的角度来看,是看不到这个拷贝的过程。我们看到匿名内部类直接使用了这个引用,会造...原创 2018-03-12 13:44:35 · 835 阅读 · 0 评论 -
oracle杀掉进程
1.先看一下数据库中那些表被锁住了。 select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id=a.object_id; 2.查询引起锁定的回话,得到sid select b.username,b....原创 2018-03-12 13:57:19 · 4284 阅读 · 0 评论 -
如何理解clone对象?
1 为什么要用clone?在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B 任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在Java语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效...原创 2018-03-12 15:57:31 · 1241 阅读 · 0 评论 -
& 和 && 的区别
&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是 true 整个表达式的值才是 true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&...原创 2018-03-12 16:03:54 · 206 阅读 · 0 评论 -
Java中的日期和时间
1.如何取得年月日、小时分钟秒?Calendar cal = Calendar.getInstance();System.out.println(cal.get(Calendar.YEAR));System.out.println(cal.get(Calendar.MONTH)); // 0 - 11System.out.println(cal.get(Calendar.DATE));Sy...原创 2018-03-13 11:02:06 · 706 阅读 · 0 评论 -
数据类型转换方面
1.short s1 = 1; s1 = s1 + 1; 有错吗? short s1 = 1; s1 += 1有错吗? 前者不正确,后者正确。对于short s1 = 1; s1 = s1 + 1;由于1是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给short型。 而 short s1 = 1; s1 += 1;可以正确编译,因为 s1+=...原创 2018-03-13 11:10:42 · 123 阅读 · 0 评论 -
IO方面
1.Java中有几种类型的流? 按照流的方向:输入流(inputStream)和输出流(outputStream)。 按照实现功能分:节点流(可以从或向一个特定的地方(节点)读写数据。如FileReader)和处理流(是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他...原创 2018-03-13 11:32:10 · 158 阅读 · 0 评论 -
Nginx总结
工作中用到了Nginx了,抽空写一下总结自己的学习成果。1.Nginx常用功能1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。下面这张图就解释啥意思了。Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又...原创 2018-08-20 15:47:18 · 197 阅读 · 0 评论 -
为什么阿里巴巴禁止工程师直接使用日志系统(Log4j、Logback)中的 API
作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用。很多时候,日志可能是我们了解应用程序如何执行的唯一方式。所以,日志在Java Web应用中至关重要,但是,很多人却以为日志输出只是一件简单的事情,所以会经常忽略和日志相关的问题。在接下来的几篇文章中,我会来介绍介绍这个容易被大家忽视,但同时也容易导致故障的知识点。Java语言之所以强大,就是因为他很成熟的生...原创 2018-12-27 15:31:41 · 151 阅读 · 0 评论 -
简要说一下final关键字,final可以用来修饰什么?
final可以修饰类、方法、成员变量 当final修饰类的时候,说明该类不能被继承 当final修饰方法的时候,说明该方法不能被重写 在早期,可能使用final修饰的方法,编译器针对这些方法的所有调用都转成内嵌调用,这样提高效率(但到现在一般我们不会去管这事了,编译器和JVM都越来越聪明了) 当final修饰成员变量时,有两种情况: 如果修...原创 2019-02-25 16:32:03 · 18754 阅读 · 1 评论 -
某个场景下一定要将变量声明为final,否则会出现编译不通过的情况。为什么要这样设计?为什么仅仅针对方法中的参数限制final,而访问外部类的属性就可以随意?
在编写匿名内部类的时候就可能会出现这种情况,匿名内部类可能会使用到的变量: 外部类实例变量 方法或作用域内的局部变量 方法的参数 class Outer { // string:外部类的实例变量 String string = ""; //ch:方法的参数 void outerTest(final char ch) { ...原创 2019-02-25 16:42:01 · 424 阅读 · 0 评论 -
三个线程分别打印A,B,C,要求这三个线程一起运行,打印n次,输出形如“ABCABCABC….”的字符串。
public class PrintABCUsingSemaphore { private int times; private Semaphore semaphoreA = new Semaphore(1); private Semaphore semaphoreB = new Semaphore(0); private Semaphore semaphoreC...原创 2019-02-25 16:47:47 · 1741 阅读 · 0 评论 -
如果在多线程环境下使用HashMap会有什么现象发生呢??G1和CMS?HTTP幂等性?几条常见解决重复提交的方案?
put()的时候导致的多线程数据不一致(丢失数据) resize()操作会导致环形链表 jdk1.8已解决环链的问题(声明两对指针,维护两个连链表) fail-fast机制,对当前HashMap同时进行删除/修改会抛出ConcurrentModificationException异常 G1收集器的设计目标是取代CMS收集器,它同CMS相比,在以下方面表现...原创 2019-02-26 08:15:48 · 585 阅读 · 0 评论 -
JAVA常见面试题(下)
十、Spring/Spring MVC90. 为什么要使用 spring?spring 提供 ioc 技术,容器会帮你管理依赖的对象,从而不需要自己创建和管理依赖对象了,更轻松的实现了程序的解耦。 spring 提供了事务支持,使得事务操作变的更加方便。 spring 提供了面向切片编程,这样可以更方便的处理某一类的问题。 更方便的框架集成,spring 可以很方便的集成其他框架,比...原创 2019-07-01 10:13:07 · 1583 阅读 · 0 评论 -
JAVA常见面试题(上)
一、Java 基础1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Java...原创 2019-03-08 16:38:35 · 2957 阅读 · 2 评论 -
大型网站系统架构你不得不懂的10个问题
1. 你使用过哪些组件或者方法来提升网站性能,可用性以及并发量提高硬件能力、增加系统服务器。(当服务器增加到某个程度的时候系统所能提供的并发访问量几乎不变,所以不能根本解决问题) 使用缓存(本地缓存:本地可以使用JDK自带的 Map、Guava Cache.分布式缓存:Redis、Memcache.本地缓存不适用于提高系统并发量,一般是用处用在程序中。比如Spring是如何实现单例的呢?大家...原创 2019-03-08 16:42:45 · 2784 阅读 · 0 评论 -
dorado总结
dorado代码积累1.编写AjaxAction的onSuccess函数:dorado.MessageBox.alert(self.get("returnValue"));2.dialog开启关闭:view.get("#dialog").show();view.get("#dialog").hide();3.获取dataset当前数据。给htmlContainer赋值。...原创 2018-07-18 14:33:50 · 1102 阅读 · 0 评论 -
两个tomcat调节配置
两个tomcat7要放在不同的安装文件夹下。一个安装版的tomcat7,在webapps下面复制打包的war项目(针对maven项目)或者加载的类(web项目)一个解压版的tomcat7,在myeclipse中配置该tomcat,把项目部署在这个tomcat下即可。另外还需要修改端口号:三处位置 <!--- <Server port="8005" shutdown="SHUTDOW...原创 2018-05-04 21:19:14 · 171 阅读 · 0 评论 -
集合方面
1.HashMap排序题,上机题。 已知一个HashMap集合, User有name(String)和age(int)属性。请写一个方法实现对HashMap的排序功能,该方法接收HashMap为形参,返回类型为HashMap,要求对HashMap中的User的age倒序进行排序。排序时key=value键值对不得拆散。注意:要做出这道题必须对集合的体系结构非常的熟悉。HashMap本身就是不...原创 2018-03-13 14:58:36 · 223 阅读 · 0 评论 -
多线程和并发库相关
(一)多线程基础知识--传统线程机制的回顾 (1)传统使用类Thread和接口Runnable实现 1.在Thread子类覆盖的run方法中编写运行代码new Thread(){ @Override public void run(){ while(true){ try { Thread.sle...原创 2018-03-14 08:42:53 · 2082 阅读 · 0 评论 -
内部类相关
1. 静态嵌套类(Static Nested Class) 和内部类(Inner Class)的不同?静态嵌套类:Static Nested Class 是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。内部类:需要在外部类实例化后才能实例化,其语法看起来挺诡异的。2. 下面的代码哪些地方会产生编译错误?class Outer { class Inner { } ...原创 2018-03-14 15:01:50 · 173 阅读 · 0 评论 -
反射与代理
1. 说说你对Java中反射的理解 Java中的反射首先是能够获取到Java中要反射类的字节码,获取字节码有三种方法, 1.Class.forName(className) 2.类名.class 3.this.getClass()。然后将字节码中的方法,变量,构造函数等映射成相应的Method、Filed、Constructor等类,这些类提供了丰富的方法可以被我们所使...原创 2018-03-14 15:15:39 · 214 阅读 · 0 评论 -
设计模式
1.你所知道的设计模式有哪些?Java中一般认为有23种设计模式,我们不需要所有的都会,但是其中常用的几种设计模式应该去掌握。下面列出了所有的设计模式。需要掌握的设计模式我单独列出来了,当然能掌握的越多越好。总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、...原创 2018-03-14 16:05:32 · 118 阅读 · 0 评论 -
JVM垃圾回收机制和常见算法
理论上来讲Sun公司只定义了垃圾回收机制规则而不局限于其实现算法,因此不同厂商生产的虚拟机采用的算法也不尽相同。GC(Garbage Collector)在回收对象前首先必须发现那些无用的对象,如何去发现定位这些无用的对象?常用的搜索算法如下:1)引用计数器算法(废弃)引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候...原创 2018-03-14 16:13:07 · 199 阅读 · 0 评论