自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱技术 爱生活

To be a Full Stack Developer!

  • 博客(158)
  • 资源 (4)
  • 收藏
  • 关注

原创 对“芝诺悖论”的思考

      背景介绍         芝诺(埃利亚) (Zeno of Elea)约公元前490年生于意大利半岛南部的埃利亚;约公元前425年卒。古希腊数学、哲学家。另以芝诺悖论著称,即提出的一系列关于运动的不可分性的哲学悖论。由于量子的发现,这些悖论已经得到完善的解决。         这些悖论由于被记录在亚里士多德的《物理学》一书中而为后人所知。芝诺提出这些悖论是为了支持他老师巴门尼德...

2018-08-17 18:18:31 1483

原创 关于“学习金字塔理论”的所思所想

关于学习金字塔理论的具体内容,大家有不知道或者是没听说过的可以先自行搜索一下。对于学习金字塔的理论本身是否真的是美国缅因州的国家训练实验室的某项研究,这里不做任何的分析和深究。我们只是谈论一下,这个理论对我们的学习是否确有指导意义。首先各位看官应该都经历过中国的教育体制和方法,我们从幼儿园开始就一直在接受着“听讲”形式的教育,然后依次经过小学、初中、高中、大学甚至研究生,当然研究生阶段...

2018-08-17 14:07:53 1524 1

原创 【Java基础】:线程控制

Java提供了一些控制线程执行顺序的非常方便的工具方法,通过这些便捷的工具方法可以让我们更加灵活地控制线程的执行。        今天我们主要讨论控制线程的几个常用方法:join、sleep、yield以及如何调整线程的优先级。        Join线程        Thread提供了让一个线程等待另一个线程完成之后自己再接着执行的方法:join方法。当某个程序执行流中调用其他线程

2016-08-31 22:56:49 1078 4

原创 【Java基础】:线程的生命周期

上篇博客介绍了创建线程的三种方式之间的优劣,我们接着学习多线程的生命周期。        当线程被创建并且启动之后,它既不是一启动就直接进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过new、runnable、running、blocked和dead五种状态。尤其是当线程启动以后,它不可能一直“霸占”着CPU独自运行,否则多线程也就不存在了,这样一来就需要CPU在多条线程之

2016-08-31 21:53:39 826 2

原创 【Java基础】:线程的三种创建方式对比分析

上篇博客介绍了创建线程的三种方式,那么这三种方式有什么不同的地方和相同的地方呢?今天我们就一起简单聊聊这三种方式的差别在哪里。        首先,通过继承Thread类或者实现Runnable、Callable接口都可以实现多线程,不过实现Runnable接口与实现Callable接口的方式基本相同,只是Callable接口里定义的方法有返回值,可以声明抛出异常而已。因此可以将实现Runna

2016-08-30 19:49:23 836 4

原创 【Java基础】:线程的创建和启动

单线程的程序在实际情况中,往往功能是十分有限的,因此随着业务逻辑的复杂度增加好程序并发量的增大,就引入了多线程的概念。Java语言提供了非常优秀的多线程技术支持,程序可以通过非常简单的方式来创建新的线程并启动之。        Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。通常有三种方式来创建新的线程。        大家都比较熟悉的是前两种方式,

2016-08-30 16:58:36 869 4

原创 【MyBatis】4:MyBatis与Hibernate的对比分析

在MyBatis系列文章的第一篇, 提到了JDBC编程在实际开发中存在的诸多问题,后来介绍了MyBatis之后也没有分析,MyBatis是如何解决JDBC存在的问题的。在这篇博客开头我们先来一起看看,MyBatis是如何解决JDBC编程的问题的。当然,所有的ORM框架都是类似的,都是对JDBC的封装和优化。        1、  数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使

2016-07-31 16:00:10 1651 3

原创 【MyBatis】3:MyBatis环境搭建及入门程序示例

MyBatis开发环境搭建:    1 创建Java Project        使用什么IDE无所谓,eclipse、myeclipse、idea等等都可以,jdk版本好像也没什么限制,只是有些东西低版本的不支持,比如MyBatis的核心xml文件解析用的xpath是jdk1.5才有的,因此建议使用jdk1.5及其以上版本。        2 下载MyBatis的jar包及其他

2016-07-30 16:54:24 5031 3

原创 【MyBatis】2:MyBatis简介

MyBatis是什么?        MyBatis原本是Apache的一个开源项目iBatis,2010年这个项目由ApacheSoftware Foundation迁移到了Google Code,并且改名为MyBatis,实质上,MyBatis是对iBatis进行的一个完善和升级版本。        MyBatis是一个优秀的持久层框架,是Apache下的顶级项目。它对jdbc的操作数

2016-07-29 21:33:10 1103 2

原创 【MyBatis】1:JDBC编程存在的问题

做Java开发,如何操作数据库?想必大家都知道,使用JDBC(Java Data Base Connectivity),这是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java编写的类和接口组成。JDBC提供了一种基准,在此基础上我们可以构建更高级的工具和接口,使数据库开发人员能够更加方便和轻松的编写数据库应用程序。        JDBC编程8步

2016-07-29 16:05:49 970 3

原创 【Struts2】:基于OGNL的类型转换

借助于内置的类型转换器,Struts2可以完成字符串和基本类型之间的类型转换。除此之外,借助于OGNL表达式的支持,Struts2允许使用另一种简单方式将请求参数转换成复合类型。系统的Action类的代码片段如下:public class LoginAction extends ActionSupport{ // 使用User类型的成员变量封装请求参数 private User user

2016-06-30 18:27:18 824 3

原创 【Struts2】:Struts2的类型转换

所有的MVC框架,都需要负责解析HTTP请求参数,并将请求参数传递给控制器组件。此时,问题出现了:HTTP请求参数都是字符串类型的,但Java语言又是强类型的,因此MVC框架必须将这些字符串参数转换成相应的数据类型——这个工作是所有的MVC框架都应该提供的功能。表现层数据的流向以及所需的类型转换如下图所示:Struts2提供了非常强大的类型转换机制,Struts2的类型转换可以

2016-06-30 17:29:46 646 3

原创 【项目问题总结】5:树形结构节点的级联删除逻辑

问题描述:        改Bug改到机构类型管理模块的时候,有一个非常常见的问题出现,如下图所示:        当用户在进行删除操作的时候,如果将树形结构的中间节点删除,整个页面的数据就消失了,比如将上图中的名称为“学院”的这个节点删除,那么整个树形结构的数据都没了,这是一个很明显的Bug。 问题分析:        对于这样一个这么明显的Bug,什么原因造成的?一

2016-06-06 16:28:42 3645 3

原创 【项目问题总结】4:修改操作的重复性验证逻辑

问题描述:        在做基础系统的Bug调试及修改的过程中,遇到了一个很奇怪的问题:在进行记录的修改操作时,如下图所示,        理论上层次名称和备注都是可以随意修改的,但是如果我只是修改备注,对名称不做任何的改动(或者是只是点开修改的弹出框,不做任何改动),点击确定进行提交,总是弹出层次名称重复的提示,导致修改失败。问题分析:        经过各种测试,发现

2016-06-05 11:49:31 4418 6

原创 【Struts2】:Interceptor实战之权限控制

之前的博客介绍了拦截器的概念以及Struts2自带以及自定义拦截器的一些基础知识,但是拦截器究竟如何应用在实际项目里,或许你还很迷惑,那么本次博客我们就一起来实战一下,也算是对拦截器的一个总结和应用实践。我们在做任何的信息管理系统的时候,无可避免的要进行权限控制,对于登录用户的身份以及所拥有的权限进行验证,不让不合法的用户随意更改我们的数据和程序,以保证系统的安全性。这样一个非常普遍的功能,我

2016-05-31 21:31:10 1123 3

原创 【Struts2】:拦截器实现方法过滤

众所周知,我们在使用Struts2进行项目开发的时候,如果为某个Action配置拦截器,那么这个拦截器就会拦截该Action内的所有方法。但是在有些情况下,我们不需要拦截所有的方法,只想拦截指定的方法,此时就需要用到Struts2拦截器的方法过滤的特性了。        为了实现方法过滤的特性,Struts2提供了一个MethodFilterInterceptor类,该类是AbstractIn

2016-05-31 16:32:13 3299 2

原创 【Struts2】:Interceptor的配置和使用

在之前的博客中,介绍了Struts2的内建拦截器和自定义拦截器的一些内容,但是有了这些自带和自定义的拦截器之后,如何去配置和使用,还没有跟大家详细说明,接下来我们就一起学习一下,Struts2中Interceptor的配置和使用。Struts2框架里的拦截器配置信息是写在配置文件struts.xml里的,通常我们只需为拦截器类指定一个拦截器名称,就完成了拦截器的定义。定义拦截器使用元素

2016-05-31 15:50:15 4653 4

原创 【Struts2】:自定义Interceptor

虽然Struts2框架提供了许多的拦截器,并且这些内建的拦截器实现了Struts2的大部分功能,因此,大部分的Web应用的通用功能,都可以通过直接使用这些拦截器来完成,但是还是有一些系统逻辑相关的通用功能,可以通过自定义拦截器来实现。值得一提的是,Struts2的拦截器机制非常的简单好用。我们想要开发自己的拦截器类,通常有两种方式,一个是实现Interceptor接口,另一个是继承Ab

2016-05-17 21:39:55 1090 2

原创 【Struts】:Interceptors(拦截器)

拦截器体系是Struts2框架的重要组成部分,Struts2 中提供的很多特性都是通过拦截实现的,例如异常处理,文件上传,生命周期回调与验证。拦截器从概念上来讲和Servlet 过滤器或者 JDK 的 Proxy 类是一样的。它提供了一种对Action 进行预处理和事后处理的功能。和 Servlet 过滤器一样,拦截器可以被分层和排序。它还可以访问所执行的 Action 和所有的环境变量与执行

2016-04-30 21:53:37 1236 3

原创 【Struts】:Struts1和Struts2的区别与联系

之前的两篇博文分别介绍了Struts1和Struts2这两个框架的概念和简单的使用流程,但是没有对这个两个框架之间的不同进行详细的说明,接下来就来看看两者到底有哪些不同的地方吧。        区别一:Struts1的Action类必须要继承Action,而Struts2的则可以不继承        在使用Struts1进行开发的时候,必须要继承Struts1的抽象基类Action,并且要

2016-04-30 19:46:02 3200 3

原创 【Struts】Struts2简介及实现用户登录代码示例

Struts2是由传统的Struts1和WebWork两个经典的MVC框架发展起来的,无论是从Struts2设计的角度来看,还是从Struts2在实际项目中的易用性来看,Struts2都堪称是一个非常优秀的MVC框架。与传统的Struts1相比,Struts2允许使用普通的、传统的Java对象作为Action;Action的execute()方法不再与Servlet API耦合,因而更易于测试

2016-04-30 15:53:58 6036 1

原创 【Struts】:Struts1简介及第一个代码示例

在介绍Struts框架之前,先来了解一下Web开发的两种模式,这两种模式自从JSP开发流行起来,就一直在业界,争论不休,那就是我之前在博客:《JSP技术中的Model1和Model2开发模式》中介绍的JSP Model1和JSP Model2.因此这里就不再对这块内容进行赘述了。通过了解JSP的Model1 和Model2,想必大家在心里都有了自己的选择,相比较而言,Model2比Model1

2016-04-29 21:31:22 1343 2

原创 【J2EE】:MVC是框架?是设计模式?是架构?还是……

上篇博客简单聊了聊MVC模式,但是有一个很重要的问题我没有提到,那就是对MVC的定位,它是什么?很多人都知道MVC,都知道就是把将数据和显示分离,知道Model—View—Controller,但是让你说MVC是什么东西,你可能不知如何回答。那么MVC到底是什么玩意呢?框架?设计模式?架构?都不是。可以肯定的说(个人认为),MVC不是框架,不是设计模式,更不是架构,它仅仅是

2016-03-14 07:58:25 6943 8

原创 【J2EE】:MVC模式的简介与分析

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

2016-03-12 10:52:01 2294 3

原创 【J2EE】:Java EE应用的组件

上篇博客中,我们在文章的结尾提到了组件,这篇博客就接着讨论一下JavaEE应用的组件有哪些,以及这些组件主要用了什么技术。首先,我们得先了解一下这里所说的组件是什么鬼?百度百科给出的解释是:组件(Component)是对数据和方法的简单封装。组件可以有自己的属性和方法。属性是组件数据的简单访问者。方法则是组件的一些简单而可见的功能。使用组件可以实现拖放式编程、快速的属性处理

2016-03-10 17:28:52 5797 1

原创 【J2EE】:Java EE应用的分层模型

时至今日,我们所谈论的JavaEE应用,往往已经超出了Sun所提出的经典JavaEE应用规范,而是一种更广泛的开发规范。        经典JavaEE应用往往以EJB(企业级Java Bean)为核心,以应用服务器为运行环境,所以通常开发和运行的成本都比较高。        而现在市场上比较流行的轻量级Java EE应用具备了JavaEE规范的种种特征,例如面向对象建模的思想、优秀的应用

2016-03-06 11:42:31 9027 5

原创 【菜鸟学Java】15:JSP技术中的Model1和Model2开发模式

JavaWeb应用的结构经历了Model1和Model2两个时代,从Model1发展到Model2既是技术发展的必然,也是无数程序员的心血结晶。        Model1的原理及代码示例        在Model1模式下,整个Web应用几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接作出响应。用少量的JavaBean来处理数据库连接、数据库访问等操作。其流程图如

2016-03-03 14:20:48 4813 4

原创 【菜鸟学Java】14:使用ThreadLocal对Connection进行封装

问题背景:        使用JDBC进行开发的时候,每一次的增删改查都必须和数据库建立连接,才可以对数据项进行相应的操作。当我们的业务比较复杂的情况下,可能会出现在一个方法中多次的执行增删改查,这样的话,在这个方法的执行过程中,就需要与数据库建立多次的连接,在这种场景中,如何保证在并发执行这个方法的过程中,与数据库的连接不会混乱,保证这些操作的原子性,就显得尤为重要了。如何解决这个问题呢?

2016-02-24 11:53:47 2679 6

原创 【菜鸟学Java】13:代理模式——动态代理这样玩!

在上篇博客中,我们说到了代理模式的一种形式——静态代理,文章结尾处提到了静态代理的不足之处,其中有一个就是当我们的业务类非常多的时候,还用静态代理显然是一个非常糟糕的选择,那么这种情况该如何解决呢?这就引出了我们的动态代理。        什么是动态代理?        所谓的动态代理是相对于静态代理来讲的,利用反射机制,在程序的运行期决定加载哪个类,很好的规避了静态代理一个业务类对应一个

2016-02-23 10:18:13 1103 7

原创 【菜鸟学Java】12:代理模式——静态代理怎么玩?

什么是静态代理?        周所周知,常用的23种设计模式中,有一个代理模式(Proxy Pattern)。它的定义如下:        为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。        代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入

2016-02-22 15:52:06 837 8

原创 【菜鸟学Java】11:Session技术

【什么是Session?】        Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session

2016-02-16 11:05:02 1541 9

原创 【菜鸟学Java】10:Cookie技术

什么是Cookie?        Cookie是当你浏览某网站时,网站存储在你机器上的一个小文本文件,它记录了你的用户ID,密码、浏览过的网页、停留的时间等信息,当你再次来到该网站时,网站通过读取Cookie,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等。        Cookie是由服务器端生成,发送给User-Agent(

2016-01-18 15:34:49 1031 7

转载 JAVA多线程和并发基础面试问答

多线程和并发问题是Java技术面试中面试官比较喜欢问的问题之一。在这里,从面试的角度列出了大部分重要的问题,但是你仍然应该牢固的掌握Java多线程基础知识来对应日后碰到的问题。(校对注:非常赞同这个观点)Java多线程面试问题1. 进程和线程之间有什么不同?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的

2016-01-16 15:25:35 682 7

原创 【菜鸟学Java】9:使用dom4j解析jdbc.xml

最开始的时候,程序中需要操作数据库了,我们会把连接数据库的JDBC代码写到我们的业务逻辑代码里面,这样,每连接一次,就要写一遍JDBC连接-关闭的代码,这样的写法显然是很糟糕的,一旦数据库有所变更,那么你将要修改你的程序中所有使用JDBC的程序块,一个一个的改固然让人抓狂,批量替换也不是什么好办法。        因此我们就开始了抽象和封装,将连接数据库的代码抽取出来,写成一个工具类,专门负责

2016-01-16 14:05:30 1764 5

原创 【菜鸟学Java】8:List实体集合中保证产品名称不重复

问题背景:        在做APP的嵌入页面的时候,部长给提了这么一个需求,需要从生产信息的视图中查询出每种产品中已经成熟的一条信息,为了更好的显示效果。简单的说,就是黄瓜和茄子分别被种植在1号大棚和2号大棚里,这样就会产生4条种植信息,我们想要的结果是按照产品名称检索每个产品名称下的任意一条种植信息即可。比如,黄瓜的种植信息有两条,随便拿出来一条,茄子亦如此,那么我们想要的结果就是两条(不

2016-01-15 16:55:39 1708 5

原创 【DataBase】:使用Oracle遇到的几个问题及解决办法

时下比较流行的数据库大概有这么三种,Oracle、MySql以及SQL Server,在网上随便一搜,数据库软件排行榜,你会看到高居榜首的总是Oracle,因此学习Oracle的使用是十分必要的。我在学习使用Oracle的过程中,遇到了很多问题,在这里做一下总结和记录,但愿能够帮助到大家。        问题1:安装Oracle 10g的过程中,提示“环境变量path的值超过1023字符,无法

2016-01-06 11:58:12 1555 5

原创 【菜鸟学Java】7:JSP的基本语法

<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> JSP语法实例 <%! //声明一个整形变量 public int count; //声明一个方法 public String info() { return "hello world!";

2015-12-21 21:35:59 966 7

原创 【菜鸟学Java】6:JSP的基本原理

在上篇博文中介绍了JavaWeb开发中比较基础也是比较经典的Servlet技术,同时也在文章的结尾点出了Servlet技术所带来的问题,那就是由于包括大量的HTML标签,大量的静态文本及格式等,导致Servlet的开发效率极为低下。所有的表现逻辑,包括布局、色彩及图像等,都必须耦合在Java代码中,这的确让人觉得非常糟糕。        JSP的出现弥补了这种不足,JSP通过在标准的HTML页

2015-12-17 17:14:02 1735 11

原创 【菜鸟学Java】5:“徒手”创建一个Web应用

众所周知,JSP、Servlet、Listener和Filter等都必须运行在Web应用中,所以了解一个Web应用的文件结构是十分必要的。作为一个程序员,相信大家都会使用Eclipse来构建一个Web应用,但是如果你仅仅只会在Eclipse等IDE工具中单击“下一步”“确定”等按钮,那你将很难成为一个真正意义上的程序员。要想成为一个优秀的程序员,应该从基本功抓起,所有的代码都应该用简单

2015-12-12 10:17:50 2104 10

原创 【菜鸟学Java】4:Servlet 技术

什么是Servlet?        Servlet是java语言类,用来拓展通过请求响应模式的服务端的能力。尽管servlets可以响应任何类型的响应,它们通常用于拓展基于Web的应用程序。在这种应用程序中,Java servlet技术定义了特定的HTTP servlet类。        Servlet通常运行在多线程服务器上,因此应该了解到Servlet必须处理并发请求并且要小心翼翼

2015-12-01 15:56:30 1881 13

高等数学 上 同济第六版

很多研发工程师在转算法工程师或者是学习算法设计的过程中,往往被数学理论知识而羁绊,高等数学是深度学习和机器学习等技术的前置课程,只有培养了数学思维,才能更好的学习、理解和设计算法,从而走向人工智能的领域。

2018-08-03

《轻量级Java EE企业应用实战(第4版)》源码下载链接及说明

本光盘是《轻量级Java EE企业应用实战(第4版)》一书的配书光盘,书中的代码按章、按节存放, 即第2章、第2节所使用的代码放在codes文件夹的02\2.2文件夹下,依此类推。 另:书中每份源代码也给出与光盘源文件的对应关系,方便读者查找。

2016-01-07

Egit For Eclipse/MyEclipse

这是一个用于实现Java开发的git版本控制的插件,适用于Eclipse和MyEclipse开发Java项目

2015-10-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除