热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

一级缓存和二级缓存的区别

MyBatis中井号和美元符号的区别:        #{变量名}可以预编译类型匹配等操作,会转化成jdbc类型        

MyBatis中井号和美元符号的区别:

        #{变量名} 可以预编译 类型匹配等操作,会转化成jdbc类型

        #方式很大程度上防止sql注入

${变量名} 不进行数据类型的匹配 直接转换

$ 无法防止sql注入

$一般用于传入数据库对象 例如传入表明

尽量多用#方式  少用$方式

 

一级缓存和二级缓存的区别:

        一级缓存  sqlSession  二级缓存 mapper级别  多个sqlsession共享

   都是用hashmap存储数据   相比一级缓存 二级缓存范围更大 跨sqlsession

 

 

springboot的自动装配机制:

springboot框架是为了能够帮助使用spring框架的开发者快速高效的构建一个基于spirng框架以及spring生态体系的应用解决方案。它是对“约定优于配置”这个理念下的一个最佳实践。因此它是一个服务于框架的框架,服务的范围是简化配置文件。

 

     Spring Boot启动的时候会通过@EnableAutoConfiguration注解找到META-INF/spring.factories配置文件中的所有自动配置类,并对其进行加载,而这些自动配置类都是以AutoConfiguration结尾来命名的,它实际上就是一个JavaConfig形式的Spring容器配置类,它能通过以Properties结尾命名的类中取得在全局配置文件中配置的属性如:server.port,而XxxxProperties类是通过@ConfigurationProperties注解与全局配置文件中对应的属性进行绑定的。

 

Mysql的事务隔离级别   

低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。

读未提交       读取未提交的也叫脏读

读已提交       读取提交的   默认的

可重复读       幻读  多实例并发处理数据   一个再读取 另一个插入了新行

可串行化       它在每个读数据加上共享锁   超时 锁竞争

 

多版本并发控制 mvcc

是通过保存数据在某个时间点的快照来实现的。也就是说,不管需要执行多长时间,每个事务看到的数据都是一致的

 

 

保证线程安全的几种方式:

     1. Confinement  限制数据共享  将可变数据限制在单一线程的内部 避免竞争

      核心思想: 线程之间不可享可变数据类型



  1. immutable  将可变类型改为 immutable类型  避免多线程间的race condition

  2. Threadsafe data type 共享线程安全的可变数据

  3. Synchronization  通过锁机制共享不安全的数据

       

G1

特点 充分利用计算机资源  分代收集  空间整合   建立可预测的停顿

回收步骤:初始标记  并发标记   最终标记   筛选回收  在用户规定的时间里,回收最大价值得region的垃圾

 

 

内存分配与回收策略

     对象优先在eden分配          大对象直接进入老年代

     长期存活的对象将进入老年代   

动态对象年龄判判断 同年龄的对象的大小超过整个survivor区的一半,大小等于这个年龄对象都会放入老年代

 

堆溢出

      回收的对象没有回收造成的内存溢出

      解决:查看是否有没有回收的对象 如果没有扩大内存

栈溢出

      递归调用太多  

       扩大栈深度  从代码入手   改正错误调用

方法区溢出:java.lang.OutOfMemoryError: null

          直接调内存大小    -xxMaxDirectMemorySize=10

Gc日志分析

       设置参数:-xloggcDlogs/admin_client.log

       提前建立好目录  admin_client.log

 



推荐阅读
  • 本文深入探讨了C++对象模型中的一些细节问题,特别是虚拟继承和析构函数的处理。通过具体代码示例和详细分析,揭示了书中某些观点的不足之处,并提供了更合理的解释。 ... [详细]
  • 在过去两周中,我们利用 ReportViewer 开发了与生产良率相关的报表,其中每个制程的直通率是所有测试项良率的乘积。由于 ReportViewer 没有内置的累乘函数,因此需要借助自定义代码来实现这一功能。本文将详细介绍实现步骤和相关代码。 ... [详细]
  • ###问题删除目录时遇到错误提示:rm:cannotremoveusrlocaltmp’:Directorynotempty即使用rm-rf,还是会出现 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • 本文旨在探讨《人月神话》中关于软件开发任务的理解,分析其核心概念和实际应用。书中指出,软件开发的主要目标是构建由抽象实体构成的复杂概念体系,而次要目标则是在时间和空间限制内将其转化为机器语言。 ... [详细]
  • 本文总结了Java程序设计第一周的学习内容,涵盖语言基础、编译解释过程及基本数据类型等核心知识点。 ... [详细]
  • 本文介绍如何使用Perl编写一个简单的爬虫,从丁香园网站获取意大利的新冠病毒感染情况。通过LWP::UserAgent模块模拟浏览器访问并解析网页内容,最终提取所需数据。 ... [详细]
  • 精选15款免费扁平化界面设计资源
    高质量的网页和移动元素是任何Web或移动项目的基础。优秀的UI设计组件不仅能够提升用户体验,还能显著缩短设计师的工作时间,帮助他们快速创建出引人注目的作品。本文将分享一系列免费的扁平化设计素材。 ... [详细]
  • 本文详细介绍了如何在 Windows 环境下使用 node-gyp 工具进行 Node.js 本地扩展的编译和配置,涵盖从环境搭建到代码实现的全过程。 ... [详细]
  • 解决C++编译错误C3867的方法
    本文详细介绍了在不同版本的Visual Studio中,如何正确处理成员函数指针以避免编译错误C3867。同时,提供了一个具体的代码示例及其优化方案。 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • Python入门:第一天准备与安装
    本文详细介绍了Python编程语言的基础知识和安装步骤,帮助初学者快速上手。涵盖Python的特点、应用场景以及Windows环境下Python和PyCharm的安装方法。 ... [详细]
  • 本文详细介绍了如何准备和安装 Eclipse 开发环境及其相关插件,包括 JDK、Tomcat、Struts 等组件的安装步骤及配置方法。 ... [详细]
  • 本文深入探讨了 C++ 中的友元机制,包括外部函数友元、成员函数友元和类友元。友元打破了对象的封装性,赋予特定实体访问私有成员的能力。 ... [详细]
  • 本文详细介绍了在企业级项目中如何优化 Webpack 配置,特别是在 React 移动端项目中的最佳实践。涵盖资源压缩、代码分割、构建范围缩小、缓存机制以及性能优化等多个方面。 ... [详细]
author-avatar
手机用户2602906645
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有