后端

JVM中的锁优化

锁优化 Jvm 在加锁的过程中,会采用自旋、自适应、锁消除、锁粗化等优化手段来提升代码执行效率。 什么是锁升级,降级? 锁的4中状态:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态(级别从低到高)。 所谓的锁升级、降级,就是 JVM 优化 synchronized 运行的机制,当 JVM 监测到不同的竞争状况是,会自动切换到不同的锁实现。这种切换就是锁的升级、降级。 锁升级

MySQL快速入门——库的操作

MySQL快速入门——库的操作 1. 创建数据库 2. 创建数据库案例 3. 字符集和校验规则 3.1 查看字符集和校验规则 3.2 验证不同校验编码的影响 4. 操作数据库 4.1 查看数据库 4.2 修改数据库 4.3 数据库删除 4.4 备份和恢复 5. 查看连接情况 1. 创建数据库1. 语法:CREATE DATABASE [I

【MySQL基础】MySQL复合查询全面解析:从基础到高级应用

MySQL学习:#前言: 前面学习了表的增删查改之后,今天我们重点来讲解一下有关查询的复杂问题——复合查询 目录一、复合查询基础概念1.1 什么是复合查询1.2 复合查询的主要类型二、示例数据库结构详解2.1 完整的表结构设计2.2 示例数据填充三、子查询深度解析3.1 子查询分类与语法3.1.1 按子查询位置分类3.1.2 按子查询相关性分类3.2

数组的遍历二:遍历性能的对比

数组遍历 前言 上一篇 《数组的遍历一:遍历次数的对比》 介绍了遍历次数的比较,本篇介绍遍历性能的对比。 遍历性能对比 题目背景:填充一个固定长度的数组,数组每一项为一个对象,包含一个 id 和 count。 id 为从 1 开始的自增数字,count 为一个随机数,然后遍历查找到数组的最后一项。 如果提前退出遍历,那耗时肯定会比全部遍历要少,所以这里采用查找最后一项是为了保证所有 API 的遍

LeetCode - #75 颜色分类(Top 100)

前言 本题为 LeetCode 前 100 高频题 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swift 算法题题解整理为文字版以方便大家学习与阅读。 LeetCode 算法到目前我们已经更新了 74 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升

第二章 性能瓶颈的分析和定位(14)

剖析CPU使用情况         在Linux平台,Qt Creator集成了Valgrind的callgrind工具,唉,这个工具不能用于Windows,因此在Windows平台上我们不得不寻找其他的替代工具。在介绍这些专用工具之前,我们要简单介绍一个鲜为人知(据我推测)却出奇有效的技术。 最简陋的采样技术        我把这个技术称为最简陋的采样技术。它非常简单。最简单的做法莫过于用调

C++链接错误:静态变量的初始化问题

在使用C++时,编译项目时偶尔会发生链接,这些错误很多时候是偶发的,可能再编一次,或者换个模式,换个参数,就没有编译错误了,但之后可能还会出现。由于是在编译阶段,问题不容易排查。这样的错误有可能就是静态变量的初始化问题。 简单概括:当静态变量的初始化过程中,需要其他静态变量的值时,就有可能产生不确定的链接错误。 主要原因:C++不固定静态变量的初始化顺序,在初始化静态变量时,如果你需要其他静态变

15. 类的关系——实现(接口)

15. 类的关系——实现(接口) 1、接口 1.1 接口的引入 Java语言中,类与类的继承只能是单继承。 试想一下,如果一个类中的所有方法都是抽象方法,子类继承后,需要重写所有方法,但是因为单继承,就不能去继承其他有实际方法的父类了。 为了解决这个弊端,Java语言中把一种特殊的抽象类定义成一个新的概念,接口,即interface 接口的本质就是一个类,不过是一个纯的抽象类,就是没有变量,没有具

02原理篇(D2_SpringBoot 自动装配原理)

目录一、自动装配机制1. 简介2. 自动装配主要依靠三个核心的关键技术3. run()方法加载启动类4. 注解@SpringBootApplication包含了多个注解4.1 @SpringBootConfiguration4.2 @ComponentScan4.3 @EnableAutoConfiguration5. @SpringBootApplicat