python 提供了2种方法解决该问题的问题:1,悲观锁;2,乐观锁 悲观锁:在查询商品储存的时候加锁 select_for_update() 在发生事务的commit或者是事务的rollback时,自动释放该锁,这样其他用户就可以接着查询该商品。 乐观锁:乐观锁不是真正的锁,在创建订单之前查询商品 ...
分类:
编程语言 时间:
2018-10-09 20:06:39
阅读次数:
248
最近做一个订单模块要生成订单号,因为考虑到用Mysql主键做订单号在以后分库分表后会重复,就想到自己创建。 这里要涉及到并发操作,所以要么就用单例内部类,或者就是加锁,因为时间关系我先实现了内部类和锁,后续再用类把String替换了。 具体代码: 之前没加锁时候如果在几个线程池里放了几百个线程的情况 ...
分类:
编程语言 时间:
2018-10-09 12:45:47
阅读次数:
1205
1. java中导致死锁的原因 多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放,而该资源又被其他线程锁定,从而导致每一个线程都得等其它线程释放其锁定的资源,造成了所有线程都无法正常结束。这是从网上其他文档看到的死锁产生的四个必要条件: 1、互斥使用,即当资源被一个线程使用(占有)时, ...
分类:
编程语言 时间:
2018-10-09 00:30:12
阅读次数:
201
前言: 在前面并发性能对比的文章中,我们可以看到Golang处理大并发的能力十分强劲,而且开发也特别方便,只需要用go关键字即可开启一个新的协程。 但当多个goroutine同时进行处理的时候,就会遇到同时抢占一个资源的情况(并发都会遇到的问题),所以我们希望某个goroutine等待另一个goro ...
分类:
其他好文 时间:
2018-10-08 15:06:22
阅读次数:
173
ptmalloc下堆的分配和回收 ptmalloc内存分配 1) 获取分配区的锁,为了防止多个线程同时访问同一个分配区,在进行分配之前需要取得分配区域的锁。线程先查看线程私有实例中是否已经存在一个分配区,如果存在尝试对该分配区加锁,如果加锁成功,使用该分配区分配内存,否则,该线程搜索分配区循环链表试 ...
分类:
其他好文 时间:
2018-10-08 13:31:07
阅读次数:
201
互斥同步 互斥同步(Mutual Exclusion & Synchronization)是常见的一种并发正确性保证手段。同步是指子啊多个线程并发访问共享数据时,保证共享数据在同一时刻只能被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critial Sectio ...
分类:
编程语言 时间:
2018-10-06 23:41:29
阅读次数:
338
1.编程式事务: 1.1 由程序员编程事务控制代码.commit与rollback都需要程序员决定在哪里调用,例如jdbc中conn.setAutoCimmit(false),conn.commit(),conn.rollback(),以及mybatis中的sqlSession.commit(),s ...
分类:
编程语言 时间:
2018-10-06 13:20:22
阅读次数:
157
1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败< 可以忽略1008:数据库不存在,删除数据库失败< 可以忽略1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库文件失败1012:不能读取系统表中的记录102 ...
分类:
数据库 时间:
2018-10-06 12:04:26
阅读次数:
168
multiprocessing包—Process模块开启多进程的两种方式,Process的方法 进程同步控制—multiprocessing.Lock multiprocessing.Semaphore multiprocessing.Event 进程间通信(IPC)— multiprocessin ...
分类:
系统相关 时间:
2018-10-05 12:17:32
阅读次数:
193
1.进程线程,什么是线程和进程?区别是啥? 2.多线程多进程(主要看你有没有用过多线程) 3.死锁(python gil),涉及到了锁机制,所以问问并行处理图片时候哪些地方要加锁 系统调用,虚拟内存 4.进程是资源分配的基本单位。这个资源是指什么? 5.死锁的原理,为什么会发生死锁? 进程间通信、线 ...
分类:
其他好文 时间:
2018-10-04 16:39:22
阅读次数:
161