Other

20213226 实验三《Python程序设计》实验报告

20213226 2021-2022-2 《Python程序设计》实验三报告 课程:《Python程序设计》 班级: 2132 姓名: 刘思佳 学号:20213226 实验教师:王志强 实验日期:2020年5月1日 必修/选修: 公选课 1.实验内容 创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。 1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序; (2)要求包含文件的基本操作,例如打开和读写操作。 (3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。 (4)程序代码托管到码云。 2. 实验过程及结果 客户端 服务器 3. 实验过程中遇到的问题和解决过程 问题1:由于目标计算机积极拒绝,无法连接。 问题1解决方案:关闭防火墙 问题2: 问题2解决方案:![image] 未能成功解决此问题,正在积极寻求解决问题的办法。 其他(感悟、思考等) 加密具有极高的实用性和一定的难度,能够掌握,收获会很多。 解决问题需要不断查阅资料,不断尝试,坚决不可以消极应对出现的问题。 除此之外,socket帮助我更好理解了客户端和服务器,也更好理解了通信交流的步骤,收获很大。 参考资料 [拿去用,常见几种加密算法的Python实现] (https://mp.weixin.qq.com/s/rnPzHjAIxtKlS5Mc8HOlAw)

Thinkphp6---开发ZipArchive打包下载文件

最近需要开发一个使用Thinkphp6实现打包下载文件的功能,具体开发流程如下: windows环境: 1、下载拓展 https://windows.php.net/downloads/pecl/releases/zip/ 找到合适自己PHP版本和系统的ZIP,推荐选择:1.13.5 然后选择合适自己PHP版本的压缩包,我的PHP是7.1的,所以选择:php_zip-1.13.5-7.1-ts-vc14-x86.zip 2、解压拓展 解压文件后,把php_zip.dll文件放到PHP的扩展文件夹里 这里的PHP的拓展文件夹就是:PHP目录下的ext目录: F:\upupw\PHP7\ext 然后打开 php.ini 添加拓展:extension=php_zip.dll 可以直接搜索:extension 在拓展下面添加即可: 保存后,重启apache: 通过 phpinfo(); 查看是否启动该拓展: linux环境参考: https://www.jianshu.com/p/7d032dc34219 具体代码示例: /** * [index 打包下载] * https://www.csdn.net/tags/MtTaMgzsMDQ3MDE3LWJsb2cO0O0O.html * https://blog.csdn.net/qq_38398347/article/details/118222905 */ public function index() { // $rootPath = app()->getRootPath(); // 根目录 \tp6.fyz.com\ $rootPath = $_SERVER['DOCUMENT_ROOT'];// 网站根目录 /tp6.fyz.com/public $pathArr = [ /uploads/idcard-back.jpg, /uploads/idcard-combine.jpg ]; foreach($pathArr as &$item) $item = $rootPath . $item; $zipName = zip/image.zip; $result = $this->makeZip($pathArr,$zipName); // 验证文件是否存在 if (!

1.10 Linux桌面环境(桌面系统)大比拼[附带优缺点

早期的 Linux 系统都是不带界面的,只能通过命令来管理,比如运行程序、编辑文档、删除文件等。所以,要想熟练使用 Linux,就必须记忆很多命令。 后来随着 Windows 的普及,计算机界面变得越来越漂亮,点点鼠标就能完成很多工作,人们已经习惯了图形界面化的操作,很难再忍受一片漆黑的命令行窗口了。这推动了 Linux 社区进行变革,很快推出了 Linux 系统的图形界面环境。 完成工作的方式不止一种,Linux 一直以来都以此而闻名,在图形桌面上更是如此,Linux 有各种各样的图形化桌面可供选择。 Linux 中的桌面环境也是一个程序,它和内核不是绑定的,两者的开发也不是同步的;给不带界面的 Linux 系统安装上一个桌面环境,你就能看到各种漂亮的窗口,并能用鼠标点击它们了。 上节讲到的各种Linux发行版其实已经附带了某种桌面环境,如果你喜欢折腾,也可以更换其它桌面环境。 个人电脑一般都会安装上桌面环境,这样操作更加便捷;Linux 服务器为了节省资源,一般都不会安装桌面环境。 下面给大家介绍几款比较流行的桌面环境。 1. KDE 桌面系统 KDE 是 K Desktop Environment 的缩写,中文译为“K桌面环境”。 KDE 是基于大名鼎鼎的Qt 的,最初于 1996 年作为开源项目公布,并在 1998 年发布了第一个版本,现在 KDE 几乎是排名第一的桌面环境了。 许多流行的 Linux 发行版都提供了 KDE 桌面环境,比如 Ubuntu、Linux Mint、OpenSUSE、Fedora、Kubuntu、PC Linux OS 等。 KDE 和 Windows 比较类似,各位初学者相信都是 Windows 的用户,所以切换到 KDE 也不会有太大的障碍。 KDE 允许你把应用程序图标和文件图标放置在桌面的特定位置上。单击应用程序图标,Linux 系统就会运行该应用程序。单击文件图标,KDE 桌面就会确定使用哪种应用程序来处理该文件。 KDE 是所有桌面环境中最容易定制的。在其他桌面环境中,你需要几个插件、窗口组件和调整工具才可以定制环境,KDE 将所有工具和窗口组件都塞入到系统设置中。借助先进的设置管理器,可以控制一切,不需要任何第三方工具,就可以根据用户的喜好和要求来美化及调整桌面。 KDE 项目组还还发了大量的可运行在 KDE 环境中的应用程序,包括 Dolphin(文件管理工具)、Konsole(终端)、Kate(文本编辑工具)、Gwenview(图片查看工具)、Okular(文档及PDF查看工具)、Digikam(照片编辑和整理工具)、KMail(电子邮件客户软件)、Quassel(IRC客户软件)、K3b(DVD刻录程序)、Krunner(启动器)等,它们都是默认安装的。

1.11 Linux的主要应用领域有哪些?

与Windows操作系统软件一样,Linux 也是一个操作系统软件。但与Windows不同的是,Linux是一套开放源代码程序的,并可以自由传播的类UNIX操作系统软件,随着信息技术的更新变化,Linux应用领域已趋于广泛。 1、IT服务器Linux系统应用领域 如今的IT服务器领域是Linux、UNIX、Windows三分天下,Linux系统可谓是后起之秀,尤其是近几年,服务器端Linux操作系统不断地扩大着市场份额,每年增长势头迅猛,并对Windows及UNIX服务器市场的地位构成严重的威胁。 Linux作为企业级服务器的应用十分广泛,利用Linux系统可以为企业构架WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器(透明网关)、路由器等,不但使企业降低了运营成本,同时还获得了Linux系统带来的高稳定性和高可靠性。 随着Linux在服务器领域的广泛应用,从近几年的发展来看,该系统已经渗透到了电信、金融、政府、教育、银行、石油等各个行业,同时各大硬件厂商也相继支持Linux操作系统。这一切都在表明,Linux在服务器市场的前景是光明的。同时,大型、超大型互联网企业(百度、新浪、淘宝等)都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前十的网站使用的几乎都是Linux系统,Linux已经逐步渗透到各个领域的企业里。 2、嵌入式Linux系统应用领域 由于Linux系统开放源代码,功能强大、可靠、稳定性强、灵活,而且具有极大的伸缩性,再加上它广泛支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备(路由器、交换机、防火墙、负载均衡器等)到专用的控制系统(自动售货机、手机、PDA、各种家用电器等),Linux操作系统都有很广阔的应用市场。特别是经过这几年的发展,它已经成功地跻身于主流嵌入式开发平台。例如,在智能手机领域,Android Linux已经在智能手机开发平台牢牢地占据了一席之地。 3、个人桌面Linux应用领域 所谓个人桌面系统,其实就是我们在办公室使用的个人计算机系统, 例如: Windows XP、Windows 7、MAC等。Linux系统在这方面的支持也已经非常好了,完全可以满足日常的办公及家用需求,例如: 浏览器上网浏览(例如:Firefox浏览器)。 办公室软件(OpenOffice,兼容微软Office软件)处理数据。 收发电子邮件(例如:ThunderBird 软件)。 实时通信(例如:QQ 等)。 文字编辑(例如:vi、vim、emac)。 多媒体应用。 虽然Linux个人桌面系统的支持已经很广泛了,但是在当前的桌面市场份额还远远无法与Windows系统竞争,这其中的障碍可能不在于Linux桌面系统产品本身,而在于用户的使用观念、操作习惯和应用技能,以及曾经在Windows上开发的软件的移植问题。

python操作文件open()方法指定文件编码

 今天在写入文件时候遇到了中文乱码的问题。  问题描述: 字符串转以utf-8编码的字符数组 bytes,然后使用 bytes.decode(utf-8)写入文件中。html指定为utf-8编码,结果页面出现中文乱码。  出现问题的原因是因为生成的html文件是以gbk编码存储的,代码如下: # 在 open 方法中指定 encoding=utf-8 生成的test.html文件会以 utf-8编码,否则在我的电脑上会以 gbk 编码 with open(test.html, w, encoding=utf-8) as f: f.write(bytes.decode(utf-8))   记录一下现在浏览器客户端使用的编码由什么标签指定: # meta 标签, 且包含 http-equiv=Content-Type 那么content中的charset属性指定浏览器使用的字符集 <meta http-equiv=Content-Type content=text/html;charset=utf-8>  

【卷积神经网络】例题XO - Python实现 - PyTorch版本

题目及理论讲解: 【卷积神经网络】例题XO - Python实现 - HBU_DAVID - 博客园 (cnblogs.com) PyTorch实现代码: # https://blog.csdn.net/qq_26369907/article/details/88366147 # https://zhuanlan.zhihu.com/p/405242579 import numpy as np import torch import torch.nn as nn x = torch.tensor([[[[-1, -1, -1, -1, -1, -1, -1, -1, -1], [-1, 1, -1, -1, -1, -1, -1, 1, -1], [-1, -1, 1, -1, -1, -1, 1, -1, -1], [-1, -1, -1, 1, -1, 1, -1, -1, -1], [-1, -1, -1, -1, 1, -1, -1, -1, -1], [-1, -1, -1, 1, -1, 1, -1, -1, -1], [-1, -1, 1, -1, -1, -1, 1, -1, -1], [-1, 1, -1, -1, -1, -1, -1, 1, -1], [-1, -1, -1, -1, -1, -1, -1, -1, -1]]]], dtype=torch.

linux-firewall 如何开放端口

linux firewalld防火墙状态查询及开放端口 一、查看防火墙状态 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld 开启防火墙 service firewalld start 若遇到无法开启 先用:systemctl unmask firewalld.service 然后:systemctl start firewalld.service 二、查看对外开放的端口状态 查询已开放的端口 netstat -anp 查询指定端口是否已开 firewall-cmd --query-port=8080/tcp 提示 yes,表示开启;no表示未开启。 三、对外开放端口 查看想开的端口是否已开: firewall-cmd --query-port=8080/tcp 添加指定需要开放的端口: firewall-cmd --add-port=8080/tcp --permanent 重载入添加的端口: firewall-cmd --reload 查询指定端口是否开启成功: firewall-cmd --query-port=8080/tcp 移除指定端口: firewall-cmd --permanent --remove-port=8080/tcp 原文出处:https://www.cnblogs.com/zhuomou/p/15817770.html

python学习-Day45-MySQL

目录数据库数据演变史数据库应用发展史数据库本质数据库分类关系型数据库特点常见数据库名称:非关系型数据库特点常见数据库名称:区别诸多数据库软件 如何学习?SQL与NoSQLMySQL简介版本问题下载使用目录结构基本使用windows系统mac系统关于系统服务需求解决方案修改密码重要概念操作库的基本SQL语句查增改删操作表的基本SQL语句查增改删 数据库 数据演变史 # 1.单独的文本文件 没有固定的存放位置:C:\a.txt D:\aaa\c.txt F:\bbb\b.txt 没有固定的数据格式:jason|123 tony$123 kevin~123 '''程序彼此无法兼容 没有统一的标准''' # 2.软件开发目录规范 按照文件功能的不同规定了相应的位置 '''文件查找变得统一 但是没有解决格式问题(核心问题)''' # 3.数据库应用 解决了存放位置和数据格式问题 '''将数据处理部分统一了起来''' 数据库应用发展史 # 1.单机游戏阶段 数据各自保存在各自的计算机上 无法实现远程共享 '''无需互联网''' # 2.多机游戏阶段 数据统一基于网络保存到某个固定的服务器上 实现数据共享 '''必须要有互联网''' 集群 如果所有的数据全部存储到一台远程服务器上 那么数据的安全性降低 服务器的压力上升 所以增加远程服务器的数量 数据同步保存 任务均匀分担 具有相同功能的多个服务器组合到一起 就可以称之为是集群 数据库本质 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。 每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。 数据库在微观层面上来说 运行在计算机上专门处理数据的进程(程序) eg:内存中的typora代码 数据库在宏观层面上来说 提供给操作者一个简单快捷的操作进程的软件 eg:屏幕上typora界面 我们平时在说数据库的时候大部分指的是操作数据库的应用软件 # 数据库软件的本质其实也是一款CS架构的软件 既然数据库本质是一款CS架构的软件 也就意味着我们每个会网络编程的程序员理论上来说都可以编写出一款数据库软件 在目前地球上有很多牛逼的程序员 他们都具备编写数据库软件的能力 所以现在市面上其实存在很多数据库软件 数据库分类 目前市面上有很多数据库软件 大致可以分为两类

数据结构(五)图---最小生成树(普里姆算法)

引用网址:https://www.cnblogs.com/ssyfj/p/9488723.html 目录 一:最小生成树(一)定义(二)什么是最小生成树?(三)案例说明(四)求最小生成树的算法二:贪心算法1.什么是贪?2.什么是好?3.需要约束三:普里姆算法(稠密图)(一)定义(二)算法思路(三)步骤模拟(三)算法实现(四)普里姆代码分析四:总结 一:最小生成树 (一)定义 我们把构造连通网的最小代价生成树称为最小生成树或给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树. (二)什么是最小生成树? 1.是一棵树 1)无回路 2)N个顶点,一定有N-1条边 2.是生成树 1)包含全部顶点 2)N-1条边都在图中 3.边的权重和最小 (三)案例说明 在实际生活中,我们常常碰到类似这种一类问题:如果要在n个城市之间建立通信联络网, 则连通n个城市仅仅须要n-1条线路。这时。我们须要考虑这样一个问题。怎样在最节省经费前提 下建立这个通信网.换句话说,我们须要在这n个城市中找出一个包括全部城市的连通子图,使得 其全部边的经费之和最小. 这个问题能够转换为一个图论的问题:图中的每一个节点看成是一个城市, 节点之间的无向边表示修建该路的经费。即每条边都有其对应的权值,而我们的目标是挑选n-1条 边使全部节点保持连通。而且要使得经费之和最小. 这里存在一个显而易见的事实是: 最优解中必定不存在循环(可通过反证法证明). 因此。最后找 出的包括全部城市的连通子图必定没有环路。 这样的连通且没有环路的连通图就简称为树。而在一个 连通图中删除全部的环路而形成的树叫做该图的生成树.对于城市建立通信连通网。须要找出的树由 于具有最小的经费之和。因此又被称为最小生成树(Minimum Cost Spanning Tree),简称MST. (四)求最小生成树的算法 (1) 普里姆算法 图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续加入到集合中,全部顶点加入集合后就得到所需的最小生成树 . (2) 克鲁斯卡尔算法 图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间. 二:贪心算法 1.什么是贪? 每一步都要最好(只看下一步) 2.什么是好? 权重最小的边 3.需要约束 1.只能用图里有的边 2.只能正好用掉N-1条边 3.不能有回路 三:普里姆算法(稠密图) (一)定义 对于一个带权的无向连通图,其每个生成树所有边上的权值之和可能不同,我们把所有边上权值之和最小的生成树称为图的最小生成树。 普里姆算法是以其中某一顶点为起点,逐步寻找各个顶点上最小权值的边来构建最小生成树。 其中运用到了回溯,贪心的思想。  (二)算法思路 设图G=(V,E),U是顶点集V的一个非空子集。假设(u,v)是一条具有最小权值的边。当中u∈U,v∈V-U, 则必存在一棵包括边(u,v)的最小生成树. 上述的性质能够通过反证法证明。假设(u,v)不包括在G的最小生成树T中。那么,T的路径中必定存 在一条连通U和V-U的边,假设将这条边以(u,v)来替换,我们将获得一个权重更低的生成树,这与T 是最小生成树矛盾.既然MST满足贪婪选择属性。那么。求解最小生成树的问题就简化了非常多。 总结一下,详细的步骤大概例如以下: 1.构建一棵空的最小生成树T。并将全部节点赋值为无穷大. 2.任选一个节点放入T。另外一个节点集合为V-T. 3.对V-T中节点的赋值进行更新(因为此时新增加一个节点,这些距离可能发生变化) 4.