- 博客(56)
- 收藏
- 关注
原创 redis概述、不同系统安装以及redis配置文件redis.conf各参数详细介绍
redis介绍,优势,数据结构等redis各系统详细安装步骤redis中配置文件redis.conf文件中各参数详细介绍
2022-04-01 18:41:32
2395
原创 java@Component注解
@component作用以及@controller 、@service、@repository 、@component 区别
2022-03-16 15:49:44
1661
原创 JDK的安装及配置详细图文教程(win10)
JDK的下载进入官网,选择Products下的Software下的java官网下拉,找到java SE页面并选择Oracle JDK进入后选择JDK Download然后就会进入到jdk最新版本的下载界面,选择系统对应的下载安装包或者压缩包。(我选择的是win10-64位对应的exe安装文件)直接选择同意下载就可以了JDK的安装下载完成后在你的对应的下载目录下找到jdk的exe安装文件双击打开,进入jdk安装向导。然后就会出现安装路径,这..
2021-05-17 17:24:28
4427
1
原创 flask框架(六)模板相关
模板对数字、列表、字典和基本函数的引用app.pyfrom flask import Flask, render_templateapp = Flask(__name__)@app.route('/index')def index(): context = { 'k1': 123, 'k2': [12, 23, 34] 'k3': {'name': 'test', 'age': 123} 'k4':lambda x: x + 1
2021-04-02 17:02:20
445
6
原创 flask框架(五)视图相关(FBV,CBV实现,请求和响应)
文章目录FBV和CBVFBV实现及视图使用装饰器FBV实现及视图使用装饰器请求和响应 FBV和CBVFBV:就是一个 url对应一个函数,使用函数处理请求CBV:就是一个url对应一个类,使用类处理请求 FBV实现及视图使用装饰器# 装饰器def auth(func): def inner(*args, **kwargs): print('before') result = func(*args, **kwargs) print(
2021-04-02 17:00:54
334
原创 flask框架(四)路由相关(如何添加路由,各参数介绍,源码解析)
文章目录添加路由的两种方式:反向生成url路由转换器自定义正则路由转换器其他参数 添加路由的两种方式:@app.route('/index')def index(): return "index"def order(): return "order"app.add_url_rule('/order', view_func=order) 反向生成urlendpoint()默认是函数名from flask import url_for@app.r
2021-04-02 16:59:52
741
原创 flask框架(三)配置文件(配置文件如何写、写在哪儿源码解析)
创建一个专门的配置文件,将所有的静态文件放到配置文件中去。比如setting.py文件class Config(object): DEBUG = False TESTING = False DATABASE_URI = 'sqlite://:memory:'# 生产环境class ProductionConfig(Config): DEBUG = True# 开发环境class DevelopmentConfig(Config): pass
2021-04-02 16:58:18
1284
原创 flask框架(二)用户管理系统搭建过程(从零开始通过实际用例来了解如何使用flask)
首先新建一个app文件app.py首先搭建一个最简单的主页# 导包from flask import Flask# 这是一个flask类的对象app = Flask(__name__)# 主页@app.rount('/index'): return "index html"if __name__ == "__main__": app.run()接下来我们加入登录功能,写构建一个简单的login.html<!DOCTYPE html><h
2021-03-29 17:26:24
1742
原创 flask源码解析之app.run()的执行流程
文章目录1. 最简单的flask应用2. run方法的执行过程:3. make_server函数4. BaseWSGIServer5. WSGIRequestHandler1. 最简单的flask应用app是Flask类的实例,最后执行了app的run方法。from flask import Flask# app是Flask类的实例app = Flask(__name__)@app.route('/')def index(): return "hello world!"if
2021-03-29 16:48:20
7069
2
原创 WSGI规范(PEP 3333) 中文文档(一)(官方文档翻译)
文章目录写在开始为PEP 333读者准备的序言摘要基本原理和目标规范概述字符串类型应用/框架端服务器/网关端中间件:可以与两端交互的组件 写在开始Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。官方文档:Python Web Server Gateway Interface以下是PEP 3333的官方文档翻译,可结合官方文档查看。(如有翻译
2021-03-27 18:30:29
860
原创 Flask框架(一)输出Hello World(框架搭建基本流程及底层逻辑(底层源码分析))
文章目录安装flaskwsgiflask中的wsgi 安装flaskpip install flask wsgi在开始之前,我们先了解一下wsgi:Python Web Server Gateway Interface,翻译过来时Python web服务器网关接口,实际上就是一种协议,我们的应用(Django,Flask)实现了WSGI,就可以配合实现了WSGI(uWSGI,gunicorn)的服务器工作了。具体内容可参考wsgi官方文档,想要看中
2021-03-27 18:24:46
616
原创 面试常见问题(必知必会)之数据库索引(三)为什么建议InnoDB表使用自增主键?(数据库索引的另一种存储方式Hash表)
为什么建议必须建主键和使用整型做主键请看上一篇《数据库索引(二)》最后的面试题部分。该篇主要讨论为什么要用自增主键。但是在讨论为什么之前,我们先来看个东西通过上图我们可以看出,数据库创建存储索引的方法除了B+Tree之外还有一种方法是Hash表。那么,先来看一下Hash表的结构:那么它是怎么存储的呢?比如,现在有一张如上图的表,我想把col3那一列作为索引利用Hash进行存储。那么,数据库会将col3中的每个值进行Hash运行,如下图最左边部分,算出一个值以后它就将那个值进行保存,这个值对应的就是
2021-03-26 18:32:47
309
原创 面试常见问题(必知必会)之数据库索引(二)不同存储引擎的索引实现(InnoDB or MyISAM)
文章目录MyISAM存储引擎的索引实现InnoDB存储引擎索引实现非主键索引联合索引在介绍不同存储引擎的索引实现之前,先说一下面试中可能问道的常识性问题:存储引擎是形容数据库的,还是形容数据库表的?(形容数据库表的~) MyISAM存储引擎的索引实现索引文件和数据文件是分离的(非聚类)从上图我们可以看出,数据库的数据默认是保存在mysql目录下的data文件夹,然后我们看到的表是在对应的data下的test文件夹中。通过名字,可以看出MyISAM存储引擎的表有三文件,分别是表结构、
2021-03-26 18:29:23
216
原创 面试刷题之牛客网《数组中重复的数字》(习题详细解析及python实现)
文章目录题目链接:题干示例思路详解代码实现 题目链接:数组中重复的数字 题干在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组[2,3,1,0,2,5,3],那么对应的输出是2或者3。存在不合法的输入的话输出-1 示例input: [2, 3, 1, 0, 2, 5, 3]output:2oroutpu
2021-03-25 22:48:22
312
原创 面试常见问题(必知必会)之数据库索引(一)索引的本质解析(索引存储为什么选择B+树不选择二叉树和红黑树)
数据库索引(一)索引的本质解析索引是帮助MySQL高效获取数据的排好序的数据结构索引数据结构:二叉树红黑树Hash表B-Tree如上图所示,先看左面我们看到了一个表。假如我现在需要查一条数据(select * from t where t.Col2=89),如果没有索引直接查询的话,它会从第一行数据依次执行I/O操作(耗费性能)读取每行数据进行比较,直至找到我需要的那行数据。(如果需要查找的数据在表的最后,就很耗时) 假设现在我将col2列建了索引,假设我在底层用二叉
2021-03-25 18:14:53
220
2
原创 并发编程(十二)使用subprocess启动电脑任意程序(听歌、解压缩、自动下载等等)
文章目录使用subprocess启动电脑的子进程subprocess的实例使用subprocess启动电脑的子进程subprocess模块:允许你生成新的进程连接它们的输入、输出、错误管道并且获取它们的返回码几个应用场景:每天定时自动打开音乐软件播放音乐调用解压缩软件自动解压缩文件通过python远程提交一个torrent种子文件,用电脑启动下载 subprocess的实例用默认的应用程序打开歌曲文件# 注:windows下是start,mac下
2021-03-24 18:12:04
1275
原创 并发编程(十一)python异步IO实现并发编程
文章目录异步IO原理python异步IO库:asyncio信号量(Semaphore)的使用 异步IO原理单线程爬虫执行流程(执行路径)从下图中我们可以看到,当第一个任务进行等待IO时,它不会像上图一样一直等待IO结束继续执行该任务,而是切换到第二个任务进行执行。直到全部执行到等待IO,再从头继续执行任务直至任务执行结束。在这儿就有必要提到《the one loop》the one loop至尊循环驭众生至尊循环寻众生至尊循环引众生普照众生欣欣荣也就是说,在这儿单线程
2021-03-24 18:10:04
541
2
原创 并发编程(十)在Flask服务中使用进程池加速
并发编程(十)在Flask服务中使用进程池加速# -*- coding: utf-8 -*-# @Time : 2021-03-22 16:35:26# @Author : wlq# @FileName: flask_process_pool.py# @Email :rd_wlq@163.comimport flaskimport mathimport jsonfrom concurrent.futures import ProcessPoolExecutorproces
2021-03-23 17:59:11
2252
1
原创 并发编程(九)使用多进程multiprocessing加速程序运行
文章目录为什么要使用多进程?多进程multiprocessing使用方法(对比多线程Threading)代码实战:单线程、多线程、多进程对比CPU密集计算速度为什么要使用多进程?有了多线程threading,为什么还要使用多进程multiprocessing如果遇到CPU密集型计算,多线程反而会降低执行速度!虽然有全局解释器锁GIL,但是因为有IO的存在,多线程依然可以加速运行。CPU密集型计算,线程的自动切换反而变成了负担,多线程甚至减慢了运行速度。为了解决上面这个问题。
2021-03-23 17:55:42
1860
3
原创 笔试真题之判断一个数字是否是素数(算法详解及python实现)
题:explain:判断一个数字是否是素数input:数字noutput:如果是素数返回True,否则返回False示例: 判断112272535095293是否是素数算法思想:首先判断是不是1或2,1不是素数,2是素数其次判断是不是偶数(被2整除),偶数不是素数判断能不能被小于它的奇数整除,如果可以不是素数,直接对数开根号,然后判断能不能被3到$ \sqrt n 之间的奇数整除(大于之间的奇数整除(大于之间的奇数整除(大于 \sqrt n 的与小于的与小于的与小于 \
2021-03-23 14:13:06
1132
1
原创 数据结构可视化(非常全面,亲测可用)
链接:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
2021-03-23 13:51:29
525
原创 并发编程(八)在web服务中使用线程池加速
文章目录web服务的架构以及特点使用线程池ThreadPoolExecutor加速示例(用Flask实现web服务并实现加速)web服务的架构以及特点从上图可以看出,我们使用服务器访问网页时,浏览器会将我们的请求发送给比如Flask或者Django搭建的web服务器。web服务器会进行磁盘文件读取、数据库操作、调用远程服务API等操作,然后将它们的结果进行组合再操作并返回给我们,这就是web服务的大概介绍。总结来说,web服务有以下特点:web服务对响应时间要求非常高,比如要求200ms返回。
2021-03-22 18:10:44
562
原创 并发编程(七)好用的线程池ThreadPoolExecutor
文章目录线程池的原理使用线程池的好处ThreadPoolExecutor的使用语法示例线程池的原理在介绍线程池原理之前,先介绍一下线程的生命周期从上图我们可以基本了解线程的一个生命周期。其中,新建线程系统会分配资源,终止线程系统会回收资源,而进行这些工作都需要时间。那么,如果可以重复使用线程,则可以减去新建和终止线程的开销,这就是线程池的基本原理。接下来我们再看一个图,通过这个图我们将了解线程池的流转过程。从上图我们可以看出,每有一个新任务就会将其放到任务队列。而线程池中存放的是可以重复使用的线
2021-03-22 18:05:35
728
原创 csdn博客的缩进和空行(markdown的缩进和空行)
csdn博客的缩进和空行(markdown的缩进和空行)# 输入一个 或 可以缩进四分之一个汉字大小。不断行的空白格 或  # 输入一个 或 可以缩进二分之一个汉字大小。半方大的空白 或  # 输入一个 或 可以缩进一个汉字大小。全方大的空白 或  如果
2021-03-22 09:54:37
197
1
原创 并发编程(六)线程安全问题以及lock解决方案
文章目录线程安全概念介绍Lock用于解决线程安全问题示例线程安全概念介绍线程安全是指某个函数、函数库在多线程环境被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。线程不安全是指由于线程的执行随时会发生切换,就造成了不可预料的结果,出现线程不安全。# account:银行账户# amount取钱金额def draw(account, amount): if account.balance >= amount: account.balance
2021-03-20 18:13:49
482
原创 并发编程(五)python实现生产者消费者模式多线程爬虫
文章目录多组件的Pipeline技术架构生产者消费者爬虫架构多线程数据通信的queue.Queue代码实现多组件的Pipeline技术架构在介绍或者使用生产者消费者模式前我们先大概了解一下Pipeline架构。例如,对于一件复杂的事情,我们常常都不会一下子做完,而是会分成很多中间步骤一步步完成,进而简化复杂的事情。请看下图:如图,我们现在有一个事情由输入数据得到输出数据,中间会经过很多的模块,而这些模块之间会通过中间数据进行交互。我们称这些处理模块为处理器也叫Processor,而
2021-03-20 18:10:06
1246
原创 并发编程(四)如何使用多线程,使用多线程对爬虫程序进行修改及比较
文章目录Python创建多线程的方法使用最基本的方法爬取数据分别使用单线程和多线程来比较程序执行速度两者相差19倍,从而体现出使用多线程的必要性。Python创建多线程的方法# 1.准备一个函数def my_func(a, b): do_craw(a, b) # 2.创建一个线程import threadingt = threading.Thread(target=my_func, args=(100, 200))# 3.启动线程t.start()# 4.等待结束t
2021-03-20 18:07:09
428
原创 并发编程(三)Python编程慢的罪魁祸首。全局解释器锁GIL
文章目录Python速度慢的两大原因GIL是什么?为什么存在GIL?怎么样规避GIL带来的限制?Python速度慢的两大原因在介绍python速度慢的原因之前,先来看看python速度有多慢以及现状。相比C/C++/JAVA,Python确实慢,甚至在一些特殊场景下,Python比C++慢100~200倍。现状:由于速度慢的原因,许多公司的基础架构代码都是用C/C++来开发实现的。比如推荐引擎、搜索引擎、存储引擎等。具体原因:python是动态类型语言,边解释边执行。
2021-03-20 18:06:10
602
原创 并发编程(二)怎样选择多线程多进程和多协程
文章目录python并发编程的三种方式:CPU密集型计算、IO密集型计算多线程、多进程、多协程的对比怎么根据任务选择对应的技术python并发编程的三种方式:多线程Thread多进程Process多协程Coroutine CPU密集型计算、IO密集型计算在了解以上三者对比之前,我们先来了解一下什么是CPU密集型计算、IO密集型计算CPU密集型计算(CPU-bound):CPU密集型也叫计算密集型,是指IO在很短的时间就可以完成,CPU需要大量的计
2021-03-20 18:04:41
673
原创 并发编程(一)python并发编程简介
文章目录1. 为什么要引入并发编程2. 有哪些程序提速的方法3. python对并发编程的支持1. 为什么要引入并发编程场景一:网络爬虫、一个小时的任务并发20分钟完成。场景二:APP应用,正常打开需要3秒,采用异步并发加载后提升到200毫秒所以说,并发编程是为了提升程序运行的速度。2. 有哪些程序提速的方法多线程并发(threading)多CPU并行(multiprocessing)多机器并行(Hadoop、hive、spark)3. python对并发编程的支持多线程:th
2021-03-20 18:00:04
553
原创 面试真题之Python二维数组转为一维数组的四种方法
arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9]]列表推导式rst = [x for i in arr for x in i]sumrst = sum(arr, [])itertoolsfrom itertools import chainrst = list(chain.from_iterable(arr))operatorimport operatorfrom functools import reduce
2021-03-19 18:10:00
903
原创 面试常见问题(必知必会)之python装饰器是什么?怎么用?如何保留原函数名(实例详解)
在介绍装饰器之前,先了解一下函数调用。def func(): return "I am func()"f = funcrst = f()print(rst)'''如果将一个函数赋值给一个参数,那么这个参数就继承了该函数的功能output: I am func()'''最常见的计算函数所用时间import timedef func(): time.sleep(5) print("I am func()")def func1(): start_
2021-03-19 15:43:32
341
原创 用python调用、更新json、yaml配置文件
db_config.json文件{ "host": { "test1": "success!", "test2": "success!" }, "port": 120302145012}test_config.yaml文件host: {test: Ah}port: 123456定义获取和更新配置文件方法# 导包import jsonimport yaml# 获取json配置文件def get_json_con..
2021-03-19 10:05:53
805
原创 面试常见问题(必知必会)之代码管理器(以gitlab为例, gitlab的开始管理新项目的基本操作及命令)
首先,先在自己的gitlab上新建一个仓库在本地安装git,配置全局连接用户git config --global user.name "xxx"git config --global user.email "xxx@xx.com"分为四种情况来进行本地和远程连接是一个空的新建的project# 克隆远端仓库到本地git clone http://gitlab.xxx/wlq/test1.git# 进入本地仓库cd test1# 新建概述文件touch README...
2021-03-18 17:20:54
717
原创 windows下anaconda中的虚拟环境(创建配置使用虚拟环境)
首先,找到并进入anaconda目录。创建虚拟环境conda create -n your_env_name python=x.x查看已经存在和激活的环境(环境名后面带*为已激活)conda env listconda info -e激活并进入你创建好的环境中activate your_env_name查看环境中已有包pip list在环境中安装包pip install backage(进入环境中)conda install -n your_..
2021-03-15 15:16:14
532
原创 TensorFlow优化器GradientDescentOptimizer()函数
简介:TensorFlow的optimizer类下的子类,属于优化器。实现的是梯度下降算法。参数__init__( learning_rate, use_locking=False, name='GradientDescent')GradientDescentOptimizer初始化方法中包含三个参数name:优化器名字learning_rate: 学习率,控制参数的更新速度。过大过小都会影响算法的运算时间和结果,过大容易发散,过小运算时间太长。..
2021-03-12 10:59:12
4579
1
原创 吴恩达机器学习系列课程配套资料
需要视频配套资料的可以看看这里https://zhuanlan.zhihu.com/p/84214338这是国内黄博士为吴老师课程赔的全套资料,包括视频字幕,对应python代码,原版PPT,中文版笔记等等
2021-03-11 17:03:06
997
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人