<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[code_mzh的博客]]></title><description><![CDATA[世之奇伟瑰怪之观，常在于险远]]></description><link>https://blog.youkuaiyun.com/code_mzh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; code_mzh]]></copyright><item><title><![CDATA[秋招面试知识点----机网，linux等其他篇]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/111024256</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/111024256</guid><author>code_mzh</author><pubDate>Thu, 10 Dec 2020 22:51:31 +0800</pubDate><description><![CDATA[公司的背景，业务一定了解
rpc
远程过程调用，主要是
1、服务消费者（client客户端）通过本地调用的方式调用服务
2、客户端存根（client stub）接收到调用请求后负责将方法、入参等信息
**序列化（**组装）成能够进行网络传输的消息体
3、客户端存根（client stub）找到远程的服务地址，并且将消息通过网络发送给服务端
4、服务端存根（server stub）收到消息后进行解码（反序列化操作）
5、服务端存根（server stub）根据解码结果调用本地的服务进行相关处理
6、本地服务执]]></description><category></category></item><item><title><![CDATA[秋招面试知识点----框架篇]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/111023438</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/111023438</guid><author>code_mzh</author><pubDate>Thu, 10 Dec 2020 22:44:35 +0800</pubDate><description><![CDATA[IoC
控制反转IoC(Inversion of Control)，是一种设计思想，DI(依赖注入)是实现IoC的一种方法，也有人认为DI只是IoC的另一种说法。没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中，就是new 对象，对象的创建由程序自己控制，直接写死的，但是这样的话框架的开发者不知道我们写的类名，没法写死在程序，所以就反射进行创建，放到bean工厂里面，就是ioc容器，用的时候就是@autowore，resoruse使用，默认是单例，个人认为所谓]]></description><category></category></item><item><title><![CDATA[秋招面试知识点----JVM篇]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/111023096</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/111023096</guid><author>code_mzh</author><pubDate>Thu, 10 Dec 2020 22:43:42 +0800</pubDate><description><![CDATA[1.发生栈内存溢出。
描述栈定义，再描述为什么会溢出，再说明一下相关配置参数，OK的话可以给面试官手写是一个栈溢出的demo。

栈定义


存放基本类型的变量数据和对象的引用，栈是线程私有的，他的生命周期与线程相同。每个方法在执行的时候都会创建一个栈帧，用来存储局部变量表，操作数栈，动态链接，方法出口等信息。每个方法从调用直至执行完成的过程，就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。


为什么会溢出


如果线程请求的栈深度大于虚拟机所允许的最大深度，就会抛出StackOverflowError异常]]></description><category></category></item><item><title><![CDATA[秋招面试知识点----多线程篇]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/111022782</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/111022782</guid><author>code_mzh</author><pubDate>Thu, 10 Dec 2020 22:41:44 +0800</pubDate><description><![CDATA[juc下有什莫


AQS：共享资源空闲，则将当前请求资源的线程设置为有效的工作线程，并且将共享资源设置为锁定状态。如果被请求的共享资源被占用，那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制。

就是clh先进先出队列（节点有联系），
private volatile int state;//同步状态，使用volatile修饰保证线程可见性，还有就是同步状态cas操作
模版模式，就是父类搞个模版，规划好方法执行顺序，就是一个方法里包含其他方法，子类只用修改其中一部分，运行时就会走子类地方法。



Au]]></description><category></category></item><item><title><![CDATA[秋招面试知识点----数据库篇]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/111020746</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/111020746</guid><author>code_mzh</author><pubDate>Thu, 10 Dec 2020 22:40:08 +0800</pubDate><description><![CDATA[B树
B树相对于平衡二叉树的不同是，每个节点包含的关键字增多了，特别是在B树应用到数据库中的时候，数据库充分利用了磁盘块的原理就是局部i性的思想，装入部分就可以执行，
在B树的基础上每个节点存储的关键字数更多，树的层级更少所以查询数据更快，所有指关键字指针都存在叶子节点，所以每次查找的次数都相同所以查询速度更稳定;
mysql B+
1）B+跟B树不同B+树的非叶子节点不保存关键字记录的指针，只进行数据索引，这样使得B+树每个非叶子节点所能保存的关键字大大增加；
（2）B+树叶子节点保存了父节点的所有关键字]]></description><category></category></item><item><title><![CDATA[秋招面试知识点----集合篇]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/111019373</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/111019373</guid><author>code_mzh</author><pubDate>Thu, 10 Dec 2020 22:30:52 +0800</pubDate><description><![CDATA[ArryList
ArrayList 底层基于数组实现容量大小动态可变。 扩容机制为首先扩容为原始容量的 1.5 倍。如果1.5倍太小的话，则将我们所需的容量大小赋值给 newCapacity，如果1.5倍太大或者我们需要的容量太大，那就直接拿 newCapacity = (minCapacity &gt; MAX_ARRAY_SIZE) ? Integer.MAX_VALUE : MAX_ARRAY_SIZE 来扩容。 扩容之后是通过数组的拷贝来确保元素的准确性的，所以尽可能减少扩容操作。 ArrayLi]]></description><category></category></item><item><title><![CDATA[java锁的升级过程]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108627351</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108627351</guid><author>code_mzh</author><pubDate>Wed, 16 Sep 2020 18:26:32 +0800</pubDate><description><![CDATA[无锁，偏向锁，轻量级锁，重量级锁
jdk1.6后减少锁的消耗时，引入偏向锁和轻量级锁，锁可以升级但不能降级。
因为自旋会消耗CPU，为了避免无用的自旋（比如获得锁的线程被阻塞住了）一旦锁升级成重量级锁，就不会再恢复到轻量级锁状态。当锁处于这个状态下，其他线程试图获取锁时，都会被阻塞住，当持有锁的线程释放锁之后会唤醒这些线程，被唤醒的线程就会进行新一轮的夺锁之争
锁分级别原因：
没有优化以前，synchronized是重量级锁（悲观锁），使用 wait 和 notify、notifyAll 来切换线程状态非常]]></description><category></category></item><item><title><![CDATA[强引用、软引用、弱引用、虚引用的区别？]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108610128</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108610128</guid><author>code_mzh</author><pubDate>Tue, 15 Sep 2020 21:53:16 +0800</pubDate><description><![CDATA[强引用
当内存不足的时候，JVM开始垃圾回收，对于强引用的对象，就算是出现了OOM也不会对该对象进行回收！
强引用是我们最常见的普通对象引用，只要还有一个强引用指向一个对象，就能表明对象还“活着”，垃圾收集器不会碰这种对象。在Java中最常见的就是强引用，把一个对象赋给一个引用变量，这个引用变量就是一个强引用。当一个对象被强引用变量引用时，它处于可达状态，它是不可能被垃圾回收机制回收的，即使该对象以后永远都不会被用到，JVM也不会回收，因此强引用是造成Java内存泄漏的主要原因之一。
对于一个普通的对象，如]]></description><category></category></item><item><title><![CDATA[jvm垃圾收集器，各自的优缺点]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108609792</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108609792</guid><author>code_mzh</author><pubDate>Tue, 15 Sep 2020 21:21:10 +0800</pubDate><description><![CDATA[垃圾回收器



Serial收集器： 针对新生代的单线程收集器，使用复制算法。收集垃圾是会产生较长时间的停顿，但不会产生线程切换的开销


Serial Old收集器：  针对老年代的单线程收集器，使用标记整理算法。


Parallel Scavenge收集器： jdk 1.8默认的垃圾回收器。新生代回收器，采用复制算法，多线程并行回收，充分利用CPU资源。进行垃圾收集时，必须暂停所有工作线程，直到完成


Parallel Old收集器： 是Parallel Scavenge收集器的老年代版本，使用.]]></description><category></category></item><item><title><![CDATA[redis底层数据结构]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108593238</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108593238</guid><author>code_mzh</author><pubDate>Tue, 15 Sep 2020 11:56:17 +0800</pubDate><description><![CDATA[1.动态字符串
用的是c语言，自己写的简单动态字符串sds，分为
struct sdshdr{
     //记录buf数组中已使用字节的数量
     int len;
     //记录 buf 数组中未使用字节的数量
     int free;
     //字节数组，用于保存字符串
     char buf[];
}

为什么设计呢

1.常熟复杂度获取字符串的长度，c语言是要遍历一遍计数的，空间换时间，直接读len就行了
2.防止缓存溢出，字符串strcat时，可能由于分配的空间不够导致 内存]]></description><category></category></item><item><title><![CDATA[condition精准唤醒]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108565373</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108565373</guid><author>code_mzh</author><pubDate>Sun, 13 Sep 2020 17:47:53 +0800</pubDate><description><![CDATA[package JUC.condition;

import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * @author HuangHaiyang
 * @date 2020/07/02
 * @description: description
 * @version: 1.0.0
 ]]></description><category></category></item><item><title><![CDATA[sql性能分析explain（2. 举例理解）]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108298001</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108298001</guid><author>code_mzh</author><pubDate>Sat, 29 Aug 2020 20:41:03 +0800</pubDate><description><![CDATA[单表优化（详细），多表优化
一，单表优化
今天来准备sql优化的环境，整个实验过程包含两张表，一张员工表emp和一张部门表dept，我们通过存储过程实现批量插入数据，1w条部门数据，5w条员工数据。下面给出具体的代码，大家可以结合注释理解执行。
直接全部复制执行即可，耐心等待，建议本地数据库，快
#创建表
create table dept(
    id int(11) not null auto_increment,
		deptName varchar(30) DEFAULT null,
		addr]]></description><category></category></item><item><title><![CDATA[sql性能分析explain（1. 基础认知）]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108296988</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108296988</guid><author>code_mzh</author><pubDate>Sat, 29 Aug 2020 18:33:05 +0800</pubDate><description><![CDATA[Mysql中的explain语句
在Mysql的性能分析中我们免不了会使用explain语句。在日常工作中，我们会有时会开慢查询去记录一些执行时间比较久的SQL语句，使用explain这个命令来查看一个这些SQL语句的执行计划，查看该SQL语句有没有使用上了索引，有没有做全表扫描，这都可以通过explain命令来查看。使用explain关键字可以模拟优化器执行SQL查询语句，从而知道MySQL是如何处理你的SQL语句的，分析查询语句或是表结构的性能瓶颈。
下面是一个简单的使用explain语句的例子，使用的]]></description><category></category></item><item><title><![CDATA[MySql七种join理论]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108264322</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108264322</guid><author>code_mzh</author><pubDate>Thu, 27 Aug 2020 17:06:46 +0800</pubDate><description><![CDATA[1.内连接

select * from A inner join on B where A.key=B.key;

2.左连接（就是左侧的无联系都会查出来）

select * from A left join B on A.key=B.key
 where B.key is null;


右连接


select * from A right join B on A.key=B.key
 where A.key is null;

4.左外连接

select * from A left join .]]></description><category></category></item><item><title><![CDATA[修改密码时报错，ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘localhost‘]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108245316</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108245316</guid><author>code_mzh</author><pubDate>Wed, 26 Aug 2020 18:32:40 +0800</pubDate><description><![CDATA[修改密码：
先登录mysql
mysql -u root -p

输入密码
mysql&gt; use mysql;
mysql&gt; select user,host from user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| admin            | localh]]></description><category></category></item><item><title><![CDATA[解决mysql没有mysql.user表的root用户问题]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108243683</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108243683</guid><author>code_mzh</author><pubDate>Wed, 26 Aug 2020 17:23:00 +0800</pubDate><description><![CDATA[莫名其妙mysql.user表的root没了，远程肯定登陆不上了，千万别卸载mysql，数据会没的

我的user表没有任何一个root用户，新手都有的我没了。。。
一开始我要设置不给密码，方便后续操作：
vim /etc/my.cnf
skip-grant-tables     #在[mysqld]下面添加这一行，忽略权限表

然后重启mysql：
systemctl restart mysqld.service

先说解决步骤：
1.创建root用户
2.给予root所有权限
过程：
1.创建root用]]></description><category></category></item><item><title><![CDATA[Navicat远程连接mysql]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108243222</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108243222</guid><author>code_mzh</author><pubDate>Wed, 26 Aug 2020 17:06:48 +0800</pubDate><description><![CDATA[在windows-cmd窗口ping linux IP地址。
在linux，mysql窗口查看mysql的端口
show variables like '%port%';

(如果没有，请跳过这个步骤)
置root的密码为123456
set global validate_password_policy=0;

validate_password_length(密码长度)参数默认为8，我们修改为6
set global validate_password_length=6;

完成之后再次执行修改密码语句]]></description><category></category></item><item><title><![CDATA[CentOS7在线安装mysql5.7]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108242790</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108242790</guid><author>code_mzh</author><pubDate>Wed, 26 Aug 2020 16:45:07 +0800</pubDate><description><![CDATA[先下载 mysql源安装包
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
安装mysql源
yum -y localinstall mysql57-community-release-el7-11.noarch.rpm

检查源是否安装成功
sudo yum repolist enabled | grep “mysql.-community.”

安装 MySQL
sudo yum -y install ]]></description><category></category></item><item><title><![CDATA[spring security快速上手]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108187074</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108187074</guid><author>code_mzh</author><pubDate>Sun, 23 Aug 2020 19:27:48 +0800</pubDate><description><![CDATA[Spring Security在spring boot项目中加入springsecurity更是十分简单，使用Spring Security 减少了为企业系统安全控制编写大量重复代码的工作。
依赖
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta]]></description><category></category></item><item><title><![CDATA[初识spring security]]></title><link>https://blog.youkuaiyun.com/code_mzh/article/details/108184125</link><guid>https://blog.youkuaiyun.com/code_mzh/article/details/108184125</guid><author>code_mzh</author><pubDate>Sun, 23 Aug 2020 18:16:31 +0800</pubDate><description><![CDATA[什么是认证
进入移动互联网时代，大家每天都在刷手机，常用的软件有微信、支付宝、头条等，下边拿微信来举例子说明认证相关的基本概念，在初次使用微信前需要注册成为微信用户，然后输入账号和密码即可登录微信，输入账号和密码登录微信的过程就是认证。
系统为什么要认证？
认证是为了保护系统的隐私数据与资源，用户的身份合法方可访问该系统的资源。
认证 ：用户认证就是判断一个用户的身份是否合法的过程，用户去访问系统资源时系统要求验证用户的身份信息，身份合法方可继续访问，不合法则拒绝访问。常见的用户身份认证方式有：用户名密码登]]></description><category></category></item></channel></rss>