连接池

redis 基础(一)

南笙酒味 提交于 2019-11-30 15:48:24
Redis 的特点 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis支持数据的备份,即master-slave模式的数据备份。 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。 高可用和分布式:哨兵机制实现高可用,保证redis节点故障发现和自动转移 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。 Redis 的五种数据类型 string string 数据类型是最常用、简单的key-value类型,普通的key/value 存储都可以归为此类。value不仅可以是字符串,也可以是数字,图片(base64),对象(序列化); 使用场景 : 做缓存数据的功能 spring-boot-starter-data-redis 存储 session 信息 spring-session-data-redis 做分布式锁

好程序员Java学习路线分享MyBatis之Spring整合

非 Y 不嫁゛ 提交于 2019-11-30 14:53:30
  好程序员Java学习路线分享MyBatis之Spring整合,Spring、SpringMVC和MyBatis是目前企业开发的三大框架。本章我们将学习将Spring和MyBatis整合到一起,成为我们项目开发的技术骨架。 引入依赖 首先我们需要在Maven项目中添加依赖,Spring框架和MyBatis框架需要的依赖有: mybatis MyBatis mybatis-spring MyBatis的Spring兼容包,用于整合MyBatis spring-jdbc Spring的JDBC包,配置数据源时需要 spring-test Spring单元测试 spring-context Spring上下文,提供IOC和AOP服务 Junit 单元测试框架 mysql-connector-java MySQL数据库驱动 c3p0 连接池 添加配置文件 首先我们用properties文件配置JDBC的参数: 示例代码:jdbc.properties driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost/java1903?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false user=root password=123456

连接池

落花浮王杯 提交于 2019-11-30 14:39:54
总结:1.连接池:java对外提供了连接的接口,连接池的存在就省去了每次创建和释放连接。 2.连接池的连接条件:1.将commons-pool-1.5.6.jar的jar包引进java项目下的lib文件夹 3.用连接池对象代替dao'层的Connection对象; 4.在tools工具包里创建MyDBUtils工具文件和JDNCUtils一样 QueryRunner qr=new QueryRunner(MyDBUtils.getDatasource());用MyDBUtils.getDatasource()代替了Connection String sql="select * from user where name=?"; Object[] obj={"小红"}; int row=qr.update(sql,obj); 使用连接池也不需要释放 5.什么是事务:一件事情由n个单元组成,要么这n个丹玉一起成功要么这n个单元一起失败,这n个单元一起组成的事情就叫事务 6.一条sql语句就是一个事务,默认开启事务并提交事务 7.Mysql的事务:1.开启事务:start transaction()运行的sql会先存在内存中,所以没有改变数据库,所以说,rollback回滚以后能回复,因为没有改变数据库,需要commit提交才会把sql 语句执行后的结果写进数据库里 commit

被mysql中的wait_timeout坑了

时光毁灭记忆、已成空白 提交于 2019-11-30 14:32:08
今天被mysql里的wait_timeout坑了 网上能搜到很多关于mysql中的wait_timeout相关的文章,但是大多数只是说明了他的作用,而且都说这个参数要配合那个interactive_timeout参数一起修改才会生效,经过今天我和同事的努力,这里要说一下,其实是我把同事坑了,很惭愧,之前只是看服务器上连接mysql的连接很多都是timewait状态,逐在网上搜索到这个wait_timeout参数,使用该参数后,果然很有效,大大抑制了很多无效的timewait,但是谁知道这个参数会影响后端程序的连接,至于原因,后面会说。 为什么会说网上大多数都是坑呢?因为这个wait_timeout并不是改了配置文件不起作用,也不是非要和那个interactive_timeout一起改,才会生效,只是你在配置文件中配置“wait_timeout = 10”,在mysql里,用 show variables like "%timeout%" 看到的还是28800 但是,这里实际上已经按你配置的时间在运行了,也就是说配置已经生效了,为什么这里show不出变化,我也不清楚为什么。 就是因为这个,我们花费了大半天的时间来查找程序上的bug 这个wait_timeout的作用是,设置非交互连接(就是指那些连接池方式、非客户端方式连接的)的超时时间,默认是28800,就是8小时,超过这个时间

数据库 mysql

天大地大妈咪最大 提交于 2019-11-30 12:50:24
sql语法顺序和解析顺序的理解 mysql查询时的书写顺序: select...from...where...group by...having...order by... mysql的执行顺序: from...where...group by...having...select...order by... from:需要从哪个数据表检索数据 where:过滤表中数据的条件 group by:如何将上面过滤出的数据分组 例句:select cid,count(*) from product group by cid //注释:cid为product表的外键,可以模拟查询统计每个分类产品的数量 having:对上面已经分组的数据进行过滤的条件 例句:select cid,avg(price) from product group by cid having avg(price)>60 select:查看结果集中的哪个列,或列的计算结果 order by :按照什么样的顺序来查看返回的数据 (desc为降序,asc为升序) mysql架构分析和执行流程分析 逻辑架构 连接器(nacivate) 服务管理 select user();#查看当前登录用户 flush privileges;刷新授权表 mysql -uroot -p -h 127.0.0.1 -P 3306

C3P0连接池的配置方式

為{幸葍}努か 提交于 2019-11-30 12:17:39
c3p0的配置方式分为三种,分别是 1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件 1.setters一个个地设置各个配置项 这种方式最繁琐,形式一般是这样: Properties props = new Properties(); InputStream in = ConnectionManager.class.getResourceAsStream("/c3p0.properties"); props.load(in); in.close(); ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass(props.getProperty("driverClass")); cpds.setJdbcUrl(props.getProperty("jdbcUrl")); cpds.setUser(props.getProperty("user")); cpds.setPassword(props.getProperty("password")); 因为繁琐,所以很不适合采用,于是文档提供了另外另种方式。 2. 类路径下提供一个c3p0.properties文件 文件的命名必须是c3p0

web项目连接池的作用

て烟熏妆下的殇ゞ 提交于 2019-11-30 12:16:02
连接池的作用:连接池是将已经创建好的连接保存在池中,当有请求来时,直接使用已经创建好的连接对数据库进行访问。这样省略了创建连接和销毁连接的过程。这样性能上得到了提高。 基本原理是这样的: ( 1 )建立数据库连接池对象(服务器启动)。 ( 2 )按照事先指定的参数创建初始数量的数据库连接(即:空闲连接数)。 ( 3 )对于一个数据库访问请求,直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接,且连接数没有达到最大(即:最大活跃连接数),创建一个新的数据库连接。 ( 4 )存取数据库。 ( 5 )关闭数据库,释放所有数据库连接(此时的关闭数据库连接,并非真正关闭,而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接)。 ( 6 )释放数据库连接池对象(服务器停止、维护期间,释放数据库连接池对象,并释放所有连接)。 核心功能就是提高性能。降低开销。 1 . 连接池的概念和为什么要使用连接池? 连接池放了 N 个 Connection 对象,本质上放在内存当中,在内存中划出一块缓存对象,应用程序每次从池里获得 Connection 对象,而不是直接从数据里获得,这样不占用服务器的内存资源。 2 . 如果不使用连接池会出现的情况: a. 占用服务器的内存资源 b. 导致服务器的速度非常慢 3 . 应用连接池的三种方式: a. 自定义连接池 b.

面试(5)

删除回忆录丶 提交于 2019-11-30 10:51:10
线程中的sleep()和wait方法的区别是什么? 1、来自的类不同(重要) sleep()方法是线程类(Thread)的方法; wait()方法是Object类里的方法; 2、捕获异常不同 sleep()方法必须捕获异常 wait()方法不需要捕获异常 3、使用范围不同 sleep()方法可以在任何地方使用 wait()方法只能在同步控制方法或者同步控制块里面使用 4、是否释放锁不同(重要) 调用sleep()方法的时候, 不会释放对象锁 ,等待阻塞的时间到了线程 自动恢复运行状态 调用wait()方法的时候,会释放了对象锁(使得其他线程可以使用同步控制块或者方法 ),通过调用notify()唤醒线程才能恢复到运行状态 注:1、每个对象都有一个锁来控制同步访问。Synchronized关键字可以和对象的锁交互,来实现线程的同步。 2、sleep不出让系统资源;wait是进入线程等待池等待,让出系统资源,其他线程可以占用CPU。一般wait不会 加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤 醒等待池中的所有线程,才会进入就绪队列等待OS分配系统资源。sleep(milliseconds)可以用时间指定使它自动唤醒过来,如果时间不到只能调用interrupt()强行打断。 3、Object类常用的方法有哪些?

关闭 CLOSE_WAIT 状态的连接

限于喜欢 提交于 2019-11-30 10:17:00
1 一般原因都是TCP连接没有调用关闭方法。需要应用来处理网络链接关闭。 2 对于Web请求出现这个原因,经常是因为Response的BodyStream没有调用Close. 比如Widnows下: 使用HttpWebRequest 一定要保证GetRequestStream和GetResponse对象关闭,否则容易造成连接处于CLOSE_WAIT状态 3 TCP的KeepLive功能,可以让操作系统替我们自动清理掉CLOSE_WAIT的连接。 但是KeepLive在Windows操作系统下默认是7200秒,也就是2个小时才清理一次。往往满足不了要求。可以调小该数值。 Windows下的调整方法为 HKEY_LOCAL_MACHINE/CurrentControlSet/Services/Tcpip/Parameters下的以下三个参数: KeepAliveInterval,设置其值为1000 www.2cto.com KeepAliveTime,设置其值为300000(单位为毫秒,300000代表5分钟) TcpMaxDataRetransmissions,设置其值为5 Close_Wait引发的问题: Close_Wait会占用一个连接,网络可用连接小。数量过多,可能会引起网络性能下降,并占用系统非换页内存。 尤其是在有连接池的情况下(比如HttpRequest)