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

Python常见面试题的详解24

1. 如何对关键词触发模块进行测试

  • 要点

  • 功能测试:验证正常关键词触发、边界情况及大小写敏感性,确保模块按预期响应不同输入。

  • 性能测试:关注响应时间和并发处理能力,保证模块在不同负载下的性能表现。

  • 兼容性测试:测试不同输入方式、操作系统和浏览器下模块的工作情况,提升其通用性。

python

import time
import threading# 关键词触发模块示例
keyword_mapping = {"hello": "Hello! How can I help you?","bye": "Goodbye! Have a nice day."
}def keyword_trigger(keyword):if keyword in keyword_mapping:return keyword_mapping[keyword]return "No relevant response."# 功能测试 - 正常关键词触发
def test_normal_trigger():test_keyword = "hello"result = keyword_trigger(test_keyword)print(f"Testing normal keyword '{test_keyword}': {result}")# 功能测试 - 边界情况测试(假设关键词长度范围 1 - 10)
def test_boundary_trigger():short_keyword = "a"long_keyword = "a" * 10print(f"Testing short keyword '{short_keyword}': {keyword_trigger(short_keyword)}")print(f"Testing long keyword '{long_keyword}': {keyword_trigger(long_keyword)}")# 功能测试 - 大小写敏感性测试
def test_case_sensitivity():test_keyword = "Hello"result = keyword_trigger(test_keyword)print(f"Testing case - sensitive keyword '{test_keyword}': {result}")# 性能测试 - 响应时间测试
def test_response_time():test_keyword = "bye"start_time = time.time()response = keyword_trigger(test_keyword)end_time = time.time()print(f"Response time for keyword '{test_keyword}': {end_time - start_time} seconds")# 性能测试 - 并发测试
def concurrent_trigger(keyword):result = keyword_trigger(keyword)print(f"Concurrent test result for '{keyword}': {result}")def test_concurrency():threads = []keyword = "hello"for _ in range(10):  # 模拟 10 个并发请求thread = threading.Thread(target=concurrent_trigger, args=(keyword,))threads.append(thread)thread.start()for thread in threads:thread.join()# 兼容性测试 - 模拟不同输入方式(文件输入)
def test_compatibility_file_input():with open('test_keywords.txt', 'w') as f:f.write("hello\nbye")with open('test_keywords.txt', 'r') as f:for line in f:keyword = line.strip()result = keyword_trigger(keyword)print(f"Testing keyword from file '{keyword}': {result}")if __name__ == "__main__":test_normal_trigger()test_boundary_trigger()test_case_sensitivity()test_response_time()test_concurrency()test_compatibility_file_input()

  • 补充知识点

  • 可以引入更多的关键词规则,如支持关键词的模糊匹配,使用正则表达式来处理更复杂的关键词匹配逻辑。

  • 对于并发测试,可以使用专业的性能测试工具如 locust 进行更全面的性能分析,模拟大量用户的并发请求。

  • 在兼容性测试方面,可以进一步测试不同编码格式的文件输入,以及在不同 Python 版本下的兼容性。

2. 说明测试人员在软件开发过程中的任务

  • 要点

  • 需求分析阶段:参与评审,从测试角度确保需求完整、准确、可测试,并理解软件功能与非功能需求。

  • 测试计划阶段:制定测试计划,明确范围、方法、进度,确定所需资源。

  • 测试设计阶段:依据需求和设计文档设计全面的测试用例,准备各类测试数据。

  • 测试执行阶段:执行用例,记录结果,发现并跟踪缺陷,推动问题解决。

  • 测试总结阶段:分析结果,评估软件质量,编写详细测试报告。

python

import datetime# 模拟测试计划制定
class TestPlan:def __init__(self, scope, method, schedule, resources):self.scope = scopeself.method = methodself.schedule = scheduleself.resources = resourcesdef print_plan(self):print(f"Test Scope: {self.scope}")print(f"Test Method: {self.method}")print(f"Test Schedule: {self.schedule}")print(f"Test Resources: {self.resources}")# 模拟测试用例设计
class TestCase:def __init__(self, case_id, description, input_data, expected_output):self.case_id = case_idself.description = descriptionself.input_data = input_dataself.expected_output = expected_outputdef print_case(self):print(f"Test Case ID: {self.case_id}")print(f"Description: {self.description}")print(f"Input Data: {self.input_data}")print(f"Expected Output: {self.expected_output}")# 模拟测试执行和结果记录
class TestExecution:def __init__(self, test_case):self.test_case = test_caseself.actual_output = Noneself.result = Noneself.execution_time = Nonedef execute(self):# 这里简单模拟执行,实际中应调用被测试的功能self.actual_output = f"Simulated output for {self.test_case.input_data}"self.result = self.actual_output == self.test_case.expected_outputself.execution_time = datetime.datetime.now()print(f"Test Case ID: {self.test_case.case_id}, Result: {'Pass' if self.result else 'Fail'}")# 模拟测试总结
class TestSummary:def __init__(self, test_executions):self.test_executions = test_executionsself.passed_count = sum([1 for exec in test_executions if exec.result])self.failed_count = len(test_executions) - self.passed_countdef print_summary(self):print(f"Total Test Cases: {len(self.test_executions)}")print(f"Passed: {self.passed_count}")print(f"Failed: {self.failed_count}")print("Overall Software Quality: Good" if self.failed_count == 0 else "Needs Improvement")# 制定测试计划
scope = "User registration and login functions"
method = "Functional testing"
schedule = "Week 1 - Design test cases, Week 2 - Execute tests"
resources = "Test environment: Local server, Test tools: Selenium"
test_plan = TestPlan(scope, method, schedule, resources)
test_plan.print_plan()# 设计测试用例
test_case_1 = TestCase(1, "Register a new user", {"username": "testuser", "password": "testpass"}, "Registration successful")
test_case_2 = TestCase(2, "Login with valid credentials", {"username": "testuser", "password": "testpass"}, "Login successful")
test_case_1.print_case()
test_case_2.print_case()# 执行测试用例
executions = []
for test_case in [test_case_1, test_case_2]:execution = TestExecution(test_case)execution.execute()executions.append(execution)# 测试总结
summary = TestSummary(executions)
summary.print_summary()

  • 补充知识点

  • 可以将测试计划、用例、执行结果等信息存储到数据库中,方便进行更复杂的管理和查询。

  • 引入测试框架如 unittestpytest 来更规范地组织和执行测试用例。

  • 在测试总结阶段,可以生成更详细的报告,如 HTML 格式的报告,包含每个测试用例的详细信息和统计图表。

3. 一条软件 Bug 记录都包含了哪些内容?

  • 要点

软件 Bug 记录涵盖基本信息(编号、标题、发现时间、发现人)、问题描述(重现步骤、实际结果、预期结果)、环境信息(操作系统、浏览器等)、严重程度和优先级,还可附带相关附件。

python

import datetimeclass BugRecord:def __init__(self, bug_id, title, found_time, finder, steps, actual_result, expected_result, os, browser, severity, priority, attachments=None):self.bug_id = bug_idself.title = titleself.found_time = found_timeself.finder = finderself.steps = stepsself.actual_result = actual_resultself.expected_result = expected_resultself.os = osself.browser = browserself.severity = severityself.priority = priorityself.attachments = attachments if attachments else []def print_bug_record(self):print(f"Bug ID: {self.bug_id}")print(f"Title: {self.title}")print(f"Found Time: {self.found_time}")print(f"Finder: {self.finder}")print(f"Steps to Reproduce: {self.steps}")print(f"Actual Result: {self.actual_result}")print(f"Expected Result: {self.expected_result}")print(f"Operating System: {self.os}")print(f"Browser: {self.browser}")print(f"Severity: {self.severity}")print(f"Priority: {self.priority}")if self.attachments:print(f"Attachments: {', '.join(self.attachments)}")# 创建一个 Bug 记录
bug = BugRecord(bug_id=1,title="Login button not working",found_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),finder="John",steps="Open the website -> Click on the login button",actual_result="Nothing happens when clicking the login button",expected_result="The login form should pop - up",os="Windows 10",browser="Chrome",severity="High",priority="High",attachments=["screenshot.png"]
)
bug.print_bug_record()

  • 补充知识点

  • 可以实现一个 Bug 管理系统,将 Bug 记录存储到数据库中,支持 Bug 的添加、修改、删除、查询等操作。

  • 为 Bug 记录添加更多的状态信息,如已分配、已修复、已验证等,方便跟踪 Bug 的处理流程。

  • 可以通过邮件或消息通知机制,及时将 Bug 的状态变化通知相关人员。

4. 说明黑盒测试和白盒测试的优缺点

  • 要点

  • 黑盒测试:优点是不依赖代码、从用户角度测试、适用于各种软件;缺点是难以发现内部缺陷、测试用例设计困难、无法进行覆盖测试。

  • 白盒测试:优点是能发现内部缺陷、可进行覆盖测试、有助于代码优化;缺点是依赖代码、测试成本高、不能完全保证功能正确性。

python

import unittest
import coverage# 示例函数
def add_numbers(a, b):return a + b# 黑盒测试示例
class BlackBoxTest(unittest.TestCase):def test_add_numbers(self):test_inputs = [(1, 2), (0, 0), (-1, 1)]for input_pair in test_inputs:result = add_numbers(*input_pair)expected = input_pair[0] + input_pair[1]self.assertEqual(result, expected)# 白盒测试示例
# 这里使用 coverage.py 来统计代码覆盖率
cov = coverage.Coverage()
cov.start()suite = unittest.TestSuite()
suite.addTest(BlackBoxTest("test_add_numbers"))
runner = unittest.TextTestRunner()
runner.run(suite)cov.stop()
cov.report()

  • 补充知识点

  • 对于黑盒测试,可以使用数据驱动测试的方法,通过读取外部数据文件(如 CSV、JSON)来生成更多的测试用例。

  • 白盒测试方面,可以结合静态代码分析工具如 pylintflake8 来发现代码中的潜在问题。

  • 可以使用更复杂的测试框架和工具,如 pytest 来提高测试效率和可维护性。

5. 请列出至少 5 项你所知道的软件测试种类

  • 要点

常见软件测试种类包括功能测试、性能测试、兼容性测试、安全测试、易用性测试、可靠性测试、单元测试、集成测试、系统测试和验收测试。

python

import unittest
import time# 示例函数
def multiply_numbers(a, b):return a * b# 功能测试示例
class FunctionalTest(unittest.TestCase):def test_multiply(self):test_inputs = [(2, 3), (0, 5), (-1, 4)]for input_pair in test_inputs:result = multiply_numbers(*input_pair)expected = input_pair[0] * input_pair[1]self.assertEqual(result, expected)# 性能测试示例
def performance_test():start_time = time.time()for _ in range(1000):multiply_numbers(2, 3)end_time = time.time()print(f"Performance test: {end_time - start_time} seconds for 1000 calls")# 单元测试示例
if __name__ == '__main__':suite = unittest.TestSuite()suite.addTest(FunctionalTest("test_multiply"))runner = unittest.TextTestRunner()runner.run(suite)performance_test()

  • 补充知识点

  • 对于性能测试,可以使用专业的性能测试工具如 locustJMeter 来模拟大量用户的并发请求,进行更全面的性能分析。

  • 兼容性测试可以使用 Selenium 框架来测试不同浏览器和操作系统下的软件表现。

  • 安全测试可以使用 OWASP ZAP 等工具来检测软件的安全漏洞。

6. 说明Alpha 测试与 Beta 测试的区别

  • 要点

  • Alpha 测试:在开发或内部测试环境进行,由开发团队或内部人员执行,目的是全面测试和调试软件。

  • Beta 测试:在实际用户环境进行,由真实用户参与,重点是收集用户反馈和发现实际使用中的问题。

python

# 示例软件功能
def software_function(data):return data.upper()# Alpha 测试
alpha_testers = ["Alice", "Bob"]
alpha_test_data = ["hello", "world"]
alpha_results = []
for tester in alpha_testers:for data in alpha_test_data:result = software_function(data)alpha_results.append((tester, data, result))print(f"Alpha Test by {tester} - Input: {data}, Output: {result}")# Beta 测试
beta_users = ["Eve", "Charlie"]
beta_test_data = ["python", "programming"]
beta_feedbacks = []
for user in beta_users:for data in beta_test_data:result = software_function(data)feedback = input(f"Beta Test by {user} - Input: {data}, Output: {result}. Please provide feedback: ")beta_feedbacks.append((user, data, result, feedback))print(f"Feedback from {user}: {feedback}")# 分析测试结果
print("\nAlpha Test Results:")
for tester, data, result in alpha_results:print(f"{tester} - Input: {data}, Output: {result}")print("\nBeta Test Feedbacks:")
for user, data, result, feedback in beta_feedbacks:print(f"{user} - Input: {data}, Output: {result}, Feedback: {feedback}")

  • 补充知识点

  • 可以使用数据库来存储 Alpha 测试和 Beta 测试的结果和反馈,方便进行数据分析和统计。

  • 开发一个简单的 Web 界面,让用户更方便地参与 Beta 测试和提交反馈。

  • 对反馈进行分类和整理,使用自然语言处理技术来分析用户反馈,提取有价值的信息。

7. 什么是 Bug?一个 bug report 应包含哪些关键字

  • 要点

Bug 是软件不符合预期行为的问题,如电商网站购物车数量更新问题。Bug 报告应包含重现步骤、实际结果、预期结果、严重程度、优先级和环境信息等关键字。

python

# 示例函数,存在 Bug
def divide_numbers(a, b):return a / b# 发现 Bug
try:result = divide_numbers(5, 0)
except ZeroDivisionError:# 模拟 Bug 报告bug_report = {"重现步骤": "调用 divide_numbers 函数,传入参数 (5, 0)","实际结果": "抛出 ZeroDivisionError 异常","预期结果": "应该给出合理的错误提示,而不是抛出异常","严重程度": "高","优先级": "高","环境信息": "Python 3.10"}for

8. 如何找出数组中出现次数超过一半的数字

  • 要点

此问题可以使用摩尔投票法来高效解决。其核心思路是在遍历数组的过程中,维护一个候选元素和一个计数。当计数为 0 时,更换候选元素;若当前元素与候选元素相同则计数加 1,不同则减 1。由于目标数字出现次数超过一半,最后剩下的候选元素即为所求。

python

def majorityElement(nums):# 初始化计数为 0count = 0# 初始化候选元素为 Nonecandidate = None# 遍历数组中的每个数字for num in nums:# 当计数为 0 时,更新候选元素为当前数字if count == 0:candidate = num# 如果当前数字等于候选元素,计数加 1if num == candidate:count += 1# 否则计数减 1else:count -= 1return candidate# 测试示例
nums = [3, 2, 3]
print(majorityElement(nums))  

  • 补充知识点

       1. 输入验证:在函数开始处添加对输入数组的验证,确保数组不为空。

python

def majorityElement(nums):if not nums:return Nonecount = 0candidate = Nonefor num in nums:if count == 0:candidate = numif num == candidate:count += 1else:count -= 1return candidate

       2. 其他方法实现:可以使用哈希表来统计每个数字出现的次数,然后找出出现次数超过一半的数字。

python

def majorityElement(nums):num_count = {}for num in nums:if num in num_count:num_count[num] += 1else:num_count[num] = 1half_length = len(nums) // 2for num, count in num_count.items():if count > half_length:return numreturn None

9. 如何求 100 以内的质数

  • 要点

质数是指大于 1 且只能被 1 和自身整除的正整数。判断一个数是否为质数,可以检查它是否能被 2 到其平方根之间的数整除。通过遍历 2 到 100 的每个数,利用质数判断函数找出所有质数。

python

def is_prime(num):# 小于 2 的数不是质数if num < 2:return False# 检查从 2 到 num 的平方根之间的数是否能整除 numfor i in range(2, int(num**0.5) + 1):if num % i == 0:return Falsereturn True# 使用列表推导式找出 100 以内的质数
primes = [i for i in range(2, 101) if is_prime(i)]
print(primes)

  • 补充知识点

       1. 指定范围的质数查找:将代码封装成函数,接受起始和结束范围作为参数,以查找指定范围内的质数。

python

def find_primes_in_range(start, end):def is_prime(num):if num < 2:return Falsefor i in range(2, int(num**0.5) + 1):if num % i == 0:return Falsereturn Truereturn [i for i in range(start, end + 1) if is_prime(i)]# 测试示例
print(find_primes_in_range(10, 50))

         2. 埃拉托斯特尼筛法:这是一种更高效的质数筛选算法。

python

def sieve_of_eratosthenes(n):primes = [True] * (n + 1)p = 2while p * p <= n:if primes[p]:for i in range(p * p, n + 1, p):primes[i] = Falsep += 1result = []for p in range(2, n + 1):if primes[p]:result.append(p)return resultprint(sieve_of_eratosthenes(100))

10. 如何实现无重复字符的最长子串

  • 要点

使用滑动窗口和哈希表来解决此问题。滑动窗口由左右指针界定,哈希表用于记录每个字符最后出现的位置。遍历字符串时,若遇到重复字符且该字符在当前窗口内,移动左指针到重复字符的下一个位置,同时更新哈希表和最大长度。

python

def lengthOfLongestSubstring(s):# 初始化哈希表,用于记录字符及其最后出现的位置char_index_map = {}# 初始化左指针为 0left = 0# 初始化最大长度为 0max_length = 0# 遍历字符串,右指针从 0 开始for right in range(len(s)):# 如果当前字符在哈希表中,且其最后出现的位置在左指针及之后if s[right] in char_index_map and char_index_map[s[right]] >= left:# 移动左指针到重复字符的下一个位置left = char_index_map[s[right]] + 1# 更新当前字符的最后出现位置char_index_map[s[right]] = right# 计算当前窗口的长度current_length = right - left + 1# 更新最大长度max_length = max(max_length, current_length)return max_length# 测试示例
s = "abcabcbb"
print(lengthOfLongestSubstring(s))  

  • 补充知识点

       1. 优化空间复杂度:可以使用一个固定大小的数组来代替哈希表,以减少空间开销。

python

def lengthOfLongestSubstring(s):char_index = [-1] * 128left = 0max_length = 0for right in range(len(s)):index = ord(s[right])if char_index[index] >= left:left = char_index[index] + 1char_index[index] = rightmax_length = max(max_length, right - left + 1)return max_length

        2. 返回最长子串:对代码进行扩展,不仅返回最长子串的长度,还返回具体的最长子串。

python

def lengthOfLongestSubstring(s):char_index_map = {}left = 0max_length = 0start = 0for right in range(len(s)):if s[right] in char_index_map and char_index_map[s[right]] >= left:left = char_index_map[s[right]] + 1char_index_map[s[right]] = rightcurrent_length = right - left + 1if current_length > max_length:max_length = current_lengthstart = leftreturn s[start:start + max_length]s = "abcabcbb"
print(lengthOfLongestSubstring(s))

11. 如何通过 2 个 5升和6 升的水壶从池塘得到 3 升水

  • 要点

通过一系列倒水操作,利用 5 升和 6 升水壶的容量差,逐步调整两个水壶中的水量,最终在 6 升水壶中得到 3 升水。关键在于合理规划每次倒水的动作。

python

# 初始化 5 升水壶的水量为 0
jug_5 = 0
# 初始化 6 升水壶的水量为 0
jug_6 = 0
# 用于记录操作步骤的列表
steps = []# 开始操作,直到 6 升水壶中有 3 升水
while jug_6 != 3:if jug_6 == 0:# 如果 6 升水壶为空,将其装满jug_6 = 6steps.append("Fill the 6 - liter jug")elif jug_5 == 5:# 如果 5 升水壶已满,将其倒掉jug_5 = 0steps.append("Empty the 5 - liter jug")elif jug_6 > 0 and jug_5 < 5:# 如果 6 升水壶有水且 5 升水壶未满,从 6 升水壶向 5 升水壶倒水pour = min(5 - jug_5, jug_6)jug_5 += pourjug_6 -= poursteps.append(f"Pour water from the 6 - liter jug to the 5 - liter jug: {pour} liters")# 输出操作步骤
for step in steps:print(step)
print(f"Finally, the 6 - liter jug contains {jug_6} liters of water.")

  • 补充知识点

        1. 通用化解决方案:将代码封装成函数,接受两个水壶的容量和目标水量作为参数,以解决更一般的水壶倒水问题。

python

def get_target_water(capacity_1, capacity_2, target):jug_1 = 0jug_2 = 0steps = []while jug_1 != target and jug_2 != target:if jug_2 == 0:jug_2 = capacity_2steps.append(f"Fill the {capacity_2}-liter jug")elif jug_1 == capacity_1:jug_1 = 0steps.append(f"Empty the {capacity_1}-liter jug")elif jug_2 > 0 and jug_1 < capacity_1:pour = min(capacity_1 - jug_1, jug_2)jug_1 += pourjug_2 -= poursteps.append(f"Pour water from the {capacity_2}-liter jug to the {capacity_1}-liter jug: {pour} liters")final_jug = 1 if jug_1 == target else 2for step in steps:print(step)print(f"Finally, the {capacity_1 if final_jug == 1 else capacity_2}-liter jug contains {target} liters of water.")# 测试示例
get_target_water(5, 6, 3)

          2. 使用图论方法:可以将水壶的状态看作图中的节点,倒水操作看作边,使用广度优先搜索(BFS)算法来寻找从初始状态到目标状态的最短路径,以得到最优解。

 友情提示:本文已经整理成文档,可以到如下链接免积分下载阅读

https://download.csdn.net/download/ylfhpy/90435852

相关文章:

Python常见面试题的详解24

1. 如何对关键词触发模块进行测试 要点 功能测试&#xff1a;验证正常关键词触发、边界情况及大小写敏感性&#xff0c;确保模块按预期响应不同输入。 性能测试&#xff1a;关注响应时间和并发处理能力&#xff0c;保证模块在不同负载下的性能表现。 兼容性测试&#xff1a;测…...

手机打电话时如何识别对方按下的DTMF按键的字符-安卓AI电话机器人

手机打电话时如何识别对方按下的DTMF按键的字符 --安卓AI电话机器人 一、前言 前面的篇章中&#xff0c;使用蓝牙电话拦截手机通话的声音&#xff0c;并对数据加工&#xff0c;这个功能出来也有一段时间了。前段时间有试用的用户咨询说&#xff1a;有没有办法在手机上&#xff…...

RabbitMQ操作实战

1.RabbitMQ安装 RabbitMQ Windows 安装、配置、使用 - 小白教程-腾讯云开发者社区-腾讯云下载erlang&#xff1a;http://www.erlang.org/downloads/https://cloud.tencent.com/developer/article/2192340 Windows 10安装RabbitMQ及延时消息插件rabbitmq_delayed_message_exch…...

IDEA 2024.1 最新永久可用(亲测有效)

今年idea发布了2024.1版本&#xff0c;这个版本带来了一系列令人兴奋的新功能和改进。最引人注目的是集成了更先进的 AI 助手&#xff0c;它现在能够提供更复杂的代码辅助功能&#xff0c;如代码自动补全、智能代码审查等&#xff0c;极大地提升了开发效率。此外&#xff0c;用…...

【R包】pathlinkR转录组数据分析和可视化利器

介绍 通常情况下&#xff0c;基因表达研究如微阵列和RNA-Seq会产生数百到数千个差异表达基因&#xff08;deg&#xff09;。理解如此庞大的数据集的生物学意义变得非常困难&#xff0c;尤其是在分析多个条件和比较的情况下。该软件包利用途径富集和蛋白-蛋白相互作用网络&…...

RPA 与 AI 结合:开启智能自动化新时代

RPA 与 AI 结合&#xff1a;开启智能自动化新时代 在当今数字化快速发展的时代&#xff0c;企业面临着海量的数据处理和复杂的业务流程&#xff0c;如何提高效率、降低成本、优化业务流程成为了企业关注的焦点。而 RPA&#xff08;Robotic Process Automation&#xff0c;机器…...

[免费]Springboot+Vue在线文档管理系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringbootVue在线文档管理系统&#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue在线文档管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着科学技术的飞速发展&#xff0c;社会的方方面…...

内容选题与商业布局

内容选题与商业布局 提示词 1&#xff1a;人群链&#xff08;User Chain&#xff09;提示词 2&#xff1a;需求链&#xff08;Demand Chain&#xff09;提示词 3&#xff1a;环境 需求 优势 三要素提示词 4&#xff1a;垂直于“人性”而非只“赛道”提示词 5&#xff1a;基于…...

文字描边实现内黄外绿效果

网页使用 <!DOCTYPE html> <html> <head> <style> .text-effect {color: #ffd700; /* 黄色文字 */-webkit-text-stroke: 2px #008000; /* 绿色描边&#xff08;兼容Webkit内核&#xff09; */text-stroke: 2px #008000; /* 标准语法 *…...

网络协议 HTTP、HTTPS、HTTP/1.1、HTTP/2 对比分析

1. 基本定义 HTTP&#xff08;HyperText Transfer Protocol&#xff09; 应用层协议&#xff0c;用于客户端与服务器之间的数据传输&#xff08;默认端口 80&#xff09;。 HTTP/1.0&#xff1a;早期版本&#xff0c;每个请求需单独建立 TCP 连接&#xff0c;效率低。HTTP/1.1&…...

千峰React:Hooks(上)

什么是Hooks ref引用值 普通变量的改变一般是不好触发函数组件的渲染的&#xff0c;如果想让一般的数据也可以得到状态的保存&#xff0c;可以使用ref import { useState ,useRef} from reactfunction App() {const [count, setCount] useState(0)let num useRef(0)const h…...

salesforce 为什么无法关闭task,显示:insufficient access rights on object id

在 Salesforce 中&#xff0c;如果你在尝试关闭任务&#xff08;Task&#xff09;时遇到 “Insufficient access rights on object id” 错误&#xff0c;通常是由于以下几种可能的权限问题导致的&#xff1a; 1. 任务的所有权问题 Salesforce 中的任务&#xff08;Task&…...

机器学习:强化学习的epsilon贪心算法

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种机器学习方法&#xff0c;旨在通过与环境交互&#xff0c;使智能体&#xff08;Agent&#xff09;学习如何采取最优行动&#xff0c;以最大化某种累积奖励。它与监督学习和无监督学习不同&#xff0c;强调试错…...

MongoDB—(一主、一从、一仲裁)副本集搭建

MongoDB集群介绍&#xff1a; MongoDB 副本集是由多个MongoDB实例组成的集群&#xff0c;其中包含一个主节点&#xff08;Primary&#xff09;和多个从节点&#xff08;Secondary&#xff09;&#xff0c;用于提供数据冗余和高可用性。以下是搭建 MongoDB 副本集的详细步骤&am…...

MyBatis TypeHandler 详解与实战:FastJson 实现字符串转 List

在 MyBatis 中&#xff0c;TypeHandler 是实现 Java 类型与数据库类型双向转换 的核心组件。无论是处理基础数据类型还是复杂的 JSON、枚举或自定义对象&#xff0c;它都能通过灵活的扩展机制满足开发需求。本文将通过一个 将数据库 JSON 字符串转换为 List<User> 的案例…...

第二十八:5.5.【storeToRefs】5.6.【getters】

LoveTalk.vue: 调用&#xff1a; // 方法 const talkStore useTalkStore() function getLoveTalk(){ talkStore.getATalk() } 如果是要简短的形式调用&#xff1a; const talkStore useTalkStore() // user hooks 的形式调用 const {schoole,local} talkStore // …...

APISIX Dashboard上的配置操作

文章目录 登录配置路由配置消费者创建后端服务项目配置上游再创建一个路由测试 登录 http://192.168.10.101:9000/user/login?redirect%2Fdashboard 根据docker 容器里的指定端口&#xff1a; 配置路由 通过apisix 的API管理接口来创建&#xff08;此路由&#xff0c;直接…...

MinIO在 Docker中修改登录账号和密码

MinIO在 Docker中修改登录账号和密码 随着云计算和大数据技术的快速发展&#xff0c;对象存储服务逐渐成为企业数据管理的重要组成部分。MinIO 作为一种高性能、分布式的对象存储系统&#xff0c;因其简单易用、高效可靠的特点而备受开发者青睐。然而&#xff0c;在实际应用中…...

英文论文查重,Turnitin和IThenticate两个系统哪个更合适?

Turnitin系统和IThenticate系统都是检测英文论文的查重系统&#xff0c;但是两者之间还是有一些不一样的。 下面针对这两个系统给大家具体分析一下。 一、Turnitin系统 Turnitin检测系统&#xff1a; https://truth-turnitin.similarity-check.com Turnitin是世界上主流的…...

pnpm的基本用法

以下是 pnpm 的核心命令和使用指南&#xff0c;涵盖从安装依赖到项目管理的常见操作&#xff1a; 1. 基础命令 (1) 安装依赖 pnpm install # 安装 package.json 中的所有依赖 pnpm install <包名> # 安装指定包&#xff08;自动添加到 dependencies&#xf…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...