自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (1)
  • 收藏
  • 关注

原创 java图片压缩--Thumbnailator

最近在java开发中遇到了图片处理的问题,我使用的是Thumbnailator。Thumbnailator是一个优秀的图片处理的开源java类库,使用起来很方便。图片原图:1、指定大小进行缩放public class PicUtil { public static void main(String[] args) { PicUtil.commpr

2017-11-20 16:15:26 5480

原创 springMvc+Mybatis整合

项目结构1、导入相关的jar包2、配置web.xml文件 org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:config/applicationContext.xml, he

2017-11-18 14:02:36 737

原创 HTTP协议

HTTP简介HTTP协议(Hyper Text Transfer Protocol   超文本传输协议)是因特网上应用最广泛的一种网络传输协议。所有www文件都必须要遵守这个标准。HTTP基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。HTTP工作原理HTTP协议采用客户/服务器通信模式,服务器端为HTTP服务器,也叫WEB服务器;客户端为HTTP客户程序

2017-09-20 17:27:45 875

原创 经典排序算法--插入排序

一般来说,插入排序采用in-place在数组上实现。具体算法描述如下:1、从第一个元素开始,该元素可以认为已经被排序。2、取出下一个元素,在已经排序的元素序列中从后向前扫描。3、如果该元素(已排序)大于新元素,则将该元素移到下一位置。4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。5、将新元素插入到该位置中。6、重复步骤2图片演示操作如下:如果

2017-09-08 12:30:04 684

原创 经典排序算法--选择排序

选择排序是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,放到排序序列末尾。以此类推,直到所有的元素均排序完毕。选择排序的交换操作介于0和(n-1)次之间;选择排序的比较操作为n(n-1)/2次之间;选择排序的赋值操作介于0和3(n-1)次之间;其平均复杂度为O(n2)。代码如下:publi

2017-09-08 11:20:59 488

原创 经典排序算法--冒泡排序

排序面试题是各大IT面试必考的题目,问到排序问题就会延伸出算法问题。我们先来分析下冒泡排序的程序及算法。程序代码如下:public class Test { public static void bubbleSort(int[] source){ for(int i=source.length-1;i>0;i--){ for(int j=0;j<i;j++){ if(s

2017-09-05 23:06:32 507

原创 java system.out.printf()的使用方法

最近遇到了system.out.printf("%d ",i),没有明白什么意思,查了下system.out.printf()的使用方法。代码如下:public static void main(String[] args) { // 定义一些变量,用来格式化输出。 double d = 123.4567; String

2017-09-05 21:17:40 1189

原创 "=="和equals()的深入解析

我们先来看一段代码:public static void main(String[] args){ String a="a"+"b"+1; String b="ab1"; System.out.println(a==b); }运行结果:true很多人可能会说对比两个对象不是用equals()吗?对于运行结果可能有人答对了,但是为什么会这样呢?要理解这个问题,我们首先了解什

2017-09-05 13:24:17 477

转载 5种网络IO模型

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不

2017-08-31 17:23:11 406

原创 8,64,256都是2的阶次方数,用java编写程序来判断一个数是不是2的阶次方数

该面试题考察的知识点是输入/输出流、二进制、位运算符,我们来分析下这道题怎么实现。解析:如果一个数是2的阶次方数,那么它的二进制数的首位一般是1,后面接若干个0。比如8就是1000,64是1000000.如果将这个数减1后,再与该数做和(&)运算,则应该全为0(例如:8与7,一个二进制数是1000,一个二进制数是111,它们做和后全为0)。所以((d-1)&(d))==0。注:位运算符与

2017-08-31 17:13:15 2143 1

原创 写一个Java应用程序,从键盘输入一个整数,然后输出它的平方值立方值

这是一个跟输入/输出流有关的面试题。下面我们来分析怎么实现该功能。解析:在java中没有像C语言那样有一个专供接收从键盘输入值的scanf函数,所以一般的做法是从键盘输入一行字符,保存到字符串s中,再将字符组成的字符串s转换为整型数据返回。代码如下:import java.io.BufferedReader;import java.io.IOException;import jav

2017-08-31 16:40:04 16758

原创 简单说说spring的事务机制,以及是如何管理的?

事务管理可以帮助我们保证数据的一致性,对应企业的实际应用很重要。Spring的事务机制包括声明式事务和编程式事务。编程式事务管理:Spring推荐使用TransactionTemplate,实际开发中使用声明式事务较多。声明式事务管理:将我们从复杂的事务处理中解脱出来,获取连接,关闭连接、事务提交、回滚、异常处理等这些操作都不用我们处理了,Spring都会帮我们处理。声明式事务管理

2017-08-26 13:46:53 25305

原创 线程--生产者消费者模式

如果对同一个对象多个线程进行操作容易造成死锁,为了解决这个问题我们用到了生产者消费者模式。生产者消费者问题,也称有限缓冲问题,是一个多线程同步问题的经典案例。该问题描述了两个共享固定大小缓冲区的线程--即所谓的“生产者”和“消费者”--在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键是保证生产者不会在

2017-08-26 13:17:16 374

原创 java语言中垃圾回收的优点和原理

1、java的一个重大特点就是引进了垃圾回收机制,它使得java程序员在编写程序的时候不用考虑内存管理。2、由于有了垃圾回收机制,java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。3、垃圾回收机制有效的防止内存泄露,有效的使用可以使用的内存。GC(Gabage Collection)工作原理:当创建对象时,GC就开始监视这个对象的地址、大小以及使用情况。通常,G

2017-08-24 18:18:14 3177 1

原创 JSP和Servlet有哪些相同点和不同点,它们的联系是什么?

相同点:它们本质上都是java类 不同点:1、JSP经编译后变成Servlet2、jsp更擅长表现于页面显示,Servlet更擅长于逻辑控制3、Servlet的应用逻辑是在java文件中,并且完全从表现层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。 联系:JSP是Servlet技术的扩展,本质上是Ser

2017-08-24 18:13:13 10674 1

原创 JSP的生命周期

1、解析阶段:Servlet容器解析JSP文件的代码,如果有语法错误,就会向客户端返回错误信息2、翻译阶段:Servlet容器把JSP文件翻译成Servlet源文件3、编译阶段:Servlet容器编译Servlet源文件,生成Servlet类4、初始化阶段:加载与JSP对应的Servlet类,创建其实例,并调用它的初始化方法。5、运行时阶段:调用

2017-08-24 18:07:42 399

转载 使用http请求,中文乱码问题--解决方法

最近写了一个客户端向服务器端发起http请求的功能,服务器端返回的数据中包含中文,奇怪的是中文个数是偶数个的时候,没有乱码,但是奇数个数时,最后一个汉字会编程问号?,以前也出现过类似问题,也解决了,但是没有记录,现在一下子想不到该怎么解决了代码是这样的:服务器端部分代码:[html] view plain copy print?

2017-08-24 18:04:34 22507 2

原创 spring中bean的自动装配和作用域

上一篇博客《spring依赖注入(dependency injection)》介绍了依赖注入的几种方式,今天来看下自动装配--autowire。创建java项目,结构如下UserDao代码public interface UserDao { public void getUser();}UserDaoImpl代码public class UserDaoImpl impl

2017-08-21 13:40:55 651

原创 spring依赖注入(dependency injection)

spring依赖注入包括两个方面:      依赖:指bean对象创建依赖于容器。bean对象的依赖资源      注入:bean对象的依赖资源由容器来设置和装配Spring的注入有两类:1、构造器的注入:使用constructor-arg 2、setter注入要求被注入的属性,必须有set方法,set方法生成的方法名,由se

2017-08-20 21:24:30 615

原创 使用IOC创建对象

使用IOC创建对象一共有三种方式。1、通过无参构造方法来创建User.javapublic class User { public User() { System.out.println("无参构造方法创建"); } private String name; public void setName(String name) { this.name = name;

2017-08-20 18:39:17 683

原创 spring容器管理对象

IOC是一种编程思想,由主动编程变为被动接收。spring的IOC思想:对象由spring来创建、管理、装配。现在我们将文章《spring简介》中的示例,替换成用spring管理的。1、在原项目中添加jar包支持参考文章《spring入门--搭建步骤》2、在项目中增加beans.xml配置<beans xmlns="http://www.springframework.o

2017-08-20 16:34:53 1174

原创 spring入门--搭建步骤

通过简单案例我们来了解下spring的搭建步骤。新建一个java项目结构如下:搭建步骤:1、导入相关的jar包commons-logging-1.1.3.jarspring-aop-4.3.10.RELEASE.jarspring-aspects-4.3.10.RELEASE.jarspring-beans-4.3.10.RELEASE.jarspring-

2017-08-20 12:39:41 492

原创 spring官网下载开发包

今天学习spring需要用到开发包,去spring官网下载,发现官网又改版了。在网上找了好多下载步骤发现都不是很方便,步骤也比较复杂,而且有些步骤操作完了也没找到。现在告诉大家一个简单的方法,直接下载完整的-dist.zip直接复制该链接:http://repo.springsource.org/libs-release-local/org/springframework/spring

2017-08-20 10:24:33 528

原创 spring简介

spring是一个开源的控制反转(Inversion of Control,IOC)和面向切面(AOP)的容器框架,它的主要目的是简化企业开发。spring框架的优点:轻量级  的容器框架,没有侵入性IOC更加容易组合对象之间的关系,通过面向接口进行编程,可以低耦合开发。易于本地测试(Junit单元测试,不用部署服务器)AOP可以更加容易的进行功能扩展,遵循OCP开发原则。Spri

2017-08-19 13:20:43 697

转载 Hibernate,悲观锁,乐观锁(二)

1.悲观锁它指的是对数据被外界修改持保守态度。假定任何时刻存取数据时,都可能有另一个客户也正在存取同一笔数据,为了保持数据被操作的一致性,于是对数据采取了数据库层次的锁定状态,依靠数据库提供的锁机制来实现。基于jdbc实现的数据库加锁如下:select * from account where name="Erica" for update在

2017-08-18 20:45:39 230

原创 Hibernate的悲观锁、乐观锁

多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。由于并发操作带来的数据不一致性包括:丢失数据修改、读”脏”数据(脏读)、不可重复读、产生幽灵数据多个用户同时访问一个数据库,当他们的事务同时使用相同的数据时可能会发生问题。由于并发操作带来的数据不一致性包括丢失数据、修改、脏读、不可重复读、产生幽灵数据。为了解决并发问题hibernate提出了

2017-08-18 20:42:48 288

原创 Hibernate缓存机制

hibernate缓存机制是hibernate中很重要的一个内容,我们来看下hibernate的缓存机制。hibernate缓存分为:一级缓存、二级缓存、查询缓存1、一级缓存      又称为session缓存,生命周期相同,周期较短。也称为事务级别的缓存。通过项目案例来简单了解下,项目结构如下:Book实体类public class Book { private

2017-08-18 17:37:30 374

原创 hibernate的N+1条SQL查询问题--Iterate和list

hibernate使用session.createQuery(hql)查询数据的时候,有两种查询方式1、session.createQuery(hql).list()2、session.createQuery(hql).iterate()通过项目案例来简单了解下,项目结构如下:Book实体类代码public class Book { private int id;

2017-08-18 07:44:05 858 1

原创 sql优化的几种方法

在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t wh

2017-08-17 20:59:55 269066 36

原创 hibernate抓取策略

抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略。抓取策略可以在O/R映射的元数据中声明,也可以在特定的HQL或条件查询(Criteria Query)中重载声明。Hibernate定义了如下几种抓取策略:1、连接抓取(Join fetching)--Hibernate通

2017-08-17 20:27:20 307

原创 hibernate加载策略之lazy

一、hibernate的加载策略有两种:1)即时加载--get加载数据使用get获取数据,会立即查询,先到缓存中查找,找不到再到数据库中查找。2)延迟加载(懒加载lazy)--load加载不会立即查找,当需要的时候才会查找。容易造成LazyInitializationException异常。如果出现这个异常,大部分是因为session被关闭了,还要从session中获取数据造成

2017-08-17 15:24:06 436

原创 hibernate查询语言--hql

hql(hibernate query language)是一种查询语言。hql是完全面向对象的查询语言,可以理解如继承,多态,关联等概念。hql区分大小写,但是对应sql关键字(select、from、where)不区分。新建一个java项目,结构如下:实体类Book代码@Entity@Table(name="t_book")@FilterDef(name="bf",pa

2017-08-16 18:33:35 452

原创 使用MyEclipse简化hibernate开发

1、配置数据库连接信息鼠标右击,选择new在弹出的数据库连接信息框中,完成信息填写,测试通过后点击finish2、为项目添加hibernate支持(我使用的是MyEclipse2013版)在新建的项目上,点击鼠标右键,选择MyEclipse  ->Project Facets[Capabilities]  ->  Install Hibernate Face

2017-08-16 14:08:42 304

原创 hibernate注解之单/双向多对一映射

简单了解了hibernate注解annotation后,我们来看下怎样用注解实现单/双向的多对一映射。新建一个java项目,结构如下:单向多对一映射Book类package com.test.pojo;import java.util.Date;import javax.persistence.CascadeType;import javax.persistence.

2017-08-16 10:33:03 300

原创 hibernate注解annotation入门

前面的文章示例中我们写了实体类之后,都会写一个对应的*.hbm.xml配置文件,这种方式比较复杂,今天我们就来简单了解下使用注解annotation来替代配置文件的方法。新建一个java项目,结构如下:Book实体类,在实体类中使用注解,代码如下:package com.test.pojo;import java.util.Date;import javax.persist

2017-08-16 08:45:01 303

原创 hibernate继承映射策略之每个子类一张表

以文章《hibernate单表继承映射》中的几个类为例,我们来看下“每个子类一张表”的映射策略。与之不同的是Person.hbm.xml配置文件,代码如下: 测试类:public class HibernateTest { @Test public void testCreate

2017-08-15 18:07:45 592

原创 hibernate继承映射策略之每个具体类一张表

对于“每个具体类一张表”的映射策略,可以采用两种方式。第一种方式是使用。另一种方法时采用隐式多态。以上一篇博客《hibernate单表继承映射》所述案列为例,我们主要学习第一种方式。与上篇文章不同的Person.hbm.xml配置文件 测试类:public class Hiberna

2017-08-15 17:37:36 316

原创 hibernate单表继承映射

hibernate支持三种基本的继承映射策略:1、每个类分层结构一张表映射2、每个子类一张表映射3、每个具体类一张表映射我们先来分析第一种策略,假设有一个父类Person,它有两个子类Teacher和Student,都继承了Person类,如图:我们可以把这种关系的数据,设计到一张表中展示,如图:下面我们来看下怎样来实现实体类和对应的映射关系来生成这张表。

2017-08-15 16:16:19 405

原创 hibernate的list映射和map映射

List映射Grade类public class Grade { private int id; private String name; private List students=new ArrayList(); //省略get/set方法}Student类public class Student { private int id; private String na

2017-08-14 11:40:17 468 1

原创 hibernate多对多关联--单双向

前几篇文章分别介绍了一对一、一对多的关联,下面我们来看下多对多的关联。多对多关联也分为单向和双向两种。单向关联示例Role类public class Role { private int id; private String name; private Set functions=new HashSet(); //省略get/set}Function类public cla

2017-08-04 10:27:14 285

springMvc+MyBatis整合源码

springMvc+MyBatis框架整合,包含定时任务、图片上传等功能

2017-11-18

空空如也

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

TA关注的人

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