<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yanllele的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yanllele</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yanllele]]></copyright><item><title><![CDATA[java多线程-------线程池]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/101106668</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/101106668</guid><author>yanllele</author><pubDate>Sat, 21 Sep 2019 17:17:27 +0800</pubDate><description><![CDATA[Java线程池
使用线程池的原因：
1.减少了创建和销毁线程的次数，每个工作线程都可以被重复利用，可执行多个任务;
2.可以根据系统的承受能力，调整线程池中工作线线程的数目，防止因为因为消耗过多的内存，而把服务器累趴下(每个线程需要大约1MB内存，线程开的越多，消耗的内存也就越大，最后死机)。
线程池的优点：
1.降低资源消耗  通过重复利用已经创建的线程降低线程创建和销毁造成的资源消耗；
2.提...]]></description><category></category></item><item><title><![CDATA[多线程-------生产者消费者模型]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/101067810</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/101067810</guid><author>yanllele</author><pubDate>Fri, 20 Sep 2019 18:34:27 +0800</pubDate><description><![CDATA[生产者消费者模型
1.简介：
生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯，而通过阻塞队列来进行通讯，所以生产者生产完数据之后不用等待消费者处理，直接扔给阻塞队列，消费者不找生产者要数据，而是直接从阻塞队列里取，阻塞队列就相当于一个缓冲区，平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的
/**
 * @Author Y...]]></description><category></category></item><item><title><![CDATA[多线程]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/100529906</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/100529906</guid><author>yanllele</author><pubDate>Tue, 03 Sep 2019 23:48:53 +0800</pubDate><description><![CDATA[线程与进程
进程：操作系统中一个程序的执行周期称为一个进程。（进程是指一段正在执行的程序）
线程：一个程序同时执行多个任务。通常，每一个任务就称为一个线程。与进程相比较，线程更"轻			      量级"，创建、撤 销一个线程比启动一个新进程开销要小的多。没有进程就没有线程，进程一旦终止，其内的线程也将不复存在。（线程，是指正在执行的一个指点令序列。在java平台上是指从一个线程对象的start(...]]></description><category></category></item><item><title><![CDATA[Java五层架构实现用户查询]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/100109435</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/100109435</guid><author>yanllele</author><pubDate>Tue, 27 Aug 2019 22:14:18 +0800</pubDate><description><![CDATA[Java五层架构实现用户查询

数据库创建

create database jsj;

use jsj;

create table user(
	id int not null primary key auto_increment,
    username varchar(20) not null,
    password varchar(40) not null,
    useradd...]]></description><category></category></item><item><title><![CDATA[JavaWeb——Servlet]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/99887343</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/99887343</guid><author>yanllele</author><pubDate>Tue, 20 Aug 2019 22:22:46 +0800</pubDate><description><![CDATA[JavaWeb——Servlet
概念     （server applet）
运行在服务器端的小程序
Servlet就是一个接口，定义了Java类被浏览器访问到（Tomcat识别）的规则
将来我们自定义一个类，实现Servlet接口，覆写方法

1.步骤
1)创建JavaEE项目，如果使用注解，选择Servlet3.0以上，可以不创建web.xml.若不使用注解，需要创建web.xml文件
2）...]]></description><category></category></item><item><title><![CDATA[验证密码合格程序]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/98124157</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/98124157</guid><author>yanllele</author><pubDate>Fri, 02 Aug 2019 00:14:56 +0800</pubDate><description><![CDATA[验证密码合格程序
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出：OK，否则输出NG
示例1
输入
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000
输出
OK
NG
NG
OK
import java.u...]]></description><category></category></item><item><title><![CDATA[判断一个数是否为守形数]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/98123028</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/98123028</guid><author>yanllele</author><pubDate>Fri, 02 Aug 2019 00:07:49 +0800</pubDate><description><![CDATA[判断一个数是否为守形数守形数
什么是守形数？
守形数就是它的低位部分等于它本身
比如25的平方是625 低位部分是25 因此25就是一个守形数
思路描述：
如果n是一个一位数  那么当(n^2- n)%10 == 0时  他就是一个守形数
如果n不是一个一位数  那么当(n^2- n)%100 == 0时  他就是一个守形数


import java.util.Scanner;

public ...]]></description><category></category></item><item><title><![CDATA[每日小题——Day_2]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/97015283</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/97015283</guid><author>yanllele</author><pubDate>Tue, 23 Jul 2019 17:53:18 +0800</pubDate><description><![CDATA[每日小题——Day_2
1、汽水瓶
import java.util.Scanner;
/*


汽水瓶


有这样一道智力题：“某商店规定：三个空汽水瓶可以换一瓶汽水。


小张手上有十个空汽水瓶，她最多可以换多少瓶汽水喝？”


答案是5瓶，方法如下：先用9个空瓶子换3瓶汽水，喝掉3瓶满的，喝完以后4个空瓶子，用3个再换一瓶，喝掉这瓶满的，这时候剩2个空瓶子。


然后你让老板先借给你一瓶汽水...]]></description><category></category></item><item><title><![CDATA[每日小题—Day_1]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/97005301</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/97005301</guid><author>yanllele</author><pubDate>Tue, 23 Jul 2019 16:26:37 +0800</pubDate><description><![CDATA[每日小题—Day_1
1、统计回文
/*


回文统计


判断回文：首先将用户输入的字符串变成一个个的char，


一个指针从前往后遍历的同时另一个指针从后往前遍历


当发现字符不相等时说明不是回文


找插入的位置：知道如何判断回文以后我们只需要将第二个字符串从第一个字符串的


第一个位置开始尝试插入，直到判断回文的方法返回true时即找到插入位置




*/
public class...]]></description><category></category></item><item><title><![CDATA[二叉树——链式存储]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/96204048</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/96204048</guid><author>yanllele</author><pubDate>Tue, 16 Jul 2019 23:25:20 +0800</pubDate><description><![CDATA[二叉树链式存储
链式存储
二叉树的链式存储结构是指，用链表来表示一棵二叉树，即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组成，数据域和左右指针域，左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。链式结构又分为二叉链和三叉链，


一般使用二叉链表
package com.bit.BinaryTree;
import java.util.LinkedList;
...]]></description><category></category></item><item><title><![CDATA[小题目——交换数组中的数字]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/95936576</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/95936576</guid><author>yanllele</author><pubDate>Sun, 14 Jul 2019 23:09:25 +0800</pubDate><description><![CDATA[交换数组中的数字
//交换数组中的两个数字
方法1：
public class Exchange {
public int[] exchangeAB(int[] AB) {
AB[0] = AB[0] + AB[1];
AB[1] = AB[0] - AB[1];
AB[0] = AB[0] - AB[1];
return AB;
}
}

...]]></description><category></category></item><item><title><![CDATA[小题目——给出n阶方阵里所有的数，求方阵里所有数的和]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/95936497</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/95936497</guid><author>yanllele</author><pubDate>Sun, 14 Jul 2019 23:01:32 +0800</pubDate><description><![CDATA[给出n阶方阵里所有的数，求方阵里所有数的和
import java.util.Scanner;
//给出n阶方阵里所有的数，求方阵里所有数的和
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int ans ...]]></description><category></category></item><item><title><![CDATA[小题目——求和]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/95936112</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/95936112</guid><author>yanllele</author><pubDate>Sun, 14 Jul 2019 22:59:35 +0800</pubDate><description><![CDATA[求a+b的和
import java.util.Scanner;
//求a+b的和
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {// 注意，如果输入是多个测试用例，请通过while循环处理多个测试用...]]></description><category></category></item><item><title><![CDATA[小题目：阶乘末尾0的个数]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/95263065</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/95263065</guid><author>yanllele</author><pubDate>Wed, 10 Jul 2019 01:02:22 +0800</pubDate><description><![CDATA[阶乘末尾0的个数
问题可转换为含有5的因子
每有一个5，阶乘末尾就会多出来一个0
这样a/5就能统计出第一层5的个数，并依次处理，就能统计出所有5的个数，也就能统计出阶乘末尾0的个数
（随着a的增加，显然含有2的因子比含有5的因子要多，因此只需要统计包含5因子的个数即可）
public class Main {
public static void main(String[] args) {
Sc...]]></description><category></category></item><item><title><![CDATA[小题目：数字颠倒]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/95262895</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/95262895</guid><author>yanllele</author><pubDate>Wed, 10 Jul 2019 00:54:31 +0800</pubDate><description><![CDATA[数字颠倒
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
StringBuffer sb = new StringBuffer(str);
sb.reverse();
System.out.println(sb.toString());...]]></description><category></category></item><item><title><![CDATA[顺序二叉树]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/95262528</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/95262528</guid><author>yanllele</author><pubDate>Wed, 10 Jul 2019 00:52:58 +0800</pubDate><description><![CDATA[顺序二叉树
public interface IHeap {
//从每颗子树的根节点开始调整 调整的长度为len
void AdjustDown(int root,int len);
//初始化建立大根堆
public void initHeap(int[] array);
//向上调整，从孩子节点开始调整
void AdjustUp(int child,int len);
// 插入 item ...]]></description><category></category></item><item><title><![CDATA[java I/O实现文件的拷贝]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/90695428</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/90695428</guid><author>yanllele</author><pubDate>Thu, 30 May 2019 13:22:10 +0800</pubDate><description><![CDATA[package com.bit.File;
import java.io.*;
public class TestFileCopy {
//使用字节流实现文件的复制
public static void Copy1(String srcFile,String decFile){
//校验参数合法性
if(srcFilenull || decFilenull){
throw new IllegalA...]]></description><category></category></item><item><title><![CDATA[反射小题目]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/90478118</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/90478118</guid><author>yanllele</author><pubDate>Thu, 23 May 2019 12:12:23 +0800</pubDate><description><![CDATA[题目描述：通过反射赋值源对象中的属性值到目标对象的具有相同类型和名称的属性
import java.lang.reflect.Field;
public class BeanUtils {
public static void copy(Object source,Object target){
//1.参数校验
if(source == null){
throw new IllegalArgum...]]></description><category></category></item><item><title><![CDATA[反射——简单工厂模式]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/90445616</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/90445616</guid><author>yanllele</author><pubDate>Wed, 22 May 2019 15:54:43 +0800</pubDate><description><![CDATA[传统工厂模式在实际开发中根本用不到，问题就在于new。每增加一个接口的子类就要修改工厂类，如果要解决关键字new带来的问题，最好的办法就是通过反射来处理，因为Class类可以使用newInstance()实例化对象，同时Class.forname()能够接收类名称
案例一：水果工厂
package com.bit.reflect;
import static java.lang.Class.for...]]></description><category></category></item><item><title><![CDATA[排序]]></title><link>https://blog.youkuaiyun.com/yanllele/article/details/90292671</link><guid>https://blog.youkuaiyun.com/yanllele/article/details/90292671</guid><author>yanllele</author><pubDate>Fri, 17 May 2019 14:33:10 +0800</pubDate><description><![CDATA[直接插入排序


元素集合越接近有序，直接插入排序算法的时间效率越高
时间复杂度：O(N^2)
空间复杂度：O(1)，它是一种稳定的排序算法
稳定性：稳定
2、 希尔排序

1.希尔排序是对直接插入排序的优化。
2. 当gap &gt; 1时都是预排序，目的是让数组更接近于有序。当gap == 1时，数组已经接近有序的了，这样就
会很快。这样整体而言，可以达到优化的效果。我们实现后可以进行性能...]]></description><category></category></item></channel></rss>