精华内容
下载资源
问答
  • 首先申明本人小白一枚。 最近遇到一个问题就是popupWindow显示之后点击外部不能退出,点击返回键也不行,纠结了老半天都找不到问题,百度也没找到,要么说设置setBackgroundDrawable问也没成功。。 然后无奈只能...

    首先申明本人小白一枚。

    最近遇到一个问题就是popupWindow显示之后点击外部不能退出,点击返回键也不行,纠结了老半天都找不到问题,百度也没找到,要么说设置setBackgroundDrawable问也没成功。。

    然后无奈只能百度找demo从新写个又没有问题最后才发现是setBackgroundDrawable的问题,setBackgroundDrawable要在new了popup之后今早的设置,不然就没得用了,


    我原版是这样写得点击外面显示不了,然后把setBackgroundDrawable写到前面


    这样就没有问题了~还有setBackgroundDrawable里面的数值好像也没什么作用随便写。

    展开全文
  • 很多小伙伴不知道是不是跟我一样,每天坚持在Hadoop的坑里苟且偷生,苟延残喘,既爬不出去,又不能放弃,所以就只能天天穿梭于百度,Google...但是本人配置完成之后 hadoop version的结果是: 但是分别用IDEA和Ec...

    很多小伙伴不知道是不是跟我一样,每天坚持在Hadoop的坑里苟且偷生,苟延残喘,既爬不出去,又不能放弃,所以就只能天天穿梭于百度,Google,CSDN等各大网站。人啊,多么的悲惨。。。。。
    很多人在网上看到了hadoop的远程搭建(VMare为主),本地IDEA或者Eclipse连接并写代码,此处再不赘述。但是本人配置完成之后
    hadoop version的结果是:

    在这里插入图片描述
    但是分别用IDEA和Eclipse写测试代码时却报如下错误:

    在这里插入图片描述
    解决办法是:在主函数开始时添加如下代码:

    	System.setProperty("hadoop.home.dir", "F:\\Hadoop\\hadoop-2.7.2");
    

    上述的F:\***\ \ 是你的hadoop的文件位置,不需要指出到bin目录下。

    展开全文
  • 本人的春招就告一段落了,也找到了理想的工作,特分享一下自己整理的资料来做成的一个面经(都是本人亲自经历过的面试题),用于自己以后的学习和进步,由于都是网上搜集而来如有错误,望各位指正。并且会实时更新。...

    本人的春招就告一段落了,也找到了理想的工作,特分享一下自己整理的资料来做成的一个面经(都是本人亲自经历过的面试题),用于自己以后的学习和进步,由于都是网上搜集而来如有错误,望各位指正。并且会实时更新。。。 PS:如果想知道每个公司问我的什么可以私聊我。

    目录

    1、final关键字

    2、传参方式

    3、抽象类和接口的区别

    4、This与super

    5、Try..catch..finally中return的执行顺序

    6、Exception与error

    7、Int与Integer的区别、自动封箱与自动装箱

    8、OOP

    9、String、StringBuffer与StringBuilder的区别以及应用

    10、重载和重写的区别?

    11、聚合与组合的关系

    12、HashMap与ConcurrentHashMap、HashTable的区别

    13、ArrayList与LinkedList和vector的区别

    14、LinkedHashMap

    15、HashSet

    16、TreeMap


    1、final关键字

    Final修饰的变量无法被修改,如果修饰引用,表示引用不可变,引用的指向的内容可变

    Final修饰的方法无法被重写

    Final修饰的类无法被继承

    Final修饰的常量会在编译阶段分配空间初始化放入到常量池中。

    Final修饰的属性必须得有值。

    Final修饰的变量引用,子类可以使用

    2、传参方式

    值传递:八种基本数据类型和String

    引用传递:除String以外的所有复合数据类型,包括数组、类和接口

    3、抽象类和接口的区别

    抽象类是用来捕捉子类的通用特性的,而接口则是抽象方法的集合。抽象类不能被实例化,只能被用作子类的超类,是被用来创建继承层级里子类的模板,而接口只是一种形式,接口自身不能做任何事情。

    抽象类abstract和接口interface都不能够实例化,但可以定义抽象类和接口类型的引用。 一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。

    4、This与super

    在这里插入图片描述

    This:this是当前对象的引用,就是说当前用构造函数建的对象是谁,这个this就代表谁它是一个引用。另外一个问题,如果构造函数想调用另一个构造函数该怎么办呢?这个时候就需要使用this()了。如果在构造函数里调用其他重载的构造函数时,则被调用的那个构造函数必须放在代码的第一行。

    Super:super仅仅只是指向了子类从父类继承的成员变量和方法,构造函数里默认的都有一个隐式的super();去调用父类无参的构造,如果想显式调用,则调用父类的supper(xxx) 必须放在第一行

    5、Try..catch..finally中return的执行顺序

    1. 不管有木有出现异常,finally块中代码都会执行;
      2)当try和catch中有return时,finally仍然会执行;
      3)finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
      4)finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

    举例:
    情况1:try{} catch(){}finally{} return;
                显然程序按顺序执行。
    情况2:try{ return; }catch(){} finally{} return;
              程序执行try块中return之前(包括return语句中的表达式运算)代码;
             再执行finally块,最后执行try中return;
             finally块之后的语句return,因为程序在try中已经return所以不再执行。
    情况3:try{ } catch(){return;} finally{} return;
             程序先执行try,如果遇到异常执行catch块,
             有异常:则执行catch中return之前(包括return语句中的表达式运算)代码,再执行finally语句中全部代码,最后执行catch块中return. finally之后也就是4处的代码不再执行。
             无异常:执行完try再finally再return.
    情况4:try{ return; }catch(){} finally{return;}
              程序执行try块中return之前(包括return语句中的表达式运算)代码;
              再执行finally块,因为finally块中有return所以提前退出。
    情况5:try{} catch(){return;}finally{return;}
              程序执行catch块中return之前(包括return语句中的表达式运算)代码;
              再执行finally块,因为finally块中有return所以提前退出。
    情况6:try{ return;}catch(){return;} finally{return;}
              程序执行try块中return之前(包括return语句中的表达式运算)代码;
              有异常:执行catch块中return之前(包括return语句中的表达式运算)代码;
                           则再执行finally块,因为finally块中有return所以提前退出。
              无异常:则再执行finally块,因为finally块中有return所以提前退出。

    6、Exception与error

    Error 类型的错误通常为虚拟机相关错误,如系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,JAVA 应用程序也不应对这类错误进行捕获,一旦这类错误发生,通常应用程序会被终止,仅靠应用程序本身无法恢复;

    Exception 类的错误是可以在应用程序中进行捕获并处理的,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行。

    Exception又分为编译时异常和运行时异常

    运行时异常:编译器不会去检查它,如IndexOutOfBoundException、fail-fast机制的ConcurrentModificationException、NullPointerException等

    编译时异常:Exception类本身及其子类除了运行时异常外的其他子类都是编译时异常,Java编译器会检查它,此类异常通过throws抛出异常或者try..catch捕获异常,否则不能通过编译。如IOException、FileNotFoundException、SQLException

    7、Int与Integer的区别、自动封箱与自动装箱

    Int属于Java八大基本数据类型(byte、short、int、long、float、double、char、boolean),默认初始值为0,int直接存储数据值。

    Integer属于引用数据类型,是int的包装类,必须要实例化后才能使用,默认初始值为null,integer实际是对象的引用,指向new的integer对象,当给integer对象赋int值时,调用valueOf方法。

    1)Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的。

    2)Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(自动拆箱)

    3)非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。因为非new生成的Integer变量指向的是静态常量池中cache数组中存储的指向了堆中的Integer对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的对象引用(地址)不同。

    4)对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false(自动装箱时对于在-128~127之内的数值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象)

    两者可以通过自动封箱,自动装箱机制进行转换

    自动装箱:将基本数据类型重新转化为对象。

    自动拆箱:将对象重新转化为基本数据类型。

    8、OOP

    面向对象编程:是“万物皆对象”——我们可以尽可能的发挥想象,把现实中的物(包括动物、人物、甚至无生命的事物)抽象为一种计算机语言(比如 Java)能懂的模型

    OOP核心思想:封装,继承,多态。

    1)封装,每个类(对象的模板)可以自由地定义属性和方法,使其有别于其他的类。封装可以隐藏对象的内部细节,使其对外形成一道边界,只保留有限的属性和方法与其他对象进行交互。封装的原则是使对象以外的部分不能随意的访问和操作对象的内部属性,从而避免了外界对对象内部属性的破坏。

    2)继承,子类可以轻松地复用父类的代码(非 private 修饰的属性和方法),只需要一个关键字——extends。如果父类的属性不满足子类的需求,可以追加;如果父类的方法不满足子类的需求,可以覆盖。

    3)多态,父类中定义的方法被子类继承之后,可以表现出不同的行为。这使得同一个方法在父类及其各个子类中具有不同的语义。

    9、String、StringBuffer与StringBuilder的区别以及应用

    String 字符串常量
    StringBuffer 字符串变量(线程安全)
    StringBuilder 字符串变量(非线程安全)
      String 和 StringBuffer 的主要性能区别在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
     而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。字符串对象经常改变的情况下使用。而在某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的:
     String S1 = “This is only a” + “ simple” + “ test”;
     StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
     你会很惊讶的发现,生成 String S1 对象的速度简直太快了,而这个时候 StringBuffer 居然速度上根本一点都不占优势。其实这是 JVM 的一个把戏,在 JVM 眼里,这个
     String S1 = “This is only a” + “ simple” + “test”; 其实就是:
     String S1 = “This is only a simple test”; 所以当然不需要太多的时间了。但大家这里要注意的是,如果你的字符串是来自另外的 String 对象的话,速度就没那么快了,譬如:
    String S2 = “This is only a”;
    String S3 = “ simple”;
    String S4 = “ test”;
    String S1 = S2 +S3 + S4;
    这时候 JVM 会规规矩矩的按照原来的方式去做


    StringBuffer
    Java.lang.StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
    可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。
    StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。

    java.lang.StringBuilde
    java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

     String 重写了 Object 的 equals 方法,把引用比较改成了值比较

    10、重载和重写的区别?

    方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

    重载:发生在同一个类中,方法名相同参数列表不同(参数类型不同、个数不同、顺序不同),与方法返回值和访问修饰符无关,即重载的方法不能根据返回类型进行区分

    重写:发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类(里氏代换原则);如果父类方法访问修饰符为private则子类中就不是重写。

    11、聚合与组合的关系

    聚合关系(Aggregation)体现的是A对象可以包含B对象,但B对象不是A对象的组成部分。具体表现为,如果A由B聚合成,表现为A包含有B的全局对象,但是B对象可以不在A创建的时刻创建。

    组合关系(Composition):如果A由B组成,表现为A包含有B的全局对象,并且B对象在A创建的时刻创建。

    现实生活中,人和人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系

    12、HashMap与ConcurrentHashMapHashTable的区别

      HashMap是一个使用Entry对象用于存储Key-Value键值对的集合,实现了Map、Cloneable、Serializable不是线程安全的(多个线程对一个集合的内容进行操作时,会抛出ConcurrentModification异常,产生fail-fast事件)HashMap的底层数据结构是散列表,即数组+链表+红黑树(JDK1.8之前是数组+链表,当链表数量超过8时变为红黑树,小与6变为链表)。

    HashMap的初始容量为16,必须得是2的n次幂(这是因为在进行Hash函数映射时取模运算时采用了的是位运算 index=HashCode(key)& (length-1)的方法,这样就可以提交计算效率,还可以使Hash算法均匀分布的原则),加载因子为0.75,当HashMap的数量 >= 容量*加载因子时,一次扩容两倍(扩容之后会新建一个两倍的空数组,遍历原数组会rehash,因为长度扩大hash规则改变,即重新进行hash运算,但是在多线程并发插入元素的时候,有可能会导致链表有环,造成下一次读操作的死循环)。HashMap的插入和查找方法,具体是通过hash运算得到hash值作为插入位置的参数,当插入数组hash碰撞时,采用链表头插法的方式解决。

      ConcurrentHashMap是线程安全的,它一个二级的哈希表,在一个总的哈希表下面,有若干个哈希表,即segment,segment本身相当于一个HashMap对象,segments初始化为长度为16的数组。segment包含一个Hashentry数组,有2的n次方个segment在segments数组中,采用了分段锁的技术实现了高度自治,segment之间互不影响,每个segment都是有一把锁的,不同的segment是可以并发写入的,同一个segment的写和读可以并发执行,但是同一个segment的并发写入是需要上锁的,进行阻塞。

    读取操作对key做Hash运算,得到hash值定位到Segment对象,再通过hash值,定位到Segment当中的数组具体位置。

    写入操作对key做Hash运算,得到hash值定位到Segment对象,获取可重入锁,定位到Segment当中的数组具体位置,插入或覆盖HashEntry对象,释放锁

    Size:在不上锁的前提逐个Segment计算3次size,如果某相邻两次计算获取的所有Segment的更新次数(每个Segment都与HashMap一样通过modCount跟踪自己的修改次数,Segment每修改一次其modCount加一)相等,说明这两次计算过程中无更新操作,则这两次计算出的总size相等,可直接作为最终结果返回。如果这三次计算过程中Map有更新,则对所有Segment加锁重新计算Size

    在jdk1.8中ConcurrentHashMap 是基于CAS+Node+Synchronized来保证并发安全put方法和remove方法都会通过addCount方法维护Map的size。size方法通过sumCount获取由addCount方法维护的Map的size。

    HashTable 是线程安全的,也是一个散列表每个方法上都加了synchronized。初始化容量是11,扩容后变为2n+1;

    HashTable继承于Dictionary,而HashMap继承于AbstractMap且实现Map接口。

    HashTable的key不能为null,value也不能为空,HashMap可以为null,但是key的null只能有一个。

    都实现了Map、Cloneable、Serializable接口;

    13、ArrayListLinkedList和vector的区别

    List接口是有序可重复的。

    1)ArrayList底层基于动态数组实现,ArrayList集合默认初始化容量为:10(底层先创建了一个长度为0的数组,当添加第一个元素的时候,初始化容量为10,集合扩容采用位运算,一次扩容1.5倍)LinkedList底层基于双向链表实现,没有初始化容量。

    2)对于随机访问(get/set方法),ArrayList通过index直接定位到数组对应位置的节点,而LinkedList需要从头结点或尾节点开始遍历,直到寻找到目标节点,因此在效率上ArrayList优于LinkedList。

    3)对于插入和删除(add/remove方法),ArrayList需要移动目标节点后面的节点(使用System.arraycopy方法移动节点),而LinkedList只需修改目标节点前后节点的next或prev属性即可,因此在效率上LinkedList优于ArrayList。当 ArrayList 是顺序插入的时候,由于不需要移动节点,因此在效率上并不会比 LinkedList 差。

    4)LinkedList比ArrayList开销更大,因为LinkedList的节点除了存储数据,还需要存储引用。

    Vector集合底层调用了数组这种数据结构,是线程安全的,Vector集合的初始化容量为10,

    扩容之后是原容量的2倍。

    14、LinkedHashMap

    LinkedHashMap继承了HashMap,是基于HashMap和双向链表(保证顺序)来实现的。HashMap是无序的,当我们希望有顺序地去存储key-value时,就需要使用LinkedHashMap。可分为插入顺序和访问顺序两种。如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。也提供了key-value的存储方式,并提供了put和get方法来进行数据存取。LinkedHashMap的默认初始容量 (16)和默认负载因子(0.75),是线程不安全的

    15、HashSet

    Set集合存储元素的特点:无序不可重复

    底层是HashMap,并且HashSet中的set相当于在HashMap的key,而value则是new Object出来的常量,默认初始化容量为16,加载因子为0.75,按HashMap的扩容方法扩容。

    1. 存储时顺序和取出的顺序不同
    2. 不可重复
    3. 放到HashSet集合中的元素实际上是放到HashMap集合的key部分了

    16、TreeMap

    TreeMap继承AbstractMap,实现NavigableMap、Cloneable、Serializable三个接口。其中AbstractMap表明TreeMap为一个Map即支持key-value的集合。底层是红黑树。能够把它保存的记录根据key排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。


    展开全文
  • 如何在多对象的时候任然锁住代码? 解决也很简单,只要锁住同一个对象就行了。例如:synchronized后的括号中锁同一个固定对象,这样就行了。 这样是没问题,但是,比较多的做法是让synchronized锁这个类对应的...

    ←←←←←←←←←←←← 快!点关注

    不同的对象

    public class Sync {
    	public synchronized void test() {
    		System.out.println("test start");
    		try {
    			Thread.sleep(5000);
    		}
    		catch (InterruptedException e) {
    			e.printStackTrace();
    		}
    		System.out.println("test end");
    	}
    }
    
    public class MyThread extends Thread{
    	public void run() {
    		Sync sync = new Sync();
    		sync.test();
    	}
    	public static void main(String[] args) {
    		for (int i = 0; i < 3; ++i) {
    			Thread thread = new MyThread();
    			thread.start();
    		}
    	}
    }
    

    执行结果

    test start
    test start
    test start
    test end
    test end
    test end  
    

    现象

    在MyThread中,每次都new一个新的Sync对象,可以看到代码块test虽然被加了synchonized但是还是并行执行的,初步结论:锁住的不是代码块

    同一个对象

    public class MyThread2 extends Thread{
    	public Sync sync;
    	MyThread2(Sync sync) {
    		this.sync = sync;
    	}
    	public void run() {
    		System.out.println("hi....");
    		sync.test();
    	}
    	public static void main(String[] args) {
    		Sync sync = new Sync();
    		for (int i = 0; i < 3; ++i) {
    			Thread thread = new MyThread2(sync);
    			thread.start();
    		}
    	}
    

    执行结果

    hi....
    test start
    hi....
    hi....
    test end
    test start
    test end
    test start
    test end  
    

    现象

    可以看到当他们共用一个对象的时候,synchonized起了作用,这块代码是串行执行的

    结论

    锁住的是对象

    如何在多对象的时候任然锁住代码?

    解决也很简单,只要锁住同一个对象就行了。例如:synchronized后的括号中锁同一个固定对象,这样就行了。

    这样是没问题,但是,比较多的做法是让synchronized锁这个类对应的Class对象。

    public class Sync2 {
    	public void test() {
    		synchronized (Sync2.class) {
    			System.out.println("test start");
    			try {
    				Thread.sleep(2000);
    			}
    			catch (InterruptedException e) {
    				e.printStackTrace();
    			}
    			System.out.println("test end");
    		}
    	}
    }
    
    public class MyThread3 extends Thread{
    	public void run() {
    		Sync2 sync = new Sync2();
    		sync.test();
    	}
    	public static void main(String[] args) {
    		for (int i = 0; i < 3; ++i) {
    			Thread thread = new MyThread3();
    			thread.start();
    		}
    	}
    }
    

    执行结果

    test start
    test end
    test start
    test end
    test start
    test end
    

    synchronized的两大不足

    • 由于我们没办法设置synchronized关键字在获取锁的时候等待时间,所以synchronized可能会导致线程为了加锁而无限期地处于阻塞状态
    • 使用synchronized关键字等同于使用了互斥锁,即其他线程都无法获得锁对象的访问权。这种策略对于读多写少的应用而言是很不利的,因为即使多个读者看似可以并发运行,但他们实际上还是串行的,并将最终导致并发性能的下降。

    虽然synchronized已经作为一个关键字被固化在Java语言中了,但它只提供了一种相当保守的线程安全策略,且该策略开放给程序员的控制能力极弱

    读者福利:

    分享免费学习资料

    针对于Java程序员,我这边准备免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)

    为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

    资料领取方式:加入Java技术交流群963944895,私信管理员即可免费领取

    展开全文
  • java之装饰者模式

    2016-05-22 22:16:01
    一觉醒来,外面仍然下着蒙蒙细雨,滴滴答答的响个不停,但是雨是不会吵醒我了,叫醒我的任然是那个烦人的闹钟铃声,“滴答滴答,滴答滴答,时针他不停在转动”,“滴答滴答,滴答滴答”,停,我起来拿起手机,看看...
  • 本人虚心求教,几遍之后任然百思不得其解,求高手帮忙。
  • Android Studio Jacoco Coverage 0

    千次阅读 2017-02-04 16:45:46
    Jacoco 测试在测试代码正常运行完成后,覆盖率任然为零: 解决方案: buildTypes { debug { minifyEnabled false } } 注意:部分手机执行后测试率任然为0(本人使用MX3测试覆盖率为0)
  • Android apk打包命名规则

    千次阅读 2018-11-12 14:21:56
    摘要:前言在日常的开发过程中,...当然,所谓的规范在业内不会存在唯一的标准与格式(对于规范的理解,本人认为是相对容易让大众接受、理解、掌握的行为准则),所以,本文的目的在于探讨、交流、引导,还望各位不吝赐教...
  • 本人现在用c++更多,但是以前Java也写过不少,Java和c++很像,但是深入挖一些,Java跟c++的区别很大,就拿刚刚发的另一篇博文虚函数与多态小览来说,里面就感觉有很多不同了,至少“重写”在这两个语言里面的理解就...
  • 两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。...
  • Oracle11i使用方法

    2014-07-28 18:10:03
    本使用方法是本人试过,非常有效,如果要你自己去尝试,你会花费很大的精力和时间却任然无法使用。
  • 问题描述:本人电脑为ThinkPad t480,每次偶尔开机,或者拔掉电脑上面的耳机线后,重新插入电脑,发现耳机没有声音,之前也怀疑过是驱动问题,更新驱动程序后,任然无法解决问题,查看官方论坛,也是说蒋喇叭/耳机...
  • Android TV开发总结【焦点】

    万次阅读 2018-06-28 21:31:47
    尽管官方提供了基本用法,但是我们开发中任然会遇到焦点相关的问题: 我明明指定了焦点,为什么焦点还是丢失了? onKeyDown为什么有时获取不到按键事件? 没有做任何焦点处理的View会获取焦点? 对...
  • 最近一些刚踏上Android开发这条路的童鞋问了一些Android Studio使用相关的问题,比如安装后打开不了,老是在build中;Gradle下载不了;...SDK怎么手动下载;如何配置Gradle和Gradle插件;我自己使用Android Studio运行...
  • 所以我根据这几天看的文章,整理了一个较为完整的排序算法总结,本文中的所有算法均有JAVA实现,经本人调试无误后才发出,如有错误,请各位前辈指出。 0、排序算法说明 0.1 排序的定义 对一序列对象根据某个关键字...
  • Kotlin实战【一】Kotlin定义与目的

    千次阅读 2019-02-16 09:35:12
    前言 本系列文章适合有一定java经验的开发者,文章主要内容来自于Dmitry Jemerov的《Kotlin实战》,并加以自己学习过程中的感悟,总结以及...有问题添加本人微信号“fenghuokeji996” 或扫描博客导航栏本人二维码
  • Redis服务提供了一组拒绝数据写操作的策略,这个策略可以解释为:当Master上在min-slaves-max-lag时间(单位秒)间隔后,任然有min-slaves-to-write个Slave和它正常连接,那么Master才允许进行数据写操作。...
  • 普元ESB产品是国内比较有代表性的有用自主产权的ESB产品(本人并没有打压国产其他ESB产品意思): 上图来源于普元官方白皮书截图。普元的ESB中间件系统经过多年建设和升级,在国内商用ESB中间件中已经算是比较...
  • ★大脑的9大未解之谜

    千次阅读 2018-01-05 11:03:32
    而这两种“没想到”能让人笑的前提基础有两个:第一个是:这句话不会对我本体造成精神上的伤害,换句话说,就是这句话是和我本人没直接关系,或者不会在精神上或者生理上伤害到我本人的,我才会笑出来。第二。所有的...
  • 【★】选择好游戏认准这30个特质!

    千次阅读 2018-01-05 11:02:37
    一曲背景音乐并不是每个人也不是每时每刻都喜欢,如果你被困在一个地下迷宫若干小时单曲循环着一首阴森凄凉的交响乐,是个人都会抑郁的好吧(本人受害者不谈)。你得时刻为玩家着想,定时切换,避免审美疲劳,甚至...
  • 虽然本人并不清楚上一篇根据笔者实际工作经验所撰写的文章有什么重大问题,导致那么多朋友集体点踩而且截止目前又没有任何人愿意为笔者指出这些问题,但是这不会影响笔者继续学习、总结技术知识的热情。从这篇文章...
  • 否则,在默认情况下,即使你安装了Apache或Nginx或Tomcat之类的服务器软件,你会发现在其它终端上你任然无法访问对应的端口,因为默认情况下防火墙开启且开通了较少的端口(如22端口,用SSH连接)。 注意:上面用于...
  • 【★】选择好游戏认准这30个特质!

    千次阅读 2017-05-04 10:31:15
    一曲背景音乐并不是每个人也不是每时每刻都喜欢,如果你被困在一个地下迷宫若干小时单曲循环着一首阴森凄凉的交响乐,是个人都会抑郁的好吧(本人受害者不谈)。你得时刻为玩家着想,定时切换,避免审美疲劳,甚至...
  • ★大脑的9大未解之谜

    2017-05-04 10:30:23
    而这两种“没想到”能让人笑的前提基础有两个:第一个是:这句话不会对我本体造成精神上的伤害,换句话说,就是这句话是和我本人没直接关系,或者不会在精神上或者生理上伤害到我本人的,我才会笑出来。第二。所有的...
  • 银行家算法

    千次阅读 2016-10-09 09:41:37
    文章目录 0. 引言 1. 数据结构描述 0. 引言 处理死锁的方法 ...:本人博客欢迎转载,请标明博客原文和原链接!谢谢! 《银行家算法》: http://blog.csdn.net/u014134180/article/details/52763427
  • 虚函数与多态小览

    千次阅读 2015-07-25 17:16:46
    可见编译器其实还是挺笨的,然后开始Debug,可能会报错(也可能不报错,本人用的vs2012 debug模式就没有)。但实际上运行时做数组的越界检查不是C++里面支持的特性,这里你dubug是VS中的一些工具给你做的检查。你...
  • 浏览器小览【欢迎讨论】

    千次阅读 2013-10-07 10:49:04
    本人喜欢玩各类电子产品,自然各种浏览器也不会被我错过 我应该说用过很多浏览器,开始的IE,搜狗,遨游,世界之窗,猎豹,后来的Opera,谷歌chrome,火狐,百度影音浏览器,百度浏览器,360浏览器,360...
  • 这个只是一个模板,由于公司机密已经去除核心代码,不过这个任然是一个可执行的服务,只是这个服务不做任何事情,我之前是用来做数据同步的,你可以填写一些你自己的代码就可以为你做事情了.省去了 不知道搭建如何搭建...
  • 特点:虽然说他是stop the word,而且是单线程的,但是到目前为止,它任然是虚拟机运行在client模式下的默认年轻代的收集器 优点:由于单线程而简单高效,对于单处理器的情况下是个不错的选择 " ParNew " is a stop-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,161
精华内容 464
关键字:

任然本人