自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dengit_w的博客

技术源于生活,高于生活

  • 博客(75)
  • 问答 (1)
  • 收藏
  • 关注

原创 数据库的select底层实现

话题:数据库中的select底层? 一、从数据库查询数据的角度,大概架构(前提:客户端需要将查询语句发送到服务器端) 1.接到语句查找sql计划缓存 如果没有—_—|| 2.检查语句合法性(对sql语句语法的检查,)3.检查语言含义(对sql语句的所包含的表名,字段名)4.获得对象解析锁5.核对用户权限是否有访问数据的权限探究到着,我不禁想到,平时写sql语句的时候,就是这样的啊! 6.确

2017-10-01 20:35:36 3713

转载 JPA之@GeneratedValue注解

JPA的@GeneratedValue注解,在JPA中,@GeneratedValue注解存在的意义主要就是为一个实体生成一个唯一标识的主键(JPA要求每一个实体Entity,必须有且只有一个主键),@GeneratedValue提供了主键的生成策略。@GeneratedValue注解有两个属性,分别是strategy和generator,其中generator属性的值是一个字符串,默认为”“,其声

2017-09-28 09:30:19 441

原创 数据库连接池的原理。为什么要使用连接池。

1,数据库连接是一件费时的操作,连接池可以使多个操作共享一个连接。 2,数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量、使用情况,为系统开发,测试及性能调整

2017-09-27 22:16:07 2143

原创 说说事务的概念,在JDBC编程中处理事务的步骤。

1,事务是作为单个逻辑工作单元执行的一系列操作。 2,一个逻辑工作单元必须有四个属性,称为原子性、一致性、隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务 事务处理步骤: 3,conn.setAutoComit(false);设置提交方式为手工提交 4,conn.commit()提交事务 5,出现异常,回滚 conn.rollback();

2017-09-27 22:14:35 5202

转载 preparedStatement和Statement的区别

PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程。同时PreparedStatement还经

2017-09-27 22:13:00 304

转载 ORA-01045: user lacks CREATE SESSION privilege; logon denied

报‘ORA-01045: user lacks CREATE SESSION privilege; logon denied’,原来是创建User时没有给赋上create session权限, 解决办法:grant create session,resource to 或在pl/sql developer里,创建user时选择system privileges->create session

2017-09-27 11:41:10 888

原创 Mybatis之xml配合接口开发,更体现面向对象

Mybatis的对象关系映射,用反射技术配合接口开发,更灵活,也更能体现java语言的面向对象方法。首先定义一个接口,方法有如下:public interface Idept { List<Dept> showAll(); int save(Dept dept); int update(Dept dept); int delete(Dept dept);}总配置文件请参考:

2017-09-26 16:56:50 526

原创 Servlet的生命周期

Servlet具有良好的生命周期定义,包括加载和实例化,初始化,处理请求,以及服务结束。这个生存周期javax.servlet.Servlet接口的init(),service()和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定

2017-09-26 13:49:38 168

原创 heap和stack有什么区别?

1.heap是堆,stack是栈。2.stack的空间由操作系统自动分配和释放,heap的空间是手动申请和释放的,heap常用new关键字来分配。3.stack空间有限,heap的空间是很大的自由区。在Java中,若只是声明一个对象,则先在栈内存中为其分配地址空间,若再new一下,实例化它,则在堆内存中为其分配地址。4.举例:数据类型 变量名;这样定义的东西在栈区。如:Object a =null;

2017-09-25 22:34:42 563

转载 JAVA中的GC机制详解

一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才

2017-09-25 22:28:46 228

转载 Java线程池使用与原理

线程池是什么?我们可以利用java很容易创建一个新线程,同时操作系统创建一个线程也是一笔不小的开销。所以基于线程的复用,就提出了线程池的概念,我们使用线程池创建出若干个线程,执行完一个任务后,该线程会存在一段时间(用户可以设定空闲线程的存活时间,后面会介绍),等到新任务来的时候就直接复用这个空闲线程,这样就省去了创建、销毁线程损耗。当然空闲线程也会是一种资源的浪费(所有才有空闲线程存活时间的限制),

2017-09-25 21:51:31 268 1

转载 equals方法和hashCode方法

在有些情况下,程序设计者在设计一个类的时候为需要重写equals方法,比如String类,但是千万要注意,在重写equals方法的同时,必须重写hashCode方法。为什么这么说呢?请下面看一个例子:package com.cxh.test1;import java.util.HashMap;import java.util.HashSet;import java.util.Set;class

2017-09-25 21:38:39 146

转载 hashcode是什么意思?

用最简单的方法来说,hashcode就是一个签名。当两个对象的hashcode一样时,两个对象就有可能一样。如果不一样的话两个对象就肯定不一样。 一般用hashcode来进行比较两个东西是不是一样的,可以很容易的排除许多不一样的东西。 最常用的地方就是在一堆东西里找一个东西。先用你要找的东西的hashcode和所有东西的hashcode比较,如果不一样的话就肯定不是你要找的东西。如果一样的话就很

2017-09-25 21:26:26 8882

转载 WebService中的wsdl文件作用是什么?

传统上,我们把计算机后台程序(Daemon)提供的功能,称为”服务”(service)。比如,让一个杀毒软件在后台运行,它会自动监控系统,那么这种自动监控就是一个”服务”。通俗地说,”服务”就是计算机可以提供的某一种功能。 根据来源的不同,”服务”又可以分成两种:一种是”本地服务”(使用同一台机器提供的服务,不需要网络),另一种是”网络服务”(使用另一台计算机提供的服务,必须通过网络才能完成)。

2017-09-25 16:12:12 3352

原创 仿写java中集合工具类中的ArrayList

java的数据存储离不开集合工具,集合工具有很多种,今天在这就不一一举例了,进入今天的主题:先定义一个List的接口,定义一些仿ArrayList功能的方法public interface List { Object get(int index); boolean add(Object obj); void set(Object obj,int index); boolean

2017-09-25 14:45:09 525

转载 在一个千万级的数据库查寻中,如何提高查询效率?

1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没

2017-09-24 22:00:17 794

转载 程序员应该避免的5种代码注释

1.自以为很了不得的程序员public class Program{ static void Main(string[] args) { string message = "Hello World!"; // 07/24/2010 Bob Console.WriteLine(message); // 07/24/2010 Bob m

2017-09-24 21:57:51 443

转载 Java中常见的异常

你能区分异常和错误吗?我们每天上班,正常情况下可能30分钟就能到达。但是由于车多,人多,道路拥挤,致使我们要花费更多地时间,这就是生活中的异常!程序和生活一样都会出现异常,先来看个异常: 上面出现的是算数错误的异常。在java中,除去一些编译上的错误(语法)之外,就有异常和错误!异常的定义是可自己进行处理后,程序依然可以正常运行下去!错误是Java虚拟机抛出的,终止程序的运行,这就是程序和异常的区

2017-09-24 21:54:11 365

转载 泛型

http://geek.csdn.net/news/detail/237839一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码:public class GenericTest {public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi");

2017-09-24 20:37:56 148

转载 怎么实现SSH的整合思路?

主体思路是:Action的创建,由本来的struts 管理,交由Spring来进行管理。   Spring在创建 Action的时候,就会注入DAO   而DAO又继承于 HibernateTemplate,并且在被Spring创建的时候,注入了SessionFactory.   由此,Action在进行业务操作的时候,比如执行execute的时候,就可以使用已经和hibernate 联系起来

2017-09-24 20:00:53 328

原创 Spring容器实例Bean的三种方法(IOC三种方法)

1、依托默认的无参构造器 2、通过工厂类中的静态方法创建bean对象 3、通过工厂类中的实例方法创建bean对象

2017-09-23 11:00:12 235

转载 简介 Spring中的IOC,DI,AOP

IOC:控制反转。指的是将对创建类的控制权从开发者,交给了Spring容器。DI:依赖注入..在运行期,由spring容器动态地将依赖对象注入到组件中AOP:面向切面。AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视、事务管理、安全检查)

2017-09-23 10:58:03 245

转载 Spring的好处

a)       降低组件之间的耦合度,实现软件各层之间的解耦  Controller – Service – Dao b) 可使用容器提供的众多服务 可使用容器提供的众多服务:事务管理服务(事务传播,无需手工控制事务)、JMS服务、Spring core核心服务、持久化服务、其他…… c) 容器提供单例模式支持,开发人员不再需要自己编写实现代码(是否单例可以配置) d) 容器提供了AOP

2017-09-23 10:57:08 180

原创 openSession与getCurrentSession的区别

Hibernate有两种方式获得session,分别是: openSession和getCurrentSession 他们的区别在于 1. 获取的是否是同一个session对象 openSession每次都会得到一个新的Session对象 getCurrentSession在同一个线程中,每次都是获取相同的Session对象,但是在不同的线程中获取的是不同的Session对象

2017-09-23 10:54:02 143

原创 Hibernate开发流程

一个完整的hibernate 开发流程包含如下这些步骤 1. 配置Hibernate.cfg.xml 里面包含数据库连接信息,哪些HBM,是否使用2级缓存,是否显示SQL,方言等等 2. 配置 hbm 文件 大概是哪个类对应哪张表,属性对应什么字段,各种关系映射,比如ONE-MANY,MANY-ONE,MANY-MANY 3.使用HIBNERATE 通过Configuration拿到Se

2017-09-23 10:48:35 259

原创 什么是POJO?

POJO的全称是plain old java object 相当于JAVA BEAN,又叫做实体类 entity bean (其他的应该也没什么解释了吧,要是有的话,欢迎留言告诉,谢谢)

2017-09-23 10:46:41 1444

原创 Mybatis动态sql开发之纯xml的简单CRUD实现

Mybatis 是一个ORM框架,MyBatis作为持久层框架,其主要思想是将程序中的大量sql语句剥离出来,配置在配置文件中,实现sql的灵活配置。这样做的好处是将sql与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改sql。下面给个简单的入门例子。 Mybatis总配置文件,主要功能,提供连库四个基本信息,加载mapper(映射文件),此处用dept(部门)表:<?xml v

2017-09-23 10:24:20 379

原创 Mybatis的工作流程

1、读取Mybatis配置文件 2、根据读取到的配置文件生成SqlSessionFactory 3、创建SqlSession对象(开启事务) 4、操作目标数据库 5、提交事务6、关闭SqlSession

2017-09-20 17:08:38 3019

原创 Hibernate中session的get()和load()的区别

1.get()采用立即加载的方式;而load()采用延迟加载; 2、get()方法执行的时候,会立即向数据库发出查询语句,而load()方法返回的是一个代理(此代理中只有一个id属性),只有等真正使用该对象属性的时候,才会发出sql语句; 3、如果数据库中没有对应的记录,get()方法返回的是null。而load()方法出现异常ObjectNotFoundException 。

2017-09-20 16:52:26 156

转载 Hibernate中对象的三种状态

Hibernate的缓存机制分为: 一级缓存:一级缓存是Session级缓存。通过 session.get,session.load,session.save,session.update可以将指定对象放入缓存中 (该缓存属于session自带的缓存,也就是说,创建session以及缓存就会产生)二级缓存:二级缓存是SessionFactory级缓存,缓存中的信息可以供多个Session共享。对

2017-09-20 16:45:48 170

原创 什么是Hibernate,好处是什么?

1.Hibernate是一个操作数据库的框架,实现了对JDBC的封装;2.Hibernate是一个ORM(对象关系映射)框架,我们在写程序时 ,用的时面向对象的方法,但是在关系型数据库里,存的是一条条的数据,为了用纯面向对象的思想解决问题,所有需要将程序中的对象和数据库的记录建立起映射关系,ORM就是这样的技术,而Hibernate就是这样一个框架,以操作对象的方式操作数据库。3.Hibernate

2017-09-19 14:06:47 13913 1

转载 Servlet、Struts1、Struts2、SpringMVC是单例的吗?

Servlet是单例的。在Web容器中 Servlet对象只有一份。 Struts1是单例的。 Struts2是非单例的。 SpringMVC默认是单例的。但是可以通过配置(scope)改为非单例的

2017-09-19 13:53:11 357

转载 Struts2的工作流程(或者工作原理)

1、客户端发送一个指向Servlet容器(例如Tomcat)的请求 2、这个请求经过一系列的过滤器(Filter) 3、接着FilterDispatcher被调用,将request中所携带的数据放入值栈(ValueStack); 4、 FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action,把请求的处理交给ActionProxy; 5、 Act

2017-09-19 13:43:57 290

原创 Struts2和SpringMVC的区别

Struts2和SpringMVC都是Web的MVC框架,两者的区别是: 1、Struts2是以过滤器作为控制器,而springMVC是以Servlet作为控制器的。 2、Struts2是以属性接收接收请求中的数据,SpringMVC是以方法参数的形式接收请求中的数据信息。 3、Struts2中的Action是非单例的,SpringMVC中的Controller是否为单例可以通过scope配置

2017-09-19 11:17:27 324

原创 什么是MVC模式?MVC三层架构的含义和作用?

MVC是一种框架型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使应用的模型和视图相分离,从而得到更好的开发和维护效率。在MVC模式中,应用程序被划分成模式、视图和控制器三个部分。其中模型部分又包含了业务处理层和数据持久层(数据业务)。视图部分负责数据的输出形式,这也就是我们所谓的页面部分。而控制层部分负责协调模型和视图,根据用户请求的来选择调用哪个模型来处理业务,以及最终由哪

2017-09-19 11:07:09 23353

原创 怎么提高Web应用程序的效率?

页面 中 1、避免使用大图片 2、避免一次性加载过多的数据(使用分页) 3、局部刷新尽量使用Ajax 4、尽可能的避免在window.onload时间中写过多代码。可以使用Jquery. Ready方法分开 5、尽可能减少与服务器的交互。Java代码 中 6、使用合适的对象 。如 String StringBuilder、ArrayList,LinkedList 7、使用合适的算法

2017-09-19 10:56:05 407

转载 DML、DDL、DCL区别

http://blog.csdn.net/level_level/article/details/4248685 总体解释: DML(data manipulation language): 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL(data definition language):

2017-09-19 10:45:20 319

转载 MySQL、Oracle、SQL Server各数据库服务的端口号?

1、MySQL:3306 2、Oracle:1521 3、SQL Server:1433 4、redis : 6379

2017-09-19 09:10:53 1008

原创 数据库连接池技术介绍(空间换时间)

1、数据库连接池技术,就是数据库启动时会建立一定数量的数据库连接(也称为池连接),并一直维持不少一定数目的池连接。2、客户端程序需要连接数据库时,数据库连接池会返回一个未使用的池连接给数据库使用。如果当前没有空闲连接,数据库连接池就新建一定数量的连接。当使用的池连接调用完成后,连接池将此连接表记为空闲,其他调用就可以使用这个连接。这样做的目的是提高了应用程序访问数据库的性能,降低数据库负载。

2017-09-19 09:06:17 660

原创 数据库中常用的约束和约束作用

1、声明所使用的标识符不一样 ,函数使用function ,存储过程procedure 2、函数必须有返回值,存储过程没有返回值 3、存储过程因没有返回值,不能将结果直接赋值给变量。函数有返回值,可以将结果直接赋值给变量,并且可以在select语句中直接使用 4、函数的参数作用仅仅是将数据传入函数中,存储过程的参数可以有传入和传出两种方式(即存储过程里,可以通过参数结果将所需要的结果返回)

2017-09-19 08:59:56 8642

空空如也

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

TA关注的人

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