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

python实现基于Windows系统计算器程序

Python实现Windows系统计算器程序(含高级功能)

下面我将介绍如何使用Python创建一个功能完整的Windows风格计算器程序,包含基本运算和高级数学功能。

1. 使用Tkinter实现基础计算器

import tkinter as tk
from tkinter import ttk
import mathclass Calculator:def __init__(self, root):self.root = rootself.root.title("高级计算器")self.root.geometry("400x550")self.root.resizable(False, False)# 当前输入和结果self.current_input = ""self.previous_input = ""self.operation = Noneself.reset_input = False# 创建界面self.create_widgets()def create_widgets(self):# 显示框self.display_frame = ttk.Frame(self.root)self.display_frame.pack(fill=tk.BOTH, padx=10, pady=10)self.expression_var = tk.StringVar()self.expression_label = ttk.Label(self.display_frame, textvariable=self.expression_var,font=("Arial", 18),anchor=tk.E)self.expression_label.pack(fill=tk.BOTH, expand=True)self.result_var = tk.StringVar()self.result_label = ttk.Label(self.display_frame, textvariable=self.result_var,font=("Arial", 28, "bold"),anchor=tk.E,foreground="blue")self.result_label.pack(fill=tk.BOTH, expand=True)# 按钮框架self.buttons_frame = ttk.Frame(self.root)self.buttons_frame.pack(fill=tk.BOTH, expand=True)# 按钮布局buttons = [("C", 0, 0, "#FF9500", self.clear_all),("⌫", 0, 1, "#FF9500", self.delete_last),("÷", 0, 2, "#FF9500", lambda: self.add_operation("/")),("×", 0, 3, "#FF9500", lambda: self.add_operation("*")),("7", 1, 0, "#333333", lambda: self.add_number("7")),("8", 1, 1, "#333333", lambda: self.add_number("8")),("9", 1, 2, "#333333", lambda: self.add_number("9")),("-", 1, 3, "#FF9500", lambda: self.add_operation("-")),("4", 2, 0, "#333333", lambda: self.add_number("4")),("5", 2, 1, "#333333", lambda: self.add_number("5")),("6", 2, 2, "#333333", lambda: self.add_number("6")),("+", 2, 3, "#FF9500", lambda: self.add_operation("+")),("1", 3, 0, "#333333", lambda: self.add_number("1")),("2", 3, 1, "#333333", lambda: self.add_number("2")),("3", 3, 2, "#333333", lambda: self.add_number("3")),("=", 3, 3, "#4CD964", self.calculate),("0", 4, 0, "#333333", lambda: self.add_number("0")),(".", 4, 1, "#333333", lambda: self.add_number(".")),("(", 4, 2, "#333333", lambda: self.add_number("(")),(")", 4, 3, "#333333", lambda: self.add_number(")")),# 高级功能按钮("sin", 5, 0, "#5856D6", lambda: self.add_function("math.sin(")),("cos", 5, 1, "#5856D6", lambda: self.add_function("math.cos(")),("tan", 5, 2, "#5856D6", lambda: self.add_function("math.tan(")),("log", 5, 3, "#5856D6", lambda: self.add_function("math.log10(")),("√", 6, 0, "#5856D6", lambda: self.add_function("math.sqrt(")),("x²", 6, 1, "#5856D6", lambda: self.add_operation("**2")),("x³", 6, 2, "#5856D6", lambda: self.add_operation("**3")),("π", 6, 3, "#5856D6", lambda: self.add_number(str(math.pi))),("e", 7, 0, "#5856D6", lambda: self.add_number(str(math.e))),("x^y", 7, 1, "#5856D6", lambda: self.add_operation("**")),("(", 7, 2, "#333333", lambda: self.add_number("(")),(")", 7, 3, "#333333", lambda: self.add_number(")")),("Ans", 8, 0, "#5856D6", lambda: self.add_number(str(self.previous_result))),("1/x", 8, 1, "#5856D6", lambda: self.add_function("1/(" + self.current_input + ")")),("n!", 8, 2, "#5856D6", lambda: self.add_function("math.factorial(int(" + self.current_input + "))" if self.current_input.isdigit() else "")),("(", 8, 3, "#333333", lambda: self.add_number("(")),]# 创建按钮for (text, row, col, color, command) in buttons:button = ttk.Button(self.buttons_frame,text=text,command=command)if text.isdigit() or text in [".", "+", "-", "*", "/", "(", ")", "^"]:button.configure(style="Number.TButton")elif text in ["sin", "cos", "tan", "log", "√", "x²", "x³", "Ans", "1/x", "n!"]:button.configure(style="Function.TButton")else:button.configure(style="Operator.TButton")button.grid(row=row, column=col, sticky="nsew", padx=5, pady=5)# 配置网格权重self.buttons_frame.grid_rowconfigure(row, weight=1)self.buttons_frame.grid_columnconfigure(col, weight=1)# 设置按钮样式style = ttk.Style()style.configure("TButton", font=("Arial", 14))style.map("TButton",foreground=[('pressed', 'white'), ('active', '#007AFF')],background=[('pressed', '#007AFF'), ('active', '#007AFF')],relief=[('pressed', 'flat'), ('active', 'flat')])style.configure("Number.TButton", background="#F2F2F7")style.configure("Operator.TButton", background="#FF9500", foreground="white")style.configure("Function.TButton", background="#5856D6", foreground="white")# 计算结果变量self.previous_result = 0def add_number(self, number):if self.reset_input:self.current_input = ""self.reset_input = Falseif number == "." and "." in self.current_input:returnself.current_input += numberself.expression_var.set(self.current_input)def add_operation(self, operation):if self.current_input == "" and self.previous_input == "":returnif self.previous_input:self.calculate()self.operation = operationelse:self.operation = operationself.previous_input = self.current_inputself.current_input = ""self.expression_var.set(self.previous_input + " " + operation)def add_function(self, function):if self.reset_input:self.current_input = ""self.reset_input = False# 检查是否需要添加括号if not (self.current_input.endswith(")") or self.current_input == ""):self.current_input += ")"self.current_input += functionif not self.current_input.endswith(")"):self.current_input += "("self.expression_var.set(self.current_input)def clear_all(self):self.current_input = ""self.previous_input = ""self.operation = Noneself.reset_input = Falseself.expression_var.set("")self.result_var.set("")def delete_last(self):if self.current_input:self.current_input = self.current_input[:-1]self.expression_var.set(self.current_input if self.current_input else "")elif self.previous_input:self.previous_input = self.previous_input[:-1]self.expression_var.set(self.previous_input if self.previous_input else "")def calculate(self):try:# 替换x为*用于计算expression = self.current_input.replace("^", "**")# 处理特殊函数if "sin(" in expression:expression = expression.replace("sin(", "math.sin(")if "cos(" in expression:expression = expression.replace("cos(", "math.cos(")if "tan(" in expression:expression = expression.replace("tan(", "math.tan(")if "log(" in expression:expression = expression.replace("log(", "math.log10(")if "√(" in expression:expression = expression.replace("√(", "math.sqrt(")result = eval(expression, {"math": math})self.previous_input = str(result)self.current_input = str(result)self.expression_var.set(str(result))self.result_var.set("=" + str(result))self.previous_result = resultself.reset_input = Trueexcept Exception as e:self.expression_var.set("错误")self.result_var.set("")self.current_input = ""self.previous_input = ""self.reset_input = False@propertydef current_input(self):return self._current_input@current_input.setterdef current_input(self, value):self._current_input = value# 创建主窗口并运行计算器
if __name__ == "__main__":import mathroot = tk.Tk()calculator = Calculator(root)# 添加自定义样式style = ttk.Style()style.theme_use('clam')root.mainloop()

2. 高级功能实现

2.1 科学计算功能

上述代码已经实现了以下高级功能:

  • 三角函数:sin, cos, tan
  • 对数函数:log10
  • 平方根:√
  • 幂运算:x², x³, x^y
  • 常数:π, e
  • 阶乘:n!
  • 反函数:1/x

2.2 历史记录功能(扩展)

要添加历史记录功能,可以修改代码如下:

 
class Calculator:def __init__(self, root):# ... 其他初始化代码 ...self.history = []  # 存储计算历史def calculate(self):try:# ... 计算代码 ...# 添加到历史记录if self.previous_input and self.operation and self.current_input:expression = f"{self.previous_input} {self.operation} {self.current_input}"self.history.append((expression, str(result)))if len(self.history) > 10:  # 限制历史记录数量self.history.pop(0)# ... 其他代码 ...except Exception as e:# ... 错误处理代码 ...def show_history(self):# 创建新窗口显示历史记录history_window = tk.Toplevel(self.root)history_window.title("计算历史")history_window.geometry("350x400")history_text = tk.Text(history_window, font=("Arial", 12))history_text.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)for expr, res in self.history:history_text.insert(tk.END, f"{expr} = {res}\n")history_text.config(state=tk.DISABLED)

2.3 图形绘制功能(扩展)

要添加函数图形绘制功能,可以使用matplotlib:

import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAggclass Calculator:# ... 其他代码 ...def plot_function(self):function_window = tk.Toplevel(self.root)function_window.title("函数绘图")function_window.geometry("600x500")# 创建输入框input_frame = ttk.Frame(function_window)input_frame.pack(fill=tk.X, padx=10, pady=10)ttk.Label(input_frame, text="输入函数 (使用x作为变量):").pack(side=tk.LEFT)function_entry = ttk.Entry(input_frame, width=30)function_entry.pack(side=tk.LEFT, padx=5)function_entry.insert(0, "math.sin(x)")  # 默认函数# 创建绘图区域fig_frame = ttk.Frame(function_window)fig_frame.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)fig, ax = plt.subplots(figsize=(6, 5))canvas = FigureCanvasTkAgg(fig, master=fig_frame)canvas.get_tk_widget().pack(fill=tk.BOTH, expand=True)# 绘制按钮def draw_plot():try:func_str = function_entry.get()x = np.linspace(-10, 10, 400)y = eval(func_str, {"math": math, "x": x, "np": np})ax.clear()ax.plot(x, y)ax.set_title(f"y = {func_str}")ax.grid(True)canvas.draw()except Exception as e:messagebox.showerror("错误", f"无法绘制函数: {str(e)}")ttk.Button(function_window, text="绘制", command=draw_plot).pack(pady=5)

3. 完整功能整合

将上述功能整合到一个完整的计算器程序中:

 
import tkinter as tk
from tkinter import ttk, messagebox
import math
import numpy as npclass AdvancedCalculator:def __init__(self, root):self.root = rootself.root.title("高级科学计算器")self.root.geometry("500x650")self.root.resizable(False, False)self.current_input = ""self.previous_input = ""self.operation = Noneself.reset_input = Falseself.history = []self.create_widgets()def create_widgets(self):# 显示框self.display_frame = ttk.Frame(self.root)self.display_frame.pack(fill=tk.BOTH, padx=10, pady=10)self.expression_var = tk.StringVar()self.expression_label = ttk.Label(self.display_frame, textvariable=self.expression_var,font=("Arial", 14),anchor=tk.E)self.expression_label.pack(fill=tk.BOTH, expand=True)self.result_var = tk.StringVar()self.result_label = ttk.Label(self.display_frame, textvariable=self.result_var,font=("Arial", 24, "bold"),anchor=tk.E,foreground="blue")self.result_label.pack(fill=tk.BOTH, expand=True)# 按钮框架self.buttons_frame = ttk.Frame(self.root)self.buttons_frame.pack(fill=tk.BOTH, expand=True)# 按钮布局buttons = [# 第一行("C", 0, 0, "#FF9500", self.clear_all),("⌫", 0, 1, "#FF9500", self.delete_last),("÷", 0, 2, "#FF9500", lambda: self.add_operation("/")),("×", 0, 3, "#FF9500", lambda: self.add_operation("*")),# 第二行("7", 1, 0, "#333333", lambda: self.add_number("7")),("8", 1, 1, "#333333", lambda: self.add_number("8")),("9", 1, 2, "#333333", lambda: self.add_number("9")),("-", 1, 3, "#FF9500", lambda: self.add_operation("-")),# 第三行("4", 2, 0, "#333333", lambda: self.add_number("4")),("5", 2, 1, "#333333", lambda: self.add_number("5")),("6", 2, 2, "#333333", lambda: self.add_number("6")),("+", 2, 3, "#FF9500", lambda: self.add_operation("+")),# 第四行("1", 3, 0, "#333333", lambda: self.add_number("1")),("2", 3, 1, "#333333", lambda: self.add_number("2")),("3", 3, 2, "#333333", lambda: self.add_number("3")),("=", 3, 3, "#4CD964", self.calculate),# 第五行("0", 4, 0, "#333333", lambda: self.add_number("0")),(".", 4, 1, "#333333", lambda: self.add_number(".")),("(", 4, 2, "#333333", lambda: self.add_number("(")),(")", 4, 3, "#333333", lambda: self.add_number(")")),# 第六行 - 高级功能("sin", 5, 0, "#5856D6", lambda: self.add_function("math.sin(")),("cos", 5, 1, "#5856D6", lambda: self.add_function("math.cos(")),("tan", 5, 2, "#5856D6", lambda: self.add_function("math.tan(")),("log", 5, 3, "#5856D6", lambda: self.add_function("math.log10(")),# 第七行("√", 6, 0, "#5856D6", lambda: self.add_function("math.sqrt(")),("x²", 6, 1, "#5856D6", lambda: self.add_operation("**2")),("x³", 6, 2, "#5856D6", lambda: self.add_operation("**3")),("π", 6, 3, "#5856D6", lambda: self.add_number(str(math.pi))),# 第八行("e", 7, 0, "#5856D6", lambda: self.add_number(str(math.e))),("x^y", 7, 1, "#5856D6", lambda: self.add_operation("**")),("(", 7, 2, "#333333", lambda: self.add_number("(")),(")", 7, 3, "#333333", lambda: self.add_number(")")),# 第九行("Ans", 8, 0, "#5856D6", lambda: self.add_number(str(self.previous_result))),("1/x", 8, 1, "#5856D6", lambda: self.add_function("1/(" + self.current_input + ")")),("n!", 8, 2, "#5856D6", lambda: self.add_function("math.factorial(int(" + self.current_input + "))" if self.current_input.isdigit() else "")),("Hist", 8, 3, "#5856D6", self.show_history),]# 创建按钮for (text, row, col, color, command) in buttons:button = ttk.Button(self.buttons_frame,text=text,command=command)if text.isdigit() or text in [".", "+", "-", "*", "/", "(", ")", "^"]:button.configure(style="Number.TButton")elif text in ["sin", "cos", "tan", "log", "√", "x²", "x³", "Ans", "1/x", "n!"]:button.configure(style="Function.TButton")elif text in ["Hist"]:button.configure(style="History.TButton")else:button.configure(style="Operator.TButton")button.grid(row=row, column=col, sticky="nsew", padx=5, pady=5)# 配置网格权重self.buttons_frame.grid_rowconfigure(row, weight=1)self.buttons_frame.grid_columnconfigure(col, weight=1)# 设置按钮样式style = ttk.Style()style.configure("TButton", font=("Arial", 14))style.map("TButton",foreground=[('pressed', 'white'), ('active', '#007AFF')],background=[('pressed', '#007AFF'), ('active', '#007AFF')],relief=[('pressed', 'flat'), ('active', 'flat')])style.configure("Number.TButton", background="#F2F2F7")style.configure("Operator.TButton", background="#FF9500", foreground="white")style.configure("Function.TButton", background="#5856D6", foreground="white")style.configure("History.TButton", background="#8E8E93", foreground="white")# 计算结果变量self.previous_result = 0def add_number(self, number):if self.reset_input:self.current_input = ""self.reset_input = Falseif number == "." and "." in self.current_input:returnself.current_input += numberself.expression_var.set(self.current_input)def add_operation(self, operation):if self.current_input == "" and self.previous_input == "":returnif self.previous_input:self.calculate()self.operation = operationelse:self.operation = operationself.previous_input = self.current_inputself.current_input = ""self.expression_var.set(self.previous_input + " " + operation)def add_function(self, function):if self.reset_input:self.current_input = ""self.reset_input = False# 检查是否需要添加括号if not (self.current_input.endswith(")") or self.current_input == ""):self.current_input += ")"self.current_input += functionif not self.current_input.endswith(")"):self.current_input += "("self.expression_var.set(self.current_input)def clear_all(self):self.current_input = ""self.previous_input = ""self.operation = Noneself.reset_input = Falseself.expression_var.set("")self.result_var.set("")def delete_last(self):if self.current_input:self.current_input = self.current_input[:-1]self.expression_var.set(self.current_input if self.current_input else "")elif self.previous_input:self.previous_input = self.previous_input[:-1]self.expression_var.set(self.previous_input if self.previous_input else "")def calculate(self):try:# 替换x为*用于计算expression = self.current_input.replace("^", "**")# 处理特殊函数if "sin(" in expression:expression = expression.replace("sin(", "math.sin(")if "cos(" in expression:expression = expression.replace("cos(", "math.cos(")if "tan(" in expression:expression = expression.replace("tan(", "math.tan(")if "log(" in expression:expression = expression.replace("log(", "math.log10(")if "√(" in expression:expression = expression.replace("√(", "math.sqrt(")result = eval(expression, {"math": math})self.previous_input = str(result)self.current_input = str(result)self.expression_var.set(str(result))self.result_var.set("=" + str(result))self.previous_result = resultself.reset_input = True# 添加到历史记录if self.previous_input and self.operation and self.current_input:expr = f"{self.previous_input} {self.operation} {self.current_input}"self.history.append((expr, str(result)))if len(self.history) > 10:  # 限制历史记录数量self.history.pop(0)except Exception as e:self.expression_var.set("错误")self.result_var.set("")self.current_input = ""self.previous_input = ""self.reset_input = False@propertydef current_input(self):return self._current_input@current_input.setterdef current_input(self, value):self._current_input = valuedef show_history(self):history_window = tk.Toplevel(self.root)history_window.title("计算历史")history_window.geometry("400x400")history_text = tk.Text(history_window, font=("Arial", 12))history_text.pack(fill=tk.BOTH, expand=True, padx=10, pady=10)for expr, res in self.history:history_text.insert(tk.END, f"{expr} = {res}\n")history_text.config(state=tk.DISABLED)# 创建主窗口并运行计算器
if __name__ == "__main__":import mathroot = tk.Tk()# 添加自定义样式style = ttk.Style()style.theme_use('clam')calculator = AdvancedCalculator(root)root.mainloop()

4. 功能说明

4.1 基本功能

  • 支持加、减、乘、除基本运算
  • 支持括号和小数点
  • 清除(C)和删除(⌫)功能

4.2 高级科学计算功能

  • 三角函数:sin, cos, tan
  • 对数函数:log10
  • 平方根:√
  • 幂运算:x², x³, x^y
  • 常数:π, e
  • 阶乘:n!
  • 反函数:1/x

4.3 额外功能

  • 历史记录:记录最近10次计算
  • Ans功能:使用上一次的计算结果

5. 扩展建议

  1. ​图形绘制功能​​:添加函数绘图功能,可以使用matplotlib集成
  2. ​单位转换​​:添加长度、重量、温度等单位转换功能
  3. ​方程求解​​:添加一元二次方程等求解功能
  4. ​统计计算​​:添加平均值、标准差等统计功能
  5. ​编程模式​​:添加自定义函数定义功能

这个计算器程序提供了完整的科学计算功能,界面简洁直观,适合学习和日常使用。

相关文章:

python实现基于Windows系统计算器程序

Python实现Windows系统计算器程序(含高级功能) 下面我将介绍如何使用Python创建一个功能完整的Windows风格计算器程序,包含基本运算和高级数学功能。 1. 使用Tkinter实现基础计算器 import tkinter as tk from tkinter import ttk import …...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(14):かもしれません (~た・~ない)ほうがいいです

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(14):かもしれません &(~た・~ない)ほうがいいです 1、前言(1)情况说明(2)工程师…...

AI Rack架构高速互连的挑战:损耗设计与信号完整性的设计框架

在AI驱动的时代,系统设计已经从单一PCB的视角,逐步转向以整个rack为单位来考量。 对于信号完整性而言,焦点以不再局限于单一PCB上的损耗,而是扩展到芯片与芯片之间的端到端互连损耗(end-to-end interconnect loss&…...

React useCallback函数

应用场景:父组件向子组件传递函数类型的props时...

【CTFer成长之路】XSS的魔力

XSS闯关 level1 访问url: http://c884a553-d874-4514-9c32-c19c7d7b6e1c.node3.buuoj.cn/level1?usernamexss 因为是xss,所以对传参进行测试,修改?username1,进行访问 会发现username参数传入什么,welcome之后就…...

多模态RAG演进-MRAG1.0->MRAG2.0->MRAG3.0

MRAG1.0 MRAG1.0是MRAG框架的初始阶段,通常被称为“伪MRAG”。它是对RAG范式的简单扩展,支持多模态数据。MRAG1.0通过利用现有的基于文本的检索和生成机制,实现了从RAG到MRAG的平稳过渡。 MRAG1.0的架构包括三个关键组件: 文档解…...

超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局

饿了么由守转攻。 作者|景行 编辑|杨舟 淘宝饿了么,终于落子,“淘宝闪购”,横空出世,仅仅2天,业务加速。 4月30日上午,当外卖战场陷入沉寂时,淘宝宣布将即时零售业务“小时达”升级为“淘宝闪…...

Proxmox VE 8.4 显卡直通完整指南:NVIDIA 2080 Ti 实战

背景: PCIe Passthrough 技术允许虚拟机直接访问物理GPU设备,绕过宿主机系统,从而获得接近原生性能的图形处理能力. 参照:从Proxmox VE开始:安装与配置指南。在R740服务器完成了proxmox的安装,并且安装了一…...

算法技巧——打表

什么是打表? 打表,是一个信息学专用术语,意指对一些题目,通过打表技巧获得一个有序表或常量表,来执行程序某一部分,优化时间复杂度。这种算法也可用于在对某种题目没有最优解法时,用来得到分数的…...

JavaScript基础-逻辑运算符

在JavaScript编程中,逻辑运算符用于判断表达式的真假,并根据结果执行特定的操作。掌握逻辑运算符是理解条件控制结构的关键之一。本文将详细介绍JavaScript中的三种主要逻辑运算符:&&(逻辑与)、||(…...

P20:Inception v3算法实战与解析

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 使用InceptionV3实现天气识别 一、模型结构 Inception v3是Google团队在2015年提出的第三代Inception模型,属于卷积神经网络(CNN&…...

C++ - 数据容器之 list(创建与初始化、元素访问、容量判断、元素遍历、添加元素、删除元素)

一、创建与初始化 引入 <list> 并使用 std 命名空间 #include <list>using namespace std;创建一个空 list list<int> my_list;创建一个包含 5 个元素&#xff0c;每个元素初始化为 0 的 list list<int> my_list(5);创建一个包含 5 个元素&#xf…...

deepseek 技巧整理

1、导出word 和excel 功能&#xff0c;在使用以下提示词。 请帮我列出减肥期间可以吃的水果&#xff0c;并分析该水果含有的营养元素&#xff0c;以表格的形式星现。1.要以html的方式输出 2.要可以直接运行 3.页面要提供可以直接下载word和excel功能...

柔性PZT压电薄膜多维力传感器在微创手术机器人的应用

随着医疗技术的迅速发展&#xff0c;微创手术机器人正在成为外科手术的重要助手。与传统开放式手术相比&#xff0c;微创手术创伤小、恢复快、感染率低&#xff0c;对手术器械的精细操控性和感知能力提出了更高要求。多维力传感器作为机器人“触觉”的核心部件&#xff0c;对提…...

Java学习手册:Spring Boot 自动配置与快速开发

一、Spring Boot 自动配置概述 Spring Boot 的自动配置是其核心特性之一&#xff0c;它能够根据项目的依赖和配置自动地进行 Spring 应用程序的配置。自动配置的工作流程如下&#xff1a; SpringBootApplication 注解 &#xff1a;这是自动配置的起点&#xff0c;它是一个组合…...

ValueError: expected sequence of length 8 at dim 2 (got 0)

问题描述 在PyCharm中使用强化学习运行Python代码时报错ValueError: expected sequence of length 8 at dim 2 (got 0)。 问题原因 实际上原因就是gym中的env对象的reset、step等方法的返回值作了改动 解决方法 1、第一步&#xff1a; 将代码块中的&#xff08;记得改的需…...

AI赋能新媒体运营:效率提升与能力突破实战指南

AI赋能新媒体运营&#xff1a;效率提升与能力突破实战指南 在信息爆炸的新媒体时代&#xff0c;运营人员面临着内容产出压力大、数据分析复杂、用户互动需求高等多重挑战。AI技术的迅猛发展为新媒体运营带来了革命性的变革可能。本文将为您揭示如何利用AI工具提升工作效率、培…...

单词规律(简单)

思路和同构字符串那道题一样。、但是这道题要注意的地方就是&#xff0c;检查 pattern 和 s 的单词数量是否一致以及在进行字符串比较的时候应该用equals来进行比较&#xff0c;而不能用“&#xff01;”&#xff0c;“&#xff01;”比较的是对象引用而非内容。 class Soluti…...

QGraphicsView QGraphicsScene QGraphicsItem 的关系

在Qt的图形视图框架中&#xff0c;QGraphicsView、QGraphicsScene和QGraphicsItem 三者协同工作&#xff0c;构成一个分层的结构&#xff0c;用于高效管理和显示复杂的图形界面。以下是它们的关系和职责的详细说明&#xff1a; 1. 核心角色 类名职责类比QGraphicsItem场景中的…...

re题(52)BUUCTF-[FlareOn5]Minesweeper Championship Registration

BUUCTF在线评测 jadx打开if条件就是flag...

c++环境和vscode常用的一些有用插件

环境 WSL需要安装cmake 编译器g14 应该是包含了所有std:c23把好像包含部分c26 vscode 需要插件cmake vscode clangd 方便提示吧 File Watch 插件目的在保存.h/.cpp文件时候自动执行vscode 的cmake吧 error lens 方便每次显示错误和警告的提示懒得每次点击去看错误 Edit Sugge…...

UE自动索敌插件Target System Component

https://www.fab.com/zh-cn/listings/9088334d-3bde-4e10-a937-baeb780f880f ​ 一个完全用 C 编写的 UE插件&#xff0c;添加了对简单相机锁定/瞄准系统的支持。它最初​​在蓝图中开发和测试&#xff0c;然后转换并重写为 C 模块和插件。 特征&#xff1a; 可通过一组可在…...

从括号匹配看栈:数据结构入门的实战与原理

在计算机科学的世界里&#xff0c;数据结构是程序员的 “瑞士军刀”&#xff0c;不同的数据结构适用于不同的场景&#xff0c;能高效解决各类问题。其中&#xff0c;栈作为一种简单却强大的数据结构&#xff0c;在很多实际应用中发挥着关键作用。今天&#xff0c;我们就通过一个…...

ReLU函数及其Python实现

ReLU函数及其Python实现 文章目录 ReLU函数及其Python实现1. ReLU函数定义2. Python实现3. 在深度学习中的应用总结 1. ReLU函数定义 ReLU&#xff08;Rectified Linear Unit&#xff0c;修正线性单元&#xff09;函数是深度学习中常用的激活函数之一。它的定义非常简单&#…...

Rain World 雨世界 [DLC 解锁] [Steam Epic] [Windows SteamOS]

Rain World 雨世界 [DLC 解锁] [Steam & Epic] [Windows & SteamOS] 需要有游戏正版基础本体&#xff0c;安装路径不能带有中文&#xff0c;或其它非常规拉丁字符&#xff1b; DLC 版本 至最新全部 DLC 后续可能无法及时更新文章&#xff0c;具体最新版本见下载文件说明…...

n8n 工作流画布上下左右移动的操作方法

n8n 工作流画布上下左右移动的操作方法 1. n8n 工作流画布上下移动2. n8n 工作流画布左右移动3. n8n 工作流画布扩大和缩小4. n8n 工作流画布缩放到适合 1. n8n 工作流画布上下移动 鼠标滚轮向上滚动是向上移动鼠标滚轮向下滚动是向下移动 2. n8n 工作流画布左右移动 按照Shi…...

Linux 常用命令合集

一、用户权限管理 切换管理员身份 sudo su&#xff1a;普通用户临时获取 root 权限&#xff0c;需输入当前用户密码。管理员提示符&#xff1a;root主机名:路径#。退出管理员&#xff1a;exit&#xff0c;返回普通用户状态。 以管理员身份执行命令 sudo 命令 参数&#xff1a;…...

B站Michale_ee——ESP32_IDF SDK——FreeRTOS_7 流数据缓冲区、消息缓冲区

一、Stream Buffer流数据缓冲区 流数据缓冲区用来处理像音频之类的流数据&#xff1b; 1.API简介 &#xff08;1&#xff09;创建流数据缓冲区 &#xff08;2&#xff09;向流数据缓冲区中发送数据 &#xff08;3&#xff09;从流数据缓冲区中接收数据 2.示例代码及运行结果…...

HCL(HashiCorp Configuration Language)是一种结构化配置语言

HCL&#xff08;HashiCorp Configuration Language&#xff09;是一种结构化配置语言&#xff0c;语法简洁且可读性强&#xff0c;广泛用于 Docker Buildx Bake、Terraform、Nomad 等工具的配置。以下是其核心语法规则和示例&#xff1a; 1. 基础结构 HCL 使用 块&#xff08;…...

k9s 一个基于终端的 Kubernetes 集群管理工具(TUI)

k9s 是一个基于终端的 Kubernetes 集群管理工具&#xff08;TUI&#xff09;&#xff0c;通过快捷键和交互式命令快速操作资源。以下是其核心用法和常见场景&#xff1a; 1. 基本命令 启动 k9s k9s # 默认连接当前 kubeconfig 配置的集群k9s -n <namespace> # 指定命…...

高等数学-第七版-下册 选做记录 习题10-1

1. 4. 5....

DBeaver连接人大金仓数据库V9

1、官网下载驱动jdbc 打开官网地址&#xff0c;找到下面的V9R1-JDBC&#xff0c;点击后面的下载即可&#xff0c;保存到本地 2、解压最新版的驱动程序 3、把***_JDBC文件夹内的驱动程序复制到DBeaver安装目录下的plugins文件夹里 4、打开dbeaver程序&#xff0c;增加kingbase…...

跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务?!

跟韩学AiOps系列之2025学MySQL系列_如何在MySQL中开启和提交事务&#xff1f;! 文章目录 一、事务的基本操作1. 开启事务2. 执行事务内操作3. 提交事务4. 回滚事务 二、验证示例&#xff08;适用于 MySQL 5.7&#xff09;步骤 1&#xff1a;准备测试表和数据步骤 2&#xff1a…...

【KWDB 创作者计划】利用KWDB解决工业物联网场景中的海量数据管理难题的思考

利用KWDB解决工业物联网场景中的海量数据管理难题 一、什么是KWDB&#xff1f;二、工业物联网场景中的数据管理痛点2.1 数据量大且增长迅速2.2 数据多样性2.3 实时性需求2.4 数据分析复杂性 三、KWDB 的技术优势与架构解读3.1 时间序列数据的高效管理3.2 高吞吐写入性能3.3 灵活…...

分享国产AI工作流集成数据库完成业务处理

在现代企业应用中&#xff0c;业务流程的自动化和数据管理是提高效率的关键。Taskflow 作为一个强大的任务流管理工具&#xff0c;可以通过集成数据库实现复杂业务逻辑的处理。本文将分享如何利用 Taskflow 集成数据库&#xff0c;优化业务流程&#xff0c;并展示一个实际案例。…...

【每日八股】复习 Redis Day5:集群(上)

文章目录 复习昨日内容缓存雪崩、击穿、穿透的问题描述及解决方案如何保证数据库和缓存的一致性普通方案进阶方案 如何保证缓存删除一定成功&#xff1f;针对业务一致性要求高的场景&#xff0c;如何确保缓存与数据库的一致性&#xff1f;如何避免缓存失效&#xff1f;如何实现…...

linux进程的复制和替换

Linux 进程的复制与替换 一、主函数参数 在 C 语言里&#xff0c;main 函数能够接收参数&#xff0c;其标准形式如下&#xff1a; int main(int argc, char* argv[], char* envp[]);argc&#xff1a;代表命令行参数的数量&#xff0c;为整数类型。argv&#xff1a;是一个字符…...

【质量管理】现代TRIZ问题识别中的功能分析——相互接触分析

在文章【质量管理】现代TRIZ中问题识别中的功能分析——组件分析-CSDN博客中我们知道了如何对产品进行组件分析&#xff0c;那么组件分析出来有什么作用呢&#xff1f;组件分析就是为了接下来相互接触分析使用的。 什么是相互接触 相互接触分析是功能分析的一部分&#xff0c;…...

一种快速计算OTA PSRR的方法(Ⅱ)

1.仿真验证 1.1仿真设置 1.1.1 Test-bench原理 1.1.2 管子参数设置 为了公平地比较性能&#xff0c;设置所有OTA 的输入晶体管M1和M2为相同的gm和偏置电流1uA。 具体晶体管宽长比设置参见5.参考资料中的论文2。 1.2仿真验证 1.2.1 CM OTA 1&#xff09;小信号参数 M1 M…...

【C++】通过红黑树封装map和set

前言&#xff1a; 通过之前的学习&#xff0c;我们已经学会了红黑树和map、set。这次我们要实现自己的map和set&#xff0c;对&#xff0c;使用红黑树进行封装&#xff01; 当然&#xff0c;红黑树内容这里就不在赘述&#xff0c;我们会复用红黑树的代码&#xff0c;所以先将…...

【Java IO流】字节输入流FileInputStream、字节输出流FileOutputStream

目录 0.前言 1.FileInputStream 1.1 概述 1.2 构造方法 1.3 成员方法 1.4 FileInputStream读取文件案例演示 2.FileOutputStream 2.1 概述 2.2 构造方法 2.3 成员方法 2.4 写入文本文件案例演示 3.FileInputStream FileOutputStream拷贝文件 0.前言 本文讲解的是…...

信息收集新利器:SSearch Chrome 插件来了

SSearch 下载地址 SSearch &#x1f623;用途 每次谷歌语法搜索时还得自己写&#xff0c;我想省事一点&#xff0c;弄了一个插件&#xff0c;先加了几个常用的语法&#xff0c;点击后会跳转到对应搜索页面&#xff0c;也可以直接在搜索框微调 后续也会加些其他语法 &#…...

【AI面试准备】AI误判案例知识库优化方案

面试题&#xff1a;建立内部知识库&#xff1a;收集AI误判案例训练领域专属模型。 在回答关于“建立内部知识库收集AI误判案例训练领域专属模型”的面试问题时&#xff0c;建议从以下结构化框架展开&#xff0c;既能体现专业性&#xff0c;又能展现解决问题的系统性和实际落地…...

从零开始讲DDR(8)——AXI 接口MIG 使用(1)

一、前言 在之前的系列文章中&#xff0c;我们已经讨论过了MIG ip的接口内容&#xff0c;配置方式和modelsim独立仿真相关的内容&#xff0c;因此&#xff0c;本文对于之前已经讨论过的相关内容只做简单描述&#xff0c;着重介绍AXI 接口MIG使用上与普通ui接口的不同之处。感兴…...

字符和编码(python)

位数&#xff1a;英文字符使用 1 个字节表示&#xff0c;中文字符通常使用 3 个字节。示例&#xff1a;汉字 “汉” 的 UTF-8 编码是 \xE6\xB1\x89。优点&#xff1a;兼容 ASCII&#xff0c;广泛用于网络传输和文件存储。 Python 中的字符串类型 在 Python 中&#xff0c;字…...

【STM32】定时器输入捕获

STM32 定时器输入捕获功能笔记 一、什么是输入捕获&#xff08;Input Capture&#xff09; 输入捕获是利用定时器的输入通道&#xff0c;在检测到信号电平变化&#xff08;如上升沿或下降沿&#xff09;时&#xff0c;立即将当前计数器的值捕获并保存到捕获寄存器&#xff08…...

spring-ai集成langfuse

1、pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…...

SALOME源码分析: ParaVis

本文分析SALOME中ParaVis模块。 注1&#xff1a;限于研究水平&#xff0c;分析难免不当&#xff0c;欢迎批评指正。注2&#xff1a;文章内容会不定期更新。 一、核心组件 二、关键流程 三、FAQs 网络资料 SALOME Scientific visualisationPARAVIS Module - Architecture …...

Ubuntu 安装 MySQL8

在 Ubuntu 下安装 MySQL 服务&#xff0c;推荐使用 apt install 官方的 APT 仓库安装方式&#xff0c;这种方式最安全、最稳定、能自动处理依赖关系&#xff0c;也支持后续升级。不推荐在官网手动下载 .deb 包的方式。 配置 Ubuntu 服务器 1. 确认 Ubuntu 系统版本 使用如下命…...

MATLAB图像加密案例

下面是一个使用 MATLAB 编写的简单图像块置乱加密/解密程序,主要利用了函数来组织代码。 这个程序通过将图像分割成小块,然后根据一个密钥(用于随机数生成器种子)打乱这些块的顺序来实现加密。解密过程则使用相同的密钥恢复原始块顺序。 核心思想: 分块: 将图像划分为 …...