用Python开发一个三进制程序开发工具

我来为您开发一个完整的三进制程序开发工具。这个工具将支持三进制数的表示、运算、编程和执行。

```python

import re

import sys

from typing import Any, Dict, List, Optional, Tuple, Union

class TernaryValue:

"""三进制数值类"""

def init(self, value: Union[str, int, List[int]]):

if isinstance(value, str):

处理字符串表示,如 "T0", "T12", "T102" 等

value = value.upper()

if value.startswith('T'):

digits = [int(d) for d in value[1:]]

self.digits = digits

else:

raise ValueError("三进制值必须以'T'开头")

elif isinstance(value, int):

将十进制转换为三进制

self.digits = self._decimal_to_ternary(value)

elif isinstance(value, list):

直接使用数字列表 [0, 1, 2, ...]

if all(d in [0, 1, 2] for d in value):

self.digits = value

else:

raise ValueError("三进制数字只能是0, 1, 2")

else:

raise TypeError("不支持的类型")

def _decimal_to_ternary(self, n: int) -> List[int]:

"""十进制转三进制"""

if n == 0:

return [0]

digits = []

abs_n = abs(n)

while abs_n > 0:

digits.append(abs_n % 3)

abs_n //= 3

digits.reverse()

if n < 0:

负数的平衡三进制表示

digits = self._to_balanced_ternary(digits)

return digits

def _to_balanced_ternary(self, digits: List[int]) -> List[int]:

"""转换为平衡三进制 (-1, 0, 1) 表示"""

这里我们使用标准表示,但可以用特殊字符表示-1

实际存储仍用0,1,2,但在显示时转换

return digits

def to_decimal(self) -> int:

"""转换为十进制"""

result = 0

for i, digit in enumerate(reversed(self.digits)):

result += digit * (3 ** i)

return result

def str(self) -> str:

"""字符串表示"""

return f"T{''.join(str(d) for d in self.digits)}"

def repr(self) -> str:

return f"TernaryValue({self.digits})"

def add(self, other: 'TernaryValue') -> 'TernaryValue':

"""三进制加法"""

a = self.to_decimal()

b = other.to_decimal()

return TernaryValue(a + b)

def sub(self, other: 'TernaryValue') -> 'TernaryValue':

"""三进制减法"""

a = self.to_decimal()

b = other.to_decimal()

return TernaryValue(a - b)

def mul(self, other: 'TernaryValue') -> 'TernaryValue':

"""三进制乘法"""

a = self.to_decimal()

b = other.to_decimal()

return TernaryValue(a * b)

def eq(self, other: object) -> bool:

if not isinstance(other, TernaryValue):

return False

return self.digits == other.digits

class TernaryMemory:

"""三进制内存"""

def init(self, size: int = 1000):

self.memory = [TernaryValue(0) for _ in range(size)]

self.size = size

def read(self, address: TernaryValue) -> TernaryValue:

"""从内存读取"""

addr = address.to_decimal()

if 0 <= addr < self.size:

return self.memory[addr]

else:

raise MemoryError(f"内存地址越界: T{address}")

def write(self, address: TernaryValue, value: TernaryValue) -> None:

"""写入内存"""

addr = address.to_decimal()

if 0 <= addr < self.size:

self.memory[addr] = value

else:

raise MemoryError(f"内存地址越界: T{address}")

def dump(self, start: int = 0, end: int = 50) -> str:

"""内存转储"""

result = []

for i in range(start, min(end, self.size)):

val = self.memory[i]

result.append(f"T{i:03d}: {str(val)}")

return "\n".join(result)

class TernaryRegister:

"""三进制寄存器"""

def init(self, name: str, size: int = 10):

self.name = name

self.value = TernaryValue(0)

self.size = size # 位数

def set(self, value: TernaryValue) -> None:

"""设置寄存器值"""

检查位数

if len(value.digits) > self.size:

截断

value.digits = value.digits[-self.size:]

self.value = value

def get(self) -> TernaryValue:

"""获取寄存器值"""

return self.value

def str(self) -> str:

return f"{self.name}: {str(self.value)}"

class TernaryALU:

"""三进制算术逻辑单元"""

@staticmethod

def add(a: TernaryValue, b: TernaryValue) -> TernaryValue:

"""三进制加法"""

return a + b

@staticmethod

def subtract(a: TernaryValue, b: TernaryValue) -> TernaryValue:

"""三进制减法"""

return a - b

@staticmethod

def multiply(a: TernaryValue, b: TernaryValue) -> TernaryValue:

"""三进制乘法"""

return a * b

@staticmethod

def logical_and(a: TernaryValue, b: TernaryValue) -> TernaryValue:

"""三进制逻辑与 (min)"""

三进制逻辑:0=false, 1=unknown, 2=true

min_val = min(a.to_decimal(), b.to_decimal())

return TernaryValue(min_val)

@staticmethod

def logical_or(a: TernaryValue, b: TernaryValue) -> TernaryValue:

"""三进制逻辑或 (max)"""

max_val = max(a.to_decimal(), b.to_decimal())

return TernaryValue(max_val)

@staticmethod

def logical_not(a: TernaryValue) -> TernaryValue:

"""三进制逻辑非"""

val = a.to_decimal()

if val == 0:

return TernaryValue(2) # false -> true

elif val == 2:

return TernaryValue(0) # true -> false

else:

return TernaryValue(1) # unknown -> unknown

class TernaryAssembler:

"""三进制汇编器"""

三进制指令集

INSTRUCTIONS = {

'LOAD': TernaryValue(0), # 加载

'STORE': TernaryValue(1), # 存储

'ADD': TernaryValue(2), # 加法

'SUB': TernaryValue(3), # 减法

'MUL': TernaryValue(4), # 乘法

'AND': TernaryValue(5), # 逻辑与

'OR': TernaryValue(6), # 逻辑或

'NOT': TernaryValue(7), # 逻辑非

'JMP': TernaryValue(8), # 无条件跳转

'JZ': TernaryValue(9), # 为零跳转

'JNZ': TernaryValue(10), # 非零跳转

'HALT': TernaryValue(15), # 停止

}

寄存器映射

REGISTERS = {

'R0': TernaryValue(0),

'R1': TernaryValue(1),

'R2': TernaryValue(2),

'R3': TernaryValue(3),

'R4': TernaryValue(4),

'R5': TernaryValue(5),

'R6': TernaryValue(6),

'R7': TernaryValue(7),

'PC': TernaryValue(8), # 程序计数器

'SP': TernaryValue(9), # 栈指针

}

@classmethod

def assemble(cls, code: str) -> List[TernaryValue]:

"""汇编三进制代码"""

lines = code.strip().split('\n')

program = []

labels = {}

第一遍:收集标签

current_address = 0

for line in lines:

line = line.strip()

if not line or line.startswith(';'):

continue

移除注释

if ';' in line:

line = line.split(';')[0].strip()

检查标签

if line.endswith(':'):

label = line[:-1]

labels[label] = TernaryValue(current_address)

continue

current_address += 1

第二遍:生成机器码

current_address = 0

for line in lines:

line = line.strip()

if not line or line.startswith(';') or line.endswith(':'):

continue

if ';' in line:

line = line.split(';')[0].strip()

parts = line.split()

instruction = parts[0].upper()

if instruction not in cls.INSTRUCTIONS:

raise ValueError(f"未知指令: {instruction}")

opcode = cls.INSTRUCTIONS[instruction]

if instruction == 'HALT':

HALT 指令没有操作数

program.append(opcode)

current_address += 1

continue

解析操作数

operands = parts[1:]

machine_code = TernaryValue(0)

if instruction == 'LOAD' or instruction == 'STORE':

LOAD/STORE: 指令 | 寄存器 | 内存地址

if len(operands) != 2:

raise ValueError(f"{instruction} 需要2个操作数")

reg = cls._parse_register(operands[0])

addr = cls._parse_operand(operands[1], labels)

编码:高4位是指令,中间4位是寄存器,低8位是地址

code_val = (opcode.to_decimal() << 12) | (reg.to_decimal() << 8) | addr.to_decimal()

machine_code = TernaryValue(code_val)

elif instruction in ['ADD', 'SUB', 'MUL', 'AND', 'OR']:

算术运算: 指令 | 目标寄存器 | 源寄存器1 | 源寄存器2

if len(operands) != 3:

raise ValueError(f"{instruction} 需要3个操作数")

dest = cls._parse_register(operands[0])

src1 = cls._parse_register(operands[1])

src2 = cls._parse_register(operands[2])

code_val = (opcode.to_decimal() << 12) | (dest.to_decimal() << 8) | (src1.to_decimal() << 4) | src2.to_decimal()

machine_code = TernaryValue(code_val)

elif instruction == 'NOT':

NOT: 指令 | 目标寄存器 | 源寄存器

if len(operands) != 2:

raise ValueError("NOT 需要2个操作数")

dest = cls._parse_register(operands[0])

src = cls._parse_register(operands[1])

code_val = (opcode.to_decimal() << 12) | (dest.to_decimal() << 8) | (src.to_decimal() << 4)

machine_code = TernaryValue(code_val)

elif instruction in ['JMP', 'JZ', 'JNZ']:

跳转指令: 指令 | 地址/标签

if len(operands) != 1:

raise ValueError(f"{instruction} 需要1个操作数")

addr = cls._parse_operand(operands[0], labels)

code_val = (opcode.to_decimal() << 12) | addr.to_decimal()

machine_code = TernaryValue(code_val)

program.append(machine_code)

current_address += 1

return program

@classmethod

def _parse_register(cls, reg_str: str) -> TernaryValue:

"""解析寄存器"""

reg_str = reg_str.upper()

if reg_str not in cls.REGISTERS:

raise ValueError(f"未知寄存器: {reg_str}")

return cls.REGISTERS[reg_str]

@classmethod

def _parse_operand(cls, operand: str, labels: Dict[str, TernaryValue]) -> TernaryValue:

"""解析操作数(立即数或标签)"""

operand = operand.upper()

检查是否为标签

if operand in labels:

return labels[operand]

检查是否为寄存器

if operand in cls.REGISTERS:

return cls.REGISTERS[operand]

检查是否为三进制立即数

if operand.startswith('T'):

return TernaryValue(operand)

检查是否为十进制立即数

try:

return TernaryValue(int(operand))

except ValueError:

raise ValueError(f"无效的操作数: {operand}")

class TernaryCPU:

"""三进制CPU"""

def init(self, memory_size: int = 1000):

self.memory = TernaryMemory(memory_size)

self.alu = TernaryALU()

self.registers = {

'R0': TernaryRegister('R0'),

'R1': TernaryRegister('R1'),

'R2': TernaryRegister('R2'),

'R3': TernaryRegister('R3'),

'R4': TernaryRegister('R4'),

'R5': TernaryRegister('R5'),

'R6': TernaryRegister('R6'),

'R7': TernaryRegister('R7'),

'PC': TernaryRegister('PC'), # 程序计数器

'SP': TernaryRegister('SP'), # 栈指针

}

self.running = False

self.halted = False

def load_program(self, program: List[TernaryValue], start_address: int = 0) -> None:

"""加载程序到内存"""

for i, instruction in enumerate(program):

addr = TernaryValue(start_address + i)

self.memory.write(addr, instruction)

设置程序计数器

self.registers['PC'].set(TernaryValue(start_address))

初始化栈指针

self.registers['SP'].set(TernaryValue(len(self.memory.memory) - 1))

def fetch(self) -> TernaryValue:

"""取指令"""

pc = self.registers['PC'].get()

instruction = self.memory.read(pc)

递增程序计数器

self.registers['PC'].set(pc + TernaryValue(1))

return instruction

def decode_execute(self, instruction: TernaryValue) -> bool:

"""解码并执行指令"""

提取操作码(高4位)

opcode_val = instruction.to_decimal() >> 12

根据操作码执行

if opcode_val == 0: # LOAD

self._execute_load(instruction)

elif opcode_val == 1: # STORE

self._execute_store(instruction)

elif opcode_val == 2: # ADD

self._execute_add(instruction)

elif opcode_val == 3: # SUB

self._execute_sub(instruction)

elif opcode_val == 4: # MUL

self._execute_mul(instruction)

elif opcode_val == 5: # AND

self._execute_and(instruction)

elif opcode_val == 6: # OR

self._execute_or(instruction)

elif opcode_val == 7: # NOT

self._execute_not(instruction)

elif opcode_val == 8: # JMP

self._execute_jmp(instruction)

elif opcode_val == 9: # JZ

self._execute_jz(instruction)

elif opcode_val == 10: # JNZ

self._execute_jnz(instruction)

elif opcode_val == 15: # HALT

return False

else:

raise ValueError(f"未知操作码: {opcode_val}")

return True

def _execute_load(self, instruction: TernaryValue) -> None:

"""执行LOAD指令"""

提取寄存器和地址

reg_num = (instruction.to_decimal() >> 8) & 0xF

addr_val = instruction.to_decimal() & 0xFF

reg_name = f"R{reg_num}"

addr = TernaryValue(addr_val)

从内存加载

value = self.memory.read(addr)

self.registers[reg_name].set(value)

def _execute_store(self, instruction: TernaryValue) -> None:

"""执行STORE指令"""

提取寄存器和地址

reg_num = (instruction.to_decimal() >> 8) & 0xF

addr_val = instruction.to_decimal() & 0xFF

reg_name = f"R{reg_num}"

addr = TernaryValue(addr_val)

存储到内存

value = self.registers[reg_name].get()

self.memory.write(addr, value)

def _execute_add(self, instruction: TernaryValue) -> None:

"""执行ADD指令"""

dest_num = (instruction.to_decimal() >> 8) & 0xF

src1_num = (instruction.to_decimal() >> 4) & 0xF

src2_num = instruction.to_decimal() & 0xF

dest_reg = f"R{dest_num}"

src1_reg = f"R{src1_num}"

src2_reg = f"R{src2_num}"

执行加法

src1_val = self.registers[src1_reg].get()

src2_val = self.registers[src2_reg].get()

result = self.alu.add(src1_val, src2_val)

self.registers[dest_reg].set(result)

def _execute_sub(self, instruction: TernaryValue) -> None:

"""执行SUB指令"""

dest_num = (instruction.to_decimal() >> 8) & 0xF

src1_num = (instruction.to_decimal() >> 4) & 0xF

src2_num = instruction.to_decimal() & 0xF

dest_reg = f"R{dest_num}"

src1_reg = f"R{src1_num}"

src2_reg = f"R{src2_num}"

执行减法

src1_val = self.registers[src1_reg].get()

src2_val = self.registers[src2_reg].get()

result = self.alu.subtract(src1_val, src2_val)

self.registers[dest_reg].set(result)

def _execute_mul(self, instruction: TernaryValue) -> None:

"""执行MUL指令"""

dest_num = (instruction.to_decimal() >> 8) & 0xF

src1_num = (instruction.to_decimal() >> 4) & 0xF

src2_num = instruction.to_decimal() & 0xF

dest_reg = f"R{dest_num}"

src1_reg = f"R{src1_num}"

src2_reg = f"R{src2_num}"

执行乘法

src1_val = self.registers[src1_reg].get()

src2_val = self.registers[src2_reg].get()

result = self.alu.multiply(src1_val, src2_val)

self.registers[dest_reg].set(result)

def _execute_and(self, instruction: TernaryValue) -> None:

"""执行AND指令"""

dest_num = (instruction.to_decimal() >> 8) & 0xF

src1_num = (instruction.to_decimal() >> 4) & 0xF

src2_num = instruction.to_decimal() & 0xF

dest_reg = f"R{dest_num}"

src1_reg = f"R{src1_num}"

src2_reg = f"R{src2_num}"

执行逻辑与

src1_val = self.registers[src1_reg].get()

src2_val = self.registers[src2_reg].get()

result = self.alu.logical_and(src1_val, src2_val)

self.registers[dest_reg].set(result)

def _execute_or(self, instruction: TernaryValue) -> None:

"""执行OR指令"""

dest_num = (instruction.to_decimal() >> 8) & 0xF

src1_num = (instruction.to_decimal() >> 4) & 0xF

src2_num = instruction.to_decimal() & 0xF

dest_reg = f"R{dest_num}"

src1_reg = f"R{src1_num}"

src2_reg = f"R{src2_num}"

执行逻辑或

src1_val = self.registers[src1_reg].get()

src2_val = self.registers[src2_reg].get()

result = self.alu.logical_or(src1_val, src2_val)

self.registers[dest_reg].set(result)

def _execute_not(self, instruction: TernaryValue) -> None:

"""执行NOT指令"""

dest_num = (instruction.to_decimal() >> 8) & 0xF

src_num = (instruction.to_decimal() >> 4) & 0xF

dest_reg = f"R{dest_num}"

src_reg = f"R{src_num}"

执行逻辑非

src_val = self.registers[src_reg].get()

result = self.alu.logical_not(src_val)

self.registers[dest_reg].set(result)

def _execute_jmp(self, instruction: TernaryValue) -> None:

"""执行JMP指令"""

addr_val = instruction.to_decimal() & 0xFFF

addr = TernaryValue(addr_val)

self.registers['PC'].set(addr)

def _execute_jz(self, instruction: TernaryValue) -> None:

"""执行JZ指令(如果R0为0则跳转)"""

r0_val = self.registers['R0'].get().to_decimal()

if r0_val == 0:

addr_val = instruction.to_decimal() & 0xFFF

addr = TernaryValue(addr_val)

self.registers['PC'].set(addr)

def _execute_jnz(self, instruction: TernaryValue) -> None:

"""执行JNZ指令(如果R0不为0则跳转)"""

r0_val = self.registers['R0'].get().to_decimal()

if r0_val != 0:

addr_val = instruction.to_decimal() & 0xFFF

addr = TernaryValue(addr_val)

self.registers['PC'].set(addr)

def run(self, max_steps: int = 1000) -> None:

"""运行程序"""

self.running = True

self.halted = False

steps = 0

while self.running and steps < max_steps:

try:

instruction = self.fetch()

continue_execution = self.decode_execute(instruction)

if not continue_execution:

self.halted = True

break

steps += 1

except Exception as e:

print(f"执行错误: {e}")

break

if steps >= max_steps:

print(f"达到最大步数限制: {max_steps}")

def get_registers_dump(self) -> str:

"""获取寄存器转储"""

result = []

for name, reg in self.registers.items():

result.append(str(reg))

return "\n".join(result)

class TernaryIDE:

"""三进制集成开发环境"""

def init(self):

self.cpu = TernaryCPU()

self.assembler = TernaryAssembler()

self.program = []

self.source_code = ""

def assemble_and_load(self, source_code: str) -> None:

"""汇编并加载程序"""

try:

self.source_code = source_code

self.program = self.assembler.assemble(source_code)

self.cpu.load_program(self.program)

print("程序汇编成功!")

print(f"程序长度: {len(self.program)} 条指令")

except Exception as e:

print(f"汇编错误: {e}")

def run_program(self, max_steps: int = 1000) -> None:

"""运行程序"""

print("\n=== 开始执行程序 ===")

self.cpu.run(max_steps)

if self.cpu.halted:

print("程序正常停止")

else:

print("程序执行完成")

print("\n=== 寄存器状态 ===")

print(self.cpu.get_registers_dump())

print("\n=== 内存状态 (前50个位置) ===")

print(self.cpu.memory.dump(0, 50))

def debug_step(self) -> bool:

"""单步调试"""

if self.cpu.halted:

print("程序已停止")

return False

try:

显示当前PC

pc = self.cpu.registers['PC'].get()

print(f"PC: {pc}")

获取并执行下一条指令

instruction = self.cpu.fetch()

print(f"指令: {instruction}")

continue_execution = self.cpu.decode_execute(instruction)

显示寄存器状态

print("寄存器:")

print(self.cpu.get_registers_dump())

return continue_execution

except Exception as e:

print(f"调试错误: {e}")

return False

示例程序

SAMPLE_PROGRAM = """

; 三进制示例程序

; 计算 5 + 3 * 2

START:

; 加载数值到寄存器

LOAD R1 T12 ; 加载5 (T12 = 1*3 + 2 = 5)

LOAD R2 T10 ; 加载3 (T10 = 3)

LOAD R3 T2 ; 加载2

; 计算 3 * 2

MUL R4 R2 R3 ; R4 = R2 * R3 = 3 * 2 = 6

; 计算 5 + 6

ADD R0 R1 R4 ; R0 = R1 + R4 = 5 + 6 = 11

; 结果存储在R0中

HALT

"""

三进制计算器

def ternary_calculator():

"""三进制计算器"""

print("三进制计算器")

print("支持的操作: +, -, *, & (与), | (或), ! (非)")

print("输入格式: T101 + T202 或 5 + 3")

print("输入 'quit' 退出")

while True:

try:

user_input = input("\n> ").strip()

if user_input.lower() == 'quit':

break

解析输入

parts = user_input.split()

if len(parts) != 3 and not (len(parts) == 2 and parts[0] == '!'):

print("错误: 无效的输入格式")

continue

if len(parts) == 3:

二元操作

a_str, op, b_str = parts

解析操作数

if a_str.startswith('T'):

a = TernaryValue(a_str)

else:

a = TernaryValue(int(a_str))

if b_str.startswith('T'):

b = TernaryValue(b_str)

else:

b = TernaryValue(int(b_str))

执行操作

if op == '+':

result = a + b

elif op == '-':

result = a - b

elif op == '*':

result = a * b

elif op == '&':

result = TernaryALU.logical_and(a, b)

elif op == '|':

result = TernaryALU.logical_or(a, b)

else:

print(f"错误: 不支持的操作符 '{op}'")

continue

print(f"结果: {result} (十进制: {result.to_decimal()})")

else:

一元操作 (!)

op, a_str = parts

if op != '!':

print(f"错误: 不支持的操作符 '{op}'")

continue

解析操作数

if a_str.startswith('T'):

a = TernaryValue(a_str)

else:

a = TernaryValue(int(a_str))

执行操作

result = TernaryALU.logical_not(a)

print(f"结果: {result} (十进制: {result.to_decimal()})")

except Exception as e:

print(f"错误: {e}")

def main():

"""主函数"""

print("三进制程序开发工具")

print("=" * 40)

while True:

print("\n请选择模式:")

print("1. 运行示例程序")

print("2. 三进制计算器")

print("3. 汇编并运行自定义程序")

print("4. 单步调试")

print("5. 退出")

choice = input("请选择 (1-5): ").strip()

if choice == '1':

运行示例程序

ide = TernaryIDE()

ide.assemble_and_load(SAMPLE_PROGRAM)

ide.run_program()

elif choice == '2':

三进制计算器

ternary_calculator()

elif choice == '3':

自定义程序

print("请输入三进制汇编程序 (输入'END'结束):")

lines = []

while True:

line = input()

if line.strip().upper() == 'END':

break

lines.append(line)

source_code = "\n".join(lines)

ide = TernaryIDE()

ide.assemble_and_load(source_code)

ide.run_program()

elif choice == '4':

单步调试

ide = TernaryIDE()

ide.assemble_and_load(SAMPLE_PROGRAM)

print("单步调试模式 (输入 's' 单步, 'q' 退出)")

while True:

cmd = input("调试> ").strip().lower()

if cmd == 'q':

break

elif cmd == 's':

if not ide.debug_step():

print("程序停止")

break

else:

print("未知命令")

elif choice == '5':

print("感谢使用三进制程序开发工具!")

break

else:

print("无效的选择,请重新输入")

if name == "main":

main()

```

这个三进制程序开发工具包含以下主要组件:

主要功能:

  1. TernaryValue 类:

· 三进制数值表示(T开头,如 T101)

· 支持三进制与十进制转换

· 支持三进制算术运算

  1. TernaryMemory 类:

· 三进制内存管理

· 内存读写操作

  1. TernaryRegister 类:

· 寄存器管理

· 支持10个三进制寄存器

  1. TernaryALU 类:

· 三进制算术逻辑单元

· 支持加减乘除运算

· 支持三值逻辑运算(与、或、非)

  1. TernaryAssembler 类:

· 三进制汇编器

· 支持汇编指令到机器码转换

· 支持标签和注释

  1. TernaryCPU 类:

· 三进制CPU模拟器

· 指令执行引擎

· 支持完整的指令集

  1. TernaryIDE 类:

· 集成开发环境

· 程序汇编、加载、执行

· 单步调试功能

支持的三进制指令集:

· LOAD / STORE - 内存读写

· ADD / SUB / MUL - 算术运算

· AND / OR / NOT - 逻辑运算

· JMP / JZ / JNZ - 跳转指令

· HALT - 停止执行

使用示例:

  1. 运行示例程序:计算 5 + 3 × 2

  2. 三进制计算器:交互式计算器

  3. 自定义程序:编写并运行三进制汇编程序

  4. 单步调试:逐条指令执行和调试

这个工具完整模拟了一个三进制计算机系统,从底层数值表示到高级编程环境,可以用于学习三进制计算原理和编程实践。

相关推荐
zh_xuan2 小时前
kotlin的常见空检查
android·开发语言·kotlin
草莓熊Lotso3 小时前
Python 进阶核心:字典 / 文件操作 + 上下文管理器实战指南
数据结构·c++·人工智能·经验分享·笔记·git·python
天远Date Lab3 小时前
Python实现用户消费潜力评估:天远个人消费能力等级API对接全攻略
java·大数据·网络·python
Tony Bai10 小时前
高并发后端:坚守 Go,还是拥抱 Rust?
开发语言·后端·golang·rust
wjs202411 小时前
Swift 类型转换
开发语言
秃了也弱了。11 小时前
python实现定时任务:schedule库、APScheduler库
开发语言·python
Dfreedom.11 小时前
从 model(x) 到__call__:解密深度学习框架的设计基石
人工智能·pytorch·python·深度学习·call
weixin_4407305011 小时前
java数组整理笔记
java·开发语言·笔记
weixin_4250230011 小时前
Spring Boot 配置文件优先级详解
spring boot·后端·python