<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lee9289的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lee9289</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lee9289]]></copyright><item><title><![CDATA[mysql 一个语法错误]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/84636643</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/84636643</guid><author>lee9289</author><pubDate>Thu, 29 Nov 2018 17:31:27 +0800</pubDate><description><![CDATA[业务说明，首先查询出一条数据，然后再更新着跳数据。

比如：


update user set age = (select age from user where user_name = 'tom') + 1 where user_name = 'tom';

会执行错误


You can't specify target table '表名' for update in FROM claus...]]></description><category></category></item><item><title><![CDATA[windows下安装kafka]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/83213896</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/83213896</guid><author>lee9289</author><pubDate>Sat, 20 Oct 2018 15:39:22 +0800</pubDate><description><![CDATA[https://blog.youkuaiyun.com/u012050154/article/details/76270655]]></description><category></category></item><item><title><![CDATA[kafka部署中遇到的坑]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/83213344</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/83213344</guid><author>lee9289</author><pubDate>Sat, 20 Oct 2018 14:50:39 +0800</pubDate><description><![CDATA[
kafka.common.KafkaException: Socket server failed to bind to xx:9092: Cannot assign requested address

由于kafka部署在虚拟机上，启动的时候，不能正常启动，报上面的错，一直找不到原因。结果是因为虚拟机地址找不到。解决方法参考：https://qii404.me/2018/02/02/kafk...]]></description><category></category></item><item><title><![CDATA[ajax全局处理]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82854946</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82854946</guid><author>lee9289</author><pubDate>Wed, 26 Sep 2018 16:13:38 +0800</pubDate><description><![CDATA[最近在用spring security 做权限管理，前端用的是layui，在用户session过期之后，ajax请求会自动302到登录页面，但是ajax请求获取的是登录页面的html代码，用ajax统一配置complete函数


$.ajaxSetup({
    contentType:&quot;application/x-www-form-urlencoded;charset=utf-8&quot;,
   ...]]></description><category></category></item><item><title><![CDATA[layui form表单提交后刷新页面]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82747607</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82747607</guid><author>lee9289</author><pubDate>Mon, 17 Sep 2018 19:43:30 +0800</pubDate><description><![CDATA[采用layui作为前端框架

js代码为


form.on('submit(setmypass)', function(data) {
    $.ajax({
        ......
        success:function(){
            console.log(xxxx);
        }
    });
});

当点'setmypass'这个input的...]]></description><category></category></item><item><title><![CDATA[springboot 多模块下mapper分散的解决方法]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82746700</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82746700</guid><author>lee9289</author><pubDate>Mon, 17 Sep 2018 18:10:48 +0800</pubDate><description><![CDATA[springboot项目结构



由于mapper.xml分布在不同的模块中，


mybatis.mapperLocations=classpath:mapper/*.xml 不能两个模块中mapper文件夹下的xml文件不能加载


这是因为classpath只加载了一个mapper的改成

mybatis.mapperLocations=classpath*:mapper/*.xml

解...]]></description><category></category></item><item><title><![CDATA[io流复制文件以及压缩和解压缩]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82432682</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82432682</guid><author>lee9289</author><pubDate>Wed, 05 Sep 2018 23:33:29 +0800</pubDate><description><![CDATA[
import java.io.*;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class GzipUtils {
	
	public static byte[] gzip(byte[] data) throws Exception {
		ByteArrayOutput...]]></description><category></category></item><item><title><![CDATA[堆排序]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82317605</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82317605</guid><author>lee9289</author><pubDate>Sun, 02 Sep 2018 18:07:34 +0800</pubDate><description><![CDATA[1. 首先把最大值或者最小值放在根节点处
2. 把最大或最小值沉淀到最后值处
3. 除去最后位置处的值，重复把最大值或最小值放在根节点处，然后和倒数第二个位置交换
4. 重复上面的步骤，获得升序或降序的数组


public class Heap {
    public static void main(String []args){
        int []arr = {9,8,7,6,5...]]></description><category></category></item><item><title><![CDATA[快速排序]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82317600</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82317600</guid><author>lee9289</author><pubDate>Sun, 02 Sep 2018 18:06:54 +0800</pubDate><description><![CDATA[1. 选出一个基准元素
2. 把每个元素依次与基准元素比较，大于的放右边，小于的放左边，得到基于基准元素分割的两个数列
3. 采用递归的方法，把这两个数列重复上面的步骤，得到升序或者降序的数列
 


public class Kuaisu {

    public static void quickSort(int[] arr, int startIndex, int endIndex){
 ...]]></description><category></category></item><item><title><![CDATA[冒泡排序]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82317594</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82317594</guid><author>lee9289</author><pubDate>Sun, 02 Sep 2018 18:05:52 +0800</pubDate><description><![CDATA[分为两层：
第一层为控制循环次数，第二层控制交换


    public static void sort1(int[] array){
        int temp = 0;
        int count = 0;
        for(int i=0;i&amp;lt;array.length;i++){
            for(int j=0;j&amp;lt;array.length...]]></description><category></category></item><item><title><![CDATA[一段AIO代码]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82260299</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82260299</guid><author>lee9289</author><pubDate>Fri, 31 Aug 2018 18:06:52 +0800</pubDate><description><![CDATA[
import java.net.InetSocketAddress;
import java.nio.channels.AsynchronousChannelGroup;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.util.concurrent.ExecutorService;
import jav...]]></description><category></category></item><item><title><![CDATA[IO、NIO和AIO的区别]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82260267</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82260267</guid><author>lee9289</author><pubDate>Fri, 31 Aug 2018 18:04:22 +0800</pubDate><description><![CDATA[IO和NIO的区别：其本质就是阻塞和非阻塞的区别。

阻塞概念：应用程序在获取网络数据的时候，如果网络传输数据很慢，那么久一直等着，知道传输完毕为止。
非阻塞概念：应用程序直接可以获取已经准备就绪好的数据，无需等待。(从操作系统缓冲区中直接读取已经缓冲完毕的数据，不用阻塞等待数据缓冲完毕，可以在这段时间中做其他事)

同步和异步的区别：

同步：应用程序会直接参与IO读写操作哦，并且应用程序会直接...]]></description><category></category></item><item><title><![CDATA[java时间的一些处理方法]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82422008</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82422008</guid><author>lee9289</author><pubDate>Sun, 17 Dec 2017 22:39:54 +0800</pubDate><description><![CDATA[#### String转data ####
````
String time = &quot;2017-12-17 07:59:59&quot;;
SimpleDateFormat sdf = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);
Date dateTime = sdf.parse(time);
System.out.println(dateTime);
````
...]]></description><category></category></item><item><title><![CDATA[java基础-注解]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82422019</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82422019</guid><author>lee9289</author><pubDate>Mon, 04 Dec 2017 20:12:26 +0800</pubDate><description><![CDATA[### 注解基本概念 ###
#### 元数据 ####
元数据就是数据的数据。也就是说，元数据是描述数据的。就像数据表中的字段一样，每个字段描述了这个字段下的数据的含义。
元数据可以用于创建文档，跟踪代码中的依赖性，甚至执行基本编译时检查。许多元数据工具，如XDoclet，将这些功能添加到核心java语言中，暂时称为java编程功能的一部分。
一般来说，袁术的好处分为三类：文档编制，编译器检查和...]]></description><category></category></item><item><title><![CDATA[jsp基础语法]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82421978</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82421978</guid><author>lee9289</author><pubDate>Mon, 13 Nov 2017 23:04:48 +0800</pubDate><description><![CDATA[### jsp传统语法 ###

#### Declaration（声明） ####
- 基本语法
    - &amp;lt;%! %&amp;gt;
    - &amp;lt;%= xxx %&amp;gt;  把xxx内容输出出来
- 说明：在此声明的变量、方法都会被保留成唯一的一份，直到jsp程序停止执行

例如：
````
&amp;lt;%! 
int i;//全局变量，jsp初始化的时候就初始化了，只初始化一次
publ...]]></description><category></category></item><item><title><![CDATA[java基础-容器]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82422018</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82422018</guid><author>lee9289</author><pubDate>Thu, 09 Nov 2017 22:57:37 +0800</pubDate><description><![CDATA[### 容器的概念 ###
java api所提供的一系列类的实例，用于在程序中存放对象

### 容器api ###
- Collection接口：定义了存取一组对象的方法，其子接口Set和List分别定义了存储方式
    - Set中的数据对象没有顺序，且不可以重复。
    - List中的数据对象有顺序且可以重复
- Map接口定义了存储&quot;键(key)-值(value)映射对&quot;的方法
#...]]></description><category></category></item><item><title><![CDATA[java基础-异常]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82421980</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82421980</guid><author>lee9289</author><pubDate>Mon, 06 Nov 2017 23:42:22 +0800</pubDate><description><![CDATA[### java异常概念 ###
- java异常是java提供的用于处理程序中错误的一种机制
- 所谓错误是指在程序运行的过程中发生的一些异常事件（如：除0溢出，数组下标越界，所要读取的文件不存在）
- 设计良好的程序应该在异常发生时提供处理这些错误的方法，使得程序不会因为异常的发生而阻断或产生不可预见的结果。
- java程序的执行过程如出现异常时间，可以生成一个异常类对象，该异常对象封装了异...]]></description><category></category></item><item><title><![CDATA[java-正则表达式]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82421976</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82421976</guid><author>lee9289</author><pubDate>Mon, 06 Nov 2017 22:23:00 +0800</pubDate><description><![CDATA[ 把所有数字换成横线
````
print(&quot;abcd548421545afdf&quot;.replaceAll(&quot;\\d&quot;, &quot;-&quot;));
````
````
Pattern p = Pattern.compile(&quot;[a-z](3)&quot;);//匹配一个具有三个字符的字符串
````
&quot;.&quot;,&quot;*&quot;,&quot;+&quot;的含义
.:匹配一个字符
*：0个或多个
+:一个或多个
?:一个或没有]]></description><category></category></item><item><title><![CDATA[java-多线程]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82421979</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82421979</guid><author>lee9289</author><pubDate>Fri, 03 Nov 2017 23:56:18 +0800</pubDate><description><![CDATA[### 线程的基本概念 ###
线程：在一个程序中，主方法执行叫做进程
- 线程是一个程序内部的顺序控制流
- 线程和进程的区别
    - 每个进程都有独立的代码和数据空间（进程上下文），进程间的切换会有较大的开销
    - 线程可以看成是轻量级的进程，同一类线程共享代码和数据空间，每个线程有独立的运行栈和程序计数器（PC），线程切换的开销小
    - 多进程：在操作系统中能同时运行多个任务...]]></description><category></category></item><item><title><![CDATA[命令模式]]></title><link>https://blog.youkuaiyun.com/lee9289/article/details/82422116</link><guid>https://blog.youkuaiyun.com/lee9289/article/details/82422116</guid><author>lee9289</author><pubDate>Wed, 20 Sep 2017 17:27:21 +0800</pubDate><description><![CDATA[类结构commandCommand---------------------------命令接口Computer---------------------------电脑实现类ComputerOffCommond----------关闭电脑动作类ComputerOnCommond-----------开启电脑动作类ControlPanel------------------------控制器初始化...]]></description><category></category></item></channel></rss>