1. bug描述 今天写代码的时候出现了一个问题, 前端页面的一些小图标不见了, F12之后, 发现报错信息如下: Failed to decode downloaded font: http://localhost:8080/font-awesome-4.7.0/fonts/fontawesome-webfont 当然这只是其中的一条, 因为由好几个图标都不能显示, 所以有好几条这样的报错信息. 2. bug解决 我先google了一下这个错误信息, 并没有找到正确的解决方案, 但是有一个博主说是因为工程中使用了Maven, 没有在pom.xml设置过滤信息, 从而导致了bug, 具体解释点击这里. 然而这并没有解决我的问题, 因为我的pom.xml和他的格式不一样, 并且没有设置任何拦截. 但是这位博主给了我一个重要的提示, 那就是查看我的过滤器!!! 果然问题出现在过滤器中, 在过滤器中的非过滤URI字段数组中, 我只添加了css/js/img等, 而没有添加这个用于显示图标的”font-awesome-4.7.0”库的URI, 导致带 继续阅读 >>


祝一迪 17/12/23 00:26:07
1. bug描述 今天在合前端和后台的代码的时候出现了让人头大的问题, 前端页面乱码, 并且css/js格式不能显示出来. 前端页面是大壮写好的HTML页面, 我合后台代码的时候直接将后缀改为了.jsp, 就出现了乱码. 2. bug原因 首先前端页面出现乱码可以分为两种情况, HTML和JSP. (1) HTML乱码解决 HTML乱码的原因是网页源代码的编码与网页中的中文编码不同导致, 这样就会导致浏览器无法对网页中的中文进行正确解析, 所以一般要在HTML页面的头部加上下面的代码来设置编码: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> (2) JSP乱码解决 如果你是正正经经地创建一个JSP页面, 并且在头部加了上面HTML中设置编码的代码之后, 一般就不会出现什么问题. 但是我今天就是在JSP中已经加了上面的代码, 但是乱码问题还是没有得到解决. 原因是!!! 我并没有正正经经地创建一个JSP, 而是直接将大壮 继续阅读 >>


祝一迪 17/12/13 17:31:44
今天Java上机的时候有一道题是这样的: 本题目要求定义一个长度可变的整型数组IntArray,数组初始长度为5,当输入的数组元素个数超过数组长度时,数组就自动增加5个元素的容量,即数组长度增加5。 也就是说实现一个类似于ArrayList的自动扩容int型的数组. 既然类似于ArrayList, 那不妨来看看ArrayList是如何动态扩容的. ArrayList是集合类List基于数组的一个实现, 也就是说, ArrayList底层实质上就是一个Object[]数组. 但是数组是定长的, 而我们在使用ArrayList的时候之所以不会有这样的感受就是因为它封装了内部的数组扩容操作, 所以ArrayList如何安全的实现扩容就成了我们的关注点. 1. ArrayList底层数组容量的初始化 在AarryList初始化的时候, 是可以通过参数initialCapacity来指定底层数组的初始大小. 其构造方法源码节选如下: // ArrayList的默认容量为10 private static final int DEFAULT_CAP 继续阅读 >>


祝一迪 17/11/29 23:02:56
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_war_exploded/WEB-INF/lib/jav 继续阅读 >>


祝一迪 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 请求经过的第一站就是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地址就是用来识别数据链路中互联的节点. 每台主机的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 限制连接点匹配目标对象为指定类型的类 @targe 继续阅读 >>


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


祝一迪 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" value="魔杰座"/> <construc 继续阅读 >>


祝一迪 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 dataSource(){ return new Embedded 继续阅读 >>


祝一迪 17/10/09 22:47:57