IDEA已有maven插件但mvn出错

mvn命令找不到是因为maven环境变量未配置,因此需配置环境变量。

1.找到IDEA下的maven位置

例如:D:\IntelliJ IDEA 2019.3.3\plugins\maven\lib\maven3

2.配置环境变量

(1)右键此电脑属性

(2)点击高级系统设置

阅读更多

GitHub下载速度太慢的解决方式

一、修改host文件

1.访问https://www.ipaddress.com/。

2.查询github.comgithub.global.ssl.fastly.net的对应ip地址。

3.进入目录C:\Windows\System32\drivers\etc,以管理员权限打开hosts文件。

4.将查询到的ip地址加入hosts文件。
例如:

1
2
140.82.112.4        github.com
199.232.69.194 github.global.ssl.fastly.net
阅读更多

桶排序问题与解决

问题描述

看到书上的案例图,觉得是用链表+数组实现,于是一开始参考数据结构老师ppt。但发现实现不了(详见桶排序问题)。
后来想结构直接用二维数组算了。
本来对B[i]数据排序,想用QuickSort,但发现如果是数组B[i][1]至B[i][k]排序,原算法改动较大,遂作罢。

阅读更多

桶排序问题

问题描述

在用Bucket sort的时候,试了一下用链表数组的结构。
编译通过了,但是不知道为什么next指针用不了。

代码

1
2
3
4
5
6
7
8
typedef double ElemType;
typedef ElemType* Array;
typedef struct CTNode{
ElemType data;
struct CTNode *next;
}*ChildPtr;
typedef ChildPtr CTBox;
typedef CTBox* CTree;
阅读更多

基数排序问题与解决

问题描述

因为引理中提到,

对于n位数,单位数的最大值为k,若稳定排序需要Θ(k+n)时间,则Radix sort需要Θ(d(k+n))时间。

因此一开始想用Counting sort来进行一位的排序。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Array stableSort(Array A, int n, int d){
int k = 10;//因为排序的是位,最大值直接定为9
Array B = (ElemType*)malloc(k * sizeof(ElemType));
Array C = (ElemType*)malloc(n * sizeof(ElemType));
Array D = getSubArray(A, n, d); //第d位的数
for(int i = 0; i < k; i++){
B[i] = 0;
}
for(i = 0; i < n; i++){
B[D[i]]++;
}
for(i = 1; i < k; i++){
B[i] += B[i - 1];
}
for(i = 0; i < n; i++){
B[D[i]]--;
C[B[D[i]]] = A[i];
}
return A;
}
阅读更多

算法导论笔记

第1章

算法介绍

第2章

  • 用扑克牌举例,介绍了一种插入排序
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void InsertSort(ElemType *A){
    printf("length:%d\n", length);
    for(int j = 1; j < MAXSIZE; j++){
    int i = j - 1;
    int tmp = A[j];
    while(tmp < A[i] && i >= 0){
    A[i + 1] = A[i];
    i--;
    }
    A[i + 1] = tmp;
    }
    }
  • 简单介绍了时间复杂度的计算
阅读更多

JavaScript笔记

基本语法注意事项

  • === 比较运算符
  • NaN

NaN === NaN; // false

// true```(唯一判断方法)
1
2
3
4
5
6
7
8
9
10
11
- null 和 undefined
- 变量类型不固定,可以赋值为不同类型
```var a = 123; // a的值是整数123```
```a = 'ABC'; // a变为字符串```

<!--more-->

### 字符串

- 用' '或" "括起来
- 多行字符串

这是一个 多行 字符串;

1
2
3
4
5
6
- 字符串的连接
```javascript
var name = '小明';
var age = 20;
var message = '你好, ' + name + ', 你今年' + age + '岁了!';//方法1
var message = '你好, ${name}, 你今年${age}岁了!';//方法2
  • 字符串的长度
    1
    2
    var s = 'Hello, world!';
    s.length; // 13
  • 字符串的索引
    1
    2
    3
    4
    var s = 'Hello, world!';
    s[0]; // 'H'
    s[0] = 'X';//对字符串的某个索引赋值,没有任何效果:
    alert(s); // s仍然为'Hello, world!', 字符串不可变!!!
  • 改变字符串大小写
    1
    2
    3
    var s = 'Hello, world!';
    s.toUpperCase(); // 返回'HELLO, WORLD'
    s.toLowerCase(); // 返回'hello, world!'
  • 搜索指定字符串出现的位置
    1
    2
    3
    var s = 'Hello, world!';
    s.indexOf('world'); // 返回7
    s.indexOf('World'); // 没有找到指定的子串,返回-1
  • 返回指定索引区间的子串
    1
    2
    3
    var s = 'Hello, world!';
    s.substring(0, 5); // 从索引0开始到5(不包括5),返回'hello'
    s.substring(7); // 从索引7开始到结束,返回'world'

数组

  • 创建数组
    1
    2
    var arr = [1, 2, 3.14, 'Hello', null, true];//数组可以包括任意数据类型
    var arr = new Array(1, 2, 3); // 方法2,数组为[1, 2, 3]
  • 多维数组

var arr = [[1, 2, 3], [400, 500, 600], '-'];

  • 数组的索引
    1
    2
    3
    4
    5
    6
    var arr = ['A', 'B', 'C'];
    arr[0]; //返回索引为0的元素,即A
    arr[1] = 99;
    arr; //arr现在变为['A', 99, 'C']
    arr[5] = 'x';
    arr; //arr变为['A', 99, 'C', undefined, 'x']
  • 取得Array的长度(改变长度)
    1
    2
    3
    4
    5
    6
    var arr = [1, 2, 3];
    arr.length; // 3
    arr.length = 6;
    arr; // arr变为[1, 2, 3, undefined, undefined, undefined]
    arr.length = 2;
    arr; // arr变为[1, 2]
  • 搜索一个指定的元素的位置
    1
    2
    var arr = [10, 20, '30', 'xyz', 'D', 'E', 'F'];
    arr.indexOf(10); // 元素10的索引为0,返回0
  • 截取元素
    1
    2
    3
    4
    5
    6
    var arr = [10, 20, '30', 'xyz', 'D', 'E', 'F'];
    arr.slice(0, 3); // 返回 [10, 20, '30']
    arr.slice(3); // 从索引3开始到结束,返回 ['xyz', 'D', 'E', 'F']
    var aCopy = arr.slice();//从头到尾截取所有元素,相当于复制
    aCopy; //[10, 20, '30', 'xyz', 'D', 'E', 'F']
    aCopy === arr; // false
  • 添加/删除元素
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    var arr = ['C', 'D', 'E', 'F'];
    arr.push('G', 'H'); // 向尾部添加元素,返回新的长度: 6
    arr; // ['C', 'D', 'E', 'F', 'G', 'H']
    arr.pop(); // 删除末尾元素,返回'H'
    arr; // ['C', 'D', 'E', 'F', 'G']
    arr.unshift('A', 'B'); // 向头部添加元素,返回新的长度: 7
    arr; // ['A', 'B', 'C', 'D', 'E', 'F', 'G']
    arr.shift(); // 删除开头元素,返回'A'(若arr为[],则返回undefined)
    arr; // ['B', 'C', 'D', 'E', 'F', 'G']
    arr.splice(1, 3, 'H', 'I'); // 从索引1开始,删除3个元素,再添加2个元素,返回删除的元素 ['C', 'D', 'E']
    arr;//['B', 'F', 'G', 'H', 'I']
    arr.splice(2, 2); //只删除,不添加,返回['G', 'H']
    arr; // ['B', 'F', 'I']
    arr.splice(2, 0, 'J', 'K'); //只添加,不删除,返回[]
    arr; // ['B', 'F', 'I', 'J', 'K']
  • 排序(按照默认顺序排序)
    1
    2
    3
    var arr = ['B', 'C', 'A'];
    arr.sort();
    arr; // ['A', 'B', 'C']
  • 反转字符串
    1
    2
    3
    var arr = ['A', 'B', 'C'];
    arr.reverse();
    arr; // ['C', 'B', 'A']
  • 连接字符串
    1
    2
    3
    4
    5
    6
    7
    var arr = ['C', 'B', 'A'];
    var added = arr.concat([1, 2, 3]);
    added; // ['C', 'B', 'A', 1, 2, 3]
    arr; // 原字符串并未改变,仍为['C', 'B', 'A']
    arr.concat(1, 2, [3, 4]); // concat会自动把Array拆开,返回['C', 'B', 'A', 1, 2, 3, 4]
    //将每个元素用指定的字符串连接起来,返回连接后的字符串
    added.join('-'); // 'C-B-A-1-2-3-4'

对象

  • 是由键-值组成的无序集合
    1
    2
    3
    4
    5
    6
    7
    8
    var xiaoming = {
    name: '小明',
    birth: 1990,
    height: 1.70,
    weight: 65,
    score: null
    'middle-school': 'No.1 Middle School'
    };
  • 访问元素
    1
    2
    3
    4
    xiaoming.name;// '小明'
    xiaoming['name']; // '小明'
    xiaoming['middle-school']; // 'No.1 Middle School'
    xiaoming.age; // undefined
  • 添加或删除属性
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    xiaoming.age = 18; // 新增一个age属性
    xiaoming.age; // 18
    delete xiaoming.age; // 删除age属性
    xiaoming.age; // undefined
    delete xiaoming['name']; // 删除name属性
    xiaoming.name; // undefined
    delete xiaoming.school; // 删除一个不存在的school属性也不会报错
    xiaoming.name;// '小明'
    xiaoming['name']; // '小明'
    xiaoming['middle-school']; // 'No.1 Middle School'
    xiaoming.age; // undefined

通过C#实现Xml的自动转换

一、目的

通过给定的标准化xml schema文档,将非标准化的xml schema文档进行一定的转换,从而使所有的xml schema文档都遵循同一套格式,方便后续对xml文档的处理。

二、实现过程

起初,我们对任务不太明确。不清楚给出的规划化文件和需要进行规范的文件是xml文档还是xml schema文档。因此,在多次讨论无果后,再次咨询了老师。得到确定答案后重新查阅了资料,才开始具体的实现。

阅读更多

《求合体》小游戏项目报告

项目链接

https://github.com/0Heeee/Join_game

开发背景

《求合体》以合体为主题的全新游戏,每一株草丛、每一幢房屋、每一只猫咪都时时刻刻哭喊着求合体,一切都取决于玩家的旨意,一切都决定于玩家的安排。玩家的每一位子民,都在等待英明的合体决定。

在本次的课程设计中,依照该背景对游戏进行了一定的改编。支持鼠标操作,并且包含“彩虹”、“炸弹”、“猫”等多样玩法。界面上有显示下一个可放置物品的提示以及玩家当前的分数、剩余步数、获得金币。根据玩家不同的物品类型以及玩家所点击的不同位置,将作出不同的回应。

阅读更多