<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[babo18的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/babo18</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; babo18]]></copyright><item><title><![CDATA[Java学习 JDBC]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114935146</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114935146</guid><author>babo18</author><pubDate>Mon, 13 Dec 2021 14:35:48 +0800</pubDate><description><![CDATA[访问mysql数据库进行学习。

1. 为项目导入mysql-jdbc的jar包
]]></description><category></category></item><item><title><![CDATA[Java项目开发流程]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/121660168</link><guid>https://blog.youkuaiyun.com/babo18/article/details/121660168</guid><author>babo18</author><pubDate>Wed, 01 Dec 2021 17:32:54 +0800</pubDate><description><![CDATA[1. 需求分析

    将需求拆分成三类，前端展示类需求、交互类需求和后台功能类需求。

    前端展示类需求指页面上展示出来的需求，不需要和服务端交互的。

    交互类需求指通过POST、GET等http协议，与服务端进行同步或异步数据交互的需求。

    后台功能类需求指支撑后台运行的数据管理。

2. 表结构设计

    主要包括建表、主键和索引设置、表与表的关系、表与页面的关系。

3. 代码构建
...]]></description><category></category></item><item><title><![CDATA[MySQL 查看数据库和表空间大小及碎片处理]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/121167726</link><guid>https://blog.youkuaiyun.com/babo18/article/details/121167726</guid><author>babo18</author><pubDate>Fri, 05 Nov 2021 18:00:43 +0800</pubDate><description><![CDATA[1. 查看所有数据库空间大小


  SELECT table_schema as '数据库',
		 sum(table_rows) as '记录数',
		 sum(truncate(data_length/1024/1024, 2)) as '数据容量(MB)',
		 sum(truncate(index_length/1024/1024, 2)) as '索引容量(MB)'
	FROM information_schema.tables
GROUP BY table_schema
ORDER BY]]></description><category></category></item><item><title><![CDATA[Java框架 Sping AOP配置]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/120551179</link><guid>https://blog.youkuaiyun.com/babo18/article/details/120551179</guid><author>babo18</author><pubDate>Tue, 12 Oct 2021 15:18:40 +0800</pubDate><description><![CDATA[AOP即 Aspect Oriental Program 面向切面编程。

在面向切面编程的思想里面，把功能分为核心业务功能和辅助功能。所谓的核心业务，比如登陆，增加数据，删除数据都叫核心业务。所谓的辅助功能，比如性能统计，日志，事务管理等等。辅助功能在Spring的面向切面编程AOP思想里，即被定义为切面功能。
在面向切面编程AOP的思想里面，核心业务功能和切面功能分别独立进行开发，然后把切面功能和核心业务功能"编织"在一起，这就叫AOP。

一、XML方式配置AOP



二、注解方式配置AOP
...]]></description><category></category></item><item><title><![CDATA[Java框架 Spring IOC和DI]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/120642313</link><guid>https://blog.youkuaiyun.com/babo18/article/details/120642313</guid><author>babo18</author><pubDate>Mon, 11 Oct 2021 18:37:47 +0800</pubDate><description><![CDATA[Spring是一个基于IOC和AOP的Java框架。
IOC，Inversion Of Control，反转控制，是Spring的基础。简单说就是创建对象由以前的自己new构造方法来调用，变成了交由Spring创建对象。
DI，Dependency Inject，依赖注入。简单地说就是拿到的对象的属性，已经被注入好相关值了，直接使用即可。

Spring的作用：

一是可以在提前的声明一些类，然后如果在编程中用到这些类的对象，就可以直接通过相应的方式直接拿到该类的对象，而不用自己去new，这样做可以让Spr]]></description><category></category></item><item><title><![CDATA[Java Spring之AOP在XML中的配置方法]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/120549023</link><guid>https://blog.youkuaiyun.com/babo18/article/details/120549023</guid><author>babo18</author><pubDate>Wed, 29 Sep 2021 15:08:47 +0800</pubDate><description><![CDATA[AOP在XML中的配置方法


&lt;aop:config&gt;
        &lt;aop:pointcut id="loggerCutpoint"
            expression = "execution(* com.how2java.service.ProductService.*(..)) "/&gt;
             
        &lt;aop:aspect id="logAspect" ref="loggerAspect"&gt;
            &]]></description><category></category></item><item><title><![CDATA[Java 代码发版]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/119106325</link><guid>https://blog.youkuaiyun.com/babo18/article/details/119106325</guid><author>babo18</author><pubDate>Mon, 26 Jul 2021 16:54:05 +0800</pubDate><description><![CDATA[一、Maven项目打jar包

1. 在项目目录下按住shift+鼠标右键，点击【在此处打开命令窗口】，进入如图所示画面。或者cmd进入到目录下；

2.找到项目中的Application.java文件，复制mvn clean *** 代码并粘贴到项目目录下，回车；





3. 刷新target文件夹，得到jar包。

二、jar包上次服务器

1. 打开Xftp，连接对应服务器；

2. 进入jar包所在目录；

3. 上传target里新的jar包到该目录下，覆盖掉原jar包。这里最好先把原来的..]]></description><category></category></item><item><title><![CDATA[Java学习 线程池]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114933789</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114933789</guid><author>babo18</author><pubDate>Wed, 17 Mar 2021 15:43:40 +0800</pubDate><description><![CDATA[待补充
]]></description><category></category></item><item><title><![CDATA[Java学习 线程同步]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114632863</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114632863</guid><author>babo18</author><pubDate>Sun, 14 Mar 2021 21:14:37 +0800</pubDate><description><![CDATA[通过关键字synchronized或使用lock对象都可以达到线程同步的效果。

一、关键字synchronized

synchronized可以修饰对象、方法、类。

1. synchronized修饰对象时，表示当前线程独占对象，这时如果有其它线程试图占用该对象时，就会等待，直到当前线程释放对该对象的占用。

释放同步对象的方式：synchronized 块自然结束，或者有异常抛出。

2. synchronized修饰对象方法时，同步对象是当前实例，也就是this。修饰类方法即静态方法时，同步对象就]]></description><category></category></item><item><title><![CDATA[Java学习 一个线程的生命周期]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114803705</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114803705</guid><author>babo18</author><pubDate>Sun, 14 Mar 2021 21:07:39 +0800</pubDate><description><![CDATA[线程是一个动态执行的过程，它也有一个从产生到死亡的过程。下图显示了一个线程完整的生命周期。



新建状态:

	使用new关键字和Thread类或其子类建立一个线程对象后，该线程对象就处于新建状态。它保持这个状态直到程序start()这个线程。
	
	就绪状态:
	当线程对象调用了start()方法之后，该线程就进入就绪状态。就绪状态的线程处于就绪队列中，要等待JVM里线程调度器的调度。
	
	运行状态:
	如果就绪状态的线程获取 CPU 资源，就可以执行run()，此时线程便处于运行状态。...]]></description><category></category></item><item><title><![CDATA[Java学习 多线程中start方法和run方法的区别]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114533598</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114533598</guid><author>babo18</author><pubDate>Mon, 08 Mar 2021 17:46:30 +0800</pubDate><description><![CDATA[本文参考https://www.cnblogs.com/dolphin0520/p/3913517.html并做了一点改进。

文中根据输出结果可以得出以下结论：

　　1）thread1和thread2的线程ID不同，thread2和主线程ID相同，说明通过run方法调用并不会创建新的线程，而是在主线程中直接运行run方法，跟普通的方法调用没有任何区别；

　　2）虽然thread1的start方法调用在thread2的run方法前面调用，但是先输出的是thread2的run方法调用的相关信息，说明新线.]]></description><category></category></item><item><title><![CDATA[Java学习 多线程的创建及常用方法]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114363478</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114363478</guid><author>babo18</author><pubDate>Mon, 08 Mar 2021 15:21:27 +0800</pubDate><description><![CDATA[二、常用方法

1.当前线程暂停

Thread.sleep(1000); 表示当前线程暂停1000毫秒 ，其他线程不受影响
Thread.sleep(1000); 会抛出InterruptedException 中断异常，因为当前线程sleep的时候，有可能被停止，这时就会抛出 InterruptedException

2.加入到当前线程中

t1.join(); t1线程加入到main线程中来，只有t1线程运行结束，才会继续往下走

3. 线程优先级

t1.setPriority(Threa...]]></description><category></category></item><item><title><![CDATA[Java学习 LinkedList]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114394492</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114394492</guid><author>babo18</author><pubDate>Fri, 05 Mar 2021 14:52:46 +0800</pubDate><description><![CDATA[一、简介

1. LinkedList类是双向链表，链表中的每个节点都包含了对前一个和后一个元素的引用。实现了Deque（双端队列），Queue（队列）和Stack（栈）。

2. LinkedList的操作不是线程安全的，建议在单线程环境下使用。

3. 双向链表添加元素只是新增一个节点，延长链表，所以LinkedList不存在容量不足的问题。

4. 常用方法同ArrayList。

5.序列分先进先出FIFO,先进后出FILO。FIFO在Java中又叫Queue（队列），FILO在Java中又叫St.]]></description><category></category></item><item><title><![CDATA[Java学习 ArrayList]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114262447</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114262447</guid><author>babo18</author><pubDate>Thu, 04 Mar 2021 18:19:29 +0800</pubDate><description><![CDATA[一、如果要存放多个对象，可以使用数组，但是数组有局限性。比如声明长度是10的数组，不用的数组就浪费了，超过10的个数，又放不下。

为了解决数组的局限性，引入容器类的概念。 最常见的容器类就是ArrayList。容器的容量"capacity"会随着对象的增加，自动增长只需要不断往容器里增加英雄即可，不用担心会出现数组的边界问题。


...]]></description><category></category></item><item><title><![CDATA[Java学习 泛型]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114265501</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114265501</guid><author>babo18</author><pubDate>Thu, 04 Mar 2021 17:53:41 +0800</pubDate><description><![CDATA[不指定泛型的容器，可以存放任何类型的元素，指定了泛型的容器，只能存放指定类型的元素以及其子类。

为了不使编译器出现警告，需要前后都使用泛型，像这样：List&lt;Hero&gt; genericheros = new ArrayList&lt;Hero&gt;();

不过JDK7提供了一个可以略微减少代码量的泛型简写方式，List&lt;Hero&gt; genericheros2 = new ArrayList&lt;&gt;(); 后面的泛型可以用&lt;&gt;来代替，聊胜于无吧
...]]></description><category></category></item><item><title><![CDATA[Java学习 文件对象]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114138885</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114138885</guid><author>babo18</author><pubDate>Fri, 26 Feb 2021 20:11:08 +0800</pubDate><description><![CDATA[一、文件创建及常用方法

1.可以分别用绝对路径和相对路径来创建文件对象，如下代码所示。

2. 第2行只是创建了一个文件对象，并没有创建文件，创建文件需用第10行、12行或13行。

3. f.delete()方法立即删除，由于f.deleteOnExit()方法在JVM结束的时候才执行，所以第19行执行结果依然是true。


public static void main(String[] args) throws IOException {
	File f = new File("D:\\test.]]></description><category></category></item><item><title><![CDATA[Java学习 日期类]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114052869</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114052869</guid><author>babo18</author><pubDate>Thu, 25 Feb 2021 12:24:29 +0800</pubDate><description><![CDATA[一、Date类

Date 类提供两个构造方法来实例化 Date 对象，分别是Date()方法和Date(long l)方法。

getTime() 方法得到一个long型的整数，该整数代表从1970.1.1 08:00:00:000开始，每经历一毫秒，增加1。

System.currentTimeMillis()方法获取当前系统时间的毫秒数。

二、SimpleDateFormat类

SimpleDateFormat类用于日期格式化。

三、Calendar类


import java.text..]]></description><category></category></item><item><title><![CDATA[生成随机数]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/114047133</link><guid>https://blog.youkuaiyun.com/babo18/article/details/114047133</guid><author>babo18</author><pubDate>Thu, 25 Feb 2021 00:03:04 +0800</pubDate><description><![CDATA[一、Random类的nextInt()方法

用Random类的nextInt()方法生成随机数，import java.util.Random;

1、不带参数的nextInt()会生成所有有效的整数（包含正数，负数，0）；

2、带参的nextInt(int x)则会生成一个范围在0~x（不包含x）的任意正整数。

二、Math.random()方法

random() 方法用于返回一个double类型的随机数，随机数范围为 [0.0, 1.0)，左闭右开。

三、生成一个任意长度的随机字符串，随机字符]]></description><category></category></item><item><title><![CDATA[选择法排序和冒泡法排序]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/113971957</link><guid>https://blog.youkuaiyun.com/babo18/article/details/113971957</guid><author>babo18</author><pubDate>Tue, 23 Feb 2021 11:00:22 +0800</pubDate><description><![CDATA[一、思路

1. 选择法排序

  1. 把第一位和其他所有位比较，只要比第一位小的，就换到第一个位置来，比较数组长度-1次后，第一位就是最小的
      2. 再从第二位和剩余的其他所有位进行比较，只要比第二位小，就换到第二个位置来，比较完后，第二位就是第二小的
   3. 以此类推




			选择法排序
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
		...]]></description><category></category></item><item><title><![CDATA[StringBuffer和StringBuilder]]></title><link>https://blog.youkuaiyun.com/babo18/article/details/48947333</link><guid>https://blog.youkuaiyun.com/babo18/article/details/48947333</guid><author>babo18</author><pubDate>Wed, 07 Oct 2015 10:45:12 +0800</pubDate><description><![CDATA[StringBuffer和StringBuilder都是可变字符串类型。
StringBuffer是线程安全的，而StringBuilder是非线程安全的；
StringBuffer效率要比StringBuilder低。]]></description><category></category></item></channel></rss>