银行柜员

查询银行柜员半小时内办理业务的记录

╄→尐↘猪︶ㄣ 提交于 2020-02-26 08:01:12
查询出银行柜员半小时内办理开户业务的记录。看看是否存在半个小时内办理了3笔及以上的开户业务。 给出了一张表,里面是一个柜员的操作记录,表records的结构为: 字段 数据类型 Cid(客户id) int Ctime(时间) datetime 方法一:用窗口函数(需要MySQL8.0以上版本); 方法二:常规的方法。 本案例采用了方法二。由于MySQL8.0版本安装过程曲折,未能顺利安装成功。 1、在MySQL中创建数据库bank CREATE DATABASE bank ; 2、创建表records CREATE TABLE records ( Cid varchar ( 10 ) NOT NULL , Ctime datetime NOT NULL ) ; 3、插入数据 (拟插入20条记录) INSERT INTO records VALUES ( 'adsf' , '2017-5-27 10:55:00' ) ; INSERT INTO records VALUES ( 'ngfd' , '2017-5-27 10:56:00' ) ; INSERT INTO records VALUES ( 'brsd' , '2017-5-27 11:12:33' ) ; INSERT INTO records VALUES ( 'afdg' , '2017-5-27 11:30:00'

如何避免死锁?我们有套路可循

爱⌒轻易说出口 提交于 2019-12-02 18:03:06
写在前面 上一篇文章 共享资源那么多,如何用一把锁保护多个资源? 文章我们谈到了银行转账经典案例,其中有两个问题: 单纯的用 synchronized 方法起不到保护作用(不能保护 target) 用 Account.class 锁方案,锁的粒度又过大,导致涉及到账户的所有操作(取款,转账,修改密码等)都会变成串行操作 如何解决这两个问题呢?咱们先换好衣服穿越回到过去寻找一下钱庄,一起透过现象看本质,dengdeng deng....... 来到钱庄,告诉柜员你要给铁蛋儿转 100 铜钱,这时柜员转身在墙上寻找你和铁蛋儿的账本,此时柜员可能面临三种情况: 理想状态: 你和铁蛋儿的账本都是空闲状态,一起拿回来,在你的账本上减 100 铜钱,在铁蛋儿账本上加 100 铜钱,柜员转身将账本挂回到墙上,完成你的业务 尴尬状态: 你的账本在,铁蛋儿的账本被其他柜员拿出去给别人转账,你要等待其他柜员把铁蛋儿的账本归还 抓狂状态: 你的账本不在,铁蛋儿的账本也不在,你只能等待两个账本都归还 放慢柜员的取账本操作,他一定是先拿到你的账本,然后再去拿铁蛋儿的账本,两个账本都拿到(理想状态)之后才能完成转账,用程序模型来描述一下这个拿取账本的过程: 我们继续用程序代码描述一下上面这个模型: class Account { private int balance; // 转账 void transfer