当前位置: 首页 > news >正文

Java编程强化练习(二)

  1. 表达式计算(支持空格,连乘,连除)(选做题,不计分)

【问题描述】

从标准输入中读入一个整数算术运算表达式,如5 - 1 * 2 * 3 + 12 / 2 / 2  = 。计算表达式结果,并输出。

要求:
1、表达式运算符只有+、-、*、/,表达式末尾的’=’字符表示表达式输入结束,表达式中可能会出现空格;
2、表达式中不含圆括号,不会出现错误的表达式;
3、出现除号/时,以整数相除进行运算,结果仍为整数,例如:5/3结果应为1。

【输入形式】

在控制台中输入一个以’=’结尾的整数算术运算表达式。

【输出形式】

向控制台输出计算结果(为整数)。

【样例1输入】

5 - 1 * 2 * 3 + 12 / 2 / 2  =

【样例1输出】

2

【样例2输入】

500 =

【样例2输出】

500

【样例1说明】

输入的表达式为5 - 1 * 2 * 3 + 12 / 2 / 2 =,按照整数运算规则,计算结果为2,故输出2。

【样例2说明】

输入的表达式为500 = ,没有运算符参与运算,故直接输出500。

算法之一提示:
1、可以利用gets函数,读取整行表达式;
2、对于空格,可以考虑首先去除表达式中的所有空格
3、可以设一计数器用来记录已读取、但未参加运算的运算符的个数,根据该计数器来判断如何进行运算;
4、可以设计一函数:实现二元整数算术运算。

import java.util.Scanner;
import java.util.Scanner;
import java.util.Stack;public class ArithmeticExpression {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String expression = scanner.nextLine();int result = evaluateExpression(expression);System.out.println( result);}private static boolean isOperator(char c) {return c == '+' || c == '-' || c == '*' || c == '/';}private static int getPrecedence(char op) {if (op == '+' || op == '-')return 1;if (op == '*' || op == '/')return 2;return 0;}private static int applyOperation(int num1, int num2, char op) {switch (op) {case '+':return num1 + num2;case '-':return num1 - num2;case '*':return num1 * num2;case '/':return num1 / num2;default:return 0;}}private static int evaluateExpression(String expression) {Stack<Integer> operands = new Stack<>();Stack<Character> operators = new Stack<>();for (int i = 0; i < expression.length(); i++) {char c = expression.charAt(i);if (Character.isWhitespace(c))continue;if (Character.isDigit(c)) {int num = c - '0';while (i + 1 < expression.length() && Character.isDigit(expression.charAt(i + 1))) {num = num * 10 + (expression.charAt(i + 1) - '0');i++;}operands.push(num);} else if (c == '(') {operators.push(c);} else if (c == ')') {while (!operators.isEmpty() && operators.peek() != '(') {int num2 = operands.pop();int num1 = operands.pop();char op = operators.pop();int result = applyOperation(num1, num2, op);operands.push(result);}operators.pop(); // 弹出左括号} else if (isOperator(c)) {while (!operators.isEmpty() && isOperator(operators.peek()) && getPrecedence(operators.peek()) >= getPrecedence(c)) {int num2 = operands.pop();int num1 = operands.pop();char op = operators.pop();int result = applyOperation(num1, num2, op);operands.push(result);}operators.push(c);}}while (!operators.isEmpty()) {int num2 = operands.pop();int num1 = operands.pop();char op = operators.pop();int result = applyOperation(num1, num2, op);operands.push(result);}return operands.pop();}
}

2.合并数列

【问题描述】从标准输入上读入2N行(行号从0开始)由空格分隔的整数,并顺序将第2i和2i+1行(0 <= i <= N)合并成一个由小到大排好序并删除重复数字的数列,写在标准输出上,每个数列一行。每一个原始数列不超过50个数字。
【输入形式】输入2N行整数,每行对应一个数列。每行有k个数字,是属于这一数列的所有整数,由空格分隔。这些整数随机排列,并可能含有重复数字。程序的任务就是将每两个相邻的数列合并成一个,并且从小到大排序,同时要删除重复数字。
【输出形式】输出有N行,每行有若干个空格分隔的整数,是在输入文件中对应两个输入行的合并结果。并且:
1.这些数字已经从小到大排序。
2.不含重复数字。
【样例输入】
18 29 30 27 26
20 30 5 29
76 80
99 233 87 35 24 9
27 234 27
65 70 39 87 35 24 100
【样例输出】
5 18 20 26 27 29 30
9 24 35 76 80 87 99 233
24 27 35 39 65 70 87 100 234
【样例说明】输入共有6行整数。第一个数列含5个整数,分别是18、29、30、27、26。依次类推,第二个数列含4个整数,第三个数列含2个整数,&hellip;&hellip;,第六个数列含7个整数。输出共有三行数字。输出的第一行是将原输出的第一、二个数列合并,同时删除重复数字并从小到大排序的结果。输出的第二行是将原输出的第三、四个数列合并,同时删除重复数字并从小到大排序的结果。输出的第三行是将原输出的第五、六个数列合并,同时删除重复数字并从小到大排序的结果。
【运行时限】要求每次运行时间限制在10秒之内。超出时间则认为程序错误。
【评分标准】输出的数字中。如果你的程序计算的完全正确,该测试点得10分,否则算该测试点得分为0。

import java.util.*;public class MergeAndSort {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);List<List<Integer>> result = new ArrayList<>();while (scanner.hasNextLine()) {String line = scanner.nextLine();if (line.isEmpty()) {break;}List<Integer> line1 = parseLine(line);if (!scanner.hasNextLine()) {// 如果只有单独的一行,直接输出该行而不进行合并result.add(line1);break;}List<Integer> line2 = parseLine(scanner.nextLine());if (line1.isEmpty() || line2.isEmpty()) {// 如果其中一行为空,直接输出非空的行if (!line1.isEmpty()) {result.add(line1);}if (!line2.isEmpty()) {result.add(line2);}} else {List<Integer> merged = mergeAndSort(line1, line2);result.add(merged);}}for (List<Integer> mergedList : result) {Collections.sort(mergedList); // 对每一行进行排序for (int num : mergedList) {System.out.print(num + " ");}System.out.println();}}private static List<Integer> parseLine(String line) {List<Integer> numbers = new ArrayList<>();String[] tokens = line.split(" ");for (String token : tokens) {numbers.add(Integer.parseInt(token));}return numbers;}private static List<Integer> mergeAndSort(List<Integer> list1, List<Integer> list2) {Set<Integer> set = new TreeSet<>();set.addAll(list1);set.addAll(list2);return new ArrayList<>(set);}
}

3.计算星期

【问题描述】
已知1980年1月1日是星期二。
任意输入一个日期,求这一天是星期几。
【输入形式】
从键盘输入一行字符串&ldquo;Y-M-D&rdquo;,是一个有效的公历日期。其中Y为年(1980&le;Y&le;3000),M为月,D为天,都不带有前缀0。
【输出形式】
在屏幕输出结果。
输出只有一行,是代表该日星期的字符串。对于星期一至星期日,分别输出Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday。在行末要输出一个回车符。判断闰年的算法是:

年份能被4整除并且不能被100整除,或者能被四百整除。
【输入样例】
2004-1-6
【输出样例】
Tuesday
【评分标准】
本题不准使用数学库函数。运行时限1秒。结果完全正确得20分,每个测试点4分。

import java.util.Scanner;public class CalculateWeekday {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();String[] tokens = input.split("-");int year = Integer.parseInt(tokens[0]);int month = Integer.parseInt(tokens[1]);int day = Integer.parseInt(tokens[2]);int weekday = calculateWeekday(year, month, day);String weekdayString = getWeekdayString(weekday);System.out.println(weekdayString);}private static int calculateWeekday(int year, int month, int day) {// 计算从1980年1月1日到目标日期的总天数int days = calculateTotalDays(year, month, day);// 1980年1月1日是星期二,因此计算星期数时需要加上偏移量int offset = 2;// 对7取模,得到星期几的数值(0代表星期一,1代表星期二,以此类推)int weekday = ( days) % 7;return weekday;}private static int calculateTotalDays(int year, int month, int day) {// 每个月的天数int[] daysInMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};// 判断是否为闰年,并更新2月的天数if (isLeapYear(year)) {daysInMonth[1] = 29;}int totalDays = 0;// 计算整年的天数for (int i = 1980; i < year; i++) {if (isLeapYear(i)) {totalDays += 366;} else {totalDays += 365;}}// 计算当年的天数for (int i = 0; i < month - 1; i++) {totalDays += daysInMonth[i];}totalDays += day;return totalDays;}private static boolean isLeapYear(int year) {return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);}private static String getWeekdayString(int weekday) {String[] weekdays = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};return weekdays[weekday];}
}
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Scanner;public class CalculateWeekday {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-M-d");LocalDate date = LocalDate.parse(input, formatter);DayOfWeek weekday = date.getDayOfWeek();String weekdayString = weekday.toString();System.out.println(weekdayString);}
}
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.util.Scanner;public class CalculateWeekday {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input = scanner.nextLine();String[] tokens = input.split("-");int year = Integer.parseInt(tokens[0]);int month = Integer.parseInt(tokens[1]);int day = Integer.parseInt(tokens[2]);LocalDate date = LocalDate.of(year, month, day);DayOfWeek weekday = date.getDayOfWeek();String weekdayString = weekday.toString().substring(0, 1) + weekday.toString().substring(1).toLowerCase();System.out.println(weekdayString);}
}

4、比较两组整数

【问题描述】
比较两组整数是否有相同的元素,不考虑元素的顺序,并忽略元素重复的情况。例如:
1  4  9  16  9  7  4  9  11
与下列一组整数:
11  7  9  16  4  1
相同。
【输入形式】
分行输入两组整数,以空格分割
【输出形式】
打印两组整数中相同的元素,顺序以第一行的整数输出顺序为准,如果没有相同元素,打印&ldquo;No Answer&rdquo;
【输入样例】
1 4  9  16  9  7  4  9  11
11  7  9  16  4  1
【输出样例】

"#"代表空格
1#4#9#16#7#11#
【样例说明】
输入两组整数
1  4  9  16  9  7  4  9  11
11  7  9  16  4  1
由于这两个数组具有相同的元素,顺序打印第一行与第二行相同的元素

【评分标准】
该题要求输出相同元素,答对得20分,每个测试点4分。

import java.util.*;public class CompareIntegers {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String input1 = scanner.nextLine();String input2 = scanner.nextLine();String[] nums1 = input1.split(" ");String[] nums2 = input2.split(" ");Set<String> set1 = new LinkedHashSet<>(Arrays.asList(nums1));Set<String> set2 = new HashSet<>(Arrays.asList(nums2));set1.retainAll(set2);if (set1.isEmpty()) {System.out.println("No Answer");} else {StringBuilder output = new StringBuilder();for (String num : nums1) {if (set1.contains(num)) {output.append(num).append(" ");set1.remove(num);}}output.deleteCharAt(output.length() - 1);System.out.println(output.toString());}}
}

5、字符串匹配

问题描述】利用“通配符”,可以用简单的方法标记一组字符串。
通配符有两个,“?”代表一个任意字符,“*”代表0个或多个任意字符。
例如:
AB?.txt可以表示AB1.txt,AB2.txt,ABa.txt 等。
AB*.txt可以表示AB.txt, AB1.txt,AB332.txt,ABaa.txt等。
编写程序,判断一个字符串是否符合一个含有通配符的串。
【输入文件】从文件match.in读取输入。
第一行是一个串,含有通配符“?”或“*”,或两者兼有。
第二行是一个数字n(3≤n≤10),代表后续有n个待检验串。
后面的n行,每行有一个不含通配符的待检验串。
输入中的所有串均只包含英文字母(大小写)和数字,不含空格,长度在80字符以内。
【输出文件】输出到文件match.out中。将所有符合的串按原顺序分行打印。在每一行末均输出一个回车符。
【输入样例】
abcd?123*
4
abce123
abcda12345
abcda123
1234
【输出样例】
abcda12345
abcda123
【样例说明】abcda12345和abcda123符合abcd?123*的顺序。
【评分标准】结果正确则该测试点得满分,否则该测试点得0分。上传c语言源程序为match.c。

import java.util.Scanner;public class everydayjava {public static boolean matchPattern(String pattern, String text) {int m = pattern.length();int n = text.length();boolean[][] a = new boolean[m + 1][n + 1];a[0][0] = true;for (int i = 1; i <= m; i++) {for (int j = 0; j <= n; j++) {if (pattern.charAt(i - 1) == '*') {a[i][j] = a[i - 1][j] || (j > 0 && a[i][j - 1]);} else if (j > 0 && (pattern.charAt(i - 1) == '?' || pattern.charAt(i - 1) == text.charAt(j - 1))) {a[i][j] = a[i - 1][j - 1];}}}return a[m][n];}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("请输入测试判断模板: ");String pattern = scanner.nextLine();System.out.print("请输入测试数据的个数: ");int n = scanner.nextInt();scanner.nextLine();System.out.println("请输入用于测试的字符串:");for (int i = 0; i < n; i++) {String text = scanner.nextLine();if (matchPattern(pattern, text)) {System.out.println(text);}}scanner.close();}
}

6.将文件中每一行字符反序

【问题描述】对于一个文本文件text1.dat,编写一个程序,将该文件中的每一行字符颠倒顺序后输出到另一个文件text2.dat中。
【输入文件】输入文件为当前目录下的text1.dat,该文件含有多行任意字符,也可能有空行。每个文本行最长不超过80个字符。在最后一行的结尾也有一个回车符。
【输出文件】输出文件为当前目录下的text2.dat。
【样例输入】设输入文件text1.dat为:
This is a test!
Hello, world!
How are you?
【样例输出】输出文件text2.dat为:
!tset a si sihT
!dlrow ,olleH
?uoy era woH
【样例说明】将输入文件反序输出。
【评分标准】输出文件应与输入文件的字符个数相等,并且符合题目规定的格式。如果你的程序输出正确,该测试点得满分,否则该测试点不得分。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class ReverseLines {public static void main(String[] args) {String inputFile = "text1.dat";String outputFile = "text2.dat";try (BufferedReader reader = new BufferedReader(new FileReader(inputFile));BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) {String line;while ((line = reader.readLine()) != null) {String reversedLine = reverseString(line);writer.write(reversedLine);writer.newLine();}System.out.println("Reversing lines completed successfully.");} catch (IOException e) {System.out.println("An error occurred: " + e.getMessage());}}private static String reverseString(String str) {StringBuilder reversed = new StringBuilder(str);return reversed.reverse().toString();}
}

相关文章:

Java编程强化练习(二)

表达式计算&#xff08;支持空格&#xff0c;连乘&#xff0c;连除&#xff09;&#xff08;选做题&#xff0c;不计分&#xff09; 【问题描述】 从标准输入中读入一个整数算术运算表达式&#xff0c;如5 - 1 * 2 * 3 12 / 2 / 2 。计算表达式结果&#xff0c;并输出。 …...

Redis的高可用模式

1. 什么是高可用&#xff1f; 高可用&#xff08;High Availability, HA&#xff09;是指在信息技术中确保系统、服务或应用程序在绝大多数时间内都是可操作和可访问的能力。这通常涉及以下几个关键方面&#xff1a; 最小化停机时间: 高可用系统的目标是减少因硬件故障、系统升…...

非功能关键知识总结(一)

文章目录 一、稳定性(一)、服务级别协议1、SLA2、OLA3、UC (二)、可用性指标(三)、突发事件等级 三、质量(一)、千行代码缺陷数量(二)、软件质量模型的发展(三)、产品质量模型 四、安全(一)、网络安全 五、灾备(一)、灾备指标(二)、灾难恢复等级(三)、容灾技术分类 一、稳定性 …...

时间序列趋势检验相关检验方法:斜率法、Cox-Stuart检验、Mann-Kendall检验

文章目录 1.斜率法1.1.原理1.2.优缺点1.3.Python代码2.Cox-Stuart检验2.1.原理2.2.优缺点2.3.Python代码3.Mann-Kendall 检验3.1.原理3.1.1.假设前提3.1.2.趋势检验3.1.3.S到Z的变换原理3.1.4.Var(s)是如何得到的3.1.5.衡量趋势的指标:倾斜度...

Redis相关知识

yum安装redis 使用以下命令&#xff1a;直接将redis安装到Linux服务器&#xff08;Xshell&#xff09;中 yum -y install redis 启动redis 使用以下命令&#xff0c;以后台运行方式启动redis redis-server /etc/redis.conf & 操作redis 使用以下命令启动redis客户端 redis-…...

数据管理系统-week10-自由访问控制

文章目录 前言一、用户管理用户管理语句介绍二、数据库管理三、特权(重点考点)Administrative (global) privileges数据库特权表权限列权限四、角色参考文献前言 这节课主要讲了用户管理数据库的具体语句,数据库特权当中的全局特权,数据库特权,表特权与列特权的使用与注意…...

Python遥感开发之批量拼接

Python遥感开发之批量拼接 1 遥感图像无交错的批量拼接2 遥感图像有交错的批量拼接 前言&#xff1a;主要借助python实现遥感影像的批量拼接&#xff0c;遥感影像的批量拼接主要分为两种情况&#xff0c;一种是遥感图像无交错&#xff0c;另一种情况是遥感图像相互有交错。具体…...

【bat】批处理脚本大全

目录 1.概述 2.变量 3.运算符 3.2.重定向运算符 3.3.多命名运算符 3.4.管道运算符 4.命令 4.1.基本命令 4.2.参数传递 4.3.查看脚本内容 4.4.注释 4.5.日期和时间 4.6.启动脚本 4.7.调用其他bat 4.8.任务管理 4.8.1.任务列表查看 4.8.2.任务终止 4.9.文件夹 …...

java设计模式学习之【单例模式】

文章目录 引言单例模式简介定义与用途实现方式&#xff1a;饿汉式懒汉式 UML 使用场景优势与劣势单例模式在spring中的应用饿汉式实现懒汉式实现数据库连接示例代码地址 引言 单例模式是一种常用的设计模式&#xff0c;用于确保在一个程序中一个类只有一个实例&#xff0c;并且…...

UWB高精度定位系统项目源码

在现代社会中&#xff0c;精准定位技术对于各行各业都至关重要。为了满足对高精度定位的需求&#xff0c;超宽带&#xff08;Ultra-Wideband, UWB&#xff09;技术应运而生。UWB高精度定位系统以其出色的定位精度和多样化的应用领域而备受关注。本文将深入探讨UWB高精度定位系统…...

WPF Live Charts2 自学笔记

文章目录 前言实现效果微软平台的历史问题 WPF 项目搭建Nuget添加额外框架添加项目初始化livecharts配置其它LiveCharts2 案例简单案例Demo示例ViewViewModel GPU渲染 Github地址仓库 前言 LiveChart 是C# 上面很受欢迎的统计图 UI控件。最近在学WPFhalcon开发&#xff0c;想想…...

大小堆的实现(C语言)

目录 前言 一种完全二叉树&#xff1a;堆 堆的概念 堆的性质 建堆的时间复杂度 建堆的空间复杂度&#xff1a; 小堆的实现 必要补充 堆的初始化 堆的销毁 向上调整算法 堆的插入 向下调整算法 堆的删除 获取堆顶元素 获取堆中元素个数 堆的判空 最终代码 He…...

Linux系统之centos7编译安装Python 3.8

前言 CentOS (Community Enterprise Operating System) 是一种基于 Red Hat Enterprise Linux (RHEL) 进行源代码再编译并免费提供给用户的 Linux 操作系统。 CentOS 7 采用了最新的技术和软件包&#xff0c;并提供了强大的功能和稳定性。它适用于各种服务器和工作站应用场景&a…...

Lambda表达式与方法引用

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 引子 先来看一个案例 …...

二维数组处理(一)

输入整型二维数组a&#xff08;5行5列&#xff09;&#xff0c;完成如下要求&#xff1a; 输出二维数组a。 将a的第2行和第4行元素对调后&#xff0c;形成新的二维数组a并按行输出&#xff0c;每个元素之间隔一个空格。(行号从0开始计算)。 用对角线&#xff08;指二维数组左…...

基于JNI实现调用C++ SDK

基于JNI实现调用C SDK 背景分析解决实践 背景 上篇文章总结了几种Java项目调用C/C SDK项目方法&#xff0c;在逐一实践、踩坑后&#xff0c;最终还是敲定采用 JNI 方式进行实现。在文章开始的过程&#xff0c;会先大概讲讲笔者遇到的情况&#xff0c;因为封装方式需要根据实际…...

计算机组成原理笔记——存储器(静态RAM和动态RAM的区别,动态RAM的刷新, ROM……)

■ 随机存取存储器 ■ 1.随机存取存储器&#xff1a;按存储信息的原理不同分为&#xff1a;静态RAM和动态RAM 2.静态RAM&#xff08;SRAM&#xff09;&#xff1a;用触发器工作原理存储信息&#xff0c;但电源掉电时&#xff0c;存储信息会丢失具有易失性。 3.存储器的基本单元…...

企业计算机服务器locked1勒索病毒数据恢复,locked1勒索病毒解密流程

随着计算机技术的不断发展&#xff0c;越来越多的企业走向数字化办公时代&#xff0c;计算机技术为企业的生产运营提供了有利条件&#xff0c;但也为企业带来了网络安全威胁。在本月&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的速达办公软件遭到了lo…...

Session 与 JWT 的对决:谁是身份验证的王者? (下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

论文笔记:Confidential Assets

Confidential Assets 描述了一种称为“保密交易”的方案&#xff0c;该方案模糊了所有UTXO的金额&#xff0c;同时保持了不创建或销毁硬币的公共可验证性。进一步将此方案扩展到“保密资产”&#xff0c;一种单一的基于区块链的分类帐可以跟踪多种资产类型的方案。将保密交易扩…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...