<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Xqhardstudy的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Xqhardstudy</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Xqhardstudy]]></copyright><item><title><![CDATA[项目面试题整理(SSM+在线教育项目)]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118787379</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118787379</guid><author>Xqhardstudy</author><pubDate>Sat, 17 Jul 2021 16:26:35 +0800</pubDate><description><![CDATA[11111

]]></description><category></category></item><item><title><![CDATA[设计模式面试题]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118359207</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118359207</guid><author>Xqhardstudy</author><pubDate>Wed, 30 Jun 2021 15:07:26 +0800</pubDate><description><![CDATA[单例模式
饿汉式
在类初始化时直接创建实例对象,不管你是否需要这个对象都会创建
普通写法

构造器私有化
自行创建,并且用静态变量保存
向外提供这个实例
强调这是一个单例,我们可以用final修饰

public class Singleton1{
	public static final Singleton1 INSTANCE = new Singleton1();
	private Singleton1(){

	}
}

枚举enum

枚举类,标识该类型的对象是有限的几个
我们可以限定为一个,就成了]]></description><category></category></item><item><title><![CDATA[Java基础面试题]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118187217</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118187217</guid><author>Xqhardstudy</author><pubDate>Tue, 29 Jun 2021 10:06:24 +0800</pubDate><description><![CDATA[面向对象

什么是面向对象?

对比面向过程,是两种不同的处理问题的角度,面向过程更注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象),及各自需要做什么,
面向过程比较直接高效,面向对象更容易复用,扩展和维护
封装
封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项
内部细节对外部调用透明,外部调用无需修改或者关心内部实现
private String name;
public void setName(String name){
	this.name = "xq" + name;]]></description><category></category></item><item><title><![CDATA[210626 双周赛]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118312727</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118312727</guid><author>Xqhardstudy</author><pubDate>Mon, 28 Jun 2021 22:23:11 +0800</pubDate><description><![CDATA[1909.删除一个元素使数组严格递增
题目描述
给你一个下标从 0 开始的整数数组 nums ，如果 恰好 删除 一个 元素后，数组 严格递增 ，那么请你返回 true ，否则返回 false 。如果数组本身已经是严格递增的，请你也返回 true 。
数组 nums 是 严格递增 的定义为：对于任意下标的 1 &lt;= i &lt; nums.length 都满足 nums[i - 1] &lt; nums[i] 。
示例 1：

输入：nums = [1,2,10,5,7]
输出：true
解释：从 n]]></description><category></category></item><item><title><![CDATA[Redis面试题]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118279087</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118279087</guid><author>Xqhardstudy</author><pubDate>Mon, 28 Jun 2021 14:54:46 +0800</pubDate><description><![CDATA[RDB和AOF机制
RDB:Redis DataBase
在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储.
优点

整个Redis数据库将只包含一个文件dump.rdb,方便持久化
容灾行好,方便备份
性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化,使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能

缺点

数据安全性低,RDB是间隔一段时]]></description><category></category></item><item><title><![CDATA[Mysql面试题汇总]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118051088</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118051088</guid><author>Xqhardstudy</author><pubDate>Sat, 26 Jun 2021 22:26:56 +0800</pubDate><description><![CDATA[事务是什么?事务的特性?

事务是由一组SQL语句组成的逻辑单元,是满足ACID特性的一组操作,可以通过Commit提交一个事务,也可以使用Rollback进行回滚,事务具有以下四个属性


A – 原子性(Atomicity)  事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全部不执行.
C – 一致性(Consistent) 事务开始和完成前,数据都必须保持一致状态(这里的一致性是指系统从一个正确的状态,迁移到另一个正确的状态)
I – 隔离性(Isolation) 数据库系统提供一定的隔离]]></description><category></category></item><item><title><![CDATA[SSM框架面试题总结]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118194985</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118194985</guid><author>Xqhardstudy</author><pubDate>Sat, 26 Jun 2021 18:03:22 +0800</pubDate><description><![CDATA[Spring
如何实现一个IOC容器

配置文件配置包扫描路径
递归包扫描获取.class文件
反射,确定需要交给IOC管理的类
对需要注入的类进行依赖注入


配置文件中指定需要扫描的包路径
定义一些注解,分别表示访问控制器,业务控制层,数据持久层,依赖注入注解,获取配置文件注解
从配置文件中获取需要扫描的包路径,获取到当前路径下的文件信息及文件夹信息,我们将当前路径下所有的以.class结尾的文件添加到一个Set集合中进行存储
遍历这个Set集合,获取在类上有指定注解的类,并将其交给IOC容器,定义一个]]></description><category></category></item><item><title><![CDATA[Java多线程面试题总结]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118208751</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118208751</guid><author>Xqhardstudy</author><pubDate>Sat, 26 Jun 2021 10:01:17 +0800</pubDate><description><![CDATA[线程的生命周期,线程有哪些状态



线程通常有五种状态,创建,就绪,运行,阻塞和死亡状态
阻塞的情况又分为三种
(1) 等待阻塞:运行的线程执行wait方法,该线程会释放占用的所有资源,JVM会把该线程放入"等待池"中.进入这个状态后,是不能自动唤醒的,必须依靠其他线程调用notify或notifyAll方法才被唤醒,wait是object类的方法
(2) 同步阻塞:运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入"锁池"中.
(3)其他阻塞:运行的线程执行sleep或jo]]></description><category></category></item><item><title><![CDATA[JVM面试题总结]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118195205</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118195205</guid><author>Xqhardstudy</author><pubDate>Fri, 25 Jun 2021 20:32:46 +0800</pubDate><description><![CDATA[什么是字节码?采用字节码的好处是什么?
java中的编译器和解释器:
java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器.这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口.
编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行.在Java中,这种供虚拟机理解的代码叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机.
每一种平台的解释器是不同的,但是实现的虚拟机是相同的.Java源程序经过编]]></description><category></category></item><item><title><![CDATA[244周赛(2021-06-06)]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118002040</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/118002040</guid><author>Xqhardstudy</author><pubDate>Thu, 17 Jun 2021 22:39:58 +0800</pubDate><description><![CDATA[1886. 判断矩阵经轮转后是否一致
题目

给你两个大小为 n x n 的二进制矩阵 mat 和 target 。现 以 90 度顺时针轮转 矩阵 mat 中的元素 若干次 ，如果能够使 mat 与 target 一致，返回 true ；否则，返回 false 。




解1

暴力求解
将矩阵旋转四次看能否满足条件即可
时间复杂度 o(n^2)
旋转操作需要双重for循环

class Solution {
    public boolean findRotation(int[][] mat, in]]></description><category></category></item><item><title><![CDATA[JVM-第九章:方法区]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116464261</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116464261</guid><author>Xqhardstudy</author><pubDate>Thu, 06 May 2021 22:19:35 +0800</pubDate><description><![CDATA[前言
这次所讲述的是运行时数据区的最后一个部分

从线程共享与否的角度来看

ThreadLocal：如何保证多个线程在并发环境下的安全性？典型应用就是数据库连接管理，以及会话管理
栈、堆、方法区的交互关系
下面就涉及了对象的访问定位


Person：存放在元空间，也可以说方法区
person：存放在Java栈的局部变量表中
new Person()：存放在Java堆中

方法区的理解
《Java虚拟机规范》中明确说明：“尽管所有的方法区在逻辑上是属于堆的一部分，但一些简单的实现可能不会选择去进行垃圾收集]]></description><category></category></item><item><title><![CDATA[JVM-第八章:堆]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116400824</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116400824</guid><author>Xqhardstudy</author><pubDate>Wed, 05 May 2021 20:38:11 +0800</pubDate><description><![CDATA[堆的核心概述
内存细分
设置堆内存大小与OOM
年轻代与老年代
图解对象分配过程
Minor GC Major GC Full GC
堆空间分代思想
内存分配策略
为对象分配内存:TLAB
小结堆空间的参数设置
堆是分配对象的唯一选择吗

...]]></description><category></category></item><item><title><![CDATA[JVM-第七章:本地方法栈]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116405362</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116405362</guid><author>Xqhardstudy</author><pubDate>Tue, 04 May 2021 21:18:18 +0800</pubDate><description><![CDATA[Java虚拟机栈于管理Java方法的调用，而本地方法栈用于管理本地方法的调用。
本地方法栈，也是线程私有的。
允许被实现成固定或者是可动态扩展的内存大小。（在内存溢出方面是相同的）

如果线程请求分配的栈容量超过本地方法栈允许的最大容量，Java虚拟机将会抛出一个stackoverflowError 异常。
如果本地方法栈可以动态扩展，并且在尝试扩展的时候无法申请到足够的内存，或者在创建新的线程时没有足够的内存去创建对应的本地方法栈，那么Java虚拟机将会抛出一个outofMemoryError异常。

本]]></description><category></category></item><item><title><![CDATA[JVM-第六章:本地方法接口]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116400203</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116400203</guid><author>Xqhardstudy</author><pubDate>Tue, 04 May 2021 21:15:41 +0800</pubDate><description><![CDATA[什么是本地方法
为什么要使用Native Method?
本地方法栈

]]></description><category></category></item><item><title><![CDATA[JVM-第五章:虚拟机栈]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116356430</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116356430</guid><author>Xqhardstudy</author><pubDate>Tue, 04 May 2021 21:10:23 +0800</pubDate><description><![CDATA[虚拟机栈概述
背景
内存中的堆与栈
基本内容

面试题:开发中遇到的异常有哪些

栈的存储单位
栈中存储什么?
栈运行原理
栈帧的内部结构
局部变量表
关于Slot的理解
静态变量和局部变量的对比
操作数栈
代码追踪

...]]></description><category></category></item><item><title><![CDATA[JVM-第四章:程序计数器]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116354029</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116354029</guid><author>Xqhardstudy</author><pubDate>Sun, 02 May 2021 22:09:33 +0800</pubDate><description><![CDATA[PC Register
介绍
oracle官网-&gt;download-&gt;java-&gt;jdk-&gt;specifications
作用
举例说明
两个常见问题

使用PC寄存器存储字节码指令地址有什么用呢?


]]></description><category></category></item><item><title><![CDATA[JVM-第三章:运行时数据区概述及线程]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116352449</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116352449</guid><author>Xqhardstudy</author><pubDate>Sun, 02 May 2021 22:01:10 +0800</pubDate><description><![CDATA[线程

]]></description><category></category></item><item><title><![CDATA[JVM-第二章:类加载子系统]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116309240</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116309240</guid><author>Xqhardstudy</author><pubDate>Sun, 02 May 2021 21:54:22 +0800</pubDate><description><![CDATA[内存结构概述

完整图如下


如果自己手写一个Java虚拟机的话,主要考虑哪些结构呢?

类加载器
执行引擎


类加载子系统
类加载子系统作用


类加载器子系统负责从文件系统或者网络中加载Class文件，class文件在文件开头有特定的文件标识。
ClassLoader只负责class文件的加载，至于它是否可以运行，则由Execution Engine决定。
加载的类信息存放于一块称为方法区的内存空间。除了类的信息外，方法区中还会存放运行时常量池信息，可能还包括字符串字面量和数字常量（这部分常量信息是]]></description><category></category></item><item><title><![CDATA[Git-第四,五章:Git团队协作机制,GitHub操作]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116304059</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116304059</guid><author>Xqhardstudy</author><pubDate>Fri, 30 Apr 2021 15:57:30 +0800</pubDate><description><![CDATA[第四章 Git团队协作机制
4.1 团队内协作

4.2 跨团队协作

第五章 GitHub操作
5.1 创建远程仓库


5.2 远程仓库操作




命令名称
作用




git remote -v
查看当前所有远程地址别名


git remote add 别名 远程地址
起别名


git push 别名 分支
推送本地分支上的内容到远程仓库


git clone 远程地址
将远程仓库的内容克隆到本地


git pull 远程库地址别名 远程分支名
将远程仓库对于分支最新内容拉下来后与当前本地]]></description><category></category></item><item><title><![CDATA[Git-第四章:Git分支操作]]></title><link>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116302365</link><guid>https://blog.youkuaiyun.com/Xqhardstudy/article/details/116302365</guid><author>Xqhardstudy</author><pubDate>Fri, 30 Apr 2021 14:55:50 +0800</pubDate><description><![CDATA[4.1 什么是分支?

在版本控制过程中，同时推进多个任务，为每个任务，我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来，开发自己分支的时候，不会影响主线分支的运行。对于初学者而言，分支可以简单理解为副本，一个分支就是一个单独的副本。（分支底层其实也是指针的引用）


4.2 分支的好处

同时并行推进多个功能开发，提高开发效率。
各个分支在开发过程中，如果某一个分支开发失败，不会对其他分支有任何影响。失败的分支删除重新开始即可。

4.3 分支的操作




命.]]></description><category></category></item></channel></rss>