
java
文章平均质量分 85
京城最明亮的少年
生活应该充满挑战和艰险才显得无比的精彩!
展开
-
Android设计模式之 工厂模式
工厂模式也就是省略了创建过程,类似批量生产的形式,一般来说工程模式有三种形式一,简单工厂模式 二,工厂方法模式 三,抽象工厂模式简单的工厂模式: 工厂: 产品: 具体的产品: 具体的工厂:(这个工厂里面只能生产A) 测试:首先创建一个工厂,工厂里面生产一个产品,通过调用产品里面的方法,我们知道产品生...原创 2018-03-14 16:04:12 · 295 阅读 · 0 评论 -
Java8 特性笔记(三) Stream
关于java8的stream也许有很多人听说过,但是不一定实际的用的很熟练,今天开始一点点的学习Java8有关Stream的相关知识,首先我们看一个例子本博客依据 java 8 In Action 表写需求: 在一个列表中找出小于某个数值的对象,并依次排序取出其中的值1,Stream的基本认识 static List<Dish> menu = Arrays.asList...原创 2019-02-28 23:51:35 · 258 阅读 · 0 评论 -
Rxjava+Retrofit+Okhttp进行网络访问和数据解析
在平时项目开发中Okhttp3.x、Rxjava2.x、Retrofit2.x,使用的越来越多了,需要我们不断的去学习别人的优秀开发设计程序,今天简单的了解下(这三块内容庞大绝非几篇博客能说清楚的)1,创建Android项目(Android studio)导入相关依赖 implementation 'com.squareup.okhttp3:okhttp:3.11.0' impl...原创 2019-02-25 15:20:32 · 948 阅读 · 0 评论 -
使用Stream读取文件
Java8 以后的新特性比较好用,可以极大的简化代码,今天我们就一起来学习下如何使用新特性来读取文件的内容/*** 这里使用到了 nio中的Path nio是一种高性能的io读写操作*/ private static Stream<String> createStreamFromFile(){ Path path = Paths.get("E:\\Rxja...原创 2019-02-20 22:56:21 · 2220 阅读 · 0 评论 -
Java8 特性笔记(四) Stream
上一章节,我们简单的介绍了Stream,这一节我们将继续介绍Stream的相关知识1、创建方法从集合中创建private static Stream&lt;String&gt; cr5eateStreamFromCollection(){ return list&lt;String&gt; Arrays.asList("hello","world",&a原创 2019-03-03 19:32:31 · 464 阅读 · 0 评论 -
Java8 特性笔记(五) NumercStream
标题中的NumercStream是什么意思呢,今天我们说的是Stream的具体化,之前我们在操作的时候都是用的Stream,当然没有错,但是当我们操作Int类型的数据如:Stream&lt;Integer&gt; stream = Arrays.stream(new Integer[]{1,2,3,4,5,6,7,8});Integer result = stream.reduce(0, I...原创 2019-03-03 20:13:06 · 168 阅读 · 0 评论 -
Java8 特性笔记(六) Optional(含源码分析)
在任何语言开发中我们都会遇到很多bug,然后在众多bug中,空指针又是出现最多的,每个编程语言都有空指针,只不过有些语言对空指针有了系统处理,例如 kotlin会自动检测空指针的存在并在编写代码的时候就报错,java没有这功能,但是在java8之后 有一个类可以为我们解决空指针的问题,它就是Optional我们看源码里面的一段话,就知道optional想干嘛了A container obj...原创 2019-03-07 11:27:03 · 328 阅读 · 0 评论 -
Java中的Future
提到这个Future,相信英文好的人都知道,这个单词的意思是表示未来,今天的用法也跟这个单词的意思相类似在做开发中我们经常遇到这样一个问题,就是一个问题需要执行比较久,但是有需要等待它的结果,于是我们会使用线程来做,但是使用线程也会到一个问题,我什么时候调用呢,如果调用早了肯定会出现空指针异常的,今天我的就使用这个future来解决这个问题。Future相当于拿到一个应用,这个引用在线程没有执...原创 2019-06-15 15:26:51 · 1637 阅读 · 0 评论 -
自定义枚举
Java中的自定义枚举优化在性能优化中,枚举的每一个都是一个实,比较耗内存,采用注解能很好的解决这个问题public class SHAPE { public static final int RECTANGLE=0; public static final int TRIANGLE=1; public static final int SQUARE=2; p...原创 2019-06-16 21:19:41 · 305 阅读 · 0 评论 -
java对象池
首先介绍下对象池,所谓的对象池就是存储一部分对象到一个池中,需要时就取,不需要时候就释放,其实对象池中维护的是两个SparseArray。那么对象池有什么用呢,当然是有用的,假设一个场景,在消息处理的时候,比如聊天软件中每个消息都不停的创建和销毁那么这样一来就会给GC造成很大的压力,此时此刻对象池就可以派上用场了,其实在这里我们可以联想到线程池。首先我们看对象池ObjectPool,这是一个抽...原创 2019-06-17 00:04:58 · 826 阅读 · 0 评论 -
App启动流程与消息机制
相信很多人对这个问题不陌生,但是大家回答的都比较简单,如谈到app启动流程有人就会是app的生命周期去了,谈到消息机制有人就会说looper循环消息进行分发,如果是面试可能面试官不会满意,今天我们搞一篇完善的源码解析来进行阐述上面的问题1、第一步了解 ThreadLocal什么是ThreadLocal呢,专业的来讲,ThreadLocal 是一个线程内部的数据存储类,通过它可以在指定的线程...原创 2019-06-21 14:40:24 · 236 阅读 · 0 评论 -
正确理解Java中的Future
说到这个相信很多刚入行的程序员,对这个并不是很熟悉,这个单词的意思是未来简单的给它阐述一下:这是一个对象,存储的耗时操作给它赋的值,我们先拿到他的引用,等他有值了,就可以使用。通俗的讲,就是我拿到一个变量的引用,里面没有值,子线程计算完了,把值赋值给它,我后面就可以用,不用我一直等子线程执行完。看代码://首先定义一个接口public interface Future<T&g...原创 2019-07-08 11:45:49 · 653 阅读 · 0 评论 -
Android 分辨率和dp px等之类的介绍
因为要做屏幕适配和内存优化,随便看了这方面的,自己总结下备用分辨率 px如:720*1080表示 => 720px *1080px=> 720像素点 * 1080像素点通俗的讲,就是宽度有720个像素点,竖向右1080个像素点。屏幕尺寸 in如:我们一般说屏幕多少寸多少寸,说的就是这个,这里说的是对角线的长度,这里有个公式1寸 就是 1英寸, 1英寸 = 2.54厘米,也...原创 2019-07-03 10:05:35 · 995 阅读 · 0 评论 -
Java多线程消费者和生产者模式并发死锁问题解决
以下是文章的主要核心点文中采用Stream流的方式创建多个生产者和消费者利用对象的wait()进行阻塞利用synchronized 的原理创建唯一的Monitor的LOCK对象通过notifyAll()唤醒阻塞,此处不能用notify()import java.util.stream.Stream;public class ProduceConsumer { priv...原创 2019-07-10 13:44:05 · 316 阅读 · 0 评论 -
Java优雅的实现锁和超时锁
在Java多线程中,我们会遇到多个线程访问同一个资源,产生竞争,如果操作不到会导致死锁的产生,例如在现实中的十字路口,锁就像红路灯指示器,一旦锁坏了,就会导致交通瘫痪。通过本篇文章读者可以学到以下内容多线程并发锁的使用超时锁一、编写锁的接口public interface Lock { //自定义异常类 public static class TimeOutExcepti...原创 2019-07-10 16:32:48 · 5138 阅读 · 1 评论 -
Java8 特性笔记(二)Lamdba和函数式推导
在前面的一章节我们介绍了,有且只有一个抽象函数的接口就是函数式接口,利用函数式接口我们就可以创建lamdba,但是其中可以包括静态方法和default1,lamdba表达式的语法首先我们来看一个简单的lamdba表达式的应用,就是在创建线程时候 //创建一个线程,将线程的名字打印出来 new Thread(()- System.out.prin...原创 2019-02-28 17:30:51 · 378 阅读 · 5 评论 -
Java8 特性笔记(一) 引入
lamdb是java8里面一个比较重要的技术更新,我们需要了解他 掌握它,这样在我门以后的开发中会极大的提高我们的工作效率1,首先我们来看 java8 in Action这本书中的一段话Writing code that can cope with changing requirements is difficult. Let’s walk through an example that we...原创 2019-02-27 23:23:46 · 184 阅读 · 0 评论 -
深入浅出之序列化 Serializable,Parcelable,Externalizable
首先介绍下三个序列化版本的基本情况,1,Serializable是一般的序列化,这种序列化是一种接口,直接实现这个借口就可以,接口里面的所有属性都会被序列化2,Externalizable 这个序列化接口是Serializable的之类,它不会调用默认的构造函数,而是调用自己的构造函数,这个序列化方式不仅仅需要实现这个接口而且需要自己在具体的方法里面添加需要序列化的属性。3,Par...原创 2018-05-14 14:02:48 · 429 阅读 · 0 评论 -
Android ListView中不同样式的布局
在平时android开发当中,我们经常会碰到这样一个需求,在一段listView中差一段不一样的布局,那么这种listView我们应该怎么做呢其实在BaseAdapter这个适配器中我们需要注意两个方法就可以简单的实现下面这种插入不同布局的效果接下来我们就来认识这两个方法下一步在getView中编写加载两种不同布局的逻辑数据...原创 2018-06-03 15:18:08 · 1924 阅读 · 0 评论 -
Android 异步加载深入解析
首先看下android异步加载的整体形式 private class downLoadTask extends AsyncTask<String, Integer, String> { //这里是在后台执行任务,相当于开启了一个进程 @Override protected String doInBackground(Stri...原创 2018-06-15 10:28:59 · 277 阅读 · 0 评论 -
Java/Android设计模式之 Builder设计模式,构建者模式
在众多的设计模式中构建者模式Builder显得非常的精妙,它能在用户不知道内部情况下创建一个对象,也就是省略部分细节,显得简洁大方。今天我们开始介绍这个构建者模式 首先是对象,我们需要生成的对象,这里我们是一个抽象的产品类,其中操作系统需要具体的实现类去操作//计算机,也就是产品类public abstract class Computer { protected Stri...原创 2018-06-23 17:26:22 · 165 阅读 · 0 评论 -
JAVA 线程池深入解析
在开发中我们经常与会遇到需要在子线程中处理相关操作的问题,但是遇到大量线程的时候,每次都去创建一个线程是非常不合理的做法,这里我们就需要对线程作统一的管理。也就是线程池。一,newCachedThreadPool 可缓冲线程池,这种线程池最大数是Integer.MAX_VALUE,它的特点就是线程可以重复利用。上一个线程执行完毕之后,接下来的线程可以重复使用,不必要去重新创建。pu...原创 2018-07-08 10:48:03 · 258 阅读 · 0 评论 -
java 原型话设计方法(涉及深拷贝可浅拷贝)
原型化设计模式是一种设计模式,可以简单的理解为克隆模式首先看一段代码public class WorldDocument implements Cloneable { private String mText; private ArrayList<String> mImages = new ArrayList<>(); public Wor...原创 2018-07-08 12:26:49 · 232 阅读 · 0 评论 -
RecycleView的分割线基础
RecycleView很多人可能用不习惯,觉得太麻烦了,但是实际上用起来的时候功能非常强大。话不多说开始吧。ItemDecoration这个是RecycleView分割线//自定义一个类继承RecyclerView.ItemDecorationpublic class CustomDividerItem extends RecyclerView.ItemDecoration ...原创 2018-07-21 10:39:45 · 291 阅读 · 0 评论 -
RecycleView动画效果和拖拽效果
RecycleView功能强大,很简单的几个步骤就能满足我们的开发需求,首先来三个效果 上图是动画,相当于加载数据的时候一个简单的动画效果 上图是拖拽,能够选择一行进行上下拖拽和任意一行进行交换 上图是删除,对不用的选项可以进行删除下面对以上的效果一一进行讲解首先是动画效果 创建动画的xml文件item_animation_fall...原创 2018-07-21 19:02:20 · 1707 阅读 · 0 评论 -
Java原子性应用
在java中存在这样一种现象,当两个线程同时对一个数据进行操作的时候可能出现错误的现象,那么有没有办法做到让多个线程操作同一个数据的时候不会紊乱呢看现象:public class Test { private static Person person; public static void main(String[] args) throws Interrupted...原创 2018-08-04 15:57:03 · 1271 阅读 · 0 评论 -
公平锁
相信很多人都知道在java中存在锁这个东西,他就是为了防止有些数据被多个线程同时访问而导致的一种进制。需求:要求两个线程间隔着访问同一个数据,或者执行某一段代码技术点:安全锁 /** * 参数true表示公平锁,这个ReentrantLock是重入锁,安全锁是冲入锁的一种特例,在构造函数中设置true即表明为安全锁 */ public stati...原创 2018-08-11 10:04:04 · 181 阅读 · 0 评论 -
Lamdba表达式和函数表达式(一)
Lamdba想必很多人都知道,但是实际上很少有人真的能用起来,其实这个功能还是很方便的,在我们日常开发中都是很实用的。条件,要求jdk的版本是 8.0或者更高的版本,现在jdk9.0都出来了,这个功能我们必须要掌握,方便我们的开发,减少了代码量一般形式(这里写参数) -> {这里写函数体}当然如果参数和函数体很少,就可以不写外面的区域符号,例如persion ->...原创 2018-08-07 17:11:54 · 525 阅读 · 0 评论 -
设计模式之装饰者模式
在设计模式中有一种模式也经常见到,那就是装饰者模式,首先我们来看看今天代码的UML视图: 这是装饰者模式的一般形式1, 定义一个抽象类 抽象类包含一个穿着的抽象方法package test1;public abstract class Person { /** * 人这个抽象的对象有一个穿着的抽象方法 */ public ab...原创 2018-08-21 15:10:07 · 166 阅读 · 0 评论 -
Android的时间分发机制 完整解析
在Android的触摸点击等事件中我们经常需要用到时间分发机制,看了很多朋友写的博客,感觉不是很明朗,综合多家的精粹用通俗的描述全面的介绍下事件分发机制。1。首先来一张全局图1代表我们的activity2代表我们的viewgroup 也就是我们经常说的容器3 就是最顶层的view了 比偶如说 textview imageview等先简单的介绍下,稍后再代码分析当点击最顶层的v...原创 2018-10-11 13:40:21 · 1740 阅读 · 0 评论 -
10进制转化为16进制,保留指定的位数
在串口调试,需要同硬件进行数据传输的时候必备工具,代码简单的不要不要的,就不多说了package test5;import java.util.Scanner;public class HexTest { /** * 这次算法用了StringBuffer效率更好 */ public static void main(String[] args) { ...原创 2018-12-22 16:35:44 · 4476 阅读 · 0 评论 -
Java反射,带你全面解析Java反射
一、前言相信很多没有听说过反射,这也很正常,因为在一般的开发中反射基本上用不着、但是我再Android开发中经常涉及到内存优化、性能优化的问题,需要使用反射,那么今天带给大家一顿丰富的Java反射大餐。二、反射定义反射就是在运行中获取你想获取的一个类中的类实例、方法、成员变量。即使这个类不对外暴露三、反射的优点可以在程序运行中,操作这些对象解耦、提高程序的可扩展性四、反射的机制...原创 2019-07-19 14:29:05 · 280 阅读 · 1 评论