• 等级
  • 144145 访问
  • 336 原创
  • 0 转发
  • 10893 排名
  • 5 评论
  • 10 获赞

并发事务的数据安全

1)目标的提出:并发事务的数据安全 马克-to-win:在互联网环境中,我们经常遇到比如:1)春节抢票系统。2)淘宝中大家同时下单买最后的几十个商品。3)你用你的工行账号买东西,同时你的老婆给你这个账号 转入钱或转出钱。上述几个问题的计算机本质就是:几个用户浏览器同时想修改数据库中同一行数据。这就促成了一个著名的艰难话题形成:互联网环境下并发甚至 高并发下的数据安全。马克-to-win:通常都是一...

2018-12-20 17:32:36

如何用eclipse做一个Taglib的helloWorld例子?

1)helloWorld: 注 意当你做下面的项目,首先选择还是老样子,做Dynamic Web project,但是当选择dynamic web module version版本时,过去我们选择2.3,这次我们选择2.4。注意不要错,否则做不过去。从这个例子里可以清楚地看出,标签的前缀greeter定位 配置文件的位置。标签本身Hello会在配置文件当中说明它对应哪一个类。 例 1.2.1 he...

2018-12-20 17:31:53

缓存是集合框架HashMap怎么做?

2)缓存是集合框架  (视频下载) (全部书籍) 马克-to-win:在 实践当中,有很多数据并不是像火车票数或者账户余额这样的关键数据(存在的意义就是为了疯狂的加减,疯狂的变化)。它们只是普通数据库表的一个缓存而已。 比如淘宝网中展示的衣服数据,基本不变,即使变了,不实时准确的展示最新的,也不会引起灾难性的后果,不像银行账户或火车票数。马克-to-win:这种数据我们就考虑放在集 合框架当中。我...

2018-12-16 08:43:48

缓存是ConcurrentHashMap怎么做给个例子?

iiii)ConcurrentHashMap: (视频下载) (全部书籍) 马克-to-win:ConcurrentHashMap是java1.5的新特性。HashTable在并发环境下效率低的原因: HashTable就一把锁,所有线程竞争。ConcurrentHashMap里面有很多锁,就像数据库里的行级锁一样。改这行,锁这行,不影响别的 行。最重要的是:一个线程添加(put)元素,同时另一个...

2018-12-16 08:43:38

缓存中ConcurrentHashMap的加锁怎么做给个例子?

ConcurrentHashMap的加锁操作 (视频下载) (全部书籍) 记 不记得,我们在讲java的线程部分安全知识时,举了一个例子【例:1.8.2-(补充)】。卖书卖到最后,卖出了个负数。这里还用那个例子,可是完全用 ConcurrentHashMap。那个例子当中有个bookNum--操作。本例中就想说明ConcurrentHashMap的这个操作 (bookNum--)如何做。 例 2....

2018-12-16 08:43:27

自制乐观锁

ii)自制乐观锁:(视频下载) (全部书籍) 例 2.2.1.2 package com; public class Ticket_Opti_MarkToWin {     private int number=4;     private int numberVersion=0;     private synchronized int updAtom(int num,int verNum)  ...

2018-12-16 08:43:12

缓存的具体实现

2.缓存的具体实现 (视频下载) (全部书籍)1)缓存是原始数据类型 马克-to-win:本 部分我们还是沿用上面的买车票的例子。不过这次的车票不是放在数据库当中,而是放在内存(缓存)当中。为了车票数这个变量不能被两个线程同时改变,我们或者可以用synchronized冠以买票的方法,或者可以加锁。在我们这部分教学中,我们采 取了加锁的方法。一共讲了两个方案,一个是悲观锁,一个是乐观锁。马克-to...

2018-12-16 08:43:02

自制悲观锁

i)自制悲观锁: (视频下载) (全部书籍) 例 2.2.1.1 package com; public class Ticket_Pess_MarkToWin {     private int number=4;     private int lock=0;     public synchronized int getLock()     {  。。。。。更多内容,进入:  http://...

2018-12-16 08:42:51

缓存在高并发当中有何意义?

1)缓存有何意义 (视频下载) (全部书籍) 马克-to-win:上 面我们学习了数据库的并发安全。但是每次要更新数据,都需要访问数据库,这会耗费大量的时间。一万个人的更新数据,需要访问一万次数据库,这样做效率太低 了。马克-to-win:如果要能变成,最开始的时候访问一次数据库,把数据从数据库中取出来,放在内存中缓存起来,之后一万个人的更新数据,就变成更新这个缓存起来的变量 (操作都发生在内存)...

2018-12-16 08:42:39

一个高并发买票的实例

2.一个高并发买票的实例: (视频下载) (全部书籍) 马克-to-win:我 们现在回到春节高并发买票的问题。我们假设有一百万个人买一百张票,其中买票程序一百万个线程同时运行。不用改变mysql的缺省事务隔离级别。任何人在 买之前都用普通的select * from table来访问数据库获得目前的票数。假如现在是一百,之后大家一起点“下单”钮。这个钮所对应的程序可以这样:先select * f...

2018-12-16 08:42:26

缓存如何应对断电

2)缓存如何应对断电 (视频下载) (全部书籍) 马克-to-win:有 的同学说了,如果突然掉电怎么办?这,我们就需要观察数据库是怎么处理的。对,日志。数据库为了保证正确性,在真正改变数据库之前,都是先存入日志,如果 存入日志时掉电,那简单忽略就行。如果日志存好了,往数据库当中真写的时候发生了掉电,电源恢复了以后,再重新按照日志改变数据库。马克-to-win:一句话,对付掉电,就 靠日志。我们的...

2018-12-16 08:42:14

缓存层如何设计

3)缓存层如何设计 (视频下载) (全部书籍) 马克-to-win:我们前面讲过 了n-tier架构。在我们的程序当中,还可以设计一个缓存层。在去访问数据库之前,先看看缓存层中有没有数据,如果没有的话,从数据库取完数据回来,一 定要放在缓存层当中一份,下次就不用去数据库了。马克-to-win:如果对数据库当中,某个数据更新了,同时一定要记住也更新一下缓存当中的数据。这样的话,既保证了缓存的 数据是...

2018-12-16 08:42:03

事务隔离与更改数据库的关系

10)事务隔离与更改数据库的关系:(视频下载) (全部书籍) 马克-to-win:当 然,为了保持数据的一致性和数据库的正确性,涉及到同时改变数据库(update,insert,delete)时,不管任何的隔离级别,事务一定是序列 的执行的。先执行的事务挡住(block)后执行的事务正好要改变数据库的那句话(换句话说,在那句话后面的事务就卡在那了)。后执行的事务需要获得相关 行的“行排他锁”才能改...

2018-12-15 15:31:39

什么是REPEATABLE-READ隔离级别?

12)REPEATABLE-READ隔离级别(视频下载) (全部书籍) 马克-to-win:既 然我们教材用mysql,我们仔细研究一下mysql缺省情况,即两个窗口都是REPEATABLE-READ(可重复读)级别的情况。两个窗口都开始事 务以后,窗口2的update,delete,insert,窗口1肯定都看不见。但双方如果都同时update,delete,insert的话,虽然 会被bloc...

2018-12-15 15:27:31

缺省隔离级别是怎么回事?如何改变?

11)缺省隔离级别是怎么回事?如何改变?(视频下载) (全部书籍) 马克-to-win:比 如oracle,sql server的缺省隔离级别是READ-COMMITTED。而mysql的缺省隔离级别是REPEATABLE-READ。在mysql中,我打开两个 窗口,分别代表两个事务,这两个窗口的缺省的隔离级别就是REPEATABLE-READ。马克-to-win:其中窗口1我通过set sess...

2018-12-15 15:26:46

事务隔离和锁的关系

9)事务隔离和锁的关系:(视频下载) (全部书籍) 马克-to-win:事 务的四种隔离级别实际上就是数据库厂商利用锁的机制,为我们这些程序员提供的四套总的并行读数据的策略。有了这四种隔离级别,基本上我们就省了很多麻烦自 己动手去操纵锁了。当然该需要自己动手操纵锁的时候也要大胆做。见我底下是如何自己操纵锁的,比如select * from table for update,就加了行独占锁。 详...

2018-12-15 15:26:13

隔离级别高好还是低好?

8)隔离级别高好还是低好?(视频下载) (全部书籍) 马克-to-win:有 同学问,是隔得狠的好(级别高)还是隔得不狠(级别低)的好?答案:没有哪个绝对好,只有哪个更适合当时的情形。众所周知,序列化是最安全的(幻读都读不 到),但它耗时也是最长的。当你在更新时,我连看都不能看。在很多情况下,是非常没有必要的,太耗时了。其实在很多情况下,用户只需要获得一个大致的数据 就可以了。比如大家一块买票的情...

2018-12-15 15:25:57

举例说明四种事务隔离级别有何差别?

7)举例说明四种事务隔离级别有何差别?(视频下载) (全部书籍) 马克-to-win:比 如说:窗口1是READ-UNCOMMITTED级别,而窗口2是REPEATABLE-READ级别。(如何设置隔离级别,请参见“缺省隔离级别是怎么 回事?如何改变?”)这样,我窗口1读数据时,能看到其他窗口update以后还没有commited的数据。换句话说,你update以后,即使没有提 交,我都能看见。而...

2018-12-15 15:25:41

事务隔离到底有什么用?能解决什么问题?

3)问题的解决:事务隔离 (视频下载) (全部书籍) 马克-to-win:上 述问题怎么解决呢?如果我们把你买衣服和你老婆转钱算作是两个不同的事务,这就简单了。只要把这两个事务隔离开,就可以了。当数据库发现两个事务同时想更 改一条数据时,就会让后进来的事务等一下,让先进来的事务把事务操作完,再让等着的事务完成它自己后面的操作。马克-to-win:这样,你老婆的转账事务等着你买衣服的事务 先完成,帐...

2018-12-15 15:22:49

事务安全和事务隔离的关系?

4)事务安全和事务隔离的关系? (视频下载) (全部书籍) 马克-to-win:看 完前一段,你会说,原来我们前面的目标:“并发事务的数据安全”就等于事务隔离,简单!你这个意思大致对,但又不完全对。应该说:简单的“并发事务的数据 安全”问题就用“事务隔离”就够了。而复杂的问题在它上面还需加上自己的锁和一些处理才可以。(见下面我的java例子) 详情请见:http://www.mark-to-wi...

2018-12-15 15:21:24

mark_to_win

java,jquery,安卓,ios,spring ,技术副总,导师,领导项目架构,微信号: MarkToWin_China, qq: 2115860679,http://www.mark-to-win.com ...展开 收起
关注
  • 计算机软件/CTO
  • 中国 北京 西城区
奖章
  • 持之以恒