Java
JohanMan
这个作者很懒,什么都没留下…
展开
-
Java多线程 - wait/notify/notifyAll
这几个方法都是Object的方法,主要配合synchronized同步一起使用。这涉及到Java的锁机制,可以参考我的一篇博文 Java多线程 - 锁机制。我们接下来看看这几个方法:(1)waitpublic final void wait() throws InterruptedException,IllegalMonitorStateException线程要调用Object实例对象的wait方原创 2017-07-20 15:25:42 · 523 阅读 · 0 评论 -
Linux JDK和Tomcat环境搭建
最近想做一个记账的App,为了能同步到云端,自己打算搭建一个服务器!于是乎,在网上搜索,看有没有免费的云主机,找了半天,终于让我给逮住了!!这里分享一下,不用花钱也能租赁云主机网址:https://www.myfreeyun.com/ 。真的不用花钱!!! 真的不用花钱!!! 真的不用花钱!!!等了一天,终于可以免费使用,我的云主机上装的是 Centos7.2 (64位) 纯净系统(无图形界面)原创 2017-12-06 11:27:49 · 443 阅读 · 0 评论 -
Java设计原则 - 里氏替换原则
六大设计原则Java设计原则 - 单一职责原则Java设计原则 - 里氏替换原则Java设计原则 - 依赖倒置原则Java设计原则 - 接口隔离原则Java设计原则 - 迪米特法则Java设计原则 - 开闭原则定义 如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行...原创 2018-03-14 17:46:41 · 1602 阅读 · 1 评论 -
Java设计原则 - 依赖倒置原则
六大设计原则Java设计原则 - 单一职责原则Java设计原则 - 里氏替换原则Java设计原则 - 依赖倒置原则Java设计原则 - 接口隔离原则Java设计原则 - 迪米特法则Java设计原则 - 开闭原则定义 高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。高层模块主要负责复杂的业务逻辑,低层模块主要负责基本的原子操...原创 2018-03-14 22:08:47 · 889 阅读 · 1 评论 -
Java设计原则 - 接口隔离原则
六大设计原则Java设计原则 - 单一职责原则Java设计原则 - 里氏替换原则Java设计原则 - 依赖倒置原则Java设计原则 - 接口隔离原则Java设计原则 - 迪米特法则Java设计原则 - 开闭原则定义 客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。 总的来说,我们应该要适度拆分接口,举个例子就明白为什么要拆分接口了。...原创 2018-03-15 11:07:13 · 706 阅读 · 0 评论 -
Java设计原则 - 迪米特法则
六大设计原则Java设计原则 - 单一职责原则Java设计原则 - 里氏替换原则Java设计原则 - 依赖倒置原则Java设计原则 - 接口隔离原则Java设计原则 - 迪米特法则Java设计原则 - 开闭原则定义 一个对象应该对其他对象保持最少的了解迪米特法则又叫最少知道原则,只与朋友说话,不要与陌生人说话。对类而言,哪些是朋友类呢?出现在成员变量、方法的输入...原创 2018-03-15 14:51:17 · 773 阅读 · 0 评论 -
Java设计原则 - 开闭原则
六大设计原则Java设计原则 - 单一职责原则Java设计原则 - 里氏替换原则Java设计原则 - 依赖倒置原则Java设计原则 - 接口隔离原则Java设计原则 - 迪米特法则Java设计原则 - 开闭原则定义 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭在所有设计原则的定义中,开闭原则的定义是最模糊的,只告诉设计软件时,应该对扩展开放,对修改关闭...原创 2018-03-16 09:32:52 · 732 阅读 · 0 评论 -
Java设计模式 - 开篇
简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。分类这些模式可以分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)、行为型模...原创 2018-03-19 20:50:23 · 240 阅读 · 0 评论 -
Java设计原则 - 单一职责原则
这里想吐槽一下,可能由于最近CSDN升级,导致我辛辛苦苦写了两天的记录丢失了(退出前确定按了保存的),真是够了!!!现在权当再复习一遍!好了,废话不多说,开始整理Java设计原则!六大设计原则Java设计原则 - 单一职责原则Java设计原则 - 里氏替换原则Java设计原则 - 依赖倒置原则Java设计原则 - 接口隔离原则Java设计原则 - 迪米特法则Java设计原则...原创 2018-03-14 15:51:55 · 1328 阅读 · 0 评论 -
Java 类加载过程-简单
在java中,关键字“new”用于创建对象,我们简单的看看new一个对象的过程。class Student { // 静态变量 private static String NAME = "小明"; // 普通变量 private int age; static { System.out.println("Student 静态块"); }原创 2017-11-20 09:59:02 · 264 阅读 · 0 评论 -
Java 类加载器-简单
Now我们来简单了解一下Java的类加载器。类加载器 简述大家都知道,完整的Java程序由n个.class文件组成。Java程序运行时,类加载器并不会加载全部class文件,而是“按需加载”。一开始,类加载器会先加载入口函数“main”所在的class,并运行“main”方法。在“main”方法中,我们调用了哪个类(如 new Student),就将哪个类的class(Student.class)文原创 2017-11-20 11:23:13 · 315 阅读 · 0 评论 -
Java多线程 - 锁机制
为什么要锁如果多个线程修改同一个数据对象,那么会对数据造成破坏,出现“意料之外”的结果,显然不是我们想要,所以我们需要线程同步,也就是需要一把“锁”。 举个例子:package com.johan.syncthread;public class MainApp { public static void main(String[] args) { DataClass dataC原创 2017-07-20 11:36:24 · 446 阅读 · 0 评论 -
Rxjava - 简单实现
由于Rxjava比较强大,自然代码量也挺多,源码学习难度相当大。因此,当我分析flapMap时,已经晕了,所以决定顺藤摸瓜,以简单的代码模拟Rxjava小部分功能,相信能帮助大家理解Rxjava原理。在阅读Rxjava源码时,我都是以观察者模式阅读,观察者频繁变换,搞得我晕晕的,可是我以生产者-消费者模式模拟Rxjava时,发现顿时豁然开朗,所以这里我以生产者-消费者模式类命名,这样更容易理解。数据原创 2017-08-03 09:45:25 · 736 阅读 · 0 评论 -
Rxjava - 线程调度
很多开发者喜欢使用Rxjava的原因之一应该就是 – 自由的控制线程,而且控制的方式超级简单,利用 subscribeOn() 结合 observeOn()便可切换你想要的线程,超帅的有木有!!调度器所谓调度器,其实实质就是线程,想要程序执行的地方。Rxjava提供了一下几种调度器:// 在当前线程立即开始执行任务Schedulers.immediate( )// 用于IO密集型任务,如异步阻塞I原创 2017-08-03 15:03:07 · 843 阅读 · 0 评论 -
Rxjava - flapMap变换
Rxjava是一个异步框架,类似于AsyncTask,其优点在于让你的异步代码更简洁,阅读代码会更轻松。知己知彼,百战不殆。我们从源码分析Rxjava原理,可以让我们更轻松的使用Rxjava,最主要还能学到Rxjava响应式编程的思想。照例,先来个小例子:Observable<String> originObservable = Observable.just("1", "2", "3");Ob原创 2017-08-02 16:45:39 · 692 阅读 · 0 评论 -
Rxjava - map变换
Rxjava是一个异步框架,类似于AsyncTask,其优点在于让你的异步代码更简洁,阅读代码会更轻松。知己知彼,百战不殆。我们从源码分析Rxjava原理,可以让我们更轻松的使用Rxjava,最主要还能学到Rxjava响应式编程的思想。还是先来一个小例子:Observable<String> observable = Observable.create(new Observable.OnSubsc原创 2017-08-01 17:43:56 · 477 阅读 · 0 评论 -
Rxjava - 基本流程
Rxjava是一个异步框架,类似于AsyncTask,其优点在于让你的异步代码更简洁,阅读代码会更轻松。知己知彼,百战不殆。我们从源码分析Rxjava原理,可以让我们更轻松的使用Rxjava,最主要还能学到Rxjava响应式编程的思想。先看一下简单的例子:// 被观察者Observable<String> observable = Observable.create(new Observable原创 2017-08-01 15:58:25 · 518 阅读 · 0 评论 -
Rxjava - 异步设计思想
rxjava听了很多,因为一般都是自己做异步框架,所以没有用rxjava真正做过项目,顶多就写过一些demo。在写demo过程中,发现rxjava很麻烦,因此果断放弃了。最近有点空闲时间,想学习多一点框架的原理及应用,看了半天rxjava源码,虽然还不至于晕,但是还不是很理解为什么要那么做,刚好看到一篇博文,主要由简单代码模拟rxjava处理异步,发现我们平常写的callback还能这么写,在这里做原创 2017-07-31 17:52:35 · 883 阅读 · 1 评论 -
Java 算法-排序
排序算法分为内排和外排,区别是是否需要外存(什么意思??算了,先不care),内排不需要,外排需要,这里学习的是内排(以下说的排序都指内排)!排序分为5大类:插入排序(直接插入排序、希尔排序)选择排序(简单选择排序、堆排序)交换排序(冒泡排序、快速排序)归并排序基数排序插入排序 - 直接插入排序示例数组:int[] arrays = {12, 35, 22, 8, 6, 26, 18,原创 2017-10-19 09:04:22 · 285 阅读 · 0 评论 -
Java方法变量中的final
今天由于对方法变量中的final有点困惑,在网上查了一下,才发现在方法变量中,final是这么一回事,这里做一下记录!什么时候方法参数才需要加final关键字?匿名/局部内部类访问外部方法参数时,外部参数需要加上final关键字。用代码来解析:public void start(int interval, final boolean beep) { /** *...转载 2018-03-27 10:13:56 · 1778 阅读 · 0 评论