自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

红涛在反思的blog

关注音视频前后端,也会分享记录一些工作、财务、感情、生活方面的思考与成长...

原创 java夯实基础系列:数组

数组: #数组的定义以及数组的使用 ``` public class Test1 { public static void main(String[] args) { int[] arr = new int[]{3, 4, 5}; int[] arr2...

2016-07-31 22:52:12

阅读数 623

评论数 0

原创 java夯实基础系列:正则表达式

#一.引入 需求:验证qq是否合法:5-15位,不能以0开头,全是数字 一般做法与使用正则表达式的做法: ``` public class Demo1 { public static void main(String[] args) { String qq = &qu...

2016-07-31 22:50:37

阅读数 784

评论数 0

原创 java夯实基础系列:IO

看大图

2016-07-31 22:50:11

阅读数 603

评论数 0

原创 java夯实基础系列:集合

容器 #一.引入 为什么需要集合? 数组存在两个缺陷: 数组长度难以扩充 数组中元素类型必须相同 容器可以弥补数组的这两个缺陷 #二.集合体系 Java的所有的集合体系都是实现了Collection接口,所有通用的 Collection 实现类(通常通过它的一个子接口间接实现 Colle...

2016-07-31 22:49:41

阅读数 912

评论数 0

原创 java夯实基础系列:异常

异常你可以认为是对象,在xx情况下产生异常对象,异常对象是虚拟机产生的,不是我们来定义的,java中异常也是对象。 异常:中断了正常指令流的事件 异常和语法错误是完全不一样的东西 异常时运行中出现的,而语法错误连编译都是通不过的

2016-07-31 22:49:05

阅读数 880

评论数 0

原创 java夯实基础系列:内部类

将一个类定义在另一个类的里面,对里面那个类就称为内部类(内置类,嵌套类)。 **访问规则:** 内部类可以直接访问外部类中的成员,包括私有成员(原因是内部类持有一个外部类的引用,该引用的写法是Outer.this) 外部类要访问内部类中的成员必须要建立内部类的对象 内部类属于外部类的一个成员,...

2016-07-31 22:48:28

阅读数 602

评论数 0

原创 java夯实基础系列:深入理解static、final关键字

static表示“全局”或者“静态”的意思。 static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有...

2016-07-31 22:47:17

阅读数 786

评论数 0

原创 java夯实基础系列:注解

从java 5.0开始,为我们提供注解功能,通过注解可以限制代码的重载,过时,以及实现一些其他功能,这里,就来分析一下java的注解。  本文旨在帮助大家感性的认识注解,一般注解在架构设计中会常用到,可以让代码变得非常简洁,实现代码的复用。注解的作用  注解为我们在代码中添加信息提供了一种形式化的...

2016-07-30 21:57:38

阅读数 644

评论数 0

原创 java夯实基础系列:枚举

定义Java 代码的两个基本的构造块是 类和 接口。现在又引入了 枚举,一般简称它为enum。这个新类型允许您表示特定的数据点,这些数据点只接受分配时预先定义的值集合。当然,熟练的程序员可以用静态常量实现这项功能,如清单 1 所示:public class OldGrade { public ...

2016-07-30 21:27:36

阅读数 620

评论数 0

原创 java夯实基础系列:装箱、拆箱

定义  自动装箱和拆箱从Java 1.5开始引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等情况下使用原始类型或者对象类型更加简单直接。  如果你在Java1.5下进行过编程的话,你一定不会陌生这一点,你不能直接地向集合(Coll...

2016-07-30 21:09:11

阅读数 693

评论数 0

原创 java夯实基础系列:接口与抽象类

接口  接口在Java当中是通过关键字interface来实现,接口不是类,所以也不能被实例化,接口是用来建立类与类之间的协议,它的提供的只是一种形式,而没有具体的实现。实现类实现(implements)接口,必须实现接口的全部方法   接口是抽象类的延伸,Java不允许多重继承(即不能有多个父...

2016-07-30 20:04:58

阅读数 672

评论数 0

原创 java夯实基础系列:面对对象原则

面对对象原则面对对象与面向过程区别面向过程1.优点 对于需求明确、规模不大、变动较小的问题非常适合 符合人们的思维习惯2.缺点 数据和操作分不开 程序结构的依赖关系不合理 对于需求不明确、变动较大、规模很大的问题,显得比较吃力3.面向过程的思维方式 分析出解决问题所需要的步骤,然后用函...

2016-07-30 19:19:48

阅读数 718

评论数 0

原创 java夯实基础系列:java起源、特点及各版本的新特性

对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言。今天先为大家介绍一下JDK1.5版本到JDK1.7版本的特性。希望能给予帮助。java的由来  Java是一种计算机编程语言,拥有跨平台、面...

2016-07-30 11:54:15

阅读数 923

评论数 0

原创 java夯实基础系列:学习结构和方向

在初级开发阶段,我们可能就稍微的懂点java,就可以完全胜任应用开发,但是真正的资深工程师,他们都是向下延伸的,不仅知道怎么用,还是知道为什么,这样才能写出性能更好的代码,强烈建议在水平达到一定级别时,多在基本功上下功夫。

2016-07-29 14:47:16

阅读数 820

评论数 0

原创 java夯实基础系列:JAVA技能树

评估标准:了解应用熟练模块内容详情掌握程度评估难点入门简介 1.了解这门语言的由来2.它的特点及譬如它各个版本迭代的特点3.开发环境4.IDE5.了解基本的注释与代码分割的规范6.新特性熟练 数据结构 1.关键字:final、static、this、super等等2. 定义变量与常量,系统的内置的...

2016-07-29 14:26:57

阅读数 3112

评论数 0

原创 2016.02.16我的上司对我说的一席话

关于职业规划 5年过得非常快,自己其实没有多少时间去折腾的。工作的前五年时间没有一天早走过,没有过过一个好的周末,就是为了等到30岁的时候有所成就。 android 6-7年内不会出现式微,一旦式微你可以再转呀,不然你的android经验白瞎了。比如晓宇做了一年android就成为高级工程师了,因...

2016-07-28 22:34:04

阅读数 1017

评论数 0

原创 源码阅读系列:源码阅读方法

一.前提条件1.纯熟扎实的语言基础如果你学java,却对反射、泛型、注解一直半解,还是不要去读什么框架了,回去把java基础打扎实反而对你自身更有益。2.UML能力在软件工程中,UML在软件的不同生命周期阶段扮演着非常重要的角色,没有好的UML水平,面对大型的项目源码会束手无策。3.对业务的理解如...

2016-07-21 17:54:16

阅读数 8765

评论数 2

原创 源码阅读系列:为什么要阅读源码?

一.为什么要阅读代码养成阅读高品质代码的习惯,可以提高编写代码的能力。计算机科学是一门实践性很强的学科,很多内容在书本上根本学不到。就拿项目的组织来说,没有什么书籍专门论述应该如何组织与管理项目的目录结构,因为这本身就是一种见仁见智的活动,要受到各种因素的影响。代码中往往凝聚着许多实践性的知识,通...

2016-07-21 17:34:59

阅读数 2622

评论数 0

原创 java夯实基础系列:泛型

一.概念1.为什么需要泛型?不使用泛型时:public class Test01 { public static void main(String[] args) { HashMap map = new HashMap(); map.put("m1&...

2016-07-20 18:00:42

阅读数 4630

评论数 0

原创 MVP架构实践

MVP理论简介为何要在android中引入MVP  在Android项目中,Activity和Fragment占据了大部分的开发工作。而MVP设计模式可以优化Activity和Fragment的代码。  相信很多人阅读代码的时候,都是从Activity开始的,对着一个1000+行代码的Activi...

2016-07-18 17:01:31

阅读数 2958

评论数 0

原创 重构一书问题笔记

几个不需要看的地方以下几个比较特殊,感觉用处并没有那么广。Change value to Reference 将值对象改为引用对象??Change Reference to Value 将引用对象改为值对象???Duplicate Observed data 复制被监视数据???Change Un...

2016-07-17 08:56:41

阅读数 1044

评论数 0

转载 android学习路线:如何成长为高级工程师

前言  之所以写这篇文章,是因为最近博客和我的开发群( 215680213 )中,不少小伙伴都让我讲讲Android学习路线,所以我决定写一篇博客,来说明这个问题。既然有不少小伙伴来咨询这个问题,说明大家都还是想快速地提高技术,毕竟技术的提高是职业发展中不可或缺的一步,技术好了,才能得到认可,才能...

2016-07-16 11:49:33

阅读数 1153

评论数 0

原创 mac快捷键

mac系统快捷键:全屏截图:command+shift+3 自定义区域截图:command+shift+4 加标注如何截图:使用软件 切换输入法:command+空格键 取消上一次的输入(或者返回上一步):command+z 重新输入/返回下一步:command+shift+z 强制结...

2016-07-15 09:20:54

阅读数 1025

评论数 0

转载 程序员调试能力提升

在软件行业中,个人觉得每个Coder、Leader(那些当了Leader以后就不需要Code的除外)都应该除了具有良好的编码能力以外,最为主要的就是Debug的能力要坚实。千万不要告诉我Debug工作是Tester和QA的事情,首先你要认识到Debug的能力是一个并不简单的能力,能帮助你提高你的开...

2016-07-14 22:22:20

阅读数 3014

评论数 0

原创 java并发包学习系列:生产者消费者模式

生产者消费者模式是一个经典的多线程设计模式,它为多线程间的协作提供了良好的解决方案。在生产者消费者模式中,通常有两类线程,即若干个生产者线程和若干个消费者线程。生产者线程足额提交用户请求,消费者线程负责具体处理生产者提交的任务。生产者和消费者之间则通过共享内存缓冲区进行通信。

2016-07-13 19:48:10

阅读数 1290

评论数 0

原创 java并发包学习系列:future模式

future模式是多线程开发中非常常见的一种设计模式,它的核心思想是异步调用。当我们需要调用一个函数方法时,如果这个函数执行很慢,那么我们就要进行等待。但有时候我们可能并不着急着要结果。因此,我们可以让被调用者立即返回,让他在后台慢慢处理这个请求。对于调用者来说,则可以先处理一些其他任务,在真正需...

2016-07-13 19:47:36

阅读数 1384

评论数 0

原创 java并发包学习系列:jdk并发容器

同步容器可以简单地理解为通过synchronized来实现同步的容器,如果有多个线程调用同步容器的方法,它们将会串行执行。 同步容器将它们的状态封装起来,并对每一个公有方法进行同步。主要包括:

2016-07-13 19:47:05

阅读数 2346

评论数 0

原创 java并发包学习系列:fork/join

Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。

2016-07-13 19:46:28

阅读数 1167

评论数 0

原创 java并发包学习系列:线程复用之线程池

频繁使用new Thread来创建线程的方式并不太好。因为每次new Thread新建和销毁对象性能较差,线程缺乏统一管理。好在Java提供了线程池,它能够有效的管理、调度线程,避免过多的资源消耗。优点如下:

2016-07-13 19:45:53

阅读数 4709

评论数 1

原创 java并发包学习系列:几个多线程控制工具类

Java的concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。

2016-07-13 19:45:26

阅读数 1703

评论数 0

原创 java并发包学习系列:读写锁

ReadWriteLock是jdk5中提供的读写分离锁。读写分离锁可以有效的帮助减少锁竞争,以提升性能。用锁分离的机制来提升性能非常容易理解,比如线程A1,A2,A3进行写操作,B1,B2,B3进行读操作,如果使用重入锁或者内部锁,则理论上说所有读之间、读和写之间、写和写之间都是串行操作。当B1进...

2016-07-13 19:44:42

阅读数 1255

评论数 0

原创 java并发包学习系列:信号量

信号量为多线程协作提供了更为强大的控制方法。广义上说,信号量是对锁的扩展。无论是内部锁synchronized还是重入锁ReentrantLock,一次都只允许一个线程访问一个资源,而信号量却可以指定多个线程,同时访问某一个资源。信号量主要提供了一下构造函数:

2016-07-13 19:44:08

阅读数 890

评论数 0

原创 java并发包学习系列:重入锁与Condition条件

重入锁   这里介绍一下synchronized、wait、notify方法的替代品(或者说是增强版)-重入锁。重入锁是可以完全替代以上的内容的。并且重入锁的性能是远高于synchronized的,但是jdk6.0开始,jdk对synchronized做了大量的优化,使得两者性能差距不大。  ...

2016-07-13 19:43:37

阅读数 2931

评论数 0

原创 java并发包学习系列:synchronized和volatile

关键字synchronized的作用是实现进程间的同步。它的工作是对同步的代码加锁,使得每一次,只能有一个线程进入同步块,从而保证线程间的安全性(即同步块每次应该只有一个线程可以执行)。

2016-07-13 19:42:32

阅读数 907

评论数 0

原创 java并发包学习系列:java并行基础

进程:这里不讲枯燥的概念,举一个例子:你在windows系统中,看到后缀为.exe的文件,都是一个程序。不过程序是死的,静态的。当你双击这个.exe执行的时候,这个.exe文件的指令就会被加载,那么你就能得到一个有关这个.exe程序的一个进程。进程是活的,或者说是正在被执行的。

2016-07-13 19:41:05

阅读数 1640

评论数 0

原创 java并发包学习系列:概论

并发在海量任务处理时有优势非常的明显,如果是串行的执行海量任务,那时间就是累加的关系,但是如果采用并发设计,就相当于同时执行了多个任务,这样可以大幅提高任务的执行速度。

2016-07-13 19:40:25

阅读数 1436

评论数 0

原创 重构系列之重构的标志:《重构》代码的坏味道

重复代码 1. 表现:同一个类的两个函数含有相同的表达式。 方案:提炼函数。 2. 表现:两个互为兄弟的子类内含有相同表达式。 方案:函数上移,推入超类。 3. 表现:如果两个毫不相关的类出现重复代码。 方案:对其中一个类采用提炼类的方式,将重复代码提取到一个独立类中(类似工具类...

2016-07-10 22:14:46

阅读数 1473

评论数 0

原创 重构系列之大型重构

Tease apart Inheritance 梳理并分解继承体系 某个继承体系同时承担两项责任 ,建立两个继承体系,并通过委托关系让其中一个可以调用另一个 .

2016-07-10 16:55:31

阅读数 853

评论数 0

原创 重构系列之对象间的重构:《重构》处理概括关系

这里说到的概括关系指的就是继承关系。 Pull Up Field 字段上移 两个子类拥有相同的字段。将该字段移至超类。

2016-07-10 16:54:56

阅读数 978

评论数 0

原创 重构系列之对象间的重构:《重构》对象之间搬移特性

在面对对象的设计中,“决定把责任放到哪儿”即使不是最重要的事情,也是最重要的事之一。我使用对象技术十几年了,但还是不能一开始就保证做对。这曾经让我很苦恼,但现在我知道,在这种情况下,可以运用重构,改变自己原先的设计。 Move Method 移动函数 类的行为做到单一职责 不要越俎代庖: 你的...

2016-07-10 16:54:21

阅读数 1029

评论数 0

提示
确定要删除当前文章?
取消 删除