• [技术干货] 如何判断一个整型数字是不是对称数字-转载
    如何判断一个整型数字是不是对称数字(用纯C语言实现)比如输入是1569651是一个对称数字,而25则不是一个对称数字。有两种判断方法:1. 将输入的数字分解成一个个数字,然后进行判断。2. 将数字的高地位进行互换,然后判断互换后的数与原来的数是否相等。 方法一:数字分解法 1 /*将input输入,输出为一个output数组和input的位数*/ 2 int decompose(int input, int* output) 3 { 4 int* decomposeResult = output; 5 int count = 0, temp = input; 6 7 while(1) 8 { 9 int quotient = temp / 10;10 int remainder = temp % 10;11 if((quotient != 0) || ((quotient == 0) && (remainder != 0)))12 {13 decomposeResult[count] = remainder;14 temp = quotient;15 count ++;16 }17 else 18 break;19 }20 return count;21 }1 /*判断是否是对称数字*/ 2 bool isSymmetryDecompose(const int* input, int count) 3 { 4 for(int i = 0; i < count /2 ; i++) 5 { 6 if(input[i] != input[count - i - 1]) 7 { 8 return false; 9 }10 }11 return true;12 }方法二:数值高地位互换比较法 1 /*输入数字高地位互换,输出为互换后的结果*/ 2 int highAndLowSwap(int input) 3 { 4 int temp = input, swap = 0; 5 /*将输入的地位按顺序换成输出的高位,比如输入为12345,那么输出为54321*/ 6 while(temp) 7 { 8 swap = swap * 10 + temp %10; 9 temp = temp / 10;10 }11 12 return swap;13 }/*判断两个数字是否相等,相等则是对称数字,否则不是对称数字*/ bool isSymmetryHighAndLowSwap(int input, int inputSwap) { if(input == inputSwap) return true; else return false; } 测试代码: 1 void main() 2 { 3 int input = 123060321; 4 int decomposeResult[32], swapResult; 5 int count = 0; 6 bool isSymDecomp = false, isSymSwap = false; 7 8 count = decompose(input, decomposeResult); 9 isSymDecomp = isSymmetryDecompose(decomposeResult, count);10 swapResult = highAndLowSwap(input);11 isSymSwap = isSymmetryHighAndLowSwap(input, swapResult);12 13 if(isSymDecomp)14 printf("Is a symmetry number, judge by decompose method!\n");15 else 16 printf("Not a symmetry number, judge by decompose method!\n");17 18 printf("\n");19 20 if(isSymSwap)21 printf("Is a symmetry number, judge by swap method!\n");22 else 23 printf("Not a symmetry number, judge by swap method!\n");24 25 printf("\n");26 27 printf("Please print enter to continue ...\n");28 getchar();29 } 源码下载:http://download.csdn.net/detail/hudaliquan/9765114转载于:https://www.cnblogs.com/Keven-Lee/p/6473308.html相关资源:用数学方式判断一个数是否为对称数_java判断对称数-Java文档类...
  • [技术干货] TopK问题求解方法-转载
    opK问题输入数组arr,找出其中最大的k个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最大的4个数字是5、6、7、8。示例一: 输入:arr = [3,2,1], k = 2 输出:[3,2]或者[2,3]示例二: 输入:arr = [0,1,2,1], k = 1 输出:[2]解决方法1:先将这个数组排成降序,输出前K个数字即可!注意1.如果排升序,就建立大根堆2.如果排降序,接建立小根堆//交换函数void Swap(int* x, int* y){    int tmp = *x;    *x = *y;    *y = tmp;}//堆的向下调整(小堆)void AdjustDown(int* a, int n, int parent){    //child记录左右孩子中值较小的孩子的下标    int child = 2 * parent + 1;//先默认其左孩子的值较小    while (child < n)    {        if (child + 1 < n&&a[child + 1] < a[child])//右孩子存在并且右孩子比左孩子还小        {            child++;//较小的孩子改为右孩子        }        if (a[child] < a[parent])//左右孩子中较小孩子的值比父结点还小        {            //将父结点与较小的子结点交换            Swap(&a[child], &a[parent]);            //继续向下进行调整            parent = child;            child = 2 * parent + 1;        }        else//已成堆        {            break;        }    }}int* getLeastNumbers(int* arr, int arrSize, int k, int* returnSize){    *returnSize = k;    int i = 0;    //建小堆    for (i = (arrSize - 1 - 1) / 2; i >= 0; i--)    {        AdjustDown(arr, arrSize, i);    }    //排降序    int end = arrSize - 1;    while (end > 0)    {        Swap(&arr[0], &arr[end]);        AdjustDown(arr, end, 0);        end--;    }    //将最大的k个数存入数组    int* retArr = (int*)malloc(sizeof(int)*k);    for (i = 0; i < k; i++)    {        retArr[i] = arr[i];    }    return retArr;//返回最大的k个数}时间复杂度: O(N+NlogN) 空间复杂度:O(N)解决方法2:将数组建成一个大堆,取K次堆顶的数据就可以了。细节:每次拿走堆顶的数据后,需要将堆顶的数据和最后一个数据进行交换,然后重新建堆!//交换函数void Swap(int* x, int* y){    int tmp = *x;    *x = *y;    *y = tmp;}//堆的向下调整(大堆)void AdjustDown(int* a, int n, int parent){    //child记录左右孩子中值较大的孩子的下标    int child = 2 * parent + 1;//先默认其左孩子的值较大    while (child < n)    {        if (child + 1 < n&&a[child + 1] > a[child])//右孩子存在并且右孩子比左孩子还大        {            child++;//较大的孩子改为右孩子        }        if (a[child] > a[parent])//左右孩子中较大孩子的值比父结点还大        {            //将父结点与较大的子结点交换            Swap(&a[child], &a[parent]);            //继续向下进行调整            parent = child;            child = 2 * parent + 1;        }        else//已成堆        {            break;        }    }}int* getLeastNumbers(int* arr, int arrSize, int k, int* returnSize){    *returnSize = k;    int i = 0;    //建大堆    for (i = (arrSize - 1 - 1) / 2; i >= 0; i--)    {        AdjustDown(arr, arrSize, i);    }    //将最大的k个数存入数组    int* retArr = (int*)malloc(sizeof(int)*k);    int end = arrSize - 1;    for (i = 0; i < k; i++)    {        retArr[i] = arr[0];//取堆顶数据        Swap(&arr[0], &arr[end]);//交换堆顶数据与最后一个数据        //进行一次向下调整,不把最后一个数据看作待调整的数据,所以待调整数据为end=arrSize-1        AdjustDown(arr, end, 0);        end--;//最后一个数据的下标改变    }    return retArr;//返回最大的k个数}时间复杂度: O(N+klogN) 空间复杂度:O(N)弊端:如果待待续的数字有100亿个,那么存储100亿个整数究竟需要多大的内存空间?让咱们来大概估算一下: 我们知道1KB=1024byte,1MB=1024KB,1GB=1024MB,于是可以得出1GB大概有230个字节,也就是说1GB大概等于10亿个字节。 存储100亿个整型需要400亿个字节,所以存储100亿个整型数据需要40G左右的内存空间。前面两种算法的空间复杂度均为O(N),并不适合用于这种海量数据处理。基于上述问题,我们重新建立一种新的解决方法!解决方法3:1.先将前K个数据建立小堆 2.将数组剩下的N-K个数字依次和堆顶的数据比较,如果大于堆顶的数据,进行替换,然后向下调整,使其仍为小堆。//交换函数void Swap(int* x, int* y){    int tmp = *x;    *x = *y;    *y = tmp;}//堆的向下调整(小堆)void AdjustDown(int* a, int n, int parent){    //child记录左右孩子中值较小的孩子的下标    int child = 2 * parent + 1;//先默认其左孩子的值较小    while (child < n)    {        if (child + 1 < n&&a[child + 1] < a[child])//右孩子存在并且右孩子比左孩子还小        {            child++;//较小的孩子改为右孩子        }        if (a[child] < a[parent])//左右孩子中较小孩子的值比父结点还小        {            //将父结点与较小的子结点交换            Swap(&a[child], &a[parent]);            //继续向下进行调整            parent = child;            child = 2 * parent + 1;        }        else//已成堆        {            break;        }    }}int* getLeastNumbers(int* arr, int arrSize, int k, int* returnSize){    *returnSize = k;    if (k == 0)        return NULL;    //用数组的前K个数建小堆    int i = 0;    int* retArr = (int*)malloc(sizeof(int)*k);    for (i = 0; i < k; i++)    {        retArr[i] = arr[i];    }    for (i = (k - 1 - 1) / 2; i >= 0; i--)    {        AdjustDown(retArr, k, i);    }    //剩下的N-k个数依次与堆顶数据比较    for (i = k; i < arrSize; i++)    {        if (arr[i]>retArr[0])        {            retArr[0] = arr[i];//堆顶数据替换        }        AdjustDown(retArr, k, 0);//进行一次向下调整    }    return retArr;//返回最大的k个数}————————————————版权声明:本文为CSDN博主「XG_JieJie」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/jiejiezuishuai/article/details/126245957
  • [技术干货] CSP-J1 CSP-S1 初赛 第1轮(2022.08.09)-转载
    2022年CSP-J1 CSP-S1 第1轮初赛 报名指南​​​​​​2022年CSP-J1 CSP-S1 第1轮初赛 报名指南_dllglvzhenfeng的博客-CSDN博客【教程】图文详解 CSP-J/S 第一轮报名流程(附备考建议)【教程】图文详解 CSP-J/S 第一轮报名流程(附备考建议)CSP J/S你真的报名成功了吗?报名步骤详解速看!CSP J/S你真的报名成功了吗?报名步骤详解速看! - 知乎0.CSP-J初赛集训第0课——进制转换0.CSP-J初赛集训第0课——进制转换_哔哩哔哩_bilibili1.CSP-J初赛集训第1课——计算机中的数据大小1.CSP-J初赛集训第1课——计算机中的数据大小_哔哩哔哩_bilibili2.CSP-J初赛集训第2课 原码反码与补码2.CSP-J初赛集训第2课 原码反码与补码_哔哩哔哩_bilibili3.CSP-J初赛集训第3课 进制转换 原码反码补码 近十年真题汇总3.CSP-J初赛集训第3课 进制转换 原码反码补码 近十年真题汇总_哔哩哔哩_bilibili4.CSP-J初赛集训第4课——栈和队列初识4.CSP-J初赛集训第4课——栈和队列初识_哔哩哔哩_bilibili5.CSP-J初赛集训—栈的近20年真题讲解5.CSP-J初赛集训—栈的近20年真题讲解_哔哩哔哩_bilibili6.CSP-J初赛集训——循环队列 真题讲解6.CSP-J初赛集训——循环队列 真题讲解_哔哩哔哩_bilibili7.CSP-J初赛集训第5课 数据结构 树的基本概念介绍 树和二叉树 小白一听就会7.CSP-J初赛集训第5课 数据结构 树的基本概念介绍 树和二叉树 小白一听就会_哔哩哔哩_bilibili8.CSP-J初赛集训 关于树的计算真题 二叉树的计算 CSP noip8.CSP-J初赛集训 关于树的计算真题 二叉树的计算 CSP noip_哔哩哔哩_bilibili9.CSP-J初赛集训第6课 二叉树的遍历 小白入门必好学9.CSP-J初赛集训第6课 二叉树的遍历 小白入门必好学_哔哩哔哩_bilibili10.CSP-J初赛集训 二叉树的遍历 历年真题讲解10.CSP-J初赛集训 二叉树的遍历 历年真题讲解_哔哩哔哩_bilibili11.CSP-J初赛集训第6课 图的基本概念介绍11.CSP-J初赛集训第6课 图的基本概念介绍_哔哩哔哩_bilibili12.CSP-J初赛集训 关于图的历年真题讲解12.CSP-J初赛集训 关于图的历年真题讲解_哔哩哔哩_bilibili13.CSP-J初赛集训第7课_排列和组合13.CSP-J初赛集训第7课_排列和组合_哔哩哔哩_bilibili14.CSP-J初赛排列和组合历年真题114.CSP-J初赛排列和组合历年真题1_哔哩哔哩_bilibili15.CSP-J初赛排列和组合历年真题215.CSP-J初赛排列和组合历年真题2_哔哩哔哩_bilibili16.CSP-J初赛排列和组合历年真题3​​​​​​16.CSP-J初赛排列和组合历年真题3_哔哩哔哩_bilibili17.CSP-J初赛数学问题历年真题17.CSP-J初赛数学问题历年真题_哔哩哔哩_bilibili信奥学习规划 信息学竞赛之路(2022.07.31)信奥学习规划 信息学竞赛之路(2022.07.31)_dllglvzhenfeng的博客-CSDN博客Scratch -> C++画图->信奥(C++)学习导航Scratch -> C++画图->信奥(C++)学习导航_dllglvzhenfeng的博客-CSDN博客【NOI2022】PV「什么是信息学精神?」【NOI2022】PV「什么是信息学精神?」_dllglvzhenfeng的博客-CSDN博客高含金量国际计算机编程竞赛高含金量国际计算机编程竞赛_dllglvzhenfeng的博客-CSDN博客_计算机编程大赛【国际竞赛-计算机篇】2022年高含金量的计算机竞赛有哪些【国际竞赛-计算机篇】2022年高含金量的计算机竞赛有哪些_dllglvzhenfeng的博客-CSDN博客Kaggle学习Kaggle学习_dllglvzhenfeng的博客-CSDN博客Scratch -> C++画图->信奥(C++)学习导航Scratch -> C++画图->信奥(C++)学习导航_dllglvzhenfeng的博客-CSDN博客USACO资料集(2022.07.22)USACO资料集(2022.07.22)_dllglvzhenfeng的博客-CSDN博客【信息学奥赛】2021 CSP-J 初赛真题解析【信息学奥赛】2021 CSP-J 初赛真题解析_哔哩哔哩_bilibili【合集】信息学奥赛 2020 CSP-J 初赛真题解析【合集】信息学奥赛 2020 CSP-J 初赛真题解析_哔哩哔哩_bilibili【合集】信息学奥赛 2019 CSP-J 初赛真题解析【合集】信息学奥赛 2019 CSP-J 初赛真题解析_哔哩哔哩_bilibiliCSP-J初赛集训(因特网概述)CSP-J初赛集训(因特网概述)_哔哩哔哩_bilibili信奥(CSP-J/S初赛)公益讲座精选系列之考点和重点信奥(CSP-J/S初赛)公益讲座精选系列之考点和重点_哔哩哔哩_bilibili信奥集训营【CSP-J专题集训、案例全、历年真题讲解、值得收藏】信奥集训营【CSP-J专题集训、案例全、历年真题讲解、值得收藏】_哔哩哔哩_bilibili初赛大题选讲——信奥(CSP-J/S初赛)公益讲座精选系列初赛大题选讲——信奥(CSP-J/S初赛)公益讲座精选系列_哔哩哔哩_bilibili2022csp-j初赛模拟day082022csp-j初赛模拟day08_哔哩哔哩_bilibili2022csp-j初赛模拟day092022csp-j初赛模拟day09_哔哩哔哩_bilibili2021CSP-J第一轮认证分析与吐槽2021CSP-J第一轮认证分析与吐槽_哔哩哔哩_bilibili名师教你学 - NOIP 信息学奥赛 CSP-J 刷题班名师教你学 - NOIP 信息学奥赛 CSP-J 刷题班_哔哩哔哩_bilibili聊聊2021年csp-j初赛的事儿聊聊2021年csp-j初赛的事儿_哔哩哔哩_bilibiliCSP-J初赛知识点:其它进制CSP-J初赛知识点:其它进制_哔哩哔哩_bilibili信息学奥赛CSP-J:链表专题信息学奥赛CSP-J:链表专题_哔哩哔哩_bilibili2023计算机考研专业课参考书目(408)2023计算机考研专业课参考书目(408)_dllglvzhenfeng的博客-CSDN博客_计算机408参考教材计算机考研 机试书籍及相关的资料计算机考研 机试书籍及相关的资料_dllglvzhenfeng的博客-CSDN博客2023年 计算机考研 资料集(2022.02.03)2023年 计算机考研 资料集(2022.02.03)_dllglvzhenfeng的博客-CSDN博客动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)动画学信奥 漫画学算法 CSP-J入门级 (一)、计算机基础与编程环境(依据「NOI大纲」)_dllglvzhenfeng的博客-CSDN博客_cspj考试大纲动画学信奥 漫画学算法 CSP-J入门级 (二)、C++程序设计 数据结构(依据「NOI大纲」)动画学信奥 漫画学算法 CSP-J入门级 (二)、C++程序设计 数据结构(依据「NOI大纲」)_dllglvzhenfeng的博客-CSDN博客_csp-j 数据结构动画学信奥 漫画学算法 CSP-J入门级 (三)、算法(依据「NOI大纲」)动画学信奥 漫画学算法 CSP-J入门级 (三)、算法(依据「NOI大纲」)_dllglvzhenfeng的博客-CSDN博客————————————————版权声明:本文为CSDN博主「dllglvzhenfeng」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/dllglvzhenfeng/article/details/126253377
  • [技术干货] Arrays类-转载
    Arrays类Arrays类是Java中用来操作数组的模块他的使用方法是在Java类中使用import java.util.Arrays进行导入,并使用Arrays.方法()进行调用方法!Arrays类的fill方法fill方法有两种用途!第一种就是填充数组,将数组中的全部元素转换为所输入的元素第二种就是替换数组元素,将数组中某个元素进行单个替换用fill方法填充数组在初始化一个数组之后,如果没有给数组的元素赋值,那么这个数组中的元素默认是为0的,那么我们一个个进行赋值又会略显麻烦,会堆积代码!所以我们就需要用到fill方法进行填充,但是这么做会让全部元素变成同一个数值!import java.util.Arrays; //这里导入Arrays类public class Fill{public static void main(String[] args){int[] mylist = new int[5]; //这里创建一个名称为mylist的数组,数组的元素个个数为5Arrays.fill(mylist,3); //为数组填充3,格式为fill(列表,数值)for(int x:mylist){System.out.println(x);} //通过for each来遍历数组元素}}上面的for each在以前的文章中介绍过!用fill方法替换数组元素在给元素赋值完或者是填充完元素之后,如果想对某个元素进行修改,那么我们就要重新赋值或者是替换元素,但是重新赋值会增加代码,让代码显得更繁琐,所以Arrays类中提供了替换元素的方法fill!import java.util.Arrays;public class Fill{public static void main(String[] args){int[] mylist = {1,2,3,4};Arrays.fill(mylist, 1,2,4);for(int x:mylist){System.out.println(x);}} //这是一个特殊的格式Arrays.fill(列表名称,空格正向索引,反向索引,改变的数值)1}这里的正反向索引指向的一定要是同一个元素!Arrays类的复制数组方法在Java程序的使用过程中,有时候会需要一个含有相同或者是部分相同元素的数组,但是重新创建数组的话就会增加代码长度,减少代码可读性,那么我们就可以使用到复制数组或者是部分数组的方法!用copyOf复制数组☄️copyOf方法提供了多种重载的方法,用以复制数组,增加代码可读性。该方法不受数组长度的限制,若超出,则多处部分为0!import java.util.Arrays;public class Fill{public static void main(String[] args){int[] mylist = {1,2,3,4};int[] justlist = Arrays.copyOf(mylist,4); //将复制后的数组赋值给justlist//格式Arrays.copyOf(列表,复制后的长度)for(int x:justlist){System.out.println(x);}System.out.println(mylist);System.out.println(justlist); //这里输出两个数组的内存空间进行检查} //这是一个特殊的格式Arrays.fill(列表名称,空格正向索引,反向索引,改变的数值)1}解:从以上结果可以看出赋值成功了,并且内存空间不同(下面我会解释为什么要输出内存空间)用copyOfRange方法复制部分数组有时候在编辑代码的时候只需要中间一部分代码,但是copyOf方法只能复制以前面部分为开头的元素,而不能直接复制中间的代码,为了解决这一个问题,这个类提供了另一个方法copyOfRange方法(中文意思:选择复制)利用这个方法就可以解决这一个问题!import java.util.Arrays;public class Fill{public static void main(String[] args){int[] mylist = {1,2,3,4};int[] justlist = Arrays.copyOfRange(mylist,1,3);//Arrays类的方法使用形式Arrays.copyOfRange(列表,第一个索引位置,第二个索引位置)for(int x:justlist){System.out.println(x);}}}注:在末尾有问题解答!Arrays类对数组进行排序在代码编译过程中,有时候会需要用到有序的一组数组才能进行更好的操作,但是我们重新进行编译会增加代码数量,所以我们要对代码进行排序,Java中提供了sort方法对数组的元素进行升序排序!用sort方法进行升序排序在Java编译过程中,有顺序的数组会让你的编译更加方便,使得你自己以及其他参与编译的人更加清楚,尤其是适合那些大基数的数组更为适用和实用!import java.util.Arrays;public class Fill{public static void main(String[] args){    int[] mylist = {1,7,33,4};    Arrays.sort(mylist);    //方式为Arrays.sort(列表)    for(int x:mylist){        System.out.println(x);    }}}问题解答为什么要在fill方法中加空格:因为不加空格就会使他执行不正确,无法达到效果为什么要输出内存空间吗:如果在同一个内存空间,一个数组改变之后另一个也会随之改变,会影响后续程序执行copyOfRange方法如果超出索引最大限度会怎么样:如果超出,则超出部分默认为0!为什么有些要方法要创建新数组有些不用:因为有些方法是对一个数组进行改变,有些是要重新创建数组!————————————————版权声明:本文为CSDN博主「Code Writers」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/m0_71905144/article/details/126250825
  • [技术干货] Java——try-catch异常处理-转载
    1.try-catch异常处理说明1.Java提供try和catch块来处理异常,try块用于包含可能出错的代码。catch块用于处理try块中发出的异常。可以根据需要在程序中有一个或多个try-catch块2.基本语法try{    //可疑代码    //将一场生成对应的异常对象,传递给catch块}catch{    //对异常的处理}2.try-catch异常处理细节1.如果异常发生了,则异常后面的代码不会执行,直接进入到catch块2.如果异常没有发生,则顺序执行try的代码块,不会进入到catch。3.如果希望不管是否发生异常,都执行某段代码,则使用如下代码-finally{}示例01package com.demo.trycatch;/** * @version 1.0 * @auther Demo龙 */public class TrycatchDetial {    public static void main(String[] args) {        //1.如果异常发生了,则异常后面的代码不会执行,直接进入到catch块        //ctrl+alt+t        try {            String ch="kkk";            int a=Integer.parseInt(ch);            System.out.println("number"+a);        } catch (NumberFormatException e) {            System.out.println("异常信息:"+e.getMessage());        }        System.out.println("程序继续运行");        // > 2.如果异常没有发生,则顺序执行try的代码块,不会进入到catch。        try {            String ch="556";            int a=Integer.parseInt(ch);            System.out.println("number="+a);        } catch (NumberFormatException e) {            System.out.println("异常信息:"+e.getMessage());        }        System.out.println("程序继续运行02");        //> 3.如果希望不管是否发生异常,都执行某段代码,则使用如下代码-finally{}        try {            String ch="Demo龙";            int a=Integer.parseInt(ch);            System.out.println("number="+a);        } catch (NumberFormatException e) {            System.out.println("异常信息:"+e.getMessage());        } finally {            System.out.println("finally被执行");        }    }}测试结果014.可以有多个catch语句,捕获不同的异常(进行不同的业务处理),要求父类异常在后,子类异常在前,如果发生异常,只会匹配一个catch。5.try-finally配合使用,这种用法相当于没有捕获异常,程序会直接退出,但会执行finally业务逻辑示例02package com.demo.trycatch;/** * @version 1.0 * @auther Demo龙 */public class TrycatchDetial02 {    //4.可以有多个catch语句,捕获不同的异常(进行不同的业务处理),    // 要求父类异常在后,子类异常在前,如果发生异常,只会匹配一个catch。    public static void main(String[] args) {        try {            Person person = new Person();            person=null;            System.out.println("name="+person.getName());//空指针异常            int n1=9;            int n2=0;            int num=n1/n2;//数学异常            //1.try代码块可能有多个异常            //2.可以使用多个catch分别捕获不同的异常,相应处理            //3.要求子类异常写在前面,父类异常写在后面        }catch (NullPointerException e){            System.out.println("空指针异常:"+e.getMessage());        } catch (ArithmeticException c){            System.out.println("算数异常:"+c.getMessage());        } catch (Exception e) {            System.out.println("异常情况:"+e.getMessage());        } finally {            System.out.println("finally代码块被执行");        }        System.out.println("程序继续运行。");        //5.try-finally配合使用,这种用法相当于没有捕获异常,        // 程序会直接退出,但会执行finally业务逻辑        System.out.println("try-finally细节测试");        try {            int m1=9;            int m2=3;            System.out.println("m1/m2="+m1/m2);        } finally {            System.out.println("执行finally代码块02");        }        try {            int m1=9;            int m2=0;            System.out.println("m1/m2="+m1/m2);        } finally {            System.out.println("执行finally代码块01");        }    }}class Person{    private String name="demo龙";    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}————————————————版权声明:本文为CSDN博主「Demo龙」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_59708493/article/details/125011256
  • [技术干货] 数据结构 桶排序 基数排序-转载
    首先来了解桶排序将数组分成若干类  分这个类的条件  我们自己决定这里我们用的是 每隔5个数分为一类如20~24  25~29 30~34...数组中的元素满足这样的条件就会被放在相应的桶中如: 23会被放在20~24的桶中假设我们有这样一个数组int arr[15] = { 34,36,31,78,65,32,33,34,89,90,91,67,52,71,77};我们决定桶的数量 为确保数组中的元素都能如桶   一般设定为  :原数组中的最大值-最小值+1 想判断当前数组元素应该入哪个桶  我们这里的条件是:当前元素的值-最小值/5   为他要入的桶的下标如  最小元素20 当前元素40  那么他要进去的桶的下标为 (40-20)/5=4我们这里所谓的桶  其实就是一个哈希数组 这里用的是链式存储法 (每一个元素都是一个链表的头)如相应的桶  就是 把元素添加到哈希数组的相应下标上的链表上去  在这里我们添加用的是链表插入的方式  直接根据节点的值将节点插入到相应的位置   完成排序 之后我们只需要 遍历哈希数组并遍历哈希数组元素  吧 哈希数组中的元素都放回到原数组中去这样就实现了桶排序桶排序完整代码如下#include<iostream>using namespace std;#define  jiange 5struct List{    int id;    List* pNext;}; void Insert(List*&pHead,int value){    List* pTemp=new List;    pTemp->id = value;    pTemp->pNext = NULL;    //链表中没有节点    if (pHead == NULL)    {        pHead = pTemp;        return;    }    //链表中的头节点比当前节点的值大      //头插入    if (pTemp->id < pHead->id)    {        pTemp->pNext=pHead;        pHead = pTemp;        return;    }    //链表的头的值比当前要插入的节点的值小    //遍历链表  找到要插在谁的后面            List* pMark = pHead;        while (pMark->pNext != NULL)        {            if (pMark->pNext->id > pTemp->id)            {                pTemp->pNext = pMark->pNext;                pMark->pNext = pTemp;                return;            }            pMark = pMark->pNext;        }        //遍历到最后一个节点  都没找到比当前节点大的节点  插在最后        pMark->pNext = pTemp;         }void BuckeSort(int arr[],int nLen){    int begin = arr[0];    int end =arr[0];    //参数校验    if (arr == NULL || nLen <= 10)    {        return;    }    //找到最大值和最小值确定桶的数量    for (int i = 0; i < nLen; i++)    {        if (arr[i] < begin)            begin = arr[i];        if (arr[i] > end)            end = arr[i];    }    int nBucketCount =  end -begin + 1;    //开辟空间    List** Hash = new List*[nBucketCount];    ::memset(Hash, 0, sizeof(List*)* nBucketCount);    //遍历数组入桶    for (int i = 0; i < nLen; i++)    {        //入桶函数        Insert(Hash[(arr[i]-begin)/jiange], arr[i]);    }    //出桶     int j = 0;    for (int i = 0; i < nBucketCount; i++)    {                while (Hash[i])        {            List* pDel = Hash[i];            Hash[i] = Hash[i]->pNext;             arr[j++] =pDel->id;            delete pDel;            pDel = NULL;                                }    }    delete Hash;    Hash = NULL;       } int main(){    int arr[15] = { 34,36,31,78,65,32,33,34,89,90,91,67,52,71,77};    BuckeSort(arr, 15);    for (int val : arr)    {        cout << val << " ";    }    return 0;}基数排序:可以看做是桶排序的另一种优化  只不过 他的如桶条件变了 而且需要额外创建一个记录链表的尾的哈希数组;  用于添加节点尾入  头出思想:先把数组中的元素根据个位入桶出桶放入原数组在把数组中的元素根据十位入桶出桶放入原数组...直到把数组中的元素根据  数组中的最大的元素的最高位  入桶出桶放入原数组   结束这样一来  数组自己就排序好了基数排序:代码如下#include<iostream>using namespace std;#define  jiange 5struct List{    int id;    List* pNext;}; void AddNode(List*& pHead, List*& pEnd ,int value){    List* pTemp = new List;    pTemp->id = value;    pTemp->pNext = NULL;    //链表中没有节点    if (pHead == NULL)    {        pHead = pTemp;            }    //链表有节点      //尾插入    else     {        pEnd->pNext = pTemp;     }                  pEnd = pTemp;      }void RadixSort(int arr[], int nLen){        //参数校验    if (arr == NULL || nLen <= 10)    {        return;    }    //找到最大值    int max = arr[0];    for (int i = 0; i < nLen; i++)    {        if (arr[i] > max)        {            max = arr[i];        }    }    int base = 1;        //创建桶中链表的头节点数组    List** pHeadarr = new List * [10];    //创建桶中链表的尾节点数组    List** pEndarr = new List * [10];    ::memset(pHeadarr, 0, sizeof(List*) * 10);    ::memset(pEndarr, 0, sizeof(List*) * 10);    while (max / base != 0)    {        //arr的元素放入桶中        for (int i = 0; i < nLen; i++)        {                        //链表尾部添加            AddNode(pHeadarr[arr[i] / base % 10], pEndarr[arr[i] / base % 10], arr[i]);        }        //出桶        int j = 0;        for (int i = 0; i < 10; i++)        {            while (pHeadarr[i])            {                List* pDel = pHeadarr[i];                                pHeadarr[i] = pHeadarr[i]->pNext;                                    arr[j++] = pDel->id;                delete pDel;                pDel = NULL;            }        }        base *= 10;     }       } int main(){    int arr[15] = { 34,36,31,78,65,32,33,34,89,90,91,67,52,71,77 };    RadixSort(arr, 15);    for (int val : arr)    {        cout << val << " ";    }    return 0;————————————————版权声明:本文为CSDN博主「van9527」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/van9527/article/details/126232966
  • [容器专区] 【AR502H产品】JAVA app 在老批次上串口没反应,新批次上可以正常读取
    【功能模块】使用AR502H时,前一年买的串口读取没反应,后来买的一批都可以正常读取,把老批次的系统升级了也不行。C++版本的app在两个批次都可以,JAVA的app在老批次不行。老批次与新批次的差异:老一批的系统是V200R020C00SPC100,新的一批系统是V200R020C10SPC100,都升级成了V200R020C10SPC100,还是不行双工切换的结果返回也正常,就是串口没反应【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] java实战项目开发之购物车-原创
    1:在开始本项目讲解之前和大家简单的了解了解java吧Java是由斯坦福大学网络公司于1995年开发的一门高级变成语言是一种面向互联网的编程语言 javga具有着某种魔力和吸引力同时也可以在web浏览器中运行 这些java程序被称为java小程序 applet随着java在web方向的不断发展和成熟后台开发出了:java  go  node.js2:Java技术体系平台分为: JavaSE(Java Standard Edition)标准版       JavaEE(Java Enterprise Edition)企业版       Java ME(Java Micro Edition)小型版3:特性包括易学  分布式 健壮 安全 开源 解释型语言等特点项目介绍:现在电商对我们生活可以说是息息相关 大家都会有把自己喜欢的东西添加到购物车的习惯那么用java算法是怎么实现的购物车添加、删除、更新等操作的呢???先给大家看看源码:Shopcar类:import mianxiangduixiang.demo.Goods;import java.util.Scanner;import java.util.SortedMap;public class ShopCarTest {    public static void main(String[] args) {                        mianxiangduixiang.demo.Goods[] shopCar=new mianxiangduixiang.demo.Goods[1000];        while (true) {            System.out.println();            System.out.println("==================================================================");            System.out.println("请您选择如下命令进行操作:");            System.out.println("添加商品到购物车 a");            System.out.println("查看购物车商品 q");            System.out.println("修改购物车商品数量 u");            System.out.println("结算购物车商品金额 p");            System.out.println("结束程序 end");            Scanner sc=new Scanner(System.in);            System.out.println("请输入您的命令:");            System.out.println();            String command=sc.next();            switch (command){                case "add":                    //添加商品到购物车                    addGoods(shopCar,sc);                    break;                case "query":                                        queryGoods(shopCar);                    break;                case "update":                                        updateGoods(shopCar,sc);                    break;                case "pay":                                        payGoods(shopCar);                    break;                case "end":                                        System.exit(0);                    break;                default:                    System.out.println("无此功能!!!");            }        }    }      public static void payGoods(Goods[] shopCar){        System.out.println("您现在购物车的信息为:");        queryGoods(shopCar);        double money=0;        for (int i = 0; i < shopCar.length; i++) {            Goods g=shopCar[i];            if (g!=null){                money+=(g.buyNumber*g.price);            }else {                break;            }        }        System.out.println("您购买商品的总金额为:"+money+"元");    }         public static void updateGoods(Goods[] shopCar,Scanner sc) {               System.out.println("请输入您要修改的商品id:");        int id=sc.nextInt();        Goods g=getGoodsByid(shopCar,id);        if (g==null){            System.out.println("抱歉,购物车中无此商品信息,请重新输入!!!");            updateGoods(shopCar, sc);        }else {            System.out.println("请输入"+g.name+"要修改的数量:");            int buyNumber=sc.nextInt();            g.buyNumber=buyNumber;            System.out.println("修改成功!!!");        }    }        public static Goods getGoodsByid(Goods[] shopCar,int id){        for (int i = 0; i < shopCar.length; i++) {            Goods g=shopCar[i];            if (g != null) {                                if (g.id == id) {                    return g;                }            }else {                //System.out.println("您还未添加此商品!!!");                return null;            }        }        return null;    }        public static void queryGoods(Goods[] shopCar) {        System.out.println("===========================查看商品信息=========================");        System.out.println("商品编号\t\t\t商品名称\t\t\t商品价格\t\t\t商品数量");        for (int i = 0; i < shopCar.length; i++) {            Goods g=shopCar[i];            if (g != null) {                System.out.println(g.id+"\t\t\t\t"+g.name+"\t\t\t\t"+g.price+"\t\t\t\t"+g.buyNumber);            }else {                break;            }        }    }       public static void addGoods(Goods[] shopCar,Scanner sc) {        //1.录入用户输入的商品信息        System.out.println("请您输入商品的编号(不可重复):");        int id=sc.nextInt();        System.out.println("请您输入商品名称:");        String name=sc.next();        System.out.println("请您输入商品价格:");        double price=sc.nextDouble();        System.out.println("请输入商品数量:");        int buyNumber=sc.nextInt();               Goods g=new Goods();        g.id=id;        g.name=name;        g.price=price;        g.buyNumber=buyNumber;                for (int i = 0; i < shopCar.length; i++) {                        if (shopCar[i] == null) {                shopCar[i]=g;                break;            }        }        System.out.println("您的商品"+g.name+"已参加至购物车!!!");    }}Goods类:package mianxiangduixiang.demo;public class Goods {    public int id;    public String name;    public double price;    public int buyNumber;}思路:创建一个商品定义一个购物车的类定义一个商品类,用于创建后期创建商品对象定义一个购物车对象:用数组表示代表商品数组对象,可以存1000个搭建操作架构查看购物车商品修改购物车商品数量结算购物车商品金额结束程序//定义一个方法,进行求和变量累加求出金额 定义一个方法,修改购物车商品数量让用户输入要修改的商品id,根据id查询出要修改的商品对象(定义一个方法,查询要修改的对象)定义一个方法,可以查询出要修改的商品对象,返回商品对象判断此商品id是我们要找的定义一个方法,查看购物车商品信息,并展示出来定义一个方法,添加商品到购物车把这个商品购买信息封装成一个商品信息把这个商品对象添加到购物车数组中去找出这个数组空的地方存入说明此位置没有元素存入,把商品信息存入即可存入之后就跳出循环,无需继续遍历查询结果截图: 这次的项目开发其实按照一个有序的逻辑思路来开发的话是不难的 难在思维上的理解和概念的熟悉与否 相信很多小伙伴都看懂了 有问题下方留言哦
  • [DevKit] devkit对java源码迁移后,如何编译?
    devkit对java源码迁移后,如何编译?
  • [互动交流] 华为云OBS-SDK-JAVA
    求助一下,断点续传上传和下载,如何中断上传或下载?
  • [技术干货] [EBS][Java1.8]windows找不到文件\Studio\jre\jre_86\bin\java.exe
    Oracle的EBS系统, 3.*版本的设计器无法拾取,提示如下:临时解决方案:  Java 1.8版本下载链接, 然后在本地构造提示的路径即可.先测试这个版本是否可以使用.  Jdk-8u202-windows-i586.exe另外还可以去oracle官网下载Java1.8版本https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html的这个版本也可以, 只是要注册并且下载速度较慢 jre-8u331-windows-i586.exe除去以上操作,还需要在1.6的java环境里添加javabridge的相关内容, 具体可参考  https://bbs.huaweicloud.com/forum/thread-166931-1-1.html
  • [技术干货] Lombok 的 @EqualsAndHashCode(callSuper = false) 的使用
    这个注解的作用就是自动的给model bean实现equals方法和hashcode方法。但是,这个参数,callsuper = false 有问题吗?你在使用这个注解的时候,确定知道“为什么要重写hashcode和equals方法吗?”先看下面的测试。两个model的代码我就截图啦:父类 TV.java 和 子类 小米TV.java,使用这个注解@EqualsAndHashCode(callSuper = false) 小米tv继承tv,从继承角度讲tv有的属性,小米tv也是有的。看测试main方法 import com.lxk.model.XiaoMiTV; /** * 测试@EqualsAndHashCode注解的使用 * * @author LiXuekai on 2019/5/10 */public class EqualsAndHashCodeTest {    public static void main(String[] args) {        XiaoMiTV tv1 = new XiaoMiTV("123", "lxk", 1L, "白");        XiaoMiTV tv2 = new XiaoMiTV("456", "sql", 1L, "白");        System.out.println(tv1.equals(tv2));    }}来吧,大胆猜测一下,这个代码的运行结果。true还是false?猜完了,来看下运行结果图:这个因为咱在子类里面这么使用@EqualsAndHashCode(callSuper = false) ,不调用父类的属性,那么子类属性里面的相同的话,那hashcode的值就相同啦,所以代码里面的2个tv的equals方法的返回值是true那么,把@EqualsAndHashCode(callSuper = false) 的false改成true之后的结果呢?来,再猜测一下。猜完了,看运行结果(就只改@EqualsAndHashCode(callSuper = false) 里面的false改成true)这个估计就好猜了。@EqualsAndHashCode(callSuper = true),那就是用自己的属性和从父类继承的属性 来生成hashcode,比较的结果就好猜啦。那么,再把@EqualsAndHashCode(callSuper = false) 这个语句注释了呢?这个时候代码运行结果如何?来,还是再猜一下吧。猜完了,看下运行结果图竟然是true,原来他默认就是不管父类继承的属性的。看Lombok的提示:自动生成hashcode和equals方法,但是没call super,虽然这个class不是直接extends Object类,如果这是故意的,那么请加上@EqualsAndHashCode(callSuper = false) 这句话到你的model上。非常建议:去了解下为啥要重写hashcode和equals方法。要是说你觉得你造了,那再问一下,set为啥能去重复呢?刚刚那2个tv都放到一个set里面,能放进去吗?深入了解一下吧。————————————————原文链接:https://blog.csdn.net/qq_27093465/article/details/90056695
  • [技术干货] 链式编程(Java写法)
    在我们编写代码过程中听到过很多说法如:面向切面编程,函数式编程,面向对象编程,泛式编程等等接着我来说下链式编程普通:  1:维护性强  2:对方法的返回类型无要求  3:对程序员的业务要求适中链式:  1:编程性强  2:可读性强  3:代码简洁  4:对程序员的业务能力要求高  5:不太利于代码调试  在java中StringBuilder已经实现了链式的写法  StringBuilder builder = new StringBuilder();        builder.append("blake").append("bob").append("alice").append("linese").append("eve");是不是很方便呢!怎么实现呢,其实就是在设置的返回当前的对象jdk StringBuilder的写法@Override    public StringBuilder append(String str) {        super.append(str);        return this;    }试着按这种方法一个例子如下:public class Apple {    private double height;    private String color;    private boolean flag;    public double getHeight() {        return height;    }    public Apple setHeight(double height) {        this.height = height;        return this;// return 当前对象    }    public String getColor() {        return color;    }    public Apple setColor(String color) {        this.color = color;        return this;// return 当前对象    }    public boolean isFlag() {        return flag;    }    public Apple setFlag(boolean flag) {        this.flag = flag;        return this;// return 当前对象    }    public Apple() {    }    @Override    public String toString() {        return "Apple{" +                "height=" + height +                ", color='" + color + '\'' +                ", flag=" + flag +                '}';    }    @Override    public boolean equals(Object obj) {        return super.equals(obj);    }    public static void main(String[] args) {        Apple apple = new Apple();        apple.setColor("red").setFlag(true).setHeight(22.56);//链式        System.out.println(apple);    }}打印结果如下:Apple{height=22.56, color='red', flag=true}————————————————原文链接:https://blog.csdn.net/u010061287/article/details/78953591
  • [技术干货] 关于File文件的相关知识
    1.File类的简介      File文件类主要用于文件和目录的创建、文件的查找和文件的删除等功能,File对象代表磁盘中实际存在的文件和目录,它是通过构造方法来创建一个File对象,再通过实际需要的绝对路径来创建一个新的File实例。创建好的File实例就对应实际磁盘上的真实文件,我们就可以对这个真实文件进行创建、删除、获取相关信息等操作,这些都是会真实反应到磁盘对应的文件上的,也就是我们代码中创建了文件真实磁盘上也会创建对应的文件,删除了文件也会真实的删除对应的文件。2.File文件的创建   2.1 创建File对象和实例化   首先我们创建一个File对象和他的实例,只需传好给定待操作的文件路径,再调用File的有参构造器就可以完成对象的创建和实例化操作。File file = new File("D:\demo");   2.2 创建文件   文件可以分为文件夹(目录)及文件两种形式,这两种形式都可以是多级的,比如D:\demo\test\test.txt,如果想创建test.txt文件或者test目录,就需要他的上级目录存在。   2.2.1 如果他的上级目录或者上上级目录不存在   2.2.1.1 创建文件夹D:\demo\test   可以通过mkdir()方法或者mkdirs()方法进行创建,都不会报错,但是调用mkdir()方法如果上级或者上级以上目录不存在,不会自动创建他缺少的这些路径目录,如果缺失其中的目录他就会啥都不做,并且返回false。   如果通过mkdirs()方法进行创建,他会自动帮助创建缺失的目录,创建成功后会返回true。但是使用mkdirs()创建的路径中出现文件的话,他也将他当成目录来创建,所以mkdirs()虽然可以自动帮助创建缺失的目录,但是他只能创建目录不能创建文件。  2.2.1.2 创建文件D:\demo\test\test.txt  那么如何创建文件呢?我们可以通过createNewFile()方法进行创建一个空的文件,基本什么文件格式的文件都可以创建只不过这样创建的都是空的文件。 上面我们创建了一个test.txt的文件夹,这时候如果调用createNewFile进行文件创建的话,会什么都不做,并且返回false。如果上级或者上级以上目录缺失,则会IO异常报错,找不到指定路径。如果目录中已经存在这个文件,则会什么都不做并且返回false。2.2.2 正确的创建文件通过上面的探索,我们知道了创建文件需要注解的哪些点,那么我们就可以避免这些,第一必须上级及以上目录存在,第二必须要创建的文件在这个路径上不存在。首先我们先了解下File的路径上的相关方法public static void main(String[] args) throws IOException { // File file = new File("F:\\demo123\\test\\test.txt"); File file = new File("F:/demo123/test/test.txt"); System.out.println("file.getAbsoluteFile() :" + file.getAbsoluteFile()); System.out.println("file.getAbsolutePath() :" + file.getAbsolutePath()); System.out.println("file.getCanonicalFile() :" + file.getCanonicalFile()); System.out.println("file.getCanonicalPath() :" + file.getCanonicalPath()); System.out.println("file.getParent() :" + file.getParent()); System.out.println("file.getParentFile() :" + file.getParentFile()); System.out.println("file.getName() :" + file.getName()); System.out.println("file.getTotalSpace() :" + file.getTotalSpace()); System.out.println("file.getUsableSpace() :" + file.getUsableSpace()); System.out.println("file.getPath() :" + file.getPath()); boolean mkflag = file.createNewFile(); System.out.println(mkflag); }返回的结果是:file.getAbsoluteFile() :F:\demo123\test\test.txt file.getAbsolutePath() :F:\demo123\test\test.txt file.getCanonicalFile() :F:\demo123\test\test.txt file.getCanonicalPath() :F:\demo123\test\test.txt file.getParent() :F:\demo123\test file.getParentFile() :F:\demo123\test file.getName() :test.txt file.getTotalSpace() :271249829888 file.getUsableSpace() :254060650496 file.getPath() :F:\demo123\test\test.txt false Process finished with exit code 0接下来我们编写我们创建文件代码public static void main(String[] args) throws IOException { // File file = new File("F:\\demo123\\test\\test.txt"); File file = new File("F:/demo123/test/test.txt"); if(!file.getParentFile().exists()){ file.getParentFile().mkdirs(); } boolean mkFlag = false; if(file.exists()){ mkFlag = file.createNewFile(); System.out.println("调用创建文件方法结果是" + mkFlag); System.out.println("文件已经存在不进行创建"); }else { mkFlag = file.createNewFile(); System.out.println("调用创建文件方法结果是" + mkFlag); } if(mkFlag){ System.out.println("文件创建成功"); }else { System.out.println("文件创建失败"); } }如果创建成功返回:调用创建文件方法结果是true 文件创建成功如果创建失败返回:调用创建文件方法结果是false 文件已经存在不进行创建 文件创建失败这样我们就了解了如果创建一个文件的过程和中间要注意到的细节了。3.File类中一些常用的方法3.1 创建文件的三构造方式:File file = new File(String pathname);//文件/文件夹路径对象File file = new File(String parent, String child);//父目录绝对路径 + 子目录名称File file = new File(File parent, String child);//父目录File对象 + 子目录名称3.2 对文件的操作方法file.exists():判断文件/文件夹是否存在file.delete():删除文件/文件夹file.isDirectory():判读是否为目录file.isFile():判读是否为文件夹file.mkdir():创建文件夹(仅限一级目录)file.mkdirs():创建多及目录文件夹(包括但不限一级目录)file.createNewFile():创建文件file.getAbsolutePath():得到文件/文件夹的绝对路径file.getName():得到文件/文件夹的名字file.String():同样是得到文件/文件夹的绝对路径等于file.getAbsolutePath()file.getParent():得到父目录的绝对路径,返回值是String类型 file.getParentFile():得到父目录的绝对路径,返回值是File类型file.list():得到当前目录的子目录或者文件的名称,只是文件或者目录的名称没有前面的全路径,返回String类型的数组。注意这个方法只会查询file这个实例路径下的一级的文件或者目录,不会再往第二级进行查找。file.listFiles():得到当前目录的子目录或者文件,返回File类型的数组。注意这个方法只会查询file这个实例路径下的一级的文件或者目录,不会再往第二级进行查找。4.创建文件的一些小知识点4.1 创建文件的时候路径中的斜杠可以通过进行转义后\\的形式,也可以通过第二种/的形式。File file = new File("F:\\demo123\\test\\test.txt"); File file = new File("F:/demo123/test/test.rxt");4.2 File.separator      创建文件路径的时候这个斜杠往往挺头疼的,因为不同系统可能不会出现不识别的情况,所以出现了这个文件分隔符File.separator保证了在任何系统下不会出错。      在 Linux 中是不识别 ' \ '  的,在 UNIX 系统上分隔符被翻译成 ' / ',而在Windows系统上分隔符被翻译成 ' \ ' ,这样就消除了这些系统的区别。以上就是File文件类的简单了解和总结。
  • [互动交流] 【MRS】【hetu查询】进入hetu命令行不管输入什么都报错:Error running command: java.net.
    【功能模块】进入hetu命令行不管输入什么都报错:Error running command: java.net.ConnectException: Failed to connect to /192.168.1.140:29884但是这个ip不是hetu的节点,不知道为什么会去连这个ip【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
总条数:2301 到第 页
上滑加载中