
java
文章平均质量分 75
孙朝阳
逆水行舟,不进则退!
展开
-
Java线程池
线程池的定义管理一组工作线程,通过线程池复用线程有以下几点优点:1、减少资源创建 =》减少内存开销,创建线程占用内存2、降低系统开销 =》创建线程需要时间,会延迟处理请求3、提高稳定性 =》避免无限创建线程引起的OutOfMemoryErrorExecutors创建线程池的方式ThreadPoolExecutor有四个构造函数,但最终调用的都是同一个: public ThreadPo...原创 2019-11-29 11:48:11 · 231 阅读 · 0 评论 -
Java函数式编程四之并行化操作
Java函数式编程三并行和并发并发 和并行是两个不同的概念,它们的作用也不一样。并发是两个任务共享时间段,并行则是两个任务在同一时间发生,比如运行在多核 CPU 上。如果一个程序要运行两个任务,并且只有一个 CPU 给它们分配了不同的时间片,那 么这就是并发,而不是并行。两者之间的区别如图:数据并行化本文主要讨论数据并行化。数据并行化是指将数据分成块,为每块数据分配单独的处理单元。...原创 2019-01-03 15:31:47 · 434 阅读 · 0 评论 -
Java函数式编程三之收集器
Java函数式编程二本文主要介绍高级集合类和收集器方法引用Lambda 表达式有一个常见的用法:Lambda 表达式经常调用参数,如:student -> student.getName()java8提供了一个简写语法,叫做方法引用,在这里插入代码片...原创 2018-12-20 20:00:05 · 288 阅读 · 0 评论 -
Java函数式编程二之常用流操作
函数式开发旨在帮助程序员写出更好的代码,如Java8新引入的流(Stream)使程序员得以站在更高的抽象层次对集合进行操作!Stream 是用函数式编程方式在集合类上进行复杂操作的工具。传统循环操作有很多弊端如需要写很多样板代码、行为意图不清晰等,嵌套循环更严重,另外传统操作对于并行开发也很麻烦!使用Stream对集合进行操作,可以避免这些。如:计算集合中大于8的元素个数 List&amp原创 2018-12-20 17:05:39 · 280 阅读 · 1 评论 -
Java函数式编程一之基础介绍
原创 2018-12-13 15:57:35 · 255 阅读 · 0 评论 -
Java深入解析笔记
关键字与标识符goto、const、true、false、nullgoto是Java里的保留字(不使用的关键字),在java里使用标签实现跳转:public class Test1{ public static void main(String[] args) { int[][] arr = { {1,20,28}, ...原创 2018-11-06 13:44:49 · 300 阅读 · 0 评论 -
RxJava2.x学习教程(三)常用操作符
上一篇文章介绍了,创建、转化类、过滤类、合并类的操作符RxJava2.x学习教程(二)常用操作符,本文接着学习其余操作符,如错误处理类操作符、工具类操作符,条件和布尔操作符,综合操作符,连接操作符等!ConcatMap concatMap和flatMap的区别在于 它能保证顺序 Observable.fromArray(1,10,20) .co...原创 2018-05-25 15:55:45 · 1451 阅读 · 0 评论 -
RxJava2.x学习教程(二)常用操作符
**操作符 ** 操作符官方doc Create Create — create an Observable from scratch by calling observer methods programmatically 最常用的操作符,用于创建一个被观察者(发射事件)...原创 2018-05-19 19:01:55 · 1756 阅读 · 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 · 452 阅读 · 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 · 1690 阅读 · 0 评论 -
Android 单元测试(一) 之JUnit基础
用Android Studio创建工程的时候,src文件夹下会同时生成三个文件夹main、test、androidTesttest和androidTest是专门针对源码级别的白盒测试的。 test:文件夹用于写不依赖设备环境的单元测试,即可在PC上直接运行; androidTest:文件夹用于写需要在设备上才能运行的测试。分类功能测试:和UI无关,测试IO操作、算法、流程等; ...原创 2018-04-27 10:28:52 · 4673 阅读 · 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 · 865 阅读 · 0 评论 -
算法——快速排序、希尔排序、堆排序
上一篇文章 简单算法——直接插入、冒泡、直接选择介绍了简单排序法,本文在上一篇的基础上,介绍各简单排序法对应的高级算法。 首先依然是做一个公共的元素置换函数/** * 交换数组元素 * 交换思想很简单 数字x y => x=x+y;y=x-y;x=x-y; * 这种方法不使用临时变量,能有效降低算法空间复杂度,但也有缺点,比如可能存在越界风险 ...原创 2018-04-18 17:43:19 · 2101 阅读 · 0 评论 -
简单算法——直接插入、冒泡、直接选择
排序的算法有很多 其中直接插入排序、直接选择排序、冒泡排序属于简单排序,它们对空间的要求不高,但是时间效率却不稳定; 本文将介绍三种简单排序,下一篇会介绍三种简单排序对应的高级排序快速排序、希尔排序、堆排序 首先做一个公用的元素交换实现函数, 下面的swap调用都是这个 /** * 交换数组元素 * 交换思想很简单 数字x y => x=x+y;y=x-...原创 2018-04-17 14:13:49 · 4620 阅读 · 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 · 4331 阅读 · 5 评论 -
Java基础(一)
一、基本语法大小写敏感:Good和good是不同的类名:每个单词首字母大写。如People、MyPeople方法名:首单词首字母大写,后面的单词首字母小写,如drive、driveCar源文件名:和类名相同,后缀为.java主方法入口:固定写法public static void main(String []args)二、修饰符访问控制符:default, public,...原创 2018-03-07 15:15:58 · 200 阅读 · 0 评论