大风车滴呀滴溜溜地转
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
展开
-
用Python获取Windows本机安装的所有应用程序的实现与分析
一个项目中需要获取本机安装的所有应用程序列表,花了一点时间研究了一下,分享出来。主要通过访问注册表和桌面快捷方式来完成这一任务,因为注册表中获取到的应用程序列表不完全,因此通过桌面快捷方式进行补充。原创 2024-06-02 15:01:54 · 710 阅读 · 0 评论 -
从源代码学Python系列目录
Why do you come here?你为什么来到这里?你为什么学Python?最根本需求:钱!Money!!生活!!!没钱怎么生活,没钱怎么买房买车找对象。所有没有技术含量的工作都将被取代。18年朋友圈被刷屏的"唐山收费站大姐"让大众纷纷感慨,感慨世事的变化无常,感慨自己在大形势下的渺小卑微。【唐山收费站大姐】们尽情地表达了自己的想法:“我们来的时候那么年轻,我今年36岁了,...原创 2020-02-28 22:28:21 · 840 阅读 · 0 评论 -
编程语言是从哪蹦出来的——大型伦理寻根现场
编程语言经过层层优化,从最开始的机器语言,到汇编语言,再到高级语言,风格越来越优雅,现在通过高级语言编程只需要输入美丽的英文语句就可以向计算机发布指令。原创 2020-02-12 14:26:31 · 811 阅读 · 0 评论 -
Python安装与简单使用
Python安装目录一、Python的安装1.Windows操作系统2.Linux操作系统(1)将 Linux 默认 Python 版本升级为 Python3(2)安装新版本的 Python3(3)安装Anaconda3.Mac操作系统一、Python的安装1.Windows操作系统目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于3.x版越来越普及,...原创 2020-03-30 11:11:06 · 1829 阅读 · 1 评论 -
选择最好用的PyCharm IDE
到现在为止,我们也是写过代码的人啦,但你有没有发现,每次写代码要新建文件、写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻烦呀,能否一气呵成,让我简单的写代码?此时开发工具IDE上场啦,一个好的IDE能帮你大大提升开发效率。很多语言都有比较流行的开发工具,比如JAVA 的Eclipse, C#,C++的VisualStudio, Python的是啥呢? Pycharm,最好的Python 开发IDE。安装:下载地址:https://www.jetbrains.com/pyc原创 2021-04-26 19:41:21 · 548 阅读 · 0 评论 -
Python到底是个什么东西
Python是一门简单易学的高级编程语言,到今天,Python的大框架还在不断发展,以对象为核心组织代码,支持多种编程范式,采用动态类型,自动进行内存回收。Python的生态系统开始拓展到第三方包,Web开发的Django,科学计算的numpy,图像处理的PIL等等,将Python升级成了物种丰富的热带雨林。原创 2020-05-31 19:07:07 · 2408 阅读 · 0 评论 -
Linux操作系统中Anaconda的安装
Anaconda由数据科学家为数据科学家建造,超过2000万人使用我们的技术来解决最棘手的问题。Anaconda其实就是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。里面所包含的Jupyter Notebook是数据挖掘领域中最热门的工具。(例如Kaggle竞赛)可以去清华大学开源软件镜像站中找到喜欢的Anaconda版本,这里以Anaconda3-5.3.1-Linux-x86_64安装为例。创建anaconda工作目录mkdir /usr/a原创 2020-06-12 17:15:29 · 971 阅读 · 0 评论 -
变量
什么是变量?变量,是用于在内存中存放程序数据的容器,怎么理解呢?计算机的最核心功能就是“计算”, 计算需要数据源,数据源要存在内存里,比如我要把小明的姓名、身高、年龄信息存下来,后面程序会调用,怎么存呢,直接设置一个“变量名=值”, 就可以name = "小明"age = 22height = 160后面程序想调用的时候,直接调 变量名 就可以name = "小明"age = 22height = 160 print(name)print(age)变量的使用规则程序是从上到下执原创 2021-04-26 22:02:32 · 261 阅读 · 0 评论 -
变量创建过程
首先,当我们定义了一个变量name = ‘oldboy’的时候,在内存中其实是做了这样一件事:程序开辟了一块内存空间,将‘oldboy’存储进去,再让变量名name指向‘oldboy’所在的内存地址。如下图所示:我们可以通过id()方法查看这个变量在内存中的地址>>> name = "oldboy">>> id(name)4317182304变量的修改一般我们认为修改一个变量就是用新值把旧值覆盖掉, 可python是这样实现的么?>>原创 2021-05-12 14:32:37 · 451 阅读 · 0 评论 -
注释
随着学习的深入,用不了多久,你就可以写复杂的上千甚至上万行的代码啦,有些代码你花了很久写出来,过了些天再回去看,发现竟然看不懂了,哈哈,这太正常了。另外,你以后在工作中会发现,一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,这样写会挨打的。所以为了避免这种尴尬的事情发生,一定要增加你代码的可读性。代码注释分单行和多行注释, 单行注释用#,多行注释可以用三对双引号“”” “””下面给大家看一段标准代码的注释,忽略代码意思原创 2021-05-05 21:01:23 · 261 阅读 · 0 评论 -
格式化打印
现有一练习需求,问用户的姓名、年龄、工作、爱好 ,然后打印成以下格式------------ info of Alex Li -----------Name : Alex LiAge : 22job : TeacherHobbie: girl------------- end -----------------你怎么实现呢?你会发现,用字符拼接的方式还难实现这种格式的输出,所以一起来学一下新姿势只需要把要打印的格式先准备好, 由于里面的 一些信息是需要用户输入的,你没办法预设知原创 2021-05-05 21:54:37 · 338 阅读 · 0 评论 -
读取用户指令
若你的程序要接收用户指令,可以用input语法:name = input("What is your name?")print("Hello " + name )执行脚本就会发现,程序会等待你输入姓名后再往下继续走。可以让用户输入多个信息,如下name = input("What is your name?")age = input("How old are you?")hometown = input("Where is your hometown?")print("Hello ",nam原创 2021-05-05 21:12:18 · 321 阅读 · 0 评论 -
你不知道的Python的输入输出
Hello,我是 Alex 007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了。这篇博客针对Python的基本语法特点进行详细介绍。从源代码学Python系列文章目录Print()函数之前我们写了一个非常简单的Python程序,所谓学习一门新编程语言的敲门砖,传说中的Hello World!:print("Hello World!")在Python中它的结构非常简单,就是一个单词print,后边加上.原创 2020-06-11 21:28:03 · 598 阅读 · 1 评论 -
基本数据类型
什么是数据类型?我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不清1和‘汉’的区别的,因此,在每个编程语言里都会有一个叫数据类型的东东,其实就是对常用的各种数据类型进行了明确的划分,你想让计算机进行数值运算,你就传数字给它,你想让他处理文字,就传字符串类型给他。Python中常用的数据类型包括多种,今天我们暂只讲4种, 数字、字符串、布尔类型、列表。数字int(整型)在64位系统上.原创 2021-05-05 21:10:28 · 257 阅读 · 0 评论 -
运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算算数运算以下假设变量:a=10,b=20比较运算以下假设变量:a=10,b=20赋值运算以下假设变量:a=10,b=20逻辑运算以下假设变量:a=10,b=20...原创 2021-05-05 22:25:45 · 267 阅读 · 0 评论 -
流程控制
假如把写程序比做走路,那我们到现在为止,一直走的都是直路,还没遇到过分叉口,想象现实中,你遇到了分叉口,然后你决定往哪拐必然是有所动机的。你要判断那条岔路是你真正要走的路,如果我们想让程序也能处理这样的判断怎么办? 很简单,只需要在程序里预设一些条件判断语句,满足哪个条件,就走哪条岔路。这个过程就叫流程控制。基本上在各个语言中,都是用语法if…else…来实现,可分为单分支、双分支、多分支单分支if 条件: 满足条件后要执行的代码双分支if 条件: 满足条件执行代码els原创 2021-05-05 22:35:36 · 284 阅读 · 0 评论 -
while循环
上节课我们已经学会用if … else 来猜年龄的游戏啦,但是只能猜一次就中的机率太小了,如果我想给玩家3次机会呢?就是程序启动后,玩家最多可以试3次,这个怎么弄呢?你总不会想着把代码复制3次吧。。。。age_of_oldboy = 48guess = int(input(">>:"))if guess > age_of_oldboy : print("猜的太大了,往小里试试...")elif guess < age_of_oldboy : print("猜的原创 2021-05-05 22:47:40 · 283 阅读 · 0 评论 -
我的地盘我做主——你必须遵守的Python编码规范
Hello,我是 Alex 007,一个热爱计算机编程和硬件设计的小白,为啥是007呢?因为叫 Alex 的人太多了,再加上每天007的生活,Alex 007就诞生了。这篇文章主要讲了一些Python的编码规范,包括注释规则、代码缩进、变量命名规范等等。一、注释规则什么是注释?在维基百科中,注释是这样定义的:注释是计算机语言中的一个重要组成部分,用于在源代码中解释代码的功用,可以增强程序的可读性,可维护性,或者用于在源代码中处理不需运行的代码段,来调试程序的功能执行。...原创 2020-06-14 22:02:01 · 887 阅读 · 0 评论 -
bisect --- 数组二分查找算法
这个模块对有序列表提供了支持,使得他们可以在插入新数据仍然保持有序。对于长列表,如果其包含元素的比较操作十分昂贵的话,这可以是对更常见方法的改进。这个模块叫做 bisect 因为其使用了基本的二分(bisection)算法。源代码也可以作为很棒的算法示例(边界判断也做好啦!)定义了以下函数:bisect.bisect_left(a, x, lo=0, hi=len(a))在 a 中找到 x 合适的插入点以维持有序。参数 lo 和 hi 可以被用于确定需要考虑的子集;默认情况下整个列表都会被使用。原创 2020-11-07 10:10:27 · 863 阅读 · 0 评论 -
Python os.makedirs详细介绍
os.makedirs(name, mode=0o777, exist_ok=False) 作用 用来创建多层目录(单层请用os.mkdir) 参数说明 name:你想创建的目录名mode:要为目录设置的权限数字模式,默认的模式为 0o777 (八进制)。exist_ok:是...转载 2020-09-27 17:43:17 · 5329 阅读 · 1 评论 -
详解python2 和 python3的区别
看到这个题目大家可能猜到了我接下来要讲些什么,呵呵,对了,那就是列出这两个不同版本间的却别!搜索一下大家就会知道,python有两个主要的版本,python2 和 python3 ,但是python又不同于其他语言,向下兼容,python3是不向下兼容的,但是绝大多数组件和扩展都是基于python2的,下面就来总结一下python2和python3的区别。&...原创 2020-04-26 08:58:18 · 447 阅读 · 0 评论 -
range方法在Python2和Python3中的不同
range()方法是Python中常用的方法, 但是在Python2和Python3中使用方法不同,下面看下它们的不同使用方法。range方法详解range(start, stop[, step])range是python中的其中一个内置函数作用:可创建一个整数列表。一般用在 for 循环中。参数说明:start:起点,一般和stop搭配使用,既生成从start开始到stop结束(不包...原创 2020-04-26 08:56:03 · 602 阅读 · 0 评论 -
练习题
简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型Pyhton 单行注释和多行注释分别用什么?布尔值分别有什么,及作用是什么?声明变量注意事项有那些?如何查看变量在内存中的地址?请写出 and 、or、not 的作用,并用代码来演示查看2、2.22、“小猿圈”分别是什么数据类型的语法是什么?写代码 实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败! 实现用户输入用户名和密码..原创 2021-05-05 22:58:55 · 333 阅读 · 0 评论 -
操作系统——理论知识
一、为什么要有操作系统现代的计算机系统主要是由处理器,主存,硬盘,键盘,鼠标,显示器,打印机,网络接口及其它输入输出设备组成。一般而言,现代计算机系统是一个复杂的系统。对于一个程序而言,它为了保障自己的程序运行流畅,势必就会要求自己分配到的资源越多越好,但是计算机的资源总是有限的,大家都自顾自抢资源的话,要么就是大家一起跑不动,要么就是某几个程序把别的程序的资源都挤占掉。更麻烦的是,由于程...原创 2020-02-07 10:39:07 · 511 阅读 · 0 评论 -
并发编程——进程——进程理论的创建
Python中的进程multiprocess介绍仔细说来,multiprocess不是一个模块而是python中一个操作、管理进程的包。之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所有子模块。Python提供了multiprocessing模块用来开启子进程,并在子进程中执行定制的任务。multiprocessing模块的功能众多:支持子进程、...原创 2020-02-06 18:16:16 · 433 阅读 · 0 评论 -
并发编程——进程——Process对象的属性和方法
Process对象的属性和方法pid属性和ppid属性其实到现在为止,都是我说咱们是另外开启了一个进程,并没有实际证据证明,怎么证明呢?我们知道,程序中的变量都是由id的,其实就是内存地址,那么,进程也可以查看自己的id,进程的id叫pid,也就是progress id,python的os模块提供了相应的方法,还有ppid,也就是parent progress id,可以查看父进程的id。...原创 2020-02-06 19:49:49 · 480 阅读 · 0 评论 -
并发编程——进程——进程的同步与数据共享
进程的同步互斥锁进程之间的数据是不共享的,但是啊,你想,我们的代码运行在同一台电脑上,所以共享同一套文件系统,试想一下,如果一个进程想删除文件,另一个进程同时想读取文件。举个简单的例子,我们让几个进程竞争标准输出终端:import osfrom multiprocessing import Processdef work(): for item in range(2): ...原创 2020-02-06 22:20:49 · 632 阅读 · 0 评论 -
并发编程——线程——线程的理论和创建以及守护线程
一、threading模块介绍之前讲进程的时候介绍过multiprocess包,threading包的接口跟mulitprocess包的接口是类似的,二者在使用层面,有很大的相似性。原创 2020-02-07 18:03:05 · 470 阅读 · 0 评论 -
并发编程——线程——CPython的GIL解释器锁
一、GIL定义In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once.在CPython中,全局解释器锁(global interpreter lock,GIL)是一个互斥锁,它...原创 2020-02-07 20:41:54 · 392 阅读 · 0 评论 -
并发编程——线程——锁
并发编程中避免不了在同一时间对同一数据的更改,因此,对锁的使用变得尤为重要,什么时间、什么场景该用什么类型的锁都是有讲究的,接下来介绍几种常见的锁。死锁现象问题产生需求,在学新的锁之前先来看看我们学的互斥锁有什么缺点。所谓死锁,就是指两个或两个以上的进程或线程在执行过程中因争夺资源而造成的一种互相等待的现象,若无外力的作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些...原创 2020-02-08 15:47:39 · 371 阅读 · 0 评论 -
并发编程——进程池与线程池
一、简单介绍在学习了多进程或多线程之后,我们可能会迫不及待地基于多进程或多线程做一些开发,然而毫无节制的开启进程或线程是十分危险的。服务开启的进程数或线程数都会随着并发的客户端数目地增多而增多,这会对服务端主机带来巨大的压力,甚至于不堪重负而瘫痪。所以我们必须对服务端开启的进程数或线程数加以控制,让机器在一个自己可以承受的范围内运行,这就是进程池或线程池的用途,例如进程池,就是用来存放进程的...原创 2020-02-08 17:40:50 · 620 阅读 · 0 评论 -
并发编程——协程
一、引子基于单线程来实现并发,即只用一个主线程(可利用的cpu只有一个)情况下实现并发(并发的本质:切换+保存状态)该怎么搞。cpu正在运行一个任务,会在两种情况下切走去执行其他的任务(切换由操作系统强制控制),一种情况是该任务发生了阻塞,另外一种情况是该任务计算的时间过长或有一个优先级更高的程序替代了它。在介绍进程理论时,提及进程的三种执行状态,而线程才是执行单位,所以也可以将上图理解为线...原创 2020-02-10 12:48:01 · 350 阅读 · 0 评论 -
7.3 IO模型
回顾为了更好地了解IO模型,我们需要事先回顾下:同步、异步、阻塞、非阻塞同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回。按照这个定义,其实绝大多数函数都是同步调用。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。异步异步的概念和同步相对。当一个异步功能调用发出后,调用者不能立刻得到结果。当该异步功能完成后,...原创 2020-02-19 12:44:38 · 338 阅读 · 0 评论 -
7.3.1 阻塞IO(blocking IO)
在linux中,默认情况下所有的socket都是blocking,一个典型的读操作流程大概是这样:当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时候kernel就要等待足够的数据到来。而在用户进程这边,整个进程会被阻塞。当kernel一直...原创 2020-02-19 12:58:17 · 514 阅读 · 0 评论 -
7.3.2 非阻塞IO(non-blocking IO)
Linux下,可以通过设置socket使其变为non-blocking。当对一个non-blocking socket执行读操作时,流程是这个样子:从图中可以看出,当用户进程发出read操作时,如果kernel中的数据还没有准备好,那么它并不会block用户进程,而是立刻返回一个error。用户进程判断结果是一个error时,它就知道数据还没有准备好,于是用户就可以在本次到下次再发起rea...原创 2020-02-19 13:44:13 · 1011 阅读 · 0 评论 -
7.3.3 多路复用IO(IO multiplexing)
IO multiplexing这个词可能有点陌生,但是如果我说select/epoll,大概就都能明白了。有些地方也称这种IO方式为事件驱动IO(event driven IO)。我们都知道,select/epoll的好处就在于单个process就可以同时处理多个网络连接的IO。它的基本原理就是select/epoll这个function会不断的轮询所负责的所有socket,当某个socke...原创 2020-02-19 17:42:01 · 371 阅读 · 0 评论 -
7.3.4 异步IO(Asynchronous I/O)
先看一下它的流程:用户进程发起read操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它受到一个asynchronous read之后,首先它会立刻返回,所以不会对用户进程产生任何block。然后,kernel会等待数据准备完成,然后将数据拷贝到用户内存,当这一切都完成之后,kernel会给用户进程发送一个signal,告诉它read操作完成了。...原创 2020-02-19 17:45:44 · 413 阅读 · 0 评论 -
IO模型的比较分析
到目前为止已经将将四个IO模型都介绍完了。那么啊阻塞IO、非阻塞IO、同步IO和异步IO的区别在哪?阻塞IO和非阻塞IO的区别调用blocking IO会一直block住对应的进程直到操作完成,而non-blocking IO在kernel还准备数据的情况下会立刻返回。同步IO和异步IO的区别两者的区别就在于synchronous IO做”IO operation”的时候会将proces...原创 2020-02-19 18:31:08 · 467 阅读 · 0 评论 -
并发编程——练习题
1、简述计算机操作系统中的“中断”的作用?中断机制包括硬件的中断机制和操作系统的中断处理服务程序。中断机制由一些特定的寄存器和控制线路组成。中央处理器和外围设备等识别到的事件保存在特定的寄存器中,中央处理器每执行完一条指令均由中断机制判断是否有事件发生。若无事件发生,CPU继续执行,若有事件发生,则中断机制中断源占有CPU的程序的执行,让操作系统的处理事件服务程序占用CPU对出现的事件进行处...原创 2020-02-19 19:15:15 · 750 阅读 · 0 评论 -
数据库开发——MySQL——简单介绍和安装
数据库数据实际上就是描述事物特征的一组符号,数据库指的就是存储数据的仓库。基于我们之前所学,数据要想永久保存,都是保存于文件中,毫无疑问,一个文件仅仅只能存在于某一台机器上。在软件开发过程中,程序的所有组件不可能只运行在一台机器之上,如果这台运行的机器出故障了则意味着整个软件的崩溃,并且程序的执行效率依赖于承载它的硬件,而一台机器机器的性能总归是有限的。因此,对于程序不同的组件,应该运行在...原创 2020-03-26 17:53:48 · 3143 阅读 · 0 评论