21章 规则集和映射

news2024/9/26 1:23:12

1.同20章 线性表、栈、队列和优先队列的第10题。

2.同20章 线性表、栈、队列和优先队列的第1题。

3.修改程序清单21-7中的程序。如果关键字在注释或者字符串中,则不进行统计。将Java文件名从命令行传递。

import java.io.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class Test {
	public static final String[] keyWordsArray = {"abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float", "for", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", "volatile", "while"};

	public static final Set<String> keyWordSet = new HashSet<>(Arrays.asList(keyWordsArray));

	public static void main(String[] args) {
		if (args.length != 1) {
			System.err.println("命令行参数有误!");
			return;
		}
		int r = countKeyWords(new File(args[0]));
		if (r == -1)
			System.err.println("文件打开失败!");
		else
			System.out.println("有" + r + "个Java关键字!");
	}

	public static int countKeyWords(File file) {
		int count = 0;
		try (FileReader reader = new FileReader(file)) {
			int c;
			boolean lineNote = true, blockNote = true;
			StringBuilder sb = new StringBuilder();
			while ((c = reader.read()) != -1)
				switch ((char) c) {
					case '/':
						if ((c = reader.read()) == -1) return count;
						if ((char) c == '/') lineNote = false;
						else if ((char) c == '*') blockNote = false;
						if (keyWordSet.contains(sb.toString())) ++count;
						sb.setLength(0);
						break;
					case '\n':
						if (!lineNote) {
							lineNote = true;
							break;
						}
					case ' ':
					case '\t':
						if (keyWordSet.contains(sb.toString())) ++count;
						sb.setLength(0);
						break;
					case '*':
						if ((c = reader.read()) == -1) return count;
						if ((char) c == '/') blockNote = true;
						break;
					default:
						if (lineNote && blockNote) sb.append((char) c);
				}
		} catch (IOException e) {
			return -1;
		}
		return count;
	}
}

4.编写一个程序,提示用户输入一个文本文件名,然后显示文件中的元音和辅音的数目。使用规则集存储元音AEIOU

public static void main(String[] args) {
	Map<Character, Integer> map = new HashMap<>(Map.of('A', 0, 'E', 0, 'I', 0, 'O', 0, 'U', 0));
	System.out.println("请输入文件名:");
	Scanner scanner = new Scanner(System.in);
	String fileName = scanner.next();
	scanner.close();
	try (FileReader reader = new FileReader(fileName)) {
		int c;
		while ((c = reader.read()) != -1)
			switch ((char) c) {
				case 'A':
				case 'a':
					map.put('A', map.get('A') + 1);
					break;
				case 'E':
				case 'e':
					map.put('E', map.get('E') + 1);
					break;
				case 'I':
				case 'i':
					map.put('I', map.get('I') + 1);
					break;
				case 'O':
				case 'o':
					map.put('O', map.get('O') + 1);
					break;
				case 'U':
				case 'u':
					map.put('U', map.get('U') + 1);
			}
		map.forEach((k, v) -> System.out.println("字母" + k + "出现了" + v + "次"));
	} catch (IOException e) {
		System.err.println("文件打开失败!");
	}
}

5.编写一个程序,将一个Java程序转换为一个HTML文件。在HTML文件中,关键字、注释和字面量分别用粗体的深蓝色、绿色和蓝色显示。使用命令行传递Java文件和HTML文件。例如,下面的命令

java Exercise21_05 Welcome.java Welcome.html

将Welcome.java转换为Welcome.html。下图a显示了一个Java文件,它对应的HTML文件如图b所示。

5

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Set;

public class JavaToHtmlConverter {
	public static final Set<String> KEYWORDS = Set.of("abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", "volatile", "while");

	public static void main(String[] args) {
		if (args.length != 2) {
			System.err.println("命令行参数有误!");
			return;
		}
		try {
			convert(args[0], args[1]);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void convert(String javaFilePath, String htmlFilePath) throws IOException {
		FileReader reader = new FileReader(javaFilePath);
		FileWriter writer = new FileWriter(htmlFilePath);
		writer.write("<!DOCTYPE html>\n");
		writer.write("<html>\n");
		writer.write("<head>\n");
		writer.write("<title>Java Source Code as HTML</title>\n");
		writer.write("<style>\n");
		writer.write(".keyword { color: darkblue; font-weight: bold; }\n");
		writer.write(".comment { color: green; }\n");
		writer.write(".literal { color: blue; }\n");
		writer.write("</style>\n");
		writer.write("</head>\n");
		writer.write("<body>\n");
		writer.write("<pre>\n");
		int c;
		StringBuilder sb = new StringBuilder();
		boolean lineNote = false, blockNote = false;
		String s;
		while ((c = reader.read()) != -1)
			switch ((char) c) {
				case '/':
					if (lineNote || blockNote) {
						writer.write((char) c);
						break;
					}
					if ((c = reader.read()) == -1) {
						writer.write(sb.toString());
						writer.write("/\n</pre>\n</body>\n</html>");
						reader.close();
						writer.close();
						return;
					}
					if (!sb.isEmpty() && sb.charAt(sb.length() - 1) == '\'' && (char) c == '\'') {
						sb.deleteCharAt(sb.length() - 1);
						s = sb.toString();
						if (!s.isEmpty())
							if (KEYWORDS.contains(s)) {
								writer.write("<span class=\"keyword\">");
								writer.write(s);
								writer.write("</span>");
							} else if (isLiteral(s)) {
								writer.write("<span class=\"literal\">");
								writer.write(s);
								writer.write("</span>");
							} else
								writer.write(s);
						writer.write("<span class=\"literal\">'/'</span>");
						break;
					}
					s = sb.toString();
					if ((char) c == '/') {
						if (KEYWORDS.contains(s)) {
							writer.write("<span class=\"keyword\">");
							writer.write(s);
							writer.write("</span> <span class=\"comment\">//");
							lineNote = true;
							sb.setLength(0);
							break;
						}
						if (!s.isEmpty()) writer.write(s);
						writer.write("<span class=\"comment\">//");
						lineNote = true;
						break;
					}
					if ((char) c == '*') {
						if (KEYWORDS.contains(s)) {
							writer.write("<span class=\"keyword\">");
							writer.write(s);
							writer.write("</span> <span class=\"comment\">");
							blockNote = true;
							sb.setLength(0);
							break;
						}
						if (!s.isEmpty()) writer.write(s);
						writer.write("<span class=\"comment\">/*");
						blockNote = true;
						break;
					}
					if (!s.isEmpty()) writer.write(s);
					writer.write('/');
					writer.write(c);
					break;
				case '\"':
					if (lineNote || blockNote || !sb.isEmpty()) {
						writer.write((char) c);
						break;
					}
					sb.append('\"');
					while ((char) (c = reader.read()) != '\"') {
						if (c == -1) {
							writer.write(sb.toString());
							writer.write("\n</pre>\n</body>\n</html>");
							reader.close();
							writer.close();
							return;
						}
						if (!sb.isEmpty() && sb.charAt(sb.length() - 1) == '/') {
							if ((char) c == '/') {
								sb.deleteCharAt(sb.length() - 1);
								writer.write(sb.toString());
								sb.setLength(0);
								writer.write("<span class=\"comment\">//");
								lineNote = true;
								break;
							}
							if ((char) c == '*') {
								sb.deleteCharAt(sb.length() - 1);
								writer.write(sb.toString());
								sb.setLength(0);
								writer.write("<span class=\"comment\">/*");
								blockNote = true;
								break;
							}
						}
						sb.append((char) c);
					}
					if (!lineNote && !blockNote) {
						writer.write("<span class=\"literal\">");
						writer.write(sb.toString());
						sb.setLength(0);
						writer.write("\"</span>");
					}
					break;
				case '*':
					if (!blockNote) {
						sb.append('*');
						break;
					}
					if ((c = reader.read()) == -1) {
						writer.write(sb.toString());
						writer.write("*\n</pre>\n</body>\n</html>");
						reader.close();
						writer.close();
						return;
					}
					if ((char) c == '/') {
						blockNote = false;
						writer.write("*/</span>");
						break;
					}
					writer.write('*');
					writer.write('/');
					break;
				case '\n':
					if (lineNote) {
						writer.write(sb.toString());
						sb.setLength(0);
						writer.write("</span>\n");
						lineNote = false;
						break;
					}
				case ' ':
				case '\t':
				case '(':
				case '[':
				case '{':
				case ';':
				case ':':
				case ')':
				case ']':
				case '}':
				case '.':
				case ',':
				case '\r':
				case '=':
				case '+':
				case '-':
				case '&':
				case '|':
				case '~':
				case '^':
				case '!':
				case '<':
				case '>':
				case '?':
					s = sb.toString();
					if (s.isEmpty()) {
						writer.write(c);
						break;
					}
					if (lineNote || blockNote) {
						writer.write(s);
						writer.write(c);
						sb.setLength(0);
						break;
					}
					if (KEYWORDS.contains(s)) {
						writer.write("<span class=\"keyword\">");
						writer.write(s);
						writer.write("</span>");
					} else if (isLiteral(s)) {
						writer.write("<span class=\"literal\">");
						writer.write(s);
						writer.write("</span>");
					} else
						writer.write(s);
					sb.setLength(0);
					writer.write(c);
					break;
				default:
					if (lineNote || blockNote) {
						writer.write(c);
						break;
					}
					sb.append((char) c);
			}
		s = sb.toString();
		if (lineNote || blockNote) {
			writer.write(s);
			writer.write("</span>");
		} else if (KEYWORDS.contains(s)) {
			writer.write("<span class=\"keyword\">");
			writer.write(s);
			writer.write("</span>");
		} else if (isLiteral(s)) {
			writer.write("<span class=\"literal\">");
			writer.write(s);
			writer.write("</span>");
		} else
			writer.write(s);
		writer.write("\n</pre>\n</body>\n</html>");
		reader.close();
		writer.close();
	}

	// 判断是否是字符或者数字
	private static boolean isLiteral(String word) {
		return word.matches("'.'") || word.matches("[-+]?(?:\\b\\d+(?:\\.\\d*)?(?:[eE][-+]?\\d+)?[fF]?|[lL]?\\b\\d+\\b)");
	}
}

6.编写一个程序,读取不确定个数的整数,然后查找其中出现频率最高的数字。当输入为0时,表示结束输入。例如,如果输入的数据是2 3 40 3 5 4 -3 3 3 2 0,那么数字3的出现频率是最高的。如果出现频率最高的数字不是一个而是多个,则应该将它们全部报告。例如,在线性表9 30 3 9 3 2 4中,3和9都出现了两次,所以3和9都应该被报告。

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		HashMap<Integer, Integer> map = new HashMap<>();
		LinkedList<Integer> maxNumList = new LinkedList<>();
		Scanner scanner = new Scanner(System.in);
		int x, maxNum = 0;
		while ((x = scanner.nextInt()) != 0) {
			int v;
			if (map.containsKey(x)) {
				v = map.get(x);
				map.put(x, ++v);
			} else
				map.put(x, v = 1);
			if (v > maxNum) {
				maxNum = v;
				maxNumList.clear();
				maxNumList.push(x);
			} else if (v == maxNum)
				maxNumList.push(x);
		}
		scanner.close();
		System.out.println(maxNumList);
	}
}

7.改写程序清单21-9,将单词按出现次数的升序显示。

import java.util.*;

public class Test {
	public static void main(String[] args) {
		String text = "Good morning. Have a good class. Have a good visit. Have fun!";
		String[] words = text.split("[\\s+\\p{P}]");
		HashMap<String, Integer> map = new HashMap<>();
		for (String word : words)
			if (!word.isEmpty()) {
				String s = word.toLowerCase();
				map.put(s, map.getOrDefault(s, 0) + 1);
			}
		ArrayList<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
		Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
			@Override
			public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
				return o1.getValue().compareTo(o2.getValue());
			}
		});
		for (Map.Entry<String, Integer> entry : list) System.out.println(entry.getKey() + '\t' + entry.getValue());
	}
}

8.改写程序清单21-9,从文本文件中读取文本,文本文件名作为命令行参数传递。单词由空格、标点符号(,;.:?)、引号('")以及括号分隔。单词计数时不区分大小写(例如,认为Good和good是一样的单词)。单词必须以字母开头。以单词的字母顺序显示输出,每个单词前面显示其出现次数。

import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;
import java.util.function.BiConsumer;

public class Test {
	public static void main(String[] args) throws IOException {
		if (args.length != 1) {
			System.err.println("命令行参数不正确!");
			return;
		}
		FileReader reader = new FileReader(args[0]);
		Map<String, Integer> map = new TreeMap<>();
		int c;
		StringBuilder sb = new StringBuilder();
		String s;
		while ((c = reader.read()) != -1)
			switch ((char) c) {
				case ' ':
				case ',':
				case ';':
				case '.':
				case ':':
				case '?':
				case '\'':
				case '"':
				case '(':
				case '[':
				case '{':
				case ')':
				case ']':
				case '}':
				case '\n':
				case '\r':
					if (sb.isEmpty()) break;
					if (!Character.isLetter(sb.charAt(0))) { // 认为只要以字母开头都是“单词”
						sb.setLength(0);
						break;
					}
					s = sb.toString().toLowerCase();
					sb.setLength(0);
					map.put(s, map.getOrDefault(s, 0) + 1);
					break;
				default:
					sb.append((char) c);
			}
		reader.close();
		map.forEach(new BiConsumer<String, Integer>() {
			@Override
			public void accept(String s, Integer i) {
				System.out.println(String.valueOf(i) + '\t' + s);
			}
		});
	}
}

9.改写编程练习题8.37,在映射中存储州和其首府的条目。你的程序应该提示用户输入一个州,然后显示该州的首府。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Test {
	public static Map<String, String> provincialCapital;

	public static void main(String[] args) {
		getData();
		System.out.println("请输入省份:");
		Scanner scanner = new Scanner(System.in);
		String s = scanner.next();
		scanner.close();
		if (provincialCapital.containsKey(s))
			System.out.printf("%s的省会是%s。", s, provincialCapital.get(s));
		else
			System.out.printf("不存在省会%s!", s);
	}

	private static void getData() {
		provincialCapital = new HashMap<>(29, 1f);
		provincialCapital.put("河北", "石家庄");
		provincialCapital.put("山西", "太原");
		provincialCapital.put("辽宁", "沈阳");
		provincialCapital.put("吉林", "长春");
		provincialCapital.put("黑龙江", "哈尔滨");
		provincialCapital.put("江苏", "南京");
		provincialCapital.put("浙江", "杭州");
		provincialCapital.put("安徽", "合肥");
		provincialCapital.put("福建", "福州");
		provincialCapital.put("江西", "南昌");
		provincialCapital.put("山东", "济南");
		provincialCapital.put("河南", "郑州");
		provincialCapital.put("湖北", "武汉");
		provincialCapital.put("湖南", "长沙");
		provincialCapital.put("广东", "广州");
		provincialCapital.put("海南", "海口");
		provincialCapital.put("四川", "成都");
		provincialCapital.put("贵州", "贵阳");
		provincialCapital.put("云南", "昆明");
		provincialCapital.put("陕西", "西安");
		provincialCapital.put("甘肃", "兰州");
		provincialCapital.put("青海", "西宁");
		provincialCapital.put("台湾", "台北");
		provincialCapital.put("内蒙古", "呼和浩特");
		provincialCapital.put("广西", "南宁");
		provincialCapital.put("西藏", "拉萨");
		provincialCapital.put("宁夏", "银川");
		provincialCapital.put("新疆", "乌鲁木齐");
	}
}

10.重写程序清单21-7,读入一个Java源代码文件并且统计文件中每个关键字的出现次数。如果关键字是在注释中或者字符串字面值中,则不要进行统计。

import java.io.FileReader;
import java.io.IOException;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class Test {
	public static final Set<String> keywords = Set.of("abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", "volatile", "while");

	private static final Map<String, Integer> map = new TreeMap<>();

	public static void main(String[] args) throws IOException {
		if (args.length != 1) {
			System.err.println("命令行参数不正确!");
			return;
		}
		int c;
		StringBuilder sb = new StringBuilder();
		String s;
		FileReader reader = new FileReader(args[0]);
		// 第1位:是否是行注释
		// 第2位:是否是块注释
		// 第3位:是否是字符串
		byte isValid = 0;
		while ((c = reader.read()) != -1)
			switch ((char) c) {
				case '/':
					if (isValid != 0) break; // 不考虑字符串还未结束就开始行注释以及行注释中开始块注释的情况 (语法错误!)
					if ((c = reader.read()) == -1) {
						if (!sb.isEmpty()) {
							s = sb.toString();
							if (keywords.contains(s)) map.put(s, map.getOrDefault(s, 0) + 1);
						}
						printKeywordFrequency();
						return;
					}
					isValid = switch ((char) c) {
						case '/' -> 1;
						case '*' -> 2;
						default -> 0;
					};
					s = sb.toString();
					sb.setLength(0);
					if (keywords.contains(s)) map.put(s, map.getOrDefault(s, 0) + 1);
					break;
				case '"':
					if (isValid == 4) {
						isValid = 0;
						break;
					}
					if (isValid != 0) break;
					isValid = 4;
					s = sb.toString();
					sb.setLength(0);
					if (keywords.contains(s)) map.put(s, map.getOrDefault(s, 0) + 1);
					break;
				case '\n':
					if (isValid == 1) {
						isValid = 0;
						break;
					}
				case ' ':
				case '\t':
				case '\r':
				case '(':
				case ')':
				case '[':
				case ']':
				case '{':
				case '}':
				case ',':
				case '.':
				case ';':
				case '=':
				case '~':
				case '+':
				case '-':
				case '?':
				case '!':
				case '^':
				case '&':
				case '|':
				case '<':
				case '>':
					if (isValid != 0) break;
					if (sb.isEmpty()) break;
					s = sb.toString();
					if (keywords.contains(s)) map.put(s, map.getOrDefault(s, 0) + 1);
					sb.setLength(0);
					break;
				case '*':
					if (isValid == 0) {
						sb.append('*');
						break;
					}
					if (isValid != 2) break;
					if ((c = reader.read()) == -1) {
						if (!sb.isEmpty()) {
							s = sb.toString();
							if (keywords.contains(s)) map.put(s, map.getOrDefault(s, 0) + 1);
						}
						printKeywordFrequency();
						return;
					}
					if ((char) c == '/') isValid = 0;
					break;
				default:
					if (isValid == 0) sb.append((char) c);
			}
		reader.close();
		if (!sb.isEmpty()) {
			s = sb.toString();
			if (keywords.contains(s)) map.put(s, map.getOrDefault(s, 0) + 1);
		}
		printKeywordFrequency();
	}

	private static void printKeywordFrequency() {
		if (map.isEmpty())
			System.out.println("不存在关键字!");
		else
			map.forEach((s, i) -> System.out.printf("关键字%s出现了%d次。\n", s, i));
	}
}

14.重写程序清单12.18,为ListOfPendingURLslistOfTraversedURLs采用合适的新数据结构以提高性能。

import java.io.IOException;
import java.util.Scanner;

public class Test {
	public static void main(String[] args) throws IOException {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入一个地址:");
		String url = scanner.nextLine();
		scanner.close();
		WebCrawler crawler = new WebCrawler() {
			@Override
			public void eachURL(String url) {
				System.out.println("Crawl: " + url);
			}
		};
		crawler.crawl(url);
	}
}
import java.io.IOException;
import java.net.URL;
import java.util.*;

public abstract class WebCrawler {
	public void crawl(String rootURL) throws IOException {
		LinkedList<String> pendingURLs = new LinkedList<>();
		HashSet<String> traversedURLs = new HashSet<>();
		pendingURLs.add(rootURL);
		while (!pendingURLs.isEmpty() && traversedURLs.size() < 101) {
			String url = pendingURLs.poll();
			if (!traversedURLs.contains(url)) {
				traversedURLs.add(url);
				eachURL(url);
				getSubURLs(url, pendingURLs, traversedURLs);
			}
		}
	}

	public abstract void eachURL(String url);

	// 将所有的子地址插入到列表末尾,并排除exclusionSet
	private static void getSubURLs(String rootURL, List<String> list, Set<String> exclusionSet) throws IOException {
		URL url = new URL(rootURL);
		Scanner scanner = new Scanner(url.openStream());
		int currentIndex = 0;
		while (scanner.hasNext()) {
			String s = scanner.nextLine();
			currentIndex = s.indexOf("http:", currentIndex);
			while (currentIndex > 0) {
				int endIndex = s.indexOf('"', currentIndex);
				if (endIndex > 0) {
					String currentURL = s.substring(currentIndex, endIndex);
					if (exclusionSet == null || !exclusionSet.contains(currentURL)) list.add(currentURL);
					currentIndex = s.indexOf("http:", endIndex);
				} else
					currentIndex = -1;
			}
		}
	}

	// 程序清单12-18的等价方法
	public static ArrayList<String> getSubURLs(String rootURL) throws IOException {
		ArrayList<String> list = new ArrayList<>();
		getSubURLs(rootURL, list, null);
		return list;
	}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2137908.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轨道列车舱门检测系统源码分享

轨道列车舱门检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

【Android 13源码分析】WindowContainer窗口层级-3-实例分析

在安卓源码的设计中&#xff0c;将将屏幕分为了37层&#xff0c;不同的窗口将在不同的层级中显示。 对这一块的概念以及相关源码做了详细分析&#xff0c;整理出以下几篇。 【Android 13源码分析】WindowContainer窗口层级-1-初识窗口层级树 【Android 13源码分析】WindowCon…

Redis的AOF持久化、重写机制、RDB持久化、混合持久化

1、AOF持久化 1.1.AOF持久化大致过程 概括&#xff1a;命令追加&#xff08;append&#xff09;、文件写入、文件同步&#xff08;sync&#xff09; Redis 每执行一条写操作命令&#xff0c;就把该命令以追加的方式写入到一个文件里&#xff0c;然后重启 Redis 的时候&#…

Pytest配置文件pytest.ini如何编写生成日志文件?

1、新建pytest.ini文件 [pytest] log_clitrue log_leveLNOTSET log_format %(asctime)s %(levelname)s %(message)s %(filename)s %(funcName)s %(lineno)d log_date_format %Y-%m-%d %H:%M:%Slog_file ./logdata/log.log log_file_level info log_file_format %(asctime…

实时(按帧)处理的低通滤波C语言实现

写在前面&#xff1a; 低通滤波采用一般的FIR滤波器&#xff0c;因为本次任务&#xff0c;允许的延迟较多&#xff0c;或者说前面损失的信号可以较多&#xff0c;因此&#xff0c;涉及一个很高阶的FIR滤波器&#xff0c;信号起始段的信号点可以不处理&#xff0c;以及&#xf…

召回01 基于物品是协同过滤 ItemCF

相似度&#xff0c;类似机器学习里面常用的cosine相似度

python AssertionError: Torch not compiled with CUDA enabled

查看&#xff1a;torch import torch# 输出带CPU&#xff0c;表示torch是CPU版本的 print(ftorch的版本是&#xff1a;{torch.__version__}) # print(ftorch是否能使用cuda&#xff1a;{torch.cuda.is_available()}) 修改一下代码&#xff0c;将cuda改成cpu 最后运行正常&…

【React源码解析】深入理解react时间切片和fiber架构

时间切片 假如React一个更新需要耗时200ms&#xff0c;我们可以将其拆分为40个5ms的更新&#xff08;后续会讲到如何拆分&#xff09;&#xff0c;然后每一帧里只花5ms来执行更新。那么&#xff0c;每一帧里不就剩余16.7 - 5 11.7ms的时间可以进行用户事件&#xff0c;渲染等…

13 Midjourney从零到商用·进阶篇:灯光、角度与风格等精细控制方法

在前面我们了解了提示词的书写&#xff0c;那么如何利用提示词来精确控制生成画面的灯光、角度与风格 呢&#xff1f;在本篇文章中我么一起来探讨一下。 一、灯光 在摄影中&#xff0c;对灯光的要求都是非常高的。灯光能对人物、动物、物体、场景等进行修饰。每一种微小的的灯光…

链接升级:Element UI <el-link> 的应用

链接升级&#xff1a;Element UI 的应用 一 . 创建文字链接1.1 注册路由1.2 创建文字链接 二 . 文字链接的属性2.1 文字链接的颜色2.2 是否显示下划线2.3 是否禁用状态2.4 填写跳转地址2.5 加入图标 在本篇文章中&#xff0c;我们将深入探索Element UI中的<el-link>组件—…

本地不能訪問linux的kafka服務

1.本地使用kafka客戶端工具連接kafka服務&#xff0c;提示連接失敗 2. 本地使用telnet ip port命令也失敗 3.查看zookeeper和kafka服務是否正常 ps -ef | grep zookeeper ps -ef | grep kafka 3.關閉操作系統的防火墻(僅限于測試使用) 3.1.禁用防火墙 systemctl stop firew…

先有正态分布,还是先有高斯函数?

正态分布&#xff08;也称为高斯分布&#xff09;是由德国数学家卡尔弗里德里希高斯在研究天文学中的误差分布时提出的。而高斯函数通常指的是正态分布的概率密度函数&#xff0c;它是描述正态分布特性的一个数学表达式。因此&#xff0c;可以明确地说&#xff0c;是先有正态分…

eureka.client.service-url.defaultZone的坑

错误的配置 eureka: client: service-url: default-zone: http://192.168.100.10:8080/eureka正确的配置 eureka: client: service-url: defaultZone: http://192.168.100.10:8080/eureka根据错误日志堆栈打断电调试 出现两个key&#xff0c;也就是defaultZone不支持snake-c…

Vue: watch5种监听情况

目录 一.watch的性质与作用 1.watch 的性质包括&#xff1a; 2.watch 常用于以下场景&#xff1a; 二.监视ref定义的基本类型数据 三.监视ref定义的对象类型数据 四.监视reactive定义的对象类型数据 五.监视ref或reactive定义的对象类型数据中的某个属性 六.监视上述的…

c++题目_【模板】最小生成树Prim

题目描述 这是一道最小生成树Prim的模板题&#xff0c;本题与【模板】最小生成树Kruskal&#xff0c;仅仅只有nn和mm的大小不同 给出一个无向图&#xff0c;求出最小生成树&#xff0c;如果该图不连通&#xff0c;则输出orz 输入 第一行输入2个正整数n,mn,m&#xff0c;代表…

【自然语言处理】实验三:新冠病毒的FAQ问答系统

目录 前言 1.新建data_process.py 1.1导入包并定义功能模块1用来读取问题和答案FAQ的文件 1.2功能模块2&#xff1a;进行问题/问题列表处理&#xff08;正则化&#xff0c;分词&#xff09; 1.3功能模块3&#xff1a;处理输入的问题 1.4功能模块4&#xff1a;计算输入问题与问题…

Java | Leetcode Java题解之第403题青蛙过河

题目&#xff1a; 题解&#xff1a; class Solution {public boolean canCross(int[] stones) {int n stones.length;boolean[][] dp new boolean[n][n];dp[0][0] true;for (int i 1; i < n; i) {if (stones[i] - stones[i - 1] > i) {return false;}}for (int i 1…

redis windows安装包下载路径

https://github.com/tporadowski/redis/releases 通过网盘分享的文件&#xff1a;Redis-x64-5.0.14.1.zip 链接: https://pan.baidu.com/s/12XQOfKB75yajJ0fJLzl4rQ?pwd1234 提取码: 1234

C++数据结构-树的概念及分类介绍(基础篇)

1.什么是树 树是数据结构中的一种&#xff0c;其属于非线性数据结构结构的一种&#xff0c;我们前文所提到的数据结构多数都是线性的&#xff0c;这也是较为简单的数据结构&#xff0c;而接下来的树与图均属于非线性数据结构&#xff0c;也是概念极多的一类。 树是由结点或顶…

软件设计师容易考吗?

一、软考软件设计师难吗 软考软件设计师考试对于不同的人来说&#xff0c;难度可能有所差异。然而&#xff0c;总体来说&#xff0c;软考软件设计师考试是相对较难的考试&#xff0c;需要考生具备扎实的软件设计理论知识和实践经验。 从各地2024年上半年软考合格人数的公布情…