<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Gabbana的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Gabbana</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Gabbana]]></copyright><item><title><![CDATA[mac安装jdk8]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/143082823</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/143082823</guid><author>Gabbana</author><pubDate>Sat, 19 Oct 2024 19:40:42 +0800</pubDate><description><![CDATA[如果你是第一次配置环境变量，可以使用“touch .bash_profile” 创建一个.bash_profile的隐藏配置文件。如果你是为编辑已存在的配置文件，则使用"open -e .bash_profile"命令;使用终端命令/usr/libexec/java_home -V。注意：jdk路径、版本号按自己的配，不要全部copy进去。JAVA_HOME的路径就是3.1找到的jdk安装目录。如果现在版本号就是刚才下载的，就证明配置成功。oracle官网下载或从下面链接获取。按照安装指示安装即可。]]></description><category></category></item><item><title><![CDATA[maven下载依赖的问题--知道真相的我眼泪留下来]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/115768813</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/115768813</guid><author>Gabbana</author><pubDate>Fri, 16 Apr 2021 17:52:00 +0800</pubDate><description><![CDATA[用Idea发现，总是下载依赖失败，最近才发现是这个鸡肋的设置项。一定不要勾选他！！！！


]]></description><category></category></item><item><title><![CDATA[SpringBoot集成MyBaits-plus使用方法]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/115728995</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/115728995</guid><author>Gabbana</author><pubDate>Fri, 16 Apr 2021 17:00:36 +0800</pubDate><description><![CDATA[一、导入依赖
&lt;!--mp--&gt;
&lt;dependency&gt;
    &lt;groupId&gt;com.baomidou&lt;/groupId&gt;
    &lt;artifactId&gt;mybatis-plus-boot-starter&lt;/artifactId&gt;
    &lt;version&gt;3.2.0&lt;/version&gt;
&lt;/dependency&gt;
&lt;dependency&gt;
    &lt;groupId&gt;]]></description><category></category></item><item><title><![CDATA[前后端项目如何解决跨域问题]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/115726923</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/115726923</guid><author>Gabbana</author><pubDate>Thu, 15 Apr 2021 15:36:55 +0800</pubDate><description><![CDATA[摘要
跨域资源共享（CORS）是前后端分离项目很常见的问题，本文主要介绍当SpringBoot应用整合SpringSecurity以后如何解决该问题。
什么是跨域问题
CORS全称是Cross-Origin Resource Sharing，意思是跨域资源共享。当一个资源去访问另一个不同域名或同域名不同端口的资源时，就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问，那么访问的那个资源就会遇到跨域问题。
跨域问题演示及解决

我们使用mall项目的源代码来演示一下跨域问题。此时前端代码运行在809]]></description><category></category></item><item><title><![CDATA[Spring Boot+Vue从零开始搭建系统（一）：项目前端_Vuejs环境搭建]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/115446518</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/115446518</guid><author>Gabbana</author><pubDate>Mon, 05 Apr 2021 19:42:09 +0800</pubDate><description><![CDATA[前言
最近开始做毕设了，准备做一个系统，准备用SpringBoot+Vue实现，今天get了vuejs环境的搭建，肥肠简单啦~
一、安装Node.js
1、自行下载安装哈~
下载地址：https://nodejs.org/en/

2、验证一下安装好了嘛~
cmd打开命令行窗口，输入以下命令验证Node.js是否安装成功
node -v

npm包管理器是集成在Node.js中了，所以在安装Node.js的时候就已经自带了npm，输入npm -v可得到npm的版本。
npm -v

顺便把npm更新到最新版]]></description><category></category></item><item><title><![CDATA[idea使用阿里云maven镜像无法下载依赖]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/113803921</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/113803921</guid><author>Gabbana</author><pubDate>Sat, 13 Feb 2021 21:50:54 +0800</pubDate><description><![CDATA[错误显示如下：
Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.2.4.RELEASE from/to alimaven (http://maven.aliyun.com/nexus/content/groups/public/): Transfer failed for http://maven.aliyun.com/nexus/content/groups/public/org/s]]></description><category></category></item><item><title><![CDATA[什么是微服务]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/111403309</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/111403309</guid><author>Gabbana</author><pubDate>Sat, 19 Dec 2020 14:18:18 +0800</pubDate><description><![CDATA[什么是微服务？微服务是一种开发软件的架构和组织方法，其中软件由通过明确定义的API进行通信的小型独立服务组成。这些服务由各个小型独立团队组成。微服务架构有别于更为传统的整体式方案，可将应用拆分成多个核心功能，每个功能都能被称为一项服务，可以单独构建和部署，这意味着各项服务在工作（和出现故障）时不会相互影响。]]></description><category></category></item><item><title><![CDATA[Redis安装]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/111395700</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/111395700</guid><author>Gabbana</author><pubDate>Fri, 18 Dec 2020 20:48:43 +0800</pubDate><description><![CDATA[Redis安装
使用以下命令下载，提取和编译Redis：
$  wget https://download.redis.io/releases/redis-6.0.9.tar.gz
$ tar xzvf redis-6.0.9.tar.gz
$ cd redis-6.0.9
$ make

src 目录 中现在提供了已编译的二进制文件 。使用以下命令运行Redis：
$ cd src
$ ./redis-server

您可以使用内置客户端与Redis进行交互：
$ ./redis-cli
127.0.0.]]></description><category></category></item><item><title><![CDATA[LeetCode 941. 有效的山脉数组【easy】]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109477537</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109477537</guid><author>Gabbana</author><pubDate>Tue, 03 Nov 2020 19:48:40 +0800</pubDate><description><![CDATA[题目描述：
给定一个整数数组 A，如果它是有效的山脉数组就返回 true，否则返回 false。

让我们回顾一下，如果 A 满足下述条件，那么它是一个山脉数组：

A.length &gt;= 3
在 0 &lt; i &lt; A.length - 1 条件下，存在 i 使得：
A[0] &lt; A[1] &lt; ... A[i-1] &lt; A[i]
A[i] &gt; A[i+1] &gt; ... &gt; A[A.length - 1]




思路：双指针
双指针，一个指向第一个元素，一]]></description><category></category></item><item><title><![CDATA[LeetCode 617. 合并二叉树【easy】]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109453929</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109453929</guid><author>Gabbana</author><pubDate>Mon, 02 Nov 2020 17:45:27 +0800</pubDate><description><![CDATA[题目描述：
给定两个二叉树，想象当你将它们中的一个覆盖到另一个上时，两个二叉树的一些节点便会重叠。
你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠，那么将他们的值相加作为节点合并后的新值，否则不为 NULL 的节点将直接作为新二叉树的节点。
示例：
输入: 
	Tree 1                     Tree 2                  
          1                         2                            ]]></description><category></category></item><item><title><![CDATA[LeetCode 461. 汉明距离【easy】]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109453796</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109453796</guid><author>Gabbana</author><pubDate>Mon, 02 Nov 2020 17:41:14 +0800</pubDate><description><![CDATA[题目描述：

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。
给出两个整数 x 和 y，计算它们之间的汉明距离。

示例：
输入: x = 1, y = 4

输出: 2

解释:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

上面的箭头指出了对应二进制位不同的位置。


思路：

用位运算区分出不同的位
统计不同位的个数

那么如何区分出不同的位？这里肯定用的是位运算。位运算包括（与、或、非、异或）
依次看一下位运算：

与运算
1 &amp; ]]></description><category></category></item><item><title><![CDATA[查看Linux系统日志-cat/less/more命令]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109123339</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109123339</guid><author>Gabbana</author><pubDate>Fri, 16 Oct 2020 20:16:21 +0800</pubDate><description><![CDATA[1.看一下/var目录下存的什么
Linux系统日志存放在 /var目录下，我们先来看一下这个目录都有什么

所有服务的登文件或错误信息文件（LOG FILES)都在/var/log下，此外，一些数据库如MySQL则在/var/lib下，还有，用户未读的邮件的默认存放地点为/var/spool/mail。
2.主要看一下/var/logs目录
我们来看一下/var/logs目录下都有什么


3.以yum.log这个日志文件为例讲解一下cat/more/less/grep的使用
可以看到最后一个文件是yum]]></description><category></category></item><item><title><![CDATA[HTTP/1.0和HTTP/1.1的区别]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109105855</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109105855</guid><author>Gabbana</author><pubDate>Thu, 15 Oct 2020 21:59:06 +0800</pubDate><description><![CDATA[HTTP1.1 新改动1. 持久连接：2. 管线化理论3. 增加Host字段4. 支持断点传输⭐⭐⭐无论是HTTP1.0还是HTTP1.1都会出现队头阻塞的情况HTTP2.0的改动1.多路复用2. 二进制分帧3. 头部压缩4.服务器推送
HTTP1.1 新改动


持久连接


请求管道化


增加Host字段


支持断点传输


1. 持久连接：
HTTP1.0最显著的特点是短连接，每次与服务器的交互都要重新开一个连接。而HTTP是基于TCP协议的，每次连接都要经历三次握手，四次挥手，慢启动…是非常消.]]></description><category></category></item><item><title><![CDATA[堆栈的区别]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109049065</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109049065</guid><author>Gabbana</author><pubDate>Tue, 13 Oct 2020 13:22:10 +0800</pubDate><description><![CDATA[1. 物理地址
堆的物理地址分配是不连续的，所以性能慢。在GC的时候也要考虑到不连续分配，所以有各种算法。比如，标记清除，复制，标记压缩，分代。
栈的物理地址分配是连续的。所以性能快。
2.内存大小
堆因为是不连续的，所以分配的内存是在运行期确认的，因此大小不固定，堆的大小远大于栈的大小。
栈是连续的，所以分配的内存大小在编译器就确定了，大小是固定的。
3.存放内容
堆存放的是对象的实例和数组。所以堆更关心的是数据的存储。
栈存放的是局部变量，操作数栈，更关心程序方法的执行。
4. 共享性
栈是线程私有的
]]></description><category></category></item><item><title><![CDATA[Java深拷贝和浅拷贝的区别]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109049038</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109049038</guid><author>Gabbana</author><pubDate>Tue, 13 Oct 2020 13:16:06 +0800</pubDate><description><![CDATA[浅拷贝：只是增加了一个指针指向已存在的内存地址
深拷贝：增加了一个指针并且申请了一块新的内存，使得增加的指针指向这个新的内存。
在使用深拷贝的情况下，释放内存的时候不会释放同一块的内存的错误。

...]]></description><category></category></item><item><title><![CDATA[Java有了GC为什么还会出现内存泄漏问题]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109048856</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109048856</guid><author>Gabbana</author><pubDate>Tue, 13 Oct 2020 12:57:55 +0800</pubDate><description><![CDATA[Java有了GC为什么还会出现内存泄漏问题？
1. 静态集合类泄漏
静态集合类像HashMap，Vector等的使用最容易出现内存泄漏，静态变量的声明周期与应用程序一直，所有的对象Object也不能内释放，因为被其他对象引用着。
2. 单例造成的泄漏
单例对象在初始化后将在JVM的整个生命周期中存在（以静态变量的方式），如果单例对象持有外部的引用，那么这个对象将不能被JVM正常回收，导致内存泄漏。
3.各种连接
数据库连接，网络连接，IO连接等没有显式调用close()关闭，会导致内存泄漏。
4.监听器的使]]></description><category></category></item><item><title><![CDATA[【shell编程】目录文件计数]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/107659574</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/107659574</guid><author>Gabbana</author><pubDate>Sun, 11 Oct 2020 21:18:23 +0800</pubDate><description><![CDATA[一、目录文件计数
我们要实现一个脚本，它会对PATH环境变量中定义的目录里的可执行文件进行计数。
首先，查看一下PATH环境变量
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

PATH中的每个路径由冒号分隔。要获取可在脚本中使用的目录列表，就必须用空格来替换冒号。现在你会发现sed编辑器用一条简单表达式就能完成替换工作。
$ echo $PATH | sed 's/:/ /g'
/usr/local/sbi]]></description><category></category></item><item><title><![CDATA[【面试必考系列】进程间通信方式]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/109008657</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/109008657</guid><author>Gabbana</author><pubDate>Sun, 11 Oct 2020 11:31:19 +0800</pubDate><description><![CDATA[一个进程的用户空间之间是相互独立的，但他们共享内核空间，所以进程间通信必须通过内核。

1. 管道
分为匿名管道，命名管道
1.1 匿名管道
也就是ps -ef | grep 3306 这种的，这个管道的作用是前一个输出作为下一个的输入，我们可以得出以下结论：

管道的传输是单向的，如果想要相互通信，要建立两个管道。
它是没有名字的，也叫匿名管道，用完就销毁。

如何实现进程通信的：
子进程拷贝了父进程的fd描述符，父子进程拥有相同的变量，只能实现单向通信。
局限性：
只能存在于父子进程之间
1.2 命名管]]></description><category></category></item><item><title><![CDATA[多线程实现同步的实现方法]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/108962531</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/108962531</guid><author>Gabbana</author><pubDate>Thu, 08 Oct 2020 14:40:30 +0800</pubDate><description><![CDATA[1. synchronized关键字
在Java语言中，每个对象都有一个对象锁与之关联，该锁表明一个对象在任何时候只能被一个线程拥有，当一个线程调用对象的一段snychronized代码时，会首先获取对象的锁，然后去执行相应的代码，执行完毕后，释放锁。
synchronized有两种用法（方法和代码块），还可用于静态方法，实例，类

synchronized方法
当一个方法体规模非常大时，使用同步方法会大大影响程序的执行效率，所以Java提供了同步块。
synchronized块

synchronized]]></description><category></category></item><item><title><![CDATA[MyISAM和InnoDB的区别]]></title><link>https://blog.youkuaiyun.com/Gabbana/article/details/108944769</link><guid>https://blog.youkuaiyun.com/Gabbana/article/details/108944769</guid><author>Gabbana</author><pubDate>Tue, 06 Oct 2020 23:38:34 +0800</pubDate><description><![CDATA[1. 查看MySql数据库物理文件存放位置

2. MyISAM存储引擎特点
MySql默认是InnoDB引擎，这里创建一个表设置存储引擎为Myisma

然后查看数据库表文件

可以看到数据文件和索引文件是分开存储的，平均分布I/O，获得更快的速度。
特点：

不支持事务，不支持外键约束，但支持全文索引
只支持表级锁定，虽然可以让锁实现的成本很小，但大大降低了并发性能。
读写相互阻塞：读取的时候阻塞写入，写入的时候阻塞读取，但读取时不会阻塞其他读取。
不缓存数据文件，只缓存索引文件。
读取速度较快，占用资]]></description><category></category></item></channel></rss>