Python控制流和Lambda表达式
Python控制流 & Lambda表达式 Python 控制流 zip() 比如我们有两个列表,我们想将他俩组成一个列表,我们可以使用内置函数 zip() ,zip() 会返回一个迭代器,我们可以使用for去遍历。也可以配合range打印索引。 1234567891011121314151617181920212223>>> items = ['bananas', 'mattresses', 'dog kennels', 'machine', 'cheeses']>>> weights = [15, 34, 42, 120, 5]>>> print(list(zip(items,weights)))[('bananas', 15), ('mattresses', 34), ('dog kennels', 42), ('machine',...
Java网络编程
Java 网络编程 完整代码:https://github.com/JiaZhengJingXianSheng/Java-Study-Notes/tree/main/Java-%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B 测试IP 1234567891011121314151617181920212223242526// 测试IPpublic class TestInetAddress { public static void main(String[] args) { try { // 查询本机地址 InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1"); System.out.println(inetAddress1); InetAddress inetAddress2 =...
Python虚拟环境
Python 虚拟环境 查看帮助 1python -m venv -h 其中 --system-site-packages 是引用系统级别的库 创建 1python -m venv venvdemo 创建好后会在用户目录下创建一个 venvdemo 目录 1234567891011121314C:\Users\lyz\venvdemo>dir 驱动器 C 中的卷是 系统 卷的序列号是 5291-6C8F C:\Users\lyz\venvdemo 的目录2022/01/11 11:31 <DIR> .2022/01/11 11:31 <DIR> ..2022/01/11 11:31 <DIR> Include2022/01/11 11:31 <DIR> Lib2022/01/11 11:31 76 pyvenv.cfg2022/01/11 11:39 <DIR> ...
EPnP
EPnP 参考链接:深入EPnP算法 针对以上链接,提取个人可以看懂的部分 PnP问题的定义 Perspective-n-Point问题(PnP)的已知条件: n个世界坐标系中的3D参考点(3D reference points)坐标; 与这n个3D点对应的、投影在图像上的2D参考点(2D reference points)坐标; 摄像头的内参K; 求解PnP问题可以得到摄像头的位姿。 大多数非迭代的PnP算法会首先求解特征点的深度,以获得特征点在相机坐标系中的3D坐标,而EPnP算法将世界坐标系中的3D坐标表示为一组虚拟的控制点的加权和。对于一般情形,EPnP算法要求控制点的数目为4,且这4个控制点不能共面。因为摄像头的外参未知,这四个控制点在摄像头参考坐标系下的坐标是未知的。而如果能求解出这四个控制点在摄像头参考坐标系下的坐标,我们就可以计算出摄像头的位姿。 Control Points & Barycentric Coordinates 控制点和重心坐标 4个控制点在世界坐标系中的坐标为 \(c_j^w , j = 1 , ... ,...
自编小程序PDF转图片
PDF转图片 完整源码:https://github.com/JiaZhengJingXianSheng/PDF2Image x86-64 可执行文件: 链接:https://pan.baidu.com/s/1Qk_SCLNtnYLSxfu0ArF5-Q 提取码:at0c 执行源码须自己配置依赖,需配置traits,请自行搜索解决。打包后的可执行程序链接如上。 注意: 程序因未作错误判定,请选择PDF文件夹时,保证文件夹下仅有pdf文件。 程序核心 1234567891011for file in os.listdir(self.path): pdf = fitz.open(self.path + "/" + file) # 逐页读取PDF for pg in range(0, pdf.page_count): page = pdf[pg] pm = page.get_pixmap() # 开始写图像 pm.save(self.path + "/../Image/" + str(file) + "/" +...
Linux下模拟实现简单的Shell
Linux下模拟实现简单的Shell 完整代码:https://github.com/JiaZhengJingXianSheng/Linux_Shell 一、 fork fork系统调用用于创建一个新进程,称为子进程,它与进程(称为系统调用fork的进程)同时运行,此进程称为父进程。创建新的子进程后,两个进程将执行fork()系统调用之后的下一条指令。子进程使用相同的程序计数器,相同的CPU寄存器,在父进程中使用的相同打开文件。 特点 1)在父进程中,fork返回新创建子进程的进程ID; 2)在子进程中,fork返回0; 3)如果出现错误,fork返回一个负值; 如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。在子进程中,fork函数返回0,在父进程中,fork返回新创建子进程的进程ID。因此我们可以通过判断fork返回值来确定进程是子进程还是父进程。 二、 execvp execvp() 会从PATH所指的目录中查找符合参数file 的文件名,找到后便执行该文件,然后将第二个参数...
朴素贝叶斯分类器
朴素贝叶斯分类器 完整代码:https://github.com/JiaZhengJingXianSheng/Naive-Bayes-Classify 基础 贝叶斯分类的基础是概率推理,就是在各种条件的存在不确定,仅知其出现概率的情况下,如何完成推理和决策任务。 而朴素贝叶斯分类器是基于独立假设的,即假设样本每个特 征与其他特征都不相关。 朴素贝叶斯分类器依靠精确的自然概率模型,在有监督学习 的样本集中能获取得非常好的分类效果。 条件概率 假设A,B是两个随机变量,它们的联合概率 P(A=x,B=y) 是指 A=x和B=y同时 发生的概率。 如果A和B是两个随机变量,且 P(B)≠0 。那么B条件下,A 的条件概率为 \[ P(A|B)=\frac{P(A,B)}{P(B)} \] 我们用Ω代表总样本空间,P(A|B)的隐含假设是,B确定要发生。当确定B发生时, 样本空间不再是Ω,而是缩小成B。我们在B样本空间中 寻找A发生的概率。 贝叶斯定理 贝叶斯定理 (Bayes theorem)...
Linux下模仿实现readelf部分功能
模仿实现Linux下 \(readelf\) 工具部分功能 完整实现: https://github.com/JiaZhengJingXianSheng/ReadELF ELF 目标文件格式的最前部是 ELF文件头 (ELF Header) ,它包含了描述整个文件的基本属性,比如 ELF 文件版本、目标机器型号、程序入口地址等。紧接是 ELF 文件各个段。其中ELF 文件中与段有关的重要结构就是 段表 (Section Header Table) ,该表描述了ELF 文件包含的所有段的信息,比如每个段的段名、段的长度、在文件中的偏移、读写权限及段的其他属性。 在 linux 下elf的定义存放在 \(/usr/include\) 下, 我们可以用 \(readelf -h\) 命令加上文件来查看ELF头文件。 1vim /usr/include/elf.h ELF 的文件头中定义了...
Java简单策略模式
Java策略模式 参考书目 《大话设计模式》 程杰 清华大学出版社 代码链接 https://github.com/JiaZhengJingXianSheng/Calculate_By_Java_Version2 本文是对上篇 Java简单工厂模式 的重写,以达到代码更易于维护的目的。 一、 定义接口 与上篇不同,这篇我们选择定义接口,并在后续功能实现中, \(implement\) 我们的接口。 接口定义加上参数,方便后期调用,定义如下 123public interface OperationInterface { double getResult(double A, double B) throws Exception;} 二、 定义运算 接下来定义各种方法,来实现我们的接口。 123456public class OperationAdd implements OperationInterface { @Override public double getResult(double A, double B)...
Java简单工厂模式
Java简单工厂模式 参考书目 《大话设计模式》 程杰 清华大学出版社 代码链接 https://github.com/JiaZhengJingXianSheng/Calculator_By_Java 我们在编写程序时为了容易修改,通常会用 封装、继承、多态 来降低程序的耦合度。 比如我们要实现一个简单的计算器功能,具体功能为传入两个数值和一个操作符,返回计算结果。 一、 抽象类创建 通常我们会在一个抽象类内部定义主要的信息,比如输出输出等。 1234567891011121314151617181920212223public abstract class Operation { private double _numberA = 0; private double _numberB = 0; public double get_numberA() { return _numberA; } public void set_numberA(double _numberA) { ...















