漫话:什么是协程?
原标题:漫画:什么是协程?
来自:程序员小灰(微信号:chengxuyuanxiaohui)
————— 第二天 —————
————————————
什么是进程和线程
有一定基础的小伙伴们肯定都知道进程和线程。
进程是什么呢?
直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。
进程拥有代码和打开的文件资源、数据资源、独立的内存空间。
线程又是什么呢?
线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。
线程拥有自己的栈空间。
有人给出了很好的归纳:
对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。
无论进程还是线程,都是由操作系统所管理的。
Java中线程具有五种状态:
初始化
可运行
运行中
阻塞
销毁
这五种状态的转化关系如下:
但是,线程不同状态之间的转化是谁来实现的呢?是JVM吗?
并不是。JVM需要通过操作系统 ...
Python中的虚拟环境-virtualenv
更低层次: virtualenvvirtualenv 是一个创建隔绝的Python环境的 工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。
它可以独立使用,代替Pipenv。
通过pip安装virtualenv:$ pip install virtualenv
测试您的安装:$ virtualenv --version
基本使用为一个工程创建一个虚拟环境:$ cd my_project_folder
$ virtualenv venv
virtualenv venv 将会在当前的目录中创建一个文件夹,包含了Python可执行文件, 以及 pip 库的一份拷贝,这样就能安装其他包了。虚拟环境的名字(此例中是 venv ) 可以是任意的;若省略名字将会把文件均放在当前目录。在任何您运行命令的目录中,这会创建Python的拷贝,并将之放在叫做 venv 的文件中。您可以选择使用一个Python解释器(比如python2.7):
$ virtualenv -p /usr/bin/python2.7 venv ...
selenium浅析
后续内容安排
selenium
如果遇到了验证码处理情况(将验证码图片编程单词或者数据,调用其他人的接口实现)
如何使用代理(1-1.5)天
什么是线程,进程,协程(2天)
框架Scrapy(5天)
1. 爬虫的五个步骤
需求分析
通过需求分析寻找需要的URL
通过网站的URL获取网站返回信息(HTML,JSON)
定位信息的位置
re
xpath
css selector
存储信息
其中分析网页的过程才是最长的,但是这个分析的过程在面试中,并不容易去考察你
selenium 在爬虫中的作用
他能够帮助我们解决掉JavaScript动态加载的问题但是selenium的问题在于他慢,贼慢
面试题:如何加快selenium的速度
记加载的资源过多,所以才会慢,关闭各种资源的加载
线程进程每一个程序的执行,都至少要包含一个进程一个进程里面,至少要包含一个线程那么一个线程里面至少要包含一个协程
今日内容
进程池
协程
代理相关网站
Python实现递归修改文件扩展名
起步小编今天将博客中的markdown文件上传到有道云笔记中,发现了一个BUG:有道云中只能识别md文件格式,而markdown扩展的名的文件不能被识别,也就不能直接查看到文件的内容,所以精通python的小编当然有办法解决了,小编写了一个python脚本,轻松的实现了批量重命名操作
设计思路
首先我们要列出根目录中的文件夹和文件列表
判断是否为文件夹
是文件进行更改操作
不是文件,进行递归文件夹
然后获取文件名,去除掉文件名中的扩展名
更改为自己制定的新的扩展名
代码实现12345678910111213141516171819202122232425262728293031323334353637383940414243#!/usr/bin/env python# -*- coding:utf-8 -*-# Created by 秋叶夏风# 本模块的功能:<"批量修改文件扩展名(递归)"># 导入系统模块import osdef isFile(filePath): # 修改文件扩展名 filename = filePath.split ...
JavaWeb笔记05
线程安全问题:Servlet的service方法,每次被请求是,调用.
这个调用很特殊,是在新的子线程中调用的,当service方法执行完毕,子线程死亡了.
可以简单的理解为:service方法每次执行都是一个新的线程.
123456789101112131415161718192021222324252627282930313233343536373839404142package cn.xdl.demo1;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;/** * @author victor * @site https://victorfengming.gite ...
JavaWeb笔记06
请求的转发概念一个web组件 将未处理完毕的的请求,通过tomcat转交给另一个web组件处理
步骤
获取请求转发器1RequestDispatcher rd = request.getRequestDispatcher("转发的地址)
通过转发器 发起转发1rd.forward(request,response)
转发流程步骤1: 范文特点:
转发过程中,多个servlet之间共享一份请求信息,共享一个响应对象
转发只能发生在同一个服务器中(转发无法实现跨域)
无论转发发生多少次,对于浏览器来说,只发起过一次请求,并且只接到了一次响应
相对于重定向来说,效率更高请求的重新定向概念响应时,告知浏览器新的请求地址,浏览器接收到自动请求新的地址比如你在京東中登录后,会直接重定向到首页中,不用你点击了步骤1response.sendRedirect("重定向地址")
流程步骤1: 当浏览器特点
重定向会产生新的请求和新的响应
使用重定向,可以在多个服务器之间发生(可以实现跨域操作)
浏览器地址栏的内容,会发生改变
相对于请求转发而言,效率较低
数据分析之Excel笔记
Excel2016应用快速入门表格数据的录入与编辑设置工作表查阅与打印报表数据的保存公式的基础应用公式计算的高级应用函数的基础应用使用average函数求一组数字的平均值侧重库pandas: 数据预处理和数据分析库numpy: 数值计算库matplotlib: 绘图库,数据可视化scikit-learn: 机器学习库
掌握Python基础语法即可其他问题我数学不好能不能学?我英语不好能不能学?
数据方向,多读书,多去挖掘什么样的东西跟什么样的东西有关
环境我们以前是用pycharm,现在不用了用Jupyter,推荐环境用anaconda对于科学计算的一个python发行版本(软件)
初始pandas
均值
中位数
极差
中程数
各种图
条形图
柱状图
折线图
饼状图
箱线图
直方图:代表了一种数据的分布情况
JavaWeb笔记04
解决GET与POST乱码问题:请求的乱码问题
GET:tomcat8版本之前,get请求会乱码12正常文字 --> UTF-8编码 --> 字节数组 --> ISO-8859-1 编码 --> 乱码文字正常文字 <-- UTF-8编码 <-- 字节数组 <-- ISO-8859-1 编码 <-- 乱码文字
解决乱码的两种格式:
格式1:可用于tomcat8版本之前的GET请求编码 以及 所有版本的POST请求乱码:解决方案: 将乱码的文字,按照乱码的编码ISO-8859-1转换为字节数组,在按照正常的白马UTF-8组装为文字;
格式2:格式1,解决乱码适用于参数较少的情况,如果参数过多,解决起来极其麻烦tomcat为我们提供了设置请求体编码的方式:注意: 只有POST请求,才有请求体格式:request.setCharacterEncoding("UTF-8);
注意:
解决请求乱码的代码,必须运行在获取参数之前request.setCharacterEncoding(""") 响应的乱码 ...
JavaWeb笔记03
今日内容
Servlet
HTTP协议
Request
Servlet概念步骤执行原理生命周期Servlet3.0注解配置Servlet的体系结构
Servlet – 接口
GenericServlet – 抽象类:将Servlet接口中其他方法做了默认空实现,只将service()方法作为抽象
将来定义Servlet类时候,可以继承GenericServlet,实现service()方法即可
HTTPServlet – 抽象类:对http协议的一种封装,简化操作
定义类继承httpservlet方法
腹泻doGet/doPost方法Servlet相关配置
urlpattern:Servlet访问路径
一个Servlet可以定义多个访问路径:@WebServlet({"/d4","/dd4","/ddd4"})
路径定义规则:
/xxx
/xxx/xxx
*.do*说白了就是通配符,这里注意前面不要加/
HTTP:概念:Hyper Text Transfer Protocol 超 ...
JavaWeb笔记02
今日内容
web相关概念回顾
web服务器软件:Tomcat
Servlet入门学习
web相关概念回顾
软件架构
C/S: 客户端/服务器端
B/S: 浏览器/服务器端
资源分类
静态资源: 所有用户访问后,得到的结果都是一样的,成为静态资源,静态资源可以直接被浏览器解析
如:html, css ,JavaScript
动态资源:每个用户访问相同资源后,得到的结果可能不一样.称为动态资源,动态资源被访问后,需要先转换为静态资源,在返回给浏览器
如:servlet/jsp,php,asp……
网络通信三要素
IP: 电子设备(计算机)在网络中的唯一标识.
端口: 应用程序在计算机中的唯一标识.0-65536,建议不要在1024以下,可能被占用了
传输协议: 规定了数据通信传输的规则
基础协议:
tcp:安全协议,三次握手.确认双方都在线的情况下再进行数据传输
udp::不安全的协议,广播发送,可能会丢失,但是速度快
web服务器软件:
服务器: 安装了服务器软件的计算机
服务器软件: 接收用户的请求,处理请求,做出响应
web服务器软件: 接收用户的请求 ...