Maven仓库修改

1.下载Maven替换Idea的默认Maven,link

2.修改Maven的镜像(‪D:\apache-maven-3.6.0\conf\settings.xml)

<!--添加阿里云镜像-->
<mirrors>
    <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
  </mirrors>

 

Collections.sort和Arrays.sort自定义排序/部分排序

和C++极为相似。

一.Arrays.sort

1.自定义排序

A.一维数组+类(一般包含两个属性)

        //start不等的话先从小到大,start相等的话再按end从小到大
        Interval[] a = new Interval[];  //先转化为数组
        Arrays.sort(a, new Comparator<Interval>() {
            public int compare(Interval i1, Interval i2) {
                if (i1.start == i2.start) {
                    return i1.end - i2.end;
                }
                return i1.start - i2.start;
            }
        });

B.二维数组

//法一:
Arrays.sort(envelopes, (a, b) -> (a[0] - b[0]));//按第一列升序排列,第二列不变 
Arrays.sort(envelopes,(a, b) -> a[0]==b[0]?(a[1]-b[1]):(a[0]-b[0]));////按第一列升序排列,然后按第二列升序排列

//法二:
Arrays.sort(intervals, new Comparator<int[]>() {
    @Override
    public int compare(int[] o1, int[] o2) {
        return o1[0] - o2[0];
    }
});
2.部分元素排序
Arrays.sort(int[] a, int fromIndex, int toIndex)

二.Collections.sort

1.自定义排序
    Collections.sort(intervals,new Comparator<Interval>() {
            public int compare(Interval i1, Interval i2) {
                if(i1.start == i2.start) {
                    return i1.end - i2.end;
                }
                return i1.start - i2.start;
            }
        });

看了下源码,Collections.sort先把collection转化为数组,然后调用Arrays.sort,而Arrays.sort主要调用TimSort(优化版的归并排序)

//从小到大,但前面相同且length较长的比较大
//"abc"<"abcd","abdf"<"abc"
 Collections.sort(ans, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return o1.compareTo(o2);
            }
        });
2.部分元素排序
Collections.sort(list.subList(start, end));//对sublist的修改会体现在父亲身上,sublist保存的是父对象

ref:https://www.cnblogs.com/warehouse/p/9342279.html

MapReduce实现大矩阵乘法

要点:

1.“<(i,k),(M,j,Mij)>,其中K=1、2、到N的列数”是因为M矩阵每一行需要跟N矩阵的所有列做乘法,需要复制多份保存,独立做乘法。

2.“将j值相同的Mij和Njk相乘”类似于一维数组对应元素相乘,因为此时M中的行和N中的列都成为了一维数组。

3.矩阵中为0的元素可以不用存储,由于第2点保证了相同j值的元素相乘不会导致乱序,同时0乘法的归零性。

ref:https://blog.csdn.net/xyilu/article/details/9066973https://blog.csdn.net/qq_30374549/article/details/80166168