·
编程学习 ·
138758
//目标:括号匹配的校验
//思路:使用栈来解决、遇到`([`就`入栈`,遇到`)]`就出栈,遇到其他元素不做处理。处理完后,检查栈的长度,为空表明括号匹配。
private static boolean checkBra(String str) {
String[] arr = str.split("");
if (")".equals(arr[0]) || "]".equals(arr[0])) {
return false;//字符串长度较长时可加此判断,提高效率
}
Stack stack = new Stack();
for (int i = 0; i < arr.length; i++) {
switch (arr[i]) {
case "(":
stack.push(arr[i]);
break;
case "[":
stack.push(arr[i]);
break;
case ")":
if(stack.isEmpty()) stack.push(arr[i]);//多余的括号
Object a = "(".equals(stack.peek()) == true ? stack.pop() : stack.push(arr[i]);//不匹配的括号
break;
case "]":
if(stack.isEmpty()) stack.push(arr[i]);//多余的括号
Object b = "[".equals(stack.peek()) == true ? stack.pop() : stack.push(arr[i]);//不匹配的括号
break;
default:
break;
}
}
return stack.isEmpty() == true ? true : false;//栈为空则校验成功,不为空则括号不匹配
}
必须分块读取,推荐8192或65536字节块大小,以rb模式打开文件,循环调用update(),最后用hexdigest()获取32位小写十六进制字符串;校验时需strip().lower()统一格式并做长度校验。 用hashlib.md5()读取文件并计算校验和 直接调用hashlib.md5()...
TkinterEntry输入校验必须用validate="key"(或"focusout")配合validatecommand回调函数,配合register()注册的%P等参数,用re.fullmatch()全匹配校验,粘贴需额外绑定事件处理。 Entry输入校验必须用validate和valida...
不能直接用hashlib.md5(file.read()).hexdigest()读整个文件,因大文件会引发MemoryError;正确做法是分块读取(如8192字节)、二进制模式('rb')打开、iter(lambda:f.read(8192),b'')安全迭代,内存恒定几KB。 为什么不能直接用...
直接pipinstall不足以保证包安全,因PyPI不强制签名且传输/缓存可能被污染;可靠验证需依赖发布者提供的哈希或GPG签名,wheel包仅支持--hash校验,源码包才可能用.asc签名验证。 为什么直接pipinstall不足以保证包安全 PyPI上的包默认只做基础上传校验,不强制签名;即使...
必须用properties.headers取,不能从body解析,因headers是AMQP协议层元数据,与body物理分离;properties.headers为dict或None,需判空;auto_ack必须为False以支持校验后手动ack/nack;且须结合vhost隔离防伪造。 必须用pr...
FastAPI默认用Pydanticv2因0.95+版本已完全迁移至pydantic>=2.0,依赖其新行为如字段默认值处理和model_validate替代parse_obj。 FastAPI为什么默认用Pydanticv2而不是v1 因为FastAPI0.95+已完全迁移到pydantic...
urllib.parse.urlparse比正则更可靠,因其严格遵循RFC3986解析URL结构,能正确处理localhost、IDN域名、中文路径等复杂情况,而正则易漏判或误杀且难以覆盖所有合法格式。 为什么urllib.parse.urlparse比正则更可靠? 直接用正则校验URL格式容易漏判...
pytest-json-report不校验JSON字段,仅导出测试元信息;需用DeepDiff、jsonschema或自定义断言函数实现结构化校验,并将差异注入AssertionError消息以提升报告可读性。 为什么pytest-json-report不能直接校验JSON字段? 它只是把测试结果(...