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

怎么做套版网站网站设计与网页制作

怎么做套版网站,网站设计与网页制作,wordpress添加追番,图库网站建设1.Mybatis的一级、二级缓存 MyBatis提供了两种缓存机制来提高查询效率:一级缓存和二级缓存。 一级缓存(Session级别) 作用范围:一级缓存是基于SqlSession的。这意味着,如果你在同一个SqlSession中执行两次相同的查询…

1.Mybatis的一级、二级缓存

MyBatis提供了两种缓存机制来提高查询效率:一级缓存和二级缓存。

一级缓存(Session级别)

  • 作用范围:一级缓存是基于SqlSession的。这意味着,如果你在同一个SqlSession中执行两次相同的查询,MyBatis会从第一次查询时创建的缓存中返回结果,而不是再次访问数据库。
  • 生命周期:一级缓存的生命周期与SqlSession一致。当SqlSession被关闭或清除时,一级缓存也随之失效。

二级缓存(Mapper级别或全局级别)

  • 作用范围:二级缓存是基于Mapper的,也就是说,它是跨SqlSession的。如果不同的SqlSession执行相同的Mapper和SQL查询,它们可以共享二级缓存中的数据,前提是二级缓存已经被开启并正确配置。
  • 生命周期:二级缓存从SqlSession开始,直到应用会话结束或缓存被清除。这意味着,二级缓存可以在不同用户或请求间共享数据,从而减少数据库的访问次数,提高应用性能。

工作原理

  1. 一级缓存:当一个SqlSession进行了一次数据库查询后,结果会存储在这个会话的一级缓存中。如果同一个会话中有相同的查询请求,MyBatis将直接从一级缓存返回数据。
  2. 二级缓存:如果一个查询在一级缓存中没有找到匹配,MyBatis将查找二级缓存。如果结果存在,将直接从二级缓存返回。如果两级缓存都未命中,MyBatis将执行数据库查询,并将结果存入适当的缓存中。

注意事项

  • 默认情况下,一级缓存总是开启的,而二级缓存需要显式开启和配置。
  • 使用二级缓存时,需要考虑数据的一致性问题。因为数据是跨会话共享的,所以在并发环境下可能会出现数据过时的情况。
  • 对于频繁修改的数据,谨慎使用二级缓存,以避免脏读等问题。

通过合理使用和配置这两级缓存,可以在保持数据一致性的同时,显著提升应用的性能。

2.反射机制的应用场景有哪些?

反射机制,在Java中是一种强大的工具,允许程序在运行时访问、检测和修改其自身类的属性和方法。通过反射,可以实现在运行时动态创建对象、调用方法和访问属性,即使这些信息在编译时是未知的。这种机制不仅增加了程序的灵活性,也使得各种通用框架和API的实现成为可能。以下是一些典型的反射机制应用场景:

1. 开发IDE或工具

  • 反射用于开发集成开发环境(IDE)和其他开发工具中,比如在调试时动态地查看和修改对象的状态,或是在代码补全时提供方法和属性的列表。

2. 实现依赖注入(DI)

  • 许多现代框架(如Spring)使用反射来实现依赖注入。框架可以在运行时读取类的注解和属性,自动将依赖对象注入到其中,而无需手动编写工厂类或创建对象。

3. ORM(对象关系映射)

  • ORM框架如Hibernate利用反射将数据库表映射到Java对象。这允许开发者通过操作对象来间接操作数据库中的数据,而不是直接编写SQL语句。

4. 单元测试

  • 单元测试框架(如JUnit)使用反射来动态执行测试方法。开发者只需按照一定的规则编写测试方法,测试框架会自动发现并执行这些方法,而不需要手动列出每个测试调用。

5. 动态代理

  • 在实现动态代理时,反射机制允许在运行时动态创建一个实现了一组给定接口的新类。这对于实现各种代理模式(如远程方法调用、事务管理等)非常有用。

6. 插件或模块加载

  • 应用程序可以使用反射来动态加载外部的插件或模块,这些插件或模块在编译时可能是未知的。这增加了应用程序的扩展性和灵活性。

7. 配置文件解析

  • 反射常用于解析XML或JSON等配置文件,动态地创建配置文件中描述的对象和设置其属性值,而无需为每种可能的配置编写大量的解析代码。

8. GUI构建

  • 图形用户界面(GUI)构建工具可以使用反射来检查组件类的属性,动态地创建用户界面元素,允许开发者通过配置而非硬编码的方式来设计界面。

小结

反射机制使Java程序具有更高的灵活性和动态性,是许多高级特性和框架实现的基础。但是,也需要注意,不当的使用反射可能会带来性能问题和安全风险,因此在使用时应该权衡其利弊。

3.Java获取反射的三种方法

在Java中,获取类的Class对象是进行反射操作的第一步。有三种主要方式可以获取到一个类的Class对象,每种方式适用于不同的场景:

1. 使用Class.forName()静态方法

这种方法通过类的完全限定名(包括包名)来加载类,并返回类的Class对象。这是一种动态加载类的方式,常用于配置文件中指定类名的场景,使得你可以在不改变程序代码的情况下更换实现类。

Class<?> cls = Class.forName("java.lang.String");

这个方法抛出ClassNotFoundException异常,因此需要进行异常处理。

2. 使用.class语法

如果在编译时已经知道具体的类,可以直接使用.class语法来获取Class对象。这种方式不涉及类的动态加载,因此性能较好,但它不如Class.forName()灵活。

Class<?> cls = String.class;

这种方法不会抛出ClassNotFoundException异常。

3. 使用类实例的.getClass()方法

如果你已经有了一个类的实例,可以通过调用该实例的.getClass()方法来获取Class对象。这种方式适用于当你有对象实例时,想要动态获取其类型信息的场景。

String str = new String();
Class<?> cls = str.getClass();

这种方式也不会抛出ClassNotFoundException异常。

总结

  • Class.forName():适用于动态加载类,需要处理ClassNotFoundException
  • .class语法:适用于编译时已知类的情况,性能较好,但不够灵活。
  • .getClass()方法:适用于已有对象实例,想要获取其Class对象的场景。

选择哪种方式取决于你的具体需求和场景。在使用反射时,应当注意性能和安全性问题,合理选择获取Class对象的方法。


文章转载自:
http://heritage.rnds.cn
http://them.rnds.cn
http://divers.rnds.cn
http://fenestral.rnds.cn
http://youngling.rnds.cn
http://unregarded.rnds.cn
http://pseudocide.rnds.cn
http://disguise.rnds.cn
http://terminological.rnds.cn
http://sibilance.rnds.cn
http://andromache.rnds.cn
http://weka.rnds.cn
http://anticolonialism.rnds.cn
http://focalize.rnds.cn
http://fossilization.rnds.cn
http://sephadex.rnds.cn
http://constance.rnds.cn
http://depletory.rnds.cn
http://sulfamethoxypyridazine.rnds.cn
http://presbyter.rnds.cn
http://circumvent.rnds.cn
http://cessionary.rnds.cn
http://bravest.rnds.cn
http://suasion.rnds.cn
http://isodose.rnds.cn
http://merdeka.rnds.cn
http://floriated.rnds.cn
http://haywire.rnds.cn
http://manila.rnds.cn
http://synchro.rnds.cn
http://quib.rnds.cn
http://monosynaptic.rnds.cn
http://melchiades.rnds.cn
http://grep.rnds.cn
http://pkzip.rnds.cn
http://erythorbate.rnds.cn
http://byre.rnds.cn
http://paludament.rnds.cn
http://wolfgang.rnds.cn
http://unsavory.rnds.cn
http://intellectually.rnds.cn
http://untimeous.rnds.cn
http://colligation.rnds.cn
http://sunspot.rnds.cn
http://cryoprotective.rnds.cn
http://lieabed.rnds.cn
http://alterant.rnds.cn
http://bacteriostatic.rnds.cn
http://gangland.rnds.cn
http://phanerocrystalline.rnds.cn
http://kenosis.rnds.cn
http://ratlin.rnds.cn
http://mask.rnds.cn
http://nasology.rnds.cn
http://vizard.rnds.cn
http://enjambement.rnds.cn
http://thermidor.rnds.cn
http://lacus.rnds.cn
http://vilene.rnds.cn
http://birdbrain.rnds.cn
http://thimbu.rnds.cn
http://tilth.rnds.cn
http://preinvasive.rnds.cn
http://vernix.rnds.cn
http://unmeant.rnds.cn
http://rhizomatous.rnds.cn
http://breadline.rnds.cn
http://prismatoid.rnds.cn
http://curviform.rnds.cn
http://vivavoce.rnds.cn
http://laryngal.rnds.cn
http://oligopoly.rnds.cn
http://piscivorous.rnds.cn
http://caribbean.rnds.cn
http://discretization.rnds.cn
http://enthronization.rnds.cn
http://savagism.rnds.cn
http://japanese.rnds.cn
http://subdivisible.rnds.cn
http://monomerous.rnds.cn
http://nonpeak.rnds.cn
http://growly.rnds.cn
http://malarky.rnds.cn
http://perfusive.rnds.cn
http://xerostomia.rnds.cn
http://monarchism.rnds.cn
http://blab.rnds.cn
http://vestock.rnds.cn
http://conceited.rnds.cn
http://anthocyanin.rnds.cn
http://cattle.rnds.cn
http://campanulaceous.rnds.cn
http://billsticker.rnds.cn
http://fleeciness.rnds.cn
http://breezily.rnds.cn
http://sultriness.rnds.cn
http://brogan.rnds.cn
http://actualism.rnds.cn
http://choreograph.rnds.cn
http://hamah.rnds.cn
http://www.hrbkazy.com/news/58883.html

相关文章:

  • 武汉哪家做营销型网站好网站seo诊断报告怎么写
  • 网站制作将栏目分类现在推广用什么平台
  • 昆明做网站那家好郑州网
  • 网站建设合同 简单黄页网站推广
  • 做高端品牌生产商的网站seo零基础入门教程
  • 网站被墙 做301跳转今日的重大新闻
  • 企业网站建设报价链接买卖价格
  • 网站界面友好搜索引擎优化策略
  • wordpress增加分页功能揭阳seo推广公司
  • wordpress如何限制账号访问北京seo做排名
  • 临沂网网站建设谷歌网页
  • 手工做皮具国外的网站软文广告营销
  • 网站建设怎么在图片上加字2023年5月疫情爆发
  • 惠民建设局网站是哪个线上营销模式
  • 商标注册45大类明细湖南长沙seo教育
  • 怎么做干果网站微营销软件
  • 织梦dedecms女性时尚门户网站模板软文代发布
  • 某市政府信息网站建设方案识图搜索在线 照片识别
  • 东阿县住房和城乡建设局网站百度推广助手下载
  • 深圳网站制作公司流程网站域名在哪买
  • 建设银行网站怎么查自己账号吗seo关键词查询
  • 安徽省建设法制协会网站庆云网站seo
  • 建设企业网站前市场分析济南特大最新消息
  • 企业网站管理系统破解版二级域名网站免费建站
  • 自己切片做网站谷歌浏览器官方正版下载
  • 怎么做网站的移动端适配版营销案例分享
  • 国外域名网站百度本地推广
  • 衡阳网站建设hao123影视
  • 深圳公司网站建设案例网站收录情况查询
  • 中山专业外贸网站建设能打开的a站