标签: Python

9 篇文章

thumbnail
同步与异步?线程调度?
总结 对于同步和异步来说,最简单的说法就是:同步会按部就班的执行代码,一句一句的执行代码,所以遇到耗时操作会直接出现程序卡住的情况;异步会在异步语句时把操作交给别人(线程池、回调、消息队列)去干。 而异步和线程调度本质上并无关联,只是异步编程可能会用到线程调度(异步编程也可以用事件循环实现)。至于我们写的程序,如果说没有使用异步操作编写代码,程序卡…
thumbnail
算法设计与分析:要点总结-2
分治算法 分治思想: 分治算法是一种将一个复杂问题分解成多个较小的子问题,通过递归解决子问题,再将子问题的解合并起来,得到原问题的解。分治思想的核心是通过将问题规模减小、分解和组合来简化问题的解决。 分治算法的基本步骤: 分解:将问题划分为多个规模较小、结构与原问题类似的子问题。 解决:递归地解决这些子问题,当子问题的规模足够小或问题简单时,可以直…
thumbnail
算法设计与分析:要点总结-1
算法概述 算法的5大特性 确定性:算法的每一步骤必须有明确的定义,无二义性。即在相同输入下,每次执行都应得到相同的结果。 能行性:算法的每一步都必须是可实现的,即在有限时间内能用有限资源完成。 输入:算法可以有零个或多个输入,输入是算法处理的初始数据。 输出:算法必须有一个或多个输出,输出是算法处理的结果。 有穷性/有限性:算法必须在执行有限步骤后…
thumbnail
E2_AES
算法主要原理 算法流程如下: 算法步骤 AES算法是一种对称分组密码算法,采用代换-置换网络(SPN)结构,通过多轮迭代的加密过程对数据进行混淆和扩散,确保其安全性。该算法将明文分成固定长度的128位数据块(实际上分组长度也有128位、192位或256位三种选择),并支持128位、192位或256位的密钥,分别对应10轮、12轮或14轮的加密轮次。…
thumbnail
E1_Vigenere
算法主要原理 加密公式:C = (P + K)%26 C:密文 P:原文 K:第几套加密方式 解密公式:P = (C - K)%26 C:密文 P:原文 K:第几套加密方式 如果P<0,P+26取得正序 简单来说,Vigenere密码实际上就是分组的凯撒密码。而分组的方法就是重复密钥,密钥相同的明文为同一组。每一组都可以看作是由不同的密钥所加…
thumbnail
解决程序无法读取数据库插入的新数据
问题描述 有两个不同的守护进程,一个守护进程接收csi数据插入到数据库中,另一个守护进程从数据库中读取csi数据进行处理。 在两个守护程序运行的过程中,从数据库中读取csi数据进行处理的守护进程在数据库中有新数据的情况下无法读取到数据库的新数据。经过排查发现,新数据确实被接收csi数据的守护进程成功插入,但是读取csi数据的守护进程并没有从数据库中…
thumbnail
Socket(套接字)通信原理 
一、Socket是什么 Socket 的中文翻译过来就是“套接字”。套接字是什么,我们先来看看它的英文含义:插座。 Socket 就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通信,端口就像插座上的孔,端口不能同时被其他进程占用。而我们建立连接就像把插头插在这个插座上,创建一个 Socket 实例开始监听后,这个电话插座就时刻…
thumbnail
软件工程课堂讨论二
计算器实现 class Calculator: def __init__(self): self.queue = [] # 用于存储输入的计算表达式 def press_key(self, key): if self.is_valid_key(key): if key == '=': result = self.calculate(…
thumbnail
软件工程课堂讨论一
从运行状态到阻塞状态有等待锁的情况吗? 当一个线程试图获取一个锁(如 synchronized 块或 ReentrantLock),如果该锁已经被其他线程持有,当前线程无法立即获取锁时,就会从运行状态(Running)转换为阻塞状态(Blocked),直到锁被释放。 文章最后部分有两个讨论: 获取到锁的线程为什么不直接执行到结束,这样就不会占用锁了…