c3p0

JSP+Spring+SpringMVC+Hibernate+Mysql实现的校园失物招领网站

浪子不回头ぞ 提交于 2020-05-07 11:58:23
项目简介 项目来源于: https://github.com/wenlongup/LostAndFound 因原github仓库无数据库文件,经过本人修改,现将该仓库重新上传至个人gitee仓库。 https://gitee.com/coderzcr/LostAndFound 本系统基于 JSP+Spring+SpringMVC+Hibernate+Mysql 的校园失物招领网站。本系统没有使用常用的SSM或者SSH框架,而是 以Spring+SpringMVC+Hibernate三个框架结合来完成。这样能完美诠释框架是服务于服务,只要某个框架利于您的开发进程,就不必拘泥于框架,使用最熟练最高效的即可。 难度等级:中等 技术栈 编辑器 Eclipse Version: 2019-12 (4.14.0) 前端技术 基础:html+css+JavaScript 框架: JQuery + EasyUI 后端技术 Spring+SpringMVC+Hibernate 模板引擎:JSP 数据库连接池:C3P0 数据库:mysql 5.7.27(个人测试使用) jdk版本:1.8.0_181(个人测试使用) tomcat版本:8.5.34(个人测试使用) 本地运行 Eclipse环境准备 1. eclipse新增jdk 2. eclipse新增tomcat 导入项目 若有疑惑可查看 视频版本

Spring框架(三)—— Spring的事务管理、Spring框架的JDBC模板

ⅰ亾dé卋堺 提交于 2020-05-06 03:42:01
今天内容 1. Spring框架的AOP之注解的方式 2. Spring框架的JDBC模板 3. Spring框架的事务管理 案例一:使用Spring框架的AOP技术对DAO层的功能进行增强 案例一:使用Spring框架的AOP技术对DAO层的功能进行增强 1. 使用Spring框架的AOP技术对DAO层的功能进行增强 技术分析之:Spring框架的AOP技术(注解方式) 1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * spring-aop-4.2.4.RELEASE.jar * com.springsource.org.aopalliance-1.0.0.jar * aspectJ的开发包 * com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar * spring-aspects-4.2.4.RELEASE.jar ​ 2. 步骤二:创建Spring的配置文件,引入具体的AOP的schema约束 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001

聊聊maxwell的MysqlPositionStore

走远了吗. 提交于 2020-05-04 10:39:30
序 本文主要研究一下maxwell的MysqlPositionStore MysqlPositionStore maxwell-1.25.1/src/main/java/com/zendesk/maxwell/schema/MysqlPositionStore.java public class MysqlPositionStore { static final Logger LOGGER = LoggerFactory.getLogger(MysqlPositionStore.class); private static final Long DEFAULT_GTID_SERVER_ID = new Long(0); private final Long serverID; private String clientID; private final boolean gtidMode; private final ConnectionPool connectionPool; public MysqlPositionStore(ConnectionPool pool, Long serverID, String clientID, boolean gtidMode) { this.connectionPool = pool; this.clientID = clientID;

高并发系统设计40讲之 池化技术

荒凉一梦 提交于 2020-04-29 15:59:02
系统架构中,数据库的连接时间比SQL的执行时间要长, 为了提高效率,使用数据库连接池将连接预先建立好 用连接池预先建立数据库连接 数据库连接池有两个最重要的配置:最小连接数和最大连接数,它们控制着从连接池中获取连接的流程: 如果当前连接数小于最小连接数,则创建新的连接处理数据库请求; 如果连接池中有空闲连接则复用空闲连接; 如果空闲池中没有连接并且当前连接数小于最大连接数,则创建新的连接处理请求; 如果当前连接数已经大于等于最大连接数,则按照配置中设定的时间(C3P0 的连接池配置是 checkoutTimeout)等待旧的连接可用; 如果等待超过了这个设定时间则向用户抛出错误。 连接池故障: 数据库的域名对应的 IP 发生了变更,池子的连接还是使用旧的 IP,当旧的 IP 下的数据库服务关闭后,再使用这个连接查询就会发生错误; MySQL 有个参数是“wait_timeout”,控制着当数据库连接闲置多长时间后,数据库会主动地关闭这条连接。这个机制对于数据库使用方是无感知的,所以当我们使用这个被关闭的连接时就会发生错误。 如何保持连接池可用: 启动一个线程来定期检测连接池中的连接是否可用,比如使用连接发送“select 1”的命令给数据库看是否会抛出异常,如果抛出异常则将这个连接从连接池中移除,并且尝试关闭。目前 C3P0 连接池可以采用这种方式来检测连接是否可用

基于SpringMVC+Spring+MyBatis实现秒杀系统【数据库接口】

岁酱吖の 提交于 2020-04-28 23:13:42
前言 该篇教程主要关注MyBatis实现底层的接口,把MyBatis交给Spring来托管。数据库连接池用的c3p0。数据库用的MySQL。主要有2个大类:秒杀商品的查询、秒杀明细的插入。 准备工作 1、数据库脚本。先初始化数据库,这里主要有2张表:seckill【秒杀商品表】、success_killed【秒杀记录明细表】。success_killed采用双主键seckill_id、user_phone。同一个商品同一个手机号只能秒杀一次,如果通过非法手段通过业务接口的话,则重复插入秒杀记录明细时会返回0。 -- 创建数据库 CREATE DATABASE seckill; -- 使用数据库 use seckill; CREATE TABLE seckill( `seckill_id` BIGINT NOT NUll AUTO_INCREMENT COMMENT '商品库存ID', `name` VARCHAR(120) NOT NULL COMMENT '商品名称', `number` int NOT NULL COMMENT '库存数量', `start_time` TIMESTAMP NOT NULL COMMENT '秒杀开始时间', `end_time` TIMESTAMP NOT NULL COMMENT '秒杀结束时间', `create_time`

【Java】java数据库连接中C3P、DBCP、Druid连接池的使用

假如想象 提交于 2020-04-28 04:34:45
使用JDBC的步骤: 1.加载数据库驱动 2.通过DriverManager获得数据库连接 3.通过Connection获得Statement对象 4.使用Statement执行SQL语句。 5.操作结果集合 6.释放数据库连接 可以通过谐音来记忆“贾(加载驱动)莲(获取连接)预(获得预编译语句)执(执行Sql语句)事(释放资源)”。 数据库连接的建立及关闭是及耗费系统资源的操作,在多层结构的应用环境中,这种资源的耗费对系统性能影响尤为明显。 通过DriverManager获得数据库连接的方式,一个数据库连接对象对应一个物理数据库连接,每次操作都打开一个物理连接,使用完后立即关闭连接。频繁地打开、关闭连接将造成系统性能低下。 数据库连接池的解决方案是,当应用程序启动时候,系统建立足够多的数据库连接,并将这些连接组成一个连接池。每次应用程序请求数据库连接时,无需重新打开连接,而是从连接池中取出已有的连接使用,使用完后不再关闭数据库连接,而是直接将连接归还给连接池,通过使用连接池将大大提高程序的运行效率。 对于资源共享的情况,有一个通用的设计模式:资源池(Resource Pool),用于解决资源频繁请求释放资源的压力。 JDBC 2.0规范引入了数据库连接池技术。JDBC的数据库连接池使用javax.sql.DataSource来表示,DataSource只是一个接口

logback日志输出至数据库

烈酒焚心 提交于 2020-04-28 03:46:48
我们知道将数据库输出到不同的地方需要使用不同的appender表示,那下面了解一下输出到数据库的DBAppender。 1.DBAppender 由于DBAppender会把记录写到数据库中,因此我们必须知道数据库的表结构。这个结构是固定的,但是可以通过继承DBAppenderBase类来实现修改表的结构,详细做法参考 https://blog.csdn.net/qq_20914913/article/details/92830914#%E4%B8%80%E3%80%81%E5%8E%9F%E5%A7%8Blogback%20%C2%A0MySQL%E9%85%8D%E7%BD%AE 1.根据官方文档创建数据库 DBAppender会把记录事件写入数据库的三张表(logging_event、logging_event_property、logging_event_exception),并且这三张表的结构是固定的。创建这三张表的脚本如下: BEGIN ; DROP TABLE IF EXISTS logging_event_property; DROP TABLE IF EXISTS logging_event_exception; DROP TABLE IF EXISTS logging_event; COMMIT ; BEGIN ; CREATE TABLE logging

使用SSM框架搭建JavaWeb,使用Junit测试时遇到CannotGetJdbcConnetionException

不想你离开。 提交于 2020-04-28 02:09:56
背景:   在使用Spring、SpringMVC、Mybatis、Maven、c3p0,junit4.12搭建一个简单的增删改查JavaWeb项目;   依赖导入完备,写好基本的实体类,DAO,和mybatis的配置文件、mapper文件都编写好之后,在使用junit做数据库表做查询时测试时发生以下错误:    错误如下: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: An attempt by a client to checkout a Connection has timed out. 具体如下图: 一开始我的数据源和参数文件配置如下: jdbc.properties文件: driver=com.mysql.jdbc.Driver url=jdbc:mysql:/

JavaWeb学习(三十)———— 数据库连接池

不想你离开。 提交于 2020-04-28 02:03:02
一、应用程序直接获取数据库连接的缺点   用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。如下图所示:    二、使用数据库连接池优化程序性能 2.1、数据库连接池的基本概念   数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提出来的. 数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个 。如下图所示:    数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中, 这些数据库连接的数量是由最小数据库连接数来设定的.无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量.连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中. 数据库连接池的最小连接数和最大连接数的设置要考虑到以下几个因素: 最小连接数:是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大

【JavaWeb】c3p0连接池与MySQL

点点圈 提交于 2020-04-28 01:56:10
正文之前 在之前的文章讲到了传统的 JDBC连接MySQL 的方式,但是这样的方式在进行多个连接时,就显得效率低下,明显不如连接池的效率,所以我们这次来讲解一下JDBC连接池之一:c3p0 正文 1. 准备工作 IntelliJ IDEA c3p0-0.9.5.2(jar) MySQL 2. 配置 c3p0-config.xml default-config 在配置之前,需要先进行建立数据库的工作,本文还是采用上篇文章中的名为 customer 的数据库 然后在工程的 src 目录下新建一个名为 c3p0-config 的XML文件(文件名不能自定义) 然后开始配置: <!-- 数据库地址 --> <property name="jdbcUrl">jdbc:mysql://localhost:3306/customer</property> <!-- 数据库驱动 --> <property name="driverClass">com.mysql.jdbc.Driver</property> <!-- 用户名 --> <property name="user">root</property> <!-- 密码 --> <property name="password">3865933</property> 先写基本的数据库信息,然后我们再来写常用的连接池属性,若要查询全部属性