自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

转载 【转】servlet/filter/listener/interceptor区别与联系

原文地址:点击进入 一、概念: 1、servlet: servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。最早支持 Servlet 技术的是 JavaSoft 的 Java Web Server。此后,一些其它的基于 Java 的 Web Server 开始支持标准的 Servlet API。S

2016-09-29 14:54:57 324

转载 【转】理解java线程的中断(interrupt)

线程对象.interrupt()并不会真正的中断,只是修改了它的中断信号。原文地址:点击进入一个线程在未正常结束之前, 被强制终止是很危险的事情. 因为它可能带来完全预料不到的严重后果比如会带着自己所持有的锁而永远的休眠,迟迟不归还锁等。 所以你看到Thread.suspend, Thread.stop等方法都被Deprecated了那么不能直接把一个线程搞挂掉, 但有时候又有必要让一个线程死掉,

2016-09-28 19:47:58 285

原创 wait()和notify()、notifyAll()

今天想到了这个问题(wait()方法、notify()、notifyAll()这三个方法是不是执行了就释放锁呢?) 为了解决这个问题,我没有手动去敲代码(因为不知道如何去敲),但是百度到一个“知道”,说完下面有很多赞。说的是这样的,notify()和notifyAll()执行了并不会释放锁,他的作用只是唤醒其他之前wait()的线程,线程中的run方法的代码还是要执行完。也就是说:run(){

2016-09-28 19:20:15 321

原创 JDBC

一、JDBC常用API (1)Driver接口 Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。(2)DiverManager类(实现了Driver接口) DriverManager类用于加载驱动并且创建与数据库的连接。 其中有一个方法是registerDriver(Driver driver),用来注册数据库驱动。但是这个方法会使数据库驱动被注册两次

2016-09-28 18:19:59 526

原创 MVC模式原理

MVC模式将软件程序分为3个核心模块:模型(Model)、视图(View)和控制器(Controller)。模型(Model): (1)负责管理应用程序的业务数据、(2)访问和修改这些数据的业务规则以及(3)为视图提供查询模型状态的方法。 提示:在我经常用的Spring+SpringMvc+Mybatis开发框架中,模型是实体类,Service类,Dao类的总和,如果把它们放在一个类里面,其实

2016-09-21 23:35:59 679

原创 一个关于SQL注入的简单例子

数据库有一张user表;表定义如下:CREATE TABLE `user` ( `id` char(35) NOT NULL, `mobile_num` char(20) NOT NULL, `user_name` char(30) DEFAULT NULL, `password` char(100) NOT NULL, `has_card` tinyint(1) NOT NUL

2016-09-21 09:19:41 1371

原创 MySql基础知识总结

一、SQL语句的分类DDL(数据定义语言):用来定义数据库对象:比如库、表、列、触发器、视图、函数、存储过程等(可以理解为创建语言)数据库级别: 创建数据库:Create database if not exists db_name; 删除数据库:Drop database if exist db_name;表级别 创建表:Create Table stu

2016-09-20 22:28:04 472

原创 Hibernate的事务

一、事务的并发问题 在实际应用中,数据库是要被I多个用户共同访问的,在多个事务同时使用相同的数据时,可能会发生并发的问题,具体为:脏读:一个事务读取到另一个事务未提交的数据。不可重复读:一个事务对同一行数据重复读取两次,但是得到了不同的结果。虚读:一个事务连续两次在数据库进行同样条件的查询,但是第二次查询结果包含了第一次查询中未出现的数据。(注意与不可重复读的区别)更新丢失:两个事物同时更

2016-09-20 18:57:02 1208

原创 Hibernate的一级缓存Session和二级缓存SessionFactory

Hibernate的一级缓存是指Session,它是一块内存空间,用来存放相互管理的java对象,有了一级缓存,应用程序可以减少访问数据库的次数,提高了性能。在使用Hibernate查询对象的时候,首先会使用对象属性的OID值(对应表中的主键)在Hibernate的一级缓存进行查找,如果找到,则取出返回,不会再查询数据库,如果没有找到,再到数据库中进行查询操作。然后将查询结果存放到Session一级

2016-09-19 15:18:16 1844

原创 Hibernate的核心API

在Hibernate中有6个常用的核心API,分别是Configuration、SessionFactory、Session、Transaction、Query和Criteria(英文意思是:标准,条件)。一、Configuration Hibernate用这个API的实例去读取Hibernate配置文件和映射文件。其代码如下: Configuration config = ne

2016-09-19 14:47:36 664

原创 Hibernate的执行流程

在Hibernate开发过程中通常会用到5个核心接口,分别为Configuration接口、SessionFactory接口、Session接口、Transaction接口、Query接口。这里先给出Hibernate执行流程的结果图:(1)初始化Hibernate,构建Configuration实例。这一步用来读取Hibernate核心配置文件和映射文件信息到Configuration对象(也就是

2016-09-18 16:53:09 885

原创 Action处理请求参数(属性驱动与模型驱动)

在Struts2中,页面(指的是浏览器,不过在实际的开发中,不管是浏览器端还是手机端,前后端数据的交互都是用json)的请求苏剧和Action有两种基本的对应方式,分别是字段驱动方式(属性驱动)和模型驱动方式。1、属性驱动属性驱动通过字段进行数据传递,包括两种情况: 1、与基本数据类型的属性对应; 比如:public class UserAction{ private Strin

2016-09-18 14:52:02 2114

原创 Struts2的Action控制类的实现及Action访问Servlet API

Struts2的Action控制类的实现Struts2的应用开发中,Action作为框架的核心类,实现对用户请求的处理,Action类被称为业务逻辑控制器。一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元。实现Action控制类共有3种方式: (1)POJO的实现 不继承任何父类,也不实现任何借口,仅仅是一个POJO类。

2016-09-18 14:03:30 777

原创 Struts2运行过程简介

利用Struts2框架写一个HelloWorldAction入门案例执行流程:(0)项目启动,struts.xml文件被加载(这个文件包括了struts2的action配置文件) (1)客户端发送请求helloWorld.action,被StrutsPrepareAndExecuteFilter所拦截 (2)StrutsPrepareAndExecuteFilter根据请求url调用对应的Act

2016-09-18 11:25:23 378

原创 JSP运行原理

我们知道当用户通过URL访问Servlet时,Web服务器会根据请求的URL地址在web.xml配置文件中查找匹配的,然后将请求交给指定的Servlet程序去处理。但是,在通过URL访问jsp文件时,项目的在web.xml中找不到与JSP相关的配置,但web服务器仍然可以根据URL找到对应的jsp文件。这是为什么?这是因为在tomcat服务器中的web.xml文件中实现了JSP的相关配置。如下:

2016-09-13 20:58:49 380

原创 栈的两种遍历方式

一、普通遍历 public void test05(){ MyLinkedStack<String> myStack = new MyLinkedStack<String>(); myStack.push("1"); myStack.push("2"); myStack.push("3"); myStack.pus

2016-09-11 15:42:15 9447

原创 ArrayList与Vector和HashMap与Hashtable

ArrayList与VectorHashMap与Hashtable Vector和ArrayList都实现了List接口,Vector是一个有历史的集合,在jdk1.0的时候,java还没有一个系统的集合框架时,就已经有了Vector类,用法与现在的ArrayList相似,在jdk2.0的时候java出现了系统的集合框架后,就让Vector实现List接口;在jdk1.0的时候,Vector类就已

2016-09-11 09:05:26 396

原创 关于HashSet添加元素时的equals()方法和hashCode()方法

HashSet集合不能存储重复的元素,那么元素之间是否重复,HashSet是根据什么机制去判断的呢?HashSet在添加一个元素时(比如此时添加的是”a”这个元素),都会将该元素与set中所遍历到的每个元素作比较,比较的过程是这样的:先用该元素的hashCode值与遍历到的每个元素的hashCode作比较,如果hashCode不相等,则直接添加;若hashCode的值一样,则继续用该元素的equal

2016-09-10 16:09:00 2132

转载 【转载】java多线程synchronized volatile解析

原文地址:点击这里先简单说说原子性:具有原子性的操作被称为原子操作。原子操作在操作完毕之前不会线程调度器中断。即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。在Java中,对除了long和double之外的基本类型的简单操作都具有原子性。简单操作就是赋值或者return。比如”a = 1;“和 “return a;”这样的操作都具有原子性。但是在Java中,类似

2016-09-10 09:35:02 239

原创 后台线程

“后台线程”也叫“守护线程”,他为用户线程提供服务,当用户线程(前台线程)死亡的时候,JVM也会通知“后台线程”死亡,但在“后台线程”接收到信息到死亡需要一定的时间;“后台线程”、创建的子线程默认是“后台线程”,“用户线程”创建的子线程默认是子线程。一个线程想设置为后天线程必须在线程开始前就要设置好。package cn.test.thread.thread_Daemon;import java.t

2016-09-08 21:26:33 228

原创 二叉树的遍历和查找

就如图所示的二叉树进行遍历:(1)前序遍历:A B D G H C E I F (2)中序遍历:G D H B A E I C F (3)后序遍历:G H D B I E F C A递归前序遍历算法: private void preOrderTraverse(Node rootNode){ if(null != rootNode){ System.

2016-09-07 17:56:15 350

原创 树的概念总结;树的存储结构;树、二叉树、森林的相互转换

树的相关概念 1、结点分为:根结点(无双亲、有孩子)、内部结点(有双亲、有孩子)、叶结点(有双亲、无孩子)2、结点与结点的关系:孩子、双亲、祖先、兄弟、堂兄弟3、结点的度:结点的度是结点的孩子个数4、树的度是各结点度数的最大值5、层:根节点为第1层,最下层叶子结点为最后一层6、树的深度:一棵树的层数就是深度7、二叉树的定义:8、二叉树有物种基本形态:空二叉树、只有一个根结点、根节点只有左子树、根结

2016-09-06 18:45:09 830

原创 循环队列

这里的循环队列用数组来实现,以下是几个约定或者说是公式:1、队列的队头指针指向队列的第一个元素,队列的队尾指针指向 队列的最后一个元素的下一个位置2、数组剩下一个空位的时候,队列已满3、队列为空的时候,数组front == rear,故初始化时,front = rear = 0; (但在实际编程中会用length记录队列长度)4、队满的公式是(rear+1)%size()==fro

2016-09-06 10:31:00 453

原创 自己实现顺序表和单链表以及他们的对比

线性表包括:顺序表和单链表;顺序表是一串连着的内存空间,因此用数组来实现;单链表是分散的内存空间块,用对象来实现,一个结点是一个对象,对象里面有两个域,一个是data域,一个是nextNode域。由于顺序表和单链表都涉及到迭代器模式,自己实现迭代器去迭代里面的数据,这里提供一个接口。 迭代器: MyIterator类:package cn.test.ArrayList;public inter

2016-09-05 16:42:52 579

原创 ThreadLocal,线程本地变量

什么是ThreadLocal? JAVA为线程安全提供了同步监视器、同步锁和 volatile关键字外,还提供了一些工具类,如ThreadLocal类,它代表一个线程局部变量,通过把数据放在ThreadLocal中就可以让每条线程创建一个该变量的副本,从而避免并发访问的线程安全问题。 (注意,同步监视器和同步锁与ThreadLocal的设计目的不一样,前者是让竞争资源共享,但是保证每个临界区都只

2016-09-03 13:05:59 824

原创 进程和线程

一、定义 (1)进程的定义 – 一个正在执行中的程序。 – 一个在计算机上执行的程序实例。 – 能分配给处理器并由处理器执行的实体。 – 一个具有以下特征的活动单元:一组指令序列的执行、一个当前状态和相关的系统资源集(2)线程的定义 – 被称为轻量级进程,是程序执行流的最小单元。 – 一个标准的线程由线程ID,当前指令指针,寄存器集合和堆栈组成。

2016-09-03 10:43:26 351

原创 MyBatis两种执行XXXMapper.xml配置文件中SQL语句的方法

一、SqlSession单例模式类package cn.mybatis.Sql;import java.io.IOException;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibat

2016-09-01 20:58:09 6077

原创 MyBatis框架的典型配置文件

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <properties resource="appli

2016-09-01 20:38:30 226

原创 多线程的锁

一、在没有锁的情况下,举例下面的例子 (1)Account类,账户类,包括账户号码和余额package cn.test.synchronization.one;public class Account { private String accountNo; private double balance; public Account(String accountNo, dou

2016-09-01 14:32:40 396

传智博客培训资料

传智博客javaweb上课时候的培训资料,齐全,专业

2016-01-04

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

TA关注的人

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