分类 默认分类 下的文章

Java8解决了什么?


在学习面向对象时,许多人都会用Java来举例子,但是其实Java并非纯正的面向对象语言,最明显的就是:int,double等基本类型不是对象。
自从java8出来过后,引入了流,函数式编程,就更不是在向着面向对象发展了。有人可能会感到诧异,为啥越来越偏离我们遵循了这么久的面向对象设计模式?

其实很简单,我们对工具的改造的最终目的都是为了解决问题,以前有面向过程解决不了的问题,那么面向对象出来解决了;现在面向对象有许多问题,那么就可以用函数式编程来解决,所以这些变化是很自然的,Java要在不同时代的保持自己的活力,就必须与时俱进,所以Java8的出现就是自然而然的。


Java String 探索


今天看到了一个Java string的相关问题,解决问题的过程中就想把string 好好理顺了,总结在这里。

== 和 equals()

== 是判断两个变量是否指向同一个对象,equals()只判断两个字符串内容是否相同

public class Cons {
    public static void main(String[] args) throws InterruptedException {

        String s2 = new String("vv");
        String s3 = "vv";
        System.out.println(s2 == s3);//false
        System.out.println(s3.equals(s2));//true
    }
}


Java多线程之内置锁与显式锁


Java中具有通过Synchronized实现的内置锁,和ReentrantLock实现的显示锁,这两种锁各有各的好处,算是互有补充,今天就来做一个总结。

Synchronized

内置锁获得锁和释放锁是隐式的,进入synchronized修饰的代码就获得锁,走出相应的代码就释放锁。

synchronized(list){ //获得锁
    list.append();
    list.count();
}//释放锁


AOP,MVC——Spring的学习以及对CodeIgniter的反思


AOP?原来我们早就见过

最近在学习Spring,深深地感到这个框架之所以这么流行不是没有道理的,我之前一直用的是PHP,框架用的就是codeigniter,由于其简洁轻量的特性很是让人喜爱,可是也有很多问题,然而很多问题Spring都是解决了的,比如
PHP项目中CodeIgniter使用的一些建议,这里提到的登录逻辑的实现,就是具有Spring 面向切面编程 的雏形。所以刚看到Spring的面向切面编程(AOP),就觉得:原来我们早就见过。其本质上就是关注点的分离,可以清晰的分离不同的业务逻辑,既提高了开发效率(不同的逻辑由不同的人并行书写),也利于代码维护(不用寻找遍布整个项目的log,或者验证代码)。