<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Banksyw的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Banksyw</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Banksyw]]></copyright><item><title><![CDATA[MySQL面经复习]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/114242285</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/114242285</guid><author>Banksyw</author><pubDate>Sat, 20 Mar 2021 22:06:18 +0800</pubDate><description><![CDATA[事务隔离级别
MySQL一百道面试题

]]></description><category></category></item><item><title><![CDATA[JUC并发编程（1）]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/113448550</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/113448550</guid><author>Banksyw</author><pubDate>Sat, 20 Mar 2021 22:05:16 +0800</pubDate><description><![CDATA[Java无法直接开启线程，它是运行在虚拟机上的，无法操作硬件，start方法调用底层的c++
并发：多个线程操作同一个资源类
并发编程的本质：充分利用CPU的资源
线程的6个状态：
NEW
RUNNABLE
BLOCKED
WAITING
TIMED_WAITING
TERMINATED

创建线程不要继承接口了，注意解耦和


防止线程的虚假唤醒，判断条件不能用if，而是要用while。
拿两个加法线程A、B来说，比如A先执行，执行时调用了wait方法，那它会等待，此时会释放锁，那么线程B获得锁并且也会执]]></description><category></category></item><item><title><![CDATA[腾讯 字节 阿里 百度 面经 （持续更新）]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/114649075</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/114649075</guid><author>Banksyw</author><pubDate>Sat, 20 Mar 2021 22:04:10 +0800</pubDate><description><![CDATA[计网相关：
tcp三次握手
拥塞控制和流量控制
端口复用（这个我自己还是要了解下，没问）
序列号相关，丢失重传，序列号怎么发？（待补充，最后一位序列号加1？）
tcp四元组（好家伙居然蒙对了）

怎样查看tcp连接数达到上限？（好家伙 不会）
数据库相关：
B+树的插入操作（不会）
B树，B+树的插入，删除
什么时候走辅助索引，比直接全表查询慢？
直接回答了数据量比较少的时候，面试官：还有呢？最后他提示；多个范围零散的查找，数据地址不在相邻的物理区间（这个物理上的局部性原理，我在说聚集和非聚集的时候提到过）]]></description><category></category></item><item><title><![CDATA[Redis笔记]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/113423814</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/113423814</guid><author>Banksyw</author><pubDate>Tue, 02 Mar 2021 11:42:42 +0800</pubDate><description><![CDATA[Redis单条命令式保存原子性的，但是事务不保证原子性。
乐观锁用watch监视
Redis持久化：rdb,aof


aof默认不开启
redis发布订阅:
使用场景，实时消息系统，实时聊天，订阅发布。
主从复制：
主从复制，读写分离，主写从读。



哨兵模式




缓存穿透：解决方案，布隆过滤器，缓存空对象。




一些面试题详解

...]]></description><category></category></item><item><title><![CDATA[Mysql核心理解笔记—深入理解Innodb引擎]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/112910281</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/112910281</guid><author>Banksyw</author><pubDate>Sat, 23 Jan 2021 12:02:20 +0800</pubDate><description><![CDATA[MVCC待仔细了解完善

]]></description><category></category></item><item><title><![CDATA[Mysql核心理解笔记—体系认识，SQL执行]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/112850193</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/112850193</guid><author>Banksyw</author><pubDate>Wed, 20 Jan 2021 10:09:17 +0800</pubDate><description><![CDATA[存储引擎：
存储引擎用于修饰表，不同表可以用不同的引擎修饰，默认是Innodb，引擎是插拔式，可随时加载和卸载。


]]></description><category></category></item><item><title><![CDATA[MySQL核心理解笔记—索引机制]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/108951040</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/108951040</guid><author>Banksyw</author><pubDate>Tue, 19 Jan 2021 17:39:52 +0800</pubDate><description><![CDATA[什么是数据库索引（详解）
为什么数据库索引采用B+树
数据库索引是一种为了加速数据表中行记录检索的数据结构，可以理解为字典目录。
*数据库的索引存储与磁盘中
哈希索引的特性：等值匹对非常快，范围查询不支持。

树的查找都是递归查找
二叉树：数据组织左小右大，递归的二分查找可以过滤掉大多数数据，查找效率Olog(N)。 （但是如果是主键自增的索引，二叉树结构就会变成单链表，不满足提升效率的需求）
平衡二叉树（AVL树）：在数据的增删过程中，重新调整其结构，以满足其平衡性（但是数据大时，其树的高度太高，磁盘利用]]></description><category></category></item><item><title><![CDATA[JVM笔记-运行时数据区]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/112607673</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/112607673</guid><author>Banksyw</author><pubDate>Fri, 15 Jan 2021 16:23:43 +0800</pubDate><description><![CDATA[还有一个运行时常量池属于方法区
从生命周期理解：
方法区和堆区生命周期和JVM相关
虚拟机栈，本地方法栈，程序计数器生命周期和线程相关
程序计数器：

虚拟机栈：

JDK1.8默认栈的大小为1M，栈的内存溢出会使当前线程崩溃，并不会使整个JVM退出。
栈帧包含：局部变量表，操作数栈，动态连接，方法返回地址


方法区：

方法区在逻辑上是属于堆的一部分

方法区和堆区产生的异常会使整个JVM挂掉
堆区：


Eden区：
对象产生的区域（有特例）




...]]></description><category></category></item><item><title><![CDATA[JVM笔记—垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/112665759</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/112665759</guid><author>Banksyw</author><pubDate>Fri, 15 Jan 2021 16:23:13 +0800</pubDate><description><![CDATA[引用计数法：无法解决循环引用的问题。


对象的引用类型：
强引用：就算出现OOM(内存溢出)也不会对该对象进行回收（eg: new 出来的对象）
弱引用：发生GC操作就会被垃圾回收
软引用：内存不足才会被回收
虚引用：主要是跟踪对象被垃圾回收的情况
STW:在GC时停止用户线程的工作，STW的时间，时评判垃圾回收器重要的指标。
吞吐量：
垃圾回收器图示：

Serial最古老的垃圾收集器组合，jdk1.3以前的唯一选择。

parnew:多线程收集

JDK1.8默认的垃圾收集器：Parallel Sca]]></description><category></category></item><item><title><![CDATA[JVM笔记-类的加载]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/112603043</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/112603043</guid><author>Banksyw</author><pubDate>Fri, 15 Jan 2021 16:22:48 +0800</pubDate><description><![CDATA[类的加载（顺序执行的过程）：加载，链接（包括验证，准备，解析），初始化
加载：利用全限定路径名确定类的唯一性
准备阶段：为类的静态变量分配内存，并初始化默认值。
解析：把类当中的符号引用转化为运行时的直接引用
初始化：

类的初始化的时机：

创建类的实例（new 反射 克隆 反序列化）
访问类中的某个静态变量，或对静态变量进行赋值
主动调用类的静态方法
class.forName (" 包类名 ")
完成子类的初始化，也会完成对本类的初始化
该类是程序的引导入口（main入口或test入口）


类的加载]]></description><category></category></item><item><title><![CDATA[Java中Volatile关键字详解 重排序 happens-before]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/109711889</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/109711889</guid><author>Banksyw</author><pubDate>Sun, 15 Nov 2020 23:14:34 +0800</pubDate><description><![CDATA[转载两篇文章自己保存观看
Java中Volatile关键字详解
为什么会有重排序?和 happens-before 有啥关系

]]></description><category></category></item><item><title><![CDATA[Spring配置文件 注解]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/109466258</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/109466258</guid><author>Banksyw</author><pubDate>Thu, 05 Nov 2020 16:34:39 +0800</pubDate><description><![CDATA[&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.spring]]></description><category></category></item><item><title><![CDATA[跨域问题]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/107990042</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/107990042</guid><author>Banksyw</author><pubDate>Thu, 13 Aug 2020 19:58:27 +0800</pubDate><description><![CDATA[跨域问题

]]></description><category></category></item><item><title><![CDATA[Java Mysql数据库连接池]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/107122606</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/107122606</guid><author>Banksyw</author><pubDate>Sat, 04 Jul 2020 12:08:45 +0800</pubDate><description><![CDATA[连接池工具类
public class MyDBPool{
	//独占锁
	private static ReentrantLock lock = new ReentrantLock();
	
	//定义连接池中连接对象的存储容器【线程安全】
	private static List&lt;MyConnection&gt; list = Collections.synchronizedList(new ArrayList&lt;&gt;());
		
	//定义数据库连接属性
	private final ]]></description><category></category></item><item><title><![CDATA[Java IO 获取POST请求遇到的问题]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/106850950</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/106850950</guid><author>Banksyw</author><pubDate>Mon, 29 Jun 2020 16:53:45 +0800</pubDate><description><![CDATA[添加链接描述



]]></description><category></category></item><item><title><![CDATA[Java http web服务器]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/106791371</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/106791371</guid><author>Banksyw</author><pubDate>Tue, 16 Jun 2020 17:20:00 +0800</pubDate><description><![CDATA[服务端
package com.company;

import java.net.ServerSocket;
import java.net.Socket;

public class WebServer {

    public static void main(String[] args) {
        //创建两个端口号和连接次数的变量
        int i = 1, PORT = 8080;
        ServerSocket server = null;           ]]></description><category></category></item><item><title><![CDATA[java  ava.net.BindException: Address already in use: JVM_Bind(端口被占用，线程死循环)]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/106649815</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/106649815</guid><author>Banksyw</author><pubDate>Tue, 09 Jun 2020 20:21:33 +0800</pubDate><description><![CDATA[练习用Socket 写一个聊天室的功能，在给服务端加上多线程时发生这个报错。找了好久才发现，端口被占用了

问题所在：

把端口放在循环里面，不能无限制的开启端口啊
但是当我把这行代码移到 while (true) 外面后
ServerSocket server = new ServerSocket(5000);
  //阻塞，等待连接，成功连接后，创建与客户端通讯的
  Socket对象实例
                Socket client = server.accept();

电脑直接崩掉了]]></description><category></category></item><item><title><![CDATA[转载自薰衣草的旋律   以生活例子说明单线程与多线程（自己保存学习）]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/106557134</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/106557134</guid><author>Banksyw</author><pubDate>Thu, 04 Jun 2020 20:11:33 +0800</pubDate><description><![CDATA[以生活例子说明单线程与多线程

]]></description><category></category></item><item><title><![CDATA[java小玩意 两种方法实现微信多开 1.直接打开应用  2.控制cmd输出]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/106432470</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/106432470</guid><author>Banksyw</author><pubDate>Fri, 29 May 2020 20:49:48 +0800</pubDate><description><![CDATA[在形成cmd命令字符串的时候出现问题，在java打印出的命令复制到cmd时可以直接运行，但是通过java的却一直不行，因为cmd无法鉴别是多条指令，在每行命令前加&amp;解决。

```java
import java.io.*;
import java.util.*;
import java.util.Scanner;
import java.awt.*;


public class WechatOpen{
	public static void main(String[] main){
		try{]]></description><category></category></item><item><title><![CDATA[Java IO工具小组件 文件增删改查，加密，解密，复制，文件目录删除]]></title><link>https://blog.youkuaiyun.com/Banksyw/article/details/106399728</link><guid>https://blog.youkuaiyun.com/Banksyw/article/details/106399728</guid><author>Banksyw</author><pubDate>Thu, 28 May 2020 11:20:43 +0800</pubDate><description><![CDATA[在删除文件目录部分被卡住，需要递归判断该文件是不是文件夹，是，就往下取子目录判断，不是文件夹就删除。
刚开始使用List方法，达不到需求，原因是在获取子文件的名称往下递归时，并没有加上父路径，所有判断一直在当前操作层查找，后改用ListFiles方法，解决该问题
import java.io.*;
import java.util.*;

public class IOUtil{
	public static void main(String[] main){
		try{
		//	fileCopy("i]]></description><category></category></item></channel></rss>