缓存

PreparedStatement和Statement的区别

蹲街弑〆低调 提交于 2020-03-20 20:52:57
转自:http://blog.sina.com.cn/s/blog_77eba18f01019csh.html 1、 PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象。 2、作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数 3、在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替 Statement.也就是说,在任何时候都不要使用Statement. 基于以下的原因: 一.代码的可读性和可维护性. 虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说.都比直接用Statement的代码高很多档次: stmt.executeUpdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");//stmt是Statement对象实例

Java中PreparedStatement和Statement的用法区别

♀尐吖头ヾ 提交于 2020-03-20 20:52:09
Java中PreparedStatement和Statement的用法区别 (2012-08-01 11:06:44) 转载 ▼ 标签: 杂谈 1、 PreparedStatement 接口继承 Statement , PreparedStatement 实例包含已编译的 SQL 语句, 所以其执行速度要快于 Statement 对象。 2、作为 Statement 的子类,PreparedStatement 继承了 Statement 的所有功能。三种方法 execute、 executeQuery 和 executeUpdate 已被更改以使之不再需要参数 3、在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替 Statement.也就是说,在任何时候都不要使用Statement. 基于以下的原因: 一.代码的可读性和可维护性. 虽然用PreparedStatement来代替Statement会使代码多出几行,但这样的代码无论从可读性还是可维护性上来说.都比直接用Statement的代码高很多档次: stmt.executeUpdate("insert into tb_name (col1,col2,col2,col4) values ('"+var1+"','"+var2+"',"+var3+",'"+var4+"')");/

微服务监控平台-缓存设计

a 夏天 提交于 2020-03-20 10:29:35
一,架构图及其说明 1,UI数据:页面 2,一级缓存:内存 3,二级缓存:硬盘文件系统 4,定时任务:同步数据库与缓存中的数据 5,数据源:数据库 二,场景分析 加缓存之前的数据信息流: 浏览器发出数据请求后,服务器后端接收到数据请求,开始通过数据源连接读取各种数据后,通过业务逻辑层处理成需要的逻辑数据后返回给浏览器。浏览器更新数据模型展现数据。 三,上述场景存在的问题 1、 每次获取数据都要走相同的数据流程来获取数据,如果遇到源数据宕机、或者逻辑性能降低情况时页面效果会非常的差。 2、 每次获取到数据后都要进行相同的数据逻辑处理,浪费性能。 3、 获取到的数据可能并没有发生变化,但是每次都产生了不必要的浪费。 四,缓存方案选择 1,划分的原则:业务场景 2,常见方案:   1)一级缓存+二级缓存;   2)一级缓存; 3,实现方式:   1)一级缓存可以采用HashTable的方式来进行数据存储。不同的页面可以创建不同的HashTable对象,页面的不同信息块创建不同的Key值,将逻辑层处理好的JSON数据作为Value来存放。当信息块更新数据时,通过Key值可以直接获取到JSON数据。如果是这个页面的数据刷新则直接将HashTable的数据序列化为JSON返回即可。 2) 二级缓存基于本地文件系统,将数据序列化为JSON后写入文本文件即可。一个页面信息块一个JSON文本文件。

ORM组件XCode(十八般武艺)

南楼画角 提交于 2020-03-20 07:23:56
之前,XCode总是若隐若现,耐性好的同学想知道它还有啥特点,沉不住气的则认为不过是CURD耳! XCode开发模式是灵魂,XCode组件通过具体实现对其支持! XCode的特点如下: 0、基本的CURD功能 实在想不出来不支持CURD的ORM算不算ORM;也实在想不出来仅有CURD的ORM算不算ORM。因而,这是0号功能! XCode的CURD通过反射实体类生成查询和操作SQL实现,数据库结构信息通过特性附在实体类上。之所以选择SQL而不是DbCommand,因为XCode的实体层和数据访问层是分开的,目前是为了实现一级缓存,将来会在这里实现分布式数据访问。 1、完美支持ObjectDataSource XCode实现充血模型(胀血模型)的实体类,提供ObjectDataSource需要的所有方法和参数,特别支持分页和排序功能! 详见 《与ObjectDataSource共舞》 2、全面分页支持 只有从小处开始培养分页的思想,任何查询都指定所需获取数据范围,才能保证系统数据变大时系统不会拓机。 XCode的分页以任意查询语句为基础,支持统计等非常复杂的查询分页。并且会根据当前数据库类型以及版本选择最佳分页方案。 详见 《撬动千万级数据》 3、实体集合支持 实体集合EntityList<TEntity>继承自List<TEntity>,提供了实体的批量操作

Hibernate - Session

旧城冷巷雨未停 提交于 2020-03-19 18:17:34
Session 是应用程序与数据库之间交互操作的一个 单线程对象 ,是 Hibernate 运作的中心,所有持久化对象必须在 session 的管理下才可以进行持久化操作, 此对象的生命周期很短。 Session 对象有一个一级缓存,显式执行 flush 之前,所有的持久层操作的数据都缓存在 session 对象处, 相当于 JDBC 中的 Connection。 Session 接口是 Hibernate 向应用程序提供的操纵数据库的最主要的接口, 它提供了基本的保存, 更新, 删除和加载 Java 对象的方法. Session 具有一个缓存, 位于缓存中的对象称为持久化对象, 它和数据库中的相关记录对应. Session 能够在某些时间点, 按照缓存中对象的变化来执行相关的 SQL 语句, 来同步更新数据库, 这一过程被称为刷新缓存(flush)   站在持久化的角度, Hibernate 把对象分为 4 种状态: 临时状态, 持久化状态,, 游离状态, 删除状态. Session 的特定方法能使对象从一个状态转换到另一个状态 -------------------------------------------------------------------------------------------------------------------------------

Hibernate Session总结

China☆狼群 提交于 2020-03-19 18:17:13
现在我们可以在 IDEA 下 新建一个 Hibernate 项目 ,接着上次内容这次主要总结一下 Hibernate 的 Session,及其核心方法。 Session 概述 Session 接口是 Hibernate 向应用程序提供的操纵数据库的主要接口,提供了基本的 保存、更新、删除和加载 java 对象的方法 Session 具有一个缓存,位于 缓存中的对象称为持久化对象 ,和数据库中的相关记录对应 Hibernate 将对象分为 4 种状态,持久化状态,临时状态,游离状态,删除状态, Session 特定的方法可以使对象从一个状态到另一个状态。 Session 缓存 Session 接口实现中包含一系列 java 集合,这些 java 集合构成了 Session 缓存,只要 Session 实例没有结束生命周期,且没有清理缓存,则存放在他缓存中的对象也不会结束生命周期 Session 缓存可以减少 Hibernate 访问数据库的频率 操作 Session 缓存 reflush(): 会强制发送 sql查询(select)语句 ,使缓存中的数据和数据库中的数据保持一致, 数据由数据库到缓存 flush(): 会强制发送 sql更新(update)语句 ,使数据库中的数据和缓存中的数据保持一致, 数据由缓存到数据库 当程序执行 Transaction 的 commit()

Hibernate的Session介绍[转 adoocoke]

微笑、不失礼 提交于 2020-03-19 18:16:53
Session Session是Hibernate向应用程序提供操作数据的主要接口, 他提供了保存、更新、删除、加载Java对象的方法。 Session的缓存 Session有一个缓存,用来缓存Java对象。 一般的数据库操作,都要从先从Session的缓存中获取,如果缓存中获取不到,hibernate才会去数据库中获取。 缓存的作用 缓存的作用不言而喻。 1、减少数据访问的频率。2、保持保证数据相关记录与缓存中的同步。 清理缓存 Session的save、update、delete方法, 只有在清理缓存的时候才向数据库中执行一条Sql语句。 所以, Session清理缓存的时间点,是个关键概念。 Session会在一下几个时间点清理缓存,并执行相关语句: a、当应用程序调用 org.hibernate.Transaction 的 commit() 方法的时候, commit() 方法先 清理缓存,然后再向数据库提交事务。 b、当应用程序通过 Hibernate 的 Query查询接口等执行查询操作 时,如果缓存中持久化对象的属性发生了变化,就会先清理缓存,以保证查询结果能反映持久化对象的最新状态。 c、当应用程序显式调用 Session 的 flush() 方法的时候。 Java对象在Hibernate中的状态 介绍缓存的方法之前,先介绍一下java对象在缓存中的几种状态

前端优化带来的思考,浅谈前端工程化

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-19 13:01:10
这段时间对项目做了一次整体的优化,全站有了20%左右的提升(本来载入速度已经1.2S左右了,优化度很低),算一算已经做了四轮的全站性能优化了,回顾几次的优化手段,基本上几个字就能说清楚: 传输层面:减少请求数,降低请求量 执行层面:减少重绘&回流 传输层面的从来都是优化的核心点,而这个层面的优化要对浏览器有一个基本的认识,比如: ① 网页自上而下的解析渲染,边解析边渲染,页面内CSS文件会阻塞渲染,异步CSS文件会导致回流 ② 浏览器在document下载结束会检测静态资源,新开线程下载(有并发上限),在带宽限制的条件下,无序并发会导致主资源速度下降,从而影响首屏渲染 ③ 浏览器缓存可用时会使用缓存资源,这个时候可以避免请求体的传输,对性能有极大提高 衡量性能的重要指标为首屏载入速度(指页面可以看见,不一定可交互),影响首屏的最大因素为请求,所以请求是页面真正的杀手,一般来说我们会做这些优化: 减少请求数 ① 合并样式、脚本文件 ② 合并背景图片 ③ CSS3图标、Icon Font 降低请求量 ① 开启GZip ② 优化静态资源,jQuery->Zepto、阉割IScroll、去除冗余代码 ③ 图片无损压缩 ④ 图片延迟加载 ⑤ 减少Cookie携带 很多时候,我们也会采用类似“时间换空间、空间换时间”的做法,比如: ① 缓存为王,对更新较缓慢的资源&接口做缓存(浏览器缓存

【转】分布式架构的演进(JavaWeb)

只谈情不闲聊 提交于 2020-03-18 22:20:31
作者:李小翀 链接: https://www.zhihu.com/question/22764869/answer/31277656 来源:知乎 1.初始 初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP特征:应用程序、数据库、文件等所有的资源都在一台服务器上。描述:通常服务器操作系统使用linux,应用程序使用JSP/PHP/ASP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了。 特征: 应用程序、数据库、文件等所有的资源都在一台服务器上。 描述: 通常服务器操作系统使用linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用Mysql,汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了 2.应用服务和数据服务分离 好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver 特征: 应用程序、数据库、文件分别部署在独立的资源上。 描述: 数据量增加,单台服务器性能及存储空间不足,需要将应用和数据分离,并发处理能力和数据存储空间得到了很大改善。 3.使用缓存提高性能 特征: 数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力

http面试题

て烟熏妆下的殇ゞ 提交于 2020-03-18 17:31:52
一. 基础概念 URI - 包括URL和URN 请求和响应报文 请求报文: 响应报文: 二. Http方法 客户端发送的请求报文为第一行,包含了方法字段。 GET - 获取资源,当前网络请求中,绝大部分是GET方法 HEAD - 获取报文首部,主要用于确认URL的有效性和资源更新的日期时间等 POST - 传输实体主体,POST主要用来传输数据,GET主要用来获得资源 三. HTTP状态码 1XX 信息: 100 Continue 表示到目前为止都很正常,客户端可以继续发送请求或忽略这个响应。 2XX 成功:200 OK 204 No Content: 请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。 206 Partial Content: 表示客户端进行了范围请求,响应报文包含由Content-Range指定范围的实体内容。 3XX 重定向:301 Moved permennantly 永久性重定向 302 Found 临时性重定向 304 Not modified 如果请求报文首部欧包含一些条件,例如:If-Match, If-Modified-Since, 如果不满足条件,则服务器会返回304状态码。 具体解释:在客户端向服务端发送http请求时,若返回状态码为304 Not Modifiied