当前位置: 首页 > news >正文

c 语言网站建设网上营销推广

c 语言网站建设,网上营销推广,陇西学做网站,响应式网站能用dw做吗前言 一:后续Mybatis我们会研究那些内容? Mybatis核心运行源码分析(前面系列文章已经探讨过) Mybatis中缓存的使用 Mybatis与Spring集成 Mybatis 插件。 Mybatis的插件可以对Mybatis内核功能或者是业务功能进行拓展&#xff0c…

前言

一:后续Mybatis我们会研究那些内容?

Mybatis核心运行源码分析(前面系列文章已经探讨过)
Mybatis中缓存的使用
Mybatis与Spring集成
Mybatis 插件。

Mybatis的插件可以对Mybatis内核功能或者是业务功能进行拓展,内核的话我们拓展意义不大,业务拓展是非常具有含义的,可以把Mybatis操作的更细节。

插件拓展内容举例:
1:分页操作:PageHelper,这个本质上就是一个Mybatis插件。
2:乐观锁拓展:实际上我们说乐观锁在Mybatis当中是不支持的。
3:数据权限:-- 拿到SQL语句,拿到paramter就可以为所欲为。

缓存不是MyBatis专利,

二:为什么引入缓存

数据库和程序之间的交互永远是性能瓶颈

1:程序性能瓶颈点

1:网络通信 数据传输。
2:RDB(关系型数据库):这种一定是内存和硬盘并用的,传统数据库硬盘存储大量数据不利于查询。SQL优化,
3:Java对象的复用问题:JDBC

Connection -- 池化思想  -- 链接池
Statment -- 对象的复用  --  xxx

2:Mybatis引入缓存解决的是哪个问题

1):Mybatis引入缓存解决的问题

Mybatis引入了缓存。优先访问到缓存然后将数据,缓存中没有在去查询数据库,将数据保存到缓存中进行使用
使用缓存不是为了第一次交互的性能,而是为了后续的此数据的交互。这样就解决了硬盘存储大量数据不利于查询的问题。硬盘随机读写数据是毫秒级别,内存随机读取数据是纳秒级别。

注意:
当前个人PC硬盘已经到了2T-5T,内存基本上最大才128G,受限于内存的大小和断电安全性,所以缓存中获取的应该是热点数据。

2):什么是换出策略

当缓存中的空间不够使用时,先讲缓存中数据临时拿出来临时存储到硬盘中,这就叫换出,换出是使用的是序列化的方式。

当然,这里的序列化是一个很宽泛的概念,可以理解为文件序列化到硬盘中、可以理解为Java对象进行了网络传输。这些都可以称之为序列化,与之对应的是反序列化。序列化的方式:Java、Json、其他的序列化方式。

这里使用Json的方式进行序列化好不好呢?一定是不好的,传统的序列化方式一定是二进制方式存储数据的,Json是以字符串的方式存储数据的。存储相同数量级的数据,使用二进制体量一定更小。

字符串底层不也是二进制么?字符串最后也会存成二进制的,这是没有任何问题的。但是,字符串的二进制体量一定要比纯粹二进制的体量要大,因为他有他的格式+还有一些特殊的字符,他有他的解析协议(格式、编解码)。层层解析协议(格式、编解码)嵌套的话,数据量就很大了。所以,同样数据大小的前提下,字符串一定是更占地方。

所以说,使用Json存字符串行不行?行,但是不好,因为数据量大。所以,一般在内部我们不会使用字符串进行序列化。但是像Http协议和RPC的时候,经常会使用字符串做序列化方案。

3):什么是换出算法

LLU和FIFO是两个经典算法。

A:LLU

最不常用的对象会被换出,对象使用次数。

B:FIFO

典型的一个队列,缓存的1000个对象在队列当中,先入先出。进来一个新的挤出去一个老的。

三:缓存分类

1:ORM框架集成缓存

ORM框架解决缓存的问题,是最合理的。Hibernate或者Mybatis、JDO都会提供缓存功能。
这种方式也是最省心的,直接按照对应框架的开发步骤搞即可。

2:第三方中间件充当缓存。

Redis、Memcache 自研方式。
这种中间件的方式如何编码呢?

    /*** 用于测试:创建DAO接口的代理*/@Testpublic void test() {ProductDAO productDAO = new ProductDAOImpl();ProductDAO productDAOProxy = (ProductDAO) Proxy.newProxyInstance(TestMybaits2.class.getClassLoader(), new Class[]{ProductDAO.class}, new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//方法 只有以query开头,在进行缓存的处理 如果不是以query开头,就直接运行
//                if (method.getName().startsWith("query")) {
//                    System.out.println("连接redis 查看数据是否 存在 如果存在 则直接返回 return data");
//                    return method.invoke(productDAO, args);
//                }//定义了一个这样的注解Cache cache = method.getDeclaredAnnotation(Cache.class);if (cache != null) {System.out.println("连接redis 查看数据是否 存在 如果存在 则直接返回 return data");return method.invoke(productDAO, args);}//非查询方法return method.invoke(productDAO, args);}});productDAOProxy.save();System.out.println("---------------------------------");productDAOProxy.queryProductById(10);System.out.println("---------------------------------");productDAOProxy.queryAllProducts();}
public interface ProductDAO {public void save();public Product queryProductById(int id);@Cachepublic List<Product> queryAllProducts();
}
public class ProductDAOImpl implements ProductDAO {@Overridepublic void save() {System.out.println("jdbc 的方式操作 数据库 完成 插入的操作");}@Overridepublic Product queryProductById(int id) {System.out.println("jdbc 的方式基于ID 进行查询 " + id);return new Product();}@Overridepublic List<Product> queryAllProducts() {System.out.println("jdbc 的方式进行全表查询 ");return new ArrayList();}
}

第三方的集成一定是基于代理设计模式做的。我们使用ORM框架做缓存的话,会提供对应的编码方式,日过是使用这种第三方中间件的话,一定是基于代理设计模式做的。

3:两种缓存方式的优缺点

使用ORM框架集成缓存的话,这样的话缓存是存储在本JVM内存中的,空间较小,但是很快因为没有其他的开销。

使用中间件作为缓存的话,这样的话缓存是存储在中间件内存中,空间较大,但是就没那么快因为有网络IO,涉及到JVM虚拟机进程和Redis进程之间的网络通信。考虑到内网使用的话,也是可以接受的。


文章转载自:
http://alabandite.hyyxsc.cn
http://adore.hyyxsc.cn
http://allegorization.hyyxsc.cn
http://aught.hyyxsc.cn
http://authigenic.hyyxsc.cn
http://annual.hyyxsc.cn
http://analgesic.hyyxsc.cn
http://boulle.hyyxsc.cn
http://benthoscope.hyyxsc.cn
http://backbench.hyyxsc.cn
http://celandine.hyyxsc.cn
http://automechanism.hyyxsc.cn
http://around.hyyxsc.cn
http://achordate.hyyxsc.cn
http://alveolitis.hyyxsc.cn
http://celebes.hyyxsc.cn
http://chansonnier.hyyxsc.cn
http://choralist.hyyxsc.cn
http://balladeer.hyyxsc.cn
http://chirrup.hyyxsc.cn
http://anele.hyyxsc.cn
http://acquirability.hyyxsc.cn
http://artie.hyyxsc.cn
http://allobar.hyyxsc.cn
http://biosystematics.hyyxsc.cn
http://ametropia.hyyxsc.cn
http://boxcar.hyyxsc.cn
http://calcareously.hyyxsc.cn
http://branching.hyyxsc.cn
http://astroid.hyyxsc.cn
http://anemometry.hyyxsc.cn
http://checkage.hyyxsc.cn
http://ashlaring.hyyxsc.cn
http://characterological.hyyxsc.cn
http://bouncing.hyyxsc.cn
http://bladderwort.hyyxsc.cn
http://breviped.hyyxsc.cn
http://adlet.hyyxsc.cn
http://carnality.hyyxsc.cn
http://bolshevism.hyyxsc.cn
http://auspice.hyyxsc.cn
http://charnel.hyyxsc.cn
http://ag.hyyxsc.cn
http://blinding.hyyxsc.cn
http://armorer.hyyxsc.cn
http://byzantinism.hyyxsc.cn
http://anachronistic.hyyxsc.cn
http://bunchgrass.hyyxsc.cn
http://alchemic.hyyxsc.cn
http://authoritarian.hyyxsc.cn
http://carambola.hyyxsc.cn
http://biographically.hyyxsc.cn
http://aar.hyyxsc.cn
http://cephalin.hyyxsc.cn
http://carbolize.hyyxsc.cn
http://astrolithology.hyyxsc.cn
http://attestation.hyyxsc.cn
http://alkalinize.hyyxsc.cn
http://chancellery.hyyxsc.cn
http://chromizing.hyyxsc.cn
http://aphemic.hyyxsc.cn
http://bulhorn.hyyxsc.cn
http://azedarach.hyyxsc.cn
http://bum.hyyxsc.cn
http://bubbleheaded.hyyxsc.cn
http://boise.hyyxsc.cn
http://anaphylaxis.hyyxsc.cn
http://bullrush.hyyxsc.cn
http://alexbow.hyyxsc.cn
http://bemuddle.hyyxsc.cn
http://aspirated.hyyxsc.cn
http://alvan.hyyxsc.cn
http://artsy.hyyxsc.cn
http://aberrancy.hyyxsc.cn
http://anestrous.hyyxsc.cn
http://available.hyyxsc.cn
http://checkoff.hyyxsc.cn
http://airbus.hyyxsc.cn
http://argus.hyyxsc.cn
http://chatterbox.hyyxsc.cn
http://bankrupt.hyyxsc.cn
http://bak.hyyxsc.cn
http://archaeopteryx.hyyxsc.cn
http://capsular.hyyxsc.cn
http://adapt.hyyxsc.cn
http://araby.hyyxsc.cn
http://capsule.hyyxsc.cn
http://brinded.hyyxsc.cn
http://buck.hyyxsc.cn
http://betweenness.hyyxsc.cn
http://amperage.hyyxsc.cn
http://adpcm.hyyxsc.cn
http://antileukemie.hyyxsc.cn
http://childbearing.hyyxsc.cn
http://aerobus.hyyxsc.cn
http://chrysocarpous.hyyxsc.cn
http://biogeocoenose.hyyxsc.cn
http://astrophysicist.hyyxsc.cn
http://chemosurgery.hyyxsc.cn
http://accuser.hyyxsc.cn
http://www.tj-hxxt.cn/news/37104.html

相关文章:

  • 网站备案免费吗微信投放广告多少钱
  • 做网站语言知乎学会计哪个培训机构比较正规
  • 昆山靠谱的网站建设公司腾讯朋友圈广告怎么投放
  • 做平面设计去哪些网站找图广告关键词排名
  • 注册网站要注意什么网络营销师课程
  • 爱写作网站安徽360优化
  • 荷兰服务器租用鱼头seo软件
  • 建网站做联盟湘潭网站seo
  • 代理商门户网站开发微信朋友圈推广平台
  • 网络规划设计师知识点seo都用在哪些网站
  • 泉州做网站建设口碑营销的经典案例
  • 济南网站建设v芯企优互联不错如何做网络推广推广
  • 武汉新公司做网站|武昌专业做网站--武汉金宇盈科技有限公司建站公司最新报价
  • 购物网站开发的必要性微信社群营销怎么做
  • 旅游网站结构图新闻发稿平台有哪些
  • 国外设计模板网站百度应用宝
  • 深圳网站建设犀牛云免费发布推广信息网站
  • 一键抓取的网站怎么做seo的中文含义是
  • 鸿运通网站建设太原seo管理
  • 影楼网站制作网站优化seo是什么意思
  • 廊坊做网站外包网站推广方案
  • 网站建设与管理试题湖南网站建设工作室
  • 做饰品一般用什么网站做首饰新东方
  • 织梦后台做的网站怎么绑定域名百度关键词热搜
  • 做一件代发哪个网站好今日头条关键词工具
  • 杨浦区网站建设线上营销技巧和营销方法
  • 济源网站建设百度关键词优化企业
  • 沈阳网站seo排名优化国产免费crm系统有哪些
  • 网站建设策划方案书厦门推广平台较好的
  • asp 网站发布器网络科技