<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Subuprogrammer的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Subuprogrammer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Subuprogrammer]]></copyright><item><title><![CDATA[vue - 自定义指令实现select下拉列表滚动加载(1)]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/126572380</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/126572380</guid><author>Subuprogrammer</author><pubDate>Wed, 31 Aug 2022 10:47:09 +0800</pubDate><description><![CDATA[vue自定义指令，下拉列表滚动加载，elementui]]></description><category></category></item><item><title><![CDATA[Element UI - v-infinite-scroll无限滚动组件]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/126348736</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/126348736</guid><author>Subuprogrammer</author><pubDate>Wed, 17 Aug 2022 18:20:29 +0800</pubDate><description><![CDATA[InfiniteScroll 无限滚动]]></description><category></category></item><item><title><![CDATA[Gitlab - ssh key配置]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/126348961</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/126348961</guid><author>Subuprogrammer</author><pubDate>Mon, 15 Aug 2022 16:15:40 +0800</pubDate><description><![CDATA[gitlab ssh key配置]]></description><category></category></item><item><title><![CDATA[JS - Duration时间戳间隔转换成X天X时X分X秒X毫秒]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/126305960</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/126305960</guid><author>Subuprogrammer</author><pubDate>Fri, 12 Aug 2022 16:02:27 +0800</pubDate><description><![CDATA[JS - 时间戳Duration转换日期格式]]></description><category></category></item><item><title><![CDATA[自动化单元测试框架unittest的使用步骤]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115350412</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115350412</guid><author>Subuprogrammer</author><pubDate>Wed, 31 Mar 2021 23:11:53 +0800</pubDate><description><![CDATA[1、  unittest是python自带的单元测试框架，用来管理自动化测试用例
（1）框架解析
1、TestCase：测试用例、测试方法，以test_开头，否则不会执行
2、TestFixture测试固件：运行前后数据的处理，setUp()和tearDown()方法
3、TestSuite测试套件：通过addTest()的手动方法，将测试用例放在测试套件中，批量执行测试方法；也可以使用TestLoader自动添加测试用例到测试套件中
4、TextTestRunner：执行测试方法，把测试套件跑起来
5、T]]></description><category></category></item><item><title><![CDATA[单元测试]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115337894</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115337894</guid><author>Subuprogrammer</author><pubDate>Tue, 30 Mar 2021 23:10:28 +0800</pubDate><description><![CDATA[一、Junit框架注解
@BeforClass：所有测试用例之前执行一次，用static void修饰
@Before：在每个测试方法之前执行一次，setUp()方法，用来做准备工作
@Test：测试方法
@After：在每个测试方法之后执行一次，用tearDown()方法，用来释放资源
@AfterClass：所有测试用例之后执行一次，用static void修饰
@Ignore：忽略该测试用例的执行
二、在Idea中使用Junit框架进行单元测试
（1）Maven项目，在pow.xml中引入Junit的]]></description><category></category></item><item><title><![CDATA[压缩字符串]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115251855</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115251855</guid><author>Subuprogrammer</author><pubDate>Fri, 26 Mar 2021 18:44:35 +0800</pubDate><description><![CDATA[一、问题描述
给定一个字符串进行压缩
例如：(1)输入：aaabbccccaa
输出：a3b2c4a2
(2)输入：aabbcde
输出：aabbcde
这个压缩后是a2b2c1d1e1,它的长度大于压缩之前的，所以就输出压缩之前的字符串。
二、思路
这里用栈来模拟这个过程：栈中没有元素或者栈顶元素和当前元素相等，就入栈；否则就把栈中元素个数记录下来，再把栈顶元素和元素个数拼接，清空栈。
三、代码
public class Solution {
    public static void main(Str]]></description><category></category></item><item><title><![CDATA[字符串最长升序子序列]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115251610</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115251610</guid><author>Subuprogrammer</author><pubDate>Fri, 26 Mar 2021 17:36:42 +0800</pubDate><description><![CDATA[一、题目描述
给定一个字符串（只包含纯大写字母或者小写字母），在这个字符串中找出最长的升序子序列。
例如：
输入：abcdeababca
输出：abcde
二、解法
这个思路是面试官给的：遍历这个字符串，先把所有的升序子字符串放进链表中，最后遍历链表，找出最小的。
三、代码
public class MaxSort {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
       ]]></description><category></category></item><item><title><![CDATA[单元测试框架：unittest]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115058743</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/115058743</guid><author>Subuprogrammer</author><pubDate>Sun, 21 Mar 2021 23:21:08 +0800</pubDate><description><![CDATA[在学习unittest框架的测试套件出现了这样的错误：

发现是路径的问题：
import unittest
#添加测试套件
#1、确定测试用例文件夹的路径
#2、将测试用例添加到测试套件中

#执行测试用例
#1、使用unittest自带的执行方式 unittest.TextTestRunner()
#2、使用第三方插件执行并且可以生成测试报告

#确定测试用例文件路径
test_dir="./test_unittest"
**#改路径**
test_dir="E:\PyCharm\woekbench\\]]></description><category></category></item><item><title><![CDATA[排序算法（2）]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107877943</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107877943</guid><author>Subuprogrammer</author><pubDate>Sat, 08 Aug 2020 12:49:39 +0800</pubDate><description><![CDATA[一、快速排序

代码实现：
//快速排序
    public static void fastSort(int[] arr){
        //1、选取基准值
        //2、让left从左往右找比基准值大的，right从右向左找比基准值小的
        //3、再针对两个区间递归的进行之前的操作
        quickHelper(arr,0,arr.length-1);
    }

    public static void quickHelper(int[] arr, int]]></description><category></category></item><item><title><![CDATA[排序算法（1）]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107865388</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107865388</guid><author>Subuprogrammer</author><pubDate>Fri, 07 Aug 2020 20:44:32 +0800</pubDate><description><![CDATA[一、直接插入排序

//直接插入排序
    public static void insert(int[] arr) {
        for (int bound = 1; bound &lt; arr.length; bound++) {
            //把bound位置的元素保存下来，插到前面已经排好序的区间
            int tmp = arr[bound];
            int j=bound-1;
            for (; j &gt;=0;]]></description><category></category></item><item><title><![CDATA[数据结构-堆Heap]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107863776</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107863776</guid><author>Subuprogrammer</author><pubDate>Fri, 07 Aug 2020 16:03:06 +0800</pubDate><description><![CDATA[一、堆的概念
堆逻辑上是一颗完全二叉树；
堆物理存储在数组中；
满足任意节点的值大于其子树的节点值称为大堆；任意节点的值小于其子树节点的值称为小堆；
堆的作用是：快速找到集合中的最值。

二、建堆、向下调整
下面我们给出一个数组，这个数组逻辑上可以看做一颗完全二叉树，但是还不是一个堆，现在我们通过算法，把它构建成一个堆。根节点左右子树不是堆，我们怎么调整呢？这里我们从倒数的第一个非叶子节点的子树开始调整，一直调整到根节点的树，就可以调整成堆。（大堆为例）
int[] arr={1,5,3,8,7,6}

调]]></description><category></category></item><item><title><![CDATA[优先级队列]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107862638</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107862638</guid><author>Subuprogrammer</author><pubDate>Fri, 07 Aug 2020 15:19:41 +0800</pubDate><description><![CDATA[一、什么叫做优先级？
首先队列的特性是“先进先出”，优先级队列是根据元素或者说节点的优先级进行处理，比如说在我们使用手机打游戏的时候，这时候有来电，那么系统就会优先处理来电。那么优先级队列，就是根据优先级堆对象进行操作和处理。
二、

三、优先级队列有很多实现方式，这里我们用堆来进行实现（这里的优先级我们用元素大小来进行表示）
基本操作：
（1）入队列
1、先把要插入的元素放在堆的最后一个位置，堆是用数组实现的，那么就是尾插到数组；
2、从该位置开始进行向上调整。

（2） 出队列
1、先将0号位置的元素保]]></description><category></category></item><item><title><![CDATA[二叉树-常见题目]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107857415</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107857415</guid><author>Subuprogrammer</author><pubDate>Fri, 07 Aug 2020 11:12:00 +0800</pubDate><description><![CDATA[一、给定一个二叉树，找到该树中两个指定节点的最近公共祖先
百度百科中最近公共祖先的定义为：“对于有根树 T 的两个结点 p、q，最近公共祖先表示为一个结点 x，满足 x 是 p、q 的祖先且 x 的深度尽可能大（一个节点也可以是它自己的祖先）。

如上图，D和E的最近公共祖先就是B，G和F的最近公共祖先就是E，（一个节点也可以是自己的祖先）
//这个变量是最近公共节点
    private TreeNode Lac = null;

    //判断公共祖先
    public TreeNode low]]></description><category></category></item><item><title><![CDATA[二叉树-树的遍历（非递归）]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107845649</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107845649</guid><author>Subuprogrammer</author><pubDate>Fri, 07 Aug 2020 10:41:26 +0800</pubDate><description><![CDATA[一、层序遍历
//层序遍历
        public static void levelOrder(Node root){
            if(root==null){
                return;
            }
            //用队列来模拟
            Queue&lt;Node&gt; queue=new LinkedList&lt;&gt;();
            //先把根节点入队列
            queue.of]]></description><category></category></item><item><title><![CDATA[二叉树-判断两棵树是否相同]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107844035</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107844035</guid><author>Subuprogrammer</author><pubDate>Thu, 06 Aug 2020 17:15:19 +0800</pubDate><description><![CDATA[一、怎样是两棵树相同
值相同，树的结构相同

二、递归实现
//检查两棵树是否相同
    //值相同、树的结构相同
    public static boolean isSameTree(Node p,Node q){
        if(p==null&amp;&amp;q==null){
            return true;
        }
        if(p==null||q==null){
            return false;
        }
     ]]></description><category></category></item><item><title><![CDATA[二叉树的基本操作]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107841941</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107841941</guid><author>Subuprogrammer</author><pubDate>Thu, 06 Aug 2020 15:53:12 +0800</pubDate><description><![CDATA[以下是关于二叉树的基本操作（递归实现）
1、求二叉树的总节点个数
2、求叶子节点个数
3、求第K层节点个数
4、求二叉树的高度
5、查找给定val所在的节点
//求树的节点个数
    public static int sumNode(Node root) {
        if (root == null) {
            return 0;
        }
        return 1 + sumNode(root.left) + sumNode(root.right);
   ]]></description><category></category></item><item><title><![CDATA[Java-检查括号合法性]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107838593</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107838593</guid><author>Subuprogrammer</author><pubDate>Thu, 06 Aug 2020 14:28:40 +0800</pubDate><description><![CDATA[一、检查括号的合法性

import java.util.Stack;

/**
 * 检查括号是否匹配
 */
public class StackQueueInterview {
    public static boolean isVaild(String str){
        //先判断字符串是否为空
        if(str==null){
            return true;
        }
        //是左括号，入栈
        //是右括号，取栈顶元素]]></description><category></category></item><item><title><![CDATA[数据结构-队列]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107814771</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107814771</guid><author>Subuprogrammer</author><pubDate>Wed, 05 Aug 2020 14:38:06 +0800</pubDate><description><![CDATA[一、队列的特点
先进先出

二、用顺序表实现队列
//用顺序表实现队列 （循环队列）

    //定义一个head头和一个尾tail
public class MyQueue2 {
    public int[] array=new int[100];
    public int size;

    public int head=0;
    public int tail=0;

    //入队列（从顺序表尾端进行插入）
    public void offer(int val){
    ]]></description><category></category></item><item><title><![CDATA[数据结构-栈]]></title><link>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107814483</link><guid>https://blog.youkuaiyun.com/Subuprogrammer/article/details/107814483</guid><author>Subuprogrammer</author><pubDate>Wed, 05 Aug 2020 14:30:05 +0800</pubDate><description><![CDATA[一、栈的特点
先进后出

二、用顺序表实现栈
//顺序表表尾进行插入删除操作
public class myStack {
    int[] array = new int[100];
    int size = 0;//记录栈中的元素个数

    //入栈
    public void push(int value) {
        //栈满了的话，就不能再插入元素了
        if (size == array.length) {
            return;
       ]]></description><category></category></item></channel></rss>