数据库对象

谈谈个人网站的建立(八)—— 缓存的使用

淺唱寂寞╮ 提交于 2020-02-05 03:09:57
欢迎访问我的网站 http://www.wenzhihuai.com/ 。感谢,如果可以,希望能在GitHub上给个star,GitHub地址 https://github.com/Zephery/newblog 。 一、概述  1.1 缓存介绍 系统的性能指标一般包括响应时间、延迟时间、吞吐量,并发用户数和资源利用率等。在应用运行过程中,我们有可能在一次数据库会话中,执行多次查询条件完全相同的SQL,MyBatis提供了一级缓存的方案优化这部分场景,如果是相同的SQL语句,会优先命中一级缓存,避免直接对数据库进行查询,提高性能。 缓存常用语: 数据不一致性、缓存更新机制、缓存可用性、缓存服务降级、缓存预热、缓存穿透 可查看 Redis实战(一) 使用缓存合理性 1.2 本站缓存架构 从没有使用缓存,到使用mybatis缓存,然后使用了ehcache,再然后是mybatis+redis缓存。 步骤: (1)用户发送一个请求到nginx,nginx对请求进行分发。 (2)请求进入controller,service,service中查询缓存,如果命中,则直接返回结果,否则去调用mybatis。 (3)mybatis的缓存调用步骤:二级缓存->一级缓存->直接查询数据库。 (4)查询数据库的时候,mysql作了主主备份。 二、Mybatis缓存 2.1 mybatis一级缓存

SSM框架--mybatis

醉酒当歌 提交于 2020-02-03 07:15:19
五.mybatis相关 1.jdbc介绍 JDBC是Java制定的接口,数据库产商依照该接口编写与自家数据库配套的实现类。比如MySQL、Oracle、SqlServer等都有自己的不同实现,这些实现类的集合既是我们笼统意义上的“驱动”。 2.preparedstatement和statement的区别 数据库系统会对sql语句进行预编译处理(如果JDBC驱动支持的话),预处理语句将被预先编译好,语法语义解析优化sql语句,指定执行计划执行并返回结果 但是很多情况,我们的一条sql语句可能会反复执行,或者每次执行的时候只有个别的值不同(比如select 的where子句值不同,update的set子句值不同,insert 的values值不同).如果每次都需要经过上面的词法语义解析,语句优化,制定执行计划等,则效率就明显不行了 所谓预编译语句就是将这类语句的值用占位符替代,可以视为将sql语句模板或者说参数化 什么是预编译(将这条sql(解析完成)语句放入缓存执行计划中,如果有相同的sql语句进来,就会直接执行该sql(解析完成)语句,省去解析的过程) 下面列出PreparedStatement的几点优势。 1.PreparedStatement可以写动态参数化的查询用PreparedStatement你可以写带参数的sql查询语句

C#连接SQL Server数据库(二)

a 夏天 提交于 2020-01-31 22:51:36
执行SQL语句:Command对象 1.Command对象概述    Command对象是一个数据命令对象,主要功能是向数据库发送查询、更新、删除、修改操作的SQL语句。Command对象主要有以下几种方式。     SqlCommand:用于向SQL Server数据库发送SQL语句,位于 System.Data.SqlClient 命名空间。     OleDbCommand:用于向使用OLEDB公开的数据库发送SQL语句,位于 System.Data.OleDb 命名空间。例如,Access数据库和MySQL数据库都是OLEDB公开的数据库。     OdbcCommand:用于向ODBC公开的数据库发送SQL语句,位于 System.Data.Odbc 命名空间。有些数据库如果没有提供相应的连接程序,则可以配置好ODBC连接后,使用OdbcCommand。     OracleCommand:用于向Oracle数据库发送SQL语句,位于 System.Data.OracleClient 命名空间。 2.设置数据源类型    Command对象有3个重要的属性,分别是Connection、CommandText和CommandType。Connection属性用于设置SqlCommand使用的SqlConnection

Javaweb——JDBC连接池

夙愿已清 提交于 2020-01-31 17:36:01
JDBC 首先我们要先了解 JDBC 的定义及由来 1. 概念 :Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 2. 快速入门 : 步骤 (不严谨,会出现SQL注入,低效等问题,具体可用 PreparedStatement对象 、以及 JDBC工具类JDBCUtils (创建时可引用 类加载器ClassLoader ,以及书写配置文件方便查找修改)解决) : 1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar   1. 复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下   2. 右键–>Add As Library 2. 注册驱动   Class.forName(“com.mysql.jdbc.Driver”); 3. 获取数据库连接对象 Connection   Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/db3”,

.net项目开发工具最新动态

青春壹個敷衍的年華 提交于 2020-01-30 20:04:40
.net项目开发工具(V2.1) : http://www.cnblogs.com/mrhgw/archive/2007/06/04/770278.html 2007-6-7号: --------------------------------------------------------------------------------------- 今天早上修正了软件的几个bug: 1.多主键识别。 2.修正了生成主程序代码方法中的一个错误(当数据表没有主键时会发生异常)。 3.修正了程序升级完成后,升级程序还滞留在系统进程中。 4.程序版本已正式更新为2.0.0.1。 2007-6-8号: --------------------------------------------------------------------------------------- 今天早上对软件进行了如下更新: 1.修正了在SQLServer 2005下多载入了一个系统表。 2.创建“插入”类型的存储过程,识别自动递增列并作为一个输出参数。 3.为数据表添加“浏览数据结构”的功能,方便一目了然。 4.为数据表或数据库生成的文档添加了样式,主键和自动递增列高亮显示。 5.捕捉“新建工程”时,由于数据库连接设置不正确导致的异常,并自动打开当前配置方案。 2007-6-9号: -----------

ADO.NET访问数据库

北城余情 提交于 2020-01-30 10:08:45
1:ADO.NET数据库的方法和技术 2:ADO.NET的主要组成: 1>DataSet(数据集)-----独立于数据间的数据访问 2>.NETFramework(数据提供程序)------用于连接到数据库,执行命令和检索结果 3:应用程序: command:对象负责对数据库执行命令 DataReader:对象负责从数据库源读取数据 DataAdapter:对象负责数据集和数据库的联系 connection(桥梁):对象负责链接数据库 4:使用ADO.NET连接库的步骤: ----1:定义连接字符串: Data source =服务器名;Initial Catalog =数据库名;User Id =用户名;Pwd =密码; ----2:创建connextion对象: sqlConnection conn =new sqlConnection(connString)----连接字符串 ----3:打开数据库的链接: Conn.Open(); 5:代码分析举例: ? 1 2 3 4 5 6 7 8 9 10 //定义数据库的链接字符串: string constr = '' Data Source =.;Inital Catalog =Myschool; User id =jbit;pwd =bdqn; //创建connection对象 SQLConnection conn = new

day28 JavaWEB阶段——JDBC笔记(mysql-5.1.37和mysql-8.0.15数据库驱动包,SQL 注入原因和解决方案,PreparedStatement 完成增、删、改、查)

戏子无情 提交于 2020-01-30 03:54:24
JDBC mysql-5.1.37和mysql-8.0.15数据库驱动包下载 ,如何导入IDEA往下看 今日源码 链接: https://pan.baidu.com/s/12ibAtAjbaRGFPuAcaA52Dg 提取码:n6ux 第1节 回顾 1.1 表连接 内连接: 隐式、显式 隐式: 没有 join,使用 where 显式: inner join…on 外连接: 左连接和右连接 左连接: left outer join … on 右连接: right outer join … on 1.2 子查询 三种情况: 单行单列:比较运算符:>、<、= 多行单列:使用 in 关键字 多行多列:放在 from 后面,做为一张表再次查询 1.3 备份与还原 备份:mysqldump -u 用户名 -p 密码 数据库 > 文件名 还原: 登录使用数据库 use 数据库 source 文件名 1.4 事务 事务四个特性 ACID:原子性、一致性、隔离性、持久性 在 mysql 中有三条语句: 开启事务:start transaction 提交事务:commit 回滚事务:rollback 设置事务回滚点:savepoint 名字 回到回滚点:rollback to 名字 第2节 学习目标 能够理解 JDBC 的概念 能够使用 DriverManager 类 能够使用 Connection

hibernate学习整理

自闭症网瘾萝莉.ら 提交于 2020-01-29 11:30:44
1.建立第一个程序 model里面是数据库表所对应的字段,先建立strudent数据库,再建立与数据库与之对应的model,再从官方的文档里面copy hibernate.cfg.xml文件并进行修改, -->建立student.hbm.xml文件 2.在student.hbm.xml文件中<hibernate-mapping package =是你要映射到的哪个包中 class name=“为那个包中所对应的类名” table="数据库的表名"(它包含这个类和表之间的映射关系) id name=“为model中的那个主键” column=‘与DB中对应的列’>同时要在hibernate.cfg.xml文件中的<mapping-resource>指定要映射的strudent.hbm.xml文件。 3.写具体的实现,前几步是固定的写法,也可以定义一个工具类进行封装 SessionFactory sf=new Configuration.configure.buildSessionFactory(); Session session=sf.openSession(); Transfaction ts=session.beginTransfaction(), 在hibernate中操作要放在事物里面,session.save(这个s是一个student类对象) ts.commit()

Mybatis面试题目

爱⌒轻易说出口 提交于 2020-01-29 04:45:26
${s}与#{s}的区别 1.${s}是Properties文件中的变量占位符,属于静态文本替换,比如 d r i v e r 会 被 静 态 替 换 为 c o m . m y s q l . j d b c . D r i v e r 。 e g : i d = {driver}会被静态替换为com.mysql.jdbc.Driver。eg:id= d r i v e r 会 被 静 态 替 换 为 c o m . m y s q l . j d b c . D r i v e r 。 e g : i d = {1 Or 1=1}(sql注入问题)。即传入的s是什么花括号中就是什么。 2.#{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,***在sql执行前***会使用PreparedStatement的参数设置方法,按序给sql的?号占位符设置参数值,比如ps.setInt(0, parameterValue),#{item.name}的取值方式为使用反射从参数对象中获取item对象的name属性值,相当于param.getItem().getName()。使用#{}可以有效的防止SQL注入,提高系统安全性。一般能用#的就别用 , , , 方式一般用于传入数据库对象,例如传入表名. 3.用法:select * from user where name

hibernate整理

泪湿孤枕 提交于 2020-01-28 17:19:24
国外框架项目地址:http://websystique.com/springmvc/spring-mvc-4-angularjs-example/Angularjs文本输入框用ng-moduel,其他的用{{ }}放行用.*?Angularjs插件地址http://www.cnblogs.com/pilixiami/p/5634405.htmlUI班的教程:http://pan.baidu.com/share/link?shareid=4146906997&uk=866705889非严格读写是并发的概念Spring不支持多线程Flush()强制要求缓存与数据库一致Eache表连接,lazy子查询ORM: 编写程序时,以面向对象的方式处理数据 保存数据时是以关系型数据库的方式存储的Hibernate的数据持久化: New实例化对象时默认是瞬时的 Jdbc连接数据库时,持久化数据 将数据存入硬盘单向关联关系: 一个类单方向包含另一个类为属性,模拟数据库外键mysql数据库附加:String driver=com.mysql.jdbc.DriverString url=jdbc:mysql://localhost:3306/demohibernate注入: 实体类(1)这个表示一个实体类,Table表示对应数据库中的表名。@Entity@Table(name="t_emp")(2