![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 91
晁东洋
热爱生活,热爱android!公众号:Android开发吹牛皮。由于博客已搬家到个人站点,chaodongyang.com。可以关注我的公众号获取最新的内容
展开
-
android之自定义UncaughtExceptionHandler类来处理未捕获异常
我们在开发中,经常会遇到各种各样的异常,造成我们的程序崩溃,系统原生的异常处理粗暴的退出,用户体验很差,那么我们能不能自己来处理为捕获异常呢,以供我们来达到更好的用户体验,以及保存异常,甚至是发送给我们的邮箱。下面就介绍UncaughtExceptionHandler类的使用。 一、我们先来看API中对UncaughtExceptionHandler类的描述。 java.lang接原创 2016-03-22 17:16:04 · 1038 阅读 · 1 评论 -
java编程思想之并发(SE5 新特性)
新类库中的构建Java SE5 的类库中引入了大量的新设计来解决并发问题的新类。学习他们将有助于编写更加简单而健壮的并发程序。原创 2018-01-02 16:25:03 · 380 阅读 · 0 评论 -
java编程思想之并发(终结任务)
有时我们需要任务被突然的终止。这一节将学习有关终止的各类问题。原创 2017-12-27 15:08:52 · 261 阅读 · 0 评论 -
java编程思想之并发(性能优化)
性能调优在 Java SE5 类库中的 java.util.concurrent 类库中存在着数量庞大的用于性能提高的类。当细细读取这个类库时很难辨认哪些类适用于那些常规应用,而那些类适用于提高性能。比较各类互斥技术Java 包括老式的 synchronized 关键字和 Java SE5 中新的 Lock 和 Atomic 类,那么比较这些不同的方式,更多的理解他们的各自价值和使用范围,就会显得很原创 2018-01-03 15:49:17 · 639 阅读 · 0 评论 -
Java8 新语法习惯 (级联 lambda 表达式)
在函数式编程中,函数既可以接收也可以返回其他函数。函数不在像传统的面向对象编程一样,只是一个对象的工厂或生成器,它也能够创建和返回另一个函数。返回函数的函数可以变成级联 lambda 表达式,代码非常短。尽管这样的语法初次看起来非常的陌生,但是它有自己的用途。本文将帮助您认识级联 lambda 表达式,理解它们的性质和在代码中的用途。神秘的语法看下面的一端代码:x -> y -> x > y对于不熟转载 2018-01-12 14:12:50 · 1020 阅读 · 0 评论 -
java编程思想之并发(线程之间的协作)
当你使用多线程来同时运行多个任务时,可以通过使用锁来同步两个任务的行为,从而使的一个任务不会干涉另一个任务的资源。也就是说,如果两个任务交替的步入某项共享资源,你可以使用互斥来保证任何时刻只有一个任务可以访问这项资源。线程之间的协作上面的问题已经解决了,下一步是如何使得任务彼此之间可以协作,使得多个任务可以一起工作去解决某个问题。现在的问题不是彼此之间的干涉,而是彼此之间的协作。原创 2017-12-28 17:21:19 · 425 阅读 · 0 评论 -
Java 8 新语法习惯 (更轻松的函数式编程)
作为一名 Java 编程语言的开发者,我们早已习惯了使用命令式编程和面向对象对象,因为 Java 从第一个版本开始就是支持这些编程方式。然而在 Java 8 中我们获得了一组强大的新的函数特性和语法。函数式编程已经有十几年的历史,与面向对象的编程方式相比,函数式编程更简洁、更具表达力、更不容易出错,而且更容易并行化。所以在 Java 程序中引入函数特性是非常必要的。函数式编程需要我们对代码的设计方式转载 2018-01-04 15:51:27 · 544 阅读 · 0 评论 -
java编程思想之并发(死锁)
一个对象可以有 synchronized 方法或其他形式的加锁机制来防止别的任务在互斥还没有释放的时候就访问这个对象。原创 2017-12-29 13:49:46 · 250 阅读 · 0 评论 -
Java 8 新语法习惯 (函数组合与集合管道模式)
本章节将介绍函数组合和集合管道,您可以结合这两种模式来迭代代码中的集合。了解这些模式的结构有助于您搭建自己的 java 程序,从而充分利用高阶函数和拉姆表达式。语句与表达式我们在代码中查找 for 循环,回惊奇的发现您的代码中对 for 循环的使用非常频繁。我们将这种情形称为 for 重复:只要我们需要重复似乎就会用到 for。在 Java 中 for 和 while 都是语句。语句执行一个操作但是转载 2018-01-05 16:01:25 · 1358 阅读 · 0 评论 -
Java8 新语法习惯 (使用闭包捕获状态)
在 Java 编程中,我们以不严格的术语 lambda 表达式来表示 lambda 表达式和闭包。但是在某些情况下,理解它们的区别很重要。lambda 表达式是无状态的,而闭包是带有状态的。将 lambda 表达式替换为闭包,是一种管理函数式程序中的状态的好方法。无状态的生活我们在这个系列中介绍了 lambda 表达式,您应该已经对他们非常的了解了。它们是小巧的匿名函数,接受可选的参数,执行某种计算转载 2018-01-15 13:22:14 · 551 阅读 · 0 评论 -
Java 8 新语法习惯 (for 循环的函数替代方案)
我们最常用的迭代一个数据集的方式就是 for 循环,开发人员对它可谓是非常的熟悉。从 Java 8 开始,我们有多个强大的新方法可以帮助我们简化复杂的迭代。在本文中,您将了解如何使用 InStream 方法、range、iterate 和 limit 来迭代范围和跳过范围中的值。还将了解新的 takeWhile 和 dropWhile 方法。for 循环的麻烦在 Java 语言的第一个版本中就开始引原创 2018-01-08 15:37:00 · 4456 阅读 · 0 评论 -
Java 8 新语法习惯 (提倡使用有帮助的编码)
表达能力强是函数式编程的优势之一,但是这对于我们的代码意味着什么呢?在这部分内容中,我们将比较命令式和函数式代码的示例,判断这两种的表达能力和简洁性的能力。我们还能够了解到这些品质如何确保可读性,还需要考虑一个反面示例:对简洁性的过度追求导致代码无用。最后我们将会介绍 Java8 对于函数组合中的垂直对其点的约定。尽管 Java8 函数式编程已经出现很长时间了,但是目前来说依然没有得到充分的推广。大翻译 2018-01-08 15:38:31 · 715 阅读 · 0 评论 -
Java 8 新语法习惯 (传递表达式的替代方案)
Lambda 表达式广泛用在函数式编程中,但它们很难阅读和理解。在许多情况下,lambda 表达式存在只是为了传递一个或多个形参,最好将它替换为方法引用。在本文中,将学习如何识别代码中的传递 lambda 表达式,以及如何将他们替换为相应的方法引用。方法引用的使用需要学习,但是长期收益将会大于你的付出。传递 lambda 表达式是什么?在函数式编程中常常传递 lambda 表达式作为匿转载 2018-01-09 13:19:43 · 514 阅读 · 0 评论 -
Java 8 新语法习惯 (完美的 lambda 表达式只有一行)
现在我们已经了解到函数组合的一个好处是它会获得富于表达的代码。编写简短的 lambda 表达式是实现这一功能的关键能力。本文会加深您目前对创建单行 lambda 表达式的各个方面的了解。转载 2018-01-10 10:25:54 · 1428 阅读 · 2 评论 -
Java8 新语法习惯 (类型推断)
学习如何在 lambda 表达式中使用类型推断,掌握改进参数命名的技巧。概览Java8 是一个支持类型推断的 Java 版本,而且它仅对 lambda 表达式支持此功能。在 lambda 表达式中使用类型推断具有强大的作用,它将帮助您做好准备来应对未来的 Java 版本,在以后的版本中还会将类型推断用于变量等更多可能。这里的诀窍在于恰当地命名参数,相信 Java 编译器会推断出剩余的信息。大多数时候转载 2018-01-11 15:06:05 · 1818 阅读 · 0 评论 -
java编程思想之并发(共享资源)
有了并发我们可以同时做很多事情,但是,两个或者多个线程互相干扰的问题也存在。如果不防范这种冲突,就可能出现两个线程同时访问一个银行账户,向同一个打印机打印,改变同一个值等问题。关注我的公号:Android开发吹牛皮共享资源单个线程每次只能做一件事情。因为只有一个实体所以永远不用担心两个人在同一个地方停车的问题。但是多线程会在同时访问一个资源。不正确的访问资源我们先做一个实验,多个任务。一个任务产生一原创 2017-12-26 16:35:48 · 400 阅读 · 0 评论 -
自定义AppManager管理所有的activity
我们在项目中会经常遇到需要退出程序,关闭某一个Activity的需求,如果不事先定义好,退出activity将会很麻烦,相信你们在网上也寻找到过很多退出activity的方法,大多都不能很好的退出我们的activity。今天我为大家介绍一下如何定义一个AppManager,来达到退出我们的activity。 首先呢,我先介绍一个java类,java.util.Stack任务栈。我们在程原创 2016-03-23 13:50:56 · 639 阅读 · 0 评论 -
Java 冒泡排序
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作原创 2016-04-18 09:47:49 · 821 阅读 · 0 评论 -
java语言设计对象导论一
我们之所以将自然界分解,组织成各种概念,并按其含义分类。主要是我们是整个口语交流社会共同遵守协定的参与者,这个协定以语言的形式固定下来,除非赞成这个协定中的有关语言的组织和分类,否则将无法交流,所以我们在java中将自然界的万物都视为对象。 1.1抽象过程。 所有的编程语言都提供抽象机制。可以认为人们所能解决问题的复杂性取决于抽象的类型和质量。面向对象在解决问题的时候会原创 2016-10-25 00:06:32 · 810 阅读 · 1 评论 -
java语言设计对象导论二
今天继续写java编程思想中的,对象导论问题。一起来探索java的奥秘。 1.1继承。 有了对象的概念我们就可以形象的描述问题空间的表示,而不用受制于必须使用底层机器语言。这些概念用class表示,这是变成的基本单位。遗憾的是这样做有很多麻烦,比如我们创建一个类,即使另一个新类与其具有相似的功能,我们也不得不重新建立一个新类,如果我们能以此为基础,复制他,然后通过添加和修改副本原创 2016-10-26 23:37:32 · 1078 阅读 · 1 评论 -
java给定日期区间计算其中的周几有几天
package com.example;import java.util.Calendar;import java.util.Date;public class MyClass { public static void main(String[] args){ int x = getMondayCount("2016/10/27", "2016/11/24");原创 2016-10-27 18:10:42 · 980 阅读 · 0 评论 -
JAVA反射详解
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。原创 2016-12-21 13:10:09 · 384 阅读 · 0 评论 -
全面解析JAVA注解详解
定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。作用分类:①编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】② 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】③编译检查:通过原创 2016-12-21 16:30:40 · 1067 阅读 · 0 评论 -
JVM之java虚拟机详解
jvm是java虚拟机的简称,jvm是一种用于计算机设备的规范。它是一个虚构出来的计算机,通过在真实的计算机上模拟各种计算机的功能来实现。java语言有一个非常重要的特点就是跨平台性,而使用java虚拟几是实现这一特点的关键。 下图是一张显示jvm核心组件的示意图。 一,上图显示的组件分为两个内容来看,一个是线程创建的组件,一个是线程共享的组件。原创 2016-12-20 12:42:14 · 471 阅读 · 0 评论 -
JAVA泛型详解
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分贝成为泛型类、泛型接口、泛型方法。Java语言引入泛型的好处就是安全简单。 在Java SE 1.5之前,没有泛型的情况下,通过堆类型Object的引用来实现参数的“任意化”,这样做的缺点就是要进行显式的强制类型转换,而这种转换要求开发者原创 2016-12-20 19:14:10 · 446 阅读 · 0 评论 -
java语言一切都是对象
java语言假设我们只进行面向对象的程序设计。也就是说,在开始用java进行设计之前,必须将思想转换到面向对象的世界中来。面向对象的思想使你具备使用这样一种变成语言的能力。java语言学习起来更简单,也比其他的OOP语言更佳容易。java中一切皆是对象。 java语言用引用操作对象。每一种语言都有自己操作内存中元素的方式。程序员必须注意将要操作的元素的数据类型是什么。你是直接操作元素,原创 2017-03-14 23:03:33 · 1536 阅读 · 0 评论 -
Java 多线程之synchronized关键字详解
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。同步机制可以使用synchronized关键字实现。当synchronized关键字修饰一个方法时,这个方法叫做同步方法。当这个方法执行完或者发生异常时,会自动释放这个锁。1,下面来看一下两个线程在执行同一个方法的例子。package com.example;/**原创 2017-05-27 14:51:15 · 511 阅读 · 0 评论 -
Android压缩图片并且保存到本地内存卡中
亲爱的同学们,相信我们在软件开发中经常会遇到拍照,选择相册上传的功能。前几天遇到一个这样的一个问题。后台要求我上传的图片不能超过500KB,大家知道我们现在的智能手机像素越来越高,拍照的照片一般都是几兆甚至一二十兆。那么我们改怎么做呢,答案是一定的,那就是先进行压缩,然后在保存压缩后的图片上传。最近在网络上也搜索到了很多关于压缩的内容,相信大家会有和我同感,为什么都写的不清楚,或许我们可以实现我们原创 2016-03-28 21:34:07 · 2602 阅读 · 0 评论 -
java编程思想之并发(认识多线程)
原创内容本人公众号:Android开发吹牛皮 个人站点:chaodongyang.com编程问题中的相当一大部分都可以通过顺序编程来解决。然而,对于某些问题,如果能够并行的执行程序中的多个部分,则会变得非常方便甚至非常必要,这些部分要么可以并发执行,要么在多处理器环境下可以同时执行。并发编程可以使程序执行速度得到极大的提高,或者为设计某些类型的程序提供更简单的模型。学习并发编程就像进入一个全新的领原创 2017-12-25 16:58:13 · 390 阅读 · 0 评论 -
Java8 新语法习惯 (函数接口)
了解如何创建自定义函数接口,以及为什么应该尽量使用内置的接口。概览lambda 表达式的类型是什么?一些语言使用函数值或函数对象来表示 lambda 表达式,但是 Java 语言没有这么做。Java 使用函数接口来表示 lambda 表达式类型。这其实是一种确保 Java 语言旧版本的向后兼容性的有效途径。看下面一段代码:Thread thread = new Thread(new Runnable翻译 2018-01-10 15:22:56 · 315 阅读 · 0 评论