在文已经共享的情况下如何操作,也就是当多个进程同时操作同一个文件时,我们怎么保证文件数据的正确性。linux通常采用的方法是文件上锁,来避免共享资源的产生竞争状态。
文件锁包括建议性锁和强制性的锁。建议性的,顾名思义,相对温柔一些,在对文件进行锁操作时,会检测是否已经有锁存在,并且尊重已有的锁。在一般的情况下,内核和系统都不使用建议锁。强制性的锁是由内...
分类:
其他好文 时间:
2014-09-27 17:10:00
阅读次数:
177
同事很苦恼的说,下发要求部门人员填写的EXCEL表格,已经加了密码,结果最后还是被他们自行复制后,更改了列结构,“一塌糊涂”的填写交了上来。这样给他的后续处理带来了很多麻烦。我相信不少朋友很多时候都会遇到这样的问题。解决的大致思路如下:用密码对工作表进行保护,并对不同单元格进行锁定来达到允许部分单元...
分类:
其他好文 时间:
2014-09-26 20:20:18
阅读次数:
173
1.数据库锁一共分为几种?锁一般在什么情况下使用?一个是锁的范围(行锁、页面锁、表锁),另一个是锁的粒度(共享锁、持有锁等)1)指定表锁一般地,SQLServer是不大使用表排它锁的,尤其是对于比较大的表。因为维持一个大的表排它锁会严重影响系统的并发性能。但是呢,如果在没有并发操作的情况下,出现很多...
分类:
数据库 时间:
2014-09-20 11:05:27
阅读次数:
260
临界区和互斥锁的区别1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥锁可以用于对象进程间或线程间的互斥访问。2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥锁是内核对象,在核心态进行锁操作,速度慢。3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥锁可用
分类:
编程语言 时间:
2014-09-15 12:43:08
阅读次数:
241
MyISAM存储引擎只支持表锁,这也是MySQL开始几个版本中唯一支持的锁类型。随着应用对事务完整性和并发性 要求的不断提高,MySQL才开始开发基于事务的存储引擎,后来慢慢出现了支持页锁的BDB存储引擎和支持行锁的InnoDB存储引擎(实际InnoDB 是单独的一个公司,现在已经被Oracle公司...
分类:
其他好文 时间:
2014-08-28 13:06:29
阅读次数:
185
1.mysql的表引擎分为myisam & innodbmysiam 查询速度 比innodb 快,但是不支持事物好像myisam 不支持行锁2.有时间了 把两种引擎做个对比 ,画个表格3.修改表的引擎sql: alter table t_basic_city engine=innodb;
分类:
数据库 时间:
2014-08-26 18:56:26
阅读次数:
221
关于mysql的锁行还是锁表,这个问题,今天算是有了一点头绪,mysql 中 innodb是锁行的,但是项目中居然出现了死锁,锁表的情况。为什么呢?先看一下这篇文章。目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id=1 的这本书库存为 1 ,但是有...
分类:
数据库 时间:
2014-08-19 18:35:45
阅读次数:
344
MySQL的配置文件my.cnf中默认存在一行skip-external-locking的参数,即“跳过外部锁定”。根据MySQL开发网站的官方解释,External-locking用于多进程条件下为MyISAM数据表进行锁定。如果你有多台服务器使用同一个数据库目录(不建议),那么每台服务器都必须开...
分类:
数据库 时间:
2014-08-12 13:30:34
阅读次数:
219
概述 MySQL中的行所是基于索引的,行锁是锁定在索引上,所以如果某个字段没有索引,是无法上行锁的。 本文主要是实施验证的过程。 1.使用Innodb引擎建表 mysql> create table innodb( -> id int, -> name varchar(20), -> city va...
分类:
数据库 时间:
2014-08-08 15:12:06
阅读次数:
260
这里举个例子讲解,同步synchronized在什么地方加,以及同步的前提:* 1.必须要有两个以上的线程,才需要同步。* 2.必须是多个线程使用同一个锁。* 3.必须保证同步中只能有一个线程在运行,锁加在哪一块代码那么我们要思考的地方有:1.知道我们写的哪些是多线程代码 2.明确共享数据 3.明确...
分类:
编程语言 时间:
2014-08-07 00:35:07
阅读次数:
260