手机随时阅读
在新版本的pandas中,上述代码会引起警告,建议改成SQLAlchemy connectable(engine/connection),后续代码将引入这种升级的连接方式。
互联网世界里最流行的开源关系型数据库之一就是MySQL/MariaDB了,由于高度的相似,故而直接使用mysql统一指称。
为了方便准备试验用的数据,建议使用Faker这个库来模拟。Faker是一个Python软件包,可生成伪造数据。无论是需要引导数据库,创建美观的XML文档,填充持久性以进行压力测试,还是匿名化来自生产服务的数据,Faker都能完美实现。
前期我们提到,在研发过程中,可能由于迭代变化或需求调整等等原因会导致团队欠很多技术债,从而导致随着项目的运行,技术债务越积越多,导致给用户交付越来越慢,交付的软件质量越来越差,最终不可控,拖延整体交付进度,系统不可控等很多问题。 在实际研发工作过程中,我们基于一些工程学的方法,借助一些工具与方法,结合科学的流程,能够对降低技术负债起到一定的作用。
在软件研发过程中,往往随着为了快速满足业务要求的压力,用户需求的变更,软件代码的增多,以及版本的迭代,团队成员的变化等等因素,导致一个软件项目随着时间推移,欠的技术债会越积越多,用户使用容易出错,部署流程也变得复杂。
数据库操作应是所有合格程序员的基本功,写的一手好SQL对于数据分析师而言更是安身立命之本。大部分软件开发人员使用的数据库都是MySql/MariaDB,毕竟LAMP(linux+apache+mysql+php)曾经风靡一时。但开发人员真正的瑞士小军刀却是SQLite,它是世界上装机量第一的嵌入式数据库。
有了非对称密钥、摘要、对称密钥等现代密码学算法与技术,是不是就能够保证通信的安全无虞呢,并不是。
非对称加解密应用广泛,它的存在是致力于解决密钥通过公共信道传输这一经典难题。对称加密有一个天然的缺点,就是加密方和解密方都要持有同样的密钥,而这个密钥在传递过程中有可能会被截获,从而使加解密失效。
很多软件工程师都认为MD5是一种加密算法,然而这种观点是不对的。作为一个 1992 年第一次被公开的算法,到今天为止已经被发现了一些致命的漏洞。本文讨论MD5在密码保存方面的一些问题。
前面介绍了对称加密算法,本文将介绍密码学中另一类重要应用:消息摘要(Digest) 什么是消息摘要?简单的定义是:对一份数据,进行一个单向的Hash函数,生成一个固定长度的Hash值,这个值就是这份数据的摘要,也称为指纹。
前文讲述加解密时,直接将密钥写在了python源代码中,这肯定不是什么好的手法。应该将这类与代码加功效无关的信息保存到配置中,随时可以需要进行修改。从大的角度来看,配置无非就是以下方式:
上文介绍了命令行方式来对文件进行加解密操作。本文将继续在此基础上,实现一个快速简易的GUI界面方便操作,先上代码看效果。
上文介绍了使用AES算法进行文件加解密的代码。但是如果在代码中写死了(hardcode)文件名,每次要加解密文件都要去改python源代码,显然有些太笨了。为此,可以使用命令行参数来在不改动源代码的情况下,对命令行参数所指定的文件进行加/解密操作。也可以指定加解密后输出的文件名称,以方便使用。
在计算机世界里只有二进制。唯有人类才会对数据进行类型与价值判断。例如,认为某些文件是文本文件、是WORD/EXCEL文件或者是图片。对于加密算法来说也是一样的,加解密算法处理的只是字节流,根本不关心所谓的文件类型。
算法作为抽象概念,在实际生活中发挥了极大的具象作用:打工人如何保证最节省时间又花费最少来选择每天必须的通勤路径及方式,如何调度员工在有限时间内更高效的完成大量需要交付的项目,每天手机上所显示的天气情况以及地图上显示的实时路况等这些我们早已习惯了规划和预测的场景都用到了算法。
上文讲的古典加密算法虽然很简单,但是在密码史上是使用最久的加密方式。历史上由于算力有限,加上有学识的人有限,所以直到概率论出现后,古典密码才开始破防。
在多个线程争用锁的情况下,公平策略倾向于将访问权授予等待时间最长的线程。也就是说,相当于有一个线程等待队列,先进入等待队列的线程后续会先获得锁,这样按照“先来后到”的原则,对于每一个等待线程都是公平的。
不同的算法效率不同,占用内存不同,编写复杂程度不同,后期维护的难易程度也不同。因此,在我们日常工作中,需要有意识地考虑算法的性能,平衡编程、维护、效率等方面的关系,选择合适的算法。本系列后续文章会逐步介绍算法的相关基础知识,希望在归纳整理过程中,和读者共同成长。
本系列文章不讲解python的基本语法,本着实用主义的角度来解决问题。如前文所述,首先要建立一个字母表,接着实现一个对字母表的移位。
ReentrantLock是Java中java.util.concurrent.locks.Lock的一个实现类,顾名思义它是Java中锁的一种实现,具体一点来说它是Java中一种可重入的独占锁。它与synchronized相比在功能上与之基本相同,但ReentrantLock提供了更为丰富灵活的使用方式,也更加适合复杂的并发场景。但是synchronized是基于JVM层面实现的,而Lock是基于JDK层面实现的。ReentrantLock内部通过内部类实现了AQS框架(AbstractQueuedSynchronizer)的API来实现独占锁的功能。
在计算机世界里,信息安全始终占据着重要的地位,我们随处就可以看到信息安全的应用。
八百多年前,英格兰有一个叫奥卡姆的地方,那里出了一个叫威廉的哲学家,他说了一句话一直影响着科学界直到今天,甚至开始辐射到管理学界、经济学界等,这句话是:如无必要,勿增实体。这就是奥卡姆剃刀原理。在VSCode中也是一样,不是扩展安装的越多越好。衣服穿多了走不了远路,扩展安装多了也无谓的消耗计算机的性能与VSCode性能,扩展够用就好。
上期描述了如何在ubuntu18.04下安装python3.8,本期将描述: · BIOS开启CPU的虚拟化支持 · 如何在windows10/11下安装wsl/wslg · 如何在有wsl/wslg的情况下安装ubuntu18.04 · 如何在ubuntu18.04下安装python3.8
相比较于windows下安装python,在Linux下安装python实际上是一个非常困难的选择。首先要解决的就是选择哪个发行版本的问题。
上一期介绍了Anaconda的安装,本期介绍Miniconda的安装,它们共同的部分是Conda,确实如此。
Babylon.js是微软开源的一款Web3D渲染引擎,同时还是一款非常优秀的游戏引擎,相对于threejs来说,Babylon.js相对更高级,同样的场景开发,Babylon.js的效率是threejs的好几倍。
上期描述了如何在Windows下安装官方的Python3.8,本期描述如何安装Anaconda。建立Python环境这个话题,为何要大费周章、不厌其烦的叙述呢
古人云:万事开头难。即使在知识极大丰富、信息技术高度发达的今天,学习任何知识与技术,最难的仍然是环境的搭建。
Python是一门入门极易,精通较难的解释性语言。如何学习Python是许多人的疑惑,与其它高级语言不同,Python在设计之初就直奔实用与简洁的目的,号称最强的胶水语言(能够与许多语言完美结合)。为了从一开始就不偏离Python设计的本意,建议多读读Python之禅。
Python作为当下最火的开发语言,已经成为程序员必备技能。本系列将从商业航天软件开发的角度来开始从零打造个人使用的软件小工具箱。本系列讨论的工具箱,类似于瑞士小军刀,不追求宏大完备的架构,而是从一个又一个小小的例子展开Python的学习与应用之旅。
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号