关闭

【Java基础】:线程控制

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

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

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

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

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

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

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

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

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

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

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

【MyBatis】2:MyBatis简介

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

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

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

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

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

【Struts2】:Struts2的类型转换

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

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

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

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

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

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

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

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

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

【Struts2】:Interceptor的配置和使用

在之前的博客中,介绍了Struts2的内建拦截器和自定义拦截器的一些内容,但是有了这些自带和自定义的拦截器之后,如何去配置和使用,还没有跟大家详细说明,接下来我们就一起学习一下,Struts2中Interceptor的配置和使用。 Struts2框架里的拦截器配置信息是写在配置文件struts.xml里的,通常我们只需为拦截器类指定一个拦截器名称,就完成了拦截器的定义。定义拦截器使用元素...
阅读(1873) 评论(3)
157条 共11页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:314958次
    • 积分:11777
    • 等级:
    • 排名:第1367名
    • 原创:150篇
    • 转载:6篇
    • 译文:1篇
    • 评论:2141条
    公告
    在技术的海洋里遨游是一件十分有趣的事情,欢迎各位技术达人与我一同探讨,技术,职业,人生……
    博客专栏
    最新评论