<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[trees19990807的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/trees19990807</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; trees19990807]]></copyright><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/126857893</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/126857893</guid><author>trees19990807</author><pubDate>Wed, 14 Sep 2022 18:34:53 +0800</pubDate><description><![CDATA[springboot]]></description><category></category></item><item><title><![CDATA[binlog是什么？能做什么？Window下怎么开启binlog？怎么查看binlog日志？利用binlog日志恢复数据]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/126832007</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/126832007</guid><author>trees19990807</author><pubDate>Tue, 13 Sep 2022 16:26:00 +0800</pubDate><description><![CDATA[binlog是什么？能做什么？Window下怎么开启binlog？怎么查看binlog日志？利用binlog日志恢复数据]]></description><category></category></item><item><title><![CDATA[5.3问题总结]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/124555875</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/124555875</guid><author>trees19990807</author><pubDate>Tue, 03 May 2022 16:14:45 +0800</pubDate><description><![CDATA[一、设计模式理解
https://www.cnblogs.com/Kingyk/p/15368574.html
1、单例模式
1.1饿汉模式
一个类只允许创建一个实例（对象），在类加载时候就初始化好
特点：构造私有，静态创建实例，对外提供一个获取示例的方法
优点是：线程安全
缺点是：不支持延迟加载
1.2懒汉模式
特点：给获取实例方法了一把大锁（synchronzed），判断对象是否为空，为空才执行创建实例
优点：支持延迟加载
缺点：不支持高并发
1.3优化，示例判断为null时候才加锁，不给方法加，会引起]]></description><category></category></item><item><title><![CDATA[java基础2]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/114342988</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/114342988</guid><author>trees19990807</author><pubDate>Mon, 25 Apr 2022 19:42:23 +0800</pubDate><description><![CDATA[1、mysql语句执行顺序
from
on
join
where
group by
having
select
distinct
union
order by
我们看到on是在join和where前面的
   如果两张表的数据量都比较大的话，那样就会占用很大的内存空间这显然是不合理的。所以，我们在进行表连接查询的时候一般都会使用JOIN xxx ON xxx的语法，ON语句的执行是在JOIN语句之前的，也就是说两张表数据行之间进行匹配的时候，会先判断数据行是否符合ON语句后面的条件，再决定是否JOIN。

]]></description><category></category></item><item><title><![CDATA[java基础]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/114274385</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/114274385</guid><author>trees19990807</author><pubDate>Fri, 05 Mar 2021 09:16:04 +0800</pubDate><description><![CDATA[java面试基础部分常问总结（集各位大佬智慧来理解）
一、接口和抽象类的区别
1、首先接口和抽象类的设计目的就是不一样的。接口是对动作的抽象，而抽象类是对根源的抽象。对于抽象类，比如男人，女人这两个类，那我们可以为这两个类设计一个更高级别的抽象类–人。对于接口，我们可以坐着吃饭，可以站着吃饭，可以用筷子吃饭，可以用叉子吃饭等等，所以单继承，多实现。
总结如下：
抽象类里面可以没有抽象方法。
如果一个类里面有抽象方法，那么这个类一定是抽象类。
抽象类主要是用来抽象类别,接口主要是用来抽象方法功能。当你关注事物]]></description><category></category></item><item><title><![CDATA[POI——SXSSFWorkbook导出数据包含图片（网络地址）到Excel]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/114367121</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/114367121</guid><author>trees19990807</author><pubDate>Thu, 04 Mar 2021 14:45:25 +0800</pubDate><description><![CDATA[先看效果图：
每一行数据包含一个logo图片，从网上看了好多资料，但是不尽人意，都模模糊糊，所以以成功案例简单讲解SXSSFWorkbook导出数据包含图片到Excel的过程。

我的数据全部在json里，首先我用的图片是服务器网络地址，所以需要用IO转换成byte[]数组；
图片的位置：  HSSFClientAnchor
插图片的位置：  HSSFClientAnchor（dx1,dy1,dx2,dy2,col1,row1,col2,row2)；
dx1,dy1,dx2,dy2：前四个参数只是图片偏移量]]></description><category></category></item><item><title><![CDATA[mysql 的 case when then end用法 ，null 的判断，复杂SQL实际应用]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/114063144</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/114063144</guid><author>trees19990807</author><pubDate>Thu, 25 Feb 2021 10:16:30 +0800</pubDate><description><![CDATA[mysql 的 case when then 用法 和null 的判断
简单讲解：
SELECT
    case                   -------------如果
    when sex='1' then '男' -------------sex='1'，则返回值'男'
    when sex='2' then '女' -------------sex='2'，则返回值'女'
    else '其他'                 -------------其他的返回'其他’
 ]]></description><category></category></item><item><title><![CDATA[悲观锁与乐观锁]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/113929435</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/113929435</guid><author>trees19990807</author><pubDate>Mon, 22 Feb 2021 09:52:05 +0800</pubDate><description><![CDATA[何谓悲观锁与乐观锁
乐观锁对应于生活中乐观的人总是想着事情往好的方向发展，悲观锁对应于生
活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点，不能不以
场景而定说一种人好于另外一种人。
悲观锁
总是假设最坏的情况，每次去拿数据的时候都认为别人会修改，所以每次在拿
数据的时候都会上锁，这样别人想拿这个数据就会阻塞直到它拿到锁（共享资
源每次只给一个线程使用，其它线程阻塞，用完后再把资源转让给其它线
程）。传统的关系型数据库里边就用到了很多这种锁机制，比如行锁，表锁
等，读锁，写锁等，都是在做操作之前先]]></description><category></category></item><item><title><![CDATA[mysql基础知识整理]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/113929283</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/113929283</guid><author>trees19990807</author><pubDate>Mon, 22 Feb 2021 09:47:56 +0800</pubDate><description><![CDATA[1.数据库三范式是什么?

第一范式（1NF）：字段具有原子性,不可再分。(所有关系型数据库系
统都满足第一范式数据库表中的字段都是单一属性的，不可再分)
第二范式（2NF）是在第一范式（1NF）的基础上建立起来的，即满足
第二范式（2NF）必须先满足第一范式（1NF）。要求数据库表中的每
个实例或行必须可以被惟一地区分。通常需要为表加上一个列，以存储
各个实例的惟一标识。这个惟一属性列被称为主关键字或主键。
满足第三范式（3NF）必须先满足第二范式（2NF）。简而言之，第三
范式（3NF）要求一个数据库表]]></description><category></category></item><item><title><![CDATA[happen-before原则与JMM内存模型]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/113877154</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/113877154</guid><author>trees19990807</author><pubDate>Sat, 20 Feb 2021 10:04:41 +0800</pubDate><description><![CDATA[happen-before原则
happen-before是JMM最核心的概念，所以在了解happen-before原则之前，首先需要了解java的内存模型。
JMM内存模型
java内存模型是共享内存的并发模型，线程之间主要通过读-写共享变量来完成隐式通信。java中的共享变量是存储在内存中的，多个线程由其工作内存，其工作方式是将共享内存中的变量拿出来放在工作内存，操作完成后，再将最新的变量放回共享变量，这时其他的线程就可以获取到最新的共享变量。

从横向去看看，线程A和线程B就好像通过共享变量在进行隐式]]></description><category></category></item><item><title><![CDATA[mybatis中if标签和else的替代]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/113876962</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/113876962</guid><author>trees19990807</author><pubDate>Sat, 20 Feb 2021 09:53:57 +0800</pubDate><description><![CDATA[mybatis中if test 可以使用== != null ‘’ and or 和括号()
&lt;if test="pd.flag==1 or ((pd.flag==2 or pd.flag==3) and (pd.sfyj==2 or pd.sfyj==3)) or pd.flag==3"&gt;
    union all
  &lt;/if&gt;

 &lt;if test="pd.ssny != null and pd.ssny != ''"&gt;
     and z.sjssny &gt]]></description><category></category></item><item><title><![CDATA[volatile学习笔记]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/113876418</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/113876418</guid><author>trees19990807</author><pubDate>Sat, 20 Feb 2021 09:50:20 +0800</pubDate><description><![CDATA[一.概念
volatile是Java虚拟机提供的轻量级的同步机制
简单理解：被volatile修饰的变量能够保证每个线程能够获取该变量的最新值，从而避免出现数据脏读的现象。
二.volatile不能保证线程安全
1.保证可见性
2.不保证原子性(线程不安全)
3.禁止指令重排
三.volatile与synchronized
volatile不能保证线程安全而synchronized可以保证线程安全。volatile只能保证被其修饰变量的内存可见性，但如果对该变量执行的是非原子操作线程依旧是不安全的。而syn]]></description><category></category></item><item><title><![CDATA[多线程]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/109485589</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/109485589</guid><author>trees19990807</author><pubDate>Wed, 04 Nov 2020 17:19:31 +0800</pubDate><description><![CDATA[什么是进程，什么是线程？
进程：是一个应用程序的运行实例，是一个动态概念，竞争计算机系统资源的基本单位。（每一个应用程序对应一个进程，一个进程对应多个线程，程序与程序（进程与进程）之间不公共享资源，资源是独立的）
线程：是进程的一个执行单元。比进程更小的独立运行的基本单位。
总结：一个程序至少一个进程，一个进程至少一个线程。
进程线程的区别
1、地址空间：同一进程的线程共享本进程的地址空间，而进程之间则是独立的地址空间。
2、资源拥有：同一进程内的线程共享本进程的资源，但是进程之间的资源是独立的。
3、进程]]></description><category></category></item><item><title><![CDATA[阻塞IO和非阻塞IO的区别 (BIO&NIO)]]></title><link>https://blog.youkuaiyun.com/trees19990807/article/details/109470820</link><guid>https://blog.youkuaiyun.com/trees19990807/article/details/109470820</guid><author>trees19990807</author><pubDate>Wed, 04 Nov 2020 10:30:35 +0800</pubDate><description><![CDATA[这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题，有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能，丰富你的文章UML 图表FLowchart流程图导出与导入导出导入
欢迎使用Markdown编辑器
你好！ 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar]]></description><category></category></item></channel></rss>