java
文章平均质量分 75
孙朝阳
逆水行舟,不进则退!
展开
-
Java线程池
线程池的定义 管理一组工作线程,通过线程池复用线程有以下几点优点: 1、减少资源创建 =》减少内存开销,创建线程占用内存 2、降低系统开销 =》创建线程需要时间,会延迟处理请求 3、提高稳定性 =》避免无限创建线程引起的OutOfMemoryError Executors创建线程池的方式 ThreadPoolExecutor有四个构造函数,但最终调用的都是同一个: public ThreadPo...原创 2019-11-29 11:48:11 · 206 阅读 · 0 评论 -
Java函数式编程四之并行化操作
Java函数式编程三 并行和并发 并发 和并行是两个不同的概念,它们的作用也不一样。并发是两个任务共享时间段,并行则是两个任务在同一时间发生,比如运行在多核 CPU 上。如果一个程序要运行两个任务,并且只有一个 CPU 给它们分配了不同的时间片,那 么这就是并发,而不是并行。两者之间的区别如图: 数据并行化 本文主要讨论数据并行化。数据并行化是指将数据分成块,为每块数据分配单独的处理单元。 ...原创 2019-01-03 15:31:47 · 399 阅读 · 0 评论 -
Java函数式编程三之收集器
Java函数式编程二 本文主要介绍高级集合类和收集器 方法引用 Lambda 表达式有一个常见的用法:Lambda 表达式经常调用参数,如: student -> student.getName() java8提供了一个简写语法,叫做方法引用, 在这里插入代码片 ...原创 2018-12-20 20:00:05 · 267 阅读 · 0 评论 -
Java函数式编程二之常用流操作
函数式开发旨在帮助程序员写出更好的代码,如Java8新引入的流(Stream)使程序员得以站在更高的抽象层次对集合进行操作!Stream 是用函数式编程方式在集合类上进行复杂操作的工具。 传统循环操作有很多弊端如需要写很多样板代码、行为意图不清晰等,嵌套循环更严重,另外传统操作对于并行开发也很麻烦!使用Stream对集合进行操作,可以避免这些。如: 计算集合中大于8的元素个数 List&amp原创 2018-12-20 17:05:39 · 252 阅读 · 1 评论 -
Java函数式编程一之基础介绍
原创 2018-12-13 15:57:35 · 238 阅读 · 0 评论 -
Java深入解析笔记
关键字与标识符 goto、const、true、false、null goto是Java里的保留字(不使用的关键字),在java里使用标签实现跳转: public class Test1{ public static void main(String[] args) { int[][] arr = { {1,20,28}, ...原创 2018-11-06 13:44:49 · 267 阅读 · 0 评论 -
RxJava2.x学习教程(三)常用操作符
上一篇文章介绍了,创建、转化类、过滤类、合并类的操作符RxJava2.x学习教程(二)常用操作符,本文接着学习其余操作符,如错误处理类操作符、工具类操作符,条件和布尔操作符,综合操作符,连接操作符等! ConcatMap concatMap和flatMap的区别在于 它能保证顺序 Observable.fromArray(1,10,20) .co...原创 2018-05-25 15:55:45 · 1431 阅读 · 0 评论 -
RxJava2.x学习教程(二)常用操作符
**操作符 ** 操作符官方doc Create Create — create an Observable from scratch by calling observer methods programmatically 最常用的操作符,用于创建一个被观察者(发射事件)...原创 2018-05-19 19:01:55 · 1706 阅读 · 0 评论 -
RxJava2.x学习教程(一)基本概念
RxJava (本文所有RxJava全都代指RxJava2)在 GitHub 主页上的自我介绍是:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. ...原创 2018-05-19 12:14:28 · 433 阅读 · 0 评论 -
Android 单元测试(二) 之JUnit进阶
本文接上篇文章JUnit基础继续学习JUnit。 套件测试 套件测试说的通俗点,就是批量运行测试类。涉及注解@RunWith @Suite 接着使用上篇的Calculater,创建两个测试类: /** * Created by scy on 2018/4/26. */ public class CalculaterTest { private Calculater mCa...原创 2018-04-27 12:18:19 · 1654 阅读 · 0 评论 -
Android 单元测试(一) 之JUnit基础
用Android Studio创建工程的时候,src文件夹下会同时生成三个文件夹main、test、androidTest test和androidTest是专门针对源码级别的白盒测试的。 test:文件夹用于写不依赖设备环境的单元测试,即可在PC上直接运行; androidTest:文件夹用于写需要在设备上才能运行的测试。 分类 功能测试:和UI无关,测试IO操作、算法、流程等; ...原创 2018-04-27 10:28:52 · 4629 阅读 · 0 评论 -
Android 单元测试(三) 之Mockito的使用
Mockito是一个很不错的模拟框架。它允许您使用干净简单的API编写漂亮的测试代码。 依赖 repositories { jcenter() } dependencies { testCompile "org.mockito:mockito-core:2.+" } 继续使用前面的Calculater类编写测试类! 验证行为 /** * Created by scy on 20...原创 2018-05-02 17:57:10 · 830 阅读 · 0 评论 -
算法——快速排序、希尔排序、堆排序
上一篇文章 简单算法——直接插入、冒泡、直接选择介绍了简单排序法,本文在上一篇的基础上,介绍各简单排序法对应的高级算法。 首先依然是做一个公共的元素置换函数 /** * 交换数组元素 * 交换思想很简单 数字x y => x=x+y;y=x-y;x=x-y; * 这种方法不使用临时变量,能有效降低算法空间复杂度,但也有缺点,比如可能存在越界风险 ...原创 2018-04-18 17:43:19 · 2057 阅读 · 0 评论 -
简单算法——直接插入、冒泡、直接选择
排序的算法有很多 其中直接插入排序、直接选择排序、冒泡排序属于简单排序,它们对空间的要求不高,但是时间效率却不稳定; 本文将介绍三种简单排序,下一篇会介绍三种简单排序对应的高级排序快速排序、希尔排序、堆排序 首先做一个公用的元素交换实现函数, 下面的swap调用都是这个 /** * 交换数组元素 * 交换思想很简单 数字x y => x=x+y;y=x-...原创 2018-04-17 14:13:49 · 4586 阅读 · 0 评论 -
java 如何解析后台返回的key和value都未知的json
问题描述: 后台返回一段json对象,key、value都是动态且字段未知!如下所示,labels对象里面的key、value都是动态变化的。 { bads: 0, average: "8.3", totalEvaluates: 6, goodRate: "50%", servedCompanies: "5", goods: 3, m..原创 2018-03-25 01:43:32 · 4294 阅读 · 5 评论 -
Java基础(一)
一、基本语法 大小写敏感:Good和good是不同的 类名:每个单词首字母大写。如People、MyPeople 方法名:首单词首字母大写,后面的单词首字母小写,如drive、driveCar 源文件名:和类名相同,后缀为.java 主方法入口:固定写法public static void main(String []args) 二、修饰符 访问控制符:default, public,...原创 2018-03-07 15:15:58 · 182 阅读 · 0 评论