随笔分类 - java提高篇
摘要:二、依赖注入的应用模式前面我们了解了依赖注入的基本概念,也对一些依赖注入框架进行了简单的介绍,这一章我们主要来讨论作为开发者如何利用依赖注入框架来实现依赖注入的设计思想。1.依赖注入的方式前面我们提到,所谓“依赖”,最简单地去解释就是一个Java类里的成员变量。我们都知道,给一个类中的私有成员变量赋...
阅读全文
摘要:3.2.“好莱坞原则”看了前面关于依赖注入概念的描述,我们来提炼出依赖注入的核心思想。如果说传统的组件间耦合方式,例如new、工厂模式等,是一种由开发者主动去构建依赖对象的话,那么依赖注入模式则是其反向的,即被动地等待别人做好一个依赖对象提供给我。在美国好莱坞众多电影工厂在寻找演员的时候通常奉行着这...
阅读全文
摘要:3.“依赖注入”登场于是诸多优秀的IT工程师开始想出了更加轻量便利、更加具有可测试性和可维护性的设计模式——IoC模式。IoC,即Inversion of Control的缩写,中文里被称作“控制反转”。至于为什么会有这么一个看似古怪的名字,我们稍后会做解释。2004年著名软件工程学者和工程师Mar...
阅读全文
摘要:2.2.工厂模式基于手工构建组件的诸多弱点,1995年“大师4人组”(GoF)在其经典著作《DesignPatterns》一书中提出了“工厂模式”,这种模式在一定程度上有效的解决了之前所遇到的问题,时至今日仍然被大量应用于软件工程的设计当中。我们先来看之前的例子,首先来创建一个银行工厂和一个存折工厂...
阅读全文
摘要:一、入门:依赖注入作为一种全新的设计模式理念,“依赖注入”这个词汇在软件设计开发中已经是越来越耳熟能详了,而各种流行于开源社区的“依赖注入框架”,也越来越多的被当作软件工程开发过程中使用的基础框架。这一章我们主要介绍什么是依赖注入、它的来源是什么、以及能给我们带来什么样的好处。1.“依赖”的概念要了...
阅读全文
摘要:英文原文:10-object-oriented-design-principles 面向对象理论是面向对象编程的核心,但是我发现大部分 Java 程序员热衷于像单例模式、装饰者模式或观察者模式这样的设计模式,而并没有十分注意学习面向对象的分析和设计。学习面向编程的基础(如抽象,封装,多态,继承等...
阅读全文
摘要:1.简介依赖注入和控制反转,目的是为了使类与类之间解耦合,提高系统的可扩展性和可维护性,下面通过一个例子来引入这一概念。2.案例1)一般情况下的类耦合Main.javapublic class Main { public static void main(String[] args) { ...
阅读全文
摘要:一、编写Dao类?1234567891011package cn.com.songjy.annotation;import java.util.Date;public class MyDao {public String time(){return "你好,现在的时间是:" + new Date()...
阅读全文
摘要:字符编码,就是对日常的控制符号、文字和常用符号的二进制表示。为了准确的表示如何编号,怎么生产八位字节流,Unicode Technical Report (UTR) #17提出现代编码模型的5个层次: 1. 抽象字符表:系统所支持的所有抽象字符的集合 2. 编码字符集:就是通过某种规则把抽象字符映射...
阅读全文
摘要:责任链设计模式(Chain of Responsibility)的应用有:Java Web中的过滤器链、Struts2中的拦截器栈。先看一个问题:给定一个字符串“被就业了:),敏感信息,”,对其中的HTML标记和敏感词进行过滤或替换。本文主要以该问题设计方法的演变来讲解责任链设计模式。第一种设计:没...
阅读全文
摘要:我们要讲E类中的数据变化通知A类,这样通过接口F来实现。具体原理就是E的每次数据改变都让其通知接口;而A类继承接口,所以每次E的调用接口都会触发A类的数据更改事件的触发。首先创建一个类E:public class E { private E context; private static int i...
阅读全文
摘要:在Java语言中, abstract class 和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽...
阅读全文
摘要:1.通过Comparable实现排序package Comparable;import java.util.Arrays;public class ComparableUser implements Comparable { private String id; private int ...
阅读全文
摘要:java的Comparator和Comparable 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。 一、Comparator 强行对某个对象collection进行整体排序的比较函数,可以将Comparat...
阅读全文
摘要:你以前听到的谈论关于Java8的所有都是围绕lambda表达式. 但它仅仅是Java8的一部分. Java 8 有许多新特性---一些强大的新类和语法, 还有其他的从一开始就应该具有的东西.我将要介绍我认为值得了解的10个精华特性. 它们中最少也会有一个或两个你想要试一试, 所以我们开始吧!1. 默...
阅读全文
摘要:本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API“Java is still not dead—and people a...
阅读全文
摘要:问题描述:一圆桌前坐着5位哲学家,两个人中间有一只筷子,桌子中央有面条。哲学家思考问题,当饿了的时候拿起左右两只筷子吃饭,必须拿到两只筷子才能吃饭。上述问题会产生死锁的情况,当5个哲学家都拿起自己右手边的筷子,准备拿左手边的筷子时产生死锁现象。解决办法:1、添加一个服务生,只有当经过服务生同意之后才...
阅读全文
摘要:这是一个比Josh Bloch的Effective Java规则更精妙的10条Java编码实践的列表。和Josh Bloch的列表容易学习并且关注日常情况相比,这个列表将包含涉及API/SPI设计中不常见的情况,可能有很大影响。我在编写和维护jOOQ(Java中内部DSL建模的SQL)时遇到过这些。...
阅读全文
摘要:1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 2.Java代码 new String() 和 new String(“”)都是申明一个新的空字符串,...
阅读全文
摘要:1. Java中堆栈(stack)和堆(heap)(1)内存分配的策略 按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代...
阅读全文