您好、欢迎来到现金彩票网!
当前位置:彩运网 > 封锁粒度 >

并发控制

发布时间:2019-06-16 03:46 来源:未知 编辑:admin

  所谓事务,是指用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

  两个事务T1和T2读入同一组数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失。

  不可重复读是指事物T1读取数据后,事务T2执行更新操作,使T1无法再前一次读取的结果。不重复读包括三种结果:

  (1)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值。

  (2)事务T1按一定条件从数据库中读取某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神秘消失了。

  (3)事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按照相同条件读取数据时,发现多了一些记录。

  读脏数据是指事物T1修改某一数据,并将其写会磁盘,事物T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据被恢复原值,T2读到的数据与数据库中的数据不一致,则T2读到的数据就为“脏数据”。

  并发控制的主要技术有封锁(Locking)、时间戳(Timestamp)和乐观控制法,商用的DBMS一般都采用封锁方法。

  所谓封锁就是事务T在对某个数据对象例如表、记录等操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象。

  排它锁又称写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。

  共享锁又称读锁。若事务T对数据对象A加上S锁,则事务T可以读A但是不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。

  如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。T3也请求封锁R,当T1释放了R上的锁后系统首先批准了T3的请求,T2仍然等待。然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求…T2有可能永远等待下去,这就是活锁的情形。

  一次封锁法:要求每个事务必须一次性将所有要使用的数据全部加锁,否则就不能继续执行。

  存在问题:1.一次就讲以后要用到的全部数据加锁,扩大了封锁的范围,从而降低了系统的并发度。

  2.数据库中的数据是不断变化的,原来不要求封锁的数据,在执行过程中可能会变成封锁对象,所以很难先景区地确定每个事务索要封锁的数据对象。

  顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。

  存在问题:1.数据库系统中封锁的数据对象极多,并且随数据的插入、删除等操作不断变化,要维护这样的资源的封锁顺序非常困难,成本很高。

  2.事务的封锁请求可以随着事务的执行而动态地决定,很难事先确定每一个事务要封锁那些对象,因此也很难按规定的顺序去施加封锁。

  不足:1.有可能误判死锁,事务因为其他原因使等待时间超过时限,系统会误认为发生了死锁。

  事务等待图是一个有向图G=( T, U).T为结点的集合,每个结点表示正在运行的事务,U为边的集合,每条边表示事务的等待情况。

  事务等待情况动态反应了所有事务的等待情况。并发控制子系统周期性地生成事务等待图,并进行检测。如果发现图中存在回路,则表示系统中出现了死锁。

  DBMS的并发控制子系统一旦检测到系统中存在死锁,就要设法解除。通常采用的方法是选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有的锁,使其他事务得以继续运行下去。

  DBMS对并发事务不同的调度可能会产生不同的结果,那么什么样的调度是正确的呢?显然,串行调度是正确的。执行结果等价于串行调度的调度也是正确的。这样的调度叫可串行化调度。

  定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行的执行这些事务时的结果相同,称这个调度策略是可串行化的。

  一个调度Sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序得到另一个调度Sc’,如果Sc’是串行的,称调度Sc为冲突可串行化的调度。一个调度是冲突可串行化,一定是可串行化的调度。

  冲突可串行化调度是可串行化调度的充分条件,不是必要条件。还有不满足冲突可串行化条件的可串行化调度。

  在运用封锁方法时,对数据对象加锁时需要约定一些规则,例如何时申请封锁、持所时间、何时释放封锁等。这些规则被称为封锁协议。

  两段锁的含义是,事务分为两个阶段,第一个阶段是获得封锁,也称为扩展阶段。在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。第二个阶段是释放封锁,也称为收缩阶段。在这阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。

  要注意两段锁协议和防止死锁的一次封锁法的异同之处。一次封锁法要求每个事物必须一次将所有要使用的数据全部加锁,否则就不能继续执行。因此一次封锁遵守两段锁协议;但是两段锁协议并不要求事务必须将所有要是有的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁。

  封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元,也可以是物理单元。以关系数据库为例,封锁对象可以是这样一些逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引直至整个数据库;也可以是这样一些物理单元:页、物理记录等。

  如果在一个系统中同时支持多种封锁粒度供不同的事务选择是比较理想的,这种封锁方法称为多粒度封锁。

  多粒度树:多粒度树的根节点是整个数据库,表示最大的数据粒度。叶节点表示最小的数据粒度。

  多粒度封锁协议允许多粒度树种的每个节点被独立地加锁。对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁。因此,在多粒度封锁中一个数据对可能一两种方式加锁,显示封锁和隐式封锁。

  隐式封锁是该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象加上了锁。

  一般地,对某个数据对象加锁,系统要检查该数据对象是哪个有误显示封锁与之冲突;还要检查其所有上级结点,看本事务的显示封锁是否与该数据对象上的隐式封锁冲突;还要检查所有下级结点,看上面的显示封锁是否与本事务的隐式封锁冲突。

  意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任一结点加锁时,必须先对他的上层结点加意向锁。

  如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX= S+IX。

  具有意向锁的多粒度封锁方法中任一事务T要对一个数据对象加锁,必须先对它的上层结点加意向锁。申请封锁时应该按自上而下的次序进行;释放封锁时应该按自下而上的顺序进行。

  另一种决定事务可串行化次序的方法是事先选定事务的次序。其中最常用的方法是时间戳排序机制。

  对于系统中每个事务Ti,我们把一个唯一的固定时间戳和它联系起来,此时间戳记为TS(Ti)。该时间戳是在事务Ti开始执行前由数据库系统赋予的。若事务Ti已赋予时间戳TS(Ti),此时有一种新事务Ti进入系统,则TS(Ti) TS(Tj)。实现这种机制可以采用下面这两个简单的办法:

  1.使用系统时钟的值作为时间戳:即事务的时间戳等于该事务进入系统时的时钟值。

  2.使用逻辑计数器,每赋予一个时间戳,计数器增加计数,即事务的时间戳等于该事务进入系统时的计数器值。

  R-timestamp(Q)表示成功执行read(Q)的所有事务的最大时间戳。

  保证任何有冲突的read或write操作按时间戳顺序执行。该协议运作方式如下:

  a.若TS(Ti) R-timestamp(Q),则Ti产生的Q值是先前所需要的值,且系统已假定该值不会再产生。因此,write操作被拒绝,Ti回滚。

  如果事务Ti由于发出read或write操作而被并发控制机制回滚,则系统赋予它新的时间戳并重新启动。

  该协议保证无死锁,因为不存在等待的事务。但是,当一系列冲突的段事务引起长事务反复重启时,可能导致肠事务饿死的现象。如果发现一个事务反复重启,与之冲突的事务应当暂时阻塞,以使该事务能够完成。

  该协议可能产生不可恢复的调度。然而,该协议可以进行扩展,用以下几种方法之一来保证调度可恢复:

  1.在事务末端执行所有的写操作能保证可恢复性和无级联性,这些写操作必须具有下述意义的原子性:在写操作正在执行的过程中,任何事物都不允许访问已写完的任何数据项。

  2.可恢复性和无级联性也可以通过使用一个受限的发封锁形式来保证,由此,对未提交数据项的读操作被推迟到更行该数据项的事务提交之后。

  3.可恢复性可以通过跟踪为提交写操作来单独包装,一个事物Ti读取了其他事物所写的数据,只有在其他事物都提交之后,Ti才能提交。

  有效性检查协议要求每个事物Ti在其生命周期中按两个或三个阶段执行,则取决于事务是一个只读事务还是一个更新事务。

  1.读阶段:在这一阶段中,系统执行事务Ti。个数据项值被读入并保存在事务Ti的局部变量中。所有write操作都是对局部临时变量进行的,并不对数据库进行线.有效性检查阶段:对事务Ti进行有效性测试,判断是否可以执行write操作而不违反可串行性。如果事务有效性测试失败,则系统终止这个事务。

  3.写阶段:若事务Ti已通过有效性检查,则保存Ti任何写操作结果的临时就被变量值被复制到数据库中。只读事务忽略这个阶段。

  为了进行有效性检测,我们需要知道事务Ti的各个阶段何时进行。为此,我们将三个不同的时间戳与事务Ti相关联。

  我们利用时间戳Validation(Ti)的值,通过时间戳排序技术决定可串行性排序。因此,值TS(Ti) = Validation(Ti)。并且若TS(Tj) TS(Tk),则产生的任何调度必须等价于事务Tj出现在Tk之前的某个串行调度。选择Validation(Ti)而不是Start(Ti)作为事务Ti的时间粗是因为在冲突频度很低的情况下期望有更快的响应时间。

  事务Ti的有效性测试要求任何满足TS(Tk) TS(Tj),的事务Tj必须满足下面两条件之一:

  2.Tk缩写的数据项集与Tj所读数据项集不相交,并且Tk的写阶段在Tj开始其有效性检查阶段之前完成。这个条件保证Tk与Tj的写不重叠。因为Tk的写不影响Tj的读,又因为Tj不可能影响Tk的读,从而保证了可串行性次序。

  在有效性检查机制中,由于事务乐观的执行,假定他们能够完成执行并且最终有效,因此也称为

  乐观的并发控制机制。与之相反,封锁和时间戳排序是悲观的,因为当他们检测到一个冲突时,它们强迫事务等待或回滚,即使该调度有可能是冲突可串行的。

  一、并发调度的可串行性二、两段锁协议三、封锁的粒度四、其他并发控制机制...博文来自:lxw的博客

  数据库是一个共享资源,可以供多个用户共享使用.以事务为单位管理用户程序的并发访问,提高资源共享效率。数据并发性意味着多个用户可以同时访问数据。并发访问存在冲突吗?如何控制?事务:用户定义的一个数据库操...博文来自:Alearn的博客

  一、并发控制定义在数据库中,并发控制是指在多个用户/进程/线程同时对数据库进行操作时,保证事务的一致性和隔离性,同时最大程度地并发。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的...博文来自:李木子的博客

  上篇博客通过一些实例介绍了并发导致的数据不一致一系列问题——丢失修改、读脏数据、不可重复读《并发操作与数据的不一致性》 本篇博客介绍如何进行并发控制。——封锁。 1,封锁(1)封锁就是事务T在对某数据...博文来自:葵歌小妖

  悲观并发控制一个锁定系统,可以阻止用户以影响其他用户的方式修改数据。如果用户执行的操作导致应用了某个锁,只有这个锁的所有者释放该锁,其他用户才能执行与该锁冲突的操作。这种方法之所以称为悲观并发控制,是...博文来自:不忘初心,方得始终

  乐观并发控制(optimisticconcurrencycontrol,OCC)乐观并发是一个应用于事务系统(eg,关系型数据库管理系统与软件内存事务)的并发控制方法。OCC假设大多数的事务可以在不互...博文来自:小黑王HK

  一、volatile使用volatile标识变量,将迫使所有线程均读写主内存中的对应变量,从而使得volatile变量在多线程间可见。二、同步关键字synchronized它是最常用的同步方法之一,简...博文来自:w302974215的专栏

  并发操作带来的问题丢失修改(lostupdate)不可重复读(non-repeatable)读脏数据(dirtyread)丢失修改概念:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提...博文来自:Clanner的博客

  MySQL的架构mysql的架构呢是遵循了分层的架构。上层是服务器的服务和查询执行引擎,下层是存储引擎。它的架构可以在多种不同场景中应用并发挥好的作用。它可以嵌入到应用程序中。也可以支持数据仓库、内容...博文来自:shareing

  基于提高并发性能的考虑,MySQL中大多数事务型存储引擎实现的都不是简单的行级锁,一般都同时实现了多版本并发控制(MVCC)nbs...博文来自:贰拾壹

  并发可能导致的影响:1. 丢失更新:多个事务同时更新同一行;2. 脏读:修改过程中的数据被读取;3. 不一致的分析(不可重复读):读取的事务里面,符合读取条件的行搜索条件被更改了;4. 幻读:读取的事...博文来自:xiaoye1202的博客

  首先,明确数据库中并发控制的基本单位是事务。 为了保证事务的隔离性和一致性,数据库管理系统需要对并发操作进行正确的调度。 我们先从数据库并发操作会带的来问题开始分析: 1.丢失操作(lostupda...博文来自:的博客

  前言前段时间找工作,被问到了这么个一个问题:什么是gorountine如何对gorountine进行并发控制?什么是gorountine这基础性的问题在这咱不谈,那么我们如何对gorountine进行...博文来自:老牛比

  在一般性开发中,笔者经常看到很多同学在对待java并发开发模型中只会使用一些基础的方法。比如volatile,synchronized。像Lock和atomic这类高级并发包很多人并不经常使用。我想大...博文来自:若明天不见

  无论何时,只有有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。这里讨论MySQL在两个层面的并发控制:服务器层与存储引擎层。并发控制是一个内容庞大的话题,有大量的理论文献对其进行详细的论述。...博文来自:杨森源的博客

  在多线程编程当中对于共享变量的控制非常重要,平常的程序当中由于是单线程去处理的,因此不会出现变量资源同时被多个线程同时访问修改,程序的运行是顺序的。然而多线程的环境中就会出现资源同时被多个线程获取,同...博文来自:Discovery的专栏

  在数据库访问时。如果处理并发访问的问题或者当一个操作员对一个对象作读操作时。另一个操作员对此对象作写操作的时候如何避免死锁发生/********** 加锁  ***************设tabl...博文来自:bbwolfcool的专栏

  数据库是一个共享资源,可以提供多个用户使用。这些用户程序可以一个一个地串行执行,每个时刻只有一个用户程序运行,执行对数据库的存取,其他用户程序必须等到这个用户程序结束以后方能对数据库存取。但是如果一个...博文来自:yanglilibaobao的专栏

  自旋锁自旋锁是专为防止多处理器并发而引入的一种锁,它应用于中断处理等部分。对于单处理器来说,防止中断处理中的并发可简单采用关闭中断的方式,不需要自旋锁。自旋锁最多只能被一个内核任务持有,如果一个内核任...博文来自:chinahex的博客

  对请求做并发限制是在后端处理能力有限的情况下,防止因某单一用户大量请求将服务器资源暂满导致无法响应其他用户请求的安全保护措施。常见的并发限制方法就是限制用户在某一段时间内的请求数目,如100r/s,即...博文来自:datiancai2008的专栏

  一:事务的概念事务的特性:ACID,即原子性,一致性,隔离性和持久性。事务的状态:活跃状态,部分提交状态,提交状态,失败状态和中止状态。SQL对事务的支持:SQL中的事务的开始是隐含的,结束有两种形式...博文来自:CSDN_LYY的专栏

  一、消费者并发控制消费者对同一个方法可以进行并发数的控制,dubbo也是基于过滤器的设置功能来实现并发控制的。通过配置actives的值,在可以Consumer配置,也可以在Provider配置,一般...博文来自:jjavaboy的专栏

  前段是时间涉及到数据库的隔离级别问题,在网上搜索一下,发现大部分都说的模棱两可,而且也有很多错误。于是查阅了上学时的课本《数据库系统概论》和JDBC的文档。现在把总结的结果记录下来,供大家分享.1.D...博文来自:Coding小飞侠的专栏

  一、数据库的事务:   事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是不可分割的一个序列。事务的特征:(ACID)1、原子性:事务的操作要么全做要么全不做。2、一致性:事务操作的结...博文来自:ubabyfat的博客

  并发容易出现的问题与并发控制在多进程连接的数据库,并发操作是一个很平常的现象,加上Oracle特有的锁机制(不阻塞读),所以理解与控制并发是一个非常重要的事情。下面用一个简单的例子说明并发处理中的一个...博文来自:宁静的森林(liuyeb)

  synchronized关键字主要解决多线程共享数据同步问题。ThreadLocal使用场合主要解决多线程中数据因并发产生不一致问题。ThreadLocal和Synchonized都用于解决多线程并发...博文来自:小蚂蚁扛大象

  一、读锁(共享锁)、写锁(排它锁)二、锁粒度:表锁(tablelock)、行级锁(rowlock)三、乐观锁和悲观锁悲观锁  排它锁,当事务在操作数据时把这部分数据进行锁定,直到操作完毕后再解锁,其他...博文来自:Think In JAVA—Max

  最近在看Mysql的并发控制,事务处理等知识,做些整理。并发控制目的是当多个连接对数据库进行修改时保证数据的一致性。现在mysql的InnoDB在update,delete时使用行级锁,对于selec...博文来自:wulantian的专栏

  文件系统和数据库的对比本文主要从单机系统的角度出发,对比通用的文件系统和数据库技术。想到哪里就写到哪里,遗漏的地方应该很多。共同点:同属于系统软件或底层软件都是用来存储和访问数据的都有着悠久的研究开发...博文来自:The Magic Thing Happens

  什么是资源限制资源限制是指在进行并发编程时,程序的执行速度受限于计算机硬件资源或软件资源。例如,服务器的带宽只有2Mb/s,某个资源的下载速度是1Mb/s每秒,系统启动10个线程下载资源,下载速度不会...博文来自:孤芳不自赏

  一个servlet,现在限制并发处理100个;超过100的请求就直接返回说已经满员,直到有处理完的; 应该如何限制? 我的想法: 模拟了下,这样可以不?这里限制并发4次; class A { publ论坛

  IE和Firefox对同一域名进行请求的并发连接数限制文章分类:Web前端从Yahoo!关于网站优化的经典14条建议,在V2版中,已经更新到35条了,参见网址:博文来自:清风的专栏

  开始之前,我们先看下各个浏览器公布的资源并发数限制个数,如下图浏览器的并发请求数目限制是针对同一域名的。意即,同一时间针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞,这就是很多网站专门...博文来自:yishouwangnian的博客

  【golang】限制同一时间的并发量go的并发量是很厉害的,goroutine创建的代价极小,其中一个重要的原因是因为go采用了分段栈技术,每一个goroutine只占极小的空间。与此同时,gorou...博文来自:小辣抓

  redis命令解释说道Redis的分布式锁都是通过setNx命令结合getset来实现的,在讲之前我们先了解下setNx和getset的意思,在redis官网是这样解释的注:redis的命令都是原子操...博文来自:路漫漫,水迢迢

  并发编程一直是Java基础中的高地,但很多只要有两三年Java基础的工程师,会在简历中很明确的标明“熟悉多线程编程、有高并发编程经验”,来凸显自己编程能力有多厉害,但实际上可能只是看了《JavaCon...博文

  1,什么是并发操作?数据库的一个重要特征是:支持数据共享,也就是说允许多个用户程序并行地存取数据库中的数据;那么,多用户或多事物可能同时对同一数据进行操作,这成为并发操作。2,并发操作可能带来的影响?...博文

  (1)丢失更新       当两个或多个事物读入同一数据并修改,会发生丢失更新问题,即后一个事物更新的结果被前一事务所做更新覆盖即当事务A和B同事进行时,事务A对数据已经改变但并未提交时B又对同一数据...博文

  数据库并发操作带来的数据不一致性主要有,丢失修改,不可重复读(里面包括幻读),读脏数据其中不可重复读有三种情况,后两种称为幻读,幻读和不可重复读的区别是幻读是对数据的删除增添,不可重复读是数据的修改解...博文

  本篇文章是根据我的上篇博客,给出的改进版,由于时间有限,仅做了一个简单的优化。相关文章:将excel导入数据库2018年4月1日,新增下载地址链接:点击打开源码下载地址十分抱歉,这个链接地址没有在这篇...博文

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文

  前言:前段时间做项目用到了图片裁剪,调用系统裁剪图片,结果在我的小米3上一直有问题,裁剪界面打不开,在其他设备上没问题,于是研究其他软件是怎么做的,淘宝的裁剪图片是自己做的,当然没问题,京东的是调用的...博文

  Intellij IDEA 如何通过数据库表生成带注解的实体类图文详细教程

  Intellij IDEA 如何通过数据库表生成带注解的实体类图文详细教程 Intellij IDEA 如何通过数据库表生成带注解的实体类 Contents 第一步:新建...博文

  灰度图像的自动阈值分割(Otsu 法)机器视觉领域许多算法都要求先对图像进行二值化。这种二值化操作阈值的选取非常重要。阈值选取的不合适,可能得到的结果就毫无用处。今天就来讲讲一种自动计算阈值的方法。这...博文

  用以前以前写过的自定义课表软件 ,Android 自定义View课程表表格 原生View截图合成分享的图片 看到的是图片只显示到11节处,下面的没有...博文

  本matplotlib安装过程在一定程度上参考了 因为学习机器学习的需要,又准备参考《机器学...博文

  1.为什么是Fiddler? 抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下: a.Firebug虽然可以抓包...博文

  目录 前言Jackson使用工具类Jackson配置属性Jackson解析JSON数据Jackson序列化Java对象 前言 Json数据格式这两年发展的很快,其声称相对XML格式有很对好处...博文

  servlet页面代码:@每次请求时产生一个token(一般为时间戳),存于session中并随之用hidden提交,在servlet中判断接收到的token和session中的是否一致来判断是否重复...博文

  首先,确定你已经有了CSR证书请求、开发证书和App ID。如果你不是第一次开发iOS应用程序,那么你可能已经有了这些东西。那么你可以继续以下的步骤。一、配置App ID登录你的provisionin...博文

  目前还没有写出这个demo,不过可以参考下面这两个链接,一个是显示日期的,还有一个是合并单元格: 合并单元格: 博文

  以回归为例吧,回归在某些场合可能更精准 支持连续变量和类别变量,类别变量就是某个属性有三个值,a,b,c,需要用Feature Transformers中的vectorindexer处理 上来是一堆...博文

  扫二维码关注,获取更多技术分享 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文

  简述关于gif的使用在实际项目中我用的并不多,因为我感觉瑕疵挺多的,很多时候锯齿比较严重,当然与图存在很大的关系。关于生成gif的方法可以提供一个网站preloaders,基本是可以满足需求的。简述 ...博文

  今天为了休息下,换换脑子,于是就找到了我之前收藏的一篇python的文章,是关于ddos攻击的一个脚本,正好今天有空,就实践下了。 附上源码pyDdos.py: #!/usr/bin/env ...博文

http://funnyland.net/fengsuolidu/427.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有