1. 前言(目的就是大大提升爬虫效率) 在执行IO密集型任务的时候,代码常常遇到IO操作而等待。例如我们在爬虫的时候,用到requests请求的时候,网页响应慢,一直等待着,那么爬虫的效率会大大的降低。 为了解决这类问题,本文就来探讨一下 Python 中异步协程来加速的方法,此种方法对于 IO 密 ...
分类:
其他好文 时间:
2019-10-01 16:03:44
阅读次数:
86
原文:JDK8对并发的新支持1. LongAdder和AtomicLong类似的使用方式,但是性能比AtomicLong更好。LongAdder与AtomicLong都是使用了原子操作来提高性能。但是LongAdder在AtomicLong的基础上进行了热点分离,热点分离类似于有锁操作中的减小锁粒度... ...
分类:
其他好文 时间:
2019-09-27 13:48:49
阅读次数:
65
什么是事务? 数据库事务是指作为单个逻辑单元存在的一系列操作,要么完全执行,要么完全不执行。 事务的几个属性:原子性,一致性,隔离性,持久性 原子性:事务是最小的执行单元,不允许分割,事务的原子操作确保动作要完全完成,要么就是完全不起作用。 一致性:执行事务的前后,数据要保持一致; 隔离性:并发访问 ...
分类:
编程语言 时间:
2019-09-24 12:01:14
阅读次数:
101
redo log和undo log、事务 redo log 如果系统突然崩溃,一些在缓存中的修改还没来的及同步到磁盘中,用redo log就可以恢复这些修改,Redo log就是记录这些修改的日志。这些对页面的修改有一些是原子操作,比如有些插入伴随着页面分裂和页的新建(悲观插入),此时这些分裂和修改 ...
分类:
其他好文 时间:
2019-09-21 15:19:53
阅读次数:
103
在并发编程中很容易出现并发安全问题,最简单的例子就是多线程更新变量i=1,多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程安全的目的。但是由于synchronized是采用的是悲观锁策略,并不是特别高效的一种解决方案。实际上, ...
分类:
编程语言 时间:
2019-09-18 13:11:55
阅读次数:
109
Redis是一个高性能的key-value数据库,它的出现很大程度补偿了memcached这类key-value存储的不足。虽然它是一个数据库系统,但本身支持MQ功能,完全可以当做一个轻量级的队列服务器使用。 不过,Redis只是提供一个高性能的、原子操作内存键值队,具有高速访问能力,虽可用做消息队 ...
分类:
其他好文 时间:
2019-09-17 22:04:43
阅读次数:
124
今天在django中处理数据库数据时,用到事务,官方文档看不下去,网上查资料,那叫一个大海捞针啊,还找不到自己想要的效果。 django中的事务, 依据Django1.6的文档,“Django提供了一种简单的API去控制数据库的事务交易...原子操作用来定义数据库事务的属性。 原子操作允许我们在数据 ...
分类:
数据库 时间:
2019-09-17 12:41:18
阅读次数:
148
异步的使用场景: 1、不涉及共享资源,或对共享资源只读,即非互斥操作 2、没有时序上的严格关系 3、不需要原子操作,或可以通过其他方式控制原子性 4、常用于IO操作等耗时操作,因为比较影响客户体验和使用性能 5、不影响主线程逻辑 同步的使用场景:不使用异步的时候 同步的好处: 1、同步流程对结果处理 ...
分类:
其他好文 时间:
2019-09-06 16:01:14
阅读次数:
94
CPU术语 缓存行(Cache line):缓存的最小单位 比较并交换(Compare and Swap):CAS操作需要输入两个数值,一个旧值,一个新值,在操作期间先比较旧值有没有发生变化,如果没有发生变化,才交换成新值,发生了变化则不交换 CPU流水线(CPU pipeline):在CPU中由5 ...
分类:
其他好文 时间:
2019-09-06 01:23:29
阅读次数:
70
更多内容,欢迎关注微信公众号:全菜工程师小辉。公众号回复关键词,领取免费学习资料。 应用场景 缓存系统:用于缓解数据库的高并发压力 计数器:使用Redis原子操作,用于社交网络的转发数,评论数,粉丝数,关注数等 排行榜:使用zset数据结构,进行排行榜计算 实时系统:使用Redis位图的功能实现布隆 ...
分类:
其他好文 时间:
2019-09-04 10:00:37
阅读次数:
80