java
文章平均质量分 84
北京流浪狗
这个作者很懒,什么都没留下…
展开
-
Android开发地址选择省市县镇四级联动(仿京东地址选择)
先看效果:SVID_20191215_173310_1项目GitHub地址:https://github.com/YLY221/AddressProject首先需要在build.gradle中添加以下三个依赖 implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9...原创 2019-12-15 18:27:00 · 2740 阅读 · 2 评论 -
Android开发百度人证识别练习项目Demo
首先要登陆百度智能云(可点击这个连接https://ai.baidu.com/solution/faceprint?track=cp:ainsem|pf:pc|pp:chanpin-renlianshibie|pu:renlianshibie-jiejuefangan-shimingrenzheng|ci:|kw:10010166),然后依次点击:开放能力——》文字识别——》身份证识别——》立即使...原创 2019-12-15 16:23:05 · 628 阅读 · 1 评论 -
java语言描述数据结构与算法之——冒泡排序,插入排序,选择排序,希尔排序,快速排序,归并排序,二分查找
package com.demo.test;import java.util.Arrays;import java.util.Scanner;public class TestDemo{ public static void main(String[] args) { //随机输入n个数,存放在数组a中 Scanner scanner=new Sc...原创 2019-08-16 11:30:10 · 682 阅读 · 0 评论 -
java HashMap原理详解以及面试中常见的问题
最近由于工作的原因,我就把HashMap说深入的学习了一下,把知识点做以下总结:在面试中常见的HashMap的问题一般有以下几个:1,JDK1.8中的HashMap有那些改动,请说出三点以上。2,JDK1.8中为什么要使用红黑树。3,HashMap的扩容机制是怎么样的。4,为什么重写对象的equales()方法时,要重写hashCode()方法,跟HashMap有关系吗?为什么...原创 2019-08-01 17:29:26 · 420 阅读 · 0 评论 -
android开发ACTION_CANCEL在什么情况下出现
首先看一篇文章https://www.cnblogs.com/xiaoQLu/archive/2013/04/02/2994030.html下面是我的理解:一般出现这种情况是因为父布局拦截了事件,但是并不是父布局拦截了什么事件都会进入当前控件的ACTION_CANCEL事件中的,只有当前事件收到了一个事件(也叫做前驱事件),后面的事件被父布局拦截,才会进入当前事件的ACTION_CANCE...原创 2019-08-04 16:30:30 · 2653 阅读 · 0 评论 -
观察者模式详解Demo
观察者模式细分的话可以分为以下几个具体对象:观察者,具体观察者,被观察者,具体被观察者,以下通过一个小的应用场景具体详解:假如:微信公众号是被观察者,那么微信公众号中的《Android前沿技术》这个订阅号就是一个具体的被观察者,微信用户就是观察者,个人就是具体观察者。首先定义微信公众号类:import com.example.myproject.observer.IWXUser...原创 2019-07-12 13:36:02 · 255 阅读 · 0 评论 -
android开发之HTTP TCP/IP知识点解析
1,HTTP家族都有:HTTP,FTP,DNS,TCP,UDP,IP其中,TCP和UDP两者之间的关系非常重要。可以看这篇文章https://blog.csdn.net/qq_31332467/article/details/79217262来初步了解TCP UDP之间的不同之处。2.OSI七层协议:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。3,HTTP请求是依报文的形...原创 2019-06-23 16:50:14 · 311 阅读 · 0 评论 -
简单学习CAS原理
首先看一下下面两句代码:AtomicInteger atomicInteger=new AtomicInteger(5);System.out.println(atomicInteger.compareAndSet(5,6)+" "+atomicInteger.get());第一行atomicInteger的初始值是5,从堆内存拿出来这个值,放到线程自己的私有内存中,也就是线程对共享...原创 2019-09-19 13:04:58 · 165 阅读 · 0 评论 -
阻塞队列理论
关于阻塞队列在实际生活中的场景,有很多,比如银行排队,前面有人就要去等候区等待,去吃火锅发现前面作为已经满了,也要去等候区等待,这个等候区就相当于阻塞队列。阻塞队列有以下两种特性:当阻塞队列是空的时候,从队列中获取元素的操作像会被阻塞。直到其它线程往队列中插入元素。当阻塞队列是满的时候,往队列中添加元素的操作将会被阻塞。直到其它线程从队列中移除一个或者多个元素或者清空队列。为什么要...原创 2019-09-17 22:11:26 · 244 阅读 · 0 评论 -
synchronized和Lock的区别
区别1:synchronized属于关键字是JVM层面,Lock是API层面,是java的一个类,是jdk5新增加的。区别2:synchronized底层主要依赖与monitorenter和monitorexit这两个类来实现的(这两个类是通过monitor对象完成的,其实wait和notify等方法也依赖于monitor对象只有再同步块或者同步方法中才能调用wait/notify)...原创 2019-09-17 22:10:31 · 119 阅读 · 0 评论 -
CountDownLatch闭锁+枚举的小用法
import java.util.concurrent.CountDownLatch;enum CountryEnum{ ONE(0,"齐国"),TWO(1,"楚国"),THREE(2,"燕国"),FOUR(3,"赵国"),FIVE(4,"韩国"),SIX(5,"魏国"); private int countryId; private String countryName; pri...原创 2019-09-17 11:16:46 · 151 阅读 · 0 评论 -
java求一个数组的所有子序列,连续子序列,所有排列,所有组合
比如:数组a:int[] a={1,2,3};那么它的所有子序列有:{1},{2},{1,2},{3},{1,3},{2,3},{1,2,3}它的连续子序列有:{1},{1,2},{1,2,3},{2},{2,3},{3}它的所有排列:{1,2,3},{1,3,2},{2,1,3},{3,1,2},{2,3,1},{3,2,1}1,它的所有子序列:public clas...原创 2019-09-17 10:45:22 · 9102 阅读 · 0 评论 -
java代理设计模式详解
说到代理,我们日常生活中有很多例子可以与之类比:我们去银行取钱,有业务员帮我们处理,我们去买饭,卖饭的人帮我们把饭打包好等。代理又分为动态代理和静态代理。下面我先讲解静态代理。1,静态代理静态代理使用去银行办卡为场景来写Demo:银行办卡角色划分:(1)目标接口(2)代理对象——银行业务员(3)被代理对象——我以下是具体的例子,注释写在代码中,因此就不再多罗嗦:...原创 2019-08-12 22:26:39 · 123 阅读 · 0 评论 -
方法分派——了解虚拟机是怎么执行重载和重写的方法
首先看一个例子:public class TestDemo{ static abstract class Human{ } static class Man extends Human{ } static class Woman extends Human{ } public static void sayHello(Human guy) { Syst...原创 2019-08-11 22:07:06 · 166 阅读 · 0 评论 -
反射和注解在android开发中的应用
一,反射:说白了反射主要解决那些我们平时解决不了的问题。比如一个类的构造,属性,普通方法为私有的情况下,或者某些方法虽然不是私有的方法但是是被隐藏的方法,我们就需要使用反射才能获得他们。一般使用Class类来完成反射,这个类把成员变量划分为Filed区域,把构造划分在Construct,把普通方法划分在method区域。下面就来看反射的应用。1,通过反射获得构造方法1.1 通过反射获得构造...原创 2019-06-18 17:06:28 · 194 阅读 · 0 评论 -
android开发自定义View的一些知识点总结
1,解决ScrollView和ListView冲突问题(1.3)自定义一个MyListView继承自ListView,之后重写onMeasure()方法.具体的请看ScrollView源码和ListView源码 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {...原创 2019-05-30 23:17:20 · 198 阅读 · 0 评论 -
写一个小Demo来验证为什么StringBuilder线程不安全而StringBuffer是线程安全的
二话不说先上代码:public class TestDemo { public static void main(String args[]) throws Exception{ StringBuilder stringBuilder=new StringBuilder(); new Thread(new Runnable() { public void run() ...原创 2019-04-14 22:27:44 · 5274 阅读 · 0 评论 -
java回调机制Callbak(使用3个常见的Demo加以解析)
我们知道,任何语言都存在着方法的调用,常见的方法调用就是在一个方法a中调用另一个方法b,如果方法b执行时间很短(很短到底有多短?很短是什么意思?很短的意思也就是说方法b中没有开启线程,没有耗时的操作,意思就是方法b是普通的代码执行,如赋值语句,相加返回等这些平常的语句)那么我们就把这种给调用称为同步调用,相反,如果方法b中开启了线程或者存在耗时操作,那么这就是异步调用,异步调用之后方法a和方法b在...原创 2018-12-06 22:47:49 · 597 阅读 · 0 评论 -
工厂设计模式完全解析(利用反射机制+泛型实现可用的工厂设计模式)
下面我们先来写一个传统的工厂类模型,这个工厂类只是一个模型,开发中一般不用,因为这个工厂类模型存在着诸多问题(注释:我的程序的包名可能跟你的不一样,所以在运行下面几个程序的时候把我的包名换乘你自己的)。package com.demo.testdemo;//水果接口interface IFruit{ public void eat();}//苹果类实现了水果接口,并覆写了eat(...原创 2018-12-03 21:47:22 · 845 阅读 · 2 评论 -
java IO流的一些零碎知识点
1.首先讲解File类,File类主要作用就是穿件和删除文件,判断文件是否存在等操作,File类仅仅只是对文件类进行操作,并不涉及文件内容的变化。import java.io.File;import java.io.IOException;public class TestDemo{ public static void main(String args[]) throws...原创 2018-12-08 12:16:50 · 163 阅读 · 0 评论 -
Java字符流inputStream和outputStream(详解read()的返回值到底是什么和write()的byte[]参数)
字节流的作用:字节流一般用于读取或者写入二进制文件,如图片音频文件,还可以处理那些字符流无法正常处理的二进制可执行文件。一般而言只要是非文本数据就应该使用字节流来处理。因为字符流无法保证非文本数据的完整性;(对这句话的理解以后详细解释)1,字节输入流InputStream。public class TestDemo{ public static void main(String ...原创 2018-12-07 23:15:33 · 3214 阅读 · 1 评论 -
Lambda表达式
面向对象的最大的优点在于:结构必须非常完整。当然,这是它的最大的优点,也是他的缺点。结果过于完整就使得写一个小的输出就得定义完整的结构,比如下面的:interface IMessage{ public void print();}public class TestDemo{ public static void main(String args[]) { IMessage msg...原创 2018-12-01 23:34:59 · 115 阅读 · 0 评论 -
JAVA多线程wait与notify详细解析(由生产者和消费者案例引出)
生产者和消费者这个关系是个经典的多线程案例。现在我们编写一个Demo来模拟生产者和消费者之间的关系。假如有两个类,一个是数据生产者类DataProvider,另一个是数据消费者类DataConsumer,这两个类同时对数据类Data进行操作,生产者类负责生产数据,消费者类负责消费数据,下面是对这个过程的描述。class DataProvider implements Runnable{...原创 2018-12-01 22:12:34 · 349 阅读 · 0 评论 -
java单例设计模式详解(懒汉饿汉式)+深入分析为什么懒汉式是线程不安全的+解决办法
对于java单例设计模式,一直想写一篇博客,但是关于java单例设计模式涉及的知识比较多,后面可能还要牵涉多线程问题,有一些知识我自己也一直没明白,就一直放呢没有写,现在我觉得大部分关于单例设计的知识包括多线程的知识我也明白了,于是今天就写出来分享给大家,如果文章里边有不恰当的地方还请大家留言指出,感激不尽。单例设计模式就是:运用单例模式设计的这个类在每次实例化的时候只能产生一个对象。比如A类...原创 2018-12-04 23:27:19 · 2215 阅读 · 4 评论 -
深入理解ThreadLocal类+Demo详细解析
通俗的来讲,ThreadLocal主要作用就是让各自线程自能取得各自线程里面的东西,也即是各自线程只能忙活自己的事,管不了别人的事,通过下面的Demo来看一下ThreadLocal是否能实现这个功能ThreadLocal类就像Map,List这种类一样也是用来存储数据的,只是ThreadLocal类主要是为了线程数据存储而生的,目的是保证每一个线程只能存储和取出自己的东西。另外这个类是带...原创 2018-12-02 21:22:50 · 1807 阅读 · 0 评论 -
一,java虚拟机概述(什么是java虚拟机,为什么会产生java虚拟机,java虚拟机解决了什么问题)
在学习java虚拟机知识之前我们肯定要先了解java虚拟机的由来,毕竟每一件事的出现都是有一定原因的,那么Java虚拟机是为了解决什么问题而出现的呢?首先,我们知道java语言是跨平台的一种语言,什么是跨平台的一种语言呢?那么我们得看看我们熟悉的一种不跨平台的语言——C语言,为什么c语言是不跨平台的呢?什么是跨平台的呢?跨平台也就是说一种语言既然写出来了,就可以放到任何机器上执行,正确无误...原创 2018-12-15 14:15:18 · 321 阅读 · 0 评论 -
java集合之间的关系(详细分析集合的操作为什么需要equals()和hasCode()方法支持)
先看一张图:从上图可以清晰的看到:List和Set两个接口最的区别就是List可以存放重复的元素,而Set里面的元素不可以重复。List和Set这两个接口继承自Collection接口,collection接口有一个add()方法,Collection又继承自Iterable,而iterable里面的iterator()方法返回的是Iterator<T>接口。由以上分析可...原创 2018-12-23 23:03:41 · 1243 阅读 · 2 评论 -
Android对象序列化两种方式详解(Parcelable和Serializable)
在讲解对象序列化之前首先了解一下UUID类,UUID类是一种生成无重复字符串的一种程序类,这种程序类的主要功能是根据时间戳实现一个自动的无重复的字符串定义(这里所说的无重复并不是说不会出现重复,只是说重复的概率很低,大概是千万亿分之一)。在生成UUID的时候一般不会使用它的构造方法,一般使用的是这个方法:public static UUID randomUUID()当然也可以根据字符串获取UU...原创 2019-04-09 18:10:15 · 2425 阅读 · 1 评论 -
如何正确停止线程,守护线程,volatile关键字与synchronized关键字详解(使用例子详解这三个概念之间的关系)
一,从jdk1.2开始,以下几个关于线程的方法就不提倡使用了:1,停止线程:public void stop();2,销毁线程:public void destroy();3,挂起线程,使线程暂停执行:public final void suspend();4,恢复挂起的线程:public final void resume();之所以禁止使用这些方法,使用为这些方法可能导致线...原创 2019-04-09 17:40:21 · 685 阅读 · 0 评论 -
Android自动化测试Monkey, UiAutomator使用详解
Android程序开发迭代周期短,测试case重复度高,大部分case属于功能验证,常规的测试方法是测试人员按照预先写好的Case手顺进行测试,人工比对操作结果和预期结果。这种测试手段重复度高,效率低,无趣,易出错,并且对测试人员能力提升帮助有限。Android手机机型狂多,屏幕尺寸各异,语言各异,因此测试重复度很高,完全依赖人力并不现实。 Androi...原创 2019-04-12 18:39:22 · 1368 阅读 · 0 评论 -
Android开发在代码中设置线性布局LinearLayout和相对布局RelativeLayout的各种属性
1,第一种情况是我完全不定义xml布局文件,布局文件完全是在Java文件中写出来,代码如下:import android.annotation.SuppressLint;import android.graphics.Color;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;impo...原创 2019-04-08 18:47:50 · 3615 阅读 · 0 评论 -
Android开发比较新旧版本号,实现升级
二话不说先上代码://线束loc是本地版本号,参数server是服务器最新版本号 private int compare(String loc, String server) { if (TextUtils.isEmpty(loc) || TextUtils.isEmpty(server)) { return -1;...原创 2019-04-10 16:31:47 · 811 阅读 · 0 评论 -
Android开发merge使用方法详解
merge使用主要是的目的是在优化布局,减少布局嵌套,一般与include结合使用。下面来看如果不使用merge的情况下:首先新建一个test_layout.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"...原创 2019-04-10 15:03:30 · 12967 阅读 · 1 评论 -
java详解线程池的概念及其简单应用
线程池简单点说就是:多个线程封装在一起进行操作,这就形成了线程池。有这么一个场景,一个包工头承担了一个活,然后找来了20个人,对他们说:兄弟们!这个活你们20个人三天之内把它完成啊!在这里,这20个人就相当于20个线程,因为这个活任务量比较大,如果一个人做的话可能得花费几年的时间才能完成,而现在我找了20个人和我一起做这个活,那么我可能一个月就完成了这个活。基于以上形象的比喻,我们在这里可...原创 2019-01-21 22:55:06 · 149 阅读 · 0 评论 -
Java同步与死锁解析
这是我的第一篇博客,以前也一直想写,就是太懒一直没有开始写。关于java线程这方面知识学习过好多遍了,但是隔一段时间就忘,今天把他们归纳整理一遍,伊莱可以把知识做个存档,而来方便需要的人浏览。关于jav线程简单的知识,比如怎么创建线程以及Thread和Runnable的区别,还有取得线程名字和id,设置线程优先级之类的,我在这里就不一一讲述了,大家可以去参考java各类学习资料,上面讲述的很详...原创 2018-11-29 23:26:03 · 1188 阅读 · 1 评论