emmm, 最近把Spring框架也学的差不多了, 因为最近要开始迭代小组图书管理系统2.0, 不太有时间再总结Spring In Action的学习笔记了, 所以把Spring学习笔记先放一段时间啦~ 1. bug描述: 在写Spring代码的时候, 启动Tomcat时报错. 2. bug信息: Connected to server [2017-11-16 09:28:36,551] Artifact Spring_10:war exploded: Artifact is being deployed, please wait... Nov 16, 2017 9:28:37 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile INFO: validateJarFile(/home/dela/IdeaProjects/Spring/Spring_10/out/artifacts/Spring_10 继续阅读 >>


祝一迪 17/11/16 22:03:54
本系列博客为spring In Action 这本书的学习笔记 终于学完了Spring的核心基础, 要开始学习web中的Spring了!!! Spring MVC(Model-View-Controller)是Spring的一个web框架, 在正式开始学习Spring MVC的Controller之前, 我们先来简单了解一下Spring MVC的工作机制. 一. 跟踪Spring MVC的请求 要想了解Spring MVC, 我们可以通过一个请求从客户端发起, 经过Spring MVC的各组件, 最终又返回客户端的过程为契机, 来看一下Spring MVC的各组件之间是如何相互协作的. 每当用户在浏览器里面点击链接或者提交表单的时候, 请求就开始工作了, 一个请求会经过很多站点并在站点留下或带走一些信息, 最终又返回客户端. 下图展示了请求使用Spring MVC所经历的所有站点: 接下来就上面这张图, 我们来进行详细的分析. 1. DispatcherServlet 继续阅读 >>


祝一迪 17/11/01 21:52:41
关于数据链路层我只是大概翻看了一下, 可能总结的不是很系统, 就将看到的点暂且记录下来. 一. 数据链路的作用 这里的数据链路层是将TCP/IP模型中的数据链路层的数据链路部分单独拿出来进行分析. 计算机中以二进制0/1序列来表示信息, 然而实际的通信媒介之间处理的却是电压的高低/光的闪灭以及电波的强弱等信号. 物理层的作用就是将0/1序列和这些信号进行转换. 而数据链路层处理的数据就不仅仅是单纯的0/1序列了, 而是将数据集合为一个叫做”帧”的块进行传输. 数据链路层的相关技术有: MAC寻址(物理寻址), 介质共享, 分组交换, 环路检测, VLAN, 非公有网络等. 数据链路层有多种传输方式的数据链路, 比如以太网, WLAN(虚拟局域网), PPP(点对点协议)等. 下面就上面提到的这些内容来进行逐一介绍. 二. 数据链路相关技术 1. MAC寻址 (1) MAC地址 在数据链路层传输数据时, 通过MAC地址来识别发送端和接收端. 所以MAC地址就是用来识别数据链路 继续阅读 >>


祝一迪 17/10/26 22:08:06
本系列博客为spring In Action 这本书的学习笔记 在上一篇博客中, 我们了解了AOP的基本概念和Spring中的AOP, 那么本篇博客就来实际操练一下, 看看在Spring中如何创建一个切面. 一. 编写切点 通知和切点是切面的最基本的元素. 那么要创建一个切面, 我们就从定义切点开始吧. 切点定义了在哪些连接点来应用通知. 在Spring AOP中, 要使用AspectJ的切点表达式语言来定义切点. Spring仅支持AspectJ切点指示器的一个子集, 下面的表格列出了Spring AOP所支持的AspectJ切点指示器: AspectJ指示器 描述 arg() 限制连接点匹配参数为指定类型的执行方法 @arg() 限制连接点匹配参数由指定注解标注的执行方法 execution() 用于匹配是连接点的执行方法 this() 限制连接点匹配AOP代理的Bean引用为指定类型的类 target 继续阅读 >>


祝一迪 17/10/23 21:52:09
本系列博客为spring In Action 这本书的学习笔记 早在第一篇Spring的博客里面就提到过, Spring采取了四种策略来简化Java开发, 前几篇博客着重讲了其中的一种策略: 依赖注入(DI). 那么这篇博客就要学习Spring的另一个简化Java开发的策略: 面向切面编程(AOP). DI为了使应用对象之间解耦, 而AOP则是为了使横切关注点与它们所影响的业务逻辑之间解耦. 一. 什么是面向切面编程? 在之前的Java开发中, 如果想要重用通用功能的话, 我们会使用面向对象技术中的继承或委托. 但是如果整个应用中都使用相同的基类, 继承往往会导致一个比较脆弱的对象体系, 委托可能需要对委托对象进行复杂的调用. 现在, 切面提供了取代继承和委托的另一种方案, 就是面向切面编程. 先来看一下我们在第一篇Spring博客中对面向切面编程的介绍: 面向切面编程能将遍布应用各处的功能分离出来形成可重用的组件. 我们可以这样理解面向切面编程: 面向对象编程(OOP) 继续阅读 >>


祝一迪 17/10/16 18:03:41
本系列博客为spring In Action 这本书的学习笔记 我们知道Spring的特性之一就是它的依赖注入机制. 那么当我们提到依赖注入最先想到的应该是Bean与Bean之间的依赖注入, 也就是我们前面大篇幅谈到的装配Bean, 但是依赖注入的另一个方面就是指将一个值注入到Bean的属性或者构造器参数中, 本篇博客就是来探讨一下关于值注入的一些问题. 一. 运行时值注入 在说明运行时值注入之前, 我们先来看一下在前面的博客里出现过的值注入的例子. 程序1: 在JavaConfig中的值注入的例子 @Bean public CompactDisc jay(){ return new Jay("魔杰座", "周杰伦"); } 程序2: 在XML中的值注入例子 <bean id="jay" class="AssemblingBean.SoundSystem_XML.Jay" > <constructor-arg index="0" valu 继续阅读 >>


祝一迪 17/10/12 00:59:36
本系列博客为spring In Action 这本书的学习笔记 本篇博文说是装配Bean的一些高级装配, 其中包括了环境与profile/条件化的Bean/处理自动装配的歧义性/Bean的作用域. 一. 环境与profile 我们在开发软件的时候, 有一个很大的挑战就是我们要将应用程序从开发环境迁移到生产环境. 开发环境的一些做法可能并不适合生产环境, 甚至即便迁移过去也无法正常工作. 数据库配置/加密算法以及外部系统的集成是跨环境部署时回发生的及各例子. 下面以一个数据库的例子来分析一下这种情况. 现在我们需要创建一个dataSource Bean, 在开发环境中, 使用一个嵌入式数据库回大大提高开发效率, 减少dataSource的复杂性, 并且可以使得每次启动数据库时, 它都处于一个给定的状态. 比如: 程序1: 开发时期的DataSource Bean @Bean(destroyMethod = "shutdown") public DataSource dataSo 继续阅读 >>


祝一迪 17/10/09 22:47:57
一. TCP/IP四层模型 前面我们提到过OSI七层模型, 首先来看一下TCP/IP四层模型与OSI七层模型之间的大致对应关系以及各层对应的部分网络协议. 下面我们就TCP/IP每层的功能以及每层的重要协议做一个简单了解. 1. 数据链路层 根据TCP/IP模型与OSI模型的对应关系我们可以看出, TCP/IP里面的数据链路层包含了OSI里面的数据链路层与物理层. OSI的物理层是负责数据传输的硬件, 比如双绞线电缆/无线/光纤等, 主要进行比特流的传输. OSI的数据链路层主要负责物理寻址, 同时将原始比特流变为逻辑传输线路. 而TCP/IP中的数据链路层就包括了物理层和链路层. 物理层部分是计算机硬件, 比如网络接口卡等; 而链路层部分就相当于驱动程序. 链路层在计算机硬件和操作系统之间的一个桥梁. 2. 网络层 网络层负责地址管理和路由选择. 网络层主要使用的协议为IP协议. IP协议基于IP地址转发分包数据. 前面提到的数据链路层是设备驱动程序和网络接口层 继续阅读 >>


祝一迪 17/09/26 21:06:01
前言 这学期学校开了Java, 所以服务器组的小伙伴们都开心地写起了Java. 昨天晚上萌萌哒的校园问了我一个问题, 在C语言中参数的传递中, 我们可以使用指针进行传递, 从而更改参数的值, 可是在Java中, 并没有取地址操作, 也没有C++里面的引用操作, 那么应该怎样更改参数的值呢? 所以在这里来谈一谈我对Java中的参数传递的一些粗浅的认识. 1. Java中的数据类型? 在说到Java参数传递问题之前, 我们先来了解一下Java里面的数据类型. 在Java中, 有两种数据类型, 一种是基本数据类型, 一种是类类型. 类类型也称为引用数据类型. 基本数据类型就是我们常用的八大基本数据类型: short, int, long, float, double, char, byte, boolean. 在Java中是没有unsignd int这种数据类型的, 因为Java是运行于JVM之上, Java的设计就是为了脱离对计算机底层的依赖. 除了基本数据类型, 其余可以在Jav 继续阅读 >>


祝一迪 17/09/24 10:46:56
本系列博客为spring In Action 这本书的学习笔记 前言 之前在Spring学习笔记(三) — 装配Bean之通过Java代码装配Bean的最后提到: 在这里, Spring会自动给cdPlayer()方法匹配一个CompactDisc类型的Bean, 甚至这个Bean可以不在这个JavaConfig中, 它可以通过组件扫描或者通过XML进行配置来被这里的cdPlayer()方法使用. 说实话, 当时我不是很明白这段话的意思, 因为书中提到JavaConfig中被装配的Bean可以不必要是在本JavaConfig文件中声明的, 它可以来自其它的JavaConfig, 甚至都可以来自其它的XML配置文件, 于是我就去试验了一下, 我在XML中声明了一个CompactDisc Bean, 希望被本JavaConfig中的CDplayer Bean自动装配, 然而并没有成功, IDEA还是报错:没有找到匹配的Bean. 如果你也曾有这样的疑惑, 那么你就能在这篇博客里找到答案. 继续阅读 >>


祝一迪 17/09/22 20:25:48