MySQL-锁 锁的作用用于管理对共享资源的并发访问,保证数据库的完整性和一致性按粒度分类行锁和表锁粒度小的优缺点:- 好处:锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高;- 坏处:系统开销大(加锁、释放锁、检查锁的状态都需要消耗资源)在选择锁的粒度时,需要在锁开销和并发程度之间做一个权衡。按类型分类1.读写锁概念互斥锁(Exclusive) 简写为 X 锁,又称写锁。共享锁(Shared) 简写为 S 锁,又称读锁。规则一个事务对数据对象 A 加了 X 锁, 就可以对 A
MySQL-事务 概念事务指的是满足 ACID 特性的一组操作;以BEGIN TRANSACTION开始,以ROLLBACK/COMMIT结束。ACID名称说明原子性要么全部成功,要么全部失败回滚。回滚可以用回滚日志(Undo Log)来实现; 回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。一致性数据库在事务执行前后都保持一致性状态。隔离性多个事务彼此之间是完全隔离,互不干扰。一个事务所作的修改,对其他事务是不可见的,好似串行执行。隔离性最终目标也是保证
《相关性搜索:利用solr与ElasticSearch创建智能应用》的实践 可能会持续更新目标:根据书中的方法,完善搜索,并尽力提高搜索相关性。使用ElasticSearch版本:6.8.x使用elasticsearch-py,是官方低层级封装py包github地址:https://github.com/elastic/elasticsearch-py文档地址:https://elasticsearch-py.readthedocs.io/en/6.8.2/index.html使用数据:Enterprise-Registration-Data,需要数据可以私聊我中文分
win10-wsl2-docker-elasticsearch 在win10上用wsl通过docker安装并启动elasticsearch安装wsl21. 启用子系统和虚拟机功能,然后重启Win+x 管理员打开PowerShell,并运行:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestartdism.exe /online /enable-feature /featurename:VirtualMachinePlatform
Python装饰器 Python装饰器装饰器能把被装饰的函数替换成其他函数装饰器在加载模块时立即执行,而被装饰器的函数只在明确调用时运行叠放装饰器(多个装饰器)把 @d1 和 @d2 两个装饰器按顺序应用到 f 函数上,作用相当于 f = d1(d2(f))参数化装饰器创建一个装饰器工厂函数,把参数传给它,返回一个装饰器,然后再把它应用到被装饰函数上wraps作用:消除装饰器对原函数的影响原理:partial对象和update_wrapper函数实现对原函数的相关属性进行拷贝参考:https://do
Python内置数据结构 Python内置数据结构和算法名称语言内置内置库线性结构list(列表)/tuple(元组)array(数组)/ collections.nametuple(具名元组)链式结构collections.deque(双端队列)字典结构dict(字典)collections.Counter(计数器) / OrderDict(有序字典)集合结构set(集合) / frozenset( 不可变集合)排序算法sorted二分算法bisect模
Python函数与类 Python函数可变/不可变类型做为函数参数Python的函数传递是对象引用函数传入参数时:可变对象,直接修改,影响函数外部参数不可变对象,创建新对象,不影响函数外参数内置可变对象:list/ set/ dict内置不可变对象:bool/ int/ float/ tuple/ str/ frozensettuple元组tuple本身是不可变,元素依然可变不可变指保存的引用不可变Python一切皆为对象可变对象作为默认参数默认参数只计算一次如果修改了参数,默认
Python 2/3 差异点 Python 2/3 差异点内容python2python3print关键字函数编码默认ASCII默认utf-8(unicode)除法结果是int整除结果是浮点数,整除是 //字符串问题字节串是给机器看的unicode是给人看的python2中字符串两个类型:unicode-文本字符串和str-字节序列python3中 str-字符串,byte-字节序列Python3 改进类型注解(type hint),提示>>>
Gunicorn + gevent + flask + sqlalchemy + scoped_session 高并发解决方案 Gunicorn + gevent + flask + sqlalchemy + scoped_session 高并发解决方案Gunicorngunicorn 是wsgi http server,也就是web sever它的作用: 多进程(woker) + 协程(gevent) + 管理web应用(flask)geventgevent是第三方库,通过greenlet实现协程Gunic...
Gunicorn-配置参数 config参数名参数内容默认-c , --configconfig_fileNone配置文件路径,路径形式的字符使用config参数及配置文件启动,例子:gunicorn -c gunicorn.conf manager:app配置文件中的参数bind参数名参数内容默认bindip:port[‘127.0.0.1:8000’...
Python Flask_caching-缓存 Python Flask_caching-缓存安装:pip install Flask-Caching初始化使用演示# app.pyapp = Flask(__name__)cache = Cache(app, config={'CACHE_TYPE' : 'simple'})app.extensions['cache_key'] = cache# ***.py# 调用 .c...
Python dict-字典 Python dict-字典映射(mapping)结构,基于哈希表存储键值对数据key必须是可哈希类型哈希冲突时,采用开放寻址法散列表是一个稀疏数组。1/3表元为空,因此空间效率低散列表里元素通常叫做表元(bucket)散列值获取散列值内置类型 hash()自定义类型,重写__hash__。两个对象相等,那么散列值必须相等。自定义类型,重写__eq__散列值保证索引空间中...
Python list-列表 Python list-列表列表的内部结构头部保存元素数量,内存分配计数独立数组存储元素指针操作时间复杂度操作时间复杂度复制O(N)添加元素(在尾部添加)O(1)插入元素(在指定位置插入)O(N)获取元素O(1)修改元素O(1)删除元素O(N)遍历O(N)获取长度为k的切片O(k)...
Python爬取淘宝搜索页,使用Selenium+BeautifulSoup 使用Selenium驱动chrome页面,获得淘宝信息并用BeautifulSoup分析得到结果 使用Selenium时注意页面的加载判断,以及加载超时的异常处理import jsonimport refrom bs4 import BeautifulSoupfrom selenium import webdriverfrom selenium.common.exceptions impo
Python爬取今日头条搜索的照片。使用requests+正则表达式 爬取网页:http://www.toutiao.com/search/?keyword=%E8%A1%97%E6%8B%8D1,分析爬取页面,找到页面信息在Chrome按F12打开开发者工具,查找网页内容的请求位置 找了doc中发现内容都是加载,查看JS内容页面内容无关。 在XHR中发现到我们想要的内容,页面内容是通过ajax加载进来的 查看Headers,可以得到Request URL和
requests+正则表达式爬猫眼电影TOP100 爬取地址:http://maoyan.com/board/提示:很抱歉,您的访问被禁止 需要伪装浏览器,在headers中添加’User-Agent’字典内容 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko
Python爬虫Selenium使用 官方文档: http://selenium-python.readthedocs.io/installation.html#introduction声明浏览器对象Seleninum支持很多浏览器,但是如果系统中浏览器不存在就会报错from selenium import webdriver # 引入webdriver包browser = webdriver.Chrome() # 声明
Python爬虫Selenium安装 安装Seleniumpip install seleniumChromedriver https://sites.google.com/a/chromium.org/chromedriver/downloads 进入页面,找到最后发布版本 转到: https://chromedriver.storage.googleapis.com/index.html?path=2.
Beautiful Soup-学习笔记 使用CSS选择器 CSS选择器:[http://www.w3school.com.cn/cssref/css_selectors.asp] Beautiful Soup文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/基础用法html=''' <div class="p 正则表达式-学习笔记02 re.searchre.search 扫整个字符串并返回第一个成功的匹配content = 'Extra Stings Hello 1234567 World_This is a Regex Demo Extra Stings'result = re.match('Hello.*?(\d+).*?Demo',content) # 从开头开始匹配print(result)Noneresu
正则表达式-学习笔记02 re.searchre.search 扫整个字符串并返回第一个成功的匹配content = 'Extra Stings Hello 1234567 World_This is a Regex Demo Extra Stings'result = re.match('Hello.*?(\d+).*?Demo',content) # 从开头开始匹配print(result)Noneresu