
Java
icankeep
优雅程序猿
展开
-
Java内存模型
Java线程之间的通信由Java内存模型控制,JMM决定了一个线程对共享变量的写入何时对另一个线程可见。从抽象角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程都有一个私有的本地内存,本地内存中存储了该线程以读、写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存、写缓冲区、寄存器以及其他的硬件和编译器优化。JMM通过控制主...原创 2019-05-04 10:58:34 · 179 阅读 · 0 评论 -
变态跳台阶-----牛客网面试题
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。分析关于本题,前提是n个台阶会有一次n阶的跳法。分析如下:f(1) = 1f(2) = f(2-1) + f(2-2) //f(2-2) 表示2阶一次跳2阶的次数。f(3) = f(3-1) + f(3-2) + f(3-3) ......原创 2018-12-18 17:43:20 · 169 阅读 · 0 评论 -
跳台阶-----牛客网面试题
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析当每次只跳一级台阶时,只有一种情况当每次只跳两级台阶时,也是只有一种情况当又跳一级台阶又跳两级台阶时,我们可以假设第一步跳一级台阶,那么后面的所有的跳法为f(n-1)。当第一步跳两级台阶时,后面所有的跳法为f(n-2)。所有的跳法即是f(n-1)+f...原创 2018-12-18 16:54:13 · 216 阅读 · 0 评论 -
Java空格引发的编译错误
int a = 1;a+ = 1;提示错误:Syntax error on tokens, they can be merged to form +=加号和等号之间存在一个空格,这样就会编译不通过,类似的还有:if(a! =1){ //TO DO}提示错误:Syntax error on tokens, they can be merged to form !=...原创 2018-12-18 16:17:42 · 825 阅读 · 0 评论 -
Java中default关键字
default的英文解释就是缺省默认,在接口方法前用default修饰,意思就是方法的默认实现,应该就是这么解释的default这个关键字在接口中修饰方法时,方法就可以有方法体,并且实现这个接口的实现类可以不用实现这个方法,若实现类中实现了这个方法,则覆盖了接口中的方法...原创 2018-12-23 22:46:59 · 704 阅读 · 0 评论 -
Java中数组
Java中数组是一个对象,不是一种原生类,原生类是指基本数据类型(byte,short,int,long,float,double,boolean,char)原创 2018-12-23 22:41:01 · 327 阅读 · 0 评论 -
Java的鲁棒性(Robust)
1,定义Robust:健壮、强壮。在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。2,特点 1)java能检查程序在编译和运行时的错误。java编译器可以查出许多其他语言运行时才能发现的错误。 2)提供自动垃圾收集来进行内存管理,防止程序员再管理内存时容易产生的错误。 3)ja...转载 2018-12-23 22:34:27 · 1483 阅读 · 0 评论 -
Java复制数组的五种方式
参考:https://blog.youkuaiyun.com/u011669700/article/details/79323251 Java中数组复制的几种方式以及数组合并1.Object.clone() 简单直接,只能对源数组完整地复制2.Arrays.copyOf(T[] original, int newLength) 可以只复制源数组中部分元素,但复制的起始位置固定为0...转载 2018-12-23 22:32:46 · 805 阅读 · 0 评论 -
Java设计模式之桥接模式
来源runoob.com桥接模式桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。这种模式涉及到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。我们通过下面的实例来演示桥接模式(Bridge Pattern)的用法。其中,可以...原创 2018-12-18 13:55:00 · 163 阅读 · 0 评论 -
Java后端面试题汇总
1.HTTP协议是什么?2.Cookie和Session介绍一下?3.Cookie和Session详解?4.Cookie和Session区别5.Session表结构怎么设计,储存在哪里?6.Session和Cookie的应用?7.悲观锁和乐观锁的区别8.MyISAM和InnoDB引擎的区别与应用场景 Memory9.事务的四个特征和MySQL的四种隔离...原创 2018-12-19 11:16:33 · 884 阅读 · 0 评论 -
Cookie和Session的区别
1.cookie数据存放在客户的浏览器上,session数据放在服务器上。2.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。3.session会在一定时间内保存在服务器上。当访问增多,会比较影响服务器的性能 考虑到减轻服务器性能方面,应当使用cookie。4.单个cookie保存的数据不能超过4K...原创 2018-12-19 11:34:30 · 191 阅读 · 0 评论 -
Java中CAS
转载自:https://www.cnblogs.com/barrywxx/p/8487444.html在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一...转载 2019-03-12 23:20:24 · 199 阅读 · 0 评论 -
static final修饰的变量不需要将类加载进内存
JAVA的类加载期负责整个生命周期内的class的初始化和加载工作,就虚拟机的规范来说,以下代码会输出什么结果?publicclassTest{publicstaticvoidmain(String[]args){System.out.println(Test2.a);}}classTest2{publicstaticfi...原创 2019-03-08 10:40:18 · 995 阅读 · 1 评论 -
Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
http://www.importnew.com/28263.html原创 2019-03-15 10:32:50 · 193 阅读 · 0 评论 -
接口和抽象类中的成员
一、接口中1、成员变量:public static final修饰,不写也会帮我们加上。2、成员方法:public abstract修饰,不写也会帮我们加上。3、构造方法:接口中不能有构造方法二、抽象类中1. 不能创建抽象类的实例,但有构造方法,用于子类访问父类数据的初始化。2. 抽象类主要是用来作为基类,但是抽象类也可以继承其它普通类或抽象类。3. 抽象成员中可以包含...原创 2019-03-07 14:30:40 · 4075 阅读 · 1 评论 -
Java创建线程的三种方式
1.继承Thread类来创建线程public class Thread1 extends Thread{ private int i; @Override public void run() { for( ;i<100 ;i++) { System.out.println(getName() + ":" + i); } }}2.实现Runnable接口创建线...原创 2019-03-07 13:45:01 · 171 阅读 · 0 评论 -
Java小知识
public class EclipseDemo { public static void main(String[] args) { int n1 = (int)(byte)(char) -1; int n2 = (int)(char)(byte) -1; System.out.println(n1 == n2); //false ...原创 2019-03-08 22:28:50 · 156 阅读 · 0 评论 -
不会引起ConcurrentModification异常的特例
原创 2019-03-06 09:57:50 · 236 阅读 · 0 评论 -
Cookie和Session的实际应用
1.记录登录时间2.网页设置选项3.购物车(cookie+数据库)4.单点登录5.记录每个用户访问数原创 2018-12-19 11:48:26 · 592 阅读 · 0 评论 -
旋转数组的最小数字-----牛客网算法题
这道题很简单,思路就是去找数组中最小的数,常见解法就是遍历数组然后找到最小数就好了,不过这样做可能拿不到offer,遍历数组去找的话时间复杂度是n,虽然也不是很大,但是我们依然需要优化一下,我们可以用二分的办法去找数组的最小值这样做的话时间复杂度可以减小到lgn。如果array[mid]>array[hi],毫无疑问,最小的数一定在右边如果array[mid]==array...原创 2018-12-17 21:22:03 · 186 阅读 · 0 评论 -
运算符>>和>>>的区别
观摩ConcurrentHashMap底层代码的时候看到了这段代码: /** * Returns a power of two table size for the given desired capacity. * See Hackers Delight, sec 3.2 */ private static final int tableSizeFor...原创 2018-12-22 15:26:16 · 1052 阅读 · 0 评论 -
Java中final变量
当final用来修饰变量时:主要分为两种情况:1.用final修饰基本数据类型2.用final修饰引用数据类型第一种情况,修饰基本数据类型,这时参数的值在方法体内是不能被修改的,即不能被重新赋值。否则编译就不通过。第二种情况,修饰引用类型。这时参数变量所引用的对象是不能被改变的。但是对于引用数据类型,如果修改其属性的话是完全可以的。Java中final变量在声明时必须初始化...原创 2018-12-22 14:58:00 · 649 阅读 · 1 评论 -
深刻理解双重检查锁定(double-checked locking)与单例模式
https://blog.youkuaiyun.com/gangjindianzi/article/details/78689713原创 2018-12-19 23:32:16 · 236 阅读 · 0 评论 -
HashMap实现原理及源码分析
作者: dreamcatcher-cx出处: <http://www.cnblogs.com/chengxiao/>HashMap实现原理及源码分析 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要...转载 2018-12-19 22:48:25 · 208 阅读 · 0 评论 -
使用windowbuilder出现的问题
报错:Eclipse is running under 0, but this Java project has a 1.8 Java compliance我的eclipse版本是4.7,一开始载的事4.7版本的windowbuilder如图对应的Oxygen,结果报上面的错误,还以为是jdk版本太高了,调低了版本还是不行,然后找了一些资料,将windowbuilder的版本改为4.8的就可以...原创 2018-06-13 00:50:34 · 10106 阅读 · 0 评论 -
MyBatis中@Param注解
直接上代码//UserMapper.java//高级查询List <User> query(@Param("qo")UserObjectQuery qo);//UserMapper.xml<select id="query" resultType="User"> SELECT id,name,sn,deptid FROM t_user <...原创 2018-06-03 17:41:43 · 438 阅读 · 0 评论 -
JavaBean和Map的相互转换-Java基础加强
涉及内容:Java反射机制:https://blog.youkuaiyun.com/sinat_38259539/article/details/71799078JavaBean规范:https://blog.youkuaiyun.com/zdwzzu2006/article/details/5151788/Java内省机制:https://blog.youkuaiyun.com/hahalzb/article/details/59...原创 2018-05-16 13:26:49 · 4038 阅读 · 0 评论 -
DOM4J-具体实现
转自:https://dom4j.github.io/Parsing XMLOne of the first things you'll probably want to do is to parse an XML document of some kind. This is easy to do in <dom4j>. The following code demonstrates ...转载 2018-05-18 12:33:56 · 212 阅读 · 0 评论 -
JUnit中断言用法
转自:https://blog.youkuaiyun.com/ma18845639852/article/details/53115075为什么需要单元测试在开发软件的过程中,用户需要实际运行所编写的代码以确保程序的正确性。当软件变得越来越大,再去添加新的功能或做一些新的改动时,就很容易带来新的问题,甚至会使程序无法正常运行。然而要手动的运行代码,测试代码的可行性也是非常枯燥以及非常耗费时间的事情。为了减少这...转载 2018-05-17 21:09:28 · 297 阅读 · 0 评论 -
模拟JUnit
package com.passer.junit4;/* * JUnit测试单元 */public class JUnit4{ @MyBefore public void before() throws Exception{ System.out.println("before..."); } @MyAfter public void after() throws Exce...原创 2018-05-17 20:07:14 · 290 阅读 · 0 评论 -
自动拆装箱底层代码和出错细节
代码public class IntegerAutoToBox { public static void main(String[] args) { Integer i1 = 128; int i2 = 128; Integer i3 = 128; Integer i4 = -128; Integer i5 = -128; int i6 = -128; S...原创 2018-12-20 00:16:35 · 249 阅读 · 0 评论 -
Comparable和Comparator的区别
Comparable是什么?java.langInterface Comparable参数类型T - 可以将此对象与之进行比较的对象类型public interface Comparable该接口对实现它的每个类的对象强加一个整体排序。 这个排序被称为类的自然排序 ,类的compareTo方法被称为其自然比较方法 。Collections.sort (和Arrays.sort )可以自...原创 2018-12-14 18:31:31 · 189 阅读 · 0 评论 -
HashMap和Hashtable的fail-fast机制
如果需要在迭代过程中修改删除HashMap或者Hashtable中的数据,需要使用Iterator迭代器,Hashtable中也可以使用Enumeraction来迭代。HashMap正常迭代代码: @Test public void testHashMapIterator() throws Exception { Map<String,String> ...原创 2018-12-22 00:34:27 · 1054 阅读 · 0 评论 -
Java中的真数组和伪数组
提供一篇博客解释js中的伪数组js的伪数组原地址:https://segmentfault.com/q/1010000004436065?_ea=608498我的理解:ADT(abstract data type)数据抽象类型:一个数据模型及定义在该模型上的一组运算。数组是一种抽象的数据类型,Java中数组是对象,它所包含的数据在内存中是连续排列的,并且你可以对数组进行一系列的操作。...转载 2018-12-21 23:37:54 · 406 阅读 · 0 评论 -
LinkedList和ArrayList的区别
查阅JavaAPI文档:LinkedList继承体系如下java.utilClass LinkedList&lt;E&gt;java.lang.Objectjava.util.AbstractCollection&lt;E&gt;java.util.AbstractList&lt;E&gt;java.util.AbstractSequentialList&lt;E&g原创 2018-12-16 13:33:48 · 202 阅读 · 0 评论 -
Java中引用类型和基本数据类型初始化后的默认值
Java中引用类型初始化后未赋值之前的值为null基本数据类型byteshortintlongbooleancharfloatdoubleimport java.util.Arrays;public class Test { public static byte byte1; public static short s; public static int i; ...原创 2018-12-15 21:58:13 · 2915 阅读 · 0 评论 -
写一个函数实现String类型转int(Momenta电话面试)
面试官要求:表述清楚,让我和看到代码一样一开始听到题目以为挺简单的,后面说了自己的方案,然后面试官说少了很多异常处理,后面面试结束亲自看了一下源码,发现底层实现(String.valueOf())加了很多异常处理。1.函数传入参数需要转化的String str,以及字符串数字的进制数int radix2.判断字符串是否为空3.判断进制数是否超出进制数的最小范围(Java中Chara...原创 2018-12-20 23:02:27 · 604 阅读 · 0 评论 -
Hashtable和HashMap的区别
HashMap 与HashTable的区别HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源,特性,算法等多个方面进行对比总结。力争多角度,全方位的展示二者的不同,做到此问题的终结版。1 作者Hashtable的作者:HashMap的作者:Hash Map的作者比Hashtable的作者多了著名顶...转载 2018-12-15 18:41:00 · 231 阅读 · 0 评论 -
Java中的访问权限修饰符和非访问修饰符
原创 2018-12-15 18:24:15 · 331 阅读 · 0 评论 -
Java中的基本注解(包括元注解)
参考:https://blog.youkuaiyun.com/jack_chen_00/article/details/37610071Annotation 从JDK 1.5开始,Java增加了对元数据(MeteData)的支持,也就是annotation(注释),这种Annotation与前面讲的注释有一定的却别,它是代码一种特殊的标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过...原创 2018-05-17 11:17:57 · 1168 阅读 · 0 评论