算法概述 算法的5大特性 确定性:算法的每一步骤必须有明确的定义,无二义性。即在相同输入下,每次执行都应得到相同的结果。 能行性:算法的每一步都必须是可实现的,即在有限时间内能用有限资源完成。 输入:算法可以有零个或多个输入,输入是算法处理的初始数据。 输出:算法必须有一个或多个输出,输出是算法处理的结果。 有穷性/有限性:算法必须在执行有限步骤后…
一个IOC(控制反转)和DI(依赖注入)的练习程序,实际上和Highway-Toll-Framework的实现基本类似。 \---IOC-Exercise Agent.java Person.java Vehicle.java VehicleType.java Agent.java 提供findVehicleClasses方法,扫描包中的类,返回c…
算法主要原理 算法流程如下: 算法步骤 实现AES的加密流程大部分不难,主要是比较繁琐,理清了思路就很好做了。其中最难处理的部分是列混淆,因为列混淆涉及到了有限域上的乘法运算。这部分内容在代码中的注释都比较详细,就不过多赘述。 剩余的过程代码注释也都比较详细,不多说了。 参考代码 aes.py # AES 128 bit encryption an…
算法主要原理 加密公式:C = (P + K)%26 C:密文 P:原文 K:第几套加密方式 解密公式:P = (C - K)%26 C:密文 P:原文 K:第几套加密方式 如果P<0,P+26取得正序 简单来说,Vigenere密码实际上就是分组的凯撒密码。而分组的方法就是重复密钥,密钥相同的明文为同一组。每一组都可以看作是由不同的密钥所加…
一个高速收费站框架,新增车辆类型(包括是真的新增车辆类型或者同一类型车辆叫法不同)不用修改原有代码,只需要在类上加注解(或注解配合properties配置文件)即可。 \---highway | Main.java | MainV2.java | MainV3.java | MainV4.java | +---annotation | Vehicl…
一个socket应用程序,有服务端、消费端和充值端。不同端通过对象处理流用一个MyTransaction类来进行信息传输。服务端监听端口,并开一个新线程对发来的信息执行相应操作。消费端向服务端发送消费请求,充值端向服务端发送充值请求。 \---v2 ConsumeClient.java MyTransaction.java RechargeClie…
计算器实现 class Calculator: def __init__(self): self.queue = [] # 用于存储输入的计算表达式 def press_key(self, key): if self.is_valid_key(key): if key == '=': result = self.calculate(…
从运行状态到阻塞状态有等待锁的情况吗? 当一个线程试图获取一个锁(如 synchronized 块或 ReentrantLock),如果该锁已经被其他线程持有,当前线程无法立即获取锁时,就会从运行状态(Running)转换为阻塞状态(Blocked),直到锁被释放。 文章最后部分有两个讨论: 获取到锁的线程为什么不直接执行到结束,这样就不会占用锁了…
自ChatGPT在2022年11月上线后,一路开挂,5天时间便突破百万用户,仅2个月时间月活用户就突破1亿,成为史上增速最快的消费级应用,远超TikTok、Facebook、Google等全球应用。也因此,ChatGPT掀起了一场全民AI热潮。 在当前科技迅猛发展的背景下,各种AI工具如雨后春笋般涌现,并迅速渗透到各行各业。从ChatGPT、Mid…